Преглед на файлове

* Testing new timesync code

svn: 1223
Bryan Drewery преди 22 години
родител
ревизия
94047803fc
променени са 5 файла, в които са добавени 40 реда и са изтрити 22 реда
  1. 28 9
      src/cmds.c
  2. 5 4
      src/dcc.c
  3. 2 0
      src/dcc.h
  4. 3 0
      src/main.c
  5. 2 9
      src/mod/channels.mod/channels.c

+ 28 - 9
src/cmds.c

@@ -3602,7 +3602,7 @@ static void cmd_botserver(struct userrec * u, int idx, char * par) {
 }
 
 
-void rcmd_cursrv(char * fbot, char * fhand, char * fidx) {
+static void rcmd_cursrv(char * fbot, char * fhand, char * fidx) {
 #ifdef LEAF
   char tmp[2048] = "";
 
@@ -3615,6 +3615,23 @@ void rcmd_cursrv(char * fbot, char * fhand, char * fidx) {
 #endif /* LEAF */
 }
 
+static void cmd_timesync(struct userrec *u, int idx, char *par) {
+  char tmp[30] = "";
+
+  putlog(LOG_CMDS, "*", "#%s# timesync", dcc[idx].nick);
+  sprintf(tmp, "timesync %li", timesync + now);
+  botnet_send_cmd_broad(-1, conf.bot->nick, u->handle, idx, tmp);
+}
+
+static void rcmd_timesync(char *frombot, char *fromhand, char *fromidx, char *par) {
+  char tmp[1024] = "";
+  time_t net;
+
+  net = atol(par);
+  sprintf(tmp, "NET: %li    ME: %li   DIFF: %li", net, timesync + now, (timesync+now) - net);
+  botnet_send_cmdreply(conf.bot->nick, frombot, fromhand, fromidx, tmp);
+}
+
 #ifdef HUB
 /* netversion */
 static void cmd_netversion(struct userrec * u, int idx, char * par) {
@@ -3635,7 +3652,7 @@ static void cmd_botversion(struct userrec * u, int idx, char * par) {
 }
 #endif /* HUB */
 
-void rcmd_ver(char * fbot, char * fhand, char * fidx) {
+static void rcmd_ver(char * fbot, char * fhand, char * fidx) {
   char tmp[2048] = "";
   struct utsname un;
 
@@ -3667,7 +3684,7 @@ static void cmd_botnick(struct userrec * u, int idx, char * par) {
   botnet_send_cmd(conf.bot->nick, par, u->handle, idx, "curnick");
 }
 
-void rcmd_curnick(char * fbot, char * fhand, char * fidx) {
+static void rcmd_curnick(char * fbot, char * fhand, char * fidx) {
 #ifdef LEAF
   char tmp[1024] = "";
 
@@ -3714,7 +3731,7 @@ static void cmd_netmsg(struct userrec * u, int idx, char * par) {
   botnet_send_cmd_broad(-1, conf.bot->nick, u->handle, idx, tmp);
 }
 
-void rcmd_msg(char * tobot, char * frombot, char * fromhand, char * fromidx, char * par) {
+static void rcmd_msg(char * tobot, char * frombot, char * fromhand, char * fromidx, char * par) {
 #ifdef LEAF
   char buf[1024] = "", *nick = NULL;
 
@@ -3744,14 +3761,14 @@ static void cmd_netlag(struct userrec * u, int idx, char * par) {
 }
 #endif /* HUB */
 
-void rcmd_ping(char * frombot, char *fromhand, char * fromidx, char * par) {
+static void rcmd_ping(char * frombot, char *fromhand, char * fromidx, char * par) {
   char tmp[64] = "";
 
   egg_snprintf(tmp, sizeof tmp, "pong %s", par);
   botnet_send_cmd(conf.bot->nick, frombot, fromhand, atoi(fromidx), tmp);
 }
 
-void rcmd_pong(char *frombot, char *fromhand, char *fromidx, char *par) {
+static void rcmd_pong(char *frombot, char *fromhand, char *fromidx, char *par) {
   int i = atoi(fromidx);
 
   if ((i >= 0) && (i < dcc_total) && (dcc[i].type == &DCC_CHAT) && (!strcmp(dcc[i].nick, fromhand))) {
@@ -3872,7 +3889,7 @@ static void cmd_netcrontab(struct userrec * u, int idx, char * par) {
 }
 #endif /* HUB */
 
-void rcmd_exec(char * frombot, char * fromhand, char * fromidx, char * par) {
+static void rcmd_exec(char * frombot, char * fromhand, char * fromidx, char * par) {
   char *cmd = NULL, scmd[512] = "", *out = NULL, *err = NULL;
 
   cmd = newsplit(&par);
@@ -3981,7 +3998,7 @@ static void cmd_botjump(struct userrec * u, int idx, char * par) {
   botnet_send_cmd(conf.bot->nick, tbot, dcc[idx].nick, idx, buf);
 }
 
-void rcmd_jump(char * frombot, char * fromhand, char * fromidx, char * par) {
+static void rcmd_jump(char * frombot, char * fromhand, char * fromidx, char * par) {
 #ifdef LEAF
   char *other = NULL;
   int port;
@@ -4002,7 +4019,6 @@ void rcmd_jump(char * frombot, char * fromhand, char * fromidx, char * par) {
 #endif /* LEAF */
 }
 
-
 /* "Remotable" commands */
 void gotremotecmd (char *forbot, char *frombot, char *fromhand, char *fromidx, char *cmd) {
   char *par = cmd;
@@ -4026,6 +4042,8 @@ void gotremotecmd (char *forbot, char *frombot, char *fromhand, char *fromidx, c
     rcmd_pong(frombot, fromhand, fromidx, par);
   } else if (!strcmp(cmd, "die")) {
     exit(0);
+  } else if (!strcmp(cmd, "timesync")) {
+    rcmd_timesync(frombot, fromhand, fromidx, par);
   } else {
     botnet_send_cmdreply(conf.bot->nick, frombot, fromhand, fromidx, "Unrecognized remote command");
   }
@@ -4300,6 +4318,7 @@ cmd_t C_dcc[] =
 #endif /* HUB */
   {"botserver",		"m",	(Function) cmd_botserver,	NULL},
   {"netserver", 	"m", 	(Function) cmd_netserver, 	NULL},
+  {"timesync",		"a",	(Function) cmd_timesync,	NULL},
 #ifdef HUB
   {"botversion", 	"o", 	(Function) cmd_botversion, 	NULL},
   {"netversion", 	"o", 	(Function) cmd_netversion, 	NULL},

+ 5 - 4
src/dcc.c

@@ -117,27 +117,26 @@ strip_telnet(int sock, char *buf, int *len)
   *o = *p;
 }
 
+#ifdef HUB
 void
 send_timesync(int idx)
 {
-#ifdef HUB
   /* Send timesync to idx, or all lower bots if idx<0 */
   if (idx >= 0)
     dprintf(idx, "ts %li\n", timesync + now);
   else {
-    char s[30] = "";
+    char s[15] = "";
     int i;
 
     sprintf(s, "ts %li\n", timesync + now);
     for (i = 0; i < dcc_total; i++) {
       if ((dcc[i].type == &DCC_BOT) && (bot_aggressive_to(dcc[i].user))) {
         dprintf(i, s);
-        lower_bot_linked(i);
       }
     }
   }
-#endif /* HUB */
 }
+#endif /* HUB */
 
 static void
 greet_new_bot(int idx)
@@ -703,7 +702,9 @@ dcc_chat_pass(int idx, char *buf, int atr)
       dcc[idx].status = STAT_CALLED;
       dprintf(idx, "goodbye!\n");
       greet_new_bot(idx);
+#ifdef HUB
       send_timesync(idx);
+#endif /* HUB */
     } else {
       /* Invalid password/digest on hub */
       putlog(LOG_WARN, "*", "%s failed encrypted link handshake.", dcc[idx].nick);

+ 2 - 0
src/dcc.h

@@ -221,7 +221,9 @@ extern struct dcc_table DCC_CHAT, DCC_BOT, DCC_LOST, DCC_BOT_NEW,
  DCC_FORK_BOT, DCC_SOCKET, DCC_TELNET_ID, DCC_TELNET_NEW, DCC_TELNET_PW,
  DCC_TELNET, DCC_IDENT, DCC_IDENTWAIT, DCC_DNSWAIT, DCC_IDENTD, DCC_IDENTD_CONNECT;
 
+#ifdef HUB
 void send_timesync(int);
+#endif /* HUB */
 void failed_link(int);
 void dupwait_notify(const char *);
 

+ 3 - 0
src/main.c

@@ -469,6 +469,9 @@ static void core_secondly()
 
 static void core_minutely()
 {
+#ifdef HUB
+  send_timesync(-1);
+#endif /* HUB */
 #ifdef LEAF
   check_mypid();
 #endif

+ 2 - 9
src/mod/channels.mod/channels.c

@@ -291,14 +291,7 @@ static void got_down(char *botnick, char *code, char *par)
 
 static void got_role(char *botnick, char *code, char *par)
 {
-  char *tmp = NULL;
-
-  tmp = newsplit(&par);
-  role = atoi(tmp);
-  if (par[0]) {
-    tmp = newsplit(&par);
-    timesync = atoi(tmp) - now;
-  }
+  role = atoi(newsplit(&par));
   putlog(LOG_DEBUG, "@", "Got role index %d", role);
 }
 
@@ -350,7 +343,7 @@ static void rebalance_roles()
         ba = get_user(&USERENTRY_BOTADDR, dcc[i].user);
         if (ba && (ba->roleid == (hNdx + 1))) {
           ba->roleid = lNdx + 1;
-          sprintf(tmp, "rl %d %li", lNdx + 1, timesync + now);
+          sprintf(tmp, "rl %d", lNdx + 1);
           putbot(dcc[i].nick, tmp);
         }
       }