diff options
Diffstat (limited to 'src/login')
-rw-r--r-- | src/login/login.c | 68 | ||||
-rw-r--r-- | src/login/login.h | 5 |
2 files changed, 49 insertions, 24 deletions
diff --git a/src/login/login.c b/src/login/login.c index ec5b2bb7c..036456a85 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -1899,6 +1899,9 @@ int do_final(void) { HPM_login_do_final(); + aFree(login->LOGIN_CONF_NAME); + aFree(login->LAN_CONF_NAME); + HPM->event(HPET_POST_FINAL); ShowStatus("Finished.\n"); @@ -1939,6 +1942,39 @@ void login_hp_symbols(void) { HPM->share(login,"login"); } +/** + * --login-config handler + * + * Overrides the default login configuration file. + * @see cmdline->exec + */ +static CMDLINEARG(loginconfig) +{ + aFree(login->LOGIN_CONF_NAME); + login->LOGIN_CONF_NAME = aStrdup(params); + return true; +} +/** + * --lan-config handler + * + * Overrides the default subnet configuration file. + * @see cmdline->exec + */ +static CMDLINEARG(lanconfig) +{ + aFree(login->LAN_CONF_NAME); + login->LAN_CONF_NAME = aStrdup(params); + return true; +} +/** + * Defines the local command line arguments + */ +void cmdline_args_init_local(void) +{ + CMDLINEARG_DEF2(login-config, loginconfig, "Alternative login-server configuration.", CMDLINE_OPT_PARAM); + CMDLINEARG_DEF2(lan-config, lanconfig, "Alternative subnet configuration.", CMDLINE_OPT_PARAM); +} + //------------------------------ // Login server initialization //------------------------------ @@ -1959,31 +1995,18 @@ int do_init(int argc, char** argv) // read login-server configuration login_set_defaults(); + login->LOGIN_CONF_NAME = aStrdup("conf/login-server.conf"); + login->LAN_CONF_NAME = aStrdup("conf/subnet.conf"); + HPM_login_do_init(); HPM->symbol_defaults_sub = login_hp_symbols; - HPM->config_read(NULL, 0); -#if 0 - /* TODO: Move to common code */ - for( i = 1; i < argc; i++ ) { - const char* arg = argv[i]; - if( strcmp(arg, "--load-plugin") == 0 ) { - if( map->arg_next_value(arg, i, argc, true) ) { - RECREATE(load_extras, char *, ++load_extras_count); - load_extras[load_extras_count-1] = argv[++i]; - } - } - } - HPM->config_read((const char * const *)load_extras, load_extras_count); - if (load_extras) { - aFree(load_extras); - load_extras = NULL; - load_extras_count = 0; - } -#endif + cmdline->exec(argc, argv, CMDLINE_OPT_PREINIT); + HPM->config_read(); HPM->event(HPET_PRE_INIT); - login_config_read((argc > 1) ? argv[1] : LOGIN_CONF_NAME); - login->lan_config_read((argc > 2) ? argv[2] : LAN_CONF_NAME); + cmdline->exec(argc, argv, CMDLINE_OPT_NORMAL); + login_config_read(login->LOGIN_CONF_NAME); + login->lan_config_read(login->LAN_CONF_NAME); for( i = 0; i < ARRAYLENGTH(server); ++i ) chrif_server_init(i); @@ -2105,4 +2128,7 @@ void login_defaults(void) { login->kick = login_kick; login->login_error = login_login_error; login->send_coding_key = login_send_coding_key; + + login->LOGIN_CONF_NAME = NULL; + login->LAN_CONF_NAME = NULL; } diff --git a/src/login/login.h b/src/login/login.h index 8a377927b..7254b5db2 100644 --- a/src/login/login.h +++ b/src/login/login.h @@ -18,9 +18,6 @@ enum E_LOGINSERVER_ST LOGINSERVER_ST_LAST }; -#define LOGIN_CONF_NAME "conf/login-server.conf" -#define LAN_CONF_NAME "conf/subnet.conf" - // supported encryption types: 1- passwordencrypt, 2- passwordencrypt2, 3- both #define PASSWORDENC 3 #define PASSWD_LEN (32+1) // 23+1 for plaintext, 32+1 for md5-ed passwords @@ -200,6 +197,8 @@ struct login_interface { void (*char_server_connection_status) (int fd, struct login_session_data* sd, uint8 status); void (*parse_request_connection) (int fd, struct login_session_data* sd, const char *ip); int (*parse_login) (int fd); + char *LOGIN_CONF_NAME; + char *LAN_CONF_NAME; }; struct login_interface *login; |