From b64f01eee5affa9b8fe101f745603d407a817114 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 7 Oct 2005 09:08:26 +0000 Subject: [PATCH] Created an "Advanced" tab which allows the sysop to toggle options that could previously only be enabled/changed in the sbbs.ini file. Display "<auto>" if the DNS server field is left blank or set to an invalid IP address or hostname. --- src/sbbs3/ctrl/MailCfgDlgUnit.cpp | 50 ++++++++++++++++++++++++++++--- src/sbbs3/ctrl/MailCfgDlgUnit.dfm | 22 ++++++++++++-- src/sbbs3/ctrl/MailCfgDlgUnit.h | 5 +++- 3 files changed, 70 insertions(+), 7 deletions(-) diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.cpp b/src/sbbs3/ctrl/MailCfgDlgUnit.cpp index 4e935ce840..908545f74c 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.cpp +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.cpp @@ -103,7 +103,10 @@ void __fastcall TMailCfgDlg::FormShow(TObject *Sender) SMTPPortEdit->Text=AnsiString(MainForm->mail_startup.smtp_port); POP3PortEdit->Text=AnsiString(MainForm->mail_startup.pop3_port); RelayPortEdit->Text=AnsiString(MainForm->mail_startup.relay_port); - DNSServerEdit->Text=AnsiString(MainForm->mail_startup.dns_server); + if(isalnum(MainForm->mail_startup.dns_server[0])) + DNSServerEdit->Text=AnsiString(MainForm->mail_startup.dns_server); + else + DNSServerEdit->Text="<auto>"; InboundSoundEdit->Text=AnsiString(MainForm->mail_startup.inbound_sound); OutboundSoundEdit->Text=AnsiString(MainForm->mail_startup.outbound_sound); POP3SoundEdit->Text=AnsiString(MainForm->mail_startup.pop3_sound); @@ -159,6 +162,18 @@ void __fastcall TMailCfgDlg::FormShow(TObject *Sender) SendMailCheckBox->Checked= !(MainForm->mail_startup.options&MAIL_OPT_NO_SENDMAIL); + int i=0; + AdvancedCheckListBox->Checked[i++] + =(MainForm->mail_startup.options&MAIL_OPT_SEND_INTRANSIT); + AdvancedCheckListBox->Checked[i++] + =(MainForm->mail_startup.options&MAIL_OPT_DEBUG_RX_BODY); + AdvancedCheckListBox->Checked[i++] + =(MainForm->mail_startup.options&MAIL_OPT_ALLOW_RX_BY_NUMBER); + AdvancedCheckListBox->Checked[i++] + =(MainForm->mail_startup.options&MAIL_OPT_DNSBL_CHKRECVHDRS); + AdvancedCheckListBox->Checked[i++] + =(MainForm->mail_startup.options&MAIL_OPT_DNSBL_THROTTLE); + DNSBLRadioButtonClick(Sender); DNSRadioButtonClick(Sender); POP3EnabledCheckBoxClick(Sender); @@ -168,7 +183,14 @@ void __fastcall TMailCfgDlg::FormShow(TObject *Sender) PageControl->ActivePage=GeneralTabSheet; } //--------------------------------------------------------------------------- - +static void setBit(unsigned long* l, long bit, bool yes) +{ + if(yes) + *l|=bit; + else + *l&=~bit; +} +//--------------------------------------------------------------------------- void __fastcall TMailCfgDlg::OKBtnClick(TObject *Sender) { char str[128],*p; @@ -207,8 +229,11 @@ void __fastcall TMailCfgDlg::OKBtnClick(TObject *Sender) SAFECOPY(MainForm->mail_startup.default_user ,DefaultUserEdit->Text.c_str()); - SAFECOPY(MainForm->mail_startup.dns_server - ,DNSServerEdit->Text.c_str()); + if(isalnum(*DNSServerEdit->Text.c_str())) + SAFECOPY(MainForm->mail_startup.dns_server + ,DNSServerEdit->Text.c_str()); + else + MainForm->mail_startup.dns_server[0]=0; SAFECOPY(MainForm->mail_startup.relay_server ,RelayServerEdit->Text.c_str()); SAFECOPY(MainForm->mail_startup.relay_user @@ -303,6 +328,23 @@ void __fastcall TMailCfgDlg::OKBtnClick(TObject *Sender) else MainForm->mail_startup.options&=~MAIL_OPT_NO_SENDMAIL; + int i=0; + setBit(&MainForm->mail_startup.options + ,MAIL_OPT_SEND_INTRANSIT + ,AdvancedCheckListBox->Checked[i++]); + setBit(&MainForm->mail_startup.options + ,MAIL_OPT_DEBUG_RX_BODY + ,AdvancedCheckListBox->Checked[i++]); + setBit(&MainForm->mail_startup.options + ,MAIL_OPT_ALLOW_RX_BY_NUMBER + ,AdvancedCheckListBox->Checked[i++]); + setBit(&MainForm->mail_startup.options + ,MAIL_OPT_DNSBL_CHKRECVHDRS + ,AdvancedCheckListBox->Checked[i++]); + setBit(&MainForm->mail_startup.options + ,MAIL_OPT_DNSBL_THROTTLE + ,AdvancedCheckListBox->Checked[i++]); + MainForm->MailAutoStart=AutoStartCheckBox->Checked; MainForm->MailLogFile=LogFileCheckBox->Checked; diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.dfm b/src/sbbs3/ctrl/MailCfgDlgUnit.dfm index 866ecbefdc..c86fb7b009 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.dfm +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.dfm @@ -53,8 +53,8 @@ object MailCfgDlg: TMailCfgDlg Top = 4 Width = 342 Height = 245 - ActivePage = SoundTabSheet - TabIndex = 5 + ActivePage = AdvancedTabSheet + TabIndex = 7 TabOrder = 3 object GeneralTabSheet: TTabSheet Caption = 'General' @@ -818,6 +818,24 @@ object MailCfgDlg: TMailCfgDlg TabOrder = 3 end end + object AdvancedTabSheet: TTabSheet + Caption = 'Advanced' + ImageIndex = 7 + object AdvancedCheckListBox: TCheckListBox + Left = 16 + Top = 16 + Width = 305 + Height = 185 + ItemHeight = 16 + Items.Strings = ( + 'SendMail: Ignore '#39'in transit'#39' attribute' + 'Save received mail files in temp directory' + 'Allow receipt of mail by user number' + 'Check '#39'Received'#39' header fields against DNSBL' + 'Throttle DNS blacklisted server sessions') + TabOrder = 0 + end + end end object OpenDialog: TOpenDialog Filter = 'Wave Files|*.wav' diff --git a/src/sbbs3/ctrl/MailCfgDlgUnit.h b/src/sbbs3/ctrl/MailCfgDlgUnit.h index ad0feca34a..2fc6fb421b 100644 --- a/src/sbbs3/ctrl/MailCfgDlgUnit.h +++ b/src/sbbs3/ctrl/MailCfgDlgUnit.h @@ -6,7 +6,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -49,6 +49,7 @@ #include <vcl\System.hpp> #include <Dialogs.hpp> #include <ComCtrls.hpp> +#include <CheckLst.hpp> //---------------------------------------------------------------------------- class TMailCfgDlg : public TForm { @@ -139,6 +140,8 @@ __published: TEdit *RelayAuthNameEdit; TLabel *RelayAuthPassLabel; TEdit *RelayAuthPassEdit; + TTabSheet *AdvancedTabSheet; + TCheckListBox *AdvancedCheckListBox; void __fastcall InboundSoundButtonClick(TObject *Sender); void __fastcall OutboundSoundButtonClick(TObject *Sender); void __fastcall FormShow(TObject *Sender); -- GitLab