extern int openSockfd[MAXSOCKS];
extern time_t TIME;
+extern int MODCOUNT;
+extern std::vector<Module*> modules;
+extern std::vector<ircd_module*> factory;
ServerConfig::ServerConfig()
{
bool ServerConfig::CheckOnce(char* tag, bool bail, userrec* user)
{
- if (ConfValueEnum(tag,&Config->config_f) > 1)
+ int count = ConfValueEnum(tag,&Config->config_f);
+ if (count > 1)
{
if (bail)
{
}
return false;
}
+ if (count < 1)
+ {
+ if (bail)
+ {
+ printf("There were errors in your configuration:\nYou have not defined a <%s> tag, this is required.",tag);
+ Exit(0);
+ }
+ else
+ {
+ if (user)
+ {
+ WriteServ(user->fd,"There were errors in your configuration:");
+ WriteServ(user->fd,"You have not defined a <%s> tag, this is required.",tag);
+ }
+ else
+ {
+ WriteOpers("There were errors in the configuration file:");
+ WriteOpers("You have not defined a <%s> tag, this is required.",tag);
+ }
+ }
+ return false;
+ }
return true;
}
*/
if (!CheckOnce("server",bail,user) || !CheckOnce("admin",bail,user) || !CheckOnce("files",bail,user)
|| !CheckOnce("power",bail,user) || !CheckOnce("options",bail,user)
- || !CheckOnce("dns",bail,user) || !CheckOnce("options",bail,user)
- || !CheckOnce("disabled",bail,user) || !CheckOnce("pid",bail,user))
+ || !CheckOnce("dns",bail,user) || !CheckOnce("pid",bail,user))
{
return;
}
exit(status);
}
+char* CleanFilename(char* name)
+{
+ char* p = name + strlen(name);
+ while ((p != name) && (*p != '/')) p--;
+ return (p != name ? ++p : p);
+}
+
+
void Rehash(int status)
{
- WriteOpers("Rehashing config file %s due to SIGHUP",CONFIG_FILE);
+ WriteOpers("Rehashing config file %s due to SIGHUP",CleanFilename(CONFIG_FILE));
fclose(Config->log_file);
OpenLog(NULL,0);
Config->Read(false,NULL);
+ FOREACH_MOD(I_OnRehash,OnRehash(""));
}