added PageSettingsAbout, PageSettingsApplication, PageSettingsBackup, PageSettingsConnection, PageSettingsDns

- added SettingsController
This commit is contained in:
vladimir.kuznetsov 2023-06-16 13:43:55 +09:00
parent be7386f0d7
commit 7b14ad9616
28 changed files with 1054 additions and 63 deletions

View file

@ -11,6 +11,8 @@
#include "qrcodegen.hpp"
#include "core/errorstrings.h"
ExportController::ExportController(const QSharedPointer<ServersModel> &serversModel,
const QSharedPointer<ContainersModel> &containersModel,
const std::shared_ptr<Settings> &settings,
@ -35,6 +37,7 @@ void ExportController::generateFullAccessConfig()
| QByteArray::OmitTrailingEquals)));
m_qrCodes = generateQrCodeImageSeries(compressedConfig);
emit exportConfigChanged();
}
void ExportController::generateConnectionConfig()
@ -49,25 +52,25 @@ void ExportController::generateConnectionConfig()
m_containersModel->data(containerModelIndex, ContainersModel::Roles::ConfigRole));
containerConfig.insert(config_key::container, ContainerProps::containerToString(container));
ErrorCode e = ErrorCode::NoError;
for (Proto p : ContainerProps::protocolsForContainer(container)) {
QJsonObject protoConfig = m_settings->protocolConfig(serverIndex, container, p);
ErrorCode errorCode = ErrorCode::NoError;
for (Proto protocol : ContainerProps::protocolsForContainer(container)) {
QJsonObject protocolConfig = m_settings->protocolConfig(serverIndex, container, protocol);
QString cfg = m_configurator->genVpnProtocolConfig(credentials,
container,
containerConfig,
p,
&e);
if (e) {
cfg = "Error generating config";
break;
QString vpnConfig = m_configurator->genVpnProtocolConfig(credentials,
container,
containerConfig,
protocol,
&errorCode);
if (errorCode) {
emit exportErrorOccurred(errorString(errorCode));
return;
}
protoConfig.insert(config_key::last_config, cfg);
containerConfig.insert(ProtocolProps::protoToString(p), protoConfig);
protocolConfig.insert(config_key::last_config, vpnConfig);
containerConfig.insert(ProtocolProps::protoToString(protocol), protocolConfig);
}
QJsonObject config = m_settings->server(serverIndex);
if (!e) {
if (!errorCode) {
config.remove(config_key::userName);
config.remove(config_key::password);
config.remove(config_key::port);
@ -77,11 +80,8 @@ void ExportController::generateConnectionConfig()
auto dns = m_configurator->getDnsForConfig(serverIndex);
config.insert(config_key::dns1, dns.first);
config.insert(config_key::dns2, dns.second);
}
} /*else {
set_textEditShareAmneziaCodeText(tr("Error while generating connection profile"));
return;
}*/
QByteArray compressedConfig = QJsonDocument(config).toJson();
compressedConfig = qCompress(compressedConfig, 8);
m_amneziaCode = QString("vpn://%1")
@ -89,6 +89,7 @@ void ExportController::generateConnectionConfig()
| QByteArray::OmitTrailingEquals)));
m_qrCodes = generateQrCodeImageSeries(compressedConfig);
emit exportConfigChanged();
}
QString ExportController::getAmneziaCode()
@ -154,3 +155,8 @@ QString ExportController::svgToBase64(const QString &image)
{
return "data:image/svg;base64," + QString::fromLatin1(image.toUtf8().toBase64().data());
}
int ExportController::getQrCodesCount()
{
return m_qrCodes.size();
}

View file

@ -17,9 +17,14 @@ public:
const std::shared_ptr<VpnConfigurator> &configurator,
QObject *parent = nullptr);
Q_PROPERTY(QList<QString> qrCodes READ getQrCodes NOTIFY exportConfigChanged)
Q_PROPERTY(int qrCodesCount READ getQrCodesCount NOTIFY exportConfigChanged)
Q_PROPERTY(QString amneziaCode READ getAmneziaCode NOTIFY exportConfigChanged)
public slots:
void generateFullAccessConfig();
void generateConnectionConfig();
QString getAmneziaCode();
QList<QString> getQrCodes();
@ -27,11 +32,16 @@ public slots:
signals:
void generateConfig(bool isFullAccess);
void exportErrorOccurred(QString errorMessage);
void exportConfigChanged();
private:
QList<QString> generateQrCodeImageSeries(const QByteArray &data);
QString svgToBase64(const QString &image);
int getQrCodesCount();
QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<ContainersModel> m_containersModel;
std::shared_ptr<Settings> m_settings;

