]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_gline.cpp
Refactor port binding, warning not yet tested fully
[user/henk/code/inspircd.git] / src / cmd_gline.cpp
index f2b3b02a6c2d75202483e536debc39b40ace5feb..98f088c8ba61de4e2720704a5d1d225897abd5f5 100644 (file)
@@ -36,21 +36,31 @@ CmdResult cmd_gline::Handle (const char** parameters, int pcnt, userrec *user)
                        user->WriteServ("NOTICE %s :*** G-Line must contain a username, e.g. *@%s",user->nick,parameters[0]);
                        return CMD_FAILURE;
                }
+               else if (strchr(parameters[0],'!'))
+               {
+                       user->WriteServ("NOTICE %s :*** G-Line cannot contain a nickname!",user->nick);
+                       return CMD_FAILURE;
+               }
 
                if (ServerInstance->XLines->add_gline(ServerInstance->Duration(parameters[1]),user->nick,parameters[2],parameters[0]))
                {
+                       int to_apply = APPLY_GLINES;
+
                        FOREACH_MOD(I_OnAddGLine,OnAddGLine(ServerInstance->Duration(parameters[1]), user, parameters[2], parameters[0]));
 
                        if (!ServerInstance->Duration(parameters[1]))
                        {
                                ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent G-line for %s.",user->nick,parameters[0]);
+                               to_apply |= APPLY_PERM_ONLY;
                        }
                        else
                        {
-                               ServerInstance->SNO->WriteToSnoMask('x',"%s added timed G-line for %s, expires in %d seconds.",user->nick,parameters[0],ServerInstance->Duration(parameters[1]));
+                               time_t c_requires_crap = ServerInstance->Duration(parameters[1]) + ServerInstance->Time();
+                               ServerInstance->SNO->WriteToSnoMask('x',"%s added timed G-line for %s, expires on %s",user->nick,parameters[0],
+                                               ServerInstance->TimeString(c_requires_crap).c_str());
                        }
 
-                       ServerInstance->XLines->apply_lines(APPLY_GLINES);
+                       ServerInstance->XLines->apply_lines(to_apply);
                }
                else
                {