Skip to content
Snippets Groups Projects
Select Git revision
  • a2b5e77568876f0b61feb3aa3a15415d39534bfb
  • master default protected
  • beta/202506161038
  • stable/20250613.0
  • nightly/20250613.0
  • beta/202506101658
  • stable/20250610.0
  • nightly/20250610.0
  • beta/202506091027
  • beta/202506061543
  • nightly/20250605.0
  • beta/202506051039
  • beta/202506051002
  • beta/202506041611
  • beta/202506041335
  • beta/202505231812
  • stable/20250523.0
  • nightly/20250523.0
  • nightly/20250515.0
  • nightly/20250510.0
  • nightly/20250509.1
  • nightly/20250509.0
22 results

AdvancedJamiSecuritySettings.qml

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    AdvancedJamiSecuritySettings.qml 5.72 KiB
    /*
     * Copyright (C) 2020 by Savoir-faire Linux
     * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
    
    import QtQuick 2.14
    import QtQuick.Layouts 1.14
    
    import net.jami.Models 1.1
    import net.jami.Adapters 1.1
    import net.jami.Constants 1.1
    
    import "../../commoncomponents"
    
    ColumnLayout {
        id: root
    
        property int itemWidth
    
        function updateSecurityAccountInfos() {
            btnCACert.setText(UtilsAdapter.toFileInfoName(SettingsAdapter.getAccountConfig_TLS_CertificateListFile()))
            btnCACert.setEnabled(SettingsAdapter.getAccountConfig_TLS_Enable())
            btnUserCert.setText(UtilsAdapter.toFileInfoName(SettingsAdapter.getAccountConfig_TLS_CertificateFile()))
            btnUserCert.setEnabled(SettingsAdapter.getAccountConfig_TLS_Enable())
            btnPrivateKey.setText(UtilsAdapter.toFileInfoName(SettingsAdapter.getAccountConfig_TLS_PrivateKeyFile()))
            btnPrivateKey.setEnabled(SettingsAdapter.getAccountConfig_TLS_Enable())
        }
    
        function changeFileCACert(url){
            if(url.length !== 0) {
               SettingsAdapter.set_FileCACert(url)
                btnCACert.setText(UtilsAdapter.toFileInfoName(url))
            }
        }
    
        function changeFileUserCert(url){
            if(url.length !== 0) {
               SettingsAdapter.set_FileUserCert(url)
                btnUserCert.setText(UtilsAdapter.toFileInfoName(url))
            }
        }
    
        function changeFilePrivateKey(url){
            if(url.length !== 0) {
               SettingsAdapter.set_FilePrivateKey(url)
                btnPrivateKey.setText(UtilsAdapter.toFileInfoName(url))
            }
        }
    
        JamiFileDialog {
            id: caCert_Dialog
    
            property string oldPath : SettingsAdapter.getAccountConfig_TLS_CertificateListFile()
            property string openPath : oldPath === "" ? (UtilsAdapter.getCurrentPath() + "/ringtones/") : (UtilsAdapter.toFileAbsolutepath(oldPath))
    
            mode: JamiFileDialog.OpenFile
            title: JamiStrings.selectCACert
            folder: openPath
            nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
                    "All files") + " (*)"]
    
            onAccepted: {
                var url = UtilsAdapter.getAbsPath(file.toString())
                changeFileCACert(url)
            }
        }
    
        JamiFileDialog {
            id: userCert_Dialog
    
            property string oldPath : SettingsAdapter.getAccountConfig_TLS_CertificateFile()
            property string openPath : oldPath === "" ? (UtilsAdapter.getCurrentPath() + "/ringtones/") : (UtilsAdapter.toFileAbsolutepath(oldPath))
    
            mode: JamiFileDialog.OpenFile
            title: JamiStrings.selectUserCert
            folder: openPath
            nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
                    "All files") + " (*)"]
    
            onAccepted: {
                var url = UtilsAdapter.getAbsPath(file.toString())
                changeFileUserCert(url)
            }
        }
    
        JamiFileDialog {
            id: privateKey_Dialog
    
            property string oldPath : {
                return SettingsAdapter.getAccountConfig_TLS_PrivateKeyFile()
            }
            property string openPath : oldPath === "" ? (UtilsAdapter.getCurrentPath() + "/ringtones/") : (UtilsAdapter.toFileAbsolutepath(oldPath))
    
            mode: JamiFileDialog.OpenFile
            title: JamiStrings.selectPrivateKey
            folder: openPath
            nameFilters: [qsTr("Key File") + " (*.key)", qsTr(
                    "All files") + " (*)"]
    
            onAccepted: {
                var url = UtilsAdapter.getAbsPath(file.toString())
                changeFilePrivateKey(url)
            }
        }
    
        ElidedTextLabel {
            Layout.fillWidth: true
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
    
            eText: JamiStrings.security
            fontSize: JamiTheme.headerFontSize
            maxWidth: width
        }
    
        ColumnLayout {
            Layout.fillWidth: true
            Layout.leftMargin: JamiTheme.preferredMarginSize
    
            SettingMaterialButton {
                id: btnCACert
                Layout.fillWidth: true
                Layout.minimumHeight: JamiTheme.preferredFieldHeight
    
                titleField: JamiStrings.caCertificate
                source: JamiResources.round_folder_24dp_svg
                itemWidth: root.itemWidth
                onClick: caCert_Dialog.open()
            }
    
            SettingMaterialButton {
                id: btnUserCert
                Layout.fillWidth: true
                Layout.minimumHeight: JamiTheme.preferredFieldHeight
    
                titleField: JamiStrings.userCertificate
                source: JamiResources.round_folder_24dp_svg
                itemWidth: root.itemWidth
                onClick: userCert_Dialog.open()
            }
    
            SettingMaterialButton {
                id: btnPrivateKey
                Layout.fillWidth: true
                Layout.minimumHeight: JamiTheme.preferredFieldHeight
    
                titleField: JamiStrings.privateKey
                source: JamiResources.round_folder_24dp_svg
                itemWidth: root.itemWidth
                onClick: privateKey_Dialog.open()
            }
    
            SettingsMaterialLineEdit {
                id: lineEditCertPassword
    
                Layout.fillWidth: true
                Layout.preferredHeight: JamiTheme.preferredFieldHeight
                itemWidth: root.itemWidth
                titleField: JamiStrings.privateKeyPassword
            }
        }
    }