summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/channels.h6
-rw-r--r--include/parammode.h1
-rw-r--r--src/channels.cpp6
-rw-r--r--src/coremods/core_channel/cmode_k.cpp5
-rw-r--r--src/coremods/core_channel/core_channel.h1
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