mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-20 19:00:22 +08:00
Added a better config upgrade algo,
changed translations,
changed ConnectionEdit Window functions,
changed a config key
Signed-off-by: Leroy.H.Y <lhy20010403@hotmail.com>
Former-commit-id: 171fb9d2b0
This commit is contained in:
parent
1545d4890d
commit
22167522ee
@ -7,7 +7,7 @@
|
||||
|
||||
#define QV2RAY_VERSION_STRING "v" QV_MAJOR_VERSION ".0.0"
|
||||
|
||||
#define QV2RAY_CONFIG_VERSION 2
|
||||
#define QV2RAY_CONFIG_VERSION 3
|
||||
#define QV2RAY_CONFIG_DIR_PATH (Qv2ray::Utils::GetConfigDirPath() + "/")
|
||||
#define QV2RAY_CONFIG_FILE_PATH (QV2RAY_CONFIG_DIR_PATH + "Qv2ray.conf")
|
||||
|
||||
@ -85,7 +85,7 @@ namespace Qv2ray
|
||||
string ignoredVersion;
|
||||
//
|
||||
bool proxyDefault;
|
||||
bool proxyCN;
|
||||
bool bypassCN;
|
||||
bool withLocalDNS;
|
||||
list<string> dnsList;
|
||||
//
|
||||
@ -97,7 +97,7 @@ namespace Qv2ray
|
||||
#endif
|
||||
map<string, string> subscribes;
|
||||
MuxObject mux;
|
||||
Qv2rayConfig(): config_version(QV2RAY_CONFIG_VERSION), runAsRoot(false), logLevel(), proxyDefault(), proxyCN(), withLocalDNS(), inBoundSettings(), configs(), subscribes(), mux() { }
|
||||
Qv2rayConfig(): config_version(QV2RAY_CONFIG_VERSION), runAsRoot(false), logLevel(), proxyDefault(), bypassCN(), withLocalDNS(), inBoundSettings(), configs(), subscribes(), mux() { }
|
||||
Qv2rayConfig(string lang, string exePath, string assetsPath, int log, Qv2rayBasicInboundsConfig _inBoundSettings): Qv2rayConfig()
|
||||
{
|
||||
// These settings below are defaults.
|
||||
@ -113,11 +113,11 @@ namespace Qv2ray
|
||||
dnsList.push_back("8.8.8.8");
|
||||
dnsList.push_back("1.1.1.1");
|
||||
dnsList.push_back("4.4.4.4");
|
||||
proxyCN = false;
|
||||
bypassCN = true;
|
||||
proxyDefault = true;
|
||||
withLocalDNS = true;
|
||||
}
|
||||
XTOSTRUCT(O(config_version, runAsRoot, logLevel, language, autoStartConfig, ignoredVersion, v2CorePath, v2AssetsPath, proxyDefault, proxyCN, withLocalDNS, dnsList, inBoundSettings, mux, configs, subscribes))
|
||||
XTOSTRUCT(O(config_version, runAsRoot, logLevel, language, autoStartConfig, ignoredVersion, v2CorePath, v2AssetsPath, proxyDefault, bypassCN, withLocalDNS, dnsList, inBoundSettings, mux, configs, subscribes))
|
||||
};
|
||||
|
||||
QJsonObject UpgradeConfig(int fromVersion, int toVersion, QJsonObject root);
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
#include "Qv2rayBase.h"
|
||||
|
||||
#define UPGRADELOG(item, old, _new) LOG(MODULE_CONFIG, "Upgrading " item " from old value " + old + " to " + _new);
|
||||
#define XConfLog(oldVersion, newVersion) LOG(MODULE_CONFIG, "Migrating config from version " + oldVersion + " to " + newVersion);
|
||||
|
||||
namespace Qv2ray
|
||||
@ -16,17 +15,28 @@ namespace Qv2ray
|
||||
QJsonObject UpgradeConfig_Inc(int fromVersion, QJsonObject root)
|
||||
{
|
||||
XConfLog(to_string(fromVersion), to_string(fromVersion + 1))
|
||||
//
|
||||
auto v1_oldConfigVersion = root["config_version"].toString();
|
||||
auto v2_oldProxyCN = root["proxyCN"].toBool();
|
||||
|
||||
//
|
||||
switch (fromVersion) {
|
||||
case 1:
|
||||
// From 1 to 2, we changed the config_version from 'string' to 'int'
|
||||
auto old_config_version = root["config_version"].toString();
|
||||
root.remove("config_version");
|
||||
root["config_version"] = 2;
|
||||
UPGRADELOG("config_version", old_config_version.toStdString(), "2")
|
||||
LOG(MODULE_CONFIG, ("Upgrading config_version from old value " + v1_oldConfigVersion.toStdString() + " to 2"))
|
||||
break;
|
||||
|
||||
case 2:
|
||||
// From 2 to 3, we changed the "proxyCN" to "bypassCN" as it's easier to understand....
|
||||
root.remove("proxyCN");
|
||||
root.insert("bypassCN", !v2_oldProxyCN);
|
||||
LOG(MODULE_CONFIG, ("Upgrading proxyCN to bypassCN and changed the value to " + to_string(!v2_oldProxyCN)))
|
||||
break;
|
||||
}
|
||||
|
||||
root.insert("config_version", fromVersion + 1);
|
||||
return root;
|
||||
}
|
||||
|
||||
|
@ -62,6 +62,7 @@ namespace Qv2ray
|
||||
QMap<QString, QJsonObject> GetConnections(list<string> connections);
|
||||
// Startup Prepares
|
||||
int StartPreparation(QJsonObject fullConfig);
|
||||
int FindIndexByTag(QJsonArray list, QString *tag);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -110,5 +110,17 @@ namespace Qv2ray
|
||||
StringToFile(json, new QFile(QV2RAY_GENERATED_FILE_PATH));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int FindIndexByTag(QJsonArray list, QString *tag)
|
||||
{
|
||||
for (int i = 0; i < list.count(); i++) {
|
||||
auto value = list[i].toObject();
|
||||
|
||||
if (value.contains("tag") && value["tag"].toString() == *tag)
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -172,7 +172,7 @@ namespace Qv2ray
|
||||
// We don't add extra routings.
|
||||
// We don't use QV2RAY_CONFIG_TYPE_FILE checking scheme because not all connections have this part.
|
||||
if (!root.contains("routing")) {
|
||||
auto routeObject = GenerateRoutes(gConf.proxyDefault, gConf.proxyCN);
|
||||
auto routeObject = GenerateRoutes(gConf.proxyDefault, gConf.bypassCN);
|
||||
root.insert("routing", routeObject);
|
||||
}
|
||||
|
||||
|
22
src/main.cpp
22
src/main.cpp
@ -81,14 +81,19 @@ bool initQv()
|
||||
auto confVersion = conf["config_version"].toVariant().toString();
|
||||
auto newVersion = QSTRING(to_string(QV2RAY_CONFIG_VERSION));
|
||||
|
||||
if (QString::compare(confVersion, newVersion) != 0) {
|
||||
conf = UpgradeConfig(stoi(conf["config_version"].toString().toStdString()), QV2RAY_CONFIG_VERSION, conf);
|
||||
if (confVersion != newVersion) {
|
||||
conf = UpgradeConfig(stoi(conf["config_version"].toVariant().toString().toStdString()), QV2RAY_CONFIG_VERSION, conf);
|
||||
}
|
||||
|
||||
auto confObject = StructFromJsonString<Qv2rayConfig>(JsonToString(conf));
|
||||
SetGlobalConfig(confObject);
|
||||
SaveGlobalConfig();
|
||||
LOG(MODULE_INIT, "Loaded config file.")
|
||||
try {
|
||||
auto confObject = StructFromJsonString<Qv2rayConfig>(JsonToString(conf));
|
||||
SetGlobalConfig(confObject);
|
||||
SaveGlobalConfig();
|
||||
LOG(MODULE_INIT, "Loaded config file.")
|
||||
} catch (...) {
|
||||
LOG(MODULE_INIT, "FAILED TO LOAD config file. This is an error and should be reported, Qv2ray will now exit.")
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -113,9 +118,12 @@ int main(int argc, char *argv[])
|
||||
#endif
|
||||
//
|
||||
QApplication _qApp(argc, argv);
|
||||
|
||||
//
|
||||
// Qv2ray Initialize
|
||||
initQv();
|
||||
if (!initQv())
|
||||
return -1;
|
||||
|
||||
//
|
||||
#ifdef _WIN32
|
||||
// Set special font in Windows
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
ConnectionEditWindow::ConnectionEditWindow(QWidget *parent)
|
||||
: QDialog(parent),
|
||||
_alias(),
|
||||
Alias(),
|
||||
ui(new Ui::ConnectionEditWindow),
|
||||
stream(),
|
||||
vmess(),
|
||||
@ -27,29 +27,27 @@ ConnectionEditWindow::ConnectionEditWindow(QWidget *parent)
|
||||
ReLoad_GUI_JSON_ModelContent();
|
||||
}
|
||||
|
||||
ConnectionEditWindow::ConnectionEditWindow(QJsonObject editRootObject, QString alias, QWidget *parent)
|
||||
ConnectionEditWindow::ConnectionEditWindow(QJsonObject outboundEntry, QString *alias, QWidget *parent)
|
||||
: ConnectionEditWindow(parent)
|
||||
{
|
||||
_alias = alias;
|
||||
originalRoot = editRootObject;
|
||||
auto outBoundRoot = originalRoot["outbounds"].toArray().first().toObject();
|
||||
OutboundType = outBoundRoot["protocol"].toString();
|
||||
Alias = alias == nullptr ? "" : *alias;
|
||||
OutboundType = outboundEntry["protocol"].toString();
|
||||
|
||||
if (OutboundType == "vmess") {
|
||||
vmess = StructFromJsonString<VMessServerObject>(JsonToString(outBoundRoot["settings"].toObject()["vnext"].toArray().first().toObject()));
|
||||
stream = StructFromJsonString<StreamSettingsObject>(JsonToString(outBoundRoot["streamSettings"].toObject()));
|
||||
vmess = StructFromJsonString<VMessServerObject>(JsonToString(outboundEntry["settings"].toObject()["vnext"].toArray().first().toObject()));
|
||||
stream = StructFromJsonString<StreamSettingsObject>(JsonToString(outboundEntry["streamSettings"].toObject()));
|
||||
shadowsocks.port = vmess.port;
|
||||
shadowsocks.address = vmess.address;
|
||||
socks.address = vmess.address;
|
||||
socks.port = vmess.port;
|
||||
} else if (OutboundType == "shadowsocks") {
|
||||
shadowsocks = StructFromJsonString<ShadowSocksServer>(JsonToString(outBoundRoot["settings"].toObject()["servers"].toArray().first().toObject()));
|
||||
shadowsocks = StructFromJsonString<ShadowSocksServer>(JsonToString(outboundEntry["settings"].toObject()["servers"].toArray().first().toObject()));
|
||||
vmess.address = shadowsocks.address;
|
||||
vmess.port = shadowsocks.port;
|
||||
socks.address = shadowsocks.address;
|
||||
socks.port = shadowsocks.port;
|
||||
} else if (OutboundType == "socks") {
|
||||
socks = StructFromJsonString<SocksServerObject>(JsonToString(outBoundRoot["settings"].toObject()["servers"].toArray().first().toObject()));
|
||||
socks = StructFromJsonString<SocksServerObject>(JsonToString(outboundEntry["settings"].toObject()["servers"].toArray().first().toObject()));
|
||||
vmess.address = socks.address;
|
||||
vmess.port = socks.port;
|
||||
shadowsocks.address = socks.address;
|
||||
@ -139,30 +137,30 @@ void ConnectionEditWindow::ReLoad_GUI_JSON_ModelContent()
|
||||
|
||||
void ConnectionEditWindow::on_buttonBox_accepted()
|
||||
{
|
||||
bool is_new_config = _alias == "";
|
||||
auto alias = is_new_config ? (ui->ipLineEdit->text() + "_" + ui->portLineEdit->text()) : _alias;
|
||||
// TODO : NAMING THE CONNECTION
|
||||
auto alias = Alias == "" ? (ui->ipLineEdit->text() + "_" + ui->portLineEdit->text()) : Alias;
|
||||
//
|
||||
auto outbound = GenerateConnectionJson();
|
||||
QJsonArray outbounds;
|
||||
outbounds.append(outbound);
|
||||
|
||||
// We want to replace because it's connection edit window.
|
||||
if (originalRoot.contains("outbounds")) {
|
||||
originalRoot.remove("outbounds");
|
||||
}
|
||||
|
||||
originalRoot.insert("outbounds", outbounds);
|
||||
originalRoot.insert(QV2RAY_CONFIG_TYPE_JSON_KEY, QV2RAY_CONFIG_TYPE_MANUAL);
|
||||
SaveConnectionConfig(originalRoot, &alias);
|
||||
auto globalConf = GetGlobalConfig();
|
||||
|
||||
if (is_new_config) {
|
||||
// New config...
|
||||
globalConf.configs.push_back(alias.toStdString());
|
||||
}
|
||||
|
||||
SetGlobalConfig(globalConf);
|
||||
emit s_reload_config(!is_new_config);
|
||||
Result = GenerateConnectionJson();
|
||||
//QJsonArray outbounds;
|
||||
//outbounds.append(outbound);
|
||||
//
|
||||
/// We want to replace because it's connection edit window.
|
||||
//if (originalRoot.contains("outbounds")) {
|
||||
// originalRoot.remove("outbounds");
|
||||
//}
|
||||
//
|
||||
//originalRoot.insert("outbounds", outbounds);
|
||||
//originalRoot.insert(QV2RAY_CONFIG_TYPE_JSON_KEY, QV2RAY_CONFIG_TYPE_MANUAL);
|
||||
//SaveConnectionConfig(originalRoot, &alias);
|
||||
//auto globalConf = GetGlobalConfig();
|
||||
//
|
||||
//if (is_new_config) {
|
||||
// // New config...
|
||||
// globalConf.configs.push_back(alias.toStdString());
|
||||
//}
|
||||
//
|
||||
//SetGlobalConfig(globalConf);
|
||||
//emit s_reload_config(!is_new_config);
|
||||
}
|
||||
|
||||
void ConnectionEditWindow::on_ipLineEdit_textEdited(const QString &arg1)
|
||||
|
@ -17,7 +17,9 @@ class ConnectionEditWindow : public QDialog
|
||||
|
||||
public:
|
||||
explicit ConnectionEditWindow(QWidget *parent = nullptr);
|
||||
explicit ConnectionEditWindow(QJsonObject editRootObject, QString alias, QWidget *parent = nullptr);
|
||||
explicit ConnectionEditWindow(QJsonObject editRootObject, QString *alias, QWidget *parent = nullptr);
|
||||
QJsonObject Result;
|
||||
QString Alias;
|
||||
~ConnectionEditWindow();
|
||||
signals:
|
||||
void s_reload_config(bool need_restart);
|
||||
@ -114,10 +116,8 @@ class ConnectionEditWindow : public QDialog
|
||||
|
||||
private:
|
||||
int rootJsonCursorPos;
|
||||
QString _alias;
|
||||
void ReLoad_GUI_JSON_ModelContent();
|
||||
QJsonObject GenerateConnectionJson();
|
||||
QJsonObject originalRoot;
|
||||
Ui::ConnectionEditWindow *ui;
|
||||
//
|
||||
// Connection Configs
|
||||
|
@ -23,7 +23,7 @@
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>#EditConnectionSettings</string>
|
||||
<string>EditConnectionSettings</string>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<bool>true</bool>
|
||||
@ -32,40 +32,82 @@
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout_5">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="ipLabel">
|
||||
<widget class="QLabel" name="portLabel_3">
|
||||
<property name="text">
|
||||
<string>#Host</string>
|
||||
<string>Identifier</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="ipLineEdit"/>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5" stretch="1,4,1,4">
|
||||
<item>
|
||||
<widget class="QLabel" name="ipLabel_2">
|
||||
<property name="text">
|
||||
<string>Alias</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="ipLabel_3">
|
||||
<property name="text">
|
||||
<string>Tag</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit_2"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="portLabel">
|
||||
<widget class="QLabel" name="label_32">
|
||||
<property name="text">
|
||||
<string>#Port</string>
|
||||
<string>Server</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="portLineEdit">
|
||||
<property name="maxLength">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="1,4,1,4">
|
||||
<item>
|
||||
<widget class="QLabel" name="ipLabel">
|
||||
<property name="text">
|
||||
<string>Host</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="ipLineEdit"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="portLabel">
|
||||
<property name="text">
|
||||
<string>Port</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="portLineEdit">
|
||||
<property name="maxLength">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_25">
|
||||
<property name="text">
|
||||
<string>#Outbound</string>
|
||||
<string>Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="outBoundTypeCombo">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@ -92,7 +134,7 @@
|
||||
<item>
|
||||
<widget class="QGroupBox" name="outboundSettingWrapper">
|
||||
<property name="title">
|
||||
<string>#OutBoundSettings</string>
|
||||
<string>OutBoundSettings</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0">
|
||||
@ -113,7 +155,7 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="idLabel">
|
||||
<property name="text">
|
||||
<string>#UUID</string>
|
||||
<string>UUID</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -130,7 +172,7 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="alterLabel">
|
||||
<property name="text">
|
||||
<string>#AlterID</string>
|
||||
<string>Alter ID</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -144,7 +186,7 @@
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="securityLabel">
|
||||
<property name="text">
|
||||
<string>#Security</string>
|
||||
<string>Security</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -181,21 +223,21 @@
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>#UseTLS</string>
|
||||
<string>Use TLS</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="tlsCB">
|
||||
<property name="text">
|
||||
<string>#Enabled</string>
|
||||
<string>Enabled</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="transportLabel">
|
||||
<property name="text">
|
||||
<string>#Transport</string>
|
||||
<string>Transport</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -238,7 +280,7 @@
|
||||
<item>
|
||||
<widget class="QGroupBox" name="transportGroupbox">
|
||||
<property name="title">
|
||||
<string>#TransportSettings</string>
|
||||
<string>TransportSettings</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
@ -257,28 +299,28 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>#Request</string>
|
||||
<string>Request</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="tcpRequestPrettifyBtn">
|
||||
<property name="text">
|
||||
<string>#Prettify</string>
|
||||
<string>Prettify</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>#Response</string>
|
||||
<string>Response</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="tcpRespPrettifyBtn">
|
||||
<property name="text">
|
||||
<string>#Prettify</string>
|
||||
<string>Prettify</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -320,14 +362,14 @@
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="tcpRequestDefBtn">
|
||||
<property name="text">
|
||||
<string>#InsertDefaultContent</string>
|
||||
<string>Default Value</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2" colspan="2">
|
||||
<widget class="QPushButton" name="tcpRespDefBtn">
|
||||
<property name="text">
|
||||
<string>#InsertDefaultContent</string>
|
||||
<string>Default Value</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -336,7 +378,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>#Type</string>
|
||||
<string>Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -363,7 +405,7 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>#Path</string>
|
||||
<string>Path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -373,7 +415,7 @@
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>#Host</string>
|
||||
<string>Host</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -389,7 +431,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>#Path</string>
|
||||
<string>Path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -405,14 +447,14 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_26">
|
||||
<property name="text">
|
||||
<string>#Headers</string>
|
||||
<string>Headers</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="text">
|
||||
<string>#key|value format</string>
|
||||
<string>Format: Key|Value</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -426,7 +468,7 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>#MTU</string>
|
||||
<string>MTU</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -452,7 +494,7 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>#TTI (ms)</string>
|
||||
<string>TTI (ms)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -478,7 +520,7 @@
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>#UplinkCapacity (MB/s)</string>
|
||||
<string>Uplink Capacity (MB/s)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -501,21 +543,21 @@
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="text">
|
||||
<string>#Congestion</string>
|
||||
<string>Congestion</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="kcpCongestionCB">
|
||||
<property name="text">
|
||||
<string>#Enabled</string>
|
||||
<string>Enabled</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>#DownlinkCapacity (MB/s)</string>
|
||||
<string>Downlink Capacity (MB/s)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -538,7 +580,7 @@
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>#ReadBufferSize (MB)</string>
|
||||
<string>Read Buffer Size (MB)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -561,7 +603,7 @@
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="labelx">
|
||||
<property name="text">
|
||||
<string>#WriteBufferSize (MB)</string>
|
||||
<string>Write Buffer Size (MB)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -584,7 +626,7 @@
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="label_16">
|
||||
<property name="text">
|
||||
<string>#Type</string>
|
||||
<string>Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -637,7 +679,7 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string>#Path</string>
|
||||
<string>Path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -657,7 +699,7 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_18">
|
||||
<property name="text">
|
||||
<string>#Security</string>
|
||||
<string>Security</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -689,7 +731,7 @@
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="text">
|
||||
<string>#Key</string>
|
||||
<string>Key</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -703,7 +745,7 @@
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_20">
|
||||
<property name="text">
|
||||
<string>#Headers</string>
|
||||
<string>Headers</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -754,7 +796,7 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_28">
|
||||
<property name="text">
|
||||
<string>#Mark</string>
|
||||
<string>Mark</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -764,21 +806,21 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_29">
|
||||
<property name="text">
|
||||
<string>#TCPFastOpen</string>
|
||||
<string>TCP Fast Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="tcpFastOpenCB">
|
||||
<property name="text">
|
||||
<string>#Enabled</string>
|
||||
<string>Enabled</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_27">
|
||||
<property name="text">
|
||||
<string>#TProxy</string>
|
||||
<string>TProxy</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -815,21 +857,21 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>#Email</string>
|
||||
<string>Email</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_22">
|
||||
<property name="text">
|
||||
<string>#Password</string>
|
||||
<string>Password</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="text">
|
||||
<string>#EncryptionMethod</string>
|
||||
<string>Encryption Method</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -881,7 +923,7 @@
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_24">
|
||||
<property name="text">
|
||||
<string>#Level</string>
|
||||
<string>Level</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -891,14 +933,14 @@
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_30">
|
||||
<property name="text">
|
||||
<string>#OTA</string>
|
||||
<string>OTA</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QCheckBox" name="ss_otaCheckBox">
|
||||
<property name="text">
|
||||
<string>#Enabled</string>
|
||||
<string>Enabled</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -918,7 +960,7 @@
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_31">
|
||||
<property name="text">
|
||||
<string>#Password</string>
|
||||
<string>Password</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -928,7 +970,7 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_21">
|
||||
<property name="text">
|
||||
<string>#Username</string>
|
||||
<string>Username</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -951,10 +993,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>ipLineEdit</tabstop>
|
||||
<tabstop>portLineEdit</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
|
@ -484,8 +484,12 @@ void MainWindow::on_addConfigButton_clicked()
|
||||
ConnectionEditWindow *w = new ConnectionEditWindow(this);
|
||||
connect(w, &ConnectionEditWindow::s_reload_config, this, &MainWindow::save_reload_globalconfig);
|
||||
w->exec();
|
||||
LOG(MODULE_UI, "WARNING:")
|
||||
LOG(MODULE_UI, "THIS FEATURE IS NOT IMPLEMENTED YET!")
|
||||
auto outboundEntry = w->Result;
|
||||
auto alias = w->Alias;
|
||||
delete w;
|
||||
}
|
||||
|
||||
void MainWindow::on_editConfigButton_clicked()
|
||||
{
|
||||
// Check if we have a connection selected...
|
||||
@ -496,11 +500,16 @@ void MainWindow::on_editConfigButton_clicked()
|
||||
return;
|
||||
}
|
||||
|
||||
ConnectionEditWindow *w = new ConnectionEditWindow(connections[ui->connectionListWidget->currentItem()->text()], ui->connectionListWidget->currentItem()->text(), this);
|
||||
connect(w, &ConnectionEditWindow::s_reload_config, this, &MainWindow::save_reload_globalconfig);
|
||||
auto alias = ui->connectionListWidget->currentItem()->text();
|
||||
auto outBoundRoot = connections[ui->connectionListWidget->currentItem()->text()]["outbounds"].toArray().first().toObject();
|
||||
ConnectionEditWindow *w = new ConnectionEditWindow(outBoundRoot, &alias, this);
|
||||
//connect(w, &ConnectionEditWindow::s_reload_config, this, &MainWindow::save_reload_globalconfig);
|
||||
w->exec();
|
||||
auto outboundEntry = w->Result;
|
||||
LOG(MODULE_UI, "WARNING:")
|
||||
LOG(MODULE_UI, "THIS FEATURE IS NOT IMPLEMENTED YET!")
|
||||
delete w;
|
||||
}
|
||||
|
||||
void MainWindow::on_editConfigAdvButton_clicked()
|
||||
{
|
||||
// Check if we have a connection selected...
|
||||
@ -511,6 +520,7 @@ void MainWindow::on_editConfigAdvButton_clicked()
|
||||
return;
|
||||
}
|
||||
|
||||
RouteEditor *w = new RouteEditor(connections[ui->connectionListWidget->currentItem()->text()], ui->connectionListWidget->currentItem()->text(), this);
|
||||
auto alias = ui->connectionListWidget->currentItem()->text();
|
||||
RouteEditor *w = new RouteEditor(connections[ui->connectionListWidget->currentItem()->text()], alias, this);
|
||||
w->exec();
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ PrefrencesWindow::PrefrencesWindow(QWidget *parent) : QDialog(parent),
|
||||
ui->muxEnabledCB->setChecked(CurrentConfig.mux.enabled);
|
||||
ui->muxConcurrencyTxt->setValue(CurrentConfig.mux.concurrency);
|
||||
//
|
||||
ui->proxyCNCb->setChecked(CurrentConfig.proxyCN);
|
||||
ui->bypassCNCb->setChecked(CurrentConfig.bypassCN);
|
||||
ui->proxyDefaultCb->setChecked(CurrentConfig.proxyDefault);
|
||||
ui->localDNSCb->setChecked(CurrentConfig.withLocalDNS);
|
||||
//
|
||||
@ -265,12 +265,6 @@ void PrefrencesWindow::on_socksAuthPasswordTxt_textEdited(const QString &arg1)
|
||||
CurrentConfig.inBoundSettings.socksAccount.pass = arg1.toStdString();
|
||||
}
|
||||
|
||||
void PrefrencesWindow::on_proxyCNCb_stateChanged(int arg1)
|
||||
{
|
||||
NEEDRESTART
|
||||
CurrentConfig.proxyCN = arg1 == Qt::Checked;
|
||||
}
|
||||
|
||||
void PrefrencesWindow::on_proxyDefaultCb_stateChanged(int arg1)
|
||||
{
|
||||
NEEDRESTART
|
||||
@ -339,3 +333,9 @@ void PrefrencesWindow::on_cancelIgnoreVersionBtn_clicked()
|
||||
CurrentConfig.ignoredVersion.clear();
|
||||
ui->cancelIgnoreVersionBtn->setEnabled(false);
|
||||
}
|
||||
|
||||
void PrefrencesWindow::on_bypassCNCb_stateChanged(int arg1)
|
||||
{
|
||||
NEEDRESTART
|
||||
CurrentConfig.bypassCN = arg1 == Qt::Checked;
|
||||
}
|
||||
|
@ -56,8 +56,6 @@ class PrefrencesWindow : public QDialog
|
||||
|
||||
void on_socksAuthPasswordTxt_textEdited(const QString &arg1);
|
||||
|
||||
void on_proxyCNCb_stateChanged(int arg1);
|
||||
|
||||
void on_proxyDefaultCb_stateChanged(int arg1);
|
||||
|
||||
void on_localDNSCb_stateChanged(int arg1);
|
||||
@ -74,6 +72,8 @@ class PrefrencesWindow : public QDialog
|
||||
|
||||
void on_cancelIgnoreVersionBtn_clicked();
|
||||
|
||||
void on_bypassCNCb_stateChanged(int arg1);
|
||||
|
||||
private:
|
||||
bool IsConnectionPropertyChanged = false;
|
||||
bool finishedLoading = false;
|
||||
|
@ -29,7 +29,7 @@
|
||||
<enum>QTabWidget::Rounded</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
@ -425,7 +425,7 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string>Chinese Addresses</string>
|
||||
<string>Bypass Chinese Mainland</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -437,7 +437,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="proxyCNCb">
|
||||
<widget class="QCheckBox" name="bypassCNCb">
|
||||
<property name="text">
|
||||
<string>Enabled</string>
|
||||
</property>
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "w_RouteEditor.h"
|
||||
#include "QvCoreConfigOperations.h"
|
||||
#include "ui_w_RouteEditor.h"
|
||||
#include "w_ConnectionEditWindow.h"
|
||||
|
||||
RouteEditor::RouteEditor(QJsonObject connection, const QString alias, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
@ -15,25 +17,22 @@ RouteEditor::RouteEditor(QJsonObject connection, const QString alias, QWidget *p
|
||||
|
||||
foreach (auto out, outbounds) {
|
||||
bool hasTag = out.toObject().contains("tag");
|
||||
|
||||
if (hasTag) {
|
||||
ui->outboundsList->addItem(out.toObject()["tag"].toString());
|
||||
} else {
|
||||
ui->outboundsList->addItem(out.toObject()["protocol"].toString());
|
||||
}
|
||||
//
|
||||
auto protocol = out.toObject()["protocol"].toString();
|
||||
auto tag = hasTag ? out.toObject()["tag"].toString() : tr("NoTag");
|
||||
//
|
||||
ui->outboundsList->addItem(tag + " (" + protocol + ")");
|
||||
}
|
||||
|
||||
foreach (auto in, inbounds) {
|
||||
bool hasTag = in.toObject().contains("tag");
|
||||
auto inItem = new QListWidgetItem();
|
||||
//
|
||||
auto tag = hasTag ? in.toObject()["tag"].toString() : tr("NoTag");
|
||||
auto protocol = in.toObject()["protocol"].toString();
|
||||
auto port = in.toObject()["port"].toVariant().toString();
|
||||
//
|
||||
auto inItem = new QListWidgetItem(tag + " (" + protocol + ": " + port + ")");
|
||||
inItem->setCheckState(Qt::Unchecked);
|
||||
|
||||
if (hasTag) {
|
||||
inItem->setText(in.toObject()["tag"].toString());
|
||||
} else {
|
||||
inItem->setText(in.toObject()["protocol"].toString());
|
||||
}
|
||||
|
||||
ui->inboundsList->addItem(inItem);
|
||||
}
|
||||
|
||||
@ -65,25 +64,32 @@ void RouteEditor::on_outboundsList_currentRowChanged(int currentRow)
|
||||
{
|
||||
LOG(MODULE_UI, "Outbound selected: " + to_string(currentRow))
|
||||
auto outBoundRoot = outbounds[currentRow].toObject();
|
||||
ui->outboundTagLabel->setText(outBoundRoot.contains("tag") ? outBoundRoot["tag"].toString() : tr("#NoTag"));
|
||||
//
|
||||
auto outboundType = outBoundRoot["protocol"].toString();
|
||||
ui->outboundTagLabel->setText(outBoundRoot.contains("tag") ? outBoundRoot["tag"].toString() : tr("NoTag"));
|
||||
//
|
||||
ui->outboundTypeLabel->setText(outboundType);
|
||||
string serverAddress = "N/A";
|
||||
string serverPort = "N/A";
|
||||
|
||||
if (outboundType == "vmess") {
|
||||
auto x = StructFromJsonString<VMessServerObject>(JsonToString(outBoundRoot["settings"].toObject()["vnext"].toArray().first().toObject()));
|
||||
ui->outboundAddressLabel->setText(QSTRING(x.address));
|
||||
ui->outboundPortLabel->setText(QSTRING(to_string(x.port)));
|
||||
serverAddress = x.address;
|
||||
serverPort = to_string(x.port);
|
||||
} else if (outboundType == "shadowsocks") {
|
||||
auto x = JsonToString(outBoundRoot["settings"].toObject()["servers"].toArray().first().toObject());
|
||||
auto Server = StructFromJsonString<ShadowSocksServer>(x);
|
||||
ui->outboundAddressLabel->setText(QSTRING(Server.address));
|
||||
ui->outboundPortLabel->setText(QSTRING(to_string(Server.port)));
|
||||
serverAddress = Server.address;
|
||||
serverPort = to_string(Server.port);
|
||||
} else if (outboundType == "socks") {
|
||||
auto x = JsonToString(outBoundRoot["settings"].toObject()["servers"].toArray().first().toObject());
|
||||
auto Server = StructFromJsonString<SocksServerObject>(x);
|
||||
ui->outboundAddressLabel->setText(QSTRING(Server.address));
|
||||
ui->outboundPortLabel->setText(QSTRING(to_string(Server.port)));
|
||||
serverAddress = Server.address;
|
||||
serverPort = to_string(Server.port);
|
||||
}
|
||||
|
||||
ui->outboundAddressLabel->setText(QSTRING(serverAddress));
|
||||
ui->outboundPortLabel->setText(QSTRING(serverPort));
|
||||
}
|
||||
|
||||
void RouteEditor::on_inboundsList_currentRowChanged(int currentRow)
|
||||
@ -104,7 +110,8 @@ void RouteEditor::on_routesTable_cellClicked(int row, int column)
|
||||
|
||||
Q_UNUSED(column)
|
||||
auto outboundTag = ui->routesTable->item(row, 2)->text();
|
||||
ui->outboundsList->setCurrentItem(ui->outboundsList->findItems(outboundTag, Qt::MatchExactly).first());
|
||||
int index = FindIndexByTag(outbounds, &outboundTag);
|
||||
ui->outboundsList->setCurrentRow(index);
|
||||
//
|
||||
auto inboundTagList = ui->routesTable->item(row, 0)->text();
|
||||
bool isAnyInbounds = inboundTagList == "Any";
|
||||
@ -117,7 +124,19 @@ void RouteEditor::on_routesTable_cellClicked(int row, int column)
|
||||
auto rulesList = QList<RuleObject>::fromStdList(routes.rules);
|
||||
|
||||
foreach (auto inboundTag, rulesList[row].inboundTag) {
|
||||
ui->inboundsList->findItems(QSTRING(inboundTag), Qt::MatchExactly).first()->setCheckState(Qt::Checked);
|
||||
auto inTag = QSTRING(inboundTag);
|
||||
int index = FindIndexByTag(inbounds, &inTag);
|
||||
ui->inboundsList->item(index)->setCheckState(Qt::Checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RouteEditor::on_editOutboundBtn_clicked()
|
||||
{
|
||||
auto currentOutbound = outbounds[ui->outboundsList->currentRow()].toObject();
|
||||
ConnectionEditWindow *w = new ConnectionEditWindow(currentOutbound, nullptr, this);
|
||||
w->exec();
|
||||
auto result = w->Result;
|
||||
LOG(MODULE_UI, "NOT FINISHED YET")
|
||||
delete w;
|
||||
}
|
||||
|
@ -29,6 +29,8 @@ class RouteEditor : public QDialog
|
||||
|
||||
void on_routesTable_cellClicked(int row, int column);
|
||||
|
||||
void on_editOutboundBtn_clicked();
|
||||
|
||||
private:
|
||||
QJsonArray inbounds;
|
||||
QJsonArray outbounds;
|
||||
|
@ -13,13 +13,13 @@
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="1,2,1">
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1,0">
|
||||
<item row="0" column="1">
|
||||
<layout class="QVBoxLayout" name="routesLayout" stretch="0,1,0,1">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>#Routes</string>
|
||||
<string>Routes List</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -28,19 +28,25 @@
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::SingleSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>#InBounds</string>
|
||||
<string>InBounds</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>#DomainOrIP</string>
|
||||
<string>DomainOrIP</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>#Outbound</string>
|
||||
<string>Outbound</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
@ -85,7 +91,7 @@
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_5">
|
||||
<property name="text">
|
||||
<string>#ChangeIO</string>
|
||||
<string>Change IO</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -107,20 +113,20 @@
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>#RouteDetail</string>
|
||||
<string>Route Information</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>#DomainList</string>
|
||||
<string>Domains</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>#IPList</string>
|
||||
<string>IPs</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -134,7 +140,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>#Inbounds</string>
|
||||
<string>Inbound List</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -168,7 +174,7 @@
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_3">
|
||||
<property name="text">
|
||||
<string>#FromGlobalConfig</string>
|
||||
<string>Add Default</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -177,13 +183,13 @@
|
||||
<item>
|
||||
<widget class="QGroupBox" name="outboundDetailGroup_2">
|
||||
<property name="title">
|
||||
<string>#InboundDetail</string>
|
||||
<string>Inbound Information</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>#Tag</string>
|
||||
<string>Tag</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -197,7 +203,7 @@
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>#Type</string>
|
||||
<string>Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -211,14 +217,14 @@
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>#Address</string>
|
||||
<string>Address</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>#Port</string>
|
||||
<string>Port</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -246,7 +252,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>#Outbounds</string>
|
||||
<string>Outbound List</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -284,7 +290,7 @@
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_4">
|
||||
<property name="text">
|
||||
<string>#AddDirect</string>
|
||||
<string>Insert "Direct"</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -293,13 +299,13 @@
|
||||
<item>
|
||||
<widget class="QGroupBox" name="outboundDetailGroup">
|
||||
<property name="title">
|
||||
<string>#OutboundDetail</string>
|
||||
<string>Outbound Information</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>#Tag</string>
|
||||
<string>Tag</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -326,9 +332,9 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<widget class="QPushButton" name="editOutboundBtn">
|
||||
<property name="text">
|
||||
<string>#EditCurrentOutbound</string>
|
||||
<string>Edit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -350,21 +356,21 @@
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>#Type</string>
|
||||
<string>Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>#Address</string>
|
||||
<string>Address</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>#Port</string>
|
||||
<string>Port</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -407,7 +413,7 @@
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="statusLabel">
|
||||
<property name="text">
|
||||
<string>#Status</string>
|
||||
<string>Status</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -5,12 +5,12 @@
|
||||
<name>ConnectionEditWindow</name>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="26"/>
|
||||
<source>#EditConnectionSettings</source>
|
||||
<source>EditConnectionSettings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="37"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="358"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="376"/>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -21,7 +21,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="61"/>
|
||||
<source>Outbound Type</source>
|
||||
<source>Outbound</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -31,185 +31,180 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="95"/>
|
||||
<source>#OutBoundSettings</source>
|
||||
<source>OutBoundSettings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="116"/>
|
||||
<source>Use TLS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="123"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="495"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="764"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="891"/>
|
||||
<source>#Enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="130"/>
|
||||
<source>UUID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="147"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="133"/>
|
||||
<source>Alter ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="161"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="650"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="147"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="660"/>
|
||||
<source>Security</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="192"/>
|
||||
<source>Transport Method</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="184"/>
|
||||
<source>Use TLS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="191"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="511"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="774"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="901"/>
|
||||
<source>Enabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="198"/>
|
||||
<source>Transport</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="241"/>
|
||||
<source>#TransportSettings</source>
|
||||
<source>TransportSettings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="270"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="575"/>
|
||||
<source>Type</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="279"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="260"/>
|
||||
<source>Request</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="286"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="300"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="267"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="281"/>
|
||||
<source>Prettify</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="293"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="274"/>
|
||||
<source>Response</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="323"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="330"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="337"/>
|
||||
<source>Default</source>
|
||||
<source>Default Value</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="348"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="374"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="630"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="339"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="587"/>
|
||||
<source>Type</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="366"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="392"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="640"/>
|
||||
<source>Path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="390"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="696"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="408"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="706"/>
|
||||
<source>Headers</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="397"/>
|
||||
<source>Format: key|value</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="415"/>
|
||||
<source>Format: Key|Value</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="413"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="429"/>
|
||||
<source>MTU</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="439"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="455"/>
|
||||
<source>TTI (ms)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="465"/>
|
||||
<source>Uplink (MB/s)</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="481"/>
|
||||
<source>Uplink Capacity (MB/s)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="488"/>
|
||||
<source>Congestion Control</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="504"/>
|
||||
<source>Congestion</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="506"/>
|
||||
<source>Downlink (MB/s)</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="518"/>
|
||||
<source>Downlink Capacity (MB/s)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="529"/>
|
||||
<source>Read Buffer (MB)</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="541"/>
|
||||
<source>Read Buffer Size (MB)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="552"/>
|
||||
<source>Write Buffer (MB)</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="564"/>
|
||||
<source>Write Buffer Size (MB)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="682"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="692"/>
|
||||
<source>Key</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="747"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="757"/>
|
||||
<source>Mark</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="757"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="767"/>
|
||||
<source>TCP Fast Open</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="771"/>
|
||||
<source>tProxy</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="781"/>
|
||||
<source>TProxy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="808"/>
|
||||
<source>EMail</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="818"/>
|
||||
<source>Email</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="815"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="911"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="825"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="921"/>
|
||||
<source>Password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="822"/>
|
||||
<source>Encryption</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="874"/>
|
||||
<source>User Level</source>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="832"/>
|
||||
<source>Encryption Method</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="884"/>
|
||||
<source>Level</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="894"/>
|
||||
<source>OTA</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="921"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="931"/>
|
||||
<source>Username</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.ui" line="941"/>
|
||||
<source>Json Preview</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_ConnectionEditWindow.cpp" line="372"/>
|
||||
<location filename="../src/w_ConnectionEditWindow.cpp" line="382"/>
|
||||
@ -332,11 +327,13 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="47"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="40"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="57"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="42"/>
|
||||
<source>Disconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -397,7 +394,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="256"/>
|
||||
<location filename="../src/w_MainWindow.ui" line="346"/>
|
||||
<location filename="../src/w_MainWindow.ui" line="353"/>
|
||||
<source>#ImportConnection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -408,7 +405,6 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="276"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="454"/>
|
||||
<source>#RemoveConnection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -428,7 +424,12 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="319"/>
|
||||
<location filename="../src/w_MainWindow.ui" line="304"/>
|
||||
<source>#</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="326"/>
|
||||
<source>Log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -443,158 +444,163 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="356"/>
|
||||
<location filename="../src/w_MainWindow.ui" line="363"/>
|
||||
<source>#Preferences</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="361"/>
|
||||
<location filename="../src/w_MainWindow.ui" line="368"/>
|
||||
<source>#Start</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="366"/>
|
||||
<location filename="../src/w_MainWindow.ui" line="373"/>
|
||||
<source>#Stop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.ui" line="371"/>
|
||||
<location filename="../src/w_MainWindow.ui" line="378"/>
|
||||
<source>#Restart</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="37"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="282"/>
|
||||
<source>#Hide</source>
|
||||
<location filename="../src/w_MainWindow.cpp" line="38"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="283"/>
|
||||
<source>Hide</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="39"/>
|
||||
<source>#Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="39"/>
|
||||
<source>#Connect</source>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="41"/>
|
||||
<source>#Reconnect</source>
|
||||
<source>Reconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="41"/>
|
||||
<source>#Disconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="43"/>
|
||||
<source>#Rename</source>
|
||||
<location filename="../src/w_MainWindow.cpp" line="44"/>
|
||||
<source>Rename</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="45"/>
|
||||
<source>#ConnectSelected</source>
|
||||
<source>ConnectSelected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="91"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="237"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="285"/>
|
||||
<source>#Show</source>
|
||||
<location filename="../src/w_MainWindow.cpp" line="92"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="238"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="286"/>
|
||||
<source>Show</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="120"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="121"/>
|
||||
<source>#NewReleaseVersionFound</source>
|
||||
<source>NewReleaseVersionFound</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="127"/>
|
||||
<source>#ReleaseDownloadLink</source>
|
||||
<source>ReleaseDownloadLink</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="187"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="494"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="188"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="495"/>
|
||||
<source>NoConfigSelected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="188"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="495"/>
|
||||
<source>PleaseSelectAConfig</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="199"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="200"/>
|
||||
<source>ConnectedToServer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="201"/>
|
||||
<source>Connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="218"/>
|
||||
<source>Disconnected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="324"/>
|
||||
<source>UUID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="326"/>
|
||||
<source>AlterID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="328"/>
|
||||
<source>Transport</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="335"/>
|
||||
<source>Email</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="337"/>
|
||||
<source>Encryption</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="344"/>
|
||||
<source>Username</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="419"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="428"/>
|
||||
<source>RenameConnection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="419"/>
|
||||
<source>CannotUseEmptyName</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="428"/>
|
||||
<source>DuplicatedConnectionName</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="455"/>
|
||||
<source>RemoveConnection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="455"/>
|
||||
<source>RemoveConnectionConfirm</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="510"/>
|
||||
<source>#NoConfigSelected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="187"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="494"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="510"/>
|
||||
<source>#PleaseSelectAConfig</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="198"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="199"/>
|
||||
<source>#ConnectedToServer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="200"/>
|
||||
<source>#Connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="217"/>
|
||||
<source>#Disconnected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="323"/>
|
||||
<source>#UUID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="325"/>
|
||||
<source>#AlterID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="327"/>
|
||||
<source>#Transport</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="334"/>
|
||||
<source>#Email</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="336"/>
|
||||
<source>#Encryption</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="343"/>
|
||||
<source>#Username</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="418"/>
|
||||
<location filename="../src/w_MainWindow.cpp" line="427"/>
|
||||
<source>#RenameConnection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="418"/>
|
||||
<source>#CannotUseEmptyName</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="427"/>
|
||||
<source>#DuplicatedConnectionName</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_MainWindow.cpp" line="454"/>
|
||||
<source>#RemoveConnectionConfirm</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PrefrencesWindow</name>
|
||||
@ -872,17 +878,17 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="153"/>
|
||||
<location filename="../src/main.cpp" line="154"/>
|
||||
<source>DependencyMissing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="153"/>
|
||||
<location filename="../src/main.cpp" line="154"/>
|
||||
<source>osslDependMissing,PleaseReDownload</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/main.cpp" line="162"/>
|
||||
<location filename="../src/main.cpp" line="163"/>
|
||||
<source>#AnotherInstanceRunning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -896,28 +902,106 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="22"/>
|
||||
<source>#Routes</source>
|
||||
<source>Routes List</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="33"/>
|
||||
<source>InBounds</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="38"/>
|
||||
<source>DomainOrIP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="43"/>
|
||||
<source>Outbound</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="88"/>
|
||||
<source>Change IO</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="110"/>
|
||||
<source>Route Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="116"/>
|
||||
<source>Domains</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="123"/>
|
||||
<source>IPs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="137"/>
|
||||
<source>Inbound List</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="171"/>
|
||||
<source>Add Default</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="180"/>
|
||||
<source>Inbound Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="186"/>
|
||||
<location filename="../src/w_RouteEditor.ui" line="302"/>
|
||||
<source>Tag</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="200"/>
|
||||
<location filename="../src/w_RouteEditor.ui" line="353"/>
|
||||
<source>#Type</source>
|
||||
<translation type="unfinished">Type</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="43"/>
|
||||
<source>#Outbound</source>
|
||||
<translation type="unfinished">Outbound Type</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="33"/>
|
||||
<source>#InBounds</source>
|
||||
<source>Type</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="38"/>
|
||||
<source>#DomainOrIP</source>
|
||||
<location filename="../src/w_RouteEditor.ui" line="214"/>
|
||||
<location filename="../src/w_RouteEditor.ui" line="360"/>
|
||||
<source>Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="221"/>
|
||||
<location filename="../src/w_RouteEditor.ui" line="367"/>
|
||||
<source>Port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="249"/>
|
||||
<source>Outbound List</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="287"/>
|
||||
<source>Insert "Direct"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="296"/>
|
||||
<source>Outbound Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="331"/>
|
||||
<source>Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="410"/>
|
||||
<source>Status</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -930,79 +1014,6 @@
|
||||
<source>...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="88"/>
|
||||
<source>#ChangeIO</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="110"/>
|
||||
<source>#RouteDetail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="116"/>
|
||||
<source>#DomainList</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="123"/>
|
||||
<source>#IPList</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="137"/>
|
||||
<source>#Inbounds</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="171"/>
|
||||
<source>#FromGlobalConfig</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="180"/>
|
||||
<source>#InboundDetail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="186"/>
|
||||
<location filename="../src/w_RouteEditor.ui" line="302"/>
|
||||
<source>#Tag</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="89"/>
|
||||
<source>#Type</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="296"/>
|
||||
<source>#OutboundDetail</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="331"/>
|
||||
<source>#EditCurrentOutbound</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="214"/>
|
||||
<location filename="../src/w_RouteEditor.ui" line="360"/>
|
||||
<source>#Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="221"/>
|
||||
<location filename="../src/w_RouteEditor.ui" line="367"/>
|
||||
<source>#Port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.ui" line="410"/>
|
||||
<source>#Status</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/w_RouteEditor.cpp" line="68"/>
|
||||
<location filename="../src/w_RouteEditor.cpp" line="93"/>
|
||||
|
Loading…
Reference in New Issue
Block a user