X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_services_account.cpp;h=e97e1b02f82c60a2d8de790e8097051ae210256d;hb=f471083cd0519d47c7c7a09029813ede41994f7b;hp=1af06846ede773cc8555bc4e3b3b5ab0c818ee87;hpb=04eb0e182dec8518d1dfd15a09b8054d1501a4ef;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index 1af06846e..e97e1b02f 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -46,7 +46,7 @@ class Channel_r : public ModeHandler } else { - source->WriteNumeric(500, ":Only a server may modify the +r channel mode"); + source->WriteNumeric(500, "Only a server may modify the +r channel mode"); } return MODEACTION_DENY; } @@ -72,7 +72,7 @@ class User_r : public ModeHandler } else { - source->WriteNumeric(500, ":Only a server may modify the +r user mode"); + source->WriteNumeric(500, "Only a server may modify the +r user mode"); } return MODEACTION_DENY; } @@ -118,13 +118,17 @@ class AccountExtItemImpl : public AccountExtItem User* user = static_cast(container); StringExtItem::unserialize(format, container, value); + + // If we are being reloaded then don't send the numeric or run the event + if (format == FORMAT_INTERNAL) + return; + if (!value.empty()) { // Logged in if (IS_LOCAL(user)) { - user->WriteNumeric(900, "%s %s :You are now logged in as %s", - user->GetFullHost().c_str(), value.c_str(), value.c_str()); + user->WriteNumeric(900, user->GetFullHost(), value, InspIRCd::Format("You are now logged in as %s", value.c_str())); } } // If value is empty then logged out @@ -133,7 +137,7 @@ class AccountExtItemImpl : public AccountExtItem } }; -class ModuleServicesAccount : public Module +class ModuleServicesAccount : public Module, public Whois::EventListener { AChannel_R m1; AChannel_M m2; @@ -143,8 +147,10 @@ class ModuleServicesAccount : public Module AccountExtItemImpl accountname; bool checking_ban; public: - ModuleServicesAccount() : m1(this), m2(this), m3(this), m4(this), m5(this), - accountname(this) + ModuleServicesAccount() + : Whois::EventListener(this) + , m1(this), m2(this), m3(this), m4(this), m5(this) + , accountname(this) , checking_ban(false) { } @@ -156,26 +162,26 @@ class ModuleServicesAccount : public Module } /* <- :twisted.oscnet.org 330 w00t2 w00t2 w00t :is logged in as */ - void OnWhois(User* source, User* dest) CXX11_OVERRIDE + void OnWhois(Whois::Context& whois) CXX11_OVERRIDE { - std::string *account = accountname.get(dest); + std::string* account = accountname.get(whois.GetTarget()); if (account) { - ServerInstance->SendWhoisLine(source, dest, 330, "%s :is logged in as", account->c_str()); + whois.SendLine(330, *account, "is logged in as"); } - if (dest->IsModeSet(m5)) + if (whois.GetTarget()->IsModeSet(m5)) { /* user is registered */ - ServerInstance->SendWhoisLine(source, dest, 307, ":is a registered nick"); + whois.SendLine(307, "is a registered nick"); } } void OnUserPostNick(User* user, const std::string &oldnick) CXX11_OVERRIDE { /* On nickchange, if they have +r, remove it */ - if (user->IsModeSet(m5) && assign(user->nick) != oldnick) + if ((user->IsModeSet(m5)) && (ServerInstance->FindNickOnly(oldnick) != user)) m5.RemoveMode(user); } @@ -195,7 +201,7 @@ class ModuleServicesAccount : public Module if (c->IsModeSet(m2) && !is_registered && res != MOD_RES_ALLOW) { // user messaging a +M channel and is not registered - user->WriteNumeric(477, c->name+" :You need to be identified to a registered account to message this channel"); + user->WriteNumeric(477, c->name, "You need to be identified to a registered account to message this channel"); return MOD_RES_DENY; } } @@ -206,7 +212,7 @@ class ModuleServicesAccount : public Module if (u->IsModeSet(m3) && !is_registered) { // user messaging a +R user and is not registered - user->WriteNumeric(477, u->nick +" :You need to be identified to a registered account to message this user"); + user->WriteNumeric(477, u->nick, "You need to be identified to a registered account to message this user"); return MOD_RES_DENY; } } @@ -261,7 +267,7 @@ class ModuleServicesAccount : public Module if (!is_registered) { // joining a +R channel and not identified - user->WriteNumeric(477, chan->name + " :You need to be identified to a registered account to join this channel"); + user->WriteNumeric(477, chan->name, "You need to be identified to a registered account to join this channel"); return MOD_RES_DENY; } }