Przeglądaj źródła

* USERENTRY_USERNAME
USERENTRY_NODENAME
USERENTRY_OS


svn: 1014

Bryan Drewery 22 lat temu
rodzic
commit
3985ea24c2
5 zmienionych plików z 112 dodań i 8 usunięć
  1. 1 0
      doc/UPDATES
  2. 30 0
      src/botcmd.c
  3. 4 0
      src/dcc.c
  4. 75 2
      src/userent.c
  5. 2 6
      src/users.h

+ 1 - 0
doc/UPDATES

@@ -10,6 +10,7 @@ This is a summary of ChangeLog basically.
 6.Re-wrote cmd_bots.
 7.Don't auto-op users in a +take chan.
 8.+take now does +oooo on remaining bots instead of individual +o lines.
+9.Bots now record: USERNAME, NODENAME (shell host), OS in .whois.
 
 1.1.7
 

+ 30 - 0
src/botcmd.c

@@ -447,6 +447,33 @@ static void bot_sysname(int idx, char *par)
   strcpy(dcc[idx].u.bot->sysname, par);
 }
 
+static void bot_username(int idx, char *par)
+{
+  if (par && par[0]) {
+    set_user(&USERENTRY_USERNAME, dcc[idx].user, par);
+  }
+}
+
+static void bot_nodename(int idx, char *par)
+{
+  if (par && par[0]) {
+    set_user(&USERENTRY_NODENAME, dcc[idx].user, par);
+  }
+}
+
+static void bot_os(int idx, char *par)
+{
+  if (par && par[0]) {
+    set_user(&USERENTRY_OS, dcc[idx].user, par);
+  }
+}
+
+
+//  dprintf(idx, "username %s\n", conf.username ? conf.username : "");  /* username */
+//  dprintf(idx, "nodename %s\n", un.nodename ? un.nodename : "");      /* nodename */
+//  dprintf(idx, "os %s\n", un.sysname ? un.sysname : "");        /* os */
+
+
 
 /* who <from@bot> <tobot> <chan#>
  */
@@ -1275,6 +1302,8 @@ botcmd_t C_bot[] =
   {"l",			(Function) bot_link},
   {"n",			(Function) bot_nlinked},
   {"nc",		(Function) bot_nickchange},
+  {"nodename",		(Function) bot_nodename},
+  {"os",		(Function) bot_os},
   {"p",			(Function) bot_priv},
   {"pi",		(Function) bot_ping},
   {"po",		(Function) bot_pong},
@@ -1291,6 +1320,7 @@ botcmd_t C_bot[] =
   {"u",			(Function) bot_update},
   {"ul",		(Function) bot_unlink},
   {"un",		(Function) bot_unlinked},
+  {"username",		(Function) bot_username},
   {"v",			(Function) bot_versions},
   {"vs",		(Function) bot_sysname},
   {"w",			(Function) bot_who},

+ 4 - 0
src/dcc.c

@@ -243,7 +243,11 @@ static void greet_new_bot(int idx)
     sysname = un.sysname;
 
   dprintf(idx, "v 1001500 %d %s <%s> %d %li %s\n", HANDLEN, ver, network, localhub, buildts, egg_version);
+/* FIXME: remove after 1.1.8 */
   dprintf(idx, "vs %s\n", sysname);
