Refactoring

This commit is contained in:
pokamest 2021-10-05 12:22:13 +03:00
parent 9ecb703b99
commit d4b9557508
14 changed files with 198 additions and 234 deletions

View file

@ -55,7 +55,6 @@ QString Ikev2Configurator::genIkev2Config(const ServerCredentials &credentials,
return ""; return "";
} }
QJsonObject config; QJsonObject config;
config[config_key::hostName] = connData.host; config[config_key::hostName] = connData.host;
config[config_key::userName] = connData.clientId; config[config_key::userName] = connData.clientId;

View file

@ -5,6 +5,7 @@
#include <QTemporaryDir> #include <QTemporaryDir>
#include <QDebug> #include <QDebug>
#include <QTemporaryFile> #include <QTemporaryFile>
#include <QJsonObject>
#include "core/server_defs.h" #include "core/server_defs.h"
#include "containers/containers_defs.h" #include "containers/containers_defs.h"
@ -242,8 +243,10 @@ QString OpenVpnConfigurator::genOpenVpnConfig(const ServerCredentials &credentia
config.replace("block-outside-dns", ""); config.replace("block-outside-dns", "");
#endif #endif
//qDebug().noquote() << config; QJsonObject jConfig;
return config; jConfig[config_key::config] = config;
return QJsonDocument(jConfig).toJson();
} }
QString OpenVpnConfigurator::processConfigWithLocalSettings(QString config) QString OpenVpnConfigurator::processConfigWithLocalSettings(QString config)

View file

@ -158,8 +158,10 @@ QString WireguardConfigurator::genWireguardConfig(const ServerCredentials &crede
config.replace("$WIREGUARD_SERVER_PUBLIC_KEY", connData.serverPubKey); config.replace("$WIREGUARD_SERVER_PUBLIC_KEY", connData.serverPubKey);
config.replace("$WIREGUARD_PSK", connData.pskKey); config.replace("$WIREGUARD_PSK", connData.pskKey);
qDebug().noquote() << config; QJsonObject jConfig;
return config; jConfig[config_key::config] = config;
return QJsonDocument(jConfig).toJson();
} }
QString WireguardConfigurator::processConfigWithLocalSettings(QString config) QString WireguardConfigurator::processConfigWithLocalSettings(QString config)
@ -168,7 +170,10 @@ QString WireguardConfigurator::processConfigWithLocalSettings(QString config)
config.replace("$PRIMARY_DNS", m_settings().primaryDns()); config.replace("$PRIMARY_DNS", m_settings().primaryDns());
config.replace("$SECONDARY_DNS", m_settings().secondaryDns()); config.replace("$SECONDARY_DNS", m_settings().secondaryDns());
return config; QJsonObject jConfig;
jConfig[config_key::config] = config;
return QJsonDocument(jConfig).toJson();
} }
QString WireguardConfigurator::processConfigWithExportSettings(QString config) QString WireguardConfigurator::processConfigWithExportSettings(QString config)

View file

@ -87,23 +87,15 @@ void OpenVpnProtocol::killOpenVpnProcess()
void OpenVpnProtocol::readOpenVpnConfiguration(const QJsonObject &configuration) void OpenVpnProtocol::readOpenVpnConfiguration(const QJsonObject &configuration)
{ {
if (configuration.contains(ProtocolProps::key_proto_config_data(Protocol::OpenVpn))) { if (configuration.contains(ProtocolProps::key_proto_config_data(Protocol::OpenVpn))) {
QJsonObject jConfig = configuration.value(ProtocolProps::key_proto_config_data(Protocol::OpenVpn)).toObject();
m_configFile.open(); m_configFile.open();
m_configFile.write(configuration.value(ProtocolProps::key_proto_config_data(Protocol::OpenVpn)).toString().toUtf8()); m_configFile.write(jConfig.value(config_key::config).toString().toUtf8());
m_configFile.close(); m_configFile.close();
m_configFileName = m_configFile.fileName(); m_configFileName = m_configFile.fileName();
qDebug().noquote() << QString("Set config data") << m_configFileName; qDebug().noquote() << QString("Set config data") << m_configFileName;
} }
else if (configuration.contains(ProtocolProps::key_proto_config_path(Protocol::OpenVpn))) {
m_configFileName = configuration.value(ProtocolProps::key_proto_config_path(Protocol::OpenVpn)).toString();
QFileInfo file(m_configFileName);
if (file.fileName().isEmpty()) {
m_configFileName = defaultConfigFileName();
}
qDebug().noquote() << QString("Set config file: '%1'").arg(configPath());
}
} }
bool OpenVpnProtocol::openVpnProcessIsRunning() const bool OpenVpnProtocol::openVpnProcessIsRunning() const

