From b111eec597349ad2dc7d4b54945097df813535b4 Mon Sep 17 00:00:00 2001 From: brain Date: Sun, 11 Feb 2007 18:50:04 +0000 Subject: [PATCH] Allow for nick!user@host in TOPIC information. Note that this adds another tag value, 'hostintopic'. (defaults to yes) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6572 e03df62e-2008-0410-955e-edbf42e46eb7 --- docs/inspircd.conf.example | 7 ++++++- include/channels.h | 2 +- include/configreader.h | 5 +++++ src/cmd_topic.cpp | 6 +++++- src/configreader.cpp | 1 + src/modules/m_spanningtree/treesocket1.cpp | 2 +- 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. # +# # #-#-#-#-#-#-#-#-#-#-#-#-#- 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 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 -- 2.39.5