Refactoring
This commit is contained in:
parent
9ecb703b99
commit
d4b9557508
14 changed files with 198 additions and 234 deletions
|
@ -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;
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -73,31 +73,22 @@ 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)) {
|
|
||||||
qCritical() << "Failed to save wireguard config to" << m_configFile.fileName();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_isConfigLoaded = true;
|
if (!m_configFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
|
||||||
|
qCritical() << "Failed to save wireguard config to" << m_configFile.fileName();
|
||||||
m_configFile.write(configuration.value(ProtocolProps::key_proto_config_data(Protocol::Ikev2)).toString().toUtf8());
|
return;
|
||||||
m_configFile.close();
|
|
||||||
m_configFileName = m_configFile.fileName();
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
// 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_isConfigLoaded = true;
|
||||||
// m_configFileName = defaultConfigFileName();
|
|
||||||
// }
|
m_configFile.write(jConfig.value(config_key::config).toString().toUtf8());
|
||||||
|
m_configFile.close();
|
||||||
|
m_configFileName = m_configFile.fileName();
|
||||||
|
|
||||||
|
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 file: '%1'").arg(configPath());
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//bool WireguardProtocol::openVpnProcessIsRunning() const
|
//bool WireguardProtocol::openVpnProcessIsRunning() const
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
sleep 5
|
sleep 5
|
||||||
sudo docker exec -i amnezia-tor onions
|
# get onions list
|
||||||
|
onions
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,7 +159,7 @@ QString VpnConnection::createVpnConfigurationForProto(int serverIndex,
|
||||||
else {
|
else {
|
||||||
qDebug() << "VpnConnection::createVpnConfiguration: gen new config for" << ProtocolProps::protoToString(proto);
|
qDebug() << "VpnConnection::createVpnConfiguration: gen new config for" << ProtocolProps::protoToString(proto);
|
||||||
configData = VpnConfigurator::genVpnProtocolConfig(credentials,
|
configData = VpnConfigurator::genVpnProtocolConfig(credentials,
|
||||||
container, containerConfig, proto, &e);
|
container, containerConfig, proto, &e);
|
||||||
|
|
||||||
QString configDataBeforeLocalProcessing = configData;
|
QString configDataBeforeLocalProcessing = configData;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue