added support for the updated api

This commit is contained in:
vladimir.kuznetsov 2023-12-05 17:28:14 +07:00
parent aee82282ac
commit 3605f62feb
3 changed files with 35 additions and 46 deletions

View file

@ -80,11 +80,6 @@ namespace amnezia
constexpr char awg[] = "awg"; constexpr char awg[] = "awg";
constexpr char configVersion[] = "config_version"; constexpr char configVersion[] = "config_version";
constexpr char apiEdnpoint[] = "api_endpoint";
constexpr char serviceTypeId[] = "service_type_id";
constexpr char accessToken[] = "access_token";
constexpr char certificate[] = "certificate";
constexpr char publicKey[] = "public_key";
constexpr char splitTunnelSites[] = "splitTunnelSites"; constexpr char splitTunnelSites[] = "splitTunnelSites";
constexpr char splitTunnelType[] = "splitTunnelType"; constexpr char splitTunnelType[] = "splitTunnelType";

View file

@ -6,56 +6,49 @@
#include "configurators/openvpn_configurator.h" #include "configurators/openvpn_configurator.h"
namespace {
namespace configKey {
constexpr char cloak[] = "cloak";
constexpr char apiEdnpoint[] = "api_endpoint";
constexpr char accessToken[] = "api_key";
constexpr char certificate[] = "certificate";
constexpr char publicKey[] = "public_key";
constexpr char protocol[] = "protocol";
}
}
CloudController::CloudController(const QSharedPointer<ServersModel> &serversModel, CloudController::CloudController(const QSharedPointer<ServersModel> &serversModel,
const QSharedPointer<ContainersModel> &containersModel, QObject *parent) const QSharedPointer<ContainersModel> &containersModel, QObject *parent)
: QObject(parent), m_serversModel(serversModel), m_containersModel(containersModel) : QObject(parent), m_serversModel(serversModel), m_containersModel(containersModel)
{ {
} }
QString CloudController::genPublicKey(ServiceTypeId serviceTypeId) QString CloudController::genPublicKey(const QString &protocol)
{ {
switch (serviceTypeId) if (protocol == configKey::cloak) {
{ return ".";
case ServiceTypeId::AmneziaFreeRuWG: return ".";
case ServiceTypeId::AmneziaFreeRuCloak: return ".";
case ServiceTypeId::AmneziaFreeRuAWG: return ".";
case ServiceTypeId::AmneziaFreeRuReverseWG: return ".";
case ServiceTypeId::AmneziaFreeRuReverseCloak: return ".";
case ServiceTypeId::AmneziaFreeRuReverseAWG: return ".";
} }
return QString();
} }
QString CloudController::genCertificateRequest(ServiceTypeId serviceTypeId) QString CloudController::genCertificateRequest(const QString &protocol)
{ {
switch (serviceTypeId) if (protocol == configKey::cloak) {
{ m_certRequest = OpenVpnConfigurator::createCertRequest();
case ServiceTypeId::AmneziaFreeRuWG: return ""; return m_certRequest.request;
case ServiceTypeId::AmneziaFreeRuCloak: {
m_certRequest = OpenVpnConfigurator::createCertRequest();
return m_certRequest.request;
}
case ServiceTypeId::AmneziaFreeRuAWG: return "";
case ServiceTypeId::AmneziaFreeRuReverseWG: return "";
case ServiceTypeId::AmneziaFreeRuReverseCloak: return "";
case ServiceTypeId::AmneziaFreeRuReverseAWG: return "";
} }
return QString();
} }
void CloudController::processCloudConfig(ServiceTypeId serviceTypeId, QString &config) void CloudController::processCloudConfig(const QString &protocol, QString &config)
{ {
switch (serviceTypeId) if (protocol == configKey::cloak) {
{
case ServiceTypeId::AmneziaFreeRuWG: return;
case ServiceTypeId::AmneziaFreeRuCloak: {
config.replace("<key>", "<key>\n"); config.replace("<key>", "<key>\n");
config.replace("$OPENVPN_PRIV_KEY", m_certRequest.privKey); config.replace("$OPENVPN_PRIV_KEY", m_certRequest.privKey);
return; return;
} }
case ServiceTypeId::AmneziaFreeRuAWG: return; return;
case ServiceTypeId::AmneziaFreeRuReverseWG: return;
case ServiceTypeId::AmneziaFreeRuReverseCloak: return;
case ServiceTypeId::AmneziaFreeRuReverseAWG: return;
}
} }
bool CloudController::updateServerConfigFromCloud() bool CloudController::updateServerConfigFromCloud()
@ -69,19 +62,19 @@ bool CloudController::updateServerConfigFromCloud()
QNetworkRequest request; QNetworkRequest request;
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QString endpoint = serverConfig.value(config_key::apiEdnpoint).toString(); request.setRawHeader("Authorization", "Api-Key " + serverConfig.value(configKey::accessToken).toString().toUtf8());
QString endpoint = serverConfig.value(configKey::apiEdnpoint).toString();
request.setUrl(endpoint.replace("https", "http")); // todo remove request.setUrl(endpoint.replace("https", "http")); // todo remove
ServiceTypeId serviceTypeId = static_cast<ServiceTypeId>(serverConfig.value(config_key::serviceTypeId).toInt()); QString protocol = serverConfig.value(configKey::protocol).toString();
QJsonObject obj; QJsonObject obj;
obj[config_key::serviceTypeId] = serviceTypeId;
obj[config_key::accessToken] = serverConfig.value(config_key::accessToken);
obj[config_key::publicKey] = genPublicKey(serviceTypeId); obj[configKey::publicKey] = genPublicKey(protocol);
obj[config_key::certificate] = genCertificateRequest(serviceTypeId); obj[configKey::certificate] = genCertificateRequest(protocol);
QByteArray requestBody = QJsonDocument(obj).toJson(); QByteArray requestBody = QJsonDocument(obj).toJson();
qDebug() << requestBody;
QScopedPointer<QNetworkReply> reply; QScopedPointer<QNetworkReply> reply;
reply.reset(manager.post(request, requestBody)); reply.reset(manager.post(request, requestBody));
@ -103,7 +96,7 @@ bool CloudController::updateServerConfigFromCloud()
} }
QString configStr = ba; QString configStr = ba;
processCloudConfig(serviceTypeId, configStr); processCloudConfig(protocol, configStr);
QJsonObject cloudConfig = QJsonDocument::fromJson(configStr.toUtf8()).object(); QJsonObject cloudConfig = QJsonDocument::fromJson(configStr.toUtf8()).object();
@ -117,6 +110,7 @@ bool CloudController::updateServerConfigFromCloud()
emit serverConfigUpdated(); emit serverConfigUpdated();
} else{ } else{
QString err = reply->errorString(); QString err = reply->errorString();
qDebug() << QString::fromUtf8(reply->readAll());;
qDebug() << reply->error(); qDebug() << reply->error();
qDebug() << err; qDebug() << err;
qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);

View file

@ -34,10 +34,10 @@ signals:
void serverConfigUpdated(); void serverConfigUpdated();
private: private:
QString genPublicKey(ServiceTypeId serviceTypeId); QString genPublicKey(const QString &protocol);
QString genCertificateRequest(ServiceTypeId serviceTypeId); QString genCertificateRequest(const QString &protocol);
void processCloudConfig(ServiceTypeId serviceTypeId, QString &config); void processCloudConfig(const QString &protocol, QString &config);
QSharedPointer<ServersModel> m_serversModel; QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<ContainersModel> m_containersModel; QSharedPointer<ContainersModel> m_containersModel;