
* Add allowed DNS list for killswitch * Windows killswitch strict mode backend part * Killswitch strict mode for Linux and MacOS * Windows fixes * feature: Add Kill Switch settings page with strict mode option * fix windows build after merge * Refresh killswitch mode when it toggled * Use HLM to store strictMode flag * Some Linux updates * feat: Enhance VerticalRadioButton with improved styling and disabled states * Refresh killSwitch state update * Fix build * refactor: Modularize header components * Change kill switch radio button styling * Fix strict kill switch mode handling * Refactor: Replace HeaderType with new Types for headers in QML pages * Remove deprecated HeaderType QML component * Refresh strict mode killswitch after global toggle change * Implement model, controller and UI for killswitch dns exceptions * Connect backend part and UI * Change label text to DNS exceptions * Remove HeaderType from PageSettingsApiDevices * Some pretty fixes * Fix problem with definition sequence of PageSettingsKillSwitchExceptions.pml elements * Add exclusion method for Windows firewall * Change ubuntu version in deploy script * Update ubuntu version in GH actions * Add confirmation popup for strict killswitch mode * Add qt standard path for build script * Add method to killswitch for expanding strickt mode exceptions list and fix allowTrafficTo() for Windows. Also Added cache in KillSwitch class for exceptions * Add insertion of gateway address to strict killswitch exceptions * Review fixes * buildfix and naming --------- Co-authored-by: aiamnezia <ai@amnezia.org>
123 lines
4.4 KiB
QML
123 lines
4.4 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
|
|
import PageEnum 1.0
|
|
import Style 1.0
|
|
|
|
import "./"
|
|
import "../Controls2"
|
|
import "../Config"
|
|
|
|
PageType {
|
|
id: root
|
|
|
|
BackButtonType {
|
|
id: backButton
|
|
anchors.top: parent.top
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.topMargin: 20
|
|
}
|
|
|
|
FlickableType {
|
|
id: fl
|
|
anchors.top: backButton.bottom
|
|
anchors.bottom: parent.bottom
|
|
contentHeight: content.height
|
|
|
|
ColumnLayout {
|
|
id: content
|
|
anchors.top: parent.top
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
|
|
HeaderTypeWithSwitcher {
|
|
Layout.fillWidth: true
|
|
Layout.leftMargin: 16
|
|
Layout.rightMargin: 16
|
|
|
|
headerText: qsTr("KillSwitch")
|
|
descriptionText: qsTr("Enable to ensure network traffic goes through a secure VPN tunnel, preventing accidental exposure of your IP and DNS queries if the connection drops")
|
|
|
|
showSwitcher: true
|
|
switcher {
|
|
checked: SettingsController.isKillSwitchEnabled
|
|
enabled: !ConnectionController.isConnected
|
|
}
|
|
switcherFunction: function(checked) {
|
|
if (!ConnectionController.isConnected) {
|
|
SettingsController.isKillSwitchEnabled = checked
|
|
} else {
|
|
PageController.showNotificationMessage(qsTr("Cannot change killSwitch settings during active connection"))
|
|
switcher.checked = SettingsController.isKillSwitchEnabled
|
|
}
|
|
}
|
|
}
|
|
|
|
VerticalRadioButton {
|
|
id: softKillSwitch
|
|
Layout.fillWidth: true
|
|
Layout.topMargin: 32
|
|
Layout.leftMargin: 16
|
|
Layout.rightMargin: 16
|
|
|
|
enabled: SettingsController.isKillSwitchEnabled && !ConnectionController.isConnected
|
|
checked: !SettingsController.strictKillSwitchEnabled
|
|
|
|
text: qsTr("Soft KillSwitch")
|
|
descriptionText: qsTr("Internet connection is blocked if VPN connection drops accidentally")
|
|
|
|
onClicked: function() {
|
|
SettingsController.strictKillSwitchEnabled = false
|
|
}
|
|
}
|
|
|
|
DividerType {}
|
|
|
|
VerticalRadioButton {
|
|
id: strictKillSwitch
|
|
Layout.fillWidth: true
|
|
Layout.leftMargin: 16
|
|
Layout.rightMargin: 16
|
|
|
|
enabled: SettingsController.isKillSwitchEnabled && !ConnectionController.isConnected
|
|
checked: SettingsController.strictKillSwitchEnabled
|
|
|
|
text: qsTr("Strict KillSwitch")
|
|
descriptionText: qsTr("Internet connection is blocked even if VPN was turned off manually or not started")
|
|
|
|
onClicked: function() {
|
|
var headerText = qsTr("Just a little heads-up")
|
|
var descriptionText = qsTr("If you disconnect from VPN or the VPN connection drops while the Strict Kill Switch is turned on, your internet access will be disabled. To restore it, connect to VPN, change the Kill Switch mode or turn the Kill Switch off.")
|
|
var yesButtonText = qsTr("Continue")
|
|
var noButtonText = qsTr("Cancel")
|
|
|
|
var yesButtonFunction = function() {
|
|
SettingsController.strictKillSwitchEnabled = true
|
|
}
|
|
var noButtonFunction = function() {
|
|
}
|
|
|
|
showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction)
|
|
}
|
|
}
|
|
|
|
DividerType {}
|
|
|
|
LabelWithButtonType {
|
|
Layout.topMargin: 32
|
|
Layout.fillWidth: true
|
|
|
|
enabled: true
|
|
text: qsTr("DNS Exceptions")
|
|
descriptionText: qsTr("DNS servers from the list will remain accessible when Kill Switch is triggered")
|
|
rightImageSource: "qrc:/images/controls/chevron-right.svg"
|
|
|
|
clickedFunction: function() {
|
|
PageController.goToPage(PageEnum.PageSettingsKillSwitchExceptions)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|