Compare commits

..

39 Commits

Author SHA1 Message Date
lunardunno 28907241df Merge branch '3rd_adaptation_to_diff_OS' into sudo_not_found 2024-02-14 06:50:34 +04:00
lunardunno 1aec417fc9 Merge pull request #588 from amnezia-vpn/test/docker-ce
Check which containerization application will be installed
2024-02-14 04:27:01 +04:00
lunardunno fc0a9fd74f check and change locale
Checking and changing the locale for correct error handling by the server controller.
2024-02-14 03:46:03 +04:00
lunardunno 11fef3c653 checking of docker installation results 2024-02-14 03:39:07 +04:00
lunardunno 1226d1b287 Check moby and podman 2024-02-13 17:25:36 +04:00
lunardunno 1028f6998f docker-ce support
Implementation of docker-ce support, for Fedora and CentOS
2024-02-12 06:18:59 +04:00
lunardunno c5afd4a85a checking_result_docker_installation 2023-12-15 05:30:13 +04:00
lunardunno 3289819673 rollback some changes 2023-11-30 15:31:32 +04:00
lunardunno e80562c60f rollback servercontroller.cpp 2023-11-30 15:27:50 +04:00
lunardunno a8b5601777 rollback check_server_is_busy.sh 2023-11-30 15:24:39 +04:00
lunardunno fe50027edf remove exit 1 for check sudo 2023-11-30 15:10:47 +04:00
lunardunno 72beb609c4 some rollback 2023-11-30 14:50:21 +04:00
lunardunno b934ff9437 Packet manager check for Install_docker.sh 2023-11-30 14:31:53 +04:00
lunardunno 9cbf62ae7a sudo not installed for check 2023-11-30 14:24:54 +04:00
lunardunno c8e65abca0 check for sudo
check_server_is_busy.sh

