diff --git a/src/sbbs3/atcodes.cpp b/src/sbbs3/atcodes.cpp index 6b52a1ce6d980fca0e01e750990fb104640596bf..eb1625178d042421b9061b1b01bcc4138e08736a 100644 --- a/src/sbbs3/atcodes.cpp +++ b/src/sbbs3/atcodes.cpp @@ -505,7 +505,7 @@ const char* sbbs_t::atcode(char* sp, char* str, size_t maxlen, long* pmode, bool return(cfg.sys_inetaddr); if(!strcmp(sp,"HOSTNAME")) - return(startup->host_name); + return server_host_name(); if(!strcmp(sp,"FIDOADDR")) { if(cfg.total_faddrs) diff --git a/src/sbbs3/bulkmail.cpp b/src/sbbs3/bulkmail.cpp index cbf1da28e16cfda96a7c7f0894c1b1a6fbf87fea..8368a104305d5fb4b4bcb5279c8411bb0b9f09c9 100644 --- a/src/sbbs3/bulkmail.cpp +++ b/src/sbbs3/bulkmail.cpp @@ -117,7 +117,7 @@ bool sbbs_t::bulkmail(uchar *ar) memset(&smb,0,sizeof(smb)); smb.subnum=INVALID_SUB; /* mail database */ - i=savemsg(&cfg, &smb, &msg, &client, startup->host_name, msgbuf, /* remsg: */NULL); + i=savemsg(&cfg, &smb, &msg, &client, server_host_name(), msgbuf, /* remsg: */NULL); free(msgbuf); if(i!=0) { smb_close(&smb); diff --git a/src/sbbs3/email.cpp b/src/sbbs3/email.cpp index 53bfc6fa92865fb9864f4815df6069a7744c67f1..09de214750c9e95e21111a9bd6a2db764e573d0d 100644 --- a/src/sbbs3/email.cpp +++ b/src/sbbs3/email.cpp @@ -303,7 +303,7 @@ bool sbbs_t::email(int usernumber, const char *top, const char *subj, long mode, /* Security logging */ msg_client_hfields(&msg,&client); - smb_hfield_str(&msg,SENDERSERVER,startup->host_name); + smb_hfield_str(&msg,SENDERSERVER,server_host_name()); smb_hfield_str(&msg,SUBJECT,title); diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index ecd5d1078f65d27e32670c23c95ad655c6678219..b2dca8c89d5293af05500660a1dbd6128373820a 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -201,6 +201,11 @@ static BOOL winsock_startup(void) #endif +static char* server_host_name(void) +{ + return startup->host_name[0] ? startup->host_name : scfg.sys_inetaddr; +} + static void status(char* str) { if(startup!=NULL && startup->status!=NULL) @@ -593,7 +598,7 @@ js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, JSObject** ftp, js_c break; lprintf(LOG_DEBUG,"%04d JavaScript: Initializing System object",sock); - if(js_CreateSystemObject(js_cx, *glob, &scfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL) + if(js_CreateSystemObject(js_cx, *glob, &scfg, uptime, server_host_name(), SOCKLIB_DESC)==NULL) break; if((*ftp=JS_DefineObject(js_cx, *glob, "ftp", NULL @@ -3124,7 +3129,7 @@ static void ctrl_thread(void* arg) mswait(login_attempts*startup->login_attempt.throttle); } - sockprintf(sock,sess,"220-%s (%s)",scfg.sys_name, startup->host_name); + sockprintf(sock,sess,"220-%s (%s)",scfg.sys_name, server_host_name()); sockprintf(sock,sess," Synchronet FTP Server %s-%s Ready" ,revision,PLATFORM_DESC); sprintf(str,"%sftplogin.txt",scfg.text_dir); @@ -3850,7 +3855,7 @@ static void ctrl_thread(void* arg) ip_addr=0; /* TODO: IPv6 this here lookup */ if(startup->options&FTP_OPT_LOOKUP_PASV_IP - && (host=gethostbyname(startup->host_name))!=NULL) + && (host=gethostbyname(server_host_name()))!=NULL) ip_addr=ntohl(*((ulong*)host->h_addr_list[0])); if(ip_addr==0 && (ip_addr=startup->pasv_ip_addr.s_addr)==0) ip_addr=ntohl(pasv_addr.in.sin_addr.s_addr); @@ -6107,9 +6112,6 @@ void DLLCALL ftp_server(void* arg) break; } - if(startup->host_name[0]==0) - SAFECOPY(startup->host_name,scfg.sys_inetaddr); - if((t=checktime())!=0) { /* Check binary time */ lprintf(LOG_ERR,"!TIME PROBLEM (%ld)",t); } diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 32548b53e62428ef51e4be15eeeb21fba65a848c..e7646f753608608ece04a776437bc9479823b087 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -237,6 +237,11 @@ static BOOL winsock_startup(void) #endif +static char* server_host_name(void) +{ + return startup->host_name[0] ? startup->host_name : scfg.sys_inetaddr; +} + static void update_clients(void) { if(startup!=NULL && startup->clients!=NULL) @@ -1143,7 +1148,7 @@ static void pop3_thread(void* arg) srand((unsigned int)(time(NULL) ^ (time_t)GetCurrentThreadId())); /* seed random number generator */ rand(); /* throw-away first result */ safe_snprintf(challenge,sizeof(challenge),"<%x%x%lx%lx@%.128s>" - ,rand(),socket,(ulong)time(NULL),(ulong)clock(),startup->host_name); + ,rand(),socket,(ulong)time(NULL),(ulong)clock(), server_host_name()); sockprintf(socket,client.protocol,session,"+OK Synchronet %s Server %s-%s Ready %s" ,client.protocol, revision,PLATFORM_DESC,challenge); @@ -2231,7 +2236,7 @@ js_mailproc(SOCKET sock, client_t* client, user_t* user, struct mailproc* mailpr if(*js_glob==NULL) { /* Global Objects (including system, js, client, Socket, MsgBase, File, User, etc. */ if(!js_CreateCommonObjects(*js_cx, &scfg, &scfg, NULL - ,uptime, startup->host_name, SOCKLIB_DESC /* system */ + ,uptime, server_host_name(), SOCKLIB_DESC /* system */ ,&js_callback /* js */ ,&startup->js ,client, sock, -1 /* client */ @@ -3181,7 +3186,7 @@ static void smtp_thread(void* arg) /* SMTP session active: */ sockprintf(socket,client.protocol,session,"220 %s Synchronet %s Server %s-%s Ready" - ,startup->host_name, client.protocol, revision, PLATFORM_DESC); + ,server_host_name(), client.protocol, revision, PLATFORM_DESC); while(1) { rd = sockreadline(socket, client.protocol, session, buf, sizeof(buf)); if(rd<0) @@ -3712,7 +3717,7 @@ static void smtp_thread(void* arg) smb_hfield_str(&msg, RECIPIENT, rcpt_name); smb.subnum=subnum; - if((i=savemsg(&scfg, &smb, &msg, &client, startup->host_name, msgbuf, /* remsg: */NULL))!=SMB_SUCCESS) { + if((i=savemsg(&scfg, &smb, &msg, &client, server_host_name(), msgbuf, /* remsg: */NULL))!=SMB_SUCCESS) { lprintf(LOG_WARNING,"%04d %s !ERROR %d (%s) posting message to %s (%s)" ,socket, client.protocol, i, smb.last_error, scfg.sub[subnum]->sname, smb.file); sockprintf(socket,client.protocol,session, "452 ERROR %d (%s) posting message" @@ -3818,7 +3823,7 @@ static void smtp_thread(void* arg) /* E-mail */ smb.subnum=INVALID_SUB; /* creates message data, but no header or index records (since msg.to==NULL) */ - i=savemsg(&scfg, &smb, &msg, &client, startup->host_name, msgbuf, /* remsg: */NULL); + i=savemsg(&scfg, &smb, &msg, &client, server_host_name(), msgbuf, /* remsg: */NULL); if(smb_countattachments(&smb, &msg, msgbuf) > 0) msg.hdr.auxattr |= MSG_MIMEATTACH; msg.hdr.netattr |= MSG_KILLSENT; @@ -3877,7 +3882,7 @@ static void smtp_thread(void* arg) ,host_name,hello_name ,smtp.client_addr.addr.sa_family==AF_INET6?"IPv6: ":"" ,host_ip - ,startup->host_name + ,server_host_name() ,server_addr.addr.sa_family==AF_INET6?"IPv6: ":"" ,server_ip ,server_name @@ -4068,7 +4073,7 @@ static void smtp_thread(void* arg) p=buf+4; SKIP_WHITESPACE(p); SAFECOPY(hello_name,p); - sockprintf(socket,client.protocol,session,"250 %s",startup->host_name); + sockprintf(socket,client.protocol,session,"250 %s",server_host_name()); esmtp=FALSE; state=SMTP_STATE_HELO; cmd=SMTP_CMD_NONE; @@ -4080,7 +4085,7 @@ static void smtp_thread(void* arg) p=buf+4; SKIP_WHITESPACE(p); SAFECOPY(hello_name,p); - sockprintf(socket,client.protocol,session,"250-%s",startup->host_name); + sockprintf(socket,client.protocol,session,"250-%s",server_host_name()); sockprintf(socket,client.protocol,session,"250-AUTH PLAIN LOGIN CRAM-MD5"); sockprintf(socket,client.protocol,session,"250-SEND"); sockprintf(socket,client.protocol,session,"250-SOML"); @@ -4209,7 +4214,7 @@ static void smtp_thread(void* arg) } if(!stricmp(buf,"AUTH CRAM-MD5")) { safe_snprintf(challenge,sizeof(challenge),"<%x%x%lx%lx@%s>" - ,rand(),socket,(ulong)time(NULL),(ulong)clock(),startup->host_name); + ,rand(),socket,(ulong)time(NULL),(ulong)clock(),server_host_name()); #if 0 lprintf(LOG_DEBUG,"%04d SMTP CRAM-MD5 challenge: %s" ,socket,challenge); @@ -4300,7 +4305,7 @@ static void smtp_thread(void* arg) continue; } if(!stricmp(buf,"QUIT")) { - sockprintf(socket,client.protocol,session,"221 %s Service closing transmission channel",startup->host_name); + sockprintf(socket,client.protocol,session,"221 %s Service closing transmission channel",server_host_name()); break; } if(!stricmp(buf,"NOOP")) { @@ -5104,7 +5109,7 @@ BOOL bounce(SOCKET sock, smb_t* smb, smbmsg_t* msg, char* err, BOOL immediate) else attempts[0]=0; SAFEPRINTF2(str,"%s reporting delivery failure of message %s" - ,startup->host_name, attempts); + ,server_host_name(), attempts); smb_hfield_str(&newmsg, SMB_COMMENT, str); SAFEPRINTF2(str,"from %s to %s\r\n" ,msg->from @@ -5294,7 +5299,7 @@ static SOCKET sendmail_negotiate(CRYPT_SESSION *session, smb_t *smb, smbmsg_t *m return INVALID_SOCKET; } - sockprintf(sock, "SEND", *session,"EHLO %s",startup->host_name); + sockprintf(sock, "SEND", *session,"EHLO %s",server_host_name()); switch (sockgetrsp_opt(sock, "SEND", *session,"250", "STARTTLS", buf, sizeof(buf))) { case -1: if(startup->options&MAIL_OPT_RELAY_TX @@ -5305,7 +5310,7 @@ static SOCKET sendmail_negotiate(CRYPT_SESSION *session, smb_t *smb, smbmsg_t *m mail_close_socket(&sock, session); return INVALID_SOCKET; } - sockprintf(sock, "SEND", *session,"HELO %s",startup->host_name); + sockprintf(sock, "SEND", *session,"HELO %s",server_host_name()); if(!sockgetrsp(sock, "SEND", *session,"250",buf,sizeof(buf))) { SAFEPRINTF3(err,badrsp_err,server,buf,"250"); remove_msg_intransit(smb,msg); @@ -5371,7 +5376,7 @@ static SOCKET sendmail_negotiate(CRYPT_SESSION *session, smb_t *smb, smbmsg_t *m continue; } } - sockprintf(sock,prot,*session,"EHLO %s",startup->host_name); + sockprintf(sock,prot,*session,"EHLO %s",server_host_name()); if(!sockgetrsp(sock, prot, *session,"250",buf,sizeof(buf))) { SAFEPRINTF3(err,badrsp_err,server,buf,"220"); lprintf(LOG_INFO, "%04d SEND/TLS %s", sock, err); @@ -6128,9 +6133,6 @@ void DLLCALL mail_server(void* arg) iniCloseFile(fp); } - if(startup->host_name[0]==0) - SAFECOPY(startup->host_name,scfg.sys_inetaddr); - if((t=checktime())!=0) { /* Check binary time */ lprintf(LOG_ERR,"!TIME PROBLEM (%ld)",t); } diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 7daab4f0bd2d33c4206c6a1a93dfd6df8b0947db..1556fea37b491148808539017c54cdb7e70d4ff4 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -1284,7 +1284,7 @@ JSContext* sbbs_t::js_init(JSRuntime** runtime, JSObject** glob, const char* des /* Global Objects (including system, js, client, Socket, MsgBase, File, User, etc. */ if(!js_CreateCommonObjects(js_cx, &scfg, &cfg, js_global_functions - ,uptime, startup->host_name, SOCKLIB_DESC /* system */ + ,uptime, server_host_name(), SOCKLIB_DESC /* system */ ,&js_callback /* js */ ,&startup->js ,&client, client_socket, -1 /* client */ @@ -3077,7 +3077,7 @@ void event_thread(void* arg) && (now_tm.tm_hour*60)+now_tm.tm_min>=sbbs->cfg.event[i]->time && (now_tm.tm_mday!=tm.tm_mday || now_tm.tm_mon!=tm.tm_mon))) && sbbs->cfg.event[i]->days&(1<<now_tm.tm_wday) - && (sbbs->cfg.event[i]->mdays==0 + && (sbbs->cfg.event[i]->mdays < 2 || sbbs->cfg.event[i]->mdays&(1<<now_tm.tm_mday)) && (sbbs->cfg.event[i]->months==0 || sbbs->cfg.event[i]->months&(1<<now_tm.tm_mon)))) @@ -5095,9 +5095,6 @@ void DLLCALL bbs_thread(void* arg) return; } - if(startup->host_name[0]==0) - SAFECOPY(startup->host_name,scfg.sys_inetaddr); - if((t=checktime())!=0) { /* Check binary time */ lprintf(LOG_ERR,"!TIME PROBLEM (%ld)",t); } diff --git a/src/sbbs3/netmail.cpp b/src/sbbs3/netmail.cpp index 73cdfeeb873c1f75863cc968ad25cf8a7a80f6f9..80e947617161a08bd493613799274885c2592458 100644 --- a/src/sbbs3/netmail.cpp +++ b/src/sbbs3/netmail.cpp @@ -311,7 +311,7 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode, smb_t* resm smb_t smb; memset(&smb, 0, sizeof(smb)); smb.subnum = INVALID_SUB; - int result = savemsg(&cfg, &smb, &msg, &client, startup->host_name, buf, remsg); + int result = savemsg(&cfg, &smb, &msg, &client, server_host_name(), buf, remsg); free(buf); smb_close(&smb); smb_freemsgmem(&msg); @@ -1120,13 +1120,13 @@ bool sbbs_t::inetmail(const char *into, const char *subj, long mode, smb_t* resm /* Security logging */ msg_client_hfields(&msg,&client); - smb_hfield_str(&msg,SENDERSERVER,startup->host_name); + smb_hfield_str(&msg,SENDERSERVER, server_host_name()); smb_hfield_str(&msg,SUBJECT,title); editor_info_to_msg(&msg, editor, charset); - i = savemsg(&cfg, &smb, &msg, &client, startup->host_name, msgbuf, remsg); + i = savemsg(&cfg, &smb, &msg, &client, server_host_name(), msgbuf, remsg); free(msgbuf); if(i!=SMB_SUCCESS) { @@ -1396,7 +1396,7 @@ bool sbbs_t::qnetmail(const char *into, const char *subj, long mode, smb_t* resm /* Security logging */ msg_client_hfields(&msg,&client); - smb_hfield_str(&msg,SENDERSERVER,startup->host_name); + smb_hfield_str(&msg,SENDERSERVER, server_host_name()); smb_hfield_str(&msg,SUBJECT,title); diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp index c1d30f6f603bafcb858ab5395b027a558e2b42fb..c4899b75bc5ff4f09af0c9a33e146dbab6649fa6 100644 --- a/src/sbbs3/postmsg.cpp +++ b/src/sbbs3/postmsg.cpp @@ -297,7 +297,7 @@ bool sbbs_t::postmsg(uint subnum, long wm_mode, smb_t* resmb, smbmsg_t* remsg) /* Security logging */ msg_client_hfields(&msg,&client); - smb_hfield_str(&msg,SENDERSERVER,startup->host_name); + smb_hfield_str(&msg,SENDERSERVER, server_host_name()); smb_hfield_str(&msg,SUBJECT,title); diff --git a/src/sbbs3/readmsgs.cpp b/src/sbbs3/readmsgs.cpp index 726e06298180605b5479cbc02529a664b3ad229b..4fcf265ec2a1267c733f6deb354161f2d2768f9d 100644 --- a/src/sbbs3/readmsgs.cpp +++ b/src/sbbs3/readmsgs.cpp @@ -1163,7 +1163,7 @@ int sbbs_t::scanposts(uint subnum, long mode, const char *find) /* Security logging */ msg_client_hfields(&vote, &client); - smb_hfield_str(&vote, SENDERSERVER, startup->host_name); + smb_hfield_str(&vote, SENDERSERVER, server_host_name()); if((i=votemsg(&cfg, &smb, &vote, notice, text[VoteNoticeFmt])) != SMB_SUCCESS) errormsg(WHERE,ERR_WRITE,smb.file,i,smb.last_error); diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index d5cc3fcea33176da8866ca45f9c90cb7227213a7..dd2b758a1047cba22299030d2732da5070a1796f 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -643,6 +643,7 @@ public: bool gettimeleft_inside; /* str.cpp */ + char* server_host_name(void); char* timestr(time_t); char* datestr(time_t); char timestr_output[60]; diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 9c3019e0202ade215008431d062bc39c0918ed77..f7ed01284739d255d4bec12bba614ee11570aa99 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -182,6 +182,11 @@ static BOOL winsock_startup(void) #endif +static char* server_host_name(void) +{ + return startup->host_name[0] ? startup->host_name : scfg.sys_inetaddr; +} + static ulong active_clients(void) { ulong i; @@ -824,7 +829,7 @@ js_initcx(JSRuntime* js_runtime, SOCKET sock, service_client_t* service_client, if(!js_CreateUserObjects(js_cx, *glob, &scfg, /*user: */NULL, service_client->client, NULL, service_client->subscan)) break; - if(js_CreateSystemObject(js_cx, *glob, &scfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL) + if(js_CreateSystemObject(js_cx, *glob, &scfg, uptime, server_host_name(), SOCKLIB_DESC)==NULL) break; if(service_client->service->js_server_props.version[0]==0) { @@ -1840,9 +1845,6 @@ void DLLCALL services_thread(void* arg) return; } - if(startup->host_name[0]==0) - SAFECOPY(startup->host_name,scfg.sys_inetaddr); - if((t=checktime())!=0) { /* Check binary time */ lprintf(LOG_ERR,"!TIME PROBLEM (%ld)",t); } diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp index 70071f0358c787fc99f9d199769087190e45b121..3200e3f67f01335e57f3609cbc9e46088d1a7f09 100644 --- a/src/sbbs3/str.cpp +++ b/src/sbbs3/str.cpp @@ -1272,3 +1272,8 @@ char* sbbs_t::age_of_posted_item(char* buf, size_t max, time_t t) safe_snprintf(buf, max, text[AgeOfPostedItem], value, units, past); return buf; } + +char* sbbs_t::server_host_name(void) +{ + return startup->host_name[0] ? startup->host_name : cfg.sys_inetaddr; +} diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index 762e31f9bc15a781305923ee7ddf558a2c2ccac8..53619e75dec6e4dcf3613682c72c3770ee587024 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -740,6 +740,11 @@ static BOOL winsock_startup(void) #endif +static char* server_host_name(void) +{ + return startup->host_name[0] ? startup->host_name : scfg.sys_inetaddr; +} + static void status(char* str) { if(startup!=NULL && startup->status!=NULL) @@ -2797,7 +2802,7 @@ static BOOL parse_headers(http_session_t * session) } if(content_len) session->req.post_len = content_len; - add_env(session,"SERVER_NAME",session->req.host[0] ? session->req.host : startup->host_name ); + add_env(session,"SERVER_NAME",session->req.host[0] ? session->req.host : server_host_name() ); return TRUE; } @@ -3125,12 +3130,12 @@ static BOOL get_request_headers(http_session_t * session) } if(!(session->req.vhost[0])) { - SAFECOPY(session->req.vhost, startup->host_name); + SAFECOPY(session->req.vhost, server_host_name()); /* Lower-case for normalization */ strlwr(session->req.vhost); } if(!(session->req.host[0])) { - SAFECOPY(session->req.host, startup->host_name); + SAFECOPY(session->req.host, server_host_name()); /* Lower-case for normalization */ strlwr(session->req.host); } @@ -5764,7 +5769,7 @@ js_initcx(http_session_t *session) if(!js_CreateCommonObjects(js_cx, &scfg, NULL ,NULL /* global */ ,uptime /* system */ - ,startup->host_name /* system */ + ,server_host_name() /* system */ ,SOCKLIB_DESC /* system */ ,&session->js_callback /* js */ ,&startup->js /* js */ @@ -7067,9 +7072,6 @@ void DLLCALL web_server(void* arg) iniCloseFile(fp); } - if(startup->host_name[0]==0) - SAFECOPY(startup->host_name,scfg.sys_inetaddr); - if(uptime==0) uptime=time(NULL); /* this must be done *after* setting the timezone */ diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp index 6387eefa8b057c67221c3f46273a751a9cce1b94..c8fcda6fffbcb0a8125e5051da3317579b22584a 100644 --- a/src/sbbs3/writemsg.cpp +++ b/src/sbbs3/writemsg.cpp @@ -1378,7 +1378,7 @@ void sbbs_t::forwardmail(smbmsg_t *msg, int usernumber) /* Security logging */ msg_client_hfields(msg,&client); - smb_hfield_str(msg,SENDERSERVER,startup->host_name); + smb_hfield_str(msg,SENDERSERVER, server_host_name()); username(&cfg,usernumber,touser); smb_hfield_str(msg,RECIPIENT,touser);