#ifndef SERVERCONFIG_HPP # define SERVERCONFIG_HPP # include "utils.hpp" # include "LocationConfig.hpp" # include # include # include // string # include // cout, cin // a class that's all public? just so we have options? class ServerConfig { public: // do i need some canonic stuff? // there can be several std::vector server_name; // we could shove default in here if we wanted to... // there can only be 1 per server... std::string host; std::string port; // port needs to be something else... not quite an int // should a Server be able to handle several? // there can only be one. std::string root; unsigned int client_body_limit; // set to default max if none set // might be the only one we let slide if bad input... It remains false... bool autoindex; // we will check the index in the post processing with access() ? std::vector index; std::map error_pages; // fuck it, you can only call allow_methods once in Server unsigned int allow_methods; std::vector locations; // not convinced we need these... // struct timeval send_timeout; // struct timeval recv_timeout; // fuck maybe i do need return here... // wait if i can call several times, shouldn't it be a map? // i think actually there can only be 1 and it can only be in a location? // int redirect_status; // std::string redirect_uri; void print_all() { std::cout << "PRINTING A FULL SERVER CONFIG\n\n"; for (size_t i = 0; i < server_name.size(); i++) std::cout << server_name[i] << " "; std::cout << "root: " << root << '\n'; std::cout << "index: "; for (size_t i = 0; i < index.size(); i++) std::cout << index[i] << " "; std::cout << "\nerror_pages: "; for(std::map::iterator it = error_pages.begin(); \ it != error_pages.end(); it++) std::cout << it->first << "--" << it->second << " "; // for (size_t i = 0; i < error_pages.size(); i++) // std::cout << error_pages->first << "--" << error_pages->second << " "; std::cout << "\nallow_methods: "; std::cout << ::http_methods_to_str(allow_methods) << "\n"; // std::cout << "skiping Locations for now...\n"; for (std::vector::iterator it = locations.begin(); it < locations.end(); it++) it->print_all(); std::cout << "autoindex: " << autoindex << '\n'; std::cout << "client_body_limit: " << client_body_limit << '\n'; // std::cout << "redirect_status: " << redirect_status << '\n'; // std::cout << "redirect_uri: " << redirect_uri << '\n'; std::cout << "host: " << host << '\n'; std::cout << "port: " << port << '\n'; std::cout << "\n----------\n"; } }; #endif