View file

@ -17,6 +17,7 @@ constexpr char local_port[] = "local_port";
constexpr char description[] = "description"; constexpr char description[] = "description";
constexpr char cert[] = "cert"; constexpr char cert[] = "cert";
constexpr char config[] = "config";
constexpr char containers[] = "containers"; constexpr char containers[] = "containers";

View file

@ -73,7 +73,8 @@ void WireguardProtocol::stop()
void WireguardProtocol::readWireguardConfiguration(const QJsonObject &configuration) void WireguardProtocol::readWireguardConfiguration(const QJsonObject &configuration)
{ {
if (configuration.contains(ProtocolProps::key_proto_config_data(Protocol::WireGuard))) { QJsonObject jConfig = configuration.value(ProtocolProps::key_proto_config_data(Protocol::WireGuard)).toObject();
if (!m_configFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { if (!m_configFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
qCritical() << "Failed to save wireguard config to" << m_configFile.fileName(); qCritical() << "Failed to save wireguard config to" << m_configFile.fileName();
return; return;
@ -81,23 +82,13 @@ void WireguardProtocol::readWireguardConfiguration(const QJsonObject &configurat
m_isConfigLoaded = true; m_isConfigLoaded = true;
m_configFile.write(configuration.value(ProtocolProps::key_proto_config_data(Protocol::Ikev2)).toString().toUtf8()); m_configFile.write(jConfig.value(config_key::config).toString().toUtf8());
m_configFile.close(); m_configFile.close();
m_configFileName = m_configFile.fileName(); m_configFileName = m_configFile.fileName();
qDebug().noquote() << QString("Set config data") << m_configFileName; qDebug().noquote() << QString("Set config data") << m_configFileName;
qDebug().noquote() << QString("Set config data") << configuration.value(ProtocolProps::key_proto_config_data(Protocol::WireGuard)).toString().toUtf8(); qDebug().noquote() << QString("Set config data") << configuration.value(ProtocolProps::key_proto_config_data(Protocol::WireGuard)).toString().toUtf8();
}
// else if (configuration.contains(config::key_wireguard_config_path)) {
// m_configFileName = configuration.value(config::key_wireguard_config_path).toString();
// QFileInfo file(m_configFileName);
// if (file.fileName().isEmpty()) {
// m_configFileName = defaultConfigFileName();
// }
// qDebug().noquote() << QString("Set config file: '%1'").arg(configPath());
// }
} }
//bool WireguardProtocol::openVpnProcessIsRunning() const //bool WireguardProtocol::openVpnProcessIsRunning() const

View file

@ -1,27 +1,26 @@
sudo docker exec -i $CONTAINER_NAME bash -c '\ cat > /opt/amnezia/openvpn/server.conf <<EOF
echo -e "\ port $OPENVPN_PORT
port $OPENVPN_PORT \\n\ proto $OPENVPN_TRANSPORT_PROTO
proto $OPENVPN_TRANSPORT_PROTO \\n\ dev tun
dev tun \\n\ ca /opt/amnezia/openvpn/ca.crt
ca /opt/amnezia/openvpn/ca.crt \\n\ cert /opt/amnezia/openvpn/AmneziaReq.crt
cert /opt/amnezia/openvpn/AmneziaReq.crt \\n\ key /opt/amnezia/openvpn/AmneziaReq.key
key /opt/amnezia/openvpn/AmneziaReq.key \\n\ dh /opt/amnezia/openvpn/dh.pem
dh /opt/amnezia/openvpn/dh.pem \\n\ server $OPENVPN_SUBNET_IP $OPENVPN_SUBNET_MASK
server $OPENVPN_SUBNET_IP $OPENVPN_SUBNET_MASK \\n\ ifconfig-pool-persist ipp.txt
ifconfig-pool-persist ipp.txt \\n\ duplicate-cn
duplicate-cn \\n\ keepalive 10 120
keepalive 10 120 \\n\ $OPENVPN_NCP_DISABLE
$OPENVPN_NCP_DISABLE \\n\ cipher $OPENVPN_CIPHER
cipher $OPENVPN_CIPHER \\n\ data-ciphers $OPENVPN_CIPHER
data-ciphers $OPENVPN_CIPHER \\n\ auth $OPENVPN_HASH
auth $OPENVPN_HASH \\n\ user nobody
user nobody \\n\ group nobody
group nobody \\n\ persist-key
persist-key \\n\ persist-tun
persist-tun \\n\ status openvpn-status.log
status openvpn-status.log \\n\ verb 1
verb 1 \\n\ tls-server
tls-server \\n\ tls-version-min 1.2
tls-version-min 1.2 \\n\ $OPENVPN_TLS_AUTH
$OPENVPN_TLS_AUTH" >/opt/amnezia/openvpn/server.conf' EOF

View file

@ -1,71 +1,75 @@
sudo docker exec -i $CONTAINER_NAME bash -c '\ cat > /opt/amnezia/openvpn/server.conf <<EOF
echo -e "\ port $OPENVPN_PORT
port $OPENVPN_PORT \\n\ proto $OPENVPN_TRANSPORT_PROTO
proto $OPENVPN_TRANSPORT_PROTO \\n\ dev tun
dev tun \\n\ ca /opt/amnezia/openvpn/ca.crt
ca /opt/amnezia/openvpn/ca.crt \\n\ cert /opt/amnezia/openvpn/AmneziaReq.crt
cert /opt/amnezia/openvpn/AmneziaReq.crt \\n\ key /opt/amnezia/openvpn/AmneziaReq.key
key /opt/amnezia/openvpn/AmneziaReq.key \\n\ dh /opt/amnezia/openvpn/dh.pem
dh /opt/amnezia/openvpn/dh.pem \\n\ server $OPENVPN_SUBNET_IP $OPENVPN_SUBNET_MASK
server $OPENVPN_SUBNET_IP $OPENVPN_SUBNET_MASK \\n\ ifconfig-pool-persist ipp.txt
ifconfig-pool-persist ipp.txt \\n\ duplicate-cn
duplicate-cn \\n\ keepalive 10 120
keepalive 10 120 \\n\ $OPENVPN_NCP_DISABLE
$OPENVPN_NCP_DISABLE \\n\ cipher $OPENVPN_CIPHER
cipher $OPENVPN_CIPHER \\n\ data-ciphers $OPENVPN_CIPHER
data-ciphers $OPENVPN_CIPHER \\n\ auth $OPENVPN_HASH
auth $OPENVPN_HASH \\n\ user nobody
user nobody \\n\ group nobody
group nobody \\n\ persist-key
persist-key \\n\ persist-tun
persist-tun \\n\ status openvpn-status.log
status openvpn-status.log \\n\ verb 1
verb 1 \\n\ tls-server
tls-server \\n\ tls-version-min 1.2
tls-version-min 1.2 \\n\ $OPENVPN_TLS_AUTH
$OPENVPN_TLS_AUTH" >/opt/amnezia/openvpn/server.conf' EOF
# Cloak config # Cloak config
sudo docker exec -i $CONTAINER_NAME bash -c '\ mkdir -p /opt/amnezia/cloak
mkdir -p /opt/amnezia/cloak; \ cd /opt/amnezia/cloak || exit 1
cd /opt/amnezia/cloak || exit 1; \ CLOAK_ADMIN_UID=$(ck-server -u) && echo $CLOAK_ADMIN_UID > /opt/amnezia/cloak/cloak_admin_uid.key
CLOAK_ADMIN_UID=$(ck-server -u) && echo $CLOAK_ADMIN_UID > /opt/amnezia/cloak/cloak_admin_uid.key; \ CLOAK_BYPASS_UID=$(ck-server -u) && echo $CLOAK_BYPASS_UID > /opt/amnezia/cloak/cloak_bypass_uid.key
CLOAK_BYPASS_UID=$(ck-server -u) && echo $CLOAK_BYPASS_UID > /opt/amnezia/cloak/cloak_bypass_uid.key; \ IFS=, read CLOAK_PUBLIC_KEY CLOAK_PRIVATE_KEY <<<$(ck-server -k)
IFS=, read CLOAK_PUBLIC_KEY CLOAK_PRIVATE_KEY <<<$(ck-server -k); \ echo $CLOAK_PUBLIC_KEY > /opt/amnezia/cloak/cloak_public.key
echo $CLOAK_PUBLIC_KEY > /opt/amnezia/cloak/cloak_public.key; \ echo $CLOAK_PRIVATE_KEY > /opt/amnezia/cloak/cloak_private.key
echo $CLOAK_PRIVATE_KEY > /opt/amnezia/cloak/cloak_private.key; \
echo -e "{\\n\ cat > /opt/amnezia/cloak/ck-config.json <<EOF
\"ProxyBook\": {\\n\ {
\"openvpn\": [\\n\ "ProxyBook": {
\"$OPENVPN_TRANSPORT_PROTO\",\\n\ "openvpn": [
\"localhost:$OPENVPN_PORT\"\\n\ "$OPENVPN_TRANSPORT_PROTO",
],\\n\ "localhost:$OPENVPN_PORT"
\"shadowsocks\": [\\n\ ],
\"tcp\",\\n\ "shadowsocks": [
\"localhost:$SHADOWSOCKS_SERVER_PORT\"\\n\ "tcp",
]\\n\ "localhost:$SHADOWSOCKS_SERVER_PORT"
},\\n\ ]
\"BypassUID\": [\\n\ },
\"$CLOAK_BYPASS_UID\"\\n\ "BypassUID": [
],\\n\ "$CLOAK_BYPASS_UID"
\"BindAddr\":[\":443\"],\\n\ ],
\"RedirAddr\": \"$FAKE_WEB_SITE_ADDRESS\",\\n\ "BindAddr":[":443"],
\"PrivateKey\": \"$CLOAK_PRIVATE_KEY\",\\n\ "RedirAddr": "$FAKE_WEB_SITE_ADDRESS",
\"AdminUID\": \"$CLOAK_ADMIN_UID\",\\n\ "PrivateKey": "$CLOAK_PRIVATE_KEY",
\"DatabasePath\": \"userinfo.db\",\\n\ "AdminUID": "$CLOAK_ADMIN_UID",
\"StreamTimeout\": 300\\n\ "DatabasePath": "userinfo.db",
}" >/opt/amnezia/cloak/ck-config.json' "StreamTimeout": 300
}
EOF
# ShadowSocks config # ShadowSocks config
sudo docker exec -i $CONTAINER_NAME bash -c '\
mkdir -p /opt/amnezia/shadowsocks; \ mkdir -p /opt/amnezia/shadowsocks; \
cd /opt/amnezia/shadowsocks || exit 1; \ cd /opt/amnezia/shadowsocks || exit 1; \
SHADOWSOCKS_PASSWORD=$(openssl rand -base64 32 | tr "=" "A" | tr "+" "A" | tr "/" "A") && echo $SHADOWSOCKS_PASSWORD > /opt/amnezia/shadowsocks/shadowsocks.key; \ SHADOWSOCKS_PASSWORD=$(openssl rand -base64 32 | tr "=" "A" | tr "+" "A" | tr "/" "A")
echo -e "{\\n\ echo $SHADOWSOCKS_PASSWORD > /opt/amnezia/shadowsocks/shadowsocks.key
\"local_port\": 8585,\\n\ cat > /opt/amnezia/shadowsocks/ss-config.json <<EOF
\"method\": \"$SHADOWSOCKS_CIPHER\",\\n\ {
\"password\": \"$SHADOWSOCKS_PASSWORD\",\\n\ "local_port": 8585,
\"server\": \"0.0.0.0\",\\n\ "method": "$SHADOWSOCKS_CIPHER",
\"server_port\": $SHADOWSOCKS_SERVER_PORT,\\n\ "password": "$SHADOWSOCKS_PASSWORD",
\"timeout\": 60\\n\ "server": "0.0.0.0",
}" >/opt/amnezia/shadowsocks/ss-config.json' "server_port": $SHADOWSOCKS_SERVER_PORT,
"timeout": 60
}
EOF

