mirror of
https://github.com/chenx-dust/EZ4Connect.git
synced 2026-09-20 10:23:33 +08:00
104 lines
4.2 KiB
C++
104 lines
4.2 KiB
C++
#include "settingsprofileloader.h"
|
|
|
|
ConnectionProfile SettingsProfileLoader::load(
|
|
const QSettings &settings,
|
|
const QString &profileId,
|
|
const QString &username,
|
|
const QString &password
|
|
)
|
|
{
|
|
ConnectionProfile profile;
|
|
profile.profileId = profileId;
|
|
const QString easyconnectAuthType = settings.value(
|
|
"ZJUConnect/EasyConnectAuthType",
|
|
settings.value("Credential/CertFile", "").toString().isEmpty()
|
|
? "password"
|
|
: "certificate"
|
|
).toString();
|
|
const bool useCertificate =
|
|
settings.value("ZJUConnect/Protocol").toString() == "easyconnect"
|
|
&& easyconnectAuthType == "certificate";
|
|
profile.credentials = {
|
|
username,
|
|
password,
|
|
settings.value("Credential/TOTPSecret").toString(),
|
|
useCertificate
|
|
? settings.value("Credential/CertFile", "").toString()
|
|
: QString(),
|
|
useCertificate
|
|
? QByteArray::fromBase64(
|
|
settings.value("Credential/CertPassword", "").toByteArray()
|
|
)
|
|
: QString(),
|
|
settings.value("ZJUConnect/CredentialsAsArguments", false).toBool()
|
|
};
|
|
|
|
const QString countryCode = settings.value("ZJUConnect/PhoneCountryCode").toString();
|
|
const QString phoneNumber = settings.value("ZJUConnect/PhoneNumber").toString();
|
|
const QString phone = !countryCode.isEmpty() && !phoneNumber.isEmpty()
|
|
? countryCode + "-" + phoneNumber
|
|
: QString();
|
|
profile.endpoint = {
|
|
settings.value("ZJUConnect/Protocol").toString(),
|
|
settings.value("ZJUConnect/AuthType").toString(),
|
|
settings.value("ZJUConnect/LoginDomain").toString(),
|
|
phone,
|
|
settings.value("ZJUConnect/ServerAddress").toString(),
|
|
settings.value("ZJUConnect/ServerPort").toInt()
|
|
};
|
|
|
|
profile.dns = {
|
|
settings.value("ZJUConnect/DNS").toString(),
|
|
settings.value("ZJUConnect/DNSAuto").toBool(),
|
|
settings.value("ZJUConnect/SecondaryDNS").toString(),
|
|
settings.value("ZJUConnect/DNSTTL").toInt(),
|
|
settings.value("ZJUConnect/DisableZJUDNS").toBool(),
|
|
settings.value("ZJUConnect/CustomDNS", "").toString(),
|
|
settings.value("ZJUConnect/LocalDNSServer", "").toString(),
|
|
settings.value("ZJUConnect/DNSServerBind", "").toString()
|
|
};
|
|
|
|
const QString bindPrefix = settings.value("ZJUConnect/OutsideAccess", false).toBool()
|
|
? "[::]:"
|
|
: "127.0.0.1:";
|
|
profile.proxy = {
|
|
bindPrefix + QString::number(settings.value("ZJUConnect/SOCKS5Port").toInt()),
|
|
bindPrefix + QString::number(settings.value("ZJUConnect/HTTPPort").toInt()),
|
|
settings.value("ZJUConnect/ShadowsocksURL").toString(),
|
|
settings.value("ZJUConnect/DialDirectProxy").toString(),
|
|
settings.value("ZJUConnect/ProxyAll").toBool(),
|
|
settings.value("ZJUConnect/CustomProxyDomain", "").toString()
|
|
};
|
|
|
|
profile.tunnel = {
|
|
settings.value("ZJUConnect/TUNMode").toBool(),
|
|
settings.value("ZJUConnect/AddRoute").toBool(),
|
|
settings.value("ZJUConnect/DNSHijack").toBool(),
|
|
settings.value("ZJUConnect/FakeIP").toBool(),
|
|
settings.value("ZJUConnect/TCPTunnelMode").toBool(),
|
|
settings.value("ZJUConnect/TCPPortForwarding").toString(),
|
|
settings.value("ZJUConnect/UDPPortForwarding").toString()
|
|
};
|
|
|
|
profile.behavior = {
|
|
settings.value("ZJUConnect/UpdateBestNodesInterval", 300).toInt(),
|
|
!settings.value("ZJUConnect/MultiLine").toBool(),
|
|
!settings.value("ZJUConnect/KeepAlive").toBool(),
|
|
settings.value("ZJUConnect/KeepAliveURL", "").toString(),
|
|
settings.value("ZJUConnect/BindInterface", "").toString(),
|
|
settings.value("ZJUConnect/AutoDetectInterface", false).toBool(),
|
|
settings.value("ZJUConnect/SkipDomainResource").toBool(),
|
|
settings.value("ZJUConnect/DisableServerConfig").toBool(),
|
|
!settings.value("ZJUConnect/ZJUDefault").toBool()
|
|
};
|
|
|
|
profile.debug = {
|
|
settings.value("ZJUConnect/Debug").toBool(),
|
|
settings.value("ZJUConnect/DebugPCAP", false).toBool(),
|
|
settings.value("ZJUConnect/DebugTLSLog", false).toBool()
|
|
};
|
|
|
|
profile.extraArguments = settings.value("ZJUConnect/ExtraArguments", "").toString();
|
|
return profile;
|
|
}
|