]> jfr.im git - irc/quakenet/newserv.git/blobdiff - control/control.c
trusts: Throttle trusted clients if they disconnect too soon.
[irc/quakenet/newserv.git] / control / control.c
index 335f0f028ded76da93efc1fca6c68005b748d2d6..e55879653fb83de6a1a01a05330298fb4c5454bd 100644 (file)
@@ -249,7 +249,21 @@ int controlwhois(void *sender, int cargc, char **cargv) {
     }
   }
   controlreply((nick *)sender,"Timestamp : %lu",target->timestamp);
-  controlreply((nick *)sender,"IP address: %s",IPtostr(target->p_ipaddr));
+
+  /* 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->ipaddress));
   controlreply((nick *)sender,"Realname  : %s (%d user(s) have this realname)",target->realname->name->content,target->realname->usercount);
   if (target->umodes) {
     controlreply((nick *)sender,"Umode(s)  : %s",printflags(target->umodes,umodeflags));
@@ -267,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);
@@ -325,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;
@@ -593,7 +611,7 @@ void controlspecialrmmod(void *arg) {
   
   a->schedule = NULL;
 
-  rmmod(froo->content);
+  rmmod(froo->content, 1);
   freesstring(froo);
 }
 
@@ -720,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;
+}
+