diff --git a/client/resources.qrc b/client/resources.qrc
index d0ff176f7..5b919cf40 100644
--- a/client/resources.qrc
+++ b/client/resources.qrc
@@ -213,5 +213,6 @@
images/controls/trash.svg
images/controls/more-vertical.svg
ui/qml/Controls2/ListViewWithLabelsType.qml
+ ui/qml/Pages2/PageServiceDnsSettings.qml
diff --git a/client/ui/controllers/pageController.h b/client/ui/controllers/pageController.h
index 07e772837..508a9d583 100644
--- a/client/ui/controllers/pageController.h
+++ b/client/ui/controllers/pageController.h
@@ -32,6 +32,7 @@ namespace PageLoader
PageServiceSftpSettings,
PageServiceTorWebsiteSettings,
+ PageServiceDnsSettings,
PageSetupWizardStart,
PageSetupWizardCredentials,
diff --git a/client/ui/qml/Components/SettingsContainersListView.qml b/client/ui/qml/Components/SettingsContainersListView.qml
index a0c74a04c..edd96bd7a 100644
--- a/client/ui/qml/Components/SettingsContainersListView.qml
+++ b/client/ui/qml/Components/SettingsContainersListView.qml
@@ -43,10 +43,12 @@ ListView {
var containerIndex = root.model.mapToSource(index)
ContainersModel.setCurrentlyProcessedContainerIndex(containerIndex)
- if (config[ContainerProps.containerTypeToString(containerIndex)]["isThirdPartyConfig"]) {
- ProtocolsModel.updateModel(config)
- PageController.goToPage(PageEnum.PageProtocolRaw)
- return
+ if (serviceType !== ProtocolEnum.Other) {
+ if (config[ContainerProps.containerTypeToString(containerIndex)]["isThirdPartyConfig"]) {
+ ProtocolsModel.updateModel(config)
+ PageController.goToPage(PageEnum.PageProtocolRaw)
+ return
+ }
}
switch (containerIndex) {
@@ -78,12 +80,13 @@ ListView {
PageController.goToPage(PageEnum.PageServiceTorWebsiteSettings)
break
}
-
- default: {
- if (serviceType !== ProtocolEnum.Other) { //todo disable settings for dns container
- ProtocolsModel.updateModel(config)
- PageController.goToPage(PageEnum.PageSettingsServerProtocol)
- }
+ case ContainerEnum.Dns: {
+ PageController.goToPage(PageEnum.PageServiceDnsSettings)
+ break
+ }
+ default: { // go to the settings page of the container with multiple protocols
+ ProtocolsModel.updateModel(config)
+ PageController.goToPage(PageEnum.PageSettingsServerProtocol)
}
}
diff --git a/client/ui/qml/Pages2/PageServiceDnsSettings.qml b/client/ui/qml/Pages2/PageServiceDnsSettings.qml
new file mode 100644
index 000000000..016a7c881
--- /dev/null
+++ b/client/ui/qml/Pages2/PageServiceDnsSettings.qml
@@ -0,0 +1,95 @@
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+
+import SortFilterProxyModel 0.2
+
+import PageEnum 1.0
+
+import "./"
+import "../Controls2"
+import "../Controls2/TextTypes"
+import "../Config"
+import "../Components"
+
+PageType {
+ id: root
+
+ ColumnLayout {
+ id: backButton
+
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ anchors.topMargin: 20
+
+ BackButtonType {
+ }
+ }
+
+ FlickableType {
+ id: fl
+ anchors.top: backButton.bottom
+ anchors.bottom: parent.bottom
+ contentHeight: content.implicitHeight
+
+ ColumnLayout {
+ id: content
+
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ HeaderType {
+ id: header
+
+ Layout.fillWidth: true
+ Layout.rightMargin: 16
+ Layout.leftMargin: 16
+
+ headerText: "Amnezia DNS"
+ descriptionText: qsTr("A DNS service is installed on your server, and it is only accessible via VPN.\n") +
+ qsTr("The DNS address is the same as the address of your server. You can configure DNS in the settings, under the connections tab.")
+ }
+
+ LabelWithButtonType {
+ id: removeButton
+
+ Layout.topMargin: 24
+ width: parent.width
+
+ text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName()
+ textColor: "#EB5757"
+
+ clickedFunction: function() {
+ questionDrawer.headerText = qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName() + qsTr(" from server?")
+ questionDrawer.yesButtonText = qsTr("Continue")
+ questionDrawer.noButtonText = qsTr("Cancel")
+
+ questionDrawer.yesButtonFunction = function() {
+ questionDrawer.visible = false
+ PageController.goToPage(PageEnum.PageDeinstalling)
+ InstallController.removeCurrentlyProcessedContainer()
+ }
+ questionDrawer.noButtonFunction = function() {
+ questionDrawer.visible = false
+ }
+ questionDrawer.visible = true
+ }
+
+ MouseArea {
+ anchors.fill: removeButton
+ cursorShape: Qt.PointingHandCursor
+ enabled: false
+ }
+ }
+
+ DividerType {}
+
+ QuestionDrawer {
+ id: questionDrawer
+ }
+ }
+ }
+}