diff --git a/client/protocols/protocols_defs.cpp b/client/protocols/protocols_defs.cpp
index b6485ec1..fd1223e5 100644
--- a/client/protocols/protocols_defs.cpp
+++ b/client/protocols/protocols_defs.cpp
@@ -48,7 +48,7 @@ QString amnezia::containerToString(amnezia::DockerContainer container){
case(DockerContainer::OpenVpnOverCloak): return config_key::amnezia_openvpn_cloak;
case(DockerContainer::OpenVpnOverShadowSocks): return config_key::amnezia_shadowsocks;
case(DockerContainer::WireGuard): return config_key::amnezia_wireguard;
- default: return "";
+ default: return "none";
}
}
diff --git a/client/settings.cpp b/client/settings.cpp
index dc53aeff..3c5991d1 100644
--- a/client/settings.cpp
+++ b/client/settings.cpp
@@ -91,7 +91,7 @@ QString Settings::defaultContainerName(int serverIndex) const
{
QString name = server(serverIndex).value(config_key::defaultContainer).toString();
if (name.isEmpty()) {
- return containerToString(DockerContainer::OpenVpnOverCloak);
+ return containerToString(DockerContainer::None);
}
else return name;
}
diff --git a/client/ui/mainwindow.cpp b/client/ui/mainwindow.cpp
index 00dec630..83bdfaf3 100644
--- a/client/ui/mainwindow.cpp
+++ b/client/ui/mainwindow.cpp
@@ -96,8 +96,6 @@ MainWindow::MainWindow(QWidget *parent) :
ui->pushButton_sites_add_custom->click();
});
- updateSettings();
-
//ui->pushButton_general_settings_exit->hide();
setFixedSize(width(),height());
@@ -175,15 +173,7 @@ void MainWindow::goToPage(Page page, bool reset, bool slide)
updateServersListPage();
}
if (page == Page::Start) {
- ui->label_new_server_wait_info->hide();
- ui->label_new_server_wait_info->clear();
-
- ui->progressBar_new_server_connection->setMinimum(0);
- ui->progressBar_new_server_connection->setMaximum(300);
-
- ui->pushButton_back_from_start->setVisible(!pagesStack.isEmpty());
-
- ui->pushButton_new_server_connect->setVisible(true);
+ updateStartPage();
}
if (page == Page::NewServer_2) {
ui->pushButton_new_server_settings_cloak->setChecked(true);
@@ -235,10 +225,14 @@ void MainWindow::setStartPage(MainWindow::Page page, bool slide)
pagesStack.clear();
pagesStack.push(page);
+
+ if (page == Page::Start) updateStartPage();
}
void MainWindow::closePage()
{
+ if (pagesStack.size() <= 1) return;
+
Page prev = pagesStack.pop();
//qDebug() << "closePage" << prev << "Set page" << pagesStack.top();
ui->stackedWidget_main->slideInWidget(getPageWidget(pagesStack.top()), SlidingStackedWidget::LEFT2RIGHT);
@@ -310,6 +304,7 @@ void MainWindow::keyPressEvent(QKeyEvent *event)
qApp->quit();
break;
case Qt::Key_C:
+ qDebug().noquote() << "Def server" << m_settings.defaultServerIndex() << m_settings.defaultContainerName(m_settings.defaultServerIndex());
qDebug().noquote() << QJsonDocument(m_settings.containerConfig(m_settings.defaultServerIndex(), m_settings.defaultContainer(m_settings.defaultServerIndex()))).toJson();
//qDebug().noquote() << QJsonDocument(m_settings.serversArray()).toJson();
break;
@@ -484,6 +479,8 @@ void MainWindow::onPushButtonNewServerConnectConfigure(bool)
containers.append(DockerContainer::OpenVpnOverShadowSocks);
}
+ if (containers.isEmpty()) return;
+
// bool ok = true;
bool ok = installServer(installCredentials, containers, containerConfigs,
ui->page_new_server_2,
@@ -500,14 +497,12 @@ void MainWindow::onPushButtonNewServerConnectConfigure(bool)
server.insert(config_key::description, m_settings.nextAvailableServerName());
server.insert(config_key::containers, containerConfigs);
+ server.insert(config_key::defaultContainer, containerToString(containers.first()));
m_settings.addServer(server);
- updateSettings();
goToPage(Page::Vpn);
qApp->processEvents();
-
- //onConnect();
}
}
@@ -704,6 +699,9 @@ void MainWindow::onPushButtonClearServer(bool)
ui->label_server_settings_wait_info->setText(tr("Amnezia server successfully uninstalled"));
}
+ m_settings.setContainers(selectedServerIndex, {});
+ m_settings.setDefaultContainer(selectedServerIndex, DockerContainer::None);
+
ui->page_server_settings->setEnabled(true);
ui->pushButton_server_settings_clear->setText(tr("Clear server from Amnezia software"));
}
@@ -723,12 +721,15 @@ void MainWindow::onPushButtonForgetServer(bool)
}
selectedServerIndex = -1;
- closePage();
+
+ updateServersListPage();
if (m_settings.serversCount() == 0) {
setStartPage(Page::Start);
}
- updateServersListPage();
+ else {
+ closePage();
+ }
}
void MainWindow::onBytesChanged(quint64 receivedData, quint64 sentData)
@@ -935,11 +936,11 @@ void MainWindow::setupUiConnections()
connect(ui->pushButton_network_settings_resetdns1, &QPushButton::clicked, this, [this](){
m_settings.setPrimaryDns(m_settings.cloudFlareNs1);
- updateSettings();
+ updateAppSettingsPage();
});
connect(ui->pushButton_network_settings_resetdns2, &QPushButton::clicked, this, [this](){
m_settings.setSecondaryDns(m_settings.cloudFlareNs2);
- updateSettings();
+ updateAppSettingsPage();
});
connect(ui->lineEdit_network_settings_dns1, &QLineEdit::textEdited, this, [this](const QString &newText){
@@ -1021,6 +1022,7 @@ void MainWindow::setupProtocolsPageConnections()
if (!e) {
m_settings.setContainerConfig(selectedServerIndex, container, QJsonObject());
+ m_settings.setDefaultContainer(selectedServerIndex, container);
}
}
else {
@@ -1028,6 +1030,12 @@ void MainWindow::setupProtocolsPageConnections()
ErrorCode e = ServerController::removeContainer(m_settings.serverCredentials(selectedServerIndex), container);
m_settings.removeContainerConfig(selectedServerIndex, container);
button->setEnabled(true);
+
+ if (m_settings.defaultContainer(selectedServerIndex) == container) {
+ const auto &c = m_settings.containers(selectedServerIndex);
+ if (c.isEmpty()) m_settings.setDefaultContainer(selectedServerIndex, DockerContainer::None);
+ else m_settings.setDefaultContainer(selectedServerIndex, c.keys().first());
+ }
}
updateProtocolsPage();
@@ -1291,10 +1299,10 @@ void MainWindow::setupSharePageConnections()
QJsonObject containerConfig; // = m_settings.containerConfig(selectedServerIndex, selectedDockerContainer);
containerConfig.insert(config_key::container, containerToString(selectedDockerContainer));
+ ErrorCode e = ErrorCode::NoError;
for (Protocol p: amnezia::protocolsForContainer(selectedDockerContainer)) {
QJsonObject protoConfig = m_settings.protocolConfig(selectedServerIndex, selectedDockerContainer, p);
- ErrorCode e = ErrorCode::NoError;
QString cfg = VpnConfigurator::genVpnProtocolConfig(credentials, selectedDockerContainer, containerConfig, p, &e);
if (e) {
cfg = "Error generating config";
@@ -1305,16 +1313,22 @@ void MainWindow::setupSharePageConnections()
containerConfig.insert(protoToString(p), protoConfig);
}
- QJsonObject serverConfig = m_settings.server(selectedServerIndex);
- serverConfig.remove(config_key::userName);
- serverConfig.remove(config_key::password);
- serverConfig.remove(config_key::port);
- serverConfig.insert(config_key::containers, QJsonArray {containerConfig});
- serverConfig.insert(config_key::defaultContainer, containerToString(selectedDockerContainer));
+ QByteArray ba;
+ if (!e) {
+ QJsonObject serverConfig = m_settings.server(selectedServerIndex);
+ serverConfig.remove(config_key::userName);
+ serverConfig.remove(config_key::password);
+ serverConfig.remove(config_key::port);
+ serverConfig.insert(config_key::containers, QJsonArray {containerConfig});
+ serverConfig.insert(config_key::defaultContainer, containerToString(selectedDockerContainer));
- QByteArray ba = QJsonDocument(serverConfig).toJson().toBase64(QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals);
- ui->textEdit_share_amnezia_code->setPlainText(QString("vpn://%1").arg(QString(ba)));
+ ba = QJsonDocument(serverConfig).toJson().toBase64(QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals);
+ ui->textEdit_share_amnezia_code->setPlainText(QString("vpn://%1").arg(QString(ba)));
+ }
+ else {
+ ui->textEdit_share_amnezia_code->setPlainText(tr("Error while generating connection profile"));
+ }
ui->pushButton_share_amnezia_generate->setEnabled(true);
ui->pushButton_share_amnezia_copy->setEnabled(true);
@@ -1401,10 +1415,23 @@ void MainWindow::onTrayActivated(QSystemTrayIcon::ActivationReason reason)
void MainWindow::onConnect()
{
-
int serverIndex = m_settings.defaultServerIndex();
ServerCredentials credentials = m_settings.serverCredentials(serverIndex);
DockerContainer container = m_settings.defaultContainer(serverIndex);
+
+ if (m_settings.containers(serverIndex).isEmpty()) {
+ ui->label_error_text->setText(tr("VPN Protocols is not installed.\n Please install VPN container at first"));
+ ui->pushButton_connect->setChecked(false);
+ return;
+ }
+
+ if (container == DockerContainer::None) {
+ ui->label_error_text->setText(tr("VPN Protocol not choosen"));
+ ui->pushButton_connect->setChecked(false);
+ return;
+ }
+
+
const QJsonObject &containerConfig = m_settings.containerConfig(serverIndex, container);
onConnectWorker(serverIndex, credentials, container, containerConfig);
@@ -1473,8 +1500,7 @@ void MainWindow::onPushButtonAddCustomSitesClicked()
}
}
- updateSettings();
-
+ updateSitesPage();
ui->lineEdit_sites_add_custom->clear();
}
else {
@@ -1500,7 +1526,7 @@ void MainWindow::onPushButtonDeleteCustomSiteClicked(const QString &siteToDelete
qDebug() << "Deleted custom ip:" << ipToDelete;
m_settings.setCustomIps(customIps);
- updateSettings();
+ updateSitesPage();
if (m_vpnConnection->connectionState() == VpnProtocol::ConnectionState::Connected) {
IpcClient::Interface()->routeDelete(ipToDelete, "");
@@ -1508,9 +1534,24 @@ void MainWindow::onPushButtonDeleteCustomSiteClicked(const QString &siteToDelete
}
}
-void MainWindow::updateSettings()
+void MainWindow::updateStartPage()
{
+ ui->lineEdit_start_existing_code->clear();
+ ui->textEdit_new_server_ssh_key->clear();
+ ui->lineEdit_new_server_ip->clear();
+ ui->lineEdit_new_server_password->clear();
+ ui->textEdit_new_server_ssh_key->clear();
+ ui->lineEdit_new_server_login->setText("root");
+ ui->label_new_server_wait_info->hide();
+ ui->label_new_server_wait_info->clear();
+
+ ui->progressBar_new_server_connection->setMinimum(0);
+ ui->progressBar_new_server_connection->setMaximum(300);
+
+ ui->pushButton_back_from_start->setVisible(!pagesStack.isEmpty());
+
+ ui->pushButton_new_server_connect->setVisible(true);
}
void MainWindow::updateSitesPage()
@@ -1816,7 +1857,6 @@ void MainWindow::makeServersListItem(QListWidget *listWidget, const QJsonObject
connect(widget->ui->pushButton_default, &QPushButton::clicked, this, [this, index](){
m_settings.setDefaultServer(index);
- updateSettings();
updateServersListPage();
});
diff --git a/client/ui/mainwindow.h b/client/ui/mainwindow.h
index b253d084..f6437d13 100644
--- a/client/ui/mainwindow.h
+++ b/client/ui/mainwindow.h
@@ -93,8 +93,7 @@ private:
void setupServerSettingsPageConnections();
void setupSharePageConnections();
- void updateSettings();
-
+ void updateStartPage();
void updateSitesPage();
void updateVpnPage();
void updateAppSettingsPage();
diff --git a/client/ui/mainwindow.ui b/client/ui/mainwindow.ui
index bd0becfe..5c63b051 100644
--- a/client/ui/mainwindow.ui
+++ b/client/ui/mainwindow.ui
@@ -287,7 +287,7 @@ QPushButton:hover {
- 14
+ 3