+  dprintf(idx, "username %s\n", conf.username ? conf.username : "");	/* username */
+  dprintf(idx, "nodename %s\n", un.nodename ? un.nodename : "");	/* nodename */
+  dprintf(idx, "os %s\n", un.sysname ? un.sysname : "");		/* os */
   dprintf(idx, "bts %lu\n", buildts);
   for (i = 0; i < dcc_total; i++) {
     if (dcc[i].type == &DCC_FORK_BOT) {

+ 75 - 2
src/userent.c

@@ -25,6 +25,9 @@ void init_userent()
   add_entry_type(&USERENTRY_INFO);
   add_entry_type(&USERENTRY_LASTON);
   add_entry_type(&USERENTRY_BOTADDR);
+  add_entry_type(&USERENTRY_OS);
+  add_entry_type(&USERENTRY_NODENAME);
+  add_entry_type(&USERENTRY_USERNAME);
   add_entry_type(&USERENTRY_PASS);
   add_entry_type(&USERENTRY_SECPASS);
   add_entry_type(&USERENTRY_HOSTS);
@@ -371,6 +374,72 @@ struct user_entry_type USERENTRY_CONFIG = {
   "CONFIG"
 };
 
+#ifdef HUB
+static void botmisc_display(int idx, struct user_entry *e, struct userrec *u)
+{
+  struct flag_record fr = {FR_GLOBAL, 0, 0};
+
+  get_user_flagrec(dcc[idx].user, &fr, NULL);
+  if (glob_admin(fr))
+    dprintf(idx, "  %s: %s\n", e->type->name, e->u.string ? e->u.string : "");
+}
+#endif /* HUB */
+
+struct user_entry_type USERENTRY_USERNAME = {
+ 0,
+ def_gotshare,
+ def_unpack,
+#ifdef HUB
+ def_write_userfile,
+#endif /* HUB */
+ def_kill,
+ def_get,
+ def_set,
+#ifdef HUB
+ botmisc_display,
+#else
+ NULL,
+#endif /* HUB */
+ "USERNAME"
+};
+
+struct user_entry_type USERENTRY_NODENAME = {
+ 0,
+ def_gotshare,
+ def_unpack,
+#ifdef HUB
+ def_write_userfile,
+#endif /* HUB */
+ def_kill,
+ def_get,
+ def_set,
+#ifdef HUB
+ botmisc_display,
+#else
+ NULL,
+#endif /* HUB */
+ "NODENAME"
+};
+
+struct user_entry_type USERENTRY_OS = {
+ 0,
+ def_gotshare,
+ def_unpack,
+#ifdef HUB
+ def_write_userfile,
+#endif /* HUB */
+ def_kill,
+ def_get,
+ def_set,
+#ifdef HUB
+ botmisc_display,
+#else
+ NULL,
+#endif /* HUB */
+ "OS"
+};
+
+
 void stats_add(struct userrec *u, int login, int op)
 {
   char *s = NULL, s2[50] = "";
@@ -716,9 +785,9 @@ static int botaddr_set(struct userrec *u, struct user_entry *e, void *buf)
   return 1;
 }
 
+#ifdef HUB
 static void botaddr_display(int idx, struct user_entry *e, struct userrec *u)
 {
-#ifdef HUB
   struct flag_record fr = {FR_GLOBAL, 0, 0};
 
   get_user_flagrec(dcc[idx].user, &fr, NULL);
@@ -732,8 +801,8 @@ static void botaddr_display(int idx, struct user_entry *e, struct userrec *u)
     if (bi->uplink && bi->uplink[0])
       dprintf(idx, "  UPLINK: %s\n", bi->uplink);
   }
-#endif /* HUB */
 }
+#endif /* HUB */
 
 static int botaddr_gotshare(struct userrec *u, struct user_entry *e, char *buf, int idx)
 {
@@ -768,7 +837,11 @@ struct user_entry_type USERENTRY_BOTADDR =
   botaddr_kill,
   def_get,
   botaddr_set,
+#ifdef HUB
   botaddr_display,
+#else
+  NULL,
+#endif /* HUB */
   "BOTADDR"
 };
 

+ 2 - 6
src/users.h

@@ -47,12 +47,8 @@ struct user_entry_type {
 
 extern struct user_entry_type USERENTRY_COMMENT, USERENTRY_LASTON,
  USERENTRY_INFO, USERENTRY_BOTADDR, USERENTRY_HOSTS,
- USERENTRY_PASS, 
-  USERENTRY_STATS,
-  USERENTRY_ADDED,
-  USERENTRY_MODIFIED,
-  USERENTRY_CONFIG,
-  USERENTRY_SECPASS;
+ USERENTRY_PASS, USERENTRY_STATS, USERENTRY_ADDED, USERENTRY_MODIFIED,
+  USERENTRY_CONFIG, USERENTRY_SECPASS, USERENTRY_USERNAME, USERENTRY_NODENAME, USERENTRY_OS;
 
 struct laston_info {
   time_t laston;