]> jfr.im git - irc/quakenet/newserv.git/blobdiff - miscreply/rping.c
Merge default into chanserv-live.
[irc/quakenet/newserv.git] / miscreply / rping.c
index 15459e699a4953038832ae5dc3e7d23c334e3633..ecbe0688bdd08d2a58fc5189a05280a106a98109 100644 (file)
@@ -1,12 +1,8 @@
 /* rping.c */
 
 #include "miscreply.h"
-#include "msg.h"
-#include "numeric.h"
 #include "../irc/irc.h"
 #include "../core/error.h"
-#include "../nick/nick.h"
-#include "../server/server.h"
 
 #include <stdio.h>
 #include <string.h>
@@ -21,7 +17,7 @@
  * 
  * cargv[0] = server
  *            server(mask) as given by user
- *            a * indicates the request is for all servers (possible snircd extension)
+ *            a * indicates the request is for all servers (future snircd extension?)
  * cargv[1] = target server numeric
  * cargv[2] = comment
  *
@@ -30,7 +26,7 @@
  * <start server numeric> RPING/RI <target server numeric> <requesting user numeric> <start seconds> <start milliseconds> :<comment>
  *
  * cargv[0] = target server numeric
- *            can be a * in which case the request is for all servers (possible snircd extension)
+ *            can be a * in which case the request is for all servers (future snircd extension?)
  * cargv[1] = requesting user numeric
  * cargv[2] = start time in seconds
  * cargv[3] = start time in milliseconds
  */
 int handlerpingmsg(void *source, int cargc, char **cargv) {
 
-  nick *snick;                                          /* struct nick for source (oper) nick */
-
-  int i;                                                /* index for serverlist[] */
-  int m;                                                /* result of myserver lookup */
-  char *sourcenum = (char *)source;                     /* source numeric */
-  char *targetnum = getmynumeric();                     /* target server numeric */
-  char *server;                                         /* target server parameter */
-  char *servername = myserver->content;                 /* servername */
-  char *destserver;                                     /* destination server mask */
-  char *destnum;                                        /* destination server numeric */
-  char *sourceoper;                                     /* requesting oper numeric */
-  char *time_s;                                         /* time in seconds */
-  char *time_us;                                        /* time in milliseconds */
-  char *comment;                                        /* comment by client */
-  struct timeval tv;                                    /* get start time in seconds and milliseconds */
+  nick *snick;                        /* struct nick for source nick */
+  long i;                             /* index for serverlist[] */
+  char *sourcenum = (char *)source;   /* source numeric */
+  char *destserver;                   /* destination server mask */
+  char *destnum;                      /* destination server numeric */
+  char *sourceoper;                   /* requesting operator numeric */
+  char *time_s;                       /* time in seconds */
+  char *time_us;                      /* time in milliseconds */
+  char *comment;                      /* comment by client */
+  struct timeval tv;                  /* get start time in seconds and milliseconds */
 
   /* from server */
-  if (IsServer(sourcenum)) {
+  if (strlen(sourcenum) == 2) {
 
     /* check parameters */
     if (cargc < 5) {
@@ -64,8 +55,8 @@ int handlerpingmsg(void *source, int cargc, char **cargv) {
       return CMD_OK;
     }
 
-    /* set the parameters */
-    server = cargv[0];
+    /* get the parameters */
+    /*server = cargv[0];*/
     sourceoper = cargv[1];
     time_s = cargv[2];
     time_us = cargv[3];
@@ -79,28 +70,13 @@ int handlerpingmsg(void *source, int cargc, char **cargv) {
     if (!(snick = miscreply_finduser(sourceoper, "RPING")))
       return CMD_OK;
 
-    /* request is not for * (all servers) */
-    if (!(server[0] == '*' && server[1] == '\0')) {
-
-      /* destination server not found */
-      if ((i = miscreply_findservernum(sourceoper, server, "RPING")) == -1)
-        return CMD_OK;
-
-      targetnum = longtonumeric(i, 2);
-      servername = serverlist[i].name->content;
-
-      /* not me, tell user */
-      if (!IsMeNum(targetnum))
-        send_snotice(sourceoper, "RPING: Server %s is not a real server.", servername);
-    }
-
-    /* send */
-    irc_send("%s %s %s %s %s %s :%s", targetnum, TOK_RPONG, sourcenum,
+    /* send RPONG to operator */
+    irc_send("%s RO %s %s %s %s :%s", getmynumeric(), sourcenum,
       sourceoper, time_s, time_us, comment);
   }
 
   /* from user */
-  else if (IsUser(sourcenum)) {
+  else if (strlen(sourcenum) == 5) {
 
     /* check parameters */
     if (cargc < 3) {
@@ -108,9 +84,9 @@ int handlerpingmsg(void *source, int cargc, char **cargv) {
       return CMD_OK;
     }
 
-    /* set the parameters */
+    /* get the parameters */
     destserver = cargv[0];
-    server = cargv[1];
+    /*server = cargv[1];*/
     comment = cargv[2];
 
     /* find source user */ 
@@ -125,18 +101,11 @@ int handlerpingmsg(void *source, int cargc, char **cargv) {
     else if ((i = miscreply_findservermatch(sourcenum, destserver)) == -1)
       return CMD_OK;
 
-    /* destination one of my servers? */   
-    else if ((m = miscreply_myserver(i))) {
-      servername = serverlist[i].name->content;
-
-      /* tell user, and return RPONG with delay 0 */
-      if (m == 1)
-        send_snotice(sourcenum, "RPING: Server %s is me.", servername);
-      else 
-        send_snotice(sourcenum, "RPING: Server %s is not a real server.", servername);
-      irc_send("%s %s %s %s 0 :%s", targetnum, TOK_RPONG, sourcenum, servername, comment);
+    /* destination is me
+     *   do the same as ircu in this case, nothing
+     */
+    else if (i == mylongnum)
       return CMD_OK;
-    }
 
     /* found valid destination server */
     else 
@@ -145,18 +114,10 @@ int handlerpingmsg(void *source, int cargc, char **cargv) {
     /* get starttime */
     gettimeofday(&tv, NULL);
 
-    /* send */
-    irc_send("%s %s %s %s %lu %lu :%s", targetnum, TOK_RPING, destnum,
+    /* send RPING to server */
+    irc_send("%s RI %s %s %lu %lu :%s", getmynumeric(), destnum,
       sourcenum, tv.tv_sec, tv.tv_usec, comment);
   }
 
-
-  /* trouble not from server and not from user numeric? */
-  else {
-    Error("miscreply", ERR_WARNING,
-      "RPING from odd numeric source %s (not a server and not user numeric)", sourcenum);
-    return CMD_OK;
-  }
-
   return CMD_OK;
 }