X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fconfigreader.cpp;h=2ee6ace26e81bb942791186fc82fd7f5fe0f5a40;hb=d0a4ecd0550458aae2b75ae5612e342204fd041b;hp=20e6c7c87c54fea261ac9de52e0b967a92639030;hpb=eb08ac122471f47488cf411a0d552c5285ca3e66;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/configreader.cpp b/src/configreader.cpp index 20e6c7c87..2ee6ace26 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -36,7 +36,7 @@ bool DoneELine(ServerConfig* conf, const char* tag); ServerConfig::ServerConfig(InspIRCd* Instance) : ServerInstance(Instance) { this->ClearStack(); - *ServerName = *Network = *ServerDesc = *AdminName = '\0'; + *sid = *ServerName = *Network = *ServerDesc = *AdminName = '\0'; *HideWhoisServer = *AdminEmail = *AdminNick = *diepass = *restartpass = *FixedQuit = *HideKillsServer = '\0'; *DefaultModes = *CustomVersion = *motd = *rules = *PrefixQuit = *DieValue = *DNSServer = '\0'; *UserStats = *ModPath = *MyExecutable = *DisabledCommands = *PID = *SuffixQuit = '\0'; @@ -252,7 +252,7 @@ bool ValidateMaxTargets(ServerConfig* conf, const char*, const char*, ValueItem { if ((data.GetInteger() < 0) || (data.GetInteger() > 31)) { - conf->GetInstance()->Logs->Log("CONFIG",DEFAULT,"WARNING: value is greater than 31 or less than 0, set to 20."); + conf->GetInstance()->Logs->Log("CONFIG",DEFAULT,"WARNING: value is greater than 31 or less than 0, set to 20."); data.Set(20); } return true; @@ -262,7 +262,7 @@ bool ValidateSoftLimit(ServerConfig* conf, const char*, const char*, ValueItem & { if ((data.GetInteger() < 1) || (data.GetInteger() > conf->GetInstance()->SE->GetMaxFds())) { - conf->GetInstance()->Logs->Log("CONFIG",DEFAULT,"WARNING: value is greater than %d or less than 0, set to %d.",conf->GetInstance()->SE->GetMaxFds(),conf->GetInstance()->SE->GetMaxFds()); + conf->GetInstance()->Logs->Log("CONFIG",DEFAULT,"WARNING: value is greater than %d or less than 0, set to %d.",conf->GetInstance()->SE->GetMaxFds(),conf->GetInstance()->SE->GetMaxFds()); data.Set(conf->GetInstance()->SE->GetMaxFds()); } return true; @@ -271,7 +271,7 @@ bool ValidateSoftLimit(ServerConfig* conf, const char*, const char*, ValueItem & bool ValidateMaxConn(ServerConfig* conf, const char*, const char*, ValueItem &data) { if (data.GetInteger() > SOMAXCONN) - conf->GetInstance()->Logs->Log("CONFIG",DEFAULT,"WARNING: value may be higher than the system-defined SOMAXCONN value!"); + conf->GetInstance()->Logs->Log("CONFIG",DEFAULT,"WARNING: value may be higher than the system-defined SOMAXCONN value!"); return true; } @@ -344,6 +344,7 @@ bool ValidateServerName(ServerConfig* conf, const char*, const char*, ValueItem std::string moo = std::string(data.GetString()).append("."); data.Set(moo.c_str()); } + conf->ValidateHostname(data.GetString(), "server", "name"); return true; } @@ -361,7 +362,7 @@ bool ValidateMaxWho(ServerConfig* conf, const char*, const char*, ValueItem &dat { if ((data.GetInteger() > 65535) || (data.GetInteger() < 1)) { - conf->GetInstance()->Logs->Log("CONFIG",DEFAULT," size out of range, setting to default of 128."); + conf->GetInstance()->Logs->Log("CONFIG",DEFAULT," size out of range, setting to default of 128."); data.Set(128); } return true; @@ -761,6 +762,28 @@ void ServerConfig::Read(bool bail, User* user) /* These tags MUST occur and must ONLY occur once in the config file */ static const char* Once[] = { "server", "admin", "files", "power", "options", NULL }; + Deprecated ChangedConfig[] = { + {"options", "hidelinks", "has been moved to as of 1.2a3"}, + {"options", "hidewhois", "has been moved to as of 1.2a3"}, + {"options", "userstats", "has been moved to as of 1.2a3"}, + {"options", "customversion", "has been moved to as of 1.2a3"}, + {"options", "hidesplits", "has been moved to as of 1.2a3"}, + {"options", "hidebans", "has been moved to as of 1.2a3"}, + {"options", "hidekills", "has been moved to as of 1.2a3"}, + {"options", "operspywhois", "has been moved to as of 1.2a3"}, + {"options", "announceinvites", "has been moved to as of 1.2a3"}, + {"options", "hidemodes", "has been moved to as of 1.2a3"}, + {"options", "maxtargets", "has been moved to as of 1.2a3"}, + {"options", "nouserdns", "has been moved to as of 1.2a3"}, + {"options", "maxwho", "has been moved to as of 1.2a3"}, + {"options", "softlimit", "has been moved to as of 1.2a3"}, + {"options", "somaxconn", "has been moved to as of 1.2a3"}, + {"options", "netbuffersize", "has been moved to as of 1.2a3"}, + {"options", "maxwho", "has been moved to as of 1.2a3"}, + {"options", "loglevel", "1.2 does not use the loglevel value. Please define tags instead."}, + {NULL, NULL, NULL} + }; + /* These tags can occur ONCE or not at all */ InitialConfig Values[] = { {"performance", "softlimit", "0", new ValueContainerUInt (&this->SoftLimit), DT_INTEGER, ValidateSoftLimit}, @@ -921,6 +944,16 @@ void ServerConfig::Read(bool bail, User* user) if (!CheckOnce(Once[Index], newconfig)) return; + for (int Index = 0; ChangedConfig[Index].tag; Index++) + { + char item[MAXBUF]; + *item = 0; + if (ConfValue(newconfig, ChangedConfig[Index].tag, ChangedConfig[Index].value, "", 0, item, MAXBUF, true) || *item) + throw CoreException(std::string("Your configuration contains a deprecated value: <") + ChangedConfig[Index].tag + ":" + ChangedConfig[Index].value + "> - " + ChangedConfig[Index].reason); + else + ServerInstance->Logs->Log("CONFIG",DEBUG,"Deprecated item <%s:%s> does not exist, good.", ChangedConfig[Index].tag, ChangedConfig[Index].value); + } + /* Read the values of all the tags which occur once or not at all, and call their callbacks. */ for (int Index = 0; Values[Index].tag; Index++) @@ -1300,9 +1333,8 @@ bool ServerConfig::LoadConf(ConfigDataHash &target, FILE* &conf, const char* fil include_stack.push_back(filename); /* Start reading characters... */ - while (!feof(conf)) + while ((ch = fgetc(conf)) != EOF) { - ch = fgetc(conf); /* * Fix for moronic windows issue spotted by Adremelech. * Some windows editors save text files as utf-16, which is @@ -1709,7 +1741,7 @@ bool ServerConfig::ConfValue(ConfigDataHash &target, const std::string &tag, con return true; } } - else if(pos == 0) + else if (pos == 0) { if (!default_value.empty()) { @@ -1927,7 +1959,7 @@ bool ServerConfig::DirValid(const char* dirandfile) { #ifdef WINDOWS return true; -#endif +#else char work[1024]; char buffer[1024]; @@ -1978,6 +2010,7 @@ bool ServerConfig::DirValid(const char* dirandfile) { return false; } +#endif } std::string ServerConfig::GetFullProgDir()