X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_permchannels.cpp;h=ae69ecc4ff3f0e75a1daedef8bc39ac82c21503f;hb=117742632909d9bfd71fc4feb3304263558101b7;hp=6a5373009f8c14c8f9f4ff3c0b8bf26bec372f71;hpb=7646da6fc4a9c44f13d2960a97c8b1005d0378de;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_permchannels.cpp b/src/modules/m_permchannels.cpp index 6a5373009..ae69ecc4f 100644 --- a/src/modules/m_permchannels.cpp +++ b/src/modules/m_permchannels.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team + * InspIRCd: (C) 2002-2009 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see @@ -25,6 +25,12 @@ class PermChannel : public ModeHandler ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding, bool sm) { + if (!source->HasPrivPermission("channels/set-permanent")) + { + source->WriteNumeric(ERR_NOPRIVILEGES, "%s :Permission Denied - You do not have the required operator privileges", source->nick.c_str()); + return MODEACTION_DENY; + } + if (adding) { if (!channel->IsModeSet('P')) @@ -107,9 +113,9 @@ public: std::string topic = MyConf.ReadValue("permchannels", "topic", i); std::string modes = MyConf.ReadValue("permchannels", "modes", i); - if (channel.empty() || topic.empty()) + if (channel.empty()) { - ServerInstance->Logs->Log("blah", DEBUG, "Malformed permchannels tag with empty topic or channel name."); + ServerInstance->Logs->Log("blah", DEBUG, "Malformed permchannels tag with empty channel name."); continue; } @@ -118,7 +124,8 @@ public: if (!c) { c = new Channel(ServerInstance, channel, ServerInstance->Time()); - c->SetTopic(NULL, topic, true); + if (!topic.empty()) + c->SetTopic(NULL, topic, true); ServerInstance->Logs->Log("blah", DEBUG, "Added %s with topic %s", channel.c_str(), topic.c_str()); if (modes.empty())