Просмотр исходного кода

* Port [2416] to 1.2.12
* Added ARCH entry for bots in .whois


svn: 3088

Bryan Drewery 20 лет назад
Родитель
Сommit
fed82e7c58
6 измененных файлов с 35 добавлено и 9 удалено
  1. 1 0
      doc/UPDATES
  2. 3 1
      src/botcmd.c
  3. 1 0
      src/chanprog.c
  4. 16 7
      src/dcc.c
  5. 13 0
      src/userent.c
  6. 1 1
      src/users.h

+ 1 - 0
doc/UPDATES

@@ -10,6 +10,7 @@ Lines prefixed with '-' were disabled before release and are not finished, or ar
 * cmd_set now accepts 'true', 'on', 'false' and 'off' for boolean variables.
 * Added somewhat advanced password scoring to replace current password restrictions. (#56)
 * Added build os/architechture to output for ./binary -v
+* Added ARCH entry for bots in .whois
 
 1.2.11 - http://wraith.shatow.net/milestone/1.2.11
 * Fixed typo in help for .set/.conf/.channel

+ 3 - 1
src/botcmd.c

@@ -406,17 +406,19 @@ static void remote_tell_who(int idx, char *nick, int chan)
 
 static void bot_shellinfo(int idx, char *par)
 {
-  char *username = NULL, *sysname = NULL, *nodename = NULL;
+  char *username = NULL, *sysname = NULL, *nodename = NULL, *arch = NULL;
   
   username = newsplit(&par);
   sysname = newsplit(&par);
   nodename = newsplit(&par);
+  arch = newsplit(&par);
 
   set_user(&USERENTRY_USERNAME, dcc[idx].user, username);
   set_user(&USERENTRY_OS, dcc[idx].user, sysname);
   dcc[idx].u.bot->sysname[0] = 0;
   strcpy(dcc[idx].u.bot->sysname, sysname); 
   set_user(&USERENTRY_NODENAME, dcc[idx].user, nodename);
+  set_user(&USERENTRY_ARCH, dcc[idx].user, arch);
 }
 
 /* who <from@bot> <tobot> <chan#>

+ 1 - 0
src/chanprog.c

@@ -572,6 +572,7 @@ void chanprog()
   set_user(&USERENTRY_OS, conf.bot->u, un.sysname);
   set_user(&USERENTRY_USERNAME, conf.bot->u, conf.username);
   set_user(&USERENTRY_NODENAME, conf.bot->u, un.nodename);
+  set_user(&USERENTRY_ARCH, conf.bot->u, un.machine);
 
   var_parse_my_botset();
 

+ 16 - 7
src/dcc.c

@@ -119,7 +119,7 @@ strip_telnet(int sock, char *buf, int *len)
 void
 send_sysinfo()
 {
-  char *username = NULL, *sysname = NULL, *nodename = NULL;
+  char *username = NULL, *sysname = NULL, *nodename = NULL, *arch = NULL;
   struct utsname un;
   bool gotun = 0;
 
@@ -131,23 +131,32 @@ send_sysinfo()
   username = (char *) get_user(&USERENTRY_USERNAME, conf.bot->u);
   sysname = (char *) get_user(&USERENTRY_OS, conf.bot->u);
   nodename = (char *) get_user(&USERENTRY_NODENAME, conf.bot->u);
+  arch = (char *) get_user(&USERENTRY_ARCH, conf.bot->u);
 
-  const char *usysname = NULL, *uusername = NULL, *unodename = NULL;
+  const char *usysname = NULL, *uusername = NULL, *unodename = NULL, *uarch = NULL;
 
   usysname = gotun ? un.sysname : "*";
   uusername = conf.username ? conf.username : "*";
   unodename = gotun ? un.nodename : "*";
+  uarch = gotun ? un.machine : "*";
 
   if (((sysname && egg_strcasecmp(sysname, usysname)) ||
-      (username && egg_strcasecmp(username, uusername)) ||
-      (nodename && egg_strcasecmp(nodename, unodename))) ||
-      ((!sysname && usysname) || (!username && uusername) || (!nodename && unodename))
+       (username && egg_strcasecmp(username, uusername)) ||
+       (nodename && egg_strcasecmp(nodename, unodename)) ||
+       (arch && egg_strcasecmp(arch, uarch))
+      ) ||
+      ((!sysname && usysname) || 
+       (!username && uusername) || 
+       (!nodename && unodename) || 
+       (!arch && uarch)
+      )
       ) {
       char buf[201] = "";
       size_t len = 0;
 
-      len = simple_snprintf(buf, sizeof(buf), "si %s %s %s", 
-            conf.username ? conf.username : "*", gotun ? un.sysname : "*", gotun ? un.nodename : "*");
+      len = simple_snprintf(buf, sizeof(buf), "si %s %s %s %s", 
+            conf.username ? conf.username : "*", gotun ? un.sysname : "*", gotun ? un.nodename : "*",
+            gotun ? un.machine : "*");
 
       send_uplink(buf, len);
   }

+ 13 - 0
src/userent.c

@@ -29,6 +29,7 @@ void init_userent()
   add_entry_type(&USERENTRY_OS);
   add_entry_type(&USERENTRY_NODENAME);
   add_entry_type(&USERENTRY_USERNAME);
+  add_entry_type(&USERENTRY_ARCH);
   add_entry_type(&USERENTRY_PASS);
   add_entry_type(&USERENTRY_TMPPASS);
   add_entry_type(&USERENTRY_SECPASS);
@@ -427,6 +428,18 @@ struct user_entry_type USERENTRY_OS = {
  "OS"
 };
 
+struct user_entry_type USERENTRY_ARCH = {
+ 0,
+ def_gotshare,
+ def_unpack,
+ write_userfile_protected,
+ def_kill,
+ def_get,
+ set_protected,
+ botmisc_display,
+ "ARCH"
+};
+
 void stats_add(struct userrec *u, int login, int op)
 {
   if (!u || u->bot)

+ 1 - 1
src/users.h

@@ -47,7 +47,7 @@ extern struct user_entry_type USERENTRY_COMMENT, USERENTRY_LASTON,
  USERENTRY_INFO, USERENTRY_BOTADDR, USERENTRY_HOSTS,
  USERENTRY_PASS, USERENTRY_STATS, USERENTRY_ADDED, USERENTRY_MODIFIED,
  USERENTRY_SET, USERENTRY_SECPASS, USERENTRY_USERNAME, USERENTRY_NODENAME, USERENTRY_OS,
- USERENTRY_TMPPASS;
+ USERENTRY_TMPPASS, USERENTRY_ARCH;
 
 struct laston_info {
   time_t laston;