View file

@ -1,40 +1,43 @@
sudo docker exec -i $CONTAINER_NAME bash -c '\ cat > /opt/amnezia/openvpn/server.conf <<EOF
echo -e "\ port $OPENVPN_PORT
port $OPENVPN_PORT \\n\ proto tcp
proto tcp \\n\ dev tun
dev tun \\n\ ca /opt/amnezia/openvpn/ca.crt
ca /opt/amnezia/openvpn/ca.crt \\n\ cert /opt/amnezia/openvpn/AmneziaReq.crt
cert /opt/amnezia/openvpn/AmneziaReq.crt \\n\ key /opt/amnezia/openvpn/AmneziaReq.key
key /opt/amnezia/openvpn/AmneziaReq.key \\n\ dh /opt/amnezia/openvpn/dh.pem
dh /opt/amnezia/openvpn/dh.pem \\n\ server $OPENVPN_SUBNET_IP $OPENVPN_SUBNET_MASK
server $OPENVPN_SUBNET_IP $OPENVPN_SUBNET_MASK \\n\ ifconfig-pool-persist ipp.txt
ifconfig-pool-persist ipp.txt \\n\ duplicate-cn
duplicate-cn \\n\ keepalive 10 120
keepalive 10 120 \\n\ $OPENVPN_NCP_DISABLE
$OPENVPN_NCP_DISABLE \\n\ cipher $OPENVPN_CIPHER
cipher $OPENVPN_CIPHER \\n\ data-ciphers $OPENVPN_CIPHER
data-ciphers $OPENVPN_CIPHER \\n\ auth $OPENVPN_HASH
auth $OPENVPN_HASH \\n\ user nobody
user nobody \\n\ group nobody
group nobody \\n\ persist-key
persist-key \\n\ persist-tun
persist-tun \\n\ status openvpn-status.log
status openvpn-status.log \\n\ verb 1
verb 1 \\n\ tls-server
tls-server \\n\ tls-version-min 1.2
tls-version-min 1.2 \\n\ $OPENVPN_TLS_AUTH
$OPENVPN_TLS_AUTH" >/opt/amnezia/openvpn/server.conf' EOF
# ShadowSocks config # ShadowSocks config
sudo docker exec -i $CONTAINER_NAME bash -c '\ mkdir -p /opt/amnezia/shadowsocks
mkdir -p /opt/amnezia/shadowsocks; \ cd /opt/amnezia/shadowsocks
cd /opt/amnezia/shadowsocks || exit 1; \ SHADOWSOCKS_PASSWORD=$(openssl rand -base64 32 | tr "=" "A" | tr "+" "A" | tr "/" "A")
SHADOWSOCKS_PASSWORD=$(openssl rand -base64 32 | tr "=" "A" | tr "+" "A" | tr "/" "A") && echo $SHADOWSOCKS_PASSWORD > /opt/amnezia/shadowsocks/shadowsocks.key; \ echo $SHADOWSOCKS_PASSWORD > /opt/amnezia/shadowsocks/shadowsocks.key
echo -e "{\\n\
\"local_port\": 8585,\\n\ cat > /opt/amnezia/shadowsocks/ss-config.json <<EOF
\"method\": \"$SHADOWSOCKS_CIPHER\",\\n\ {
\"password\": \"$SHADOWSOCKS_PASSWORD\",\\n\ "local_port": 8585,
\"server\": \"0.0.0.0\",\\n\ "method": "$SHADOWSOCKS_CIPHER",
\"server_port\": $SHADOWSOCKS_SERVER_PORT,\\n\ "password": "$SHADOWSOCKS_PASSWORD",
\"timeout\": 60\\n\ "server": "0.0.0.0",
}" >/opt/amnezia/shadowsocks/ss-config.json' "server_port": $SHADOWSOCKS_SERVER_PORT,
"timeout": 60
}
EOF

