From df1fbd1eb07248d2bdaef6996a8565e2e981676c Mon Sep 17 00:00:00 2001 From: Rob Swindell <rob@synchro.net> Date: Sun, 18 Apr 2021 19:56:40 -0700 Subject: [PATCH] Control sound-mute via semfile (ctrl/sound.muted) rather than sbbs.ini There was a bug with reloading the configuration files in sbbsctrl where the sound button no longer reflected the truth and the sysop's previous click-state of the button was lost. Rather than going through writing the OPT_MUTE flag to the Options fields of all the sections of the sbbs.ini and then re-loading that file as a result, just do like we did with the sysop chat availability: use a semfile. So much simpler. If anyone ever needs instance-specific muting, we can create/check instance/host-specific mute semfiles then. Doubt that'll happen though. Also, removed the old sysavail control methods of ntsvcs too. --- src/sbbs3/ctrl/MainFormUnit.cpp | 37 +++++++++------------------------ src/sbbs3/ftpsrvr.c | 10 ++++----- src/sbbs3/login.cpp | 4 ++-- src/sbbs3/logout.cpp | 2 +- src/sbbs3/mailsrvr.c | 18 ++++++++-------- src/sbbs3/main.cpp | 4 ++-- src/sbbs3/ntsvcs.c | 22 -------------------- src/sbbs3/ntsvcs.h | 20 +----------------- src/sbbs3/services.c | 12 +++++------ src/sbbs3/startup.h | 6 +++--- src/sbbs3/userdat.c | 19 +++++++++++++++++ src/sbbs3/userdat.h | 2 ++ src/sbbs3/websrvr.c | 12 +++++------ 13 files changed, 66 insertions(+), 102 deletions(-) diff --git a/src/sbbs3/ctrl/MainFormUnit.cpp b/src/sbbs3/ctrl/MainFormUnit.cpp index a6adb78545..b2b267337d 100644 --- a/src/sbbs3/ctrl/MainFormUnit.cpp +++ b/src/sbbs3/ctrl/MainFormUnit.cpp @@ -1999,7 +1999,7 @@ void __fastcall TMainForm::StartupTimerTick(TObject *Sender) void __fastcall TMainForm::DisplayMainPanels(TObject* Sender) { - if(bbs_startup.options&BBS_OPT_MUTE) + if(sound_muted(&cfg)) SoundToggle->Checked=false; else SoundToggle->Checked=true; @@ -2557,35 +2557,11 @@ void __fastcall TMainForm::HelpAboutMenuItemClick(TObject *Sender) //--------------------------------------------------------------------------- BOOL MuteService(SC_HANDLE svc, SERVICE_STATUS* status, BOOL mute) { - if(svc==NULL || controlService==NULL) - return(FALSE); - - return controlService(svc - ,mute ? SERVICE_CONTROL_MUTE:SERVICE_CONTROL_UNMUTE, status); } //--------------------------------------------------------------------------- void __fastcall TMainForm::SoundToggleExecute(TObject *Sender) { SoundToggle->Checked=!SoundToggle->Checked; - - if(!SoundToggle->Checked) { - bbs_startup.options|=BBS_OPT_MUTE; - ftp_startup.options|=FTP_OPT_MUTE; - web_startup.options|=FTP_OPT_MUTE; - mail_startup.options|=MAIL_OPT_MUTE; - services_startup.options|=MAIL_OPT_MUTE; - } else { - bbs_startup.options&=~BBS_OPT_MUTE; - ftp_startup.options&=~FTP_OPT_MUTE; - web_startup.options&=~FTP_OPT_MUTE; - mail_startup.options&=~MAIL_OPT_MUTE; - services_startup.options&=~MAIL_OPT_MUTE; - } - MuteService(bbs_svc,&bbs_svc_status,!SoundToggle->Checked); - MuteService(ftp_svc,&ftp_svc_status,!SoundToggle->Checked); - MuteService(web_svc,&web_svc_status,!SoundToggle->Checked); - MuteService(mail_svc,&mail_svc_status,!SoundToggle->Checked); - MuteService(services_svc,&services_svc_status,!SoundToggle->Checked); } //--------------------------------------------------------------------------- void __fastcall TMainForm::BBSStatisticsLogMenuItemClick(TObject *Sender) @@ -2699,12 +2675,18 @@ void __fastcall TMainForm::UpTimerTick(TObject *Sender) static time_t start; ulong up; static bool sysop_available; + static bool sound_muted; if(ChatToggle->Checked != sysop_available) { sysop_available = ChatToggle->Checked; set_sysop_availability(&cfg, sysop_available); } + if(SoundToggle->Checked != !sound_muted) { + sound_muted = !SoundToggle->Checked; + set_sound_muted(&cfg, sound_muted); + } + if(clearLoginAttemptList) { loginAttemptListClear(&login_attempt_list); clearLoginAttemptList = false; @@ -3147,11 +3129,12 @@ void __fastcall TMainForm::reload_config(void) ChatToggle->Checked=true; else ChatToggle->Checked=false; - - if(bbs_startup.options&BBS_OPT_MUTE) + + if(sound_muted(&cfg)) SoundToggle->Checked=false; else SoundToggle->Checked=true; + SetControls(); } //--------------------------------------------------------------------------- diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 68324b0966..18870ac956 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -1724,7 +1724,7 @@ void ftp_printfile(SOCKET sock, CRYPT_SESSION sess, const char* name, unsigned c static BOOL ftp_hacklog(char* prot, char* user, char* text, char* host, union xp_sockaddr* addr) { #ifdef _WIN32 - if(startup->sound.hack[0] && !(startup->options&FTP_OPT_MUTE)) + if(startup->sound.hack[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hack, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -2198,7 +2198,7 @@ static void ctrl_thread(void* arg) free(arg); #ifdef _WIN32 - if(startup->sound.answer[0] && !(startup->options&FTP_OPT_MUTE)) + if(startup->sound.answer[0] && !sound_muted(&scfg)) PlaySound(startup->sound.answer, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -2566,7 +2566,7 @@ static void ctrl_thread(void* arg) putuserdat(&scfg, &user); #ifdef _WIN32 - if(startup->sound.login[0] && !(startup->options&FTP_OPT_MUTE)) + if(startup->sound.login[0] && !sound_muted(&scfg)) PlaySound(startup->sound.login, NULL, SND_ASYNC|SND_FILENAME); #endif continue; @@ -4807,14 +4807,14 @@ static void ctrl_thread(void* arg) lprintf(LOG_ERR,"%04d <%s> !ERROR in logoutuserdat", sock, user.alias); lprintf(LOG_INFO,"%04d <%s> logged off", sock, user.alias); #ifdef _WIN32 - if(startup->sound.logout[0] && !(startup->options&FTP_OPT_MUTE)) + if(startup->sound.logout[0] && !sound_muted(&scfg)) PlaySound(startup->sound.logout, NULL, SND_ASYNC|SND_FILENAME); #endif } #ifdef _WIN32 - if(startup->sound.hangup[0] && !(startup->options&FTP_OPT_MUTE)) + if(startup->sound.hangup[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hangup, NULL, SND_ASYNC|SND_FILENAME); #endif diff --git a/src/sbbs3/login.cpp b/src/sbbs3/login.cpp index 094684302f..4690fdcfc4 100644 --- a/src/sbbs3/login.cpp +++ b/src/sbbs3/login.cpp @@ -147,7 +147,7 @@ int sbbs_t::login(char *username, char *pw_prompt, const char* user_pw, const ch } #ifdef _WIN32 - if(startup->sound.login[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.login[0] && !sound_muted(&cfg)) PlaySound(startup->sound.login, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -173,7 +173,7 @@ void sbbs_t::badlogin(char* user, char* passwd, const char* protocol, xp_sockadd getnameinfo(&addr->addr, addr_len, host_name, sizeof(host_name), NULL, 0, NI_NAMEREQD); ::hacklog(&cfg, reason, user, passwd, host_name, addr); #ifdef _WIN32 - if(startup->sound.hack[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.hack[0] && !sound_muted(&cfg)) PlaySound(startup->sound.hack, NULL, SND_ASYNC|SND_FILENAME); #endif } diff --git a/src/sbbs3/logout.cpp b/src/sbbs3/logout.cpp index d2df4e4d22..25c7a07de8 100644 --- a/src/sbbs3/logout.cpp +++ b/src/sbbs3/logout.cpp @@ -149,7 +149,7 @@ void sbbs_t::logout() answertime=now; // In case we're re-logging on #ifdef _WIN32 - if(startup->sound.logout[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.logout[0] && !sound_muted(&cfg)) PlaySound(startup->sound.logout, NULL, SND_ASYNC|SND_FILENAME); #endif diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 1134be59bf..a2dd7d4c95 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -958,7 +958,7 @@ static void badlogin(SOCKET sock, CRYPT_SESSION sess, const char* prot, const ch if(startup->login_attempt.hack_threshold && count>=startup->login_attempt.hack_threshold) { hacklog(&scfg, reason, user, passwd, host, addr); #ifdef _WIN32 - if(startup->sound.hack[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->sound.hack[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hack, NULL, SND_ASYNC|SND_FILENAME); #endif } @@ -1028,7 +1028,7 @@ static void pop3_thread(void* arg) lprintf(LOG_DEBUG,"%04d %s session thread started", socket, client.protocol); #ifdef _WIN32 - if(startup->pop3_sound[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->pop3_sound[0] && !sound_muted(&scfg)) PlaySound(startup->pop3_sound, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -1344,7 +1344,7 @@ static void pop3_thread(void* arg) SAFEPRINTF2(str,"%s: %s", client.protocol, user.alias); status(str); #ifdef _WIN32 - if(startup->sound.login[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->sound.login[0] && !sound_muted(&scfg)) PlaySound(startup->sound.login, NULL, SND_ASYNC|SND_FILENAME); #endif SAFEPRINTF(smb.file,"%smail",scfg.data_dir); @@ -1715,7 +1715,7 @@ static void pop3_thread(void* arg) } if(user.number) { #ifdef _WIN32 - if(startup->sound.logout[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->sound.logout[0] && !sound_muted(&scfg)) PlaySound(startup->sound.logout, NULL, SND_ASYNC|SND_FILENAME); #endif if(!logoutuserdat(&scfg,&user,time(NULL),client.time)) @@ -2935,7 +2935,7 @@ static void smtp_thread(void* arg) lprintf(LOG_DEBUG,"%04d %s Session thread started", socket, client.protocol); #ifdef _WIN32 - if(startup->inbound_sound[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->inbound_sound[0] && !sound_muted(&scfg)) PlaySound(startup->inbound_sound, NULL, SND_ASYNC|SND_FILENAME); #endif SAFEPRINTF(domain_list,"%sdomains.cfg",scfg.ctrl_dir); @@ -4218,7 +4218,7 @@ static void smtp_thread(void* arg) SAFEPRINTF(client_id, "<%s>", relay_user.alias); sockprintf(socket,client.protocol,session,auth_ok); #ifdef _WIN32 - if(startup->sound.login[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->sound.login[0] && !sound_muted(&scfg)) PlaySound(startup->sound.login, NULL, SND_ASYNC|SND_FILENAME); #endif continue; @@ -4316,7 +4316,7 @@ static void smtp_thread(void* arg) SAFEPRINTF(client_id, "<%s>", relay_user.alias); sockprintf(socket,client.protocol,session,auth_ok); #ifdef _WIN32 - if(startup->sound.login[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->sound.login[0] && !sound_muted(&scfg)) PlaySound(startup->sound.login, NULL, SND_ASYNC|SND_FILENAME); #endif continue; @@ -5037,7 +5037,7 @@ static void smtp_thread(void* arg) #ifdef _WIN32 if(relay_user.number) { - if(startup->sound.logout[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->sound.logout[0] && !sound_muted(&scfg)) PlaySound(startup->sound.logout, NULL, SND_ASYNC|SND_FILENAME); } #endif @@ -5605,7 +5605,7 @@ static void sendmail_thread(void* arg) SAFEPRINTF2(str,"Sending (%u of %u)", u+1, msgs); status(str); #ifdef _WIN32 - if(startup->outbound_sound[0] && !(startup->options&MAIL_OPT_MUTE)) + if(startup->outbound_sound[0] && !sound_muted(&scfg)) PlaySound(startup->outbound_sound, NULL, SND_ASYNC|SND_FILENAME); #endif diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 3e9c2ca292..c397eaafb4 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -4386,7 +4386,7 @@ void node_thread(void* arg) } #ifdef _WIN32 - if(startup->sound.hangup[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.hangup[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hangup, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -5337,7 +5337,7 @@ NO_SSH: } #ifdef _WIN32 - if(startup->sound.answer[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.answer[0] && !sound_muted(&scfg)) PlaySound(startup->sound.answer, NULL, SND_ASYNC|SND_FILENAME); #endif diff --git a/src/sbbs3/ntsvcs.c b/src/sbbs3/ntsvcs.c index 97083e4076..6e55acf4dd 100644 --- a/src/sbbs3/ntsvcs.c +++ b/src/sbbs3/ntsvcs.c @@ -185,12 +185,6 @@ static void svc_ctrl_handler(sbbs_ntsvc_t* svc, DWORD dwCtrlCode) case SERVICE_CONTROL_RECYCLE: *svc->recycle_now=TRUE; break; - case SERVICE_CONTROL_MUTE: - *svc->options|=BBS_OPT_MUTE; - break; - case SERVICE_CONTROL_UNMUTE: - *svc->options&=~BBS_OPT_MUTE; - break; case SERVICE_CONTROL_STOP: case SERVICE_CONTROL_SHUTDOWN: svc->terminate(); @@ -632,14 +626,6 @@ static const char* control_desc(DWORD ctrl) /* Synchronet-specific */ case SERVICE_CONTROL_RECYCLE: return("Recycling"); - case SERVICE_CONTROL_MUTE: - return("Muting"); - case SERVICE_CONTROL_UNMUTE: - return("Un-muting"); - case SERVICE_CONTROL_SYSOP_AVAILABLE: - return("Sysop Available"); - case SERVICE_CONTROL_SYSOP_UNAVAILABLE: - return("Sysop Unavailable"); } SAFEPRINTF(str,"Control: %d", ctrl); return(str); @@ -1304,12 +1290,6 @@ int main(int argc, char** argv) if(!stricmp(arg,"recycle")) return control(argv[i+1],SERVICE_CONTROL_RECYCLE); - - if(!stricmp(arg,"mute")) - return control(argv[i+1],SERVICE_CONTROL_MUTE); - - if(!stricmp(arg,"unmute")) - return control(argv[i+1],SERVICE_CONTROL_UNMUTE); } if(start_services) { @@ -1341,8 +1321,6 @@ int main(int argc, char** argv) printf("%-20s %s\n","start","to start services"); printf("%-20s %s\n","stop","to stop services"); printf("%-20s %s\n","recycle","to recycle services"); - printf("%-20s %s\n","mute","to mute (sounds of) services"); - printf("%-20s %s\n","unmute","to unmute (sounds of) services"); printf("\nAvailable Services:\n\n"); printf("%-20s %s\n","Name","Description"); diff --git a/src/sbbs3/ntsvcs.h b/src/sbbs3/ntsvcs.h index ee124af77b..9a2fa2c8a0 100644 --- a/src/sbbs3/ntsvcs.h +++ b/src/sbbs3/ntsvcs.h @@ -1,7 +1,5 @@ /* Synchronet BBS Windows NT Service Names */ -/* $Id: ntsvcs.h,v 1.7 2018/03/20 03:36:11 rswindell Exp $ */ - /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * @@ -15,21 +13,9 @@ * See the GNU General Public License for more details: gpl.txt or * * http://www.fsf.org/copyleft/gpl.html * * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ @@ -46,10 +32,6 @@ /* User-defined control codes */ enum { SERVICE_CONTROL_RECYCLE=128 - ,SERVICE_CONTROL_MUTE - ,SERVICE_CONTROL_UNMUTE - ,SERVICE_CONTROL_SYSOP_AVAILABLE /* BBS service only */ - ,SERVICE_CONTROL_SYSOP_UNAVAILABLE /* BBS service only */ }; typedef struct { @@ -59,4 +41,4 @@ typedef struct { uint32_t repeated; } log_msg_t; -#endif /* Don't add anything after this line */ \ No newline at end of file +#endif /* Don't add anything after this line */ diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 30b5aa81dd..f2b0bc384f 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -326,7 +326,7 @@ static void badlogin(SOCKET sock, char* prot, char* user, char* passwd, char* ho if(startup->login_attempt.hack_threshold && count>=startup->login_attempt.hack_threshold) { hacklog(&scfg, reason, user, passwd, host, addr); #ifdef _WIN32 - if(startup->sound.hack[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.hack[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hack, NULL, SND_ASYNC|SND_FILENAME); #endif } @@ -460,7 +460,7 @@ js_login(JSContext *cx, uintN argc, jsval *arglist) JS_SET_RVAL(cx, arglist,BOOLEAN_TO_JSVAL(JS_TRUE)); #ifdef _WIN32 - if(startup->sound.login[0] && !(startup->options&BBS_OPT_MUTE) + if(startup->sound.login[0] && !sound_muted(&scfg) && !(service->options&BBS_OPT_MUTE)) PlaySound(startup->sound.login, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -1189,7 +1189,7 @@ static void js_service_thread(void* arg) logoutuserdat(&scfg,&service_client.user,time(NULL),service_client.logintime); #ifdef _WIN32 - if(startup->sound.logout[0] && !(startup->options&BBS_OPT_MUTE) + if(startup->sound.logout[0] && !sound_muted(&scfg) && !(service->options&BBS_OPT_MUTE)) PlaySound(startup->sound.logout, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -1200,7 +1200,7 @@ static void js_service_thread(void* arg) update_clients(); #ifdef _WIN32 - if(startup->sound.hangup[0] && !(startup->options&BBS_OPT_MUTE) + if(startup->sound.hangup[0] && !sound_muted(&scfg) && !(service->options&BBS_OPT_MUTE)) PlaySound(startup->sound.hangup, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -1522,7 +1522,7 @@ static void native_service_thread(void* arg) update_clients(); #ifdef _WIN32 - if(startup->sound.hangup[0] && !(startup->options&BBS_OPT_MUTE) + if(startup->sound.hangup[0] && !sound_muted(&scfg) && !(service->options&BBS_OPT_MUTE)) PlaySound(startup->sound.hangup, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -2292,7 +2292,7 @@ void services_thread(void* arg) } #ifdef _WIN32 - if(startup->sound.answer[0] && !(startup->options&BBS_OPT_MUTE) + if(startup->sound.answer[0] && !sound_muted(&scfg) && !(service[i].options&BBS_OPT_MUTE)) PlaySound(startup->sound.answer, NULL, SND_ASYNC|SND_FILENAME); #endif diff --git a/src/sbbs3/startup.h b/src/sbbs3/startup.h index a4365ce55a..6c0c5cba3f 100644 --- a/src/sbbs3/startup.h +++ b/src/sbbs3/startup.h @@ -185,12 +185,12 @@ static struct init_field { #define BBS_OPT_ALLOW_SSH (1<<12) /* Allow logins via BSD SSH */ #define BBS_OPT_NO_DOS (1<<13) /* Don't attempt to run 16-bit DOS programs */ #define BBS_OPT_NO_NEWDAY_EVENTS (1<<14) /* Don't check for a new day in event thread */ -#define BBS_OPT_NO_TELNET (1<<15) /* Don't accept incoming telnet connections */ +#define BBS_OPT_NO_TELNET (1<<15) /* Don't accept incoming telnet connections */ #define BBS_OPT_HAPROXY_PROTO (1<<26) /* Incoming requests are via HAproxy */ #define BBS_OPT_NO_RECYCLE (1<<27) /* Disable recycling of server */ #define BBS_OPT_GET_IDENT (1<<28) /* Get Identity (RFC 1413) */ -#define BBS_OPT_NO_JAVASCRIPT (1<<29) /* JavaScript disabled */ -#define BBS_OPT_MUTE (1<<31) /* Mute sounds */ +#define BBS_OPT_NO_JAVASCRIPT (1<<29) /* JavaScript disabled - Not supported */ +#define BBS_OPT_MUTE (1<<31) /* Mute sounds - DEPRECATED (controlled via semfile) */ /* bbs_startup_t.options bits that require re-init/recycle when changed */ #define BBS_INIT_OPTS (BBS_OPT_ALLOW_RLOGIN|BBS_OPT_ALLOW_SSH|BBS_OPT_NO_EVENTS|BBS_OPT_NO_SPY_SOCKETS \ diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index 41304af1d0..83a1c87b71 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -3688,6 +3688,25 @@ BOOL set_sysop_availability(scfg_t* scfg, BOOL available) return remove(sysop_available_semfile(scfg)) == 0; } +static char* sound_muted_semfile(scfg_t* scfg) +{ + static char semfile[MAX_PATH+1]; + SAFEPRINTF(semfile, "%ssound.muted", scfg->ctrl_dir); + return semfile; +} + +BOOL sound_muted(scfg_t* scfg) +{ + return fexist(sound_muted_semfile(scfg)); +} + +BOOL set_sound_muted(scfg_t* scfg, BOOL muted) +{ + if(muted) + return ftouch(sound_muted_semfile(scfg)); + return remove(sound_muted_semfile(scfg)) == 0; +} + /************************************/ /* user .ini file get/set functions */ /************************************/ diff --git a/src/sbbs3/userdat.h b/src/sbbs3/userdat.h index 9dc1d7915f..4155e9c9d2 100644 --- a/src/sbbs3/userdat.h +++ b/src/sbbs3/userdat.h @@ -128,6 +128,8 @@ DLLEXPORT time_t gettimeleft(scfg_t*, user_t*, time_t starttime); DLLEXPORT BOOL check_name(scfg_t*, const char* name); DLLEXPORT BOOL sysop_available(scfg_t*); DLLEXPORT BOOL set_sysop_availability(scfg_t*, BOOL available); +DLLEXPORT BOOL sound_muted(scfg_t*); +DLLEXPORT BOOL set_sound_muted(scfg_t*, BOOL muted); DLLEXPORT int lookup_user(scfg_t*, link_list_t*, const char* name); diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index 1674fed09d..616024a914 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -1619,7 +1619,7 @@ void http_logoff(http_session_t* session, SOCKET socket, int line) session->last_user_num=session->user.number; #ifdef _WIN32 - if(startup->sound.logout[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.logout[0] && !sound_muted(&scfg)) PlaySound(startup->sound.logout, NULL, SND_ASYNC|SND_FILENAME); #endif } @@ -1847,7 +1847,7 @@ static void badlogin(SOCKET sock, const char* prot, const char* user, const char if(startup->login_attempt.hack_threshold && count>=startup->login_attempt.hack_threshold) { hacklog(&scfg, reason, user, passwd, host, addr); #ifdef _WIN32 - if(startup->sound.hack[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.hack[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hack, NULL, SND_ASYNC|SND_FILENAME); #endif } @@ -2015,7 +2015,7 @@ static BOOL check_ars(http_session_t * session) ,session->socket,session->req.auth.username,session->req.ars); #ifdef _WIN32 - if(startup->sound.hack[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.hack[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hack, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -5447,7 +5447,7 @@ js_login(JSContext *cx, uintN argc, jsval *arglist) JS_SET_RVAL(cx, arglist,BOOLEAN_TO_JSVAL(JS_TRUE)); #ifdef _WIN32 - if(startup->sound.login[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.login[0] && !sound_muted(&scfg)) PlaySound(startup->sound.login, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -6383,7 +6383,7 @@ void http_session_thread(void* arg) lprintf(LOG_DEBUG,"%04d !!! DANGER WILL ROBINSON, DANGER !!!", session.socket); #ifdef _WIN32 - if(startup->sound.answer[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.answer[0] && !sound_muted(&scfg)) PlaySound(startup->sound.answer, NULL, SND_ASYNC|SND_FILENAME); #endif @@ -6621,7 +6621,7 @@ void http_session_thread(void* arg) } #ifdef _WIN32 - if(startup->sound.hangup[0] && !(startup->options&BBS_OPT_MUTE)) + if(startup->sound.hangup[0] && !sound_muted(&scfg)) PlaySound(startup->sound.hangup, NULL, SND_ASYNC|SND_FILENAME); #endif -- GitLab