From 3072aaa22641784b8a953e26afa0e570f74ba6bf Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Sun, 13 Sep 2020 17:16:13 -0700
Subject: [PATCH] Add the HSTS Support checkbox so the Web server config TLS
 tab

---
 src/sbbs3/ctrl/WebCfgDlgUnit.cpp |  9 +++++++++
 src/sbbs3/ctrl/WebCfgDlgUnit.dfm | 15 +++++++++++++--
 src/sbbs3/ctrl/WebCfgDlgUnit.h   |  1 +
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/sbbs3/ctrl/WebCfgDlgUnit.cpp b/src/sbbs3/ctrl/WebCfgDlgUnit.cpp
index 708a3700db..b6dc232e1f 100644
--- a/src/sbbs3/ctrl/WebCfgDlgUnit.cpp
+++ b/src/sbbs3/ctrl/WebCfgDlgUnit.cpp
@@ -82,6 +82,10 @@ void __fastcall TWebCfgDlg::FormShow(TObject *Sender)
         TlsEnableCheckBox->Checked = true;
     else
         TlsEnableCheckBox->Checked = false;
+    if(MainForm->web_startup.options&WEB_OPT_HSTS_SAFE)
+        HSTSEnableCheckBox->Checked = true;
+    else
+        HSTSEnableCheckBox->Checked = false;
 
     AuthTypesEdit->Text = AnsiString(MainForm->web_startup.default_auth_list);
     HtmlRootEdit->Text=AnsiString(MainForm->web_startup.root_dir);
@@ -135,6 +139,10 @@ void __fastcall TWebCfgDlg::OKBtnClick(TObject *Sender)
         MainForm->web_startup.options |= WEB_OPT_ALLOW_TLS;
     else
         MainForm->web_startup.options &= ~WEB_OPT_ALLOW_TLS;
+    if(HSTSEnableCheckBox->Checked)
+        MainForm->web_startup.options |= WEB_OPT_HSTS_SAFE;
+    else
+        MainForm->web_startup.options &= ~WEB_OPT_HSTS_SAFE;
 
     SAFECOPY(MainForm->web_startup.default_auth_list
         ,AuthTypesEdit->Text.c_str());
@@ -281,6 +289,7 @@ void __fastcall TWebCfgDlg::TlsEnableCheckBoxClick(TObject *Sender)
     TlsInterfaceLabel->Enabled = enabled;
     TlsPortEdit->Enabled = enabled;
     TlsPortLabel->Enabled = enabled;
+    HSTSEnableCheckBox->Enabled = enabled;
 }
 //---------------------------------------------------------------------------
 
diff --git a/src/sbbs3/ctrl/WebCfgDlgUnit.dfm b/src/sbbs3/ctrl/WebCfgDlgUnit.dfm
index d2c6743199..2f1cac2676 100644
--- a/src/sbbs3/ctrl/WebCfgDlgUnit.dfm
+++ b/src/sbbs3/ctrl/WebCfgDlgUnit.dfm
@@ -25,8 +25,8 @@ object WebCfgDlg: TWebCfgDlg
     Top = 3
     Width = 278
     Height = 199
-    ActivePage = HttpTabSheet
-    TabIndex = 2
+    ActivePage = TlsTabSheet
+    TabIndex = 1
     TabOrder = 0
     object GeneralTabSheet: TTabSheet
       Caption = 'General'
@@ -200,6 +200,17 @@ object WebCfgDlg: TWebCfgDlg
         ShowHint = True
         TabOrder = 2
       end
+      object HSTSEnableCheckBox: TCheckBox
+        Left = 148
+        Top = 10
+        Width = 119
+        Height = 20
+        Hint = 'HTTP Strict Transport Security'
+        Caption = 'HSTS Support'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+      end
     end
     object HttpTabSheet: TTabSheet
       Caption = 'HTTP'
diff --git a/src/sbbs3/ctrl/WebCfgDlgUnit.h b/src/sbbs3/ctrl/WebCfgDlgUnit.h
index c0979f9a2d..1b4083111d 100644
--- a/src/sbbs3/ctrl/WebCfgDlgUnit.h
+++ b/src/sbbs3/ctrl/WebCfgDlgUnit.h
@@ -108,6 +108,7 @@ __published:	// IDE-managed Components
     TEdit *TlsPortEdit;
     TLabel *AuthTypesLabel;
     TEdit *AuthTypesEdit;
+    TCheckBox *HSTSEnableCheckBox;
     void __fastcall FormShow(TObject *Sender);
     void __fastcall AnswerSoundButtonClick(TObject *Sender);
     void __fastcall HangupSoundButtonClick(TObject *Sender);
-- 
GitLab