]> jfr.im git - irc/rizon/plexus4.git/commitdiff
m_capture: refactor and apply oper check locally
authorAdam <redacted>
Sun, 31 Jul 2016 19:31:52 +0000 (15:31 -0400)
committerAdam <redacted>
Sun, 31 Jul 2016 19:31:52 +0000 (15:31 -0400)
modules/m_capture.c

index 7e1972a266d69c742be569b2b1f1c464d4cd91d1..30d16ebd4839264dca1d91cc135937ef297b301e 100644 (file)
@@ -84,35 +84,42 @@ m_capture(struct Client *client_p, struct Client *source_p, int parc, char *parv
 
   if((p = strchr(parv[1], '@')) == NULL)
   {
-    if((target_p = find_person(client_p, parv[1])) != NULL)
+    target_p = find_person(client_p, parv[1]);
+    if (target_p == NULL)
     {
-      if(MyConnect(target_p))
-      {
-        if(HasUMode(target_p, UMODE_OPER))
-        {
-          sendto_one(source_p, form_str(ERR_NOPRIVS),
-               me.name, source_p->name, "CAPTURE");
-          return;
-        }
-
-        if (!IsCapturedLevel(target_p, type))
-        {
-          sendto_snomask(SNO_ALL, L_ALL,
-                         "Captured %s (%s@%s) [%s] type: %s", target_p->name,
-                         target_p->username, target_p->realhost, target_p->info, level);
-          SetCapturedLevel(target_p, type);
-        }
+      sendto_one(source_p, form_str(ERR_NOSUCHNICK),
+           me.name, source_p->name, parv[1]);
+      return;
+    }
 
-        sendto_one(source_p, form_str(RPL_ISCAPTURED),
-             me.name, source_p->name, target_p->name);
+    if (MyClient(source_p))
+    {
+      if (HasUMode(target_p, UMODE_OPER))
+      {
+        sendto_one(source_p, form_str(ERR_NOPRIVS),
+             me.name, source_p->name, "CAPTURE");
+        return;
       }
-      else if (target_p->from != client_p)
+    }
+
+    if (!MyClient(target_p))
+    {
+      if (target_p->from != client_p)
         sendto_one(target_p, ":%s CAPTURE %s %s",
                    ID_or_name(source_p, target_p), ID_or_name(target_p, target_p), level);
+      return;
     }
-    else
-      sendto_one(source_p, form_str(ERR_NOSUCHNICK),
-           me.name, source_p->name, parv[1]);
+
+    if (!IsCapturedLevel(target_p, type))
+    {
+      sendto_snomask(SNO_ALL, L_ALL,
+                     "Captured %s (%s@%s) [%s] type: %s", target_p->name,
+                     target_p->username, target_p->realhost, target_p->info, level);
+      SetCapturedLevel(target_p, type);
+    }
+
+    sendto_one(source_p, form_str(RPL_ISCAPTURED),
+         me.name, source_p->name, target_p->name);
   }
   else
   {