View file

@ -1,2 +1,3 @@
sleep 5 sleep 5
sudo docker exec -i amnezia-tor onions # get onions list
onions

View file

@ -1,13 +1,17 @@
# Wireguard config mkdir -p /opt/amnezia/wireguard
sudo docker exec -i $CONTAINER_NAME bash -c '\ cd /opt/amnezia/wireguard
mkdir -p /opt/amnezia/wireguard; \ WIREGUARD_SERVER_PRIVATE_KEY=$(wg genkey)
cd /opt/amnezia/wireguard || exit 1; \ echo $WIREGUARD_SERVER_PRIVATE_KEY > /opt/amnezia/wireguard/wireguard_server_private_key.key
WIREGUARD_SERVER_PRIVATE_KEY=$(wg genkey) && echo $WIREGUARD_SERVER_PRIVATE_KEY > /opt/amnezia/wireguard/wireguard_server_private_key.key; \
WIREGUARD_SERVER_PUBLIC_KEY=$(echo $WIREGUARD_SERVER_PRIVATE_KEY | wg pubkey) && echo $WIREGUARD_SERVER_PUBLIC_KEY > /opt/amnezia/wireguard/wireguard_server_public_key.key; \ WIREGUARD_SERVER_PUBLIC_KEY=$(echo $WIREGUARD_SERVER_PRIVATE_KEY | wg pubkey)
WIREGUARD_PSK=$(wg genpsk) && echo $WIREGUARD_PSK > /opt/amnezia/wireguard/wireguard_psk.key; \ echo $WIREGUARD_SERVER_PUBLIC_KEY > /opt/amnezia/wireguard/wireguard_server_public_key.key
echo -e "\
[Interface]\\n\ WIREGUARD_PSK=$(wg genpsk)
PrivateKey = $WIREGUARD_SERVER_PRIVATE_KEY \\n\ echo $WIREGUARD_PSK > /opt/amnezia/wireguard/wireguard_psk.key
Address = $WIREGUARD_SUBNET_IP/$WIREGUARD_SUBNET_CIDR \\n\
ListenPort = $WIREGUARD_SERVER_PORT \\n\ cat > /opt/amnezia/wireguard/wg0.conf <<EOF
" >/opt/amnezia/wireguard/wg0.conf' [Interface]
PrivateKey = $WIREGUARD_SERVER_PRIVATE_KEY
Address = $WIREGUARD_SUBNET_IP/$WIREGUARD_SUBNET_CIDR
ListenPort = $WIREGUARD_SERVER_PORT
EOF

