Release 1.6 WIP

This commit is contained in:
pokamest 2021-04-20 02:09:47 +03:00
parent f9affb083b
commit a5e9cea22f
29 changed files with 2046 additions and 136 deletions

View file

@ -1,25 +1,48 @@
#ifndef DEFS_H
#define DEFS_H
#include <QMetaEnum>
#include <QObject>
namespace amnezia {
Q_NAMESPACE
enum class Protocol {
Any,
OpenVpn,
ShadowSocks,
ShadowSocksOverOpenVpn,
OpenVpnOverCloak,
WireGuard
};
Q_ENUM_NS(Protocol)
inline Protocol protoFromString(QString proto){
auto&& metaEnum = QMetaEnum::fromType<Protocol>();
return static_cast<Protocol>(metaEnum.keyToValue(proto.toStdString().c_str()));
}
inline QString protoToString(Protocol proto){
return QVariant::fromValue(proto).toString();
}
enum class DockerContainer {
None,
OpenVpn,
ShadowSocks,
ShadowSocksOverOpenVpn,
OpenVpnOverCloak,
WireGuard
};
Q_ENUM_NS(DockerContainer)
inline DockerContainer containerFromString(QString container){
auto&& metaEnum = QMetaEnum::fromType<DockerContainer>();
return static_cast<DockerContainer>(metaEnum.keyToValue(container.toStdString().c_str()));
}
inline QString containerToString(DockerContainer container){
return QVariant::fromValue(container).toString();
}
static DockerContainer containerForProto(Protocol proto)
{
@ -28,7 +51,7 @@ static DockerContainer containerForProto(Protocol proto)
switch (proto) {
case Protocol::OpenVpn: return DockerContainer::OpenVpn;
case Protocol::OpenVpnOverCloak: return DockerContainer::OpenVpnOverCloak;
case Protocol::ShadowSocks: return DockerContainer::ShadowSocks;
case Protocol::ShadowSocksOverOpenVpn: return DockerContainer::ShadowSocksOverOpenVpn;
case Protocol::WireGuard: return DockerContainer::WireGuard;
case Protocol::Any: return DockerContainer::None;
}
@ -91,10 +114,10 @@ enum ErrorCode
namespace config {
// config keys
static QString key_openvpn_config_data() { return "openvpn_config_data"; }
static QString key_openvpn_config_path() { return "openvpn_config_path"; }
static QString key_shadowsocks_config_data() { return "shadowsocks_config_data"; }
static QString key_cloak_config_data() { return "cloak_config_data"; }
const char key_openvpn_config_data[] = "openvpn_config_data";
const char key_openvpn_config_path[] = "openvpn_config_path";
const char key_shadowsocks_config_data[] = "shadowsocks_config_data";
const char key_cloak_config_data[] = "cloak_config_data";
}

View file

@ -9,7 +9,7 @@ QString amnezia::scriptFolder(amnezia::Protocol proto)
switch (proto) {
case Protocol::OpenVpn: return QLatin1String("openvpn");
case Protocol::OpenVpnOverCloak: return QLatin1String("openvpn_cloak");
case Protocol::ShadowSocks: return QLatin1String("openvpn_shadowsocks");
case Protocol::ShadowSocksOverOpenVpn: return QLatin1String("openvpn_shadowsocks");
case Protocol::WireGuard: return QLatin1String("wireguard");
default: return "";
}

View file

@ -5,7 +5,7 @@ QString amnezia::server::getContainerName(amnezia::DockerContainer container)
switch (container) {
case(DockerContainer::OpenVpn): return "amnezia-openvpn";
case(DockerContainer::OpenVpnOverCloak): return "amnezia-openvpn-cloak";
case(DockerContainer::ShadowSocks): return "amnezia-shadowsocks";
case(DockerContainer::ShadowSocksOverOpenVpn): return "amnezia-shadowsocks";
default: return "";
}
}

View file

@ -9,9 +9,9 @@ namespace server {
QString getContainerName(amnezia::DockerContainer container);
QString getDockerfileFolder(amnezia::DockerContainer container);
static QString vpnDefaultSubnetIp() { return "10.8.0.0"; }
static QString vpnDefaultSubnetMask() { return "255.255.255.0"; }
static QString vpnDefaultSubnetMaskVal() { return "24"; }
const char vpnDefaultSubnetIp[] = "10.8.0.0";
const char vpnDefaultSubnetMask[] = "255.255.255.0";
const char vpnDefaultSubnetMaskVal[] = "24";
}
}

View file

@ -392,15 +392,15 @@ ErrorCode ServerController::removeServer(const ServerCredentials &credentials, P
if (e) {
return e;
}
return removeServer(credentials, Protocol::ShadowSocks);
return removeServer(credentials, Protocol::ShadowSocksOverOpenVpn);
}
else if (proto == Protocol::OpenVpn) {
scriptFileName = ":/server_scripts/remove_container.sh";
container = DockerContainer::OpenVpn;
}
else if (proto == Protocol::ShadowSocks) {
else if (proto == Protocol::ShadowSocksOverOpenVpn) {
scriptFileName = ":/server_scripts/remove_container.sh";
container = DockerContainer::ShadowSocks;
container = DockerContainer::ShadowSocksOverOpenVpn;
}
else return ErrorCode::NotImplementedError;
@ -427,7 +427,7 @@ ErrorCode ServerController::setupServer(const ServerCredentials &credentials, Pr
return ErrorCode::NoError;
//return setupOpenVpnServer(credentials);
}
else if (proto == Protocol::ShadowSocks) {
else if (proto == Protocol::ShadowSocksOverOpenVpn) {
return setupShadowSocksServer(credentials);
}
else if (proto == Protocol::Any) {
@ -586,9 +586,9 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
{
Vars vars;
vars.append(qMakePair<QString, QString>("$VPN_SUBNET_IP", amnezia::server::vpnDefaultSubnetIp()));
vars.append(qMakePair<QString, QString>("$VPN_SUBNET_MASK_VAL", amnezia::server::vpnDefaultSubnetMaskVal()));
vars.append(qMakePair<QString, QString>("$VPN_SUBNET_MASK", amnezia::server::vpnDefaultSubnetMask()));
vars.append(qMakePair<QString, QString>("$VPN_SUBNET_IP", amnezia::server::vpnDefaultSubnetIp));
vars.append(qMakePair<QString, QString>("$VPN_SUBNET_MASK_VAL", amnezia::server::vpnDefaultSubnetMaskVal));
vars.append(qMakePair<QString, QString>("$VPN_SUBNET_MASK", amnezia::server::vpnDefaultSubnetMask));
vars.append(qMakePair<QString, QString>("$CONTAINER_NAME", amnezia::server::getContainerName(container)));
vars.append(qMakePair<QString, QString>("$DOCKERFILE_FOLDER", "/opt/amnezia/" + amnezia::server::getContainerName(container)));
@ -610,7 +610,7 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
vars.append(qMakePair<QString, QString>("$SERVER_PORT", amnezia::protocols::cloak::ckDefaultPort()));
vars.append(qMakePair<QString, QString>("$FAKE_WEB_SITE_ADDRESS", amnezia::protocols::cloak::ckDefaultRedirSite()));
}
else if (container == DockerContainer::ShadowSocks) {
else if (container == DockerContainer::ShadowSocksOverOpenVpn) {
vars.append(qMakePair<QString, QString>("$SERVER_PORT", "6789"));
}