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