/rehash configs separately
This commit is contained in:
parent
6c31420ffd
commit
4ea106be50
4 changed files with 192 additions and 60 deletions
src
|
@ -3922,7 +3922,61 @@ namespace pvpgn
|
|||
|
||||
static int _handle_rehash_command(t_connection * c, char const *text)
|
||||
{
|
||||
server_restart_wraper();
|
||||
int mode = restart_mode_all; // all by default
|
||||
|
||||
text = skip_command(text);
|
||||
|
||||
if (text[0] == '\0')
|
||||
{
|
||||
message_send_text(c, message_type_info, c, "Usage:");
|
||||
message_send_text(c, message_type_info, c, "/rehash <mode>");
|
||||
message_send_text(c, message_type_info, c, " <mode> = all | channels | realms | autoupdate | news | versioncheck | ipbans | helpfile | banners | tracker | commandgroups | aliasfile | transfile | tournament | icons | anongame | topiclist | lua");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcasecmp(text, "all"))
|
||||
mode = restart_mode_channels;
|
||||
else if (!strcasecmp(text, "channels"))
|
||||
mode = restart_mode_channels;
|
||||
else if (!strcasecmp(text, "realms"))
|
||||
mode = restart_mode_realms;
|
||||
else if (!strcasecmp(text, "autoupdate"))
|
||||
mode = restart_mode_autoupdate;
|
||||
else if (!strcasecmp(text, "news"))
|
||||
mode = restart_mode_news;
|
||||
else if (!strcasecmp(text, "versioncheck"))
|
||||
mode = restart_mode_versioncheck;
|
||||
else if (!strcasecmp(text, "ipbans"))
|
||||
mode = restart_mode_ipbans;
|
||||
else if (!strcasecmp(text, "helpfile"))
|
||||
mode = restart_mode_helpfile;
|
||||
else if (!strcasecmp(text, "banners"))
|
||||
mode = restart_mode_banners;
|
||||
else if (!strcasecmp(text, "tracker"))
|
||||
mode = restart_mode_tracker;
|
||||
else if (!strcasecmp(text, "commandgroups"))
|
||||
mode = restart_mode_commandgroups;
|
||||
else if (!strcasecmp(text, "aliasfile"))
|
||||
mode = restart_mode_aliasfile;
|
||||
else if (!strcasecmp(text, "transfile"))
|
||||
mode = restart_mode_transfile;
|
||||
else if (!strcasecmp(text, "tournament"))
|
||||
mode = restart_mode_tournament;
|
||||
else if (!strcasecmp(text, "icons"))
|
||||
mode = restart_mode_icons;
|
||||
else if (!strcasecmp(text, "anongame"))
|
||||
mode = restart_mode_anongame;
|
||||
else if (!strcasecmp(text, "topiclist"))
|
||||
mode = restart_mode_topiclist;
|
||||
else if (!strcasecmp(text, "lua"))
|
||||
mode = restart_mode_lua;
|
||||
else
|
||||
{
|
||||
message_send_text(c, message_type_info, c, "Invalid mode.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
server_restart_wraper(mode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -139,8 +139,8 @@ namespace pvpgn
|
|||
sigexittime = std::time(NULL) + (std::time_t)prefs_get_shutdown_delay();
|
||||
}
|
||||
|
||||
extern void server_restart_wraper(void){
|
||||
do_restart = 1;
|
||||
extern void server_restart_wraper(int mode){
|
||||
do_restart = mode;
|
||||
}
|
||||
|
||||
extern void server_save_wraper(void){
|
||||
|
@ -1352,81 +1352,136 @@ namespace pvpgn
|
|||
|
||||
if (do_restart)
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "reading configuration files");
|
||||
if (cmdline_get_preffile())
|
||||
if (do_restart == restart_mode_all)
|
||||
{
|
||||
if (prefs_load(cmdline_get_preffile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not parse configuration file");
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "reading configuration files");
|
||||
if (cmdline_get_preffile())
|
||||
{
|
||||
if (prefs_load(cmdline_get_preffile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not parse configuration file");
|
||||
}
|
||||
else
|
||||
if (prefs_load(BNETD_DEFAULT_CONF_FILE) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "using default configuration");
|
||||
|
||||
if (eventlog_open(prefs_get_logfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not use the file \"%s\" for the eventlog", prefs_get_logfile());
|
||||
|
||||
/* FIXME: load new network settings */
|
||||
|
||||
/* reload server name */
|
||||
server_set_hostname();
|
||||
|
||||
attrlayer_load_default();
|
||||
}
|
||||
else
|
||||
if (prefs_load(BNETD_DEFAULT_CONF_FILE) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "using default configuration");
|
||||
|
||||
if (eventlog_open(prefs_get_logfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not use the file \"%s\" for the eventlog", prefs_get_logfile());
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_channels)
|
||||
{
|
||||
channellist_reload();
|
||||
}
|
||||
|
||||
/* FIXME: load new network settings */
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_realms)
|
||||
{
|
||||
if (realmlist_reload(prefs_get_realmfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not reload realm list");
|
||||
}
|
||||
|
||||
/* reload server name */
|
||||
server_set_hostname();
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_autoupdate)
|
||||
{
|
||||
autoupdate_unload();
|
||||
if (autoupdate_load(prefs_get_mpqfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load autoupdate list");
|
||||
}
|
||||
|
||||
attrlayer_load_default();
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_news)
|
||||
{
|
||||
news_unload();
|
||||
if (news_load(prefs_get_newsfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load news list");
|
||||
}
|
||||
|
||||
channellist_reload();
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_versioncheck)
|
||||
{
|
||||
versioncheck_unload();
|
||||
if (versioncheck_load(prefs_get_versioncheck_file()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load versioncheck list");
|
||||
}
|
||||
|
||||
if (realmlist_reload(prefs_get_realmfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not reload realm list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_ipbans)
|
||||
{
|
||||
if (ipbanlist_destroy() < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not unload old IP ban list");
|
||||
ipbanlist_create();
|
||||
if (ipbanlist_load(prefs_get_ipbanfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load new IP ban list");
|
||||
}
|
||||
|
||||
autoupdate_unload();
|
||||
if (autoupdate_load(prefs_get_mpqfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load autoupdate list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_helpfile)
|
||||
{
|
||||
helpfile_unload();
|
||||
if (helpfile_init(prefs_get_helpfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load the helpfile");
|
||||
}
|
||||
|
||||
news_unload();
|
||||
if (news_load(prefs_get_newsfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load news list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_banners)
|
||||
{
|
||||
adbannerlist.reset(new AdBannerComponent(prefs_get_adfile()));
|
||||
}
|
||||
|
||||
versioncheck_unload();
|
||||
if (versioncheck_load(prefs_get_versioncheck_file()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load versioncheck list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_tracker)
|
||||
{
|
||||
if (prefs_get_track())
|
||||
tracker_set_servers(prefs_get_trackserv_addrs());
|
||||
}
|
||||
|
||||
if (ipbanlist_destroy() < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not unload old IP ban list");
|
||||
ipbanlist_create();
|
||||
if (ipbanlist_load(prefs_get_ipbanfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load new IP ban list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_commandgroups)
|
||||
{
|
||||
if (command_groups_reload(prefs_get_command_groups_file()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load new command_groups list");
|
||||
}
|
||||
|
||||
helpfile_unload();
|
||||
if (helpfile_init(prefs_get_helpfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load the helpfile");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_aliasfile)
|
||||
{
|
||||
aliasfile_unload();
|
||||
aliasfile_load(prefs_get_aliasfile());
|
||||
}
|
||||
|
||||
adbannerlist.reset(new AdBannerComponent(prefs_get_adfile()));
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_transfile)
|
||||
{
|
||||
if (trans_reload(prefs_get_transfile(), TRANS_BNETD) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not reload trans list");
|
||||
}
|
||||
|
||||
if (prefs_get_track())
|
||||
tracker_set_servers(prefs_get_trackserv_addrs());
|
||||
if (command_groups_reload(prefs_get_command_groups_file()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load new command_groups list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_tournament)
|
||||
{
|
||||
tournament_reload(prefs_get_tournament_file());
|
||||
}
|
||||
|
||||
aliasfile_unload();
|
||||
aliasfile_load(prefs_get_aliasfile());
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_icons)
|
||||
{
|
||||
customicons_unload();
|
||||
customicons_load(prefs_get_customicons_file());
|
||||
}
|
||||
|
||||
if (trans_reload(prefs_get_transfile(), TRANS_BNETD) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not reload trans list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_anongame)
|
||||
{
|
||||
anongame_infos_unload();
|
||||
anongame_infos_load(prefs_get_anongame_infos_file());
|
||||
}
|
||||
|
||||
tournament_reload(prefs_get_tournament_file());
|
||||
|
||||
customicons_unload();
|
||||
customicons_load(prefs_get_customicons_file());
|
||||
|
||||
anongame_infos_unload();
|
||||
anongame_infos_load(prefs_get_anongame_infos_file());
|
||||
|
||||
topiclist_unload();
|
||||
if (topiclist_load(prefs_get_topicfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load new topic list");
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_topiclist)
|
||||
{
|
||||
topiclist_unload();
|
||||
if (topiclist_load(prefs_get_topicfile()) < 0)
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "could not load new topic list");
|
||||
}
|
||||
|
||||
#ifdef WITH_LUA
|
||||
lua_unload();
|
||||
lua_load(prefs_get_scriptdir());
|
||||
if (do_restart == restart_mode_all || do_restart == restart_mode_lua)
|
||||
{
|
||||
lua_unload();
|
||||
lua_load(prefs_get_scriptdir());
|
||||
}
|
||||
#endif
|
||||
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "done reconfiguring");
|
||||
|
|
|
@ -71,6 +71,29 @@ namespace pvpgn
|
|||
|
||||
namespace bnetd
|
||||
{
|
||||
enum restart_mode
|
||||
{
|
||||
restart_mode_none, // always first (0)
|
||||
|
||||
restart_mode_all,
|
||||
restart_mode_channels,
|
||||
restart_mode_realms,
|
||||
restart_mode_autoupdate,
|
||||
restart_mode_news,
|
||||
restart_mode_versioncheck,
|
||||
restart_mode_ipbans,
|
||||
restart_mode_helpfile,
|
||||
restart_mode_banners,
|
||||
restart_mode_tracker,
|
||||
restart_mode_commandgroups,
|
||||
restart_mode_aliasfile,
|
||||
restart_mode_transfile,
|
||||
restart_mode_tournament,
|
||||
restart_mode_icons,
|
||||
restart_mode_anongame,
|
||||
restart_mode_topiclist,
|
||||
restart_mode_lua
|
||||
};
|
||||
|
||||
extern unsigned int server_get_uptime(void);
|
||||
extern unsigned int server_get_starttime(void);
|
||||
|
@ -81,7 +104,7 @@ namespace pvpgn
|
|||
extern int server_process(void);
|
||||
|
||||
extern void server_quit_wraper(void);
|
||||
extern void server_restart_wraper(void);
|
||||
extern void server_restart_wraper(int mode);
|
||||
extern void server_save_wraper(void);
|
||||
|
||||
}
|
||||
|
|
|
@ -287,7 +287,7 @@ namespace pvpgn
|
|||
else if (id == IDM_SAVE)
|
||||
server_save_wraper();
|
||||
else if (id == IDM_RESTART)
|
||||
server_restart_wraper();
|
||||
server_restart_wraper(restart_mode_all);
|
||||
else if (id == IDM_SHUTDOWN)
|
||||
server_quit_wraper();
|
||||
else if (id == IDM_CLEAR)
|
||||
|
|
Loading…
Add table
Reference in a new issue