hostname is now added to the server name for imported openvpn and wireguard configs
This commit is contained in:
parent
6941b7463e
commit
7270e701d4
1 changed files with 24 additions and 14 deletions
|
|
@ -16,7 +16,13 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
QString checkConfigFormat(const QString &config)
|
enum class ConfigTypes {
|
||||||
|
Amnezia,
|
||||||
|
OpenVpn,
|
||||||
|
WireGuard
|
||||||
|
};
|
||||||
|
|
||||||
|
ConfigTypes checkConfigFormat(const QString &config)
|
||||||
{
|
{
|
||||||
const QString openVpnConfigPatternCli = "client";
|
const QString openVpnConfigPatternCli = "client";
|
||||||
const QString openVpnConfigPatternProto1 = "proto tcp";
|
const QString openVpnConfigPatternProto1 = "proto tcp";
|
||||||
|
|
@ -30,11 +36,11 @@ QString checkConfigFormat(const QString &config)
|
||||||
if (config.contains(openVpnConfigPatternCli) &&
|
if (config.contains(openVpnConfigPatternCli) &&
|
||||||
(config.contains(openVpnConfigPatternProto1) || config.contains(openVpnConfigPatternProto2)) &&
|
(config.contains(openVpnConfigPatternProto1) || config.contains(openVpnConfigPatternProto2)) &&
|
||||||
(config.contains(openVpnConfigPatternDriver1) || config.contains(openVpnConfigPatternDriver2))) {
|
(config.contains(openVpnConfigPatternDriver1) || config.contains(openVpnConfigPatternDriver2))) {
|
||||||
return "OpenVpn";
|
return ConfigTypes::OpenVpn;
|
||||||
} else if (config.contains(wireguardConfigPatternSectionInterface) &&
|
} else if (config.contains(wireguardConfigPatternSectionInterface) &&
|
||||||
config.contains(wireguardConfigPatternSectionPeer))
|
config.contains(wireguardConfigPatternSectionPeer))
|
||||||
return "Wireguard";
|
return ConfigTypes::WireGuard;
|
||||||
return "Amnezia";
|
return ConfigTypes::Amnezia;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -169,9 +175,9 @@ void StartPageLogic::onPushButtonImportOpenFile()
|
||||||
QByteArray data = file.readAll();
|
QByteArray data = file.readAll();
|
||||||
|
|
||||||
auto configFormat = checkConfigFormat(QString(data));
|
auto configFormat = checkConfigFormat(QString(data));
|
||||||
if (configFormat == "OpenVpn") {
|
if (configFormat == ConfigTypes::OpenVpn) {
|
||||||
importConnectionFromOpenVpnConfig(QString(data));
|
importConnectionFromOpenVpnConfig(QString(data));
|
||||||
} else if (configFormat == "Wireguard") {
|
} else if (configFormat == ConfigTypes::WireGuard) {
|
||||||
importConnectionFromWireguardConfig(QString(data));
|
importConnectionFromWireguardConfig(QString(data));
|
||||||
} else {
|
} else {
|
||||||
importConnectionFromCode(QString(data));
|
importConnectionFromCode(QString(data));
|
||||||
|
|
@ -261,10 +267,17 @@ bool StartPageLogic::importConnectionFromOpenVpnConfig(const QString &config)
|
||||||
QJsonArray arr;
|
QJsonArray arr;
|
||||||
arr.push_back(containers);
|
arr.push_back(containers);
|
||||||
|
|
||||||
|
QString hostName;
|
||||||
|
const static QRegularExpression hostNameRegExp("remote (.*) [0-9]*");
|
||||||
|
QRegularExpressionMatch hostNameMatch = hostNameRegExp.match(config);
|
||||||
|
if (hostNameMatch.hasMatch()) {
|
||||||
|
hostName = hostNameMatch.captured(1);
|
||||||
|
}
|
||||||
|
|
||||||
QJsonObject o;
|
QJsonObject o;
|
||||||
o[config_key::containers] = arr;
|
o[config_key::containers] = arr;
|
||||||
o[config_key::defaultContainer] = "amnezia-openvpn";
|
o[config_key::defaultContainer] = "amnezia-openvpn";
|
||||||
o[config_key::description] = "OpenVpn server";
|
o[config_key::description] = QString("OpenVpn server %1").arg(hostName);
|
||||||
|
|
||||||
|
|
||||||
const static QRegularExpression dnsRegExp("dhcp-option DNS (\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b)");
|
const static QRegularExpression dnsRegExp("dhcp-option DNS (\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b)");
|
||||||
|
|
@ -276,11 +289,7 @@ bool StartPageLogic::importConnectionFromOpenVpnConfig(const QString &config)
|
||||||
o[config_key::dns2] = dnsMatch.next().captured(1);
|
o[config_key::dns2] = dnsMatch.next().captured(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
const static QRegularExpression hostNameRegExp("remote (\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b)");
|
o[config_key::hostName] = hostName;
|
||||||
QRegularExpressionMatch hostNameMatch = hostNameRegExp.match(config);
|
|
||||||
if (hostNameMatch.hasMatch()) {
|
|
||||||
o[config_key::hostName] = hostNameMatch.captured(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
o[config_key::isThirdPartyConfig] = true;
|
o[config_key::isThirdPartyConfig] = true;
|
||||||
|
|
||||||
|
|
@ -292,7 +301,7 @@ bool StartPageLogic::importConnectionFromWireguardConfig(const QString &config)
|
||||||
QJsonObject lastConfig;
|
QJsonObject lastConfig;
|
||||||
lastConfig[config_key::config] = config;
|
lastConfig[config_key::config] = config;
|
||||||
|
|
||||||
const static QRegularExpression hostNameAndPortRegExp("Endpoint = (\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b):([0-9]*)");
|
const static QRegularExpression hostNameAndPortRegExp("Endpoint = (.*):([0-9]*)");
|
||||||
QRegularExpressionMatch hostNameAndPortMatch = hostNameAndPortRegExp.match(config);
|
QRegularExpressionMatch hostNameAndPortMatch = hostNameAndPortRegExp.match(config);
|
||||||
QString hostName;
|
QString hostName;
|
||||||
QString port;
|
QString port;
|
||||||
|
|
@ -316,7 +325,7 @@ bool StartPageLogic::importConnectionFromWireguardConfig(const QString &config)
|
||||||
QJsonObject o;
|
QJsonObject o;
|
||||||
o[config_key::containers] = arr;
|
o[config_key::containers] = arr;
|
||||||
o[config_key::defaultContainer] = "amnezia-wireguard";
|
o[config_key::defaultContainer] = "amnezia-wireguard";
|
||||||
o[config_key::description] = "Wireguard server";
|
o[config_key::description] = QString("Wireguard server %1").arg(hostName);
|
||||||
|
|
||||||
const static QRegularExpression dnsRegExp("DNS = (\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b).*(\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b)");
|
const static QRegularExpression dnsRegExp("DNS = (\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b).*(\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b)");
|
||||||
QRegularExpressionMatch dnsMatch = dnsRegExp.match(config);
|
QRegularExpressionMatch dnsMatch = dnsRegExp.match(config);
|
||||||
|
|
@ -326,6 +335,7 @@ bool StartPageLogic::importConnectionFromWireguardConfig(const QString &config)
|
||||||
}
|
}
|
||||||
|
|
||||||
o[config_key::hostName] = hostName;
|
o[config_key::hostName] = hostName;
|
||||||
|
|
||||||
o[config_key::isThirdPartyConfig] = true;
|
o[config_key::isThirdPartyConfig] = true;
|
||||||
|
|
||||||
return importConnection(o);
|
return importConnection(o);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue