diff options
36 files changed, 116 insertions, 131 deletions
diff --git a/include/commands.h b/include/commands.h index 81e28fbaf..24fad4b3c 100644 --- a/include/commands.h +++ b/include/commands.h @@ -29,13 +29,6 @@ #include "channels.h" #include "modules.h" -bool is_uline(const char* server); -long duration(const char* str); -bool host_matches_everyone(const std::string &mask, userrec* user); -bool ip_matches_everyone(const std::string &ip, userrec* user); -bool nick_matches_everyone(const std::string &nick, userrec* user); -int operstrcmp(const char* data,const char* input); - /* XXX Serious WTFness XXX * * Well, unless someone invents a wildcard or diff --git a/include/inspircd.h b/include/inspircd.h index 2ae54134e..00f6aef9c 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -126,6 +126,12 @@ class InspIRCd : public classbase char ReadBuffer[65535]; + const long duration_m; + const long duration_h; + const long duration_d; + const long duration_w; + const long duration_y; + public: time_t startup_time; ModeParser* ModeGrok; @@ -283,8 +289,6 @@ class InspIRCd : public classbase bool IsValidModuleCommand(const std::string &commandname, int pcnt, userrec* user); - bool IsUlined(const std::string &server); - void AddGLine(long duration, const std::string &source, const std::string &reason, const std::string &hostmask); void AddQLine(long duration, const std::string &source, const std::string &reason, const std::string &nickname); @@ -305,8 +309,6 @@ class InspIRCd : public classbase bool DelELine(const std::string &hostmask); - long CalcDuration(const std::string &duration); - bool IsValidMask(const std::string &mask); void AddSocket(InspSocket* sock); @@ -321,6 +323,13 @@ class InspIRCd : public classbase void DumpText(userrec* User, const std::string &LinePrefix, stringstream &TextStream); + bool nick_matches_everyone(const std::string &nick, userrec* user); + bool ip_matches_everyone(const std::string &ip, userrec* user); + bool host_matches_everyone(const std::string &mask, userrec* user); + long duration(const char* str); + int operstrcmp(const char* data,const char* input); + bool is_uline(const char* server); + std::string GetRevision(); std::string GetVersionString(); void WritePID(const std::string &filename); diff --git a/src/channels.cpp b/src/channels.cpp index 513e77607..8011a1ff4 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -558,14 +558,14 @@ long chanrec::KickUser(userrec *src, userrec *user, const char* reason) src->WriteServ("441 %s %s %s :They are not on that channel",src->nick, user->nick, this->name); return this->GetUserCounter(); } - if ((is_uline(user->server)) && (!is_uline(src->server))) + if ((ServerInstance->is_uline(user->server)) && (!ServerInstance->is_uline(src->server))) { src->WriteServ("482 %s %s :Only a u-line may kick a u-line from a channel.",src->nick, this->name); return this->GetUserCounter(); } int MOD_RESULT = 0; - if (!is_uline(src->server)) + if (!ServerInstance->is_uline(src->server)) { MOD_RESULT = 0; FOREACH_RESULT(I_OnUserPreKick,OnUserPreKick(src,user,this,reason)); @@ -576,10 +576,10 @@ long chanrec::KickUser(userrec *src, userrec *user, const char* reason) if (MOD_RESULT != -1) { FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(src,user,this,AC_KICK)); - if ((MOD_RESULT == ACR_DENY) && (!is_uline(src->server))) + if ((MOD_RESULT == ACR_DENY) && (!ServerInstance->is_uline(src->server))) return this->GetUserCounter(); - if ((MOD_RESULT == ACR_DEFAULT) || (!is_uline(src->server))) + if ((MOD_RESULT == ACR_DEFAULT) || (!ServerInstance->is_uline(src->server))) { int them = this->GetStatus(src); int us = this->GetStatus(user); @@ -919,7 +919,7 @@ int chanrec::GetStatusFlags(userrec *user) int chanrec::GetStatus(userrec *user) { - if (is_uline(user->server)) + if (ServerInstance->is_uline(user->server)) return STATUS_OP; for (std::vector<ucrec*>::const_iterator i = user->chans.begin(); i != user->chans.end(); i++) diff --git a/src/cmd_eline.cpp b/src/cmd_eline.cpp index 67874b5d7..e25fb37e3 100644 --- a/src/cmd_eline.cpp +++ b/src/cmd_eline.cpp @@ -30,19 +30,19 @@ void cmd_eline::Handle (const char** parameters, int pcnt, userrec *user) { if (pcnt >= 3) { - if (host_matches_everyone(parameters[0],user)) + if (ServerInstance->host_matches_everyone(parameters[0],user)) return; - ServerInstance->XLines->add_eline(duration(parameters[1]),user->nick,parameters[2],parameters[0]); - FOREACH_MOD(I_OnAddELine,OnAddELine(duration(parameters[1]), user, parameters[2], parameters[0])); + ServerInstance->XLines->add_eline(ServerInstance->duration(parameters[1]),user->nick,parameters[2],parameters[0]); + FOREACH_MOD(I_OnAddELine,OnAddELine(ServerInstance->duration(parameters[1]), user, parameters[2], parameters[0])); - if (!duration(parameters[1])) + if (!ServerInstance->duration(parameters[1])) { ServerInstance->WriteOpers("*** %s added permanent E-line for %s.",user->nick,parameters[0]); } else { - ServerInstance->WriteOpers("*** %s added timed E-line for %s, expires in %d seconds.",user->nick,parameters[0],duration(parameters[1])); + ServerInstance->WriteOpers("*** %s added timed E-line for %s, expires in %d seconds.",user->nick,parameters[0],ServerInstance->duration(parameters[1])); } } else diff --git a/src/cmd_gline.cpp b/src/cmd_gline.cpp index 91f2e6b1c..69d8b51ca 100644 --- a/src/cmd_gline.cpp +++ b/src/cmd_gline.cpp @@ -30,19 +30,19 @@ void cmd_gline::Handle (const char** parameters, int pcnt, userrec *user) { if (pcnt >= 3) { - if (host_matches_everyone(parameters[0],user)) + if (ServerInstance->host_matches_everyone(parameters[0],user)) return; - ServerInstance->XLines->add_gline(duration(parameters[1]),user->nick,parameters[2],parameters[0]); - FOREACH_MOD(I_OnAddGLine,OnAddGLine(duration(parameters[1]), user, parameters[2], parameters[0])); + ServerInstance->XLines->add_gline(ServerInstance->duration(parameters[1]),user->nick,parameters[2],parameters[0]); + FOREACH_MOD(I_OnAddGLine,OnAddGLine(ServerInstance->duration(parameters[1]), user, parameters[2], parameters[0])); - if (!duration(parameters[1])) + if (!ServerInstance->duration(parameters[1])) { ServerInstance->WriteOpers("*** %s added permanent G-line for %s.",user->nick,parameters[0]); } else { - ServerInstance->WriteOpers("*** %s added timed G-line for %s, expires in %d seconds.",user->nick,parameters[0],duration(parameters[1])); + ServerInstance->WriteOpers("*** %s added timed G-line for %s, expires in %d seconds.",user->nick,parameters[0],ServerInstance->duration(parameters[1])); } ServerInstance->XLines->apply_lines(APPLY_GLINES); diff --git a/src/cmd_kick.cpp b/src/cmd_kick.cpp index 9c517ee9e..6a37052db 100644 --- a/src/cmd_kick.cpp +++ b/src/cmd_kick.cpp @@ -35,7 +35,7 @@ void cmd_kick::Handle (const char** parameters, int pcnt, userrec *user) return; } - if ((IS_LOCAL(user)) && (!c->HasUser(user)) && (!is_uline(user->server))) + if ((IS_LOCAL(user)) && (!c->HasUser(user)) && (!ServerInstance->is_uline(user->server))) { user->WriteServ( "442 %s %s :You're not on that channel!", user->nick, parameters[0]); return; diff --git a/src/cmd_kline.cpp b/src/cmd_kline.cpp index 3ed25602c..7e9555956 100644 --- a/src/cmd_kline.cpp +++ b/src/cmd_kline.cpp @@ -35,19 +35,19 @@ void cmd_kline::Handle (const char** parameters, int pcnt, userrec *user) { if (pcnt >= 3) { - if (host_matches_everyone(parameters[0],user)) + if (ServerInstance->host_matches_everyone(parameters[0],user)) return; - ServerInstance->XLines->add_kline(duration(parameters[1]),user->nick,parameters[2],parameters[0]); - FOREACH_MOD(I_OnAddKLine,OnAddKLine(duration(parameters[1]), user, parameters[2], parameters[0])); + ServerInstance->XLines->add_kline(ServerInstance->duration(parameters[1]),user->nick,parameters[2],parameters[0]); + FOREACH_MOD(I_OnAddKLine,OnAddKLine(ServerInstance->duration(parameters[1]), user, parameters[2], parameters[0])); - if (!duration(parameters[1])) + if (!ServerInstance->duration(parameters[1])) { ServerInstance->WriteOpers("*** %s added permanent K-line for %s.",user->nick,parameters[0]); } else { - ServerInstance->WriteOpers("*** %s added timed K-line for %s, expires in %d seconds.",user->nick,parameters[0],duration(parameters[1])); + ServerInstance->WriteOpers("*** %s added timed K-line for %s, expires in %d seconds.",user->nick,parameters[0],ServerInstance->duration(parameters[1])); } ServerInstance->XLines->apply_lines(APPLY_KLINES); diff --git a/src/cmd_notice.cpp b/src/cmd_notice.cpp index 6882c8d35..257fd7495 100644 --- a/src/cmd_notice.cpp +++ b/src/cmd_notice.cpp @@ -37,7 +37,7 @@ void cmd_notice::Handle (const char** parameters, int pcnt, userrec *user) if (ServerInstance->Parser->LoopCall(user, this, parameters, pcnt, 0)) return; - if ((parameters[0][0] == '$') && ((*user->oper) || (is_uline(user->server)))) + if ((parameters[0][0] == '$') && ((*user->oper) || (ServerInstance->is_uline(user->server)))) { int MOD_RESULT = 0; std::string temp = parameters[1]; diff --git a/src/cmd_oper.cpp b/src/cmd_oper.cpp index 7f81da59e..67ce00c19 100644 --- a/src/cmd_oper.cpp +++ b/src/cmd_oper.cpp @@ -73,7 +73,7 @@ void cmd_oper::Handle (const char** parameters, int pcnt, userrec *user) ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "oper", "type", i, OperType, MAXBUF); ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "oper", "host", i, HostName, MAXBUF); - if ((!strcmp(LoginName,parameters[0])) && (!operstrcmp(Password,parameters[1])) && (OneOfMatches(TheHost,TheIP,HostName))) + if ((!strcmp(LoginName,parameters[0])) && (!ServerInstance->operstrcmp(Password,parameters[1])) && (OneOfMatches(TheHost,TheIP,HostName))) { fail2 = true; for (j =0; j < ServerInstance->Config->ConfValueEnum(ServerInstance->Config->config_data, "type"); j++) diff --git a/src/cmd_privmsg.cpp b/src/cmd_privmsg.cpp index 955bb9af3..9ee335234 100644 --- a/src/cmd_privmsg.cpp +++ b/src/cmd_privmsg.cpp @@ -35,7 +35,7 @@ void cmd_privmsg::Handle (const char** parameters, int pcnt, userrec *user) if (ServerInstance->Parser->LoopCall(user, this, parameters, pcnt, 0)) return; - if ((parameters[0][0] == '$') && ((*user->oper) || (is_uline(user->server)))) + if ((parameters[0][0] == '$') && ((*user->oper) || (ServerInstance->is_uline(user->server)))) { int MOD_RESULT = 0; std::string temp = parameters[1]; diff --git a/src/cmd_qline.cpp b/src/cmd_qline.cpp index c82b5f53c..1e2b7cbd0 100644 --- a/src/cmd_qline.cpp +++ b/src/cmd_qline.cpp @@ -27,17 +27,17 @@ void cmd_qline::Handle (const char** parameters, int pcnt, userrec *user) { if (pcnt >= 3) { - if (nick_matches_everyone(parameters[0],user)) + if (ServerInstance->nick_matches_everyone(parameters[0],user)) return; - ServerInstance->XLines->add_qline(duration(parameters[1]),user->nick,parameters[2],parameters[0]); - FOREACH_MOD(I_OnAddQLine,OnAddQLine(duration(parameters[1]), user, parameters[2], parameters[0])); - if (!duration(parameters[1])) + ServerInstance->XLines->add_qline(ServerInstance->duration(parameters[1]),user->nick,parameters[2],parameters[0]); + FOREACH_MOD(I_OnAddQLine,OnAddQLine(ServerInstance->duration(parameters[1]), user, parameters[2], parameters[0])); + if (!ServerInstance->duration(parameters[1])) { ServerInstance->WriteOpers("*** %s added permanent Q-line for %s.",user->nick,parameters[0]); } else { - ServerInstance->WriteOpers("*** %s added timed Q-line for %s, expires in %d seconds.",user->nick,parameters[0],duration(parameters[1])); + ServerInstance->WriteOpers("*** %s added timed Q-line for %s, expires in %d seconds.",user->nick,parameters[0],ServerInstance->duration(parameters[1])); } ServerInstance->XLines->apply_lines(APPLY_QLINES); } diff --git a/src/cmd_zline.cpp b/src/cmd_zline.cpp index 61615da46..772bac84f 100644 --- a/src/cmd_zline.cpp +++ b/src/cmd_zline.cpp @@ -35,17 +35,17 @@ void cmd_zline::Handle (const char** parameters, int pcnt, userrec *user) user->WriteServ("NOTICE %s :*** You cannot include a username in a zline, a zline must ban only an IP mask",user->nick); return; } - if (ip_matches_everyone(parameters[0],user)) + if (ServerInstance->ip_matches_everyone(parameters[0],user)) return; - ServerInstance->XLines->add_zline(duration(parameters[1]),user->nick,parameters[2],parameters[0]); - FOREACH_MOD(I_OnAddZLine,OnAddZLine(duration(parameters[1]), user, parameters[2], parameters[0])); - if (!duration(parameters[1])) + ServerInstance->XLines->add_zline(ServerInstance->duration(parameters[1]),user->nick,parameters[2],parameters[0]); + FOREACH_MOD(I_OnAddZLine,OnAddZLine(ServerInstance->duration(parameters[1]), user, parameters[2], parameters[0])); + if (!ServerInstance->duration(parameters[1])) { ServerInstance->WriteOpers("*** %s added permanent Z-line for %s.",user->nick,parameters[0]); } else { - ServerInstance->WriteOpers("*** %s added timed Z-line for %s, expires in %d seconds.",user->nick,parameters[0],duration(parameters[1])); + ServerInstance->WriteOpers("*** %s added timed Z-line for %s, expires in %d seconds.",user->nick,parameters[0],ServerInstance->duration(parameters[1])); } ServerInstance->XLines->apply_lines(APPLY_ZLINES); } diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 2424b1844..2c3a482cb 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -134,7 +134,7 @@ bool CommandParser::IsValidCommand(const std::string &commandname, int pcnt, use { if (n->second->flags_needed) { - return ((user->HasPermission(commandname)) || (is_uline(user->server))); + return ((user->HasPermission(commandname)) || (ServerInstance->is_uline(user->server))); } return true; } diff --git a/src/commands.cpp b/src/commands.cpp index 6bb169f0a..ca31c86d8 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -49,39 +49,31 @@ #include "typedefs.h" #include "command_parse.h" -extern InspIRCd* ServerInstance; - -const long duration_m = 60; -const long duration_h = duration_m * 60; -const long duration_d = duration_h * 24; -const long duration_w = duration_d * 7; -const long duration_y = duration_w * 52; - /* XXX - these really belong in helperfuncs perhaps -- w00t */ -bool is_uline(const char* server) +bool InspIRCd::is_uline(const char* server) { if (!server) return false; if (!*server) return true; - return (find(ServerInstance->Config->ulines.begin(),ServerInstance->Config->ulines.end(),server) != ServerInstance->Config->ulines.end()); + return (find(Config->ulines.begin(),Config->ulines.end(),server) != Config->ulines.end()); } -int operstrcmp(const char* data,const char* input) +int InspIRCd::operstrcmp(const char* data,const char* input) { int MOD_RESULT = 0; - FOREACH_RESULT(I_OnOperCompare,OnOperCompare(data,input)) - ServerInstance->Log(DEBUG,"operstrcmp: %d",MOD_RESULT); + FOREACH_RESULT_I(this,I_OnOperCompare,OnOperCompare(data,input)) + Log(DEBUG,"operstrcmp: %d",MOD_RESULT); if (MOD_RESULT == 1) return 0; if (MOD_RESULT == -1) return 1; - ServerInstance->Log(DEBUG,"strcmp fallback: '%s' '%s' %d",data,input,strcmp(data,input)); + Log(DEBUG,"strcmp fallback: '%s' '%s' %d",data,input,strcmp(data,input)); return strcmp(data,input); } -long duration(const char* str) +long InspIRCd::duration(const char* str) { char n_field[MAXBUF]; long total = 0; @@ -142,19 +134,19 @@ long duration(const char* str) /* All other ircds when doing this check usually just look for a string of *@* or *. We're smarter than that, though. */ -bool host_matches_everyone(const std::string &mask, userrec* user) +bool InspIRCd::host_matches_everyone(const std::string &mask, userrec* user) { char buffer[MAXBUF]; char itrigger[MAXBUF]; long matches = 0; - if (!ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "insane","trigger", 0, itrigger, MAXBUF)) + if (!Config->ConfValue(Config->config_data, "insane","trigger", 0, itrigger, MAXBUF)) strlcpy(itrigger,"95.5",MAXBUF); - if (ServerInstance->Config->ConfValueBool(ServerInstance->Config->config_data, "insane","hostmasks", 0)) + if (Config->ConfValueBool(Config->config_data, "insane","hostmasks", 0)) return false; - for (user_hash::iterator u = ServerInstance->clientlist.begin(); u != ServerInstance->clientlist.end(); u++) + for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++) { strlcpy(buffer,u->second->ident,MAXBUF); charlcat(buffer,'@',MAXBUF); @@ -162,62 +154,62 @@ bool host_matches_everyone(const std::string &mask, userrec* user) if (match(buffer,mask.c_str())) matches++; } - float percent = ((float)matches / (float)ServerInstance->clientlist.size()) * 100; + float percent = ((float)matches / (float)clientlist.size()) * 100; if (percent > (float)atof(itrigger)) { - ServerInstance->WriteOpers("*** \2WARNING\2: %s tried to set a G/K/E line mask of %s, which covers %.2f%% of the network!",user->nick,mask.c_str(),percent); + WriteOpers("*** \2WARNING\2: %s tried to set a G/K/E line mask of %s, which covers %.2f%% of the network!",user->nick,mask.c_str(),percent); return true; } return false; } -bool ip_matches_everyone(const std::string &ip, userrec* user) +bool InspIRCd::ip_matches_everyone(const std::string &ip, userrec* user) { char itrigger[MAXBUF]; long matches = 0; - if (!ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "insane","trigger",0,itrigger,MAXBUF)) + if (!Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF)) strlcpy(itrigger,"95.5",MAXBUF); - if (ServerInstance->Config->ConfValueBool(ServerInstance->Config->config_data, "insane","ipmasks",0)) + if (Config->ConfValueBool(Config->config_data, "insane","ipmasks",0)) return false; - for (user_hash::iterator u = ServerInstance->clientlist.begin(); u != ServerInstance->clientlist.end(); u++) + for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++) { if (match(u->second->GetIPString(),ip.c_str(),true)) matches++; } - float percent = ((float)matches / (float)ServerInstance->clientlist.size()) * 100; + float percent = ((float)matches / (float)clientlist.size()) * 100; if (percent > (float)atof(itrigger)) { - ServerInstance->WriteOpers("*** \2WARNING\2: %s tried to set a Z line mask of %s, which covers %.2f%% of the network!",user->nick,ip.c_str(),percent); + WriteOpers("*** \2WARNING\2: %s tried to set a Z line mask of %s, which covers %.2f%% of the network!",user->nick,ip.c_str(),percent); return true; } return false; } -bool nick_matches_everyone(const std::string &nick, userrec* user) +bool InspIRCd::nick_matches_everyone(const std::string &nick, userrec* user) { char itrigger[MAXBUF]; long matches = 0; - if (!ServerInstance->Config->ConfValue(ServerInstance->Config->config_data, "insane","trigger",0,itrigger,MAXBUF)) + if (!Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF)) strlcpy(itrigger,"95.5",MAXBUF); - if (ServerInstance->Config->ConfValueBool(ServerInstance->Config->config_data, "insane","nickmasks",0)) + if (Config->ConfValueBool(Config->config_data, "insane","nickmasks",0)) return false; - for (user_hash::iterator u = ServerInstance->clientlist.begin(); u != ServerInstance->clientlist.end(); u++) + for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++) { if (match(u->second->nick,nick.c_str())) matches++; } - float percent = ((float)matches / (float)ServerInstance->clientlist.size()) * 100; + float percent = ((float)matches / (float)clientlist.size()) * 100; if (percent > (float)atof(itrigger)) { - ServerInstance->WriteOpers("*** \2WARNING\2: %s tried to set a Q line mask of %s, which covers %.2f%% of the network!",user->nick,nick.c_str(),percent); + WriteOpers("*** \2WARNING\2: %s tried to set a Q line mask of %s, which covers %.2f%% of the network!",user->nick,nick.c_str(),percent); return true; } return false; diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 29148defe..8680c4197 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -190,14 +190,15 @@ std::string InspIRCd::GetRevision() return REVISION; } -InspIRCd::InspIRCd(int argc, char** argv) : ModCount(-1) +InspIRCd::InspIRCd(int argc, char** argv) + : duration_m(60), duration_h(60*60), duration_d(60*60*24), duration_w(60*60*24*7), duration_y(60*60*24*365), ModCount(-1) { bool SEGVHandler = false; ServerInstance = this; modules.resize(255); factory.resize(255); - + this->Config = new ServerConfig(this); this->Start(); this->module_sockets.clear(); diff --git a/src/mode.cpp b/src/mode.cpp index 44117ac77..ae18959d7 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -306,7 +306,7 @@ void ModeParser::Process(const char** parameters, int pcnt, userrec *user, bool ServerInstance->Log(DEBUG,"The user is not a halfop or above, checking other reasons for being able to set the modes"); /* Are we a uline or is it a servermode? */ - if ((!is_uline(user->server)) && (!servermode)) + if ((!ServerInstance->is_uline(user->server)) && (!servermode)) { /* Not enough permission: * NOT a uline and NOT a servermode, diff --git a/src/modes/cmode_h.cpp b/src/modes/cmode_h.cpp index 4b4730d52..da810a4d2 100644 --- a/src/modes/cmode_h.cpp +++ b/src/modes/cmode_h.cpp @@ -80,7 +80,7 @@ std::string ModeChannelHalfOp::AddHalfOp(userrec *user,const char* dest,chanrec return ""; if (MOD_RESULT == ACR_DEFAULT) { - if ((status < STATUS_OP) && (!is_uline(user->server))) + if ((status < STATUS_OP) && (!ServerInstance->is_uline(user->server))) { user->WriteServ("482 %s %s :You're not a channel operator",user->nick, chan->name); return ""; @@ -108,7 +108,7 @@ std::string ModeChannelHalfOp::DelHalfOp(userrec *user,const char *dest,chanrec return ""; if (MOD_RESULT == ACR_DEFAULT) { - if ((user != d) && ((status < STATUS_OP) && (!is_uline(user->server)))) + if ((user != d) && ((status < STATUS_OP) && (!ServerInstance->is_uline(user->server)))) { user->WriteServ("482 %s %s :You are not a channel operator",user->nick, chan->name); return ""; diff --git a/src/modes/cmode_o.cpp b/src/modes/cmode_o.cpp index 6aa36cc79..c8a969b9c 100644 --- a/src/modes/cmode_o.cpp +++ b/src/modes/cmode_o.cpp @@ -71,7 +71,7 @@ std::string ModeChannelOp::AddOp(userrec *user,const char* dest,chanrec *chan,in return ""; if (MOD_RESULT == ACR_DEFAULT) { - if ((status < STATUS_OP) && (!is_uline(user->server))) + if ((status < STATUS_OP) && (!ServerInstance->is_uline(user->server))) { user->WriteServ("482 %s %s :You're not a channel operator",user->nick, chan->name); return ""; @@ -102,7 +102,7 @@ std::string ModeChannelOp::DelOp(userrec *user,const char *dest,chanrec *chan,in return ""; if (MOD_RESULT == ACR_DEFAULT) { - if ((status < STATUS_OP) && (!is_uline(user->server)) && (IS_LOCAL(user))) + if ((status < STATUS_OP) && (!ServerInstance->is_uline(user->server)) && (IS_LOCAL(user))) { user->WriteServ("482 %s %s :You are not a channel operator",user->nick, chan->name); return ""; diff --git a/src/modes/cmode_v.cpp b/src/modes/cmode_v.cpp index 26e176bc5..3f2910e1d 100644 --- a/src/modes/cmode_v.cpp +++ b/src/modes/cmode_v.cpp @@ -71,7 +71,7 @@ std::string ModeChannelVoice::AddVoice(userrec *user,const char* dest,chanrec *c return ""; if (MOD_RESULT == ACR_DEFAULT) { - if ((status < STATUS_HOP) && (!is_uline(user->server))) + if ((status < STATUS_HOP) && (!ServerInstance->is_uline(user->server))) { user->WriteServ("482 %s %s :You're not a channel (half)operator",user->nick, chan->name); return ""; @@ -99,7 +99,7 @@ std::string ModeChannelVoice::DelVoice(userrec *user,const char *dest,chanrec *c return ""; if (MOD_RESULT == ACR_DEFAULT) { - if ((status < STATUS_HOP) && (!is_uline(user->server))) + if ((status < STATUS_HOP) && (!ServerInstance->is_uline(user->server))) { user->WriteServ("482 %s %s :You are not a channel (half)operator",user->nick, chan->name); return ""; diff --git a/src/modules.cpp b/src/modules.cpp index fd5672cd3..94ba661e0 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -338,11 +338,6 @@ bool InspIRCd::MatchText(const std::string &sliteral, const std::string &spatter return match(sliteral.c_str(),spattern.c_str()); } -bool InspIRCd::IsUlined(const std::string &server) -{ - return is_uline(server.c_str()); -} - bool InspIRCd::CallCommandHandler(const std::string &commandname, const char** parameters, int pcnt, userrec* user) { return this->Parser->CallHandler(commandname,parameters,pcnt,user); @@ -521,11 +516,6 @@ bool InspIRCd::DelELine(const std::string &hostmask) return XLines->del_eline(hostmask.c_str()); } -long InspIRCd::CalcDuration(const std::string &delta) -{ - return duration(delta.c_str()); -} - /* * XXX why on *earth* is this in modules.cpp...? I think * perhaps we need a server.cpp for InspIRCd:: stuff where possible. -- w00t diff --git a/src/modules/m_alias.cpp b/src/modules/m_alias.cpp index f3e2ed3f8..7b29cc9f9 100644 --- a/src/modules/m_alias.cpp +++ b/src/modules/m_alias.cpp @@ -116,7 +116,7 @@ class ModuleAlias : public Module } if ((u != NULL) && (Aliases[i].requires != "") && (Aliases[i].uline)) { - if (!is_uline(u->server)) + if (!ServerInstance->is_uline(u->server)) { ServerInstance->WriteOpers("*** NOTICE -- Service "+Aliases[i].requires+" required by alias "+std::string(Aliases[i].text.c_str())+" is not on a u-lined server, possibly underhanded antics detected!"); user->WriteServ("401 "+std::string(user->nick)+" "+Aliases[i].requires+" :is an imposter! Please inform an IRC operator as soon as possible."); diff --git a/src/modules/m_cban.cpp b/src/modules/m_cban.cpp index cf46b2af9..cf2be71d1 100644 --- a/src/modules/m_cban.cpp +++ b/src/modules/m_cban.cpp @@ -92,7 +92,7 @@ class cmd_cban : public command_t // parameters[0] = #channel // parameters[1] = 1h3m2s // parameters[2] = Tortoise abuser - long length = duration(parameters[1]); + long length = ServerInstance->duration(parameters[1]); std::string reason = (pcnt > 2) ? parameters[2] : "No reason supplied"; cbans.push_back(CBan(parameters[0], user->nick, ServerInstance->Time(), length, reason)); diff --git a/src/modules/m_chanprotect.cpp b/src/modules/m_chanprotect.cpp index 6310e6607..68a4afb9f 100644 --- a/src/modules/m_chanprotect.cpp +++ b/src/modules/m_chanprotect.cpp @@ -85,7 +85,7 @@ class ChanFounder : public ModeHandler std::string founder = "cm_founder_"+std::string(channel->name); // source is a server, or ulined, we'll let them +-q the user. - if ((is_uline(source->nick)) || (is_uline(source->server)) || (!*source->server) || (!IS_LOCAL(source))) + if ((ServerInstance->is_uline(source->nick)) || (ServerInstance->is_uline(source->server)) || (!*source->server) || (!IS_LOCAL(source))) { ServerInstance->Log(DEBUG,"Allowing remote mode change in ChanFounder"); if (adding) @@ -194,7 +194,7 @@ class ChanProtect : public ModeHandler std::string founder = "cm_founder_"+std::string(channel->name); // source has +q, is a server, or ulined, we'll let them +-a the user. - if ((is_uline(source->nick)) || (is_uline(source->server)) || (!*source->server) || (source->GetExt(founder,dummyptr)) || (!IS_LOCAL(source))) + if ((ServerInstance->is_uline(source->nick)) || (ServerInstance->is_uline(source->server)) || (!*source->server) || (source->GetExt(founder,dummyptr)) || (!IS_LOCAL(source))) { if (adding) { @@ -343,7 +343,7 @@ class ModuleChanProtect : public Module // firstly, if a ulined nick, or a server, is setting the mode, then allow them to set the mode // without any access checks, we're not worthy :p - if ((ServerInstance->IsUlined(source->nick)) || (ServerInstance->IsUlined(source->server)) || (!strcmp(source->server,""))) + if ((ServerInstance->is_uline(source->nick)) || (ServerInstance->is_uline(source->server)) || (!*source->server)) { return ACR_ALLOW; } diff --git a/src/modules/m_chghost.cpp b/src/modules/m_chghost.cpp index 378c05ece..ac16f137e 100644 --- a/src/modules/m_chghost.cpp +++ b/src/modules/m_chghost.cpp @@ -60,7 +60,7 @@ class cmd_chghost : public command_t userrec* dest = ServerInstance->FindNick(parameters[0]); if (dest) { - if ((dest->ChangeDisplayedHost(parameters[1])) && (!ServerInstance->IsUlined(user->server))) + if ((dest->ChangeDisplayedHost(parameters[1])) && (!ServerInstance->is_uline(user->server))) { // fix by brain - ulines set hosts silently ServerInstance->WriteOpers(std::string(user->nick)+" used CHGHOST to make the displayed host of "+dest->nick+" become "+parameters[1]); diff --git a/src/modules/m_nokicks.cpp b/src/modules/m_nokicks.cpp index 654d40be8..656e5d0a8 100644 --- a/src/modules/m_nokicks.cpp +++ b/src/modules/m_nokicks.cpp @@ -86,7 +86,7 @@ class ModuleNoKicks : public Module { if (channel->IsModeSet('Q')) { - if ((ServerInstance->IsUlined(source->nick)) || (ServerInstance->IsUlined(source->server)) || (!strcmp(source->server,""))) + if ((ServerInstance->is_uline(source->nick)) || (ServerInstance->is_uline(source->server)) || (!*source->server)) { // ulines can still kick with +Q in place return ACR_ALLOW; diff --git a/src/modules/m_nonotice.cpp b/src/modules/m_nonotice.cpp index 1dcd34826..6f37640c2 100644 --- a/src/modules/m_nonotice.cpp +++ b/src/modules/m_nonotice.cpp @@ -81,7 +81,7 @@ class ModuleNoNotice : public Module chanrec* c = (chanrec*)dest; if (c->IsModeSet('T')) { - if ((ServerInstance->IsUlined(user->server)) || (c->GetStatus(user) == STATUS_OP) || (c->GetStatus(user) == STATUS_HOP)) + if ((ServerInstance->is_uline(user->server)) || (c->GetStatus(user) == STATUS_OP) || (c->GetStatus(user) == STATUS_HOP)) { // ops and halfops can still /NOTICE the channel return 0; diff --git a/src/modules/m_remove.cpp b/src/modules/m_remove.cpp index 492cd5bd0..18bddd015 100644 --- a/src/modules/m_remove.cpp +++ b/src/modules/m_remove.cpp @@ -109,7 +109,7 @@ class RemoveBase protectkey = "cm_protect_" + std::string(channel->name); founderkey = "cm_founder_" + std::string(channel->name); - if (is_uline(user->server) || is_uline(user->nick)) + if (ServerInstance->is_uline(user->server) || ServerInstance->is_uline(user->nick)) { ServerInstance->Log(DEBUG, "Setting ulevel to U"); ulevel = chartolevel("U"); @@ -131,7 +131,7 @@ class RemoveBase } /* Now it's the same idea, except for the target. If they're ulined make sure they get a higher level than the sender can */ - if (is_uline(target->server) || is_uline(target->nick)) + if (ServerInstance->is_uline(target->server) || ServerInstance->is_uline(target->nick)) { ServerInstance->Log(DEBUG, "Setting tlevel to U"); tlevel = chartolevel("U"); diff --git a/src/modules/m_sajoin.cpp b/src/modules/m_sajoin.cpp index c1112cab8..0d998abd9 100644 --- a/src/modules/m_sajoin.cpp +++ b/src/modules/m_sajoin.cpp @@ -43,7 +43,7 @@ class cmd_sajoin : public command_t userrec* dest = ServerInstance->FindNick(parameters[0]); if (dest) { - if (ServerInstance->IsUlined(dest->server)) + if (ServerInstance->is_uline(dest->server)) { user->WriteServ("990 %s :Cannot use an SA command on a u-lined client",user->nick); return; diff --git a/src/modules/m_sanick.cpp b/src/modules/m_sanick.cpp index 0d9167c26..5758bac64 100644 --- a/src/modules/m_sanick.cpp +++ b/src/modules/m_sanick.cpp @@ -42,7 +42,7 @@ class cmd_sanick : public command_t userrec* source = ServerInstance->FindNick(parameters[0]); if (source) { - if (ServerInstance->IsUlined(source->server)) + if (ServerInstance->is_uline(source->server)) { user->WriteServ("990 %s :Cannot use an SA command on a u-lined client",user->nick); return; diff --git a/src/modules/m_sapart.cpp b/src/modules/m_sapart.cpp index 43ab4b578..9d20ed638 100644 --- a/src/modules/m_sapart.cpp +++ b/src/modules/m_sapart.cpp @@ -44,7 +44,7 @@ class cmd_sapart : public command_t chanrec* channel = ServerInstance->FindChan(parameters[1]); if (dest && channel) { - if (ServerInstance->IsUlined(dest->server)) + if (ServerInstance->is_uline(dest->server)) { user->WriteServ("990 %s :Cannot use an SA command on a u-lined client",user->nick); return; diff --git a/src/modules/m_saquit.cpp b/src/modules/m_saquit.cpp index 395776230..0a6155b27 100644 --- a/src/modules/m_saquit.cpp +++ b/src/modules/m_saquit.cpp @@ -52,7 +52,7 @@ class cmd_saquit : public command_t userrec* dest = ServerInstance->FindNick(parameters[0]); if (dest) { - if (ServerInstance->IsUlined(dest->server)) + if (ServerInstance->is_uline(dest->server)) { user->WriteServ("990 %s :Cannot use an SA command on a u-lined client",user->nick); return; diff --git a/src/modules/m_services.cpp b/src/modules/m_services.cpp index 4500ecbfc..40e160a6c 100644 --- a/src/modules/m_services.cpp +++ b/src/modules/m_services.cpp @@ -41,7 +41,7 @@ class Channel_r : public ModeHandler ModeAction OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding) { // only a u-lined server may add or remove the +r mode. - if ((is_uline(source->nick)) || (is_uline(source->server)) || (!*source->server || (strchr(source->nick,'.')))) + if ((ServerInstance->is_uline(source->nick)) || (ServerInstance->is_uline(source->server)) || (!*source->server || (strchr(source->nick,'.')))) { ServerInstance->Log(DEBUG,"Allowing cmode +r, server and nick are: '%s','%s'",source->nick,source->server); channel->SetMode('r',adding); @@ -64,7 +64,7 @@ class User_r : public ModeHandler ModeAction OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding) { - if ((kludgeme) || (is_uline(source->nick)) || (is_uline(source->server)) || (!*source->server || (strchr(source->nick,'.')))) + if ((kludgeme) || (ServerInstance->is_uline(source->nick)) || (ServerInstance->is_uline(source->server)) || (!*source->server || (strchr(source->nick,'.')))) { ServerInstance->Log(DEBUG,"Allowing umode +r, server and nick are: '%s','%s'",source->nick,source->server); dest->SetMode('r',adding); @@ -230,7 +230,7 @@ class ModuleServices : public Module chanrec* c = (chanrec*)dest; if ((c->IsModeSet('M')) && (!user->IsModeSet('r'))) { - if ((is_uline(user->nick)) || (is_uline(user->server)) || (!strcmp(user->server,""))) + if ((ServerInstance->is_uline(user->nick)) || (ServerInstance->is_uline(user->server)) || (!strcmp(user->server,""))) { // user is ulined, can speak regardless return 0; @@ -245,7 +245,7 @@ class ModuleServices : public Module userrec* u = (userrec*)dest; if ((u->IsModeSet('R')) && (user->IsModeSet('r'))) { - if ((is_uline(user->nick)) || (is_uline(user->server))) + if ((ServerInstance->is_uline(user->nick)) || (ServerInstance->is_uline(user->server))) { // user is ulined, can speak regardless return 0; @@ -271,7 +271,7 @@ class ModuleServices : public Module { if (user->IsModeSet('r')) { - if ((is_uline(user->nick)) || (is_uline(user->server))) + if ((ServerInstance->is_uline(user->nick)) || (ServerInstance->is_uline(user->server))) { // user is ulined, won't be stopped from joining return 0; diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index efcf7629a..0d7ff4339 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -165,7 +165,7 @@ class ModuleServicesAccount : public Module if ((c->IsModeSet('M')) && (!account)) { - if ((ServerInstance->IsUlined(user->nick)) || (ServerInstance->IsUlined(user->server)) || (!strcmp(user->server,""))) + if ((ServerInstance->is_uline(user->nick)) || (ServerInstance->is_uline(user->server)) || (!strcmp(user->server,""))) { // user is ulined, can speak regardless return 0; @@ -182,7 +182,7 @@ class ModuleServicesAccount : public Module if ((u->modes['R'-65]) && (!account)) { - if ((ServerInstance->IsUlined(user->nick)) || (ServerInstance->IsUlined(user->server))) + if ((ServerInstance->is_uline(user->nick)) || (ServerInstance->is_uline(user->server))) { // user is ulined, can speak regardless return 0; @@ -212,7 +212,7 @@ class ModuleServicesAccount : public Module { if (!account) { - if ((ServerInstance->IsUlined(user->nick)) || (ServerInstance->IsUlined(user->server))) + if ((ServerInstance->is_uline(user->nick)) || (ServerInstance->is_uline(user->server))) { // user is ulined, won't be stopped from joining return 0; diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp index c94f43ed0..b9e15143d 100644 --- a/src/modules/m_spanningtree.cpp +++ b/src/modules/m_spanningtree.cpp @@ -1159,7 +1159,7 @@ class TreeSocket : public InspSocket } else /* U-lined servers always win regardless of their TS */ - if ((TS > ourTS) && (!this->Instance->IsUlined(source))) + if ((TS > ourTS) && (!this->Instance->is_uline(source.c_str()))) { /* Bounce the mode back to its sender.* We use our lower TS, so the other end * SHOULD accept it, if its clock is right. @@ -1272,7 +1272,7 @@ class TreeSocket : public InspSocket /* The server was ulined, but something iffy is up with the TS. * Sound the alarm bells! */ - if ((this->Instance->IsUlined(sourceserv)) && (TS > ourTS)) + if ((this->Instance->is_uline(sourceserv.c_str())) && (TS > ourTS)) { this->Instance->WriteOpers("\2WARNING!\2 U-Lined server '%s' has bad TS for '%s' (accepted change): \2SYNC YOUR CLOCKS\2 to avoid this notice",sourceserv.c_str(),params[0].c_str()); } @@ -1416,7 +1416,7 @@ class TreeSocket : public InspSocket /* theres a mode for this user. push them onto the mode queue, and flush it * if there are more than MAXMODES to go. */ - if ((ourTS >= TS) || (this->Instance->IsUlined(who->server))) + if ((ourTS >= TS) || (this->Instance->is_uline(who->server))) { /* We also always let u-lined clients win, no matter what the TS value */ ServerInstance->Log(DEBUG,"Our our channel newer than theirs, accepting their modes"); @@ -3427,7 +3427,7 @@ class ModuleSpanningTree : public Module } for (unsigned int q = 0; q < Current->ChildCount(); q++) { - if ((HideULines) && (ServerInstance->IsUlined(Current->GetChild(q)->GetName()))) + if ((HideULines) && (ServerInstance->is_uline(Current->GetChild(q)->GetName().c_str()))) { if (*user->oper) { @@ -3440,7 +3440,7 @@ class ModuleSpanningTree : public Module } } /* Don't display the line if its a uline, hide ulines is on, and the user isnt an oper */ - if ((HideULines) && (ServerInstance->IsUlined(Current->GetName())) && (!*user->oper)) + if ((HideULines) && (ServerInstance->is_uline(Current->GetName().c_str())) && (!*user->oper)) return; user->WriteServ("364 %s %s %s :%d %s",user->nick,Current->GetName().c_str(),(FlatLinks && (!*user->oper)) ? ServerInstance->Config->ServerName : Parent.c_str(),(FlatLinks && (!*user->oper)) ? 0 : hops,Current->GetDesc().c_str()); } @@ -3526,7 +3526,7 @@ class ModuleSpanningTree : public Module line++; for (unsigned int q = 0; q < Current->ChildCount(); q++) { - if ((HideULines) && (ServerInstance->IsUlined(Current->GetChild(q)->GetName()))) + if ((HideULines) && (ServerInstance->is_uline(Current->GetChild(q)->GetName().c_str()))) { if (*user->oper) { diff --git a/src/modules/m_swhois.cpp b/src/modules/m_swhois.cpp index 741031561..f06a41194 100644 --- a/src/modules/m_swhois.cpp +++ b/src/modules/m_swhois.cpp @@ -55,14 +55,14 @@ class cmd_swhois : public command_t { // We already had it set... - if (!ServerInstance->IsUlined(user->server)) + if (!ServerInstance->is_uline(user->server)) // Ulines set SWHOISes silently ServerInstance->WriteOpers("*** %s used SWHOIS to set %s's extra whois from '%s' to '%s'", user->nick, dest->nick, text->c_str(), line.c_str()); dest->Shrink("swhois"); DELETE(text); } - else if(!ServerInstance->IsUlined(user->server)) + else if(!ServerInstance->is_uline(user->server)) { // Ulines set SWHOISes silently ServerInstance->WriteOpers("*** %s used SWHOIS to set %s's extra whois to '%s'", user->nick, dest->nick, line.c_str()); diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp index a063ce12d..dc5f8f977 100644 --- a/src/modules/m_timedbans.cpp +++ b/src/modules/m_timedbans.cpp @@ -74,14 +74,14 @@ class cmd_tban : public command_t } TimedBan T; std::string channelname = parameters[0]; - unsigned long expire = ServerInstance->CalcDuration(parameters[1]) + time(NULL); - if (ServerInstance->CalcDuration(parameters[1]) < 1) + unsigned long expire = ServerInstance->duration(parameters[1]) + time(NULL); + if (ServerInstance->duration(parameters[1]) < 1) { user->WriteServ("NOTICE "+std::string(user->nick)+" :Invalid ban time"); return; } char duration[MAXBUF]; - snprintf(duration,MAXBUF,"%lu",ServerInstance->CalcDuration(parameters[1])); + snprintf(duration,MAXBUF,"%lu",ServerInstance->duration(parameters[1])); std::string mask = parameters[2]; const char *setban[32]; setban[0] = parameters[0]; |