View file

@ -167,8 +167,9 @@ void Settings::setProtocolConfig(int serverIndex, DockerContainer container, Pro
void Settings::clearLastConnectionConfig(int serverIndex, DockerContainer container, Protocol proto) void Settings::clearLastConnectionConfig(int serverIndex, DockerContainer container, Protocol proto)
{ {
// recursively remove
if (proto == Protocol::Any) { if (proto == Protocol::Any) {
for (Protocol p: { Protocol::OpenVpn, Protocol::ShadowSocks, Protocol::Cloak, Protocol::WireGuard}) { for (Protocol p: ContainerProps::protocolsForContainer(container)) {
clearLastConnectionConfig(serverIndex, container, p); clearLastConnectionConfig(serverIndex, container, p);
} }
return; return;

View file

@ -332,6 +332,7 @@ PageBase {
checked: default_role checked: default_role
onClicked: { onClicked: {
tb_c.currentIndex = -1
ServerContainersLogic.onPushButtonRemoveClicked(proxyContainersModel.mapToSource(index)) ServerContainersLogic.onPushButtonRemoveClicked(proxyContainersModel.mapToSource(index))
} }

View file

@ -191,66 +191,26 @@ QJsonObject VpnConnection::createVpnConfiguration(int serverIndex,
ErrorCode e = ErrorCode::NoError; ErrorCode e = ErrorCode::NoError;
QJsonObject vpnConfiguration; QJsonObject vpnConfiguration;
if (container == DockerContainer::OpenVpn ||
container == DockerContainer::ShadowSocks ||
container == DockerContainer::Cloak) {
QString openVpnConfigData = for (ProtocolEnumNS::Protocol proto : ContainerProps::protocolsForContainer(container)) {
// QString vpnConfigData =
// createVpnConfigurationForProto(
// serverIndex, credentials, container, containerConfig, proto, &e);
QJsonObject vpnConfigData = QJsonDocument::fromJson(
createVpnConfigurationForProto( createVpnConfigurationForProto(
serverIndex, credentials, container, containerConfig, Protocol::OpenVpn, &e); serverIndex, credentials, container, containerConfig, proto, &e).toUtf8()).
object();
vpnConfiguration.insert(ProtocolProps::key_proto_config_data(Protocol::OpenVpn), openVpnConfigData);
if (e) { if (e) {
if (errorCode) *errorCode = e; if (errorCode) *errorCode = e;
return {}; return {};
} }
QFile file(OpenVpnProtocol::defaultConfigFileName()); vpnConfiguration.insert(ProtocolProps::key_proto_config_data(proto), vpnConfigData);
if (file.open(QIODevice::WriteOnly | QIODevice::Truncate)){
QTextStream stream(&file);
stream << openVpnConfigData << endl;
file.close();
}
else {
if (errorCode) *errorCode = ErrorCode::FailedToSaveConfigData;
return {};
}
} }
if (container == DockerContainer::ShadowSocks) {
QJsonObject ssConfigData = QJsonDocument::fromJson(
createVpnConfigurationForProto(
serverIndex, credentials, container, containerConfig, Protocol::ShadowSocks, &e).toUtf8()).
object();
vpnConfiguration.insert(ProtocolProps::key_proto_config_data(Protocol::ShadowSocks), ssConfigData);
}
if (container == DockerContainer::Cloak) {
QJsonObject cloakConfigData = QJsonDocument::fromJson(
createVpnConfigurationForProto(
serverIndex, credentials, container, containerConfig, Protocol::Cloak, &e).toUtf8()).
object();
vpnConfiguration.insert(ProtocolProps::key_proto_config_data(Protocol::Cloak), cloakConfigData);
}
if (container == DockerContainer::WireGuard) {
QString wgConfigData = createVpnConfigurationForProto(
serverIndex, credentials, container, containerConfig, Protocol::WireGuard, &e);
vpnConfiguration.insert(ProtocolProps::key_proto_config_data(Protocol::WireGuard), wgConfigData);
}
if (container == DockerContainer::Ipsec) {
QString ikev2ConfigData = createVpnConfigurationForProto(
serverIndex, credentials, container, containerConfig, Protocol::Ikev2, &e);
vpnConfiguration.insert(ProtocolProps::key_proto_config_data(Protocol::Ikev2), ikev2ConfigData);
}
//qDebug().noquote() << "VPN config" << QJsonDocument(m_vpnConfiguration).toJson();
return vpnConfiguration; return vpnConfiguration;
} }