]> jfr.im git - irc/quakenet/newserv.git/blobdiff - noperserv/noperserv.c
fix indentation
[irc/quakenet/newserv.git] / noperserv / noperserv.c
index f473485af2e0fe67f5b886d386a9fdbaa86d70ff..bec345de7c4244179bc3848676d178fb3f5b461e 100644 (file)
@@ -10,6 +10,7 @@
 #include "../lib/irc_string.h"
 #include "../lib/strlfunc.h"
 #include "../lib/version.h"
+#include "../authext/authext.h"
 #include "noperserv.h"
 #include "noperserv_db.h"
 #include "noperserv_hooks.h"
@@ -73,7 +74,7 @@ int noperserv_noticeflags(void *sender, int cargc, char **cargv);
 int noperserv_userflags(void *sender, int cargc, char **cargv);
 int noperserv_deluser(void *sender, int cargc, char **cargv);
 void noperserv_oper_detection(int hooknum, void *arg);
-void noperserv_reply(nick *np, char *format, ...);
+void noperserv_reply(nick *np, char *format, ...) __attribute__ ((format (printf, 2, 3)));
 
 int init = 0;
 
@@ -143,6 +144,8 @@ void _fini() {
   deregistercontrolcmd("noticeflags", &noperserv_noticeflags);
   deregistercontrolcmd("userflags", &noperserv_userflags);
   deregistercontrolcmd("noticeflags", &noperserv_noticeflags);
+  deregistercontrolcmd("hello", &noperserv_hello);
+  deregistercontrolcmd("deluser", &noperserv_deluser);
 
   noperserv_cleanup_hooks();
 
@@ -162,18 +165,12 @@ int noperserv_hello(void *sender, int cargc, char **cargv) {
     newaccount = np->authname;
   } else {
     if(cargv[0][0] == '#') {
-      nick *np2;
-      for(i=0;i<NICKHASHSIZE;i++)
-        for(np2=nicktable[i];np2;np2=np2->next)
-          if(IsAccount(np2) && !ircd_strcmp(cargv[0] + 1, np2->authname)) {
-            target = np2;
-            newaccount = target->authname;
-            break;
-          }
-      if(!target) {
+      authname *a = getauthbyname(cargv[0] + 1);
+      if(!a) {
         controlreply(np, "Cannot find anyone with that authname on the network.");
         return CMD_ERROR;
       }
+      target = a->nicks;
     } else {
       target = getnickbynick(cargv[0]);
       if(!target) {
@@ -487,17 +484,15 @@ int noperserv_userflags(void *sender, int cargc, char **cargv) {
 }
 
 void noperserv_oper_detection(int hooknum, void *arg) {
-  void **args = (void **)arg;
-  nick *np = args[0];
-  char *modestr = args[1];
-  flag_t after = np->umodes;
+  nick *np = (nick *)arg;
 
-  setflags(&after, UMODE_ALL, modestr, umodeflags, REJECT_NONE);
   if(np->umodes & UMODE_OPER) {
-    if(!(after & UMODE_OPER))
-      controlwall(NO_OPER, NL_OPERING, "%s!%s@%s%s%s just DEOPERed", np->nick, np->ident, np->host->name->content, IsAccount(np)?"/":"", IsAccount(np)?np->authname:"");
-  } else {
-    if(after & UMODE_OPER)
+    if(np->opername && strcmp(np->opername->content, "-")) {
+      controlwall(NO_OPER, NL_OPERING, "%s!%s@%s%s%s just OPERed as %s", np->nick, np->ident, np->host->name->content, IsAccount(np)?"/":"", IsAccount(np)?np->authname:"", np->opername->content);
+    } else {
       controlwall(NO_OPER, NL_OPERING, "%s!%s@%s%s%s just OPERed", np->nick, np->ident, np->host->name->content, IsAccount(np)?"/":"", IsAccount(np)?np->authname:"");
+    }
+  } else {
+    controlwall(NO_OPER, NL_OPERING, "%s!%s@%s%s%s just DEOPERed", np->nick, np->ident, np->host->name->content, IsAccount(np)?"/":"", IsAccount(np)?np->authname:"");
   }
 }