Browse Source

* Only use oident for server connects, not for bot linking.

Bryan Drewery 16 năm trước cách đây
mục cha
commit
e407df1289
6 tập tin đã thay đổi với 12 bổ sung10 xóa
  1. 1 0
      doc/UPDATES
  2. 3 2
      src/dccutil.c
  3. 1 1
      src/dccutil.h
  4. 2 2
      src/mod/server.mod/servmsg.c
  5. 3 3
      src/net.c
  6. 2 2
      src/net.h

+ 1 - 0
doc/UPDATES

@@ -50,6 +50,7 @@
 * Removed 'chanset +knock' and replaced with 'chanset knock (Op|Voice|User)', see 'help chaninfo'
 * Default log timestamp now includes seconds
 * Hubs no longer include their own timestamp over botnet
+* Only use oident for server connects, not for bot linking.
 
 1.2.16.1
 * Fix linux compile errors

+ 3 - 2
src/dccutil.c

@@ -941,8 +941,9 @@ listen_all(port_t lport, bool off)
   return idx;
 }
 
+// @param identd 2 = use oidentd
 void
-identd_open(const char *sourceIp, const char *destIp)
+identd_open(const char *sourceIp, const char *destIp, int identd)
 {
   int idx;
   int i = -1;
@@ -981,7 +982,7 @@ identd_open(const char *sourceIp, const char *destIp)
   }
 
   /* Only makes sense if we're spoofing by nick */
-  if (conf.homedir && oidentd && ident_botnick) {
+  if (identd == 2 && conf.homedir && oidentd && ident_botnick) {
     char oidentd_conf[1024] = "";
 
     simple_snprintf(oidentd_conf, sizeof(oidentd_conf), "%s/.oidentd.conf", conf.homedir);

+ 1 - 1
src/dccutil.h

@@ -55,7 +55,7 @@ char *add_cr(char *);
 void changeover_dcc(int, struct dcc_table *, int);
 void do_boot(int, const char *, const char *);
 int detect_dcc_flood(time_t *, struct chat_info *, int);
-void identd_open(const char * = NULL, const char * = NULL);
+void identd_open(const char * = NULL, const char * = NULL, int identd = 1);
 void identd_close();
 int listen_all(port_t, bool);
 bool valid_idx(int);

+ 2 - 2
src/mod/server.mod/servmsg.c

@@ -1720,8 +1720,8 @@ static void server_dns_callback(int id, void *client_data, const char *host, cha
 
 //  identd_open(idx);
 
-  //No proxy, use identd
-  serv = open_telnet(ip, dcc[idx].port, 0, 1);
+  //No proxy, use identd, 2 = spoof ident
+  serv = open_telnet(ip, dcc[idx].port, 0, 2);
 
   if (serv < 0) {
     putlog(LOG_SERV, "*", "Failed connect to %s (%s)", dcc[idx].host, strerror(errno));

+ 3 - 3
src/net.c

@@ -534,7 +534,7 @@ void initialize_sockaddr(int af_type, const char *host, port_t port, union socka
  *   -1  strerror()/errno type error
  *   -2  can't resolve hostname
  */
-int open_telnet_raw(int sock, const char *ipIn, port_t sport, bool proxy_on, bool identd)
+int open_telnet_raw(int sock, const char *ipIn, port_t sport, bool proxy_on, int identd)
 {
   static port_t port = 0;
   union sockaddr_union so;
@@ -594,7 +594,7 @@ int open_telnet_raw(int sock, const char *ipIn, port_t sport, bool proxy_on, boo
   }
 
   if (identd)
-    identd_open(myipstr(is_resolved), ipIn);
+    identd_open(myipstr(is_resolved), ipIn, identd);
 
   int rc = -1;
 
@@ -625,7 +625,7 @@ int open_telnet_raw(int sock, const char *ipIn, port_t sport, bool proxy_on, boo
 }
 
 /* Ordinary non-binary connection attempt */
-int open_telnet(const char *ip, port_t port, bool proxy, bool identd)
+int open_telnet(const char *ip, port_t port, bool proxy, int identd)
 {
   int sock = -1;
   

+ 2 - 2
src/net.h

@@ -122,9 +122,9 @@ int open_address_listen(in_addr_t, int, port_t *);
 #else
 int open_address_listen(in_addr_t, port_t *);
 #endif /* USE_IPV6 */
-int open_telnet(const char *, port_t, bool proxy = 0, bool identd = 0);
+int open_telnet(const char *, port_t, bool proxy = 0, int identd = 0);
 int open_telnet_dcc(int, char *, char *);
-int open_telnet_raw(int, const char *, port_t, bool, bool = 0);
+int open_telnet_raw(int, const char *, port_t, bool, int = 0);
 void tputs(int, char *, size_t);
 void dequeue_sockets();
 int sockgets(char *, int *);