diff options
-rw-r--r-- | include/channels.h | 6 | ||||
-rw-r--r-- | include/parammode.h | 1 | ||||
-rw-r--r-- | src/channels.cpp | 6 | ||||
-rw-r--r-- | src/coremods/core_channel/cmode_k.cpp | 5 | ||||
-rw-r--r-- | src/coremods/core_channel/core_channel.h | 1 |
5 files changed, 13 insertions, 6 deletions
diff --git a/include/channels.h b/include/channels.h index 22a373a0f..d346db8ef 100644 --- a/include/channels.h +++ b/include/channels.h @@ -248,11 +248,11 @@ class CoreExport Channel : public Extensible void Write(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg, char status = 0, const CUList& except_list = CUList()); /** Return the channel's modes with parameters. - * @param showkey If this is set to true, the actual key is shown, - * otherwise it is replaced with '<KEY>' + * @param showsecret If this is set to true, the value of secret parameters + * are shown, otherwise they are replaced with '<name>'. * @return The channel mode string */ - const char* ChanModes(bool showkey); + const char* ChanModes(bool showsecret); /** Get the value of a users prefix on this channel. * @param user The user to look up diff --git a/include/parammode.h b/include/parammode.h index c79d11b6b..313981185 100644 --- a/include/parammode.h +++ b/include/parammode.h @@ -31,6 +31,7 @@ class CoreExport ParamModeBase : public ModeHandler ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE; // Does nothing by default + virtual bool IsParameterSecret() { return false; } virtual void OnUnset(User* source, Channel* chan) { } virtual ModeAction OnSet(User* source, Channel* chan, std::string& param) = 0; virtual void GetParameter(Channel* chan, std::string& out) = 0; diff --git a/src/channels.cpp b/src/channels.cpp index e5fd7265e..760b5c4bd 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -436,7 +436,7 @@ void Channel::Write(ClientProtocol::Event& protoev, char status, const CUList& e } } -const char* Channel::ChanModes(bool showkey) +const char* Channel::ChanModes(bool showsecret) { static std::string scratch; std::string sparam; @@ -455,9 +455,9 @@ const char* Channel::ChanModes(bool showkey) if (!pm) continue; - if (n == 'k' - 65 && !showkey) + if (pm->IsParameterSecret() && !showsecret) { - sparam += " <key>"; + sparam += " <" + pm->name + ">"; } else { diff --git a/src/coremods/core_channel/cmode_k.cpp b/src/coremods/core_channel/cmode_k.cpp index 4fc29e04c..acb6813be 100644 --- a/src/coremods/core_channel/cmode_k.cpp +++ b/src/coremods/core_channel/cmode_k.cpp @@ -87,3 +87,8 @@ ModeAction ModeChannelKey::OnSet(User* source, Channel* chan, std::string& param // Dummy function, never called return MODEACTION_DENY; } + +bool ModeChannelKey::IsParameterSecret() +{ + return true; +}
\ No newline at end of file diff --git a/src/coremods/core_channel/core_channel.h b/src/coremods/core_channel/core_channel.h index 6e11275df..096db8c0d 100644 --- a/src/coremods/core_channel/core_channel.h +++ b/src/coremods/core_channel/core_channel.h @@ -179,6 +179,7 @@ class ModeChannelKey : public ParamMode<ModeChannelKey, LocalStringExt> ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE; void SerializeParam(Channel* chan, const std::string* key, std::string& out) ; ModeAction OnSet(User* source, Channel* chan, std::string& param) CXX11_OVERRIDE; + bool IsParameterSecret() CXX11_OVERRIDE; }; /** Channel mode +l |