View file

@ -22,6 +22,11 @@ namespace PageLoader
PageSettingsServerProtocols,
PageSettingsServerServices,
PageSettingsServerProtocol,
PageSettingsConnection,
PageSettingsDns,
PageSettingsApplication,
PageSettingsBackup,
PageSettingsAbout,
PageSetupWizardStart,
PageSetupWizardCredentials,

View file

@ -0,0 +1,113 @@
#include "settingsController.h"
#include <QStandardPaths>
#include "defines.h"
#include "logger.h"
#include "utilities.h"
SettingsController::SettingsController(const QSharedPointer<ServersModel> &serversModel,
const QSharedPointer<ContainersModel> &containersModel,
const std::shared_ptr<Settings> &settings,
QObject *parent)
: QObject(parent)
, m_serversModel(serversModel)
, m_containersModel(containersModel)
, m_settings(settings)
{
m_appVersion = QString("%1: %2 (%3)")
.arg(tr("Software version"), QString(APP_MAJOR_VERSION), __DATE__);
}
void SettingsController::setAmneziaDns(bool enable)
{
m_settings->setUseAmneziaDns(enable);
}
bool SettingsController::isAmneziaDnsEnabled()
{
return m_settings->useAmneziaDns();
}
QString SettingsController::getPrimaryDns()
{
return m_settings->primaryDns();
}
void SettingsController::setPrimaryDns(const QString &dns)
{
m_settings->setPrimaryDns(dns);
emit primaryDnsChanged();
}
QString SettingsController::getSecondaryDns()
{
return m_settings->secondaryDns();
}
void SettingsController::setSecondaryDns(const QString &dns)
{
return m_settings->setSecondaryDns(dns);
emit secondaryDnsChanged();
}
bool SettingsController::isSaveLogsEnabled()
{
return m_settings->isSaveLogs();
}
void SettingsController::setSaveLogs(bool enable)
{
m_settings->setSaveLogs(enable);
}
void SettingsController::openLogsFolder()
{
Logger::openLogsFolder();
}
void SettingsController::exportLogsFile()
{
Utils::saveFile(".log", tr("Save log"), "AmneziaVPN", Logger::getLogFile());
}
void SettingsController::clearLogs()
{
Logger::clearLogs();
Logger::clearServiceLogs();
}
void SettingsController::backupAppConfig()
{
Utils::saveFile(".backup",
tr("Backup application config"),
"AmneziaVPN",
m_settings->backupAppConfig());
}
void SettingsController::restoreAppConfig()
{
QString fileName = Utils::getFileName(Q_NULLPTR,
tr("Open backup"),
QStandardPaths::writableLocation(
QStandardPaths::DocumentsLocation),
"*.backup");
//todo error processing
if (fileName.isEmpty())
return;
QFile file(fileName);
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
bool ok = m_settings->restoreAppConfig(data);
if (ok) {
// emit uiLogic()->showWarningMessage(tr("Can't import config, file is corrupted."));
}
}
QString SettingsController::getAppVersion()
{
return m_appVersion;
}

View file

@ -0,0 +1,56 @@
#ifndef SETTINGSCONTROLLER_H
#define SETTINGSCONTROLLER_H
#include <QObject>
#include "ui/models/containers_model.h"
#include "ui/models/servers_model.h"
class SettingsController : public QObject
{
Q_OBJECT
public:
explicit SettingsController(const QSharedPointer<ServersModel> &serversModel,
const QSharedPointer<ContainersModel> &containersModel,
const std::shared_ptr<Settings> &settings,
QObject *parent = nullptr);
Q_PROPERTY(QString primaryDns READ getPrimaryDns WRITE setPrimaryDns NOTIFY primaryDnsChanged)
Q_PROPERTY(
QString secondaryDns READ getSecondaryDns WRITE setSecondaryDns NOTIFY secondaryDnsChanged)
public slots:
void setAmneziaDns(bool enable);
bool isAmneziaDnsEnabled();
QString getPrimaryDns();
void setPrimaryDns(const QString &dns);
QString getSecondaryDns();
void setSecondaryDns(const QString &dns);
bool isSaveLogsEnabled();
void setSaveLogs(bool enable);
void openLogsFolder();
void exportLogsFile();
void clearLogs();
void backupAppConfig();
void restoreAppConfig();
QString getAppVersion();
signals:
void primaryDnsChanged();
void secondaryDnsChanged();
private:
QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<ContainersModel> m_containersModel;
std::shared_ptr<Settings> m_settings;
QString m_appVersion;
};
#endif // SETTINGSCONTROLLER_H