#include "inspircd.h"
#include "xline.h"
#include "exitcodes.h"
+#include "commands/cmd_whowas.h"
std::vector<std::string> old_module_names, new_module_names, added_modules, removed_modules;
{
if (!GetIOHook(is))
{
- ServerInstance->Log(DEBUG,"Hooked inspsocket %08x", is);
SocketIOHookModule[is] = iomod;
is->IsIOHooked = true;
return true;
bool NoValidation(ServerConfig* conf, const char* tag, const char* value, ValueItem &data)
{
- conf->GetInstance()->Log(DEBUG,"No validation for <%s:%s>",tag,value);
return true;
}
nspace::hash_map<std::string,command_t*>::iterator cm = ServerInstance->Parser->cmdlist.find(thiscmd);
if (cm != ServerInstance->Parser->cmdlist.end())
{
- ServerInstance->Log(DEBUG,"Disabling command '%s'",cm->second->command.c_str());
cm->second->Disable(true);
}
}
conf->WhoWasMaxKeep = 3600;
conf->GetInstance()->Log(DEFAULT,"WARNING: <whowas:maxkeep> value less than 3600, setting to default 3600");
}
- conf->GetInstance()->Log(DEBUG,"whowas:groupsize:%d maxgroups:%d maxkeep:%d",conf->WhoWasGroupSize,conf->WhoWasMaxGroups,conf->WhoWasMaxKeep);
- irc::whowas::PruneWhoWas(conf->GetInstance(), conf->GetInstance()->Time());
+
+ command_t* whowas_command = conf->GetInstance()->Parser->GetHandler("WHOWAS");
+ if (whowas_command)
+ {
+ std::deque<classbase*> params;
+ whowas_command->HandleInternal(WHOWAS_PRUNE, params);
+ }
+
return true;
}
*/
bool DoneConnect(ServerConfig* conf, const char* tag)
{
- conf->GetInstance()->Log(DEBUG,"DoneConnect called for tag: %s",tag);
return true;
}
bool DoULine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types)
{
const char* server = values[0].GetString();
- conf->GetInstance()->Log(DEBUG,"Read ULINE '%s'",server);
conf->ulines.push_back(server);
return true;
}
{"server", "name", "", new ValueContainerChar (this->ServerName), DT_CHARPTR, ValidateServerName},
{"server", "description", "Configure Me", new ValueContainerChar (this->ServerDesc), DT_CHARPTR, NoValidation},
{"server", "network", "Network", new ValueContainerChar (this->Network), DT_CHARPTR, NoValidation},
- {"admin", "name", "Miss Configured", new ValueContainerChar (this->AdminName), DT_CHARPTR, NoValidation},
+ {"admin", "name", "", new ValueContainerChar (this->AdminName), DT_CHARPTR, NoValidation},
{"admin", "email", "Mis@configu.red", new ValueContainerChar (this->AdminEmail), DT_CHARPTR, NoValidation},
{"admin", "nick", "Misconfigured", new ValueContainerChar (this->AdminNick), DT_CHARPTR, NoValidation},
{"files", "motd", "", new ValueContainerChar (this->motd), DT_CHARPTR, ValidateMotd},
{"reason", "ipmask", NULL},
{"No reason", "", NULL},
{DT_CHARPTR, DT_CHARPTR},
- InitXLine, DoZLine, DoneXLine},
+ InitXLine, DoZLine, DoneZLine},
{"badnick",
{"reason", "nick", NULL},
{"No reason", "", NULL},
{DT_CHARPTR, DT_CHARPTR},
- InitXLine, DoQLine, DoneXLine},
+ InitXLine, DoQLine, DoneQLine},
{"badhost",
{"reason", "host", NULL},
{"No reason", "", NULL},
{DT_CHARPTR, DT_CHARPTR},
- InitXLine, DoKLine, DoneXLine},
+ InitXLine, DoKLine, DoneKLine},
{"exception",
{"reason", "host", NULL},
{"No reason", "", NULL},
{DT_CHARPTR, DT_CHARPTR},
- InitXLine, DoELine, DoneXLine},
+ InitXLine, DoELine, DoneELine},
{"type",
{"name", "classes", NULL},
{
case '\n':
if (in_quote)
- {
- ServerInstance->Log(DEBUG, "Got \\n inside value");
line += '\n';
- }
linenumber++;
case '\r':
if (!in_quote)
if ((ch == '\\') && (in_quote) && (in_tag))
{
line += ch;
- ServerInstance->Log(DEBUG,"Escape sequence in config line.");
char real_character;
if (conf.get(real_character))
{
- ServerInstance->Log(DEBUG,"Escaping %c", real_character);
if (real_character == 'n')
real_character = '\n';
line += real_character;
if (!default_value.empty())
{
result = default_value;
- ServerInstance->Log(DEBUG, "No config option for '%s' in tag <%s> using default: %s", var.c_str(), tag.c_str(), default_value.c_str());
return true;
}
}
if (!default_value.empty())
{
result = default_value;
- ServerInstance->Log(DEBUG, "No <%s:%s> tags in config file using default: %s", tag.c_str(), var.c_str(), default_value.c_str());
return true;
}
- ServerInstance->Log(DEBUG, "No <%s> tags in config file.", tag.c_str());
- }
- else
- {
- ServerInstance->Log(DEBUG, "ConfValue got an out-of-range index %d, there are only %d occurences of %s", pos, target.count(tag), tag.c_str());
}
return false;
}
stream.str(value);
if(!(stream >> result))
return false;
+ else
+ {
+ if (!value.empty())
+ {
+ if (value.substr(0,2) == "0x")
+ {
+ char* endptr;
+
+ value.erase(0,2);
+ result = strtol(value.c_str(), &endptr, 16);
+
+ /* No digits found */
+ if (endptr == value.c_str())
+ return false;
+ }
+ else
+ {
+ char denominator = *(value.end() - 1);
+ switch (toupper(denominator))
+ {
+ case 'K':
+ /* Kilobytes -> bytes */
+ result = result * 1024;
+ break;
+ case 'M':
+ /* Megabytes -> bytes */
+ result = result * 1024 * 1024;
+ break;
+ case 'G':
+ /* Gigabytes -> bytes */
+ result = result * 1024 * 1024 * 1024;
+ break;
+ }
+ }
+ }
+ }
return r;
}
return iter->second.size();
}
- else if(pos == 0)
- {
- ServerInstance->Log(DEBUG, "No <%s> tags in config file.", tag.c_str());
- }
- else
- {
- ServerInstance->Log(DEBUG, "ConfVarEnum got an out-of-range index %d, there are only %d occurences of %s", pos, target.count(tag), tag.c_str());
- }
return 0;
}
*/
bool ServerConfig::ReadFile(file_cache &F, const char* fname)
{
+ if (!fname || !*fname)
+ return false;
+
FILE* file = NULL;
char linebuf[MAXBUF];