check for sudo presence during execution check_server_is_busy.sh
2023-11-30 14:18:35 +04:00
lunardunno ca3b1c9aba return exit 1 for sudo 2023-11-30 13:51:14 +04:00
lunardunno e22e6e252b check sudo fuser lsof 2023-11-30 12:25:26 +04:00
lunardunno 9dd99f8080 checking of installation results psmisc 2023-11-30 11:22:49 +04:00
lunardunno 01fab70c14 back to basics 2023-11-30 01:28:55 +04:00
lunardunno 1c42e5e1b4 deleting " exit 1;" 2023-11-29 14:07:03 +04:00
lunardunno 0a564692ac re_some changes
adding " exit 1;"
2023-11-29 12:42:13 +04:00
lunardunno 075b83a990 some changes
adding " exit 1;"
2023-11-29 12:35:49 +04:00
lunardunno f0adbfed67 test without sudo 2023-11-29 12:08:59 +04:00
lunardunno 06cbaa75c8 removed comment for sudo 2023-11-29 10:57:26 +04:00
lunardunno 5b29678348 some change
rearranging the message about the absence of sudo
2023-11-29 10:26:29 +04:00
lunardunno 63161df66b added comment for sudo
added a comment for the log when there is no sudo
2023-11-29 09:35:23 +04:00
lunardunno b6467cc279 removing redundant line
removing a redundant line due to the introduction of direct verification of the installation result lsof, psmisc (fuser), sudo, docker|docker.io
2023-11-29 08:33:14 +04:00
lunardunno e451862dd2 checking of installation results
Direct checking of installation results has been introduced for lsof psmisc sudo docker.
2023-11-28 19:23:19 +04:00
lunardunno 76f05da9c9 introduced direct check sudo
introduced a direct check for the presence of the sudo package, after attempting to install sudo
2023-11-27 15:40:33 +04:00
lunardunno 7f10a1349d fix then\ 2023-11-27 15:38:26 +04:00
lunardunno b7fa882422 introduced direct check sudo
introduced a direct check for the presence of the sudo package, after attempting to install sudo
2023-11-27 15:29:58 +04:00
lunardunno 94effbd0b3 introduced sudo package check
indirect method, a check for the presence of the sudo package has been introduced
2023-11-27 12:10:50 +04:00
lunardunno 1f7714791e Improve end 2023-11-27 09:34:18 +04:00
lunardunno b60d9639e9 introduction checking docker status 2023-11-26 07:57:22 +04:00
lunardunno fcc7894527 replacing sudo with docker 2023-11-25 06:38:47 +04:00
lunardunno cb2c4a7a3a fix premature script termination
Fix premature script termination for $dist=debian and $dist=centos.
Introduced for debugging $dist=fedora
2023-11-25 05:31:00 +04:00
lunardunno 4c1bada05d -sudo 2023-11-23 16:19:33 +04:00
lunardunno 8fd83f15e0 test sudo-test command not found 2023-11-23 15:49:06 +04:00
lunardunno 2d1b3e36f1 test sudo command not found 2023-11-23 12:48:18 +04:00
34 changed files with 283 additions and 268 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ string(TIMESTAMP CURRENT_DATE "%Y-%m-%d")
set(RELEASE_DATE "${CURRENT_DATE}") set(RELEASE_DATE "${CURRENT_DATE}")
set(APP_MAJOR_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}) set(APP_MAJOR_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH})
set(APP_ANDROID_VERSION_CODE 46) set(APP_ANDROID_VERSION_CODE 45)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(MZ_PLATFORM_NAME "linux") set(MZ_PLATFORM_NAME "linux")
+1 -7
View File
@@ -286,16 +286,10 @@ void AmneziaApplication::initModels()
m_containersModel.reset(new ContainersModel(this)); m_containersModel.reset(new ContainersModel(this));
m_engine->rootContext()->setContextProperty("ContainersModel", m_containersModel.get()); m_engine->rootContext()->setContextProperty("ContainersModel", m_containersModel.get());
m_defaultServerContainersModel.reset(new ContainersModel(this));
m_engine->rootContext()->setContextProperty("DefaultServerContainersModel", m_defaultServerContainersModel.get());
m_serversModel.reset(new ServersModel(m_settings, this)); m_serversModel.reset(new ServersModel(m_settings, this));
m_engine->rootContext()->setContextProperty("ServersModel", m_serversModel.get()); m_engine->rootContext()->setContextProperty("ServersModel", m_serversModel.get());
connect(m_serversModel.get(), &ServersModel::containersUpdated, m_containersModel.get(), connect(m_serversModel.get(), &ServersModel::containersUpdated, m_containersModel.get(),
&ContainersModel::updateModel); &ContainersModel::updateModel);
connect(m_serversModel.get(), &ServersModel::defaultServerContainersUpdated, m_defaultServerContainersModel.get(),
&ContainersModel::updateModel);
m_serversModel->resetModel();
m_languageModel.reset(new LanguageModel(m_settings, this)); m_languageModel.reset(new LanguageModel(m_settings, this));
m_engine->rootContext()->setContextProperty("LanguageModel", m_languageModel.get()); m_engine->rootContext()->setContextProperty("LanguageModel", m_languageModel.get());
@@ -339,7 +333,7 @@ void AmneziaApplication::initModels()
connect(m_configurator.get(), &VpnConfigurator::newVpnConfigCreated, this, connect(m_configurator.get(), &VpnConfigurator::newVpnConfigCreated, this,
[this](const QString &clientId, const QString &clientName, const DockerContainer container, [this](const QString &clientId, const QString &clientName, const DockerContainer container,
ServerCredentials credentials) { ServerCredentials credentials) {
m_serversModel->reloadDefaultServerContainerConfig(); m_serversModel->reloadContainerConfig();
m_clientManagementModel->appendClient(clientId, clientName, container, credentials); m_clientManagementModel->appendClient(clientId, clientName, container, credentials);
emit m_configurator->clientModelUpdated(); emit m_configurator->clientModelUpdated();
}); });
-1
View File
@@ -92,7 +92,6 @@ private:
QCommandLineParser m_parser; QCommandLineParser m_parser;
QSharedPointer<ContainersModel> m_containersModel; QSharedPointer<ContainersModel> m_containersModel;
QSharedPointer<ContainersModel> m_defaultServerContainersModel;
QSharedPointer<ServersModel> m_serversModel; QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<LanguageModel> m_languageModel; QSharedPointer<LanguageModel> m_languageModel;
QSharedPointer<ProtocolsModel> m_protocolsModel; QSharedPointer<ProtocolsModel> m_protocolsModel;
+5 -4
View File
@@ -22,7 +22,7 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="28" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- Enable when VPN-per-app mode will be implemented --> <!-- Enable when VPN-per-app mode will be implemented -->
@@ -137,13 +137,14 @@
android:name=".AmneziaVpnService" android:name=".AmneziaVpnService"
android:process=":amneziaVpnService" android:process=":amneziaVpnService"
android:permission="android.permission.BIND_VPN_SERVICE" android:permission="android.permission.BIND_VPN_SERVICE"
android:foregroundServiceType="systemExempted" android:foregroundServiceType="specialUse"
android:exported="false" android:exported="false">
tools:ignore="ForegroundServicePermission">
<intent-filter> <intent-filter>
<action android:name="android.net.VpnService" /> <action android:name="android.net.VpnService" />
</intent-filter> </intent-filter>
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="vpn" />
</service> </service>
<provider <provider
@@ -4,7 +4,7 @@ import android.app.Notification
import android.app.PendingIntent import android.app.PendingIntent
import android.content.Intent import android.content.Intent
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE
import android.net.VpnService import android.net.VpnService
import android.os.Build import android.os.Build
import android.os.Handler import android.os.Handler
@@ -156,7 +156,7 @@ class AmneziaVpnService : VpnService() {
*/ */
private val foregroundServiceTypeCompat private val foregroundServiceTypeCompat
get() = when { get() = when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> FOREGROUND_SERVICE_TYPE_SPECIAL_USE
Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q -> FOREGROUND_SERVICE_TYPE_MANIFEST Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q -> FOREGROUND_SERVICE_TYPE_MANIFEST
else -> 0 else -> 0
} }
+35 -12
View File
@@ -1,20 +1,43 @@
if which apt-get > /dev/null 2>&1; then pm=$(which apt-get); silent_inst="-yq install"; check_pkgs="-yq update"; docker_pkg="docker.io"; dist="debian";\ if which apt-get > /dev/null 2>&1; then pm=$(which apt-get); silent_inst="-yq install"; check_pkgs="-yq update"; what_pkg="-s install"; docker_pkg="docker.io"; dist="debian";\
elif which dnf > /dev/null 2>&1; then pm=$(which dnf); silent_inst="-yq install"; check_pkgs="-yq check-update"; docker_pkg="docker"; dist="fedora";\ elif which dnf > /dev/null 2>&1; then pm=$(which dnf); silent_inst="-yq install"; check_pkgs="-yq check-update"; what_pkg="--assumeno install --setopt=tsflags=test"; docker_pkg="docker"; dist="fedora";\
elif which yum > /dev/null 2>&1; then pm=$(which yum); silent_inst="-y -q install"; check_pkgs="-y -q check-update"; docker_pkg="docker"; dist="centos";\ elif which yum > /dev/null 2>&1; then pm=$(which yum); silent_inst="-y -q install"; check_pkgs="-y -q check-update"; what_pkg="--assumeno install --setopt=tsflags=test"; docker_pkg="docker"; dist="centos";\
elif which pacman > /dev/null 2>&1; then pm=$(which pacman); silent_inst="-S --noconfirm --noprogressbar --quiet"; check_pkgs="> /dev/null 2>&1"; docker_pkg="docker"; dist="archlinux";\ elif which pacman > /dev/null 2>&1; then pm=$(which pacman); silent_inst="-S --noconfirm --noprogressbar --quiet"; check_pkgs="-Sup"; what_pkg="-Sp"; docker_pkg="docker"; dist="archlinux";\
else echo "Packet manager not found"; exit 1; fi;\ else echo "Packet manager not found"; exit 1; fi;\
echo "Dist: $dist, Packet manager: $pm, Install command: $silent_inst, Check pkgs command: $check_pkgs, Docker pkg: $docker_pkg";\ echo "Dist: $dist, Packet manager: $pm, Install command: $silent_inst, Check pkgs command: $check_pkgs, What pkg command: $what_pkg, Docker pkg: $docker_pkg";\
if [ "$dist" = "debian" ]; then export DEBIAN_FRONTEND=noninteractive; fi;\ if [ "$dist" = "debian" ]; then export DEBIAN_FRONTEND=noninteractive; fi;\
if ! command -v sudo > /dev/null 2>&1; then $pm $check_pkgs; $pm $silent_inst sudo; fi;\ CHECK_LOCALE=$(locale | grep -c 'LANG=en_US.UTF-8');\
if ! command -v fuser > /dev/null 2>&1; then sudo $pm $check_pkgs; sudo $pm $silent_inst psmisc; fi;\ if [ "$CHECK_LOCALE" = "0" ]; then \
if ! command -v lsof > /dev/null 2>&1; then sudo $pm $check_pkgs; sudo $pm $silent_inst lsof; fi;\ CHECK_LOCALE=$(locale | grep -c 'LANG=C.UTF-8');\
if ! command -v docker > /dev/null 2>&1; then \ if [ "$CHECK_LOCALE" = "0" ]; then \
sudo $pm $check_pkgs; sudo $pm $silent_inst $docker_pkg;\ CHECK_LOCALE=$(locale -a | grep -c 'en_US.utf8');\
sleep 5; sudo systemctl enable --now docker; sleep 5;\ if [ "$CHECK_LOCALE" != "0" ]; then export LC_ALL=en_US.UTF-8;\
else \
CHECK_LOCALE=$(locale -a | grep 'C.utf8');\
if [ "$CHECK_LOCALE" != "0" ]; then export LC_ALL=C.UTF-8; fi;\
fi;\
fi;\
fi;\
if ! command -v sudo > /dev/null 2>&1; then $pm $check_pkgs; $pm $silent_inst sudo;\
if ! command -v sudo > /dev/null 2>&1; then sudo; exit 1; fi;\
fi;\
if ! command -v fuser > /dev/null 2>&1; then sudo $pm $check_pkgs; sudo $pm $silent_inst psmisc;\
if ! command -v fuser > /dev/null 2>&1; then fuser; exit 1; fi;\
fi;\
if ! command -v lsof > /dev/null 2>&1; then sudo $pm $check_pkgs; sudo $pm $silent_inst lsof;\
if ! command -v lsof > /dev/null 2>&1; then lsof; exit 1; fi;\
fi;\
if ! command -v docker > /dev/null 2>&1; then sudo $pm $check_pkgs;\
check_podman=$(sudo $pm $what_pkg $docker_pkg 2>&1 | grep -c podman-docker);\
check_moby=$(sudo $pm $what_pkg $docker_pkg 2>&1 | grep -c moby-engine);\
if [ "$check_podman" != "0" ] || [ "$check_moby" != "0" ]; then echo "Container is not supported"; exit 1;\
else sudo $pm $silent_inst $docker_pkg;\
if ! command -v docker > /dev/null 2>&1; then docker; exit 1;\
else sleep 5; sudo systemctl enable --now docker; sleep 5; fi;\
fi;\
fi;\ fi;\
if [ "$(systemctl is-active docker)" != "active" ]; then \ if [ "$(systemctl is-active docker)" != "active" ]; then \
sudo $pm $check_pkgs; sudo $pm $silent_inst $docker_pkg;\ sudo $pm $check_pkgs; sudo $pm $silent_inst $docker_pkg;\
sleep 5; sudo systemctl start docker; sleep 5;\ sleep 5; sudo systemctl start docker; sleep 5;\
fi;\ fi;\
if ! command -v sudo > /dev/null 2>&1; then echo "Failed to install sudo, command not found"; exit 1; fi;\ if ! command -v docker > /dev/null 2>&1; then echo "Failed to install docker, command not found"; exit 1; fi;\
docker --version docker --version
+3 -2
View File
@@ -127,7 +127,8 @@ void ApiController::updateServerConfigFromApi()
auto defaultContainer = apiConfig.value(config_key::defaultContainer).toString(); auto defaultContainer = apiConfig.value(config_key::defaultContainer).toString();
serverConfig.insert(config_key::defaultContainer, defaultContainer); serverConfig.insert(config_key::defaultContainer, defaultContainer);
m_serversModel->editServer(serverConfig, m_serversModel->getDefaultServerIndex()); m_serversModel->editServer(serverConfig);
emit m_serversModel->defaultContainerChanged(ContainerProps::containerFromString(defaultContainer));
} else { } else {
qDebug() << reply->error(); qDebug() << reply->error();
qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
@@ -152,5 +153,5 @@ void ApiController::clearApiConfig()
serverConfig.insert(config_key::defaultContainer, ContainerProps::containerToString(DockerContainer::None)); serverConfig.insert(config_key::defaultContainer, ContainerProps::containerToString(DockerContainer::None));
m_serversModel->editServer(serverConfig, m_serversModel->getDefaultServerIndex()); m_serversModel->editServer(serverConfig);
} }
@@ -33,7 +33,7 @@ void ConnectionController::openConnection()
int serverIndex = m_serversModel->getDefaultServerIndex(); int serverIndex = m_serversModel->getDefaultServerIndex();
ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex); ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex);
DockerContainer container = qvariant_cast<DockerContainer>(m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole)); DockerContainer container = m_serversModel->getDefaultContainer(serverIndex);
const QJsonObject &containerConfig = m_containersModel->getContainerConfig(container); const QJsonObject &containerConfig = m_containersModel->getContainerConfig(container);
if (container == DockerContainer::None) { if (container == DockerContainer::None) {
+7 -7
View File
@@ -45,7 +45,7 @@ void ExportController::generateFullAccessConfig()
{ {
clearPreviousConfig(); clearPreviousConfig();
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
QJsonObject config = m_settings->server(serverIndex); QJsonObject config = m_settings->server(serverIndex);
QJsonArray containers = config.value(config_key::containers).toArray(); QJsonArray containers = config.value(config_key::containers).toArray();
@@ -99,7 +99,7 @@ void ExportController::generateConnectionConfig(const QString &clientName)
{ {
clearPreviousConfig(); clearPreviousConfig();
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex); ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex);
DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex()); DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex());
@@ -155,7 +155,7 @@ void ExportController::generateOpenVpnConfig(const QString &clientName)
{ {
clearPreviousConfig(); clearPreviousConfig();
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex); ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex);
DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex()); DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex());
@@ -193,7 +193,7 @@ void ExportController::generateWireGuardConfig(const QString &clientName)
{ {
clearPreviousConfig(); clearPreviousConfig();
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex); ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex);
DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex()); DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex());
@@ -232,7 +232,7 @@ void ExportController::generateShadowSocksConfig()
{ {
clearPreviousConfig(); clearPreviousConfig();
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex); ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex);
DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex()); DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex());
@@ -268,7 +268,7 @@ void ExportController::generateCloakConfig()
{ {
clearPreviousConfig(); clearPreviousConfig();
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex); ServerCredentials credentials = m_serversModel->getServerCredentials(serverIndex);
DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex()); DockerContainer container = static_cast<DockerContainer>(m_containersModel->getCurrentlyProcessedContainerIndex());
@@ -328,7 +328,7 @@ void ExportController::updateClientManagementModel(const DockerContainer contain
void ExportController::revokeConfig(const int row, const DockerContainer container, ServerCredentials credentials) void ExportController::revokeConfig(const int row, const DockerContainer container, ServerCredentials credentials)
{ {
ErrorCode errorCode = m_clientManagementModel->revokeClient(row, container, credentials, ErrorCode errorCode = m_clientManagementModel->revokeClient(row, container, credentials,
m_serversModel->getProcessedServerIndex()); m_serversModel->getCurrentlyProcessedServerIndex());
if (errorCode != ErrorCode::NoError) { if (errorCode != ErrorCode::NoError) {
emit exportErrorOccurred(errorString(errorCode)); emit exportErrorOccurred(errorString(errorCode));
} }
+14 -14
View File
@@ -176,7 +176,7 @@ void InstallController::installServer(DockerContainer container, QJsonObject &co
void InstallController::installContainer(DockerContainer container, QJsonObject &config) void InstallController::installContainer(DockerContainer container, QJsonObject &config)
{ {
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials serverCredentials = ServerCredentials serverCredentials =
qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole)); qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole));
@@ -238,7 +238,7 @@ bool InstallController::isServerAlreadyExists()
void InstallController::scanServerForInstalledContainers() void InstallController::scanServerForInstalledContainers()
{ {
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials serverCredentials = ServerCredentials serverCredentials =
qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole)); qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole));
@@ -267,7 +267,7 @@ void InstallController::scanServerForInstalledContainers()
void InstallController::updateContainer(QJsonObject config) void InstallController::updateContainer(QJsonObject config)
{ {
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials serverCredentials = ServerCredentials serverCredentials =
qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole)); qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole));
@@ -283,8 +283,8 @@ void InstallController::updateContainer(QJsonObject config)
m_serversModel->updateContainerConfig(container, config); m_serversModel->updateContainerConfig(container, config);
m_protocolModel->updateModel(config); m_protocolModel->updateModel(config);
auto defaultContainer = qvariant_cast<DockerContainer>(m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole)); if ((serverIndex == m_serversModel->getDefaultServerIndex())
if ((serverIndex == m_serversModel->getDefaultServerIndex()) && (container == defaultContainer)) { && (container == m_serversModel->getDefaultContainer(serverIndex))) {
emit currentContainerUpdated(); emit currentContainerUpdated();
} else { } else {
emit updateContainerFinished(tr("Settings updated successfully")); emit updateContainerFinished(tr("Settings updated successfully"));
@@ -296,27 +296,27 @@ void InstallController::updateContainer(QJsonObject config)
emit installationErrorOccurred(errorString(errorCode)); emit installationErrorOccurred(errorString(errorCode));
} }
void InstallController::rebootProcessedServer() void InstallController::rebootCurrentlyProcessedServer()
{ {
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString(); QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString();
m_serversModel->rebootServer(); m_serversModel->rebootServer();
emit rebootProcessedServerFinished(tr("Server '%1' was rebooted").arg(serverName)); emit rebootCurrentlyProcessedServerFinished(tr("Server '%1' was rebooted").arg(serverName));
} }
void InstallController::removeProcessedServer() void InstallController::removeCurrentlyProcessedServer()
{ {
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString(); QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString();
m_serversModel->removeServer(); m_serversModel->removeServer();
emit removeProcessedServerFinished(tr("Server '%1' was removed").arg(serverName)); emit removeCurrentlyProcessedServerFinished(tr("Server '%1' was removed").arg(serverName));
} }
void InstallController::removeAllContainers() void InstallController::removeAllContainers()
{ {
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString(); QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString();
ErrorCode errorCode = m_serversModel->removeAllContainers(); ErrorCode errorCode = m_serversModel->removeAllContainers();
@@ -329,7 +329,7 @@ void InstallController::removeAllContainers()
void InstallController::removeCurrentlyProcessedContainer() void InstallController::removeCurrentlyProcessedContainer()
{ {
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString(); QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString();
int container = m_containersModel->getCurrentlyProcessedContainerIndex(); int container = m_containersModel->getCurrentlyProcessedContainerIndex();
@@ -377,7 +377,7 @@ void InstallController::mountSftpDrive(const QString &port, const QString &passw
QString mountPath; QString mountPath;
QString cmd; QString cmd;
int serverIndex = m_serversModel->getProcessedServerIndex(); int serverIndex = m_serversModel->getCurrentlyProcessedServerIndex();
ServerCredentials serverCredentials = ServerCredentials serverCredentials =
qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole)); qvariant_cast<ServerCredentials>(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole));
QString hostname = serverCredentials.hostName; QString hostname = serverCredentials.hostName;
+4 -4
View File
@@ -30,8 +30,8 @@ public slots:
void updateContainer(QJsonObject config); void updateContainer(QJsonObject config);
void removeProcessedServer(); void removeCurrentlyProcessedServer();
void rebootProcessedServer(); void rebootCurrentlyProcessedServer();
void removeAllContainers(); void removeAllContainers();
void removeCurrentlyProcessedContainer(); void removeCurrentlyProcessedContainer();
@@ -54,8 +54,8 @@ signals:
void scanServerFinished(bool isInstalledContainerFound); void scanServerFinished(bool isInstalledContainerFound);
void rebootProcessedServerFinished(const QString &finishedMessage); void rebootCurrentlyProcessedServerFinished(const QString &finishedMessage);
void removeProcessedServerFinished(const QString &finishedMessage); void removeCurrentlyProcessedServerFinished(const QString &finishedMessage);
void removeAllContainersFinished(const QString &finishedMessage); void removeAllContainersFinished(const QString &finishedMessage);
void removeCurrentlyProcessedContainerFinished(const QString &finishedMessage); void removeCurrentlyProcessedContainerFinished(const QString &finishedMessage);
+111 -124
View File
@@ -5,13 +5,19 @@
ServersModel::ServersModel(std::shared_ptr<Settings> settings, QObject *parent) ServersModel::ServersModel(std::shared_ptr<Settings> settings, QObject *parent)
: m_settings(settings), QAbstractListModel(parent) : m_settings(settings), QAbstractListModel(parent)
{ {
connect(this, &ServersModel::defaultServerIndexChanged, this, &ServersModel::defaultServerNameChanged); m_servers = m_settings->serversArray();
m_defaultServerIndex = m_settings->defaultServerIndex();
m_currentlyProcessedServerIndex = m_defaultServerIndex;
connect(this, &ServersModel::defaultServerIndexChanged, this, &ServersModel::defaultServerNameChanged);
connect(this, &ServersModel::defaultContainerChanged, this, &ServersModel::defaultServerDescriptionChanged);
connect(this, &ServersModel::defaultServerIndexChanged, this, [this](const int serverIndex) { connect(this, &ServersModel::defaultServerIndexChanged, this, [this](const int serverIndex) {
auto defaultContainer = ContainerProps::containerFromString(m_servers.at(serverIndex).toObject().value(config_key::defaultContainer).toString()); auto defaultContainer = ContainerProps::containerFromString(m_servers.at(serverIndex).toObject().value(config_key::defaultContainer).toString());
emit ServersModel::defaultServerDefaultContainerChanged(defaultContainer); emit ServersModel::defaultContainerChanged(defaultContainer);
emit ServersModel::defaultServerNameChanged(); });
updateDefaultServerContainersModel(); connect(this, &ServersModel::currentlyProcessedServerIndexChanged, this, [this](const int serverIndex) {
auto defaultContainer = ContainerProps::containerFromString(m_servers.at(serverIndex).toObject().value(config_key::defaultContainer).toString());
emit ServersModel::defaultContainerChanged(defaultContainer);
}); });
} }
@@ -68,14 +74,16 @@ QVariant ServersModel::data(const QModelIndex &index, int role) const
return name; return name;
} }
case ServerDescriptionRole: { case ServerDescriptionRole: {
auto description = getServerDescription(server, index.row()); if (configVersion) {
return configVersion ? description : description + server.value(config_key::hostName).toString(); return server.value(config_key::description).toString();
}
return server.value(config_key::hostName).toString();
} }
case HostNameRole: return server.value(config_key::hostName).toString(); case HostNameRole: return server.value(config_key::hostName).toString();
case CredentialsRole: return QVariant::fromValue(serverCredentials(index.row())); case CredentialsRole: return QVariant::fromValue(serverCredentials(index.row()));
case CredentialsLoginRole: return serverCredentials(index.row()).userName; case CredentialsLoginRole: return serverCredentials(index.row()).userName;
case IsDefaultRole: return index.row() == m_defaultServerIndex; case IsDefaultRole: return index.row() == m_defaultServerIndex;
case IsCurrentlyProcessedRole: return index.row() == m_processedServerIndex; case IsCurrentlyProcessedRole: return index.row() == m_currentlyProcessedServerIndex;
case HasWriteAccessRole: { case HasWriteAccessRole: {
auto credentials = serverCredentials(index.row()); auto credentials = serverCredentials(index.row());
return (!credentials.userName.isEmpty() && !credentials.secretData.isEmpty()); return (!credentials.userName.isEmpty() && !credentials.secretData.isEmpty());
@@ -87,13 +95,6 @@ QVariant ServersModel::data(const QModelIndex &index, int role) const
case DefaultContainerRole: { case DefaultContainerRole: {
return ContainerProps::containerFromString(server.value(config_key::defaultContainer).toString()); return ContainerProps::containerFromString(server.value(config_key::defaultContainer).toString());
} }
case IsServerFromApiRole: {
return server.value(config_key::configVersion).toInt();
}
case HasAmneziaDns: {
QString primaryDns = server.value(config_key::dns1).toString();
return primaryDns == protocols::dns::amneziaDnsIp;
}
} }
return QVariant(); return QVariant();
@@ -110,9 +111,8 @@ void ServersModel::resetModel()
beginResetModel(); beginResetModel();
m_servers = m_settings->serversArray(); m_servers = m_settings->serversArray();
m_defaultServerIndex = m_settings->defaultServerIndex(); m_defaultServerIndex = m_settings->defaultServerIndex();
m_processedServerIndex = m_defaultServerIndex; m_currentlyProcessedServerIndex = m_defaultServerIndex;
endResetModel(); endResetModel();
emit defaultServerIndexChanged(m_defaultServerIndex);
} }
void ServersModel::setDefaultServerIndex(const int index) void ServersModel::setDefaultServerIndex(const int index)
@@ -132,7 +132,12 @@ const QString ServersModel::getDefaultServerName()
return qvariant_cast<QString>(data(m_defaultServerIndex, NameRole)); return qvariant_cast<QString>(data(m_defaultServerIndex, NameRole));
} }
QString ServersModel::getServerDescription(const QJsonObject &server, const int index) const const QString ServersModel::getDefaultServerHostName()
{
return qvariant_cast<QString>(data(m_defaultServerIndex, HostNameRole));
}
QString ServersModel::getDefaultServerDescription(const QJsonObject &server)
{ {
const auto configVersion = server.value(config_key::configVersion).toInt(); const auto configVersion = server.value(config_key::configVersion).toInt();
@@ -140,12 +145,13 @@ QString ServersModel::getServerDescription(const QJsonObject &server, const int
if (configVersion) { if (configVersion) {
return server.value(config_key::description).toString(); return server.value(config_key::description).toString();
} else if (data(index, HasWriteAccessRole).toBool()) { } else if (isDefaultServerHasWriteAccess()) {
if (m_isAmneziaDnsEnabled && isAmneziaDnsContainerInstalled(index)) { if (m_isAmneziaDnsEnabled
&& isAmneziaDnsContainerInstalled(m_defaultServerIndex)) {
description += "Amnezia DNS | "; description += "Amnezia DNS | ";
} }
} else { } else {
if (data(index, HasAmneziaDns).toBool()) { if (isDefaultServerConfigContainsAmneziaDns()) {
description += "Amnezia DNS | "; description += "Amnezia DNS | ";
} }
} }
@@ -156,7 +162,7 @@ const QString ServersModel::getDefaultServerDescriptionCollapsed()
{ {
const QJsonObject server = m_servers.at(m_defaultServerIndex).toObject(); const QJsonObject server = m_servers.at(m_defaultServerIndex).toObject();
const auto configVersion = server.value(config_key::configVersion).toInt(); const auto configVersion = server.value(config_key::configVersion).toInt();
auto description = getServerDescription(server, m_defaultServerIndex); auto description = getDefaultServerDescription(server);
if (configVersion) { if (configVersion) {
return description; return description;
} }
@@ -170,7 +176,7 @@ const QString ServersModel::getDefaultServerDescriptionExpanded()
{ {
const QJsonObject server = m_servers.at(m_defaultServerIndex).toObject(); const QJsonObject server = m_servers.at(m_defaultServerIndex).toObject();
const auto configVersion = server.value(config_key::configVersion).toInt(); const auto configVersion = server.value(config_key::configVersion).toInt();
auto description = getServerDescription(server, m_defaultServerIndex); auto description = getDefaultServerDescription(server);
if (configVersion) { if (configVersion) {
return description; return description;
} }
@@ -193,21 +199,26 @@ bool ServersModel::hasServerWithWriteAccess()
return false; return false;
} }
void ServersModel::setProcessedServerIndex(const int index) void ServersModel::setCurrentlyProcessedServerIndex(const int index)
{ {
m_processedServerIndex = index; m_currentlyProcessedServerIndex = index;
updateContainersModel(); updateContainersModel();
emit processedServerIndexChanged(m_processedServerIndex); emit currentlyProcessedServerIndexChanged(m_currentlyProcessedServerIndex);
} }
int ServersModel::getProcessedServerIndex() int ServersModel::getCurrentlyProcessedServerIndex()
{ {
return m_processedServerIndex; return m_currentlyProcessedServerIndex;
} }
const ServerCredentials ServersModel::getProcessedServerCredentials() QString ServersModel::getCurrentlyProcessedServerHostName()
{ {
return serverCredentials(m_processedServerIndex); return qvariant_cast<QString>(data(m_currentlyProcessedServerIndex, HostNameRole));
}
const ServerCredentials ServersModel::getCurrentlyProcessedServerCredentials()
{
return serverCredentials(m_currentlyProcessedServerIndex);
} }
const ServerCredentials ServersModel::getServerCredentials(const int index) const ServerCredentials ServersModel::getServerCredentials(const int index)
@@ -217,12 +228,12 @@ const ServerCredentials ServersModel::getServerCredentials(const int index)
bool ServersModel::isDefaultServerCurrentlyProcessed() bool ServersModel::isDefaultServerCurrentlyProcessed()
{ {
return m_defaultServerIndex == m_processedServerIndex; return m_defaultServerIndex == m_currentlyProcessedServerIndex;
} }
bool ServersModel::isProcessedServerHasWriteAccess() bool ServersModel::isCurrentlyProcessedServerHasWriteAccess()
{ {
return qvariant_cast<bool>(data(m_processedServerIndex, HasWriteAccessRole)); return qvariant_cast<bool>(data(m_currentlyProcessedServerIndex, HasWriteAccessRole));
} }
bool ServersModel::isDefaultServerHasWriteAccess() bool ServersModel::isDefaultServerHasWriteAccess()
@@ -238,42 +249,40 @@ void ServersModel::addServer(const QJsonObject &server)
endResetModel(); endResetModel();
} }
void ServersModel::editServer(const QJsonObject &server, const int serverIndex) void ServersModel::editServer(const QJsonObject &server)
{ {
m_settings->editServer(serverIndex, server); m_settings->editServer(m_currentlyProcessedServerIndex, server);
m_servers.replace(serverIndex, m_settings->serversArray().at(serverIndex)); m_servers.replace(m_currentlyProcessedServerIndex, m_settings->serversArray().at(m_currentlyProcessedServerIndex));
emit dataChanged(index(serverIndex, 0), index(serverIndex, 0)); emit dataChanged(index(m_currentlyProcessedServerIndex, 0), index(m_currentlyProcessedServerIndex, 0));
if (serverIndex == m_defaultServerIndex) {
updateDefaultServerContainersModel();
}
updateContainersModel(); updateContainersModel();
if (isDefaultServerCurrentlyProcessed()) {
auto defaultContainer = qvariant_cast<DockerContainer>(getDefaultServerData("defaultContainer"));
emit defaultServerDefaultContainerChanged(defaultContainer);
}
} }
void ServersModel::removeServer() void ServersModel::removeServer()
{ {
beginResetModel(); beginResetModel();
m_settings->removeServer(m_processedServerIndex); m_settings->removeServer(m_currentlyProcessedServerIndex);
m_servers = m_settings->serversArray(); m_servers = m_settings->serversArray();
if (m_settings->defaultServerIndex() == m_processedServerIndex) { if (m_settings->defaultServerIndex() == m_currentlyProcessedServerIndex) {
setDefaultServerIndex(0); setDefaultServerIndex(0);
} else if (m_settings->defaultServerIndex() > m_processedServerIndex) { } else if (m_settings->defaultServerIndex() > m_currentlyProcessedServerIndex) {
setDefaultServerIndex(m_settings->defaultServerIndex() - 1); setDefaultServerIndex(m_settings->defaultServerIndex() - 1);
} }
if (m_settings->serversCount() == 0) { if (m_settings->serversCount() == 0) {
setDefaultServerIndex(-1); setDefaultServerIndex(-1);
} }
setProcessedServerIndex(m_defaultServerIndex); setCurrentlyProcessedServerIndex(m_defaultServerIndex);
endResetModel(); endResetModel();
} }
bool ServersModel::isDefaultServerConfigContainsAmneziaDns()
{
const QJsonObject server = m_servers.at(m_defaultServerIndex).toObject();
QString primaryDns = server.value(config_key::dns1).toString();
return primaryDns == protocols::dns::amneziaDnsIp;
}
QHash<int, QByteArray> ServersModel::roleNames() const QHash<int, QByteArray> ServersModel::roleNames() const
{ {
QHash<int, QByteArray> roles; QHash<int, QByteArray> roles;
@@ -281,8 +290,6 @@ QHash<int, QByteArray> ServersModel::roleNames() const
roles[NameRole] = "serverName"; roles[NameRole] = "serverName";
roles[NameRole] = "name"; roles[NameRole] = "name";
roles[ServerDescriptionRole] = "serverDescription"; roles[ServerDescriptionRole] = "serverDescription";
roles[CollapsedServerDescriptionRole] = "collapsedServerDescription";
roles[ExpandedServerDescriptionRole] = "expandedServerDescription";
roles[HostNameRole] = "hostName"; roles[HostNameRole] = "hostName";
@@ -297,8 +304,6 @@ QHash<int, QByteArray> ServersModel::roleNames() const
roles[ContainsAmneziaDnsRole] = "containsAmneziaDns"; roles[ContainsAmneziaDnsRole] = "containsAmneziaDns";
roles[DefaultContainerRole] = "defaultContainer"; roles[DefaultContainerRole] = "defaultContainer";
roles[IsServerFromApiRole] = "isServerFromApi";
return roles; return roles;
} }
@@ -317,29 +322,28 @@ ServerCredentials ServersModel::serverCredentials(int index) const
void ServersModel::updateContainersModel() void ServersModel::updateContainersModel()
{ {
auto containers = m_servers.at(m_processedServerIndex).toObject().value(config_key::containers).toArray(); auto containers = m_servers.at(m_currentlyProcessedServerIndex).toObject().value(config_key::containers).toArray();
emit containersUpdated(containers); emit containersUpdated(containers);
} }
void ServersModel::updateDefaultServerContainersModel()
{
auto containers = m_servers.at(m_defaultServerIndex).toObject().value(config_key::containers).toArray();
emit defaultServerContainersUpdated(containers);
}
QJsonObject ServersModel::getDefaultServerConfig() QJsonObject ServersModel::getDefaultServerConfig()
{ {
return m_servers.at(m_defaultServerIndex).toObject(); return m_servers.at(m_defaultServerIndex).toObject();
} }
void ServersModel::reloadDefaultServerContainerConfig() QJsonObject ServersModel::getCurrentlyProcessedServerConfig()
{ {
QJsonObject server = m_servers.at(m_defaultServerIndex).toObject(); return m_servers.at(m_currentlyProcessedServerIndex).toObject();
}
void ServersModel::reloadContainerConfig()
{
QJsonObject server = m_servers.at(m_currentlyProcessedServerIndex).toObject();
auto container = ContainerProps::containerFromString(server.value(config_key::defaultContainer).toString()); auto container = ContainerProps::containerFromString(server.value(config_key::defaultContainer).toString());
auto containers = server.value(config_key::containers).toArray(); auto containers = server.value(config_key::containers).toArray();
auto config = m_settings->containerConfig(m_defaultServerIndex, container); auto config = m_settings->containerConfig(m_currentlyProcessedServerIndex, container);
for (auto i = 0; i < containers.size(); i++) { for (auto i = 0; i < containers.size(); i++) {
auto c = ContainerProps::containerFromString(containers.at(i).toObject().value(config_key::container).toString()); auto c = ContainerProps::containerFromString(containers.at(i).toObject().value(config_key::container).toString());
if (c == container) { if (c == container) {
@@ -349,13 +353,13 @@ void ServersModel::reloadDefaultServerContainerConfig()
} }
server.insert(config_key::containers, containers); server.insert(config_key::containers, containers);
editServer(server, m_defaultServerIndex); editServer(server);
} }
void ServersModel::updateContainerConfig(const int containerIndex, const QJsonObject config) void ServersModel::updateContainerConfig(const int containerIndex, const QJsonObject config)
{ {
auto container = static_cast<DockerContainer>(containerIndex); auto container = static_cast<DockerContainer>(containerIndex);
QJsonObject server = m_servers.at(m_processedServerIndex).toObject(); QJsonObject server = m_servers.at(m_currentlyProcessedServerIndex).toObject();
auto containers = server.value(config_key::containers).toArray(); auto containers = server.value(config_key::containers).toArray();
for (auto i = 0; i < containers.size(); i++) { for (auto i = 0; i < containers.size(); i++) {
@@ -373,25 +377,30 @@ void ServersModel::updateContainerConfig(const int containerIndex, const QJsonOb
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container)); server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
} }
editServer(server, m_processedServerIndex); editServer(server);
} }
void ServersModel::addContainerConfig(const int containerIndex, const QJsonObject config) void ServersModel::addContainerConfig(const int containerIndex, const QJsonObject config)
{ {
auto container = static_cast<DockerContainer>(containerIndex); auto container = static_cast<DockerContainer>(containerIndex);
QJsonObject server = m_servers.at(m_processedServerIndex).toObject(); QJsonObject server = m_servers.at(m_currentlyProcessedServerIndex).toObject();
auto containers = server.value(config_key::containers).toArray(); auto containers = server.value(config_key::containers).toArray();
containers.push_back(config); containers.push_back(config);
server.insert(config_key::containers, containers); server.insert(config_key::containers, containers);
bool isDefaultContainerChanged = false;
auto defaultContainer = server.value(config_key::defaultContainer).toString(); auto defaultContainer = server.value(config_key::defaultContainer).toString();
if ((ContainerProps::containerFromString(defaultContainer) == DockerContainer::None || ContainerProps::containerService(container) != ServiceType::Other)) { if ((ContainerProps::containerFromString(defaultContainer) == DockerContainer::None || ContainerProps::containerService(container) != ServiceType::Other)) {
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container)); server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
isDefaultContainerChanged = true;
} }
editServer(server, m_processedServerIndex); editServer(server);
if (isDefaultContainerChanged) {
emit defaultContainerChanged(container);
}
} }
void ServersModel::setDefaultContainer(const int serverIndex, const int containerIndex) void ServersModel::setDefaultContainer(const int serverIndex, const int containerIndex)
@@ -399,12 +408,18 @@ void ServersModel::setDefaultContainer(const int serverIndex, const int containe
auto container = static_cast<DockerContainer>(containerIndex); auto container = static_cast<DockerContainer>(containerIndex);
QJsonObject s = m_servers.at(serverIndex).toObject(); QJsonObject s = m_servers.at(serverIndex).toObject();
s.insert(config_key::defaultContainer, ContainerProps::containerToString(container)); s.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
editServer(s, serverIndex); //check editServer(s); //check
emit defaultContainerChanged(container);
} }
const QString ServersModel::getDefaultServerDefaultContainerName() DockerContainer ServersModel::getDefaultContainer(const int serverIndex)
{ {
auto defaultContainer = qvariant_cast<DockerContainer>(getDefaultServerData("defaultContainer")); return qvariant_cast<DockerContainer>(data(serverIndex, DefaultContainerRole));
}
const QString ServersModel::getDefaultContainerName()
{
auto defaultContainer = getDefaultContainer(m_defaultServerIndex);
return ContainerProps::containerHumanNames().value(defaultContainer); return ContainerProps::containerHumanNames().value(defaultContainer);
} }
@@ -412,14 +427,15 @@ ErrorCode ServersModel::removeAllContainers()
{ {
ServerController serverController(m_settings); ServerController serverController(m_settings);
ErrorCode errorCode = ErrorCode errorCode =
serverController.removeAllContainers(m_settings->serverCredentials(m_processedServerIndex)); serverController.removeAllContainers(m_settings->serverCredentials(m_currentlyProcessedServerIndex));
if (errorCode == ErrorCode::NoError) { if (errorCode == ErrorCode::NoError) {
QJsonObject s = m_servers.at(m_processedServerIndex).toObject(); QJsonObject s = m_servers.at(m_currentlyProcessedServerIndex).toObject();
s.insert(config_key::containers, {}); s.insert(config_key::containers, {});
s.insert(config_key::defaultContainer, ContainerProps::containerToString(DockerContainer::None)); s.insert(config_key::defaultContainer, ContainerProps::containerToString(DockerContainer::None));
editServer(s, m_processedServerIndex); editServer(s);
emit defaultContainerChanged(DockerContainer::None);
} }
return errorCode; return errorCode;
} }
@@ -427,7 +443,7 @@ ErrorCode ServersModel::removeAllContainers()
ErrorCode ServersModel::rebootServer() ErrorCode ServersModel::rebootServer()
{ {
ServerController serverController(m_settings); ServerController serverController(m_settings);
auto credentials = m_settings->serverCredentials(m_processedServerIndex); auto credentials = m_settings->serverCredentials(m_currentlyProcessedServerIndex);
ErrorCode errorCode = serverController.rebootServer(credentials); ErrorCode errorCode = serverController.rebootServer(credentials);
return errorCode; return errorCode;
@@ -436,13 +452,13 @@ ErrorCode ServersModel::rebootServer()
ErrorCode ServersModel::removeContainer(const int containerIndex) ErrorCode ServersModel::removeContainer(const int containerIndex)
{ {
ServerController serverController(m_settings); ServerController serverController(m_settings);
auto credentials = m_settings->serverCredentials(m_processedServerIndex); auto credentials = m_settings->serverCredentials(m_currentlyProcessedServerIndex);
auto dockerContainer = static_cast<DockerContainer>(containerIndex); auto dockerContainer = static_cast<DockerContainer>(containerIndex);
ErrorCode errorCode = serverController.removeContainer(credentials, dockerContainer); ErrorCode errorCode = serverController.removeContainer(credentials, dockerContainer);
if (errorCode == ErrorCode::NoError) { if (errorCode == ErrorCode::NoError) {
QJsonObject server = m_servers.at(m_processedServerIndex).toObject(); QJsonObject server = m_servers.at(m_currentlyProcessedServerIndex).toObject();
auto containers = server.value(config_key::containers).toArray(); auto containers = server.value(config_key::containers).toArray();
for (auto it = containers.begin(); it != containers.end(); it++) { for (auto it = containers.begin(); it != containers.end(); it++) {
@@ -464,37 +480,32 @@ ErrorCode ServersModel::removeContainer(const int containerIndex)
server.insert(config_key::defaultContainer, ContainerProps::containerToString(defaultContainer)); server.insert(config_key::defaultContainer, ContainerProps::containerToString(defaultContainer));
} }
editServer(server, m_processedServerIndex); editServer(server);
emit defaultContainerChanged(defaultContainer);
} }
return errorCode; return errorCode;
} }
void ServersModel::clearCachedProfiles() void ServersModel::clearCachedProfiles()
{ {
const auto &containers = m_settings->containers(m_processedServerIndex); const auto &containers = m_settings->containers(m_currentlyProcessedServerIndex);
for (DockerContainer container : containers.keys()) { for (DockerContainer container : containers.keys()) {
m_settings->clearLastConnectionConfig(m_processedServerIndex, container); m_settings->clearLastConnectionConfig(m_currentlyProcessedServerIndex, container);
} }
m_servers.replace(m_processedServerIndex, m_settings->server(m_processedServerIndex)); m_servers.replace(m_currentlyProcessedServerIndex, m_settings->server(m_currentlyProcessedServerIndex));
if (m_processedServerIndex == m_defaultServerIndex) {
updateDefaultServerContainersModel();
}
updateContainersModel(); updateContainersModel();
} }
void ServersModel::clearCachedProfile(const DockerContainer container) void ServersModel::clearCachedProfile(const DockerContainer container)
{ {
m_settings->clearLastConnectionConfig(m_processedServerIndex, container); m_settings->clearLastConnectionConfig(m_currentlyProcessedServerIndex, container);
m_servers.replace(m_processedServerIndex, m_settings->server(m_processedServerIndex)); m_servers.replace(m_currentlyProcessedServerIndex, m_settings->server(m_currentlyProcessedServerIndex));
if (m_processedServerIndex == m_defaultServerIndex) {
updateDefaultServerContainersModel();
}
updateContainersModel(); updateContainersModel();
} }
bool ServersModel::isAmneziaDnsContainerInstalled(const int serverIndex) const bool ServersModel::isAmneziaDnsContainerInstalled(const int serverIndex)
{ {
QJsonObject server = m_servers.at(serverIndex).toObject(); QJsonObject server = m_servers.at(serverIndex).toObject();
auto containers = server.value(config_key::containers).toArray(); auto containers = server.value(config_key::containers).toArray();
@@ -533,6 +544,16 @@ void ServersModel::toggleAmneziaDns(bool enabled)
emit defaultServerDescriptionChanged(); emit defaultServerDescriptionChanged();
} }
bool ServersModel::isDefaultServerFromApi()
{
return m_settings->server(m_defaultServerIndex).value(config_key::configVersion).toInt();
}
bool ServersModel::isCurrentlyProcessedServerFromApi()
{
return m_settings->server(m_currentlyProcessedServerIndex).value(config_key::configVersion).toInt();
}
bool ServersModel::isServerFromApiAlreadyExists(const quint16 crc) bool ServersModel::isServerFromApiAlreadyExists(const quint16 crc)
{ {
for (const auto &server : qAsConst(m_servers)) { for (const auto &server : qAsConst(m_servers)) {
@@ -543,37 +564,3 @@ bool ServersModel::isServerFromApiAlreadyExists(const quint16 crc)
return false; return false;
} }
QVariant ServersModel::getDefaultServerData(const QString roleString)
{
auto roles = roleNames();
for (auto it = roles.begin(); it != roles.end(); it++) {
if (QString(it.value()) == roleString) {
return data(m_defaultServerIndex, it.key());
}
}
return {};
}
void ServersModel::setDefaultServerData(const QString roleString, const QVariant &value)
{
}
QVariant ServersModel::getProcessedServerData(const QString roleString)
{
auto roles = roleNames();
for (auto it = roles.begin(); it != roles.end(); it++) {
if (QString(it.value()) == roleString) {
return data(m_processedServerIndex, it.key());
}
}
return {};
}
void ServersModel::setProcessedServerData(const QString roleString, const QVariant &value)
{
}
+30 -33
View File
@@ -12,8 +12,7 @@ public:
enum Roles { enum Roles {
NameRole = Qt::UserRole + 1, NameRole = Qt::UserRole + 1,
ServerDescriptionRole, ServerDescriptionRole,
CollapsedServerDescriptionRole,
ExpandedServerDescriptionRole,
HostNameRole, HostNameRole,
CredentialsRole, CredentialsRole,
@@ -26,11 +25,7 @@ public:
ContainsAmneziaDnsRole, ContainsAmneziaDnsRole,
DefaultContainerRole, DefaultContainerRole
IsServerFromApiRole,
HasAmneziaDns
}; };
ServersModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr); ServersModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
@@ -45,40 +40,47 @@ public:
Q_PROPERTY(int defaultIndex READ getDefaultServerIndex WRITE setDefaultServerIndex NOTIFY defaultServerIndexChanged) Q_PROPERTY(int defaultIndex READ getDefaultServerIndex WRITE setDefaultServerIndex NOTIFY defaultServerIndexChanged)
Q_PROPERTY(QString defaultServerName READ getDefaultServerName NOTIFY defaultServerNameChanged) Q_PROPERTY(QString defaultServerName READ getDefaultServerName NOTIFY defaultServerNameChanged)
Q_PROPERTY(QString defaultServerDefaultContainerName READ getDefaultServerDefaultContainerName NOTIFY defaultServerDefaultContainerChanged) Q_PROPERTY(QString defaultServerHostName READ getDefaultServerHostName NOTIFY defaultServerIndexChanged)
Q_PROPERTY(QString defaultServerDescriptionCollapsed READ getDefaultServerDescriptionCollapsed NOTIFY defaultServerDefaultContainerChanged) Q_PROPERTY(QString defaultContainerName READ getDefaultContainerName NOTIFY defaultContainerChanged)
Q_PROPERTY(QString defaultServerDescriptionExpanded READ getDefaultServerDescriptionExpanded NOTIFY defaultServerDefaultContainerChanged) Q_PROPERTY(QString defaultServerDescriptionCollapsed READ getDefaultServerDescriptionCollapsed NOTIFY defaultServerDescriptionChanged)
Q_PROPERTY(QString defaultServerDescriptionExpanded READ getDefaultServerDescriptionExpanded NOTIFY defaultServerDescriptionChanged)
Q_PROPERTY(int processedIndex READ getProcessedServerIndex WRITE setProcessedServerIndex NOTIFY processedServerIndexChanged) Q_PROPERTY(int currentlyProcessedIndex READ getCurrentlyProcessedServerIndex WRITE setCurrentlyProcessedServerIndex
NOTIFY currentlyProcessedServerIndexChanged)
public slots: public slots:
void setDefaultServerIndex(const int index); void setDefaultServerIndex(const int index);
const int getDefaultServerIndex(); const int getDefaultServerIndex();
const QString getDefaultServerName(); const QString getDefaultServerName();
const QString getDefaultServerHostName();
const QString getDefaultServerDescriptionCollapsed(); const QString getDefaultServerDescriptionCollapsed();
const QString getDefaultServerDescriptionExpanded(); const QString getDefaultServerDescriptionExpanded();
const QString getDefaultServerDefaultContainerName();
bool isDefaultServerCurrentlyProcessed(); bool isDefaultServerCurrentlyProcessed();
bool isProcessedServerHasWriteAccess(); bool isCurrentlyProcessedServerHasWriteAccess();
bool isDefaultServerHasWriteAccess(); bool isDefaultServerHasWriteAccess();
bool hasServerWithWriteAccess(); bool hasServerWithWriteAccess();
const int getServersCount(); const int getServersCount();
void setProcessedServerIndex(const int index); void setCurrentlyProcessedServerIndex(const int index);
int getProcessedServerIndex(); int getCurrentlyProcessedServerIndex();
const ServerCredentials getProcessedServerCredentials(); QString getCurrentlyProcessedServerHostName();
const ServerCredentials getCurrentlyProcessedServerCredentials();
const ServerCredentials getServerCredentials(const int index); const ServerCredentials getServerCredentials(const int index);
void addServer(const QJsonObject &server); void addServer(const QJsonObject &server);
void editServer(const QJsonObject &server, const int serverIndex); void editServer(const QJsonObject &server);
void removeServer(); void removeServer();
QJsonObject getDefaultServerConfig(); bool isDefaultServerConfigContainsAmneziaDns();
bool isAmneziaDnsContainerInstalled(const int serverIndex);
void reloadDefaultServerContainerConfig(); QJsonObject getDefaultServerConfig();
QJsonObject getCurrentlyProcessedServerConfig();
void reloadContainerConfig();
void updateContainerConfig(const int containerIndex, const QJsonObject config); void updateContainerConfig(const int containerIndex, const QJsonObject config);
void addContainerConfig(const int containerIndex, const QJsonObject config); void addContainerConfig(const int containerIndex, const QJsonObject config);
@@ -90,47 +92,42 @@ public slots:
ErrorCode rebootServer(); ErrorCode rebootServer();
void setDefaultContainer(const int serverIndex, const int containerIndex); void setDefaultContainer(const int serverIndex, const int containerIndex);
DockerContainer getDefaultContainer(const int serverIndex);
const QString getDefaultContainerName();
QStringList getAllInstalledServicesName(const int serverIndex); QStringList getAllInstalledServicesName(const int serverIndex);
void toggleAmneziaDns(bool enabled); void toggleAmneziaDns(bool enabled);
bool isDefaultServerFromApi();
bool isCurrentlyProcessedServerFromApi();
bool isServerFromApiAlreadyExists(const quint16 crc); bool isServerFromApiAlreadyExists(const quint16 crc);
QVariant getDefaultServerData(const QString roleString);
void setDefaultServerData(const QString roleString, const QVariant &value);
QVariant getProcessedServerData(const QString roleString);
void setProcessedServerData(const QString roleString, const QVariant &value);
protected: protected:
QHash<int, QByteArray> roleNames() const override; QHash<int, QByteArray> roleNames() const override;
signals: signals:
void processedServerIndexChanged(const int index); void currentlyProcessedServerIndexChanged(const int index);
void defaultServerIndexChanged(const int index); void defaultServerIndexChanged(const int index);
void defaultServerNameChanged(); void defaultServerNameChanged();
void defaultServerDescriptionChanged(); void defaultServerDescriptionChanged();
void containersUpdated(const QJsonArray &containers); void containersUpdated(const QJsonArray &containers);
void defaultServerContainersUpdated(const QJsonArray &containers); void defaultContainerChanged(const int containerIndex);
void defaultServerDefaultContainerChanged(const int containerIndex);
private: private:
ServerCredentials serverCredentials(int index) const; ServerCredentials serverCredentials(int index) const;
void updateContainersModel(); void updateContainersModel();
void updateDefaultServerContainersModel();
QString getServerDescription(const QJsonObject &server, const int index) const; QString getDefaultServerDescription(const QJsonObject &server);
bool isAmneziaDnsContainerInstalled(const int serverIndex) const;
QJsonArray m_servers; QJsonArray m_servers;
std::shared_ptr<Settings> m_settings; std::shared_ptr<Settings> m_settings;
int m_defaultServerIndex; int m_defaultServerIndex;
int m_processedServerIndex; int m_currentlyProcessedServerIndex;
bool m_isAmneziaDnsEnabled = m_settings->useAmneziaDns(); bool m_isAmneziaDnsEnabled = m_settings->useAmneziaDns();
}; };
@@ -15,7 +15,6 @@ ListView {
id: menuContent id: menuContent
property var rootWidth property var rootWidth
property var selectedText
width: rootWidth width: rootWidth
height: menuContent.contentItem.height height: menuContent.contentItem.height
@@ -52,7 +51,7 @@ ListView {
showImage: !isInstalled showImage: !isInstalled
checkable: isInstalled && !ConnectionController.isConnected && isSupported checkable: isInstalled && !ConnectionController.isConnected && isSupported
checked: proxyDefaultServerContainersModel.mapToSource(index) === ServersModel.getDefaultServerData("defaultContainer") checked: proxyContainersModel.mapToSource(index) === ServersModel.getDefaultContainer(ServersModel.defaultIndex)
onClicked: { onClicked: {
if (ConnectionController.isConnected && isInstalled) { if (ConnectionController.isConnected && isInstalled) {
@@ -62,14 +61,14 @@ ListView {
if (checked) { if (checked) {
containersDropDown.menuVisible = false containersDropDown.menuVisible = false
ServersModel.setDefaultContainer(ServersModel.defaultIndex, proxyDefaultServerContainersModel.mapToSource(index)) ServersModel.setDefaultContainer(ServersModel.defaultIndex, proxyContainersModel.mapToSource(index))
} else { } else {
if (!isSupported && isInstalled) { if (!isSupported && isInstalled) {
PageController.showErrorMessage(qsTr("The selected protocol is not supported on the current platform")) PageController.showErrorMessage(qsTr("The selected protocol is not supported on the current platform"))
return return
} }
ContainersModel.setCurrentlyProcessedContainerIndex(proxyDefaultServerContainersModel.mapToSource(index)) ContainersModel.setCurrentlyProcessedContainerIndex(proxyContainersModel.mapToSource(index))
InstallController.setShouldCreateServer(false) InstallController.setShouldCreateServer(false)
PageController.goToPage(PageEnum.PageSetupWizardProtocolSettings) PageController.goToPage(PageEnum.PageSetupWizardProtocolSettings)
containersDropDown.menuVisible = false containersDropDown.menuVisible = false
+26 -9
View File
@@ -313,12 +313,13 @@ PageType {
rootButtonTextTopMargin: 8 rootButtonTextTopMargin: 8
rootButtonTextBottomMargin: 8 rootButtonTextBottomMargin: 8
text: ServersModel.defaultServerDefaultContainerName text: ServersModel.defaultContainerName
textColor: "#0E0E11" textColor: "#0E0E11"
headerText: qsTr("VPN protocol") headerText: qsTr("VPN protocol")
headerBackButtonImage: "qrc:/images/controls/arrow-left.svg" headerBackButtonImage: "qrc:/images/controls/arrow-left.svg"
rootButtonClickedFunction: function() { rootButtonClickedFunction: function() {
ServersModel.currentlyProcessedIndex = serversMenuContent.currentIndex
containersDropDown.menuVisible = true containersDropDown.menuVisible = true
} }
@@ -328,22 +329,22 @@ PageType {
Connections { Connections {
target: ServersModel target: ServersModel
function onDefaultServerIndexChanged() { function onCurrentlyProcessedServerIndexChanged() {
updateContainersModelFilters() updateContainersModelFilters()
} }
} }
function updateContainersModelFilters() { function updateContainersModelFilters() {
if (ServersModel.isDefaultServerHasWriteAccess()) { if (ServersModel.isCurrentlyProcessedServerHasWriteAccess()) {
proxyDefaultServerContainersModel.filters = ContainersModelFilters.getWriteAccessProtocolsListFilters() proxyContainersModel.filters = ContainersModelFilters.getWriteAccessProtocolsListFilters()
} else { } else {
proxyDefaultServerContainersModel.filters = ContainersModelFilters.getReadAccessProtocolsListFilters() proxyContainersModel.filters = ContainersModelFilters.getReadAccessProtocolsListFilters()
} }
} }
model: SortFilterProxyModel { model: SortFilterProxyModel {
id: proxyDefaultServerContainersModel id: proxyContainersModel
sourceModel: DefaultServerContainersModel sourceModel: ContainersModel
} }
Component.onCompleted: updateContainersModelFilters() Component.onCompleted: updateContainersModelFilters()
@@ -434,7 +435,21 @@ PageType {
Layout.fillWidth: true Layout.fillWidth: true
text: name text: name
descriptionText: serverDescription descriptionText: {
var fullDescription = ""
if (hasWriteAccess) {
if (SettingsController.isAmneziaDnsEnabled()
&& ServersModel.isAmneziaDnsContainerInstalled(index)) {
fullDescription += "Amnezia DNS | "
}
} else {
if (containsAmneziaDns) {
fullDescription += "Amnezia DNS | "
}
}
return fullDescription += serverDescription
}
checked: index === serversMenuContent.currentIndex checked: index === serversMenuContent.currentIndex
checkable: !ConnectionController.isConnected checkable: !ConnectionController.isConnected
@@ -448,6 +463,8 @@ PageType {
} }
serversMenuContent.currentIndex = index serversMenuContent.currentIndex = index
ServersModel.currentlyProcessedIndex = index
ServersModel.defaultIndex = index ServersModel.defaultIndex = index
} }
@@ -468,7 +485,7 @@ PageType {
z: 1 z: 1
onClicked: function() { onClicked: function() {
ServersModel.processedIndex = index ServersModel.currentlyProcessedIndex = index
PageController.goToPage(PageEnum.PageSettingsServerInfo) PageController.goToPage(PageEnum.PageSettingsServerInfo)
buttonContent.state = "collapsed" buttonContent.state = "collapsed"
} }
@@ -41,7 +41,7 @@ PageType {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
enabled: ServersModel.isProcessedServerHasWriteAccess() enabled: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
ListView { ListView {
id: listview id: listview
@@ -41,7 +41,7 @@ PageType {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
enabled: ServersModel.isProcessedServerHasWriteAccess() enabled: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
ListView { ListView {
id: listview id: listview
@@ -42,7 +42,7 @@ PageType {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
enabled: ServersModel.isProcessedServerHasWriteAccess() enabled: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
ListView { ListView {
id: listview id: listview
+1 -1
View File
@@ -169,7 +169,7 @@ PageType {
width: parent.width width: parent.width
visible: ServersModel.isProcessedServerHasWriteAccess() visible: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName() text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName()
textColor: "#EB5757" textColor: "#EB5757"
@@ -41,7 +41,7 @@ PageType {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
enabled: ServersModel.isProcessedServerHasWriteAccess() enabled: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
ListView { ListView {
id: listview id: listview
@@ -49,7 +49,7 @@ PageType {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
enabled: ServersModel.isProcessedServerHasWriteAccess() enabled: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
ListView { ListView {
id: listview id: listview
@@ -88,7 +88,7 @@ PageType {
Layout.topMargin: 32 Layout.topMargin: 32
text: qsTr("Host") text: qsTr("Host")
descriptionText: ServersModel.getProcessedServerData("HostName") descriptionText: ServersModel.getCurrentlyProcessedServerHostName()
descriptionOnTop: true descriptionOnTop: true
+2 -4
View File
@@ -28,12 +28,10 @@ PageType {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
contentHeight: content.height contentHeight: content.height
property var isServerFromApi: ServersModel.getDefaultServerData("isServerFromApi") enabled: !ServersModel.isDefaultServerFromApi()
enabled: !isServerFromApi
Component.onCompleted: { Component.onCompleted: {
if (isServerFromApi) { if (ServersModel.isDefaultServerFromApi()) {
PageController.showNotificationMessage(qsTr("Default server does not support custom dns")) PageController.showNotificationMessage(qsTr("Default server does not support custom dns"))
} }
} }
@@ -28,7 +28,7 @@ PageType {
PageController.showErrorMessage(message) PageController.showErrorMessage(message)
} }
function onRemoveProcessedServerFinished(finishedMessage) { function onRemoveCurrentlyProcessedServerFinished(finishedMessage) {
if (!ServersModel.getServersCount()) { if (!ServersModel.getServersCount()) {
PageController.replaceStartPage() PageController.replaceStartPage()
} else { } else {
@@ -38,7 +38,7 @@ PageType {
PageController.showNotificationMessage(finishedMessage) PageController.showNotificationMessage(finishedMessage)
} }
function onRebootProcessedServerFinished(finishedMessage) { function onRebootCurrentlyProcessedServerFinished(finishedMessage) {
PageController.showNotificationMessage(finishedMessage) PageController.showNotificationMessage(finishedMessage)
} }
@@ -64,8 +64,8 @@ PageType {
Connections { Connections {
target: ServersModel target: ServersModel
function onProcessedServerIndexChanged() { function onCurrentlyProcessedServerIndexChanged() {
content.isServerWithWriteAccess = ServersModel.isProcessedServerHasWriteAccess() content.isServerWithWriteAccess = ServersModel.isCurrentlyProcessedServerHasWriteAccess()
} }
} }
@@ -82,7 +82,7 @@ PageType {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
property bool isServerWithWriteAccess: ServersModel.isProcessedServerHasWriteAccess() property bool isServerWithWriteAccess: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
LabelWithButtonType { LabelWithButtonType {
visible: content.isServerWithWriteAccess visible: content.isServerWithWriteAccess
@@ -151,7 +151,7 @@ PageType {
if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) {
ConnectionController.closeConnection() ConnectionController.closeConnection()
} }
InstallController.rebootProcessedServer() InstallController.rebootCurrentlyProcessedServer()
PageController.showBusyIndicator(false) PageController.showBusyIndicator(false)
} }
questionDrawer.noButtonFunction = function() { questionDrawer.noButtonFunction = function() {
@@ -183,7 +183,7 @@ PageType {
if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) {
ConnectionController.closeConnection() ConnectionController.closeConnection()
} }
InstallController.removeProcessedServer() InstallController.removeCurrentlyProcessedServer()
PageController.showBusyIndicator(false) PageController.showBusyIndicator(false)
} }
questionDrawer.noButtonFunction = function() { questionDrawer.noButtonFunction = function() {
@@ -254,7 +254,7 @@ PageType {
} }
DividerType { DividerType {
visible: ServersModel.getProcessedServerData("isServerFromApi") visible: ServersModel.isCurrentlyProcessedServerFromApi()
} }
QuestionDrawer { QuestionDrawer {
@@ -63,7 +63,7 @@ PageType {
headerText: name headerText: name
descriptionText: { descriptionText: {
if (ServersModel.isProcessedServerHasWriteAccess()) { if (ServersModel.isCurrentlyProcessedServerHasWriteAccess()) {
return credentialsLogin + " · " + hostName return credentialsLogin + " · " + hostName
} else { } else {
return hostName return hostName
@@ -107,7 +107,7 @@ PageType {
width: parent.width width: parent.width
visible: ServersModel.isProcessedServerHasWriteAccess() visible: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName() text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName()
textColor: "#EB5757" textColor: "#EB5757"
@@ -38,13 +38,13 @@ PageType {
Connections { Connections {
target: ServersModel target: ServersModel
function onProcessedServerIndexChanged() { function onCurrentlyProcessedServerIndexChanged() {
settingsContainersListView.updateContainersModelFilters() settingsContainersListView.updateContainersModelFilters()
} }
} }
function updateContainersModelFilters() { function updateContainersModelFilters() {
if (ServersModel.isProcessedServerHasWriteAccess()) { if (ServersModel.isCurrentlyProcessedServerHasWriteAccess()) {
proxyContainersModel.filters = ContainersModelFilters.getWriteAccessProtocolsListFilters() proxyContainersModel.filters = ContainersModelFilters.getWriteAccessProtocolsListFilters()
} else { } else {
proxyContainersModel.filters = ContainersModelFilters.getReadAccessProtocolsListFilters() proxyContainersModel.filters = ContainersModelFilters.getReadAccessProtocolsListFilters()
@@ -38,13 +38,13 @@ PageType {
Connections { Connections {
target: ServersModel target: ServersModel
function onProcessedServerIndexChanged() { function onCurrentlyProcessedServerIndexChanged() {
settingsContainersListView.updateContainersModelFilters() settingsContainersListView.updateContainersModelFilters()
} }
} }
function updateContainersModelFilters() { function updateContainersModelFilters() {
if (ServersModel.isProcessedServerHasWriteAccess()) { if (ServersModel.isCurrentlyProcessedServerHasWriteAccess()) {
proxyContainersModel.filters = ContainersModelFilters.getWriteAccessServicesListFilters() proxyContainersModel.filters = ContainersModelFilters.getWriteAccessServicesListFilters()
} else { } else {
proxyContainersModel.filters = ContainersModelFilters.getReadAccessServicesListFilters() proxyContainersModel.filters = ContainersModelFilters.getReadAccessServicesListFilters()
@@ -87,7 +87,7 @@ PageType {
rightImageSource: "qrc:/images/controls/chevron-right.svg" rightImageSource: "qrc:/images/controls/chevron-right.svg"
clickedFunction: function() { clickedFunction: function() {
ServersModel.processedIndex = index ServersModel.currentlyProcessedIndex = index
PageController.goToPage(PageEnum.PageSettingsServerInfo) PageController.goToPage(PageEnum.PageSettingsServerInfo)
} }
} }
@@ -20,13 +20,12 @@ import "../Components"
PageType { PageType {
id: root id: root
property var isServerFromApi: ServersModel.getDefaultServerData("isServerFromApi")
property bool pageEnabled: { property bool pageEnabled: {
return !ConnectionController.isConnected && !isServerFromApi return !ConnectionController.isConnected && !ServersModel.isDefaultServerFromApi()
} }
Component.onCompleted: { Component.onCompleted: {
if (isServerFromApi) { if (ServersModel.isDefaultServerFromApi()) {
PageController.showNotificationMessage(qsTr("Default server does not support split tunneling function")) PageController.showNotificationMessage(qsTr("Default server does not support split tunneling function"))
} }
} }
@@ -26,7 +26,7 @@ PageType {
function onInstallContainerFinished(finishedMessage, isServiceInstall) { function onInstallContainerFinished(finishedMessage, isServiceInstall) {
if (!ConnectionController.isConnected && !isServiceInstall) { if (!ConnectionController.isConnected && !isServiceInstall) {
ServersModel.setDefaultContainer(ServersModel.processedIndex, ContainersModel.getCurrentlyProcessedContainerIndex()) ServersModel.setDefaultContainer(ServersModel.currentlyProcessedIndex, ContainersModel.getCurrentlyProcessedContainerIndex())
} }
PageController.closePage() // close installing page PageController.closePage() // close installing page
@@ -42,7 +42,7 @@ PageType {
function onInstallServerFinished(finishedMessage) { function onInstallServerFinished(finishedMessage) {
if (!ConnectionController.isConnected) { if (!ConnectionController.isConnected) {
ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1); ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1);
ServersModel.processedIndex = ServersModel.defaultIndex ServersModel.currentlyProcessedIndex = ServersModel.defaultIndex
} }
PageController.goToStartPage() PageController.goToStartPage()
@@ -55,7 +55,7 @@ PageType {
function onServerAlreadyExists(serverIndex) { function onServerAlreadyExists(serverIndex) {
PageController.goToStartPage() PageController.goToStartPage()
ServersModel.processedIndex = serverIndex ServersModel.currentlyProcessedIndex = serverIndex
PageController.goToPage(PageEnum.PageSettingsServerInfo, false) PageController.goToPage(PageEnum.PageSettingsServerInfo, false)
PageController.showErrorMessage(qsTr("The server has already been added to the application")) PageController.showErrorMessage(qsTr("The server has already been added to the application"))
@@ -30,7 +30,7 @@ PageType {
function onImportFinished() { function onImportFinished() {
if (!ConnectionController.isConnected) { if (!ConnectionController.isConnected) {
ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1); ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1);
ServersModel.processedIndex = ServersModel.defaultIndex ServersModel.currentlyProcessedIndex = ServersModel.defaultIndex
} }
PageController.goToStartPage() PageController.goToStartPage()
+6 -6
View File
@@ -29,7 +29,7 @@ PageType {
PageController.showBusyIndicator(true) PageController.showBusyIndicator(true)
ExportController.revokeConfig(index, ExportController.revokeConfig(index,
ContainersModel.getCurrentlyProcessedContainerIndex(), ContainersModel.getCurrentlyProcessedContainerIndex(),
ServersModel.getProcessedServerCredentials()) ServersModel.getCurrentlyProcessedServerCredentials())
PageController.showBusyIndicator(false) PageController.showBusyIndicator(false)
PageController.showNotificationMessage(qsTr("Config revoked")) PageController.showNotificationMessage(qsTr("Config revoked"))
} }
@@ -234,7 +234,7 @@ PageType {
accessTypeSelector.currentIndex = 1 accessTypeSelector.currentIndex = 1
PageController.showBusyIndicator(true) PageController.showBusyIndicator(true)
ExportController.updateClientManagementModel(ContainersModel.getCurrentlyProcessedContainerIndex(), ExportController.updateClientManagementModel(ContainersModel.getCurrentlyProcessedContainerIndex(),
ServersModel.getProcessedServerCredentials()) ServersModel.getCurrentlyProcessedServerCredentials())
PageController.showBusyIndicator(false) PageController.showBusyIndicator(false)
} }
} }
@@ -316,7 +316,7 @@ PageType {
function handler() { function handler() {
serverSelector.text = selectedText serverSelector.text = selectedText
ServersModel.processedIndex = proxyServersModel.mapToSource(currentIndex) ServersModel.currentlyProcessedIndex = proxyServersModel.mapToSource(currentIndex)
} }
} }
} }
@@ -365,7 +365,7 @@ PageType {
target: serverSelector target: serverSelector
function onSeverSelectorIndexChanged() { function onSeverSelectorIndexChanged() {
var defaultContainer = proxyContainersModel.mapFromSource(ServersModel.getProcessedServerData("defaultContainer")) var defaultContainer = proxyContainersModel.mapFromSource(ServersModel.getDefaultContainer(ServersModel.currentlyProcessedIndex))
protocolSelectorListView.currentIndex = defaultContainer protocolSelectorListView.currentIndex = defaultContainer
protocolSelectorListView.triggerCurrentItem() protocolSelectorListView.triggerCurrentItem()
} }
@@ -388,7 +388,7 @@ PageType {
if (accessTypeSelector.currentIndex === 1) { if (accessTypeSelector.currentIndex === 1) {
PageController.showBusyIndicator(true) PageController.showBusyIndicator(true)
ExportController.updateClientManagementModel(ContainersModel.getCurrentlyProcessedContainerIndex(), ExportController.updateClientManagementModel(ContainersModel.getCurrentlyProcessedContainerIndex(),
ServersModel.getProcessedServerCredentials()) ServersModel.getCurrentlyProcessedServerCredentials())
PageController.showBusyIndicator(false) PageController.showBusyIndicator(false)
} }
} }
@@ -646,7 +646,7 @@ PageType {
ExportController.renameClient(index, ExportController.renameClient(index,
clientNameEditor.textFieldText, clientNameEditor.textFieldText,
ContainersModel.getCurrentlyProcessedContainerIndex(), ContainersModel.getCurrentlyProcessedContainerIndex(),
ServersModel.getProcessedServerCredentials()) ServersModel.getCurrentlyProcessedServerCredentials())
PageController.showBusyIndicator(false) PageController.showBusyIndicator(false)
clientNameEditDrawer.close() clientNameEditDrawer.close()
} }
+1 -1
View File
@@ -110,7 +110,7 @@ PageType {
function handler() { function handler() {
serverSelector.text = selectedText serverSelector.text = selectedText
ServersModel.processedIndex = proxyServersModel.mapToSource(currentIndex) ServersModel.currentlyProcessedIndex = proxyServersModel.mapToSource(currentIndex)
} }
} }
} }
+3 -3
View File
@@ -115,7 +115,7 @@ PageType {
function onNoInstalledContainers() { function onNoInstalledContainers() {
PageController.setTriggeredBtConnectButton(true) PageController.setTriggeredBtConnectButton(true)
ServersModel.processedIndex = ServersModel.getDefaultServerIndex() ServersModel.currentlyProcessedIndex = ServersModel.getDefaultServerIndex()
InstallController.setShouldCreateServer(false) InstallController.setShouldCreateServer(false)
PageController.goToPage(PageEnum.PageSetupWizardEasy) PageController.goToPage(PageEnum.PageSetupWizardEasy)
} }
@@ -152,7 +152,7 @@ PageType {
Component.onCompleted: { Component.onCompleted: {
var pagePath = PageController.getPagePath(PageEnum.PageHome) var pagePath = PageController.getPagePath(PageEnum.PageHome)
ServersModel.processedIndex = ServersModel.defaultIndex ServersModel.currentlyProcessedIndex = ServersModel.defaultIndex
tabBarStackView.push(pagePath, { "objectName" : pagePath }) tabBarStackView.push(pagePath, { "objectName" : pagePath })
} }
@@ -200,7 +200,7 @@ PageType {
image: "qrc:/images/controls/home.svg" image: "qrc:/images/controls/home.svg"
onClicked: { onClicked: {
tabBarStackView.goToTabBarPage(PageEnum.PageHome) tabBarStackView.goToTabBarPage(PageEnum.PageHome)
ServersModel.processedIndex = ServersModel.defaultIndex ServersModel.currentlyProcessedIndex = ServersModel.defaultIndex
tabBar.previousIndex = 0 tabBar.previousIndex = 0
} }
} }