X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_services_account.cpp;h=cff0d7698f236165e4f5543cd3566cdc0c39136f;hb=78fa4165c90088523e623ab2b64ca0db0d19def0;hp=b5024e4df1dfa2680ee38bc3811a4e0325fd7127;hpb=67878d628c15f2adec41b6d3b266830a636c2ed0;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index b5024e4df..cff0d7698 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -11,11 +11,11 @@ * --------------------------------------------------- */ +#include "inspircd.h" #include "users.h" #include "channels.h" #include "modules.h" #include "hashcomp.h" -#include "inspircd.h" /* $ModDesc: Povides support for ircu-style services accounts, including chmode +R, etc. */ @@ -116,7 +116,7 @@ class ModuleServicesAccount : public Module AChannel_M* m2; AUser_R* m3; public: - ModuleServicesAccount(InspIRCd* Me) : Module::Module(Me) + ModuleServicesAccount(InspIRCd* Me) : Module(Me) { m1 = new AChannel_R(ServerInstance); @@ -147,6 +147,10 @@ class ModuleServicesAccount : public Module virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { std::string *account; + + if (!IS_LOCAL(user)) + return 0; + user->GetExt("accountname", account); if (target_type == TYPE_CHANNEL) @@ -155,7 +159,7 @@ class ModuleServicesAccount : public Module if ((c->IsModeSet('M')) && (!account)) { - if ((ServerInstance->ULine(user->nick)) || (ServerInstance->ULine(user->server)) || (!strcmp(user->server,""))) + if ((ServerInstance->ULine(user->nick)) || (ServerInstance->ULine(user->server))) { // user is ulined, can speak regardless return 0; @@ -221,7 +225,7 @@ class ModuleServicesAccount : public Module // this method is called. We should use the ProtoSendMetaData function after we've // corrected decided how the data should look, to send the metadata on its way if // it is ours. - virtual void OnSyncUserMetaData(userrec* user, Module* proto, void* opaque, const std::string &extname) + virtual void OnSyncUserMetaData(userrec* user, Module* proto, void* opaque, const std::string &extname, bool displayable) { // check if the linking module wants to know about OUR metadata if (extname == "accountname") @@ -231,6 +235,9 @@ class ModuleServicesAccount : public Module user->GetExt("accountname", account); if (account) { + // remove any accidental leading/trailing spaces + trim(*account); + // call this function in the linking module, let it format the data how it // sees fit, and send it on its way. We dont need or want to know how. proto->ProtoSendMetaData(opaque,TYPE_USER,user,extname,*account); @@ -239,7 +246,7 @@ class ModuleServicesAccount : public Module } // when a user quits, tidy up their metadata - virtual void OnUserQuit(userrec* user, const std::string &message) + virtual void OnUserQuit(userrec* user, const std::string &message, const std::string &oper_message) { std::string* account; user->GetExt("accountname", account); @@ -279,8 +286,9 @@ class ModuleServicesAccount : public Module if ((target_type == TYPE_USER) && (extname == "accountname")) { userrec* dest = (userrec*)target; + /* logging them out? */ - if (extdata == "") + if (extdata.empty()) { std::string* account; dest->GetExt("accountname", account); @@ -297,6 +305,8 @@ class ModuleServicesAccount : public Module if (!dest->GetExt("accountname", text)) { text = new std::string(extdata); + // remove any accidental leading/trailing spaces + trim(*text); dest->Extend("accountname", text); } } @@ -319,27 +329,4 @@ class ModuleServicesAccount : public Module } }; - -class ModuleServicesAccountFactory : public ModuleFactory -{ - public: - ModuleServicesAccountFactory() - { - } - - ~ModuleServicesAccountFactory() - { - } - - virtual Module * CreateModule(InspIRCd* Me) - { - return new ModuleServicesAccount(Me); - } - -}; - - -extern "C" void * init_module( void ) -{ - return new ModuleServicesAccountFactory; -} +MODULE_INIT(ModuleServicesAccount)