diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c index 49cadb1c4ac5c68df85b7ea455542db403b51359..068e8f8f31324fa21a1baca9e9a9940c8d0d2dc9 100644 --- a/src/sbbs3/js_system.c +++ b/src/sbbs3/js_system.c @@ -1009,6 +1009,7 @@ js_filter_ip(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) char* p; char* prot=NULL; char* reason=NULL; + char* host=NULL; char* ip_addr=NULL; char* from=NULL; scfg_t* cfg; @@ -1026,12 +1027,14 @@ js_filter_ip(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) prot=p; else if(reason==NULL) reason=p; + else if(host==NULL) + host=p; else if(ip_addr==NULL) ip_addr=p; else if(from==NULL) from=p; } - *rval = BOOLEAN_TO_JSVAL(filter_ip(cfg,prot,reason,ip_addr,from)); + *rval = BOOLEAN_TO_JSVAL(filter_ip(cfg,prot,reason,host,ip_addr,from)); return(JS_TRUE); } @@ -1265,7 +1268,7 @@ static jsMethodSpec js_system_functions[] = { {"hacklog", js_hacklog, 5, JSTYPE_BOOLEAN, JSDOCSTR("[protocol, user, text, host, ip, port]") ,JSDOCSTR("log a suspected hack attempt") }, - {"filter_ip", js_filter_ip, 4, JSTYPE_BOOLEAN, JSDOCSTR("[protocol, reason, ip, username]") + {"filter_ip", js_filter_ip, 4, JSTYPE_BOOLEAN, JSDOCSTR("[protocol, reason, host, ip, username]") ,JSDOCSTR("add an IP address (with comment) to the system's IP filter file") }, {"get_node_message",js_get_node_message,0, JSTYPE_STRING, JSDOCSTR("number node") diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 254f30cd8afc13ee4d4f3aecb13e057a76e62b5d..2dfc8f798759151c10ceb6e6ae1b30b93e4ecd50 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -2467,7 +2467,7 @@ static void smtp_thread(void* arg) strcpy(tmp,"REFUSED"); if(dnsbl_result.s_addr==0) { /* Don't double-filter */ lprintf("%04d !FILTERING IP ADDRESS: %s", socket, host_ip); - filter_ip(&scfg, "SMTP", str, host_ip, reverse_path); + filter_ip(&scfg, "SMTP", str, host_name, host_ip, reverse_path); strcat(tmp," and FILTERED"); } spamlog(&scfg, "SMTP", tmp, "Attempted recipient in SPAM BAIT list" diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 1a807ca7e74626918bcb48f7b18d94c9df57701d..910d38bc3f0f50d8648311cf0bc3f9897dee77d4 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -796,7 +796,7 @@ extern "C" { DLLEXPORT char * DLLCALL ascii_str(uchar* str); DLLEXPORT BOOL DLLCALL findstr(char *insearch, char *fname); DLLEXPORT BOOL DLLCALL trashcan(scfg_t* cfg, char *insearch, char *name); - DLLEXPORT BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* ip_addr, char* username); + DLLEXPORT BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* host, char* ip_addr, char* username); DLLEXPORT char * DLLCALL strip_exascii(char *str); DLLEXPORT char * DLLCALL prep_file_desc(char *str); DLLEXPORT char * DLLCALL strip_ctrl(char *str); diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index 2a30c9c28fd968eb7cc082ddbafc4e85701583bc..64c5a4477df9330d41a027070a7264912277c6e0 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -2228,20 +2228,28 @@ BOOL DLLCALL is_download_free(scfg_t* cfg, uint dirnum, user_t* user) /* Add an IP address (with comment) to the IP filter/trashcan file */ /* ToDo: Move somewhere more appropriate (filter.c?) */ /****************************************************************************/ -BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* ip_addr, char* username) +BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* host, char* ip_addr, char* username) { char filename[MAX_PATH+1]; char tstr[64]; FILE* fp; time_t now=time(NULL); + if(ip_addr==NULL) + return(FALSE); + sprintf(filename,"%sip.can",cfg->text_dir); if((fp=fopen(filename,"a"))==NULL) return(FALSE); - fprintf(fp,"\n;%s %s by %s on %s\n%s\n" - ,prot,reason,username,timestr(cfg,&now,tstr),ip_addr); + fprintf(fp,"\n; %s %s by %s on %s\n" + ,prot,reason,username,timestr(cfg,&now,tstr)); + + if(host!=NULL) + fprintf(fp,"; Hostname: %s\n",host); + + fprintf(fp,"%s\n",ip_addr); fclose(fp); return(TRUE);