]> jfr.im git - irc/quakenet/newserv.git/blobdiff - control/control.c
Rename trusts_cidr2str to CIDRtostr() and move it to lib/irc_ipv6.c.
[irc/quakenet/newserv.git] / control / control.c
index df14bf63290b1fdda2e4e46a0c7cdeb5115844b1..8c2676451d1b29005280db723371a1911ce80207 100644 (file)
@@ -52,6 +52,7 @@ int controllsmod(void *sender, int cargc, char **cargv);
 int controlrehash(void *sender, int cargc, char **cargv);
 int controlreload(void *sender, int cargc, char **cargv);
 int controlhelpcmd(void *sender, int cargc, char **cargv);
+void controlnoticeopers(flag_t permissionlevel, flag_t noticelevel, char *format, ...) __attribute__ ((format (printf, 3, 4)));
 void controlnoticeopers(flag_t permissionlevel, flag_t noticelevel, char *format, ...);
 int controlcheckpermitted(flag_t level, nick *user);
 void handlesignal(int hooknum, void *arg);
@@ -248,6 +249,20 @@ int controlwhois(void *sender, int cargc, char **cargv) {
     }
   }
   controlreply((nick *)sender,"Timestamp : %lu",target->timestamp);
+
+  /* HACK */
+  {
+    int ext = findnickext("signontracker");
+
+    if(ext >= 0) {
+      time_t signedon = (time_t)(target->exts[ext]);
+      if(signedon) {
+        controlreply((nick *)sender,"Signed on : %lu",signedon);
+      } else {
+        controlreply((nick *)sender,"Signed on : ???");
+      }
+    }
+  }
   controlreply((nick *)sender,"IP address: %s",IPtostr(target->p_ipaddr));
   controlreply((nick *)sender,"Realname  : %s (%d user(s) have this realname)",target->realname->name->content,target->realname->usercount);
   if (target->umodes) {
@@ -266,6 +281,10 @@ int controlwhois(void *sender, int cargc, char **cargv) {
     }
   }
 
+  if (target->away) {
+    controlreply((nick *)sender, "Away      : %s",target->away->content);
+  }
+
   hooknick=(nick *)sender;
   registerhook(HOOK_CONTROL_WHOISREPLY,&handlewhois);
   triggerhook(HOOK_CONTROL_WHOISREQUEST,target);
@@ -324,7 +343,7 @@ int controlrmmod(void *sender, int cargc, char **cargv) {
   if (cargc<1)
     return CMD_USAGE;
   
-  switch(rmmod(cargv[0])) {
+  switch(rmmod(cargv[0], 1)) {
     case 1:
       controlreply((nick *)sender,"Module %s is not loaded.",cargv[0]);
       return CMD_ERROR;
@@ -592,7 +611,7 @@ void controlspecialrmmod(void *arg) {
   
   a->schedule = NULL;
 
-  rmmod(froo->content);
+  rmmod(froo->content, 1);
   freesstring(froo);
 }
 
@@ -719,3 +738,12 @@ void controldestroycmdext(void *ext) {
     free( ((cmdhelp *)ext)->helpstr);
   free(ext);
 }
+
+char *controlid(nick *np) {
+  static char buf[512];
+
+  snprintf(buf, sizeof(buf), "%s!%s@%s/%s", np->nick, np->ident, np->host->name->content, np->authname);
+
+  return buf;
+}
+