diff options
-rw-r--r-- | conf/inspircd.conf.example | 6 | ||||
-rw-r--r-- | include/configreader.h | 6 | ||||
-rw-r--r-- | src/commands/cmd_whois.cpp | 5 | ||||
-rw-r--r-- | src/configreader.cpp | 5 |
4 files changed, 19 insertions, 3 deletions
diff --git a/conf/inspircd.conf.example b/conf/inspircd.conf.example index 8e76dfbc4..ca218c4a1 100644 --- a/conf/inspircd.conf.example +++ b/conf/inspircd.conf.example @@ -545,6 +545,12 @@ # banned on. restrictbannedusers="yes" + # genericoper: Setting this value makes all opers on this server + # appear as 'is an IRC operator' in their WHOIS, regardless of their + # oper type, however oper types are still used internally. This only + # affects the display in WHOIS. + genericoper="no" + # userstats: /stats commands that users can run (opers can run all). userstats="Pu"> diff --git a/include/configreader.h b/include/configreader.h index 0b05262b4..02defab63 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -565,6 +565,12 @@ class CoreExport ServerConfig : public Extensible */ bool writelog; + /** If set to true, then all opers on this server are + * shown with a generic 'is an IRC operator' line rather + * than the oper type. Oper types are still used internally. + */ + bool GenericOper; + /** If this value is true, banned users (+b, not extbans) will not be able to change nick * if banned on any channel, nor to message them. */ diff --git a/src/commands/cmd_whois.cpp b/src/commands/cmd_whois.cpp index d732bd771..1b07bc3b1 100644 --- a/src/commands/cmd_whois.cpp +++ b/src/commands/cmd_whois.cpp @@ -61,7 +61,10 @@ void do_whois(InspIRCd* ServerInstance, User* user, User* dest,unsigned long sig if (IS_OPER(dest)) { - ServerInstance->SendWhoisLine(user, dest, 313, "%s %s :is %s %s on %s",user->nick.c_str(), dest->nick.c_str(), (strchr("AEIOUaeiou",dest->oper[0]) ? "an" : "a"),irc::Spacify(dest->oper.c_str()), ServerInstance->Config->Network); + if (ServerInstance->Config->GenericOper) + ServerInstance->SendWhoisLine(user, dest, 313, "%s %s :is an IRC operator",user->nick.c_str(), dest->nick.c_str()); + else + ServerInstance->SendWhoisLine(user, dest, 313, "%s %s :is %s %s on %s",user->nick.c_str(), dest->nick.c_str(), (strchr("AEIOUaeiou",dest->oper[0]) ? "an" : "a"),irc::Spacify(dest->oper.c_str()), ServerInstance->Config->Network); } if (user == dest || user->HasPrivPermission("users/auspex")) diff --git a/src/configreader.cpp b/src/configreader.cpp index 0c9510553..e7613ce5a 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -823,7 +823,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) {"disabled", "commands", "", new ValueContainerChar (this->DisabledCommands), DT_CHARPTR, NoValidation}, {"disabled", "usermodes", "", new ValueContainerChar (disabledumodes), DT_CHARPTR, ValidateDisabledUModes}, {"disabled", "chanmodes", "", new ValueContainerChar (disabledcmodes), DT_CHARPTR, ValidateDisabledCModes}, - {"disabled", "fakenonexistant", "0", new ValueContainerBool (&this->DisabledDontExist), DT_BOOLEAN, NoValidation}, + {"disabled", "fakenonexistant", "0", new ValueContainerBool (&this->DisabledDontExist), DT_BOOLEAN, NoValidation}, {"security", "runasuser", "", new ValueContainerChar(this->SetUser), DT_CHARPTR, NoValidation}, {"security", "runasgroup", "", new ValueContainerChar(this->SetGroup), DT_CHARPTR, NoValidation}, @@ -834,7 +834,8 @@ void ServerConfig::Read(bool bail, const std::string &useruid) {"security", "hidewhois", "", new ValueContainerChar (this->HideWhoisServer), DT_NOSPACES, NoValidation}, {"security", "hidekills", "", new ValueContainerChar (this->HideKillsServer), DT_NOSPACES, NoValidation}, {"security", "operspywhois", "0", new ValueContainerBool (&this->OperSpyWhois), DT_BOOLEAN, NoValidation}, - {"security", "restrictbannedusers", "1", new ValueContainerBool (&this->RestrictBannedUsers), DT_BOOLEAN, NoValidation}, + {"security", "restrictbannedusers", "1", new ValueContainerBool (&this->RestrictBannedUsers), DT_BOOLEAN, NoValidation}, + {"security", "genericoper", "0", new ValueContainerBool (&this->GenericOper), DT_BOOLEAN, NoValidation}, {"performance", "nouserdns", "0", new ValueContainerBool (&this->NoUserDns), DT_BOOLEAN, NoValidation}, {"options", "syntaxhints", "0", new ValueContainerBool (&this->SyntaxHints), DT_BOOLEAN, NoValidation}, {"options", "cyclehosts", "0", new ValueContainerBool (&this->CycleHosts), DT_BOOLEAN, NoValidation}, |