diff --git a/main.cpp b/main.cpp index 8328eef..7677452 100644 --- a/main.cpp +++ b/main.cpp @@ -36,74 +36,76 @@ void SaveSig(int s) int main(int argc, char **argv) { - if (argc != 3) { - std::cerr << "Usage: sudo ./bank \n"; - return 0; - } - if (geteuid() != 0) - { - std::cerr << "ERROR: CCash MUST be ran as root\n"; - return 0; - } - std::cout - << "\nAPI Version : " << API_VERSION - << "\n\nAVX : " << (__builtin_cpu_supports("avx") ? "enabled" : "disabled") - << "\nAVX 2 : " << (__builtin_cpu_supports("avx2") ? "enabled" : "disabled") - << "\nSSE 2 : " << (__builtin_cpu_supports("sse2") ? "enabled" : "disabled") - << "\nSSE 3 : " << (__builtin_cpu_supports("sse3") ? "enabled" : "disabled") - << "\nSSE 4.1 : " << (__builtin_cpu_supports("sse4.1") ? "enabled" : "disabled") - << "\nSSE 4.2 : " << (__builtin_cpu_supports("sse4.2") ? "enabled" : "disabled") + + if (argc != 3) + { + std::cerr << "Usage: sudo ./bank \n"; + return 0; + } + if (geteuid() != 0) + { + std::cerr << "ERROR: CCash MUST be ran as root\n"; + return 0; + } + std::cout + << "\nAPI Version : " << API_VERSION + << "\n\nAVX : " << (__builtin_cpu_supports("avx") ? "enabled" : "disabled") + << "\nAVX 2 : " << (__builtin_cpu_supports("avx2") ? "enabled" : "disabled") + << "\nSSE 2 : " << (__builtin_cpu_supports("sse2") ? "enabled" : "disabled") + << "\nSSE 3 : " << (__builtin_cpu_supports("sse3") ? "enabled" : "disabled") + << "\nSSE 4.1 : " << (__builtin_cpu_supports("sse4.1") ? "enabled" : "disabled") + << "\nSSE 4.2 : " << (__builtin_cpu_supports("sse4.2") ? "enabled" : "disabled") #if MULTI_THREADED - << "\n\nThreads : " << get_nprocs() + 1 - << "\nMulti threading : enabled"; + << "\n\nThreads : " << get_nprocs() + 1 + << "\nMulti threading : enabled"; #else - << "\n\nThreads : " << 2 - << "\nMulti threading : disabled"; + << "\n\nThreads : " << 2 + << "\nMulti threading : disabled"; #endif - //Loading users from users.json - bank.Load(); + //Loading users from users.json + bank.Load(); + std::cout << "\n\nLoaded " << bank.NumOfUsers() << " Users" + << "\nLoaded " << bank.NumOfLogs() << " Logs" + << "\nLoaded " << bank.SumBal() << " CSH" + << std::endl; //flushing before EventLoop - std::cout << "\n\nLoaded " << bank.NumOfUsers() << " Users" - << "\nLoaded " << bank.NumOfLogs() << " Logs" - << std::endl; //flushing before EventLoop + //Sig handling + struct sigaction sigIntHandler; - //Sig handling - struct sigaction sigIntHandler; + sigIntHandler.sa_handler = SaveSig; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; - sigIntHandler.sa_handler = SaveSig; - sigemptyset(&sigIntHandler.sa_mask); - sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); - sigaction(SIGINT, &sigIntHandler, NULL); + //Admin account + bank.admin_account = argv[1]; - //Admin account - bank.admin_account = argv[1]; - - //Auto Saving - const unsigned long saving_freq = std::stoul(std::string(argv[2])); - if (saving_freq) //if saving frequency is 0 then auto saving is turned off - { - std::thread([saving_freq]() { - while (1) - { - std::this_thread::sleep_for(std::chrono::minutes(saving_freq)); - std::cout << "Saving " << std::time(0) << "...\n"; - if (bank.GetChangeState()) + //Auto Saving + const unsigned long saving_freq = std::stoul(std::string(argv[2])); + if (saving_freq) //if saving frequency is 0 then auto saving is turned off + { + std::thread([saving_freq]() { + while (1) { - std::cout << " to disk...\n"; - bank.Save(); + std::this_thread::sleep_for(std::chrono::minutes(saving_freq)); + std::cout << "Saving " << std::time(0) << "...\n"; + if (bank.GetChangeState()) + { + std::cout << " to disk...\n"; + bank.Save(); + } + else + { + std::cout << " no changes...\n"; + } } - else - { - std::cout << " no changes...\n"; - } - } - }) - .detach(); + }) + .detach(); + } } - auto API = std::make_shared(bank); auto user_filter_default = std::make_shared>(bank); auto user_filter_sparse = std::make_shared>(bank); @@ -111,10 +113,6 @@ int main(int argc, char **argv) auto json_resp_and_req_filter = std::make_shared>(); auto json_resp_filter = std::make_shared>(); - app().registerPostHandlingAdvice( - [](const drogon::HttpRequestPtr &req, const drogon::HttpResponsePtr &resp) { - resp->addHeader("Access-Control-Allow-Origin", "*"); //CORS - }); app() .loadConfigFile(config_location) .registerFilter(user_filter_default)