فهرست منبع

* Now storing our own userrecord in conf.bot->u
* Moved some flag functions from misc.c to flags.c
* Stripped notify_new
* Now using conf.bot->pid_file everywhere


svn: 683

Bryan Drewery 22 سال پیش
والد
کامیت
d695e29bf6
17فایلهای تغییر یافته به همراه99 افزوده شده و 129 حذف شده
  1. 1 4
      src/cfg.c
  2. 12 14
      src/chanprog.c
  3. 16 23
      src/cmds.c
  4. 2 1
      src/conf.h
  5. 1 1
      src/dcc.c
  6. 42 1
      src/flags.c
  7. 4 0
      src/flags.h
  8. 0 1
      src/main.c
  9. 1 52
      src/misc.c
  10. 0 4
      src/misc.h
  11. 1 1
      src/mod/ctcp.mod/ctcp.c
  12. 1 2
      src/mod/irc.mod/irc.c
  13. 1 1
      src/mod/module.h
  14. 5 13
      src/mod/update.mod/update.c
  15. 2 2
      src/modules.c
  16. 1 1
      src/tcl.c
  17. 9 8
      src/users.c

+ 1 - 4
src/cfg.c

@@ -821,14 +821,11 @@ void got_config_share(int idx, char *ln)
 void trigger_cfg_changed()
 {
   int i;
-  struct userrec *u;
   struct xtra_key *xk;
 
-  u = get_user_by_handle(userlist, botnetnick);
-
   for (i = 0; i < cfg_count; i++) {
     if (cfg[i]->flags & CFGF_LOCAL) {
-      xk = get_user(&USERENTRY_CONFIG, u);
+      xk = get_user(&USERENTRY_CONFIG, conf.bot->u);
       while (xk && strcmp(xk->key, cfg[i]->name))
 	xk = xk->next;
       if (xk) {

+ 12 - 14
src/chanprog.c

@@ -32,7 +32,7 @@
 extern struct userrec	*userlist;
 extern char		 ver[], botnetnick[], firewall[], myip[], 
 			 motdfile[], userfile[], tempdir[],
-			 notify_new[], owner[], 
+			 owner[], 
                          botuser[], *owners, *hubs;
 
 extern time_t		 now, online_since;
@@ -301,7 +301,7 @@ void tell_verbose_status(int idx)
 #ifdef HUB
   i = count_users(userlist);
   dprintf(idx, "I am %s, running %s:  %d user%s\n",
-	  botnetnick, ver, i, i == 1 ? "" : "s");
+	  conf.bot->nick, ver, i, i == 1 ? "" : "s");
   if (localhub)
     dprintf(idx, "I am a localhub.\n");
   if (isupdatehub())
@@ -362,7 +362,7 @@ void tell_settings(int idx)
   char s[1024];
   struct flag_record fr = {FR_GLOBAL, 0, 0, 0, 0, 0};
 
-  dprintf(idx, "Botnet Nickname: %s\n", botnetnick);
+  dprintf(idx, "Botnet Nickname: %s\n", conf.bot->nick);
   if (firewall[0])
     dprintf(idx, "Firewall: %s, port %d\n", firewall, firewallport);
 #ifdef HUB
@@ -373,7 +373,7 @@ void tell_settings(int idx)
   fr.global = default_flags;
 
   build_flags(s, &fr, NULL);
-  dprintf(idx, "%s [%s], %s: %s\n", MISC_NEWUSERFLAGS, s, MISC_NOTIFY, notify_new);
+  dprintf(idx, "%s [%s]\n", MISC_NEWUSERFLAGS, s);
 #ifdef HUB
   if (owner[0])
     dprintf(idx, "%s: %s\n", MISC_PERMOWNER, owner);
@@ -456,7 +456,7 @@ void load_internal_users()
 	  bi->relay_port = bi->telnet_port;
           bi->hublevel = hublevel;
 #ifdef HUB
-	  if ((!bi->hublevel) && (!strcmp(hand, botnetnick)))
+	  if ((!bi->hublevel) && (!strcmp(hand, conf.bot->nick)))
 	    bi->hublevel = 99;
 #endif /* HUB */
           bi->uplink = malloc(1);
@@ -543,8 +543,6 @@ void chanprog()
 {
   /* char buf[2048] = ""; */
   struct bot_addr *bi;
-  struct userrec *u;
-
 
   admin[0] = 0;
   /* cache our ip on load instead of every 30 seconds */
@@ -574,10 +572,10 @@ void chanprog()
 
   load_internal_users();
 
-  if (!(u = get_user_by_handle(userlist, botnetnick))) {
+  if (!(conf.bot->u = get_user_by_handle(userlist, conf.bot->nick))) {
     /* I need to be on the userlist... doh. */
-    userlist = adduser(userlist, botnetnick, "none", "-", USER_BOT | USER_OP );
-    u = get_user_by_handle(userlist, botnetnick);
+    userlist = adduser(userlist, conf.bot->nick, "none", "-", USER_BOT | USER_OP );
+    conf.bot->u = get_user_by_handle(userlist, conf.bot->nick);
     bi = malloc(sizeof(struct bot_addr));
 
     bi->address = strdup(myip);
@@ -590,12 +588,12 @@ void chanprog()
 #endif /* HUB */
     bi->uplink = malloc(1);
     bi->uplink[0] = 0;
-    set_user(&USERENTRY_BOTADDR, u, bi);
+    set_user(&USERENTRY_BOTADDR, conf.bot->u, bi);
   } else {
-    bi = get_user(&USERENTRY_BOTADDR, u);
+    bi = get_user(&USERENTRY_BOTADDR, conf.bot->u);
   }
 
-  bi = get_user(&USERENTRY_BOTADDR, get_user_by_handle(userlist, botnetnick));
+  bi = get_user(&USERENTRY_BOTADDR, get_user_by_handle(userlist, conf.bot->nick));
   if (!bi)
     fatal(STR("I'm added to userlist but without a bot record!"), 0);
   if (bi->telnet_port != 3333) {
@@ -710,7 +708,7 @@ int shouldjoin(struct chanset_t *chan)
 #ifdef G_BACKUP
   struct flag_record fr = { FR_CHAN | FR_ANYWH | FR_GLOBAL, 0, 0, 0, 0 };
 
-  get_user_flagrec(get_user_by_handle(userlist, botnetnick), &fr, chan->name);
+  get_user_flagrec(get_user_by_handle(userlist, conf.bot->nick), &fr, chan->name);
   return (!channel_inactive(chan)
           && (channel_backup(chan) || !glob_backupbot(fr)));
 #else /* !G_BACKUP */

+ 16 - 23
src/cmds.c

@@ -32,7 +32,6 @@
 
 #include <ctype.h>
 #include <stdlib.h>
-#include <pwd.h>
 #include <sys/types.h>
 #include <sys/utsname.h>
 
@@ -2596,7 +2595,6 @@ static void cmd_ps(struct userrec *u, int idx, char *par) {
 
 static void cmd_last(struct userrec *u, int idx, char *par) {
   char user[20], buf[30];
-  struct passwd *pw;
 
   putlog(LOG_CMDS, "*", STR("#%s# last %s"), dcc[idx].nick, par);
   if (strchr(par, '|') || strchr(par, '<') || strchr(par, ';') || strchr(par, '>')) {
@@ -2607,10 +2605,7 @@ static void cmd_last(struct userrec *u, int idx, char *par) {
   if (par[0]) {
     strncpyz(user, par, sizeof(user));
   } else {
-    pw = getpwuid(geteuid());
-    if (!pw) 
-      return;
-    strncpyz(user, pw->pw_name, sizeof(user));
+    strncpyz(user, conf.username, sizeof(user));
   }
   if (!user[0]) {
     dprintf(idx, STR("Can't determine user id for process\n"));
@@ -3729,11 +3724,10 @@ static void cmd_netcrontab(struct userrec * u, int idx, char * par) {
 #endif /* HUB */
 
 void rcmd_exec(char * frombot, char * fromhand, char * fromidx, char * par) {
-  char * cmd, scmd[512], *out, *err;
-  struct passwd *pw;
+  char *cmd = NULL, scmd[512] = "", *out = NULL, *err = NULL;
 
-  cmd=newsplit(&par);
-  scmd[0]=0;
+  cmd = newsplit(&par);
+  scmd[0] = 0;
   if (!strcmp(cmd, "w")) {
     strcpy(scmd, "w");
   } else if (!strcmp(cmd, STR("last"))) {
@@ -3741,9 +3735,7 @@ void rcmd_exec(char * frombot, char * fromhand, char * fromidx, char * par) {
     if (par[0]) {
       strncpyz(user, par, sizeof(user));
     } else {
-      pw = getpwuid(geteuid());
-      if (!pw) return;
-      strncpyz(user, pw->pw_name, sizeof(user));
+      strncpyz(user, conf.username, sizeof(user));
     }
     if (!user[0]) {
       botnet_send_cmdreply(botnetnick, frombot, fromhand, fromidx, STR("Can't determine user id for process"));
@@ -3786,28 +3778,28 @@ void rcmd_exec(char * frombot, char * fromhand, char * fromidx, char * par) {
     return;
   if (shell_exec(scmd, NULL, &out, &err)) {
     if (out) {
-      char * p, * np;
+      char *p = NULL, *np = NULL;
       botnet_send_cmdreply(botnetnick, frombot, fromhand, fromidx, STR("Result:"));
-      p=out;
+      p = out;
       while (p && p[0]) {
         np=strchr(p, '\n');
         if (np)
-          *np++=0;
+          *np++ = 0;
         botnet_send_cmdreply(botnetnick, frombot, fromhand, fromidx, p);
-        p=np;
+        p = np;
       }
       free(out);
     }
     if (err) {
-      char * p, * np;
+      char *p = NULL, *np = NULL;
       botnet_send_cmdreply(botnetnick, frombot, fromhand, fromidx, STR("Errors:"));
-      p=err;
+      p = err;
       while (p && p[0]) {
         np=strchr(p, '\n');
         if (np)
-          *np++=0;
+          *np++ = 0;
         botnet_send_cmdreply(botnetnick, frombot, fromhand, fromidx, p);
-        p=np;
+        p = np;
       }
       free(err);
     }
@@ -3819,8 +3811,9 @@ void rcmd_exec(char * frombot, char * fromhand, char * fromidx, char * par) {
 
 static void cmd_botjump(struct userrec * u, int idx, char * par) {
   char *tbot, buf[1024];
+
   putlog(LOG_CMDS, "*", STR("#%s# botjump %s"), dcc[idx].nick, par);
-  tbot=newsplit(&par);
+  tbot = newsplit(&par);
   if (!tbot[0]) {
     dprintf(idx, STR("Usage: botjump <bot> [server [port [pass]]]\n"));
     return;
@@ -3835,7 +3828,7 @@ static void cmd_botjump(struct userrec * u, int idx, char * par) {
 
 void rcmd_jump(char * frombot, char * fromhand, char * fromidx, char * par) {
 #ifdef LEAF
-  char * other;
+  char *other = NULL;
   module_entry *me;
   Function *func;
   int port, default_port = 0;

+ 2 - 1
src/conf.h

@@ -14,6 +14,7 @@ typedef struct conf_bot_b {
 #ifdef LEAF
   int localhub;         /* bot is localhub */
 #endif /* LEAF */
+  struct userrec *u;	/* our own user record */
   struct conf_bot_b *next;
 } conf_bot;
 
@@ -36,8 +37,8 @@ typedef struct conf_b {
   conf_bot *bot;        /* single bot (me) */
 } conf_t;
 
-#ifndef MAKING_MODS
 extern conf_t		conf;
+#ifndef MAKING_MODS
 
 int checkpid(char *, conf_bot *);
 void showconf();

+ 1 - 1
src/dcc.c

@@ -44,7 +44,7 @@ extern time_t		 now, buildts;
 extern int		 egg_numver, connect_timeout, conmask, backgrd,
 			 max_dcc, default_flags, debug_output,
 			 ignore_time;
-extern char		 botnetnick[], ver[], origbotname[], notify_new[], bdhash[],
+extern char		 botnetnick[], ver[], origbotname[], bdhash[],
                          dcc_prefix[];
 
 extern sock_list 	*socklist;

+ 42 - 1
src/flags.c

@@ -14,7 +14,7 @@
 
 extern int		 noshare, allow_dk_cmds;
 extern struct dcc_t	*dcc;
-
+extern struct userrec   *userlist;
 
 /* Some flags are mutually exclusive -- this roots them out
  */
@@ -620,3 +620,44 @@ int chk_devoice(struct flag_record fr, struct chanset_t *chan)
     return 0;
 }
 
+int isupdatehub()
+{
+#ifdef HUB
+  if (conf.bot->u && (conf.bot->u->flags & USER_UPDATEHUB))
+    return 1;
+  else
+#endif /* HUB */
+    return 0;
+}
+
+int ischanhub()
+{
+  if (conf.bot->u && (conf.bot->u->flags & USER_CHANHUB))
+    return 1;
+  else
+    return 0;
+}
+int dovoice(struct chanset_t *chan)
+{
+  struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0 };
+
+  if (!chan) return 0;
+
+  get_user_flagrec(conf.bot->u, &fr, chan->dname);
+  if (glob_dovoice(fr) || chan_dovoice(fr))
+    return 1;
+  return 0;
+}
+
+int dolimit(struct chanset_t *chan)
+{
+  struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0 };
+
+  if (!chan) return 0;
+
+  get_user_flagrec(conf.bot->u, &fr, chan->dname);
+  if (glob_dolimit(fr) || chan_dolimit(fr))
+    return 1;
+  return 0;
+}
+

+ 4 - 0
src/flags.h

@@ -198,6 +198,10 @@ int chk_op(struct flag_record, struct chanset_t *);
 int chk_deop(struct flag_record, struct chanset_t *);
 int chk_voice(struct flag_record, struct chanset_t *);
 int chk_devoice(struct flag_record, struct chanset_t *);
+int ischanhub();
+int isupdatehub();
+int dovoice(struct chanset_t *);
+int dolimit(struct chanset_t *);
 
 #endif				/* MAKING_MODS */
 

+ 0 - 1
src/main.c

@@ -70,7 +70,6 @@ const int	egg_numver = 1001500;
 int 	localhub = 1; 		/* we set this to 0 if we get a -B */
 int 	role;
 int 	loading = 0;
-char	notify_new[121] = "";	/* Person to send a note to for new users */
 int	default_flags = 0;	/* Default user flags and */
 int	default_uflags = 0;	/* Default userdefinied flags for people
 				   who say 'hello' or for .adduser */

+ 1 - 52
src/misc.c

@@ -693,57 +693,6 @@ void kill_bot(char *s1, char *s2)
   fatal(s2, 0);
 }
 
-int isupdatehub()
-{
-#ifdef HUB
-  struct userrec *buser;
-  buser = get_user_by_handle(userlist, botnetnick);
-  if ((buser) && (buser->flags & USER_UPDATEHUB))
-    return 1;
-  else
-#endif /* HUB */
-    return 0;
-}
-
-int ischanhub()
-{
-  struct userrec *buser;
-  buser = get_user_by_handle(userlist, botnetnick);
-  if ((buser) && (buser->flags & USER_CHANHUB))
-    return 1;
-  else
-    return 0;
-}
-
-int dovoice(struct chanset_t *chan)
-{
-  struct userrec *user = NULL;
-  struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0 };
-
-  if (!chan) return 0;
-
-  user = get_user_by_handle(userlist, botnetnick);
-  get_user_flagrec(user, &fr, chan->dname);
-  if (glob_dovoice(fr) || chan_dovoice(fr))
-    return 1;
-  return 0;
-}
-
-int dolimit(struct chanset_t *chan)
-{
-  struct userrec *user = NULL;
-  struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0 };
-
-  if (!chan) return 0;
-
-  user = get_user_by_handle(userlist, botnetnick);
-  get_user_flagrec(user, &fr, chan->dname);
-  if (glob_dolimit(fr) || chan_dolimit(fr))
-    return 1;
-  return 0;
-}
-
-
 /* Update system code
  */
 int ucnt = 0;
@@ -909,7 +858,7 @@ int bot_aggressive_to(struct userrec *u)
     botpval[20];
 
   link_pref_val(u, botpval);
-  link_pref_val(get_user_by_handle(userlist, botnetnick), mypval);
+  link_pref_val(conf.bot->u, mypval);
 
   if (strcmp(mypval, botpval) < 0)
     return 1;

+ 0 - 4
src/misc.h

@@ -40,16 +40,12 @@ char *getfullbinname(char *);
 char *replace(char *, char *, char *);
 int goodpass(char *, int, char *);
 void makeplaincookie(char *, char *, char *);
-int isupdatehub();
 int getting_users();
 char *kickreason(int);
 int bot_aggressive_to(struct userrec *);
 int updatebin(int, char *, int);
 int egg_strcatn(char *dst, const char *src, size_t max);
 int my_strcpy(char *, char *);
-int ischanhub();
-int dovoice(struct chanset_t *);
-int dolimit(struct chanset_t *);
 void maskhost(const char *, char *);
 char *stristr(char *, char *);
 void splitc(char *, char *, char);

+ 1 - 1
src/mod/ctcp.mod/ctcp.c

@@ -446,7 +446,7 @@ static int ctcp_FINGER(char *nick, char *uhost, struct userrec *u, char *object,
     idletime = now - cloak_heretime;
   else
     idletime = 0;
-  if (!(pwd = getpwuid(geteuid())))
+  if (!(pwd = getpwuid(conf.uid)))
     return 0;
 #ifndef GECOS_DELIMITER
 #define GECOS_DELIMITER ','

+ 1 - 2
src/mod/irc.mod/irc.c

@@ -447,7 +447,6 @@ void getin_request(char *botnick, char *code, char *par)
 void check_hostmask()
 {
   char s[UHOSTLEN + 2], *tmp = NULL;
-  struct userrec *u = get_user_by_handle(userlist, botnetnick);
   struct list_type *q;
 
   checked_hostmask = 1;
@@ -462,7 +461,7 @@ void check_hostmask()
     tmp++;
     sprintf(s, STR("*!*%s"), tmp);
   }
-  for (q = get_user(&USERENTRY_HOSTS, u); q; q = q->next) {
+  for (q = get_user(&USERENTRY_HOSTS, conf.bot->u); q; q = q->next) {
     if (!strcasecmp(q->extra, s))
       return;
   }

+ 1 - 1
src/mod/module.h

@@ -254,7 +254,7 @@
 #define userfile ((char *)global[118])
 #define ver ((char *)global[119])
 /* 120 - 123 */
-#define notify_new ((char *)global[120])
+/* UNUSED 120 */
 #define dovoice ((int (*)(struct chanset_t *))global[121])
 #define Version ((char *)global[122])
 #define botnetnick ((char *)global[123])

+ 5 - 13
src/mod/update.mod/update.c

@@ -21,7 +21,6 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <sys/stat.h>
-#include <pwd.h>
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -175,7 +174,6 @@ static void got_nu(char *botnick, char *code, char *par)
   tand_t *bot;
   struct bot_addr *bi,
    *obi;
-  struct userrec *u1;
   bot = tandbot;
   if (!strcmp(bot->bot, botnick)) //dont listen to our uplink.. use normal upate system..
     return;
@@ -188,8 +186,7 @@ static void got_nu(char *botnick, char *code, char *par)
    newts = atoi(newsplit(&par));
    if (newts > buildts) {
 #ifdef LEAF
-     u1 = get_user_by_handle(userlist, botnetnick);
-     obi = get_user(&USERENTRY_BOTADDR, u1);
+     obi = get_user(&USERENTRY_BOTADDR, conf.bot->u);
      bi = malloc(sizeof(struct bot_addr));
 
      bi->uplink = strdup(botnick);
@@ -197,7 +194,7 @@ static void got_nu(char *botnick, char *code, char *par)
      bi->telnet_port = obi->telnet_port;
      bi->relay_port = obi->relay_port;
      bi->hublevel = obi->hublevel;
-     set_user(&USERENTRY_BOTADDR, u1, bi);
+     set_user(&USERENTRY_BOTADDR, conf.bot->u, bi);
 
    /* Change our uplink to them */
    /* let cont_link restructure us.. */
@@ -238,15 +235,10 @@ static void updatein_mod(int idx, char *msg)
 void finish_update(int idx)
 {
   /* module_entry *me; */
-  struct passwd *pw;
-  uid_t id;
-  char buf[1024];
-  char *buf2;
+  char buf[1024] = "";
+  char *buf2 = NULL;
   int i, j = -1;
 
-  id = geteuid();
-  pw = getpwuid(id);
-
   for (i = 0; i < dcc_total; i++)
     if (!egg_strcasecmp(dcc[i].nick, dcc[idx].host) &&
 	(dcc[i].type->flags & DCT_BOT))
@@ -272,7 +264,7 @@ void finish_update(int idx)
       goto next;
   }
 */
-  sprintf(buf, "%s%s", pw->pw_dir,  strrchr(dcc[idx].u.xfer->filename, '/'));
+  sprintf(buf, "%s%s", conf.homedir,  strrchr(dcc[idx].u.xfer->filename, '/'));
 
   movefile(dcc[idx].u.xfer->filename, buf); 
   

+ 2 - 2
src/modules.c

@@ -44,7 +44,7 @@ extern Tcl_Interp	*interp;
 extern struct userrec	*userlist, *lastuser;
 extern char		 tempdir[], botnetnick[], botname[], natip[], cmdprefix[],
 			 hostname[], origbotname[], botuser[], admin[],
-			 userfile[], ver[], notify_new[], kickprefix[], bankickprefix[],
+			 userfile[], ver[], kickprefix[], bankickprefix[],
 			 version[], quit_msg[], hostname6[], bdhash[], dcc_prefix[],
 #ifdef S_AUTHHASH
                          authkey[], 
@@ -317,7 +317,7 @@ Function global_table[] =
   (Function) userfile,		 /* char *				*/
   (Function) ver,		 /* char *				*/
   /* 120 - 123 */
-  (Function) notify_new,	 /* char *				*/
+  (Function) 0,
   (Function) dovoice,
   (Function) version,		 /* char *				*/
   (Function) botnetnick,	 /* char *				*/

+ 1 - 1
src/tcl.c

@@ -42,7 +42,7 @@ extern int	backgrd, flood_telnet_thr, flood_telnet_time,
 		dcc_sanitycheck, sort_users, tands, resolve_timeout,
 		default_uflags, strict_host, userfile_perm;
 extern char	origbotname[], botuser[], motdfile[], admin[], userfile[],
-                firewall[], notify_new[], hostname[], hostname6[], myip[], myip6[],
+                firewall[], hostname[], hostname6[], myip[], myip6[],
 		tempdir[], owner[], network[], botnetnick[],
 		egg_version[], natip[], 
 		dcc_prefix[];

+ 9 - 8
src/users.c

@@ -1131,8 +1131,7 @@ void autolink_cycle(char *start)
     curval[HANDLEN + 4],
     myval[HANDLEN + 4];
 
-  u = get_user_by_handle(userlist, botnetnick);
-  link_pref_val(u, myval);
+  link_pref_val(conf.bot->u, myval);
   strcpy(bestval, myval);
   for (i = 0; i < dcc_total; i++) {
     if (dcc[i].type == &DCC_BOT_NEW)
@@ -1141,10 +1140,10 @@ void autolink_cycle(char *start)
       return;
     if (dcc[i].type == &DCC_BOT) {
       if (dcc[i].status & (STAT_OFFEREDU | STAT_GETTINGU | STAT_SENDINGU))
-        continue; //lets let the binary have it's peace.
+        continue; /* lets let the binary have it's peace. */
 
       if (dcc[i].u.bot->numver != egg_numver)
-        continue; //same thing.
+        continue; /* same thing. */
 
       if (dcc[i].status & (STAT_SHARE | STAT_OFFERED | STAT_SENDING | STAT_GETTING)) {
 	link_pref_val(dcc[i].user, curval);
@@ -1173,10 +1172,12 @@ void autolink_cycle(char *start)
       }
     }
   }
+
   if (start)
     u = get_user_by_handle(userlist, start);
   else
     u = NULL;
+
   if (u) {
     link_pref_val(u, curval);
     if (strcmp(bestval, curval) < 0) {
@@ -1189,6 +1190,7 @@ void autolink_cycle(char *start)
     }
   } else
     strcpy(curval, "0");
+
   u = next_hub(u, bestval, curval);
   if ((u) && (!in_chain(u->handle)))
     botlink("", -3, u->handle);
@@ -1196,7 +1198,6 @@ void autolink_cycle(char *start)
 #endif /* HUB */
 
 #ifdef LEAF
-
 typedef struct hublist_entry {
   struct hublist_entry *next;
   struct userrec *u;
@@ -1206,7 +1207,7 @@ int botlinkcount = 0;
 
 void autolink_cycle(char *start)
 {
-  struct userrec *my_u = NULL, *u = NULL;
+  struct userrec *u = NULL;
   struct hublist_entry *hl = NULL, *hl2 = NULL;
   struct bot_addr *my_ba;
   char uplink[HANDLEN + 1], avoidbot[HANDLEN + 1], curhub[HANDLEN + 1];
@@ -1216,8 +1217,8 @@ void autolink_cycle(char *start)
   /* Reset connection attempts if we ain't called due to a failed link */
   if (!start)
     botlinkcount = 0;
-  my_u = get_user_by_handle(userlist, botnetnick);
-  my_ba = get_user(&USERENTRY_BOTADDR, my_u);
+
+  my_ba = get_user(&USERENTRY_BOTADDR, conf.bot->u);
   if (my_ba && (my_ba->uplink[0])) {
     strncpyz(uplink, my_ba->uplink, sizeof(uplink));
   } else {