@@ -293,6 +293,9 @@ int bbsnet_connect(int n)
293293 int tos ;
294294 char remote_addr [IP_ADDR_LEN ];
295295 int remote_port ;
296+ char local_addr [IP_ADDR_LEN ];
297+ int local_port ;
298+ socklen_t sock_len ;
296299 time_t t_used = time (NULL );
297300 struct tm * tm_used ;
298301 int ch ;
@@ -472,9 +475,21 @@ int bbsnet_connect(int n)
472475 log_error ("setsockopt IP_TOS=%d error (%d)\n" , tos , errno );
473476 }
474477
478+ sock_len = sizeof (sin );
479+ if (getsockname (sock , (struct sockaddr * )& sin , & sock_len ) < 0 )
480+ {
481+ log_error ("getsockname() error: %d" , errno );
482+ goto cleanup ;
483+ }
484+
485+ strncpy (local_addr , inet_ntoa (sin .sin_addr ), sizeof (local_addr ) - 1 );
486+ local_addr [sizeof (local_addr ) - 1 ] = '\0' ;
487+ local_port = ntohs (sin .sin_port );
488+
475489 prints ("\033[1;31m连接成功!\033[m\r\n" );
476490 iflush ();
477- log_common ("BBSNET connect to %s:%d\n" , remote_addr , remote_port );
491+ log_common ("BBSNET connect to %s:%d from %s:%d by [%s]\n" ,
492+ remote_addr , remote_port , local_addr , local_port , BBS_username );
478493
479494 input_cd = iconv_open (bbsnet_conf [n ].charset , BBS_NET_DEFAULT_CHARSET );
480495 if (input_cd == (iconv_t )(-1 ))
0 commit comments