added implementation of V2RayConfigurator and V2RayProtocol classes
This commit is contained in:
parent
8032e55d7c
commit
7d51cb7d58
24 changed files with 369 additions and 20 deletions
|
|
@ -1,13 +1,70 @@
|
|||
#include "v2ray_configurator.h"
|
||||
|
||||
#include <QFile>
|
||||
#include <QPair>
|
||||
#include <QJsonArray>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonDocument>
|
||||
|
||||
#include "core/servercontroller.h"
|
||||
#include "containers/containers_defs.h"
|
||||
|
||||
V2RayConfigurator::V2RayConfigurator(std::shared_ptr<Settings> settings, std::shared_ptr<ServerController> serverController,
|
||||
QObject *parent) : ConfiguratorBase(settings, serverController, parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QString V2RayConfigurator::genCloakConfig(const ServerCredentials &credentials, DockerContainer container,
|
||||
QString V2RayConfigurator::genV2RayConfig(const ServerCredentials &credentials, DockerContainer container,
|
||||
const QJsonObject &containerConfig, ErrorCode *errorCode)
|
||||
{
|
||||
return "";
|
||||
ErrorCode e = ErrorCode::NoError;
|
||||
|
||||
QString v2rayVmessClientUuid = m_serverController->getTextFileFromContainer(container, credentials,
|
||||
amnezia::protocols::v2ray::v2rayKeyPath, &e);
|
||||
v2rayVmessClientUuid.replace("\n", "");
|
||||
|
||||
if (e) {
|
||||
if (errorCode) *errorCode = e;
|
||||
return "";
|
||||
}
|
||||
|
||||
QJsonObject config;
|
||||
|
||||
QJsonObject inboundsSocks;
|
||||
inboundsSocks.insert("protocol", "socks");
|
||||
inboundsSocks.insert("listen", "127.0.0.1");
|
||||
inboundsSocks.insert("port", 1080); //todo
|
||||
QJsonObject socksSettings;
|
||||
socksSettings.insert("auth", "noauth");
|
||||
socksSettings.insert("udp", true);
|
||||
inboundsSocks.insert("settings", socksSettings);
|
||||
|
||||
QJsonArray inbounds;
|
||||
inbounds.push_back(inboundsSocks);
|
||||
config.insert("inbounds", inbounds);
|
||||
|
||||
|
||||
QJsonObject outboundsVmess;
|
||||
outboundsVmess.insert("protocol", "vmess");
|
||||
QJsonObject vmessSettings;
|
||||
QJsonObject vnext;
|
||||
vnext.insert("address", credentials.hostName);
|
||||
vnext.insert("port", 10086); //todo
|
||||
QJsonObject users;
|
||||
users.insert("id", v2rayVmessClientUuid);
|
||||
vnext.insert("users", QJsonArray({users}));
|
||||
vmessSettings.insert("vnext", QJsonArray({vnext}));
|
||||
outboundsVmess.insert("settings", vmessSettings);
|
||||
|
||||
QJsonArray outbounds;
|
||||
outbounds.push_back(outboundsVmess);
|
||||
config.insert("outbounds", outbounds);
|
||||
|
||||
|
||||
QString textCfg = m_serverController->replaceVars(QJsonDocument(config).toJson(),
|
||||
m_serverController->genVarsForScript(credentials, container, containerConfig));
|
||||
|
||||
// qDebug().noquote() << textCfg;
|
||||
return textCfg;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue