summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/inspircd.conf.example7
-rw-r--r--include/channels.h2
-rw-r--r--include/configreader.h5
-rw-r--r--src/cmd_topic.cpp6
-rw-r--r--src/configreader.cpp1
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp2
6 files changed, 19 insertions, 4 deletions
diff --git a/docs/inspircd.conf.example b/docs/inspircd.conf.example
index c0ad163d5..202e4a8d1 100644
--- a/docs/inspircd.conf.example
+++ b/docs/inspircd.conf.example
@@ -769,7 +769,7 @@
# NOTICE and PRIVMSG adding the prefix to the line #
# of text sent out. Eg. NOTICE @#test :@ testing #
# vs off: NOTICE @#test :testing #
-#
+# #
# notimesync - If this value is 'yes', 'true', or '1', time #
# synchronization is disabled on this server. This #
# means any servers you are linked to will not #
@@ -778,6 +778,10 @@
# on netsplits. This option should be the same on #
# all servers. #
# #
+# hostintopic - If this is set to yes (the default) then the full #
+# nick!user@host is shown for who set a TOPIC last. #
+# if set to no, then only the nickname is shown. #
+# #
<options prefixquit="Quit: "
loglevel="default"
@@ -803,6 +807,7 @@
ircumsgprefix="no"
announcets="yes"
notimesync="no"
+ hostintopic="yes"
allowhalfop="yes">
#-#-#-#-#-#-#-#-#-#-#-#-#- WHOWAS OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#
diff --git a/include/channels.h b/include/channels.h
index 17e7364a4..7daab2167 100644
--- a/include/channels.h
+++ b/include/channels.h
@@ -178,7 +178,7 @@ class chanrec : public Extensible
/** The last user to set the topic.
* If this member is an empty string, no topic was ever set.
*/
- char setby[NICKMAX];
+ char setby[128];
/** Contains the channel user limit.
* If this value is zero, there is no limit in place.
diff --git a/include/configreader.h b/include/configreader.h
index 5e8c62e06..61cf887fa 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -503,6 +503,11 @@ class ServerConfig : public Extensible
*/
bool UndernetMsgPrefix;
+ /** If set to true, the full nick!user@host will be shown in the TOPIC command
+ * for who set the topic last. If false, only the nick is shown.
+ */
+ bool FullHostInTopic;
+
/** All oper type definitions from the config file
*/
opertype_t opertypes;
diff --git a/src/cmd_topic.cpp b/src/cmd_topic.cpp
index f9abaa309..dfd03a651 100644
--- a/src/cmd_topic.cpp
+++ b/src/cmd_topic.cpp
@@ -95,7 +95,11 @@ CmdResult cmd_topic::Handle (const char** parameters, int pcnt, userrec *user)
strlcpy(Ptr->topic, parameters[1], MAXTOPIC-1);
}
- strlcpy(Ptr->setby,user->nick,NICKMAX-1);
+ if (ServerInstance->Config->FullHostInTopic)
+ strlcpy(Ptr->setby,user->GetFullHost(),127);
+ else
+ strlcpy(Ptr->setby,user->nick,127);
+
Ptr->topicset = ServerInstance->Time();
Ptr->WriteChannel(user, "TOPIC %s :%s", Ptr->name, Ptr->topic);
diff --git a/src/configreader.cpp b/src/configreader.cpp
index 3060b9866..feb55b293 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -588,6 +588,7 @@ void ServerConfig::Read(bool bail, userrec* user)
{"options", "syntaxhints", "0", new ValueContainerBool (&this->SyntaxHints), DT_BOOLEAN, NoValidation},
{"options", "cyclehosts", "0", new ValueContainerBool (&this->CycleHosts), DT_BOOLEAN, NoValidation},
{"options", "ircumsgprefix","0", new ValueContainerBool (&this->UndernetMsgPrefix), DT_BOOLEAN, NoValidation},
+ {"options", "hostintopic", "1", new ValueContainerBool (&this->FullHostInTopic), DT_BOOLEAN, NoValidation},
{"pid", "file", "", new ValueContainerChar (this->PID), DT_CHARPTR, NoValidation},
{"whowas", "groupsize", "10", new ValueContainerInt (&this->WhoWasGroupSize), DT_INTEGER, NoValidation},
{"whowas", "maxgroups", "10240", new ValueContainerInt (&this->WhoWasMaxGroups), DT_INTEGER, NoValidation},
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index 1e25a2fff..c17f8d0f6 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -797,7 +797,7 @@ bool TreeSocket::ForceTopic(const std::string &source, std::deque<std::string> &
{
std::string oldtopic = c->topic;
strlcpy(c->topic,params[3].c_str(),MAXTOPIC);
- strlcpy(c->setby,params[2].c_str(),NICKMAX-1);
+ strlcpy(c->setby,params[2].c_str(),127);
c->topicset = ts;
/* if the topic text is the same as the current topic,
* dont bother to send the TOPIC command out, just silently