From 9457c7ccbb15d9cc10cd12b8dd2af4fb42fa6972 Mon Sep 17 00:00:00 2001
From: Antoine Noreau <antoine.noreau@savoirfairelinux.com>
Date: Mon, 24 Oct 2022 16:10:24 -0400
Subject: [PATCH] sip: fix incoming TLS calls by disabling secure dialog

Change-Id: I28e6135d9586adf7b4264431726f82f47856be51
---
 src/app/constant/JamiStrings.qml                      |  1 +
 src/app/currentaccount.cpp                            |  1 +
 src/app/currentaccount.h                              |  1 +
 .../components/AdvancedSIPSecuritySettings.qml        | 11 +++++++++++
 src/libclient/accountmodel.cpp                        |  4 ++++
 src/libclient/api/account.h                           |  1 +
 6 files changed, 19 insertions(+)

diff --git a/src/app/constant/JamiStrings.qml b/src/app/constant/JamiStrings.qml
index 90e255d45..3e83a6c47 100644
--- a/src/app/constant/JamiStrings.qml
+++ b/src/app/constant/JamiStrings.qml
@@ -115,6 +115,7 @@ Item {
     property string verifyCertificatesServer: qsTr("Verify certificates for incoming TLS connections")
     property string verifyCertificatesClient: qsTr("Verify server TLS certificates")
     property string tlsRequireConnections: qsTr("Require certificate for incoming TLS connections")
+    property string disableSecureDlgCheck: qsTr("Disable secure dialog check for incoming TLS data")
     property string tlsProtocol: qsTr("TLS protocol method")
     property string audioDeviceSelector: qsTr("Audio input device selector")
     property string tlsServerName: qsTr("TLS server name")
diff --git a/src/app/currentaccount.cpp b/src/app/currentaccount.cpp
index 24eb9f63e..440744ef2 100644
--- a/src/app/currentaccount.cpp
+++ b/src/app/currentaccount.cpp
@@ -141,6 +141,7 @@ CurrentAccount::updateData()
         set_verifyServerTLS(accConfig.TLS.verifyServer, true);
         set_verifyClientTLS(accConfig.TLS.verifyClient, true);
         set_requireClientCertificateTLS(accConfig.TLS.requireClientCertificate, true);
+        set_disableSecureDlgCheckTLS(accConfig.TLS.disableSecureDlgCheck, true);
         set_certificateListFileTLS(accConfig.TLS.certificateListFile, true);
         set_certificateFileTLS(accConfig.TLS.certificateFile, true);
         set_privateKeyFileTLS(accConfig.TLS.privateKeyFile, true);
diff --git a/src/app/currentaccount.h b/src/app/currentaccount.h
index 4141f8638..4f99b1045 100644
--- a/src/app/currentaccount.h
+++ b/src/app/currentaccount.h
@@ -148,6 +148,7 @@ class CurrentAccount final : public QObject
     QML_ACCOUNT_CONFIG_CATEGORY_SETTINGS_PROPERTY(bool, verifyServer, TLS)
     QML_ACCOUNT_CONFIG_CATEGORY_SETTINGS_PROPERTY(bool, verifyClient, TLS)
     QML_ACCOUNT_CONFIG_CATEGORY_SETTINGS_PROPERTY(bool, requireClientCertificate, TLS)
+    QML_ACCOUNT_CONFIG_CATEGORY_SETTINGS_PROPERTY(bool, disableSecureDlgCheck, TLS)
     QML_ACCOUNT_CONFIG_CATEGORY_SETTINGS_PROPERTY(QString, certificateListFile, TLS)
     QML_ACCOUNT_CONFIG_CATEGORY_SETTINGS_PROPERTY(QString, certificateFile, TLS)
     QML_ACCOUNT_CONFIG_CATEGORY_SETTINGS_PROPERTY(QString, privateKeyFile, TLS)
diff --git a/src/app/settingsview/components/AdvancedSIPSecuritySettings.qml b/src/app/settingsview/components/AdvancedSIPSecuritySettings.qml
index d155308f6..33ae05697 100644
--- a/src/app/settingsview/components/AdvancedSIPSecuritySettings.qml
+++ b/src/app/settingsview/components/AdvancedSIPSecuritySettings.qml
@@ -247,6 +247,17 @@ ColumnLayout {
             onSwitchToggled: CurrentAccount.requireClientCertificate_TLS = checked
         }
 
+        ToggleSwitch {
+            id: disableSecureDlgCheckToggle
+
+            labelText: JamiStrings.disableSecureDlgCheck
+            fontPointSize: JamiTheme.settingsFontSize
+
+            checked: CurrentAccount.disableSecureDlgCheck_TLS
+
+            onSwitchToggled: CurrentAccount.disableSecureDlgCheck_TLS = checked
+        }
+
         SettingsComboBox {
             id: tlsProtocolComboBox
 
diff --git a/src/libclient/accountmodel.cpp b/src/libclient/accountmodel.cpp
index 32b7b50ca..edcaa9149 100644
--- a/src/libclient/accountmodel.cpp
+++ b/src/libclient/accountmodel.cpp
@@ -896,6 +896,8 @@ account::Info::fromDetails(const MapStringString& details)
     confProperties.TLS.verifyClient = toBool(details[ConfProperties::TLS::VERIFY_CLIENT]);
     confProperties.TLS.requireClientCertificate = toBool(
         details[ConfProperties::TLS::REQUIRE_CLIENT_CERTIFICATE]);
+    confProperties.TLS.disableSecureDlgCheck = toBool(
+        details[ConfProperties::TLS::DISABLE_SECURE_DLG_CHECK]);
     confProperties.TLS.negotiationTimeoutSec = toInt(
         details[ConfProperties::TLS::NEGOTIATION_TIMEOUT_SEC]);
     // DHT
@@ -1018,6 +1020,8 @@ account::ConfProperties_t::toDetails() const
     details[ConfProperties::TLS::VERIFY_CLIENT] = toQString(this->TLS.verifyClient);
     details[ConfProperties::TLS::REQUIRE_CLIENT_CERTIFICATE] = toQString(
         this->TLS.requireClientCertificate);
+    details[ConfProperties::TLS::DISABLE_SECURE_DLG_CHECK] = toQString(
+        this->TLS.disableSecureDlgCheck);
     details[ConfProperties::TLS::NEGOTIATION_TIMEOUT_SEC] = toQString(
         this->TLS.negotiationTimeoutSec);
     // DHT
diff --git a/src/libclient/api/account.h b/src/libclient/api/account.h
index 3786348de..0503f7e75 100644
--- a/src/libclient/api/account.h
+++ b/src/libclient/api/account.h
@@ -177,6 +177,7 @@ struct ConfProperties_t
         bool verifyServer;
         bool verifyClient;
         bool requireClientCertificate;
+        bool disableSecureDlgCheck;
         int negotiationTimeoutSec;
     } TLS;
     struct DHT_t
-- 
GitLab