static void start_mongoose(int argc, char *argv[]) { char *options[MAX_OPTIONS]; int i; if ((server = mg_create_server(NULL)) == NULL) { die("%s", "Failed to start Mongoose."); } // Edit passwords file if -A option is specified if (argc > 1 && !strcmp(argv[1], "-A")) { if (argc != 6) { show_usage_and_exit(); } exit(modify_passwords_file(argv[2], argv[3], argv[4], argv[5]) ? EXIT_SUCCESS : EXIT_FAILURE); } // Show usage if -h or --help options are specified if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) { show_usage_and_exit(); } options[0] = NULL; set_option(options, "document_root", "."); set_option(options, "listening_port", "8080"); // Update config based on command line arguments process_command_line_arguments(argv, options); // Make sure we have absolute paths for files and directories // https://github.com/valenok/mongoose/issues/181 set_absolute_path(options, "document_root", argv[0]); set_absolute_path(options, "put_delete_auth_file", argv[0]); set_absolute_path(options, "cgi_interpreter", argv[0]); set_absolute_path(options, "access_log_file", argv[0]); set_absolute_path(options, "error_log_file", argv[0]); set_absolute_path(options, "global_auth_file", argv[0]); set_absolute_path(options, "ssl_certificate", argv[0]); // Make extra verification for certain options verify_existence(options, "document_root", 1); verify_existence(options, "cgi_interpreter", 0); verify_existence(options, "ssl_certificate", 0); for (i = 0; options[i] != NULL; i += 2) { const char *msg = mg_set_option(server, options[i], options[i + 1]); if (msg != NULL) die("Failed to set option [%s]: %s", options[i], msg); free(options[i]); free(options[i + 1]); } // Setup signal handler: quit on Ctrl-C signal(SIGTERM, signal_handler); signal(SIGINT, signal_handler); #ifndef _WIN32 signal(SIGCHLD, signal_handler); #endif }
static void start_mongoose(int argc, char *argv[]) { s_argv = argv; if ((server = mg_create_server(NULL, EV_HANDLER)) == NULL) { die("%s", "Failed to start Mongoose."); } #if !defined(MONGOOSE_NO_AUTH) && !defined(MONGOOSE_NO_FILESYSTEM) // Edit passwords file if -A option is specified if (argc > 1 && !strcmp(argv[1], "-A")) { if (argc != 6) { show_usage_and_exit(); } exit(modify_passwords_file(argv[2], argv[3], argv[4], argv[5]) ? EXIT_SUCCESS : EXIT_FAILURE); } #endif // Show usage if -h or --help options are specified if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) { show_usage_and_exit(); } set_options(argv); }
static void start_mongoose(int argc, char *argv[]) { char *options[MAX_OPTIONS]; int i; if ((server = mg_create_server(NULL, NULL)) == NULL) { die("%s", "Failed to start Mongoose."); } #ifndef MONGOOSE_NO_AUTH // Edit passwords file if -A option is specified if (argc > 1 && !strcmp(argv[1], "-A")) { if (argc != 6) { show_usage_and_exit(); } exit(modify_passwords_file(argv[2], argv[3], argv[4], argv[5]) ? EXIT_SUCCESS : EXIT_FAILURE); } #endif // Show usage if -h or --help options are specified if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) { show_usage_and_exit(); } options[0] = NULL; set_option(options, "document_root", s_default_document_root); set_option(options, "listening_port", s_default_listening_port); // Update config based on command line arguments process_command_line_arguments(argv, options); // Make sure we have absolute paths for files and directories // https://github.com/valenok/mongoose/issues/181 set_absolute_path(options, "document_root", argv[0]); set_absolute_path(options, "dav_auth_file", argv[0]); set_absolute_path(options, "cgi_interpreter", argv[0]); set_absolute_path(options, "access_log_file", argv[0]); set_absolute_path(options, "global_auth_file", argv[0]); set_absolute_path(options, "ssl_certificate", argv[0]); if (!path_exists(get_option(options, "document_root"), 1)) { set_option(options, "document_root", s_default_document_root); set_absolute_path(options, "document_root", argv[0]); notify("Setting document_root to [%s]", mg_get_option(server, "document_root")); } // Make extra verification for certain options verify_existence(options, "document_root", 1); verify_existence(options, "cgi_interpreter", 0); verify_existence(options, "ssl_certificate", 0); for (i = 0; options[i] != NULL; i += 2) { const char *msg = mg_set_option(server, options[i], options[i + 1]); if (msg != NULL) { notify("Failed to set option [%s] to [%s]: %s", options[i], options[i + 1], msg); if (!strcmp(options[i], "listening_port")) { mg_set_option(server, "listening_port", s_default_listening_port); notify("Setting %s to [%s]", options[i], s_default_listening_port); } } free(options[i]); free(options[i + 1]); } // Change current working directory to document root. This way, // scripts can use relative paths. chdir(mg_get_option(server, "document_root")); // Add an ability to pass listening socket to mongoose { const char *env = getenv("MONGOOSE_LISTENING_SOCKET"); if (env != NULL && atoi(env) > 0 ) { mg_set_listening_socket(server, atoi(env)); } } // Setup signal handler: quit on Ctrl-C signal(SIGTERM, signal_handler); signal(SIGINT, signal_handler); #ifndef _WIN32 signal(SIGCHLD, signal_handler); #endif }