#include "config.hh" json parse_file(const string &filename) { json j_JSON; ifstream f_JSON; string f_line; stringstream s_JSON; f_JSON.open(filename); if (f_JSON.is_open()) { while ( getline (f_JSON,f_line) ) { s_JSON << f_line; } f_JSON.close(); } else { char * buf; asprintf(&buf, "Could not read from file : %s", filename.c_str()); perror( buf ); delete buf; exit(1); } try { j_JSON = json::parse(s_JSON); } catch(const invalid_argument &e) { printf( "%s in %s.\n", e.what(), filename.c_str() ); exit(EXIT_FAILURE); } f_JSON.close(); return j_JSON; } scanner_config hathor_config(json &j_JSON) { scanner_config opts; json mysql, scanner, php; mysql = j_JSON["mysql"]; scanner = j_JSON["scanner"]; php = j_JSON["php"]; opts.mysql.host = mysql["host"].get(); opts.mysql.db = mysql["db"].get(); opts.mysql.user = mysql["user"].get(); opts.mysql.pass = mysql["pass"].is_null() ? "null" : mysql["pass"].get(); opts.scanner.path = scanner["path"].get(); opts.php.root = php["root"].get(); opts.php.user = php["user"].get(); opts.php.email = php["email"].get(); opts.php.pass = php["pass"].is_null() ? "null" : php["pass"].get(); if( mysql["port"].is_number() ) { opts.mysql.port = mysql["port"]; } else { try { string port = mysql["port"]; opts.mysql.port = stoi( port, nullptr, 0 ); } catch(exception& e) { opts.mysql.port = 3306; } } if( scanner["throttle"].is_number() ) { opts.scanner.throttle = scanner["throttle"]; } else { try { string throttle = scanner["throttle"]; opts.scanner.throttle = stoi( throttle,nullptr,0 ); } catch(exception& e) { opts.scanner.throttle = 0; } // try } // else if( strcmp(opts.mysql.host.c_str(), "null") == 0 ) { opts.mysql.host = "localhost"; } if( strcmp(opts.mysql.db.c_str(), "null") == 0 ) { opts.mysql.db = "hathor"; } try { if( strcmp(opts.mysql.user.c_str(), "null") == 0 ) { throw domain_error("Required values are missing from config.json : 'mysql:{user}'"); } //else if( strcmp(opts.mysql.pass.c_str(), "null") == 0 ) { // throw domain_error("Required values are missing from config.json : 'mysql:{pass}'"); //} else if( strcmp(opts.scanner.path.c_str(), "null") == 0 ) { throw domain_error("Required values are missing from config.json : 'scanner:{path}'"); } else if( strcmp(opts.php.user.c_str(), "null") == 0 ) { throw domain_error("Required values are missing from config.json : 'php:{user}'"); } //else if( strcmp(opts.php.pass.c_str(), "null") == 0 ) { // throw domain_error("Required values are missing from config.json : 'php:{pass}'"); // } else if( strcmp(opts.php.email.c_str(), "null") == 0 ) { throw domain_error("Required values are missing from config.json : 'php:{email}'"); } else if( strcmp(opts.php.root.c_str(), "null") == 0 ) { throw domain_error("Required values are missing from config.json : 'php:{root}'"); } //if } catch(exception &e) { cout << e.what() << endl; } //try return opts; } // hathor_config