mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-20 19:00:22 +08:00
parent
98408f7dd4
commit
05ae99eec4
@ -7,7 +7,7 @@ install:
|
|||||||
build_script:
|
build_script:
|
||||||
- mkdir python37 && xcopy C:\Python37 python37 /E /H /Q
|
- mkdir python37 && xcopy C:\Python37 python37 /E /H /Q
|
||||||
- tools\FixPythonWithMinGW.bat
|
- tools\FixPythonWithMinGW.bat
|
||||||
- lrelease.exe Hv2ray.pro
|
- lrelease.exe Qv2ray.pro
|
||||||
- mkdir build && cd build
|
- mkdir build && cd build
|
||||||
- qmake ..\Hv2ray.pro
|
- qmake ..\Qv2ray.pro
|
||||||
- mingw32-make
|
- mingw32-make
|
||||||
|
18
.gitignore
vendored
18
.gitignore
vendored
@ -1,18 +1,6 @@
|
|||||||
Hv2ray.pro.user
|
*.pro.user
|
||||||
conf
|
|
||||||
Debug
|
|
||||||
Release
|
|
||||||
config.json
|
|
||||||
__pycache__/
|
|
||||||
geoip.dat
|
|
||||||
geosite.dat
|
|
||||||
v2ctl
|
|
||||||
v2ray
|
|
||||||
v2ray.sig
|
|
||||||
v2ctl.sig
|
|
||||||
./.vscode
|
|
||||||
*.qm
|
*.qm
|
||||||
build/
|
build/
|
||||||
python37/
|
src/build/
|
||||||
tools/python-3.7.3.exe
|
|
||||||
./.vscode
|
./.vscode
|
||||||
|
tools/python-3.7.3.exe
|
||||||
|
@ -22,7 +22,7 @@ before_script:
|
|||||||
|
|
||||||
script:
|
script:
|
||||||
- git submodule update --init
|
- git submodule update --init
|
||||||
- lrelease ./Hv2ray.pro
|
- lrelease ./Qv2ray.pro
|
||||||
- mkdir build && cd ./build
|
- mkdir build && cd ./build
|
||||||
- QT_SELECT=5 QTDIR=/usr/share/qt5 qmake ../
|
- QT_SELECT=5 QTDIR=/usr/share/qt5 qmake ../
|
||||||
- make
|
- make
|
||||||
|
@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
**2019-07-01**: 休息了几天,主要是去关注别的项目了。现在开始重构 v2ray 交互部分。
|
**2019-07-01**: 休息了几天,主要是去关注别的项目了。现在开始重构 v2ray 交互部分。
|
||||||
|
|
||||||
**2019-06-24**: Mac OS 测试构建完成,合并到开发分支 [dev](https://github.com/lhy0403/Hv2ray/tree/dev)
|
**2019-06-24**: Mac OS 测试构建完成,合并到开发分支 [dev](https://github.com/lhy0403/Qv2ray/tree/dev)
|
||||||
|
|
||||||
**2019-06-24**: 新建分支 MacOS-Build 开始测试 MacOS 构建,当前状态:
|
**2019-06-24**: 新建分支 MacOS-Build 开始测试 MacOS 构建,当前状态:
|
||||||
|
|
||||||
**2019-06-23**: UI 结构已经固定,新建分支 translations 进行翻译 UI
|
**2019-06-23**: UI 结构已经固定,新建分支 translations 进行翻译 UI
|
||||||
|
|
||||||
**2019-06-23**: 基本 UI 完成,切换到 [dev](https://github.com/lhy0403/Hv2ray/tree/dev) 分支进行代码实现
|
**2019-06-23**: 基本 UI 完成,切换到 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) 分支进行代码实现
|
||||||
|
|
||||||
**2019-06-22**: 当前开发分支[ui-implementation](https://github.com/lhy0403/Hv2ray/tree/ui-implementation) - 用于实现基本 UI
|
**2019-06-22**: 当前开发分支[ui-implementation](https://github.com/lhy0403/Qv2ray/tree/ui-implementation) - 用于实现基本 UI
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ QT += core gui
|
|||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
TARGET = Hv2ray
|
TARGET = Qv2ray
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
|
|
||||||
# The following define makes your compiler emit warnings if you use
|
# The following define makes your compiler emit warnings if you use
|
||||||
@ -59,7 +59,7 @@ TRANSLATIONS += \
|
|||||||
translations/zh-CN.ts \
|
translations/zh-CN.ts \
|
||||||
translations/en-US.ts
|
translations/en-US.ts
|
||||||
|
|
||||||
RC_ICONS += ./icons/Hv2ray.ico
|
RC_ICONS += ./icons/Qv2ray.ico
|
||||||
|
|
||||||
INCLUDEPATH += 3rdparty/\
|
INCLUDEPATH += 3rdparty/\
|
||||||
3rdparty/jsoncons/include
|
3rdparty/jsoncons/include
|
17
README.md
17
README.md
@ -1,14 +1,14 @@
|
|||||||
[](https://app.codacy.com/app/lhy0403/Hv2ray?utm_source=github.com&utm_medium=referral&utm_content=lhy0403/Hv2ray&utm_campaign=Badge_Grade_Dashboard)
|
[](https://app.codacy.com/app/lhy0403/Qv2ray?utm_source=github.com&utm_medium=referral&utm_content=lhy0403/Qv2ray&utm_campaign=Badge_Grade_Dashboard)
|
||||||
# Hv2ray [](http://hits.dwyl.io/lhy0403/Hv2ray)
|
# Qv2ray [](http://hits.dwyl.io/lhy0403/Qv2ray)
|
||||||
|
|
||||||
TODO: 使用 Qt 的跨平台 v2ray 客户端,目前仍处于早期开发,多数功能尚未齐全。
|
TODO: 使用 Qt 的跨平台 v2ray 客户端,目前仍处于早期开发,多数功能尚未齐全。
|
||||||
|
|
||||||
[](https://lgtm.com/projects/g/lhy0403/Hv2ray/context:cpp) [](https://lgtm.com/projects/g/lhy0403/Hv2ray/alerts/)
|
[](https://lgtm.com/projects/g/lhy0403/Qv2ray/context:cpp) [](https://lgtm.com/projects/g/lhy0403/Qv2ray/alerts/)
|
||||||
|
|
||||||
| OS | 主分支 [master](https://github.com/lhy0403/Hv2ray/tree/master) | 开发分支 [dev](https://github.com/lhy0403/Hv2ray/tree/dev) |
|
| OS | 主分支 [master](https://github.com/lhy0403/Qv2ray/tree/master) | 开发分支 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) |
|
||||||
| ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
| ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||||
| Linux & MacOS | [](https://travis-ci.com/lhy0403/Hv2ray) | [](https://travis-ci.com/lhy0403/Hv2ray) |
|
| Linux & MacOS | [](https://travis-ci.com/lhy0403/Qv2ray) | [](https://travis-ci.com/lhy0403/Qv2ray) |
|
||||||
| Windows | [](https://ci.appveyor.com/project/lhy0403/hv2ray/branch/master) | [](https://ci.appveyor.com/project/lhy0403/hv2ray/branch/dev) |
|
| Windows | [](https://ci.appveyor.com/project/lhy0403/qv2ray/branch/master) | [](https://ci.appveyor.com/project/lhy0403/qv2ray/branch/dev) |
|
||||||
|
|
||||||
## 最近更新内容
|
## 最近更新内容
|
||||||
|
|
||||||
@ -19,6 +19,7 @@ TODO: 使用 Qt 的跨平台 v2ray 客户端,目前仍处于早期开发,多
|
|||||||
# 鸣谢
|
# 鸣谢
|
||||||
|
|
||||||
[@aliyuchang33](https://github.com/aliyuchang33) - 项目原作者/发起人,感谢他使用 Qt 作为基础框架。
|
[@aliyuchang33](https://github.com/aliyuchang33) - 项目原作者/发起人,感谢他使用 Qt 作为基础框架。
|
||||||
|
|
||||||
- 可惜原项目不更新了qwq
|
- 可惜原项目不更新了qwq
|
||||||
|
|
||||||
|
|
||||||
@ -41,8 +42,8 @@ TODO: 使用 Qt 的跨平台 v2ray 客户端,目前仍处于早期开发,多
|
|||||||
- <span style="color: red">!! 该分支可能不稳定 或 甚至无法正常工作 !!</span>
|
- <span style="color: red">!! 该分支可能不稳定 或 甚至无法正常工作 !!</span>
|
||||||
### Linux
|
### Linux
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/lhy0403/Hv2ray && cd Hv2ray
|
git clone https://github.com/lhy0403/Qv2ray && cd Qv2ray
|
||||||
lrelease ./Hv2ray.pro
|
lrelease ./Qv2ray.pro
|
||||||
mkdir build && cd build
|
mkdir build && cd build
|
||||||
qmake ../
|
qmake ../
|
||||||
make
|
make
|
||||||
|
BIN
icons/Hv2ray.ico
BIN
icons/Hv2ray.ico
Binary file not shown.
Before Width: | Height: | Size: 264 KiB |
BIN
icons/Qv2ray.ico
Normal file
BIN
icons/Qv2ray.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
icons/Qv2ray.xcf
Normal file
BIN
icons/Qv2ray.xcf
Normal file
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file>icons/Hv2ray.ico</file>
|
|
||||||
<file>translations/zh-CN.qm</file>
|
<file>translations/zh-CN.qm</file>
|
||||||
<file>translations/en-US.qm</file>
|
<file>translations/en-US.qm</file>
|
||||||
|
<file>icons/Qv2ray.ico</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@ -7,49 +7,46 @@
|
|||||||
#include "vinteract.hpp"
|
#include "vinteract.hpp"
|
||||||
|
|
||||||
// Macros
|
// Macros
|
||||||
#define HV2RAY_CONFIG_DIR_NAME "/.hv2ray/"
|
#define QV2RAY_CONFIG_DIR_NAME "/.qv2ray/"
|
||||||
using namespace std;
|
using namespace std;
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace HConfigModels
|
namespace QvConfigModels
|
||||||
{
|
{
|
||||||
struct HInbondSetting {
|
struct QvInbondSetting {
|
||||||
bool enabled;
|
bool enabled;
|
||||||
string ip;
|
string ip;
|
||||||
int port;
|
int port;
|
||||||
bool useAuthentication;
|
bool useAuthentication;
|
||||||
string authUsername;
|
string authUsername;
|
||||||
string authPassword;
|
string authPassword;
|
||||||
HInbondSetting(): enabled(), ip(), port(), useAuthentication(), authUsername(), authPassword() {}
|
QvInbondSetting(): enabled(), ip(), port(), useAuthentication(), authUsername(), authPassword() {}
|
||||||
HInbondSetting(bool _e, string _ip, int _p): HInbondSetting()
|
QvInbondSetting(bool _e, string _ip, int _p): QvInbondSetting()
|
||||||
{
|
{
|
||||||
enabled = _e;
|
enabled = _e;
|
||||||
port = _p;
|
port = _p;
|
||||||
ip = _ip;
|
ip = _ip;
|
||||||
}
|
}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(enabled, ip, port, useAuthentication, authUsername, authPassword))
|
XTOSTRUCT(O(enabled, ip, port, useAuthentication, authUsername, authPassword))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HvConfigList {
|
struct QvConfigList {
|
||||||
string alias;
|
string alias;
|
||||||
string fileName;
|
string fileName;
|
||||||
int index;
|
int index;
|
||||||
HvConfigList(): alias(), fileName(), index() {}
|
QvConfigList(): alias(), fileName(), index() {}
|
||||||
XTOSTRUCT(O(alias, fileName, index))
|
XTOSTRUCT(O(alias, fileName, index))
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Hv2Config {
|
struct Qv2Config {
|
||||||
string language;
|
string language;
|
||||||
bool runAsRoot;
|
bool runAsRoot;
|
||||||
string logLevel;
|
string logLevel;
|
||||||
//Hv2ray::V2ConfigModels::MuxObject muxSetting;
|
QvInbondSetting httpSetting;
|
||||||
HInbondSetting httpSetting;
|
QvInbondSetting socksSetting;
|
||||||
HInbondSetting socksSetting;
|
list<QvConfigList> configs;
|
||||||
list<HvConfigList> configs;
|
Qv2Config(): language(), runAsRoot(), logLevel(), httpSetting(), socksSetting(), configs() { }
|
||||||
Hv2Config(): language(), runAsRoot(), logLevel(), httpSetting(), socksSetting(), configs() { }
|
Qv2Config(string lang, string log, QvInbondSetting httpIn, QvInbondSetting socksIN): Qv2Config()
|
||||||
Hv2Config(string lang, string log, HInbondSetting httpIn, HInbondSetting socksIN): Hv2Config()
|
|
||||||
{
|
{
|
||||||
language = lang;
|
language = lang;
|
||||||
logLevel = log;
|
logLevel = log;
|
||||||
@ -57,9 +54,7 @@ namespace Hv2ray
|
|||||||
socksSetting = socksIN;
|
socksSetting = socksIN;
|
||||||
runAsRoot = false;
|
runAsRoot = false;
|
||||||
}
|
}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(language, runAsRoot, logLevel, httpSetting, socksSetting, configs))
|
XTOSTRUCT(O(language, runAsRoot, logLevel, httpSetting, socksSetting, configs))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,10 +62,4 @@ namespace Hv2ray
|
|||||||
/// place at first in main.cpp
|
/// place at first in main.cpp
|
||||||
static QDir ConfigDir;
|
static QDir ConfigDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if USE_TODO_FEATURES
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(Hv2ray::HConfigModels::Hv2Config, language, runAsRoot, logLevel, httpSetting, socksSetting)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(Hv2ray::HConfigModels::HInbondSetting, enabled, ip, port, useAuthentication, authUsername, authPassword)
|
|
||||||
#endif
|
|
||||||
#endif // HCONFIGOBJECTS_HPP
|
#endif // HCONFIGOBJECTS_HPP
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
#include "HUtils.hpp"
|
#include "HUtils.hpp"
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Utils
|
namespace Utils
|
||||||
{
|
{
|
||||||
static HConfigModels::Hv2Config GlobalConfig;
|
static QvConfigModels::Qv2Config GlobalConfig;
|
||||||
void SetGlobalConfig(HConfigModels::Hv2Config conf)
|
void SetGlobalConfig(QvConfigModels::Qv2Config conf)
|
||||||
{
|
{
|
||||||
GlobalConfig = conf;
|
GlobalConfig = conf;
|
||||||
}
|
}
|
||||||
|
|
||||||
HConfigModels::Hv2Config GetGlobalConfig()
|
QvConfigModels::Qv2Config GetGlobalConfig()
|
||||||
{
|
{
|
||||||
return GlobalConfig;
|
return GlobalConfig;
|
||||||
}
|
}
|
||||||
@ -28,11 +28,11 @@ namespace Hv2ray
|
|||||||
|
|
||||||
void LoadConfig(QFile *configFile)
|
void LoadConfig(QFile *configFile)
|
||||||
{
|
{
|
||||||
using namespace Hv2ray::HConfigModels;
|
using namespace Qv2ray::QvConfigModels;
|
||||||
configFile->open(QFile::ReadOnly);
|
configFile->open(QFile::ReadOnly);
|
||||||
QTextStream stream(configFile);
|
QTextStream stream(configFile);
|
||||||
auto str = stream.readAll();
|
auto str = stream.readAll();
|
||||||
auto config = StructFromJSON<Hv2Config>(str.toStdString());
|
auto config = StructFromJSON<Qv2Config>(str.toStdString());
|
||||||
SetGlobalConfig(config);
|
SetGlobalConfig(config);
|
||||||
configFile->close();
|
configFile->close();
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,14 @@
|
|||||||
|
|
||||||
#include "HConfigObjects.hpp"
|
#include "HConfigObjects.hpp"
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Utils
|
namespace Utils
|
||||||
{
|
{
|
||||||
void showWarnMessageBox(QWidget *parent, QString title, QString text);
|
void showWarnMessageBox(QWidget *parent, QString title, QString text);
|
||||||
QTranslator *getTranslator(string lang);
|
QTranslator *getTranslator(string lang);
|
||||||
void SetGlobalConfig(HConfigModels::Hv2Config conf);
|
void SetGlobalConfig(QvConfigModels::Qv2Config conf);
|
||||||
HConfigModels::Hv2Config GetGlobalConfig();
|
QvConfigModels::Qv2Config GetGlobalConfig();
|
||||||
void SaveConfig(QFile *configFile);
|
void SaveConfig(QFile *configFile);
|
||||||
void LoadConfig(QFile *configFile);
|
void LoadConfig(QFile *configFile);
|
||||||
/// Get file list in a Dir
|
/// Get file list in a Dir
|
||||||
|
@ -4,13 +4,8 @@
|
|||||||
// TODO Features
|
// TODO Features
|
||||||
#define USE_TODO_FEATURES false
|
#define USE_TODO_FEATURES false
|
||||||
|
|
||||||
#if USE_TODO_FEATURES
|
|
||||||
#include <jsoncons/json.hpp>
|
|
||||||
using namespace jsoncons;
|
|
||||||
#else
|
|
||||||
#include <x2struct/x2struct.hpp>
|
#include <x2struct/x2struct.hpp>
|
||||||
using namespace x2struct;
|
using namespace x2struct;
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef V2CONFIG_H
|
#ifndef V2CONFIG_H
|
||||||
#define V2CONFIG_H
|
#define V2CONFIG_H
|
||||||
@ -18,7 +13,7 @@ using namespace x2struct;
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
/*------------------------------------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace V2ConfigModels
|
namespace V2ConfigModels
|
||||||
{
|
{
|
||||||
@ -33,18 +28,14 @@ namespace Hv2ray
|
|||||||
string error;
|
string error;
|
||||||
string loglevel;
|
string loglevel;
|
||||||
LogObject(): access(), error(), loglevel() {}
|
LogObject(): access(), error(), loglevel() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(access, error, loglevel))
|
XTOSTRUCT(O(access, error, loglevel))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ApiObject {
|
struct ApiObject {
|
||||||
string tag;
|
string tag;
|
||||||
list<string> services;
|
list<string> services;
|
||||||
ApiObject() : tag(), services() {}
|
ApiObject() : tag(), services() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(tag, services))
|
XTOSTRUCT(O(tag, services))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
namespace DNSObjects
|
namespace DNSObjects
|
||||||
{
|
{
|
||||||
@ -53,9 +44,7 @@ namespace Hv2ray
|
|||||||
int port;
|
int port;
|
||||||
list<string> domains;
|
list<string> domains;
|
||||||
ServerObject(): address(), port(), domains() {}
|
ServerObject(): address(), port(), domains() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(address, port, domains))
|
XTOSTRUCT(O(address, port, domains))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
struct DnsObject {
|
struct DnsObject {
|
||||||
@ -67,9 +56,7 @@ namespace Hv2ray
|
|||||||
list<string> servers;
|
list<string> servers;
|
||||||
#endif
|
#endif
|
||||||
DnsObject(): hosts(), servers() {}
|
DnsObject(): hosts(), servers() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(hosts, servers))
|
XTOSTRUCT(O(hosts, servers))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
namespace ROUTINGObjects
|
namespace ROUTINGObjects
|
||||||
{
|
{
|
||||||
@ -85,17 +72,13 @@ namespace Hv2ray
|
|||||||
string protocol;
|
string protocol;
|
||||||
string attrs;
|
string attrs;
|
||||||
RuleObject() : type(), domain(), ip(), port(), network(), source(), user(), inboundTag(), protocol(), attrs() {}
|
RuleObject() : type(), domain(), ip(), port(), network(), source(), user(), inboundTag(), protocol(), attrs() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(type, domain, ip, port, network, source, user, inboundTag, protocol, attrs))
|
XTOSTRUCT(O(type, domain, ip, port, network, source, user, inboundTag, protocol, attrs))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
struct BalancerObject {
|
struct BalancerObject {
|
||||||
string tag ;
|
string tag ;
|
||||||
list<string> selector;
|
list<string> selector;
|
||||||
BalancerObject() : tag(), selector() {}
|
BalancerObject() : tag(), selector() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(tag, selector))
|
XTOSTRUCT(O(tag, selector))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,9 +87,7 @@ namespace Hv2ray
|
|||||||
list<ROUTINGObjects::RuleObject> rules;
|
list<ROUTINGObjects::RuleObject> rules;
|
||||||
list<ROUTINGObjects::BalancerObject> balancers;
|
list<ROUTINGObjects::BalancerObject> balancers;
|
||||||
RoutingObject() : domainStrategy(), rules(), balancers() {}
|
RoutingObject() : domainStrategy(), rules(), balancers() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(domainStrategy, rules, balancers))
|
XTOSTRUCT(O(domainStrategy, rules, balancers))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
namespace POLICYObjects
|
namespace POLICYObjects
|
||||||
{
|
{
|
||||||
@ -114,9 +95,7 @@ namespace Hv2ray
|
|||||||
bool statsInboundUplink;
|
bool statsInboundUplink;
|
||||||
bool statsInboundDownlink;
|
bool statsInboundDownlink;
|
||||||
SystemPolicyObject() : statsInboundUplink(), statsInboundDownlink() {}
|
SystemPolicyObject() : statsInboundUplink(), statsInboundDownlink() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(statsInboundUplink, statsInboundDownlink))
|
XTOSTRUCT(O(statsInboundUplink, statsInboundDownlink))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LevelPolicyObject {
|
struct LevelPolicyObject {
|
||||||
@ -128,18 +107,14 @@ namespace Hv2ray
|
|||||||
bool statsUserDownlink;
|
bool statsUserDownlink;
|
||||||
int bufferSize;
|
int bufferSize;
|
||||||
LevelPolicyObject(): handshake(), connIdle(), uplinkOnly(), downlinkOnly(), statsUserUplink(), statsUserDownlink(), bufferSize() {}
|
LevelPolicyObject(): handshake(), connIdle(), uplinkOnly(), downlinkOnly(), statsUserUplink(), statsUserDownlink(), bufferSize() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(handshake, connIdle, uplinkOnly, downlinkOnly, statsUserUplink, statsUserDownlink, bufferSize))
|
XTOSTRUCT(O(handshake, connIdle, uplinkOnly, downlinkOnly, statsUserUplink, statsUserDownlink, bufferSize))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
struct PolicyObject {
|
struct PolicyObject {
|
||||||
map<int, POLICYObjects::LevelPolicyObject> level;
|
map<int, POLICYObjects::LevelPolicyObject> level;
|
||||||
list<POLICYObjects::SystemPolicyObject> system;
|
list<POLICYObjects::SystemPolicyObject> system;
|
||||||
PolicyObject(): level(), system() {}
|
PolicyObject(): level(), system() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(level, system))
|
XTOSTRUCT(O(level, system))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
namespace TRANSFERObjects
|
namespace TRANSFERObjects
|
||||||
{
|
{
|
||||||
@ -152,9 +127,7 @@ namespace Hv2ray
|
|||||||
list<string> path;
|
list<string> path;
|
||||||
map<string, list<string>> headers;
|
map<string, list<string>> headers;
|
||||||
HTTPRequestObject(): version(), method(), path(), headers() {}
|
HTTPRequestObject(): version(), method(), path(), headers() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(version, method, path, headers))
|
XTOSTRUCT(O(version, method, path, headers))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HTTPResponseObject {
|
struct HTTPResponseObject {
|
||||||
@ -163,18 +136,14 @@ namespace Hv2ray
|
|||||||
string reason;
|
string reason;
|
||||||
map<string, list<string>> headers;
|
map<string, list<string>> headers;
|
||||||
HTTPResponseObject(): version(), status(), reason(), headers() {}
|
HTTPResponseObject(): version(), status(), reason(), headers() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(version, status, reason, headers))
|
XTOSTRUCT(O(version, status, reason, headers))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
struct TCPHeader_M_Object {
|
struct TCPHeader_M_Object {
|
||||||
string type;
|
string type;
|
||||||
HTTPRequestObject request;
|
HTTPRequestObject request;
|
||||||
HTTPResponseObject response;
|
HTTPResponseObject response;
|
||||||
TCPHeader_M_Object(): type(), request(), response() {}
|
TCPHeader_M_Object(): type(), request(), response() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(type, request, response))
|
XTOSTRUCT(O(type, request, response))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
struct HeaderObject {
|
struct HeaderObject {
|
||||||
string type;
|
string type;
|
||||||
@ -189,9 +158,7 @@ namespace Hv2ray
|
|||||||
struct TCPObject {
|
struct TCPObject {
|
||||||
TRANSFERObjectsInternal:: TCPHeader_M_Object header;
|
TRANSFERObjectsInternal:: TCPHeader_M_Object header;
|
||||||
TCPObject(): header() {}
|
TCPObject(): header() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(header))
|
XTOSTRUCT(O(header))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -205,9 +172,7 @@ namespace Hv2ray
|
|||||||
int writeBufferSize;
|
int writeBufferSize;
|
||||||
TRANSFERObjectsInternal:: HeaderObject header;
|
TRANSFERObjectsInternal:: HeaderObject header;
|
||||||
KCPObject(): mtu(), tti(), uplinkCapacity(), downlinkCapacity(), congestion(), readBufferSize(), writeBufferSize(), header() {}
|
KCPObject(): mtu(), tti(), uplinkCapacity(), downlinkCapacity(), congestion(), readBufferSize(), writeBufferSize(), header() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(mtu, tti, uplinkCapacity, downlinkCapacity, congestion, readBufferSize, writeBufferSize, header))
|
XTOSTRUCT(O(mtu, tti, uplinkCapacity, downlinkCapacity, congestion, readBufferSize, writeBufferSize, header))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -215,26 +180,20 @@ namespace Hv2ray
|
|||||||
string path;
|
string path;
|
||||||
map<string, string> headers;
|
map<string, string> headers;
|
||||||
WebSocketObject(): path(), headers() {}
|
WebSocketObject(): path(), headers() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(path, headers))
|
XTOSTRUCT(O(path, headers))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HttpObject {
|
struct HttpObject {
|
||||||
list<string> host;
|
list<string> host;
|
||||||
string path;
|
string path;
|
||||||
HttpObject() : host(), path() {}
|
HttpObject() : host(), path() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(host, path))
|
XTOSTRUCT(O(host, path))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DomainSocketObject {
|
struct DomainSocketObject {
|
||||||
string path;
|
string path;
|
||||||
DomainSocketObject(): path() {}
|
DomainSocketObject(): path() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(path))
|
XTOSTRUCT(O(path))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QuicObject {
|
struct QuicObject {
|
||||||
@ -242,9 +201,7 @@ namespace Hv2ray
|
|||||||
string key;
|
string key;
|
||||||
TRANSFERObjectsInternal::HeaderObject header;
|
TRANSFERObjectsInternal::HeaderObject header;
|
||||||
QuicObject(): security(), key(), header() {}
|
QuicObject(): security(), key(), header() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(security, key, header))
|
XTOSTRUCT(O(security, key, header))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -257,9 +214,7 @@ namespace Hv2ray
|
|||||||
TRANSFERObjects::DomainSocketObject dsSettings;
|
TRANSFERObjects::DomainSocketObject dsSettings;
|
||||||
TRANSFERObjects::QuicObject quicSettings;
|
TRANSFERObjects::QuicObject quicSettings;
|
||||||
TransportObject(): tcpSettings(), kcpSettings(), wsSettings(), httpSettings(), dsSettings(), quicSettings() {}
|
TransportObject(): tcpSettings(), kcpSettings(), wsSettings(), httpSettings(), dsSettings(), quicSettings() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(tcpSettings, kcpSettings, wsSettings, httpSettings, dsSettings, quicSettings))
|
XTOSTRUCT(O(tcpSettings, kcpSettings, wsSettings, httpSettings, dsSettings, quicSettings))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
namespace INBOUNDObjects
|
namespace INBOUNDObjects
|
||||||
{
|
{
|
||||||
@ -268,9 +223,7 @@ namespace Hv2ray
|
|||||||
bool enabled;
|
bool enabled;
|
||||||
string destOverride;
|
string destOverride;
|
||||||
SniffingObject(): enabled(), destOverride() {}
|
SniffingObject(): enabled(), destOverride() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(enabled, destOverride))
|
XTOSTRUCT(O(enabled, destOverride))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AllocateObject {
|
struct AllocateObject {
|
||||||
@ -278,9 +231,7 @@ namespace Hv2ray
|
|||||||
int refresh;
|
int refresh;
|
||||||
int concurrency;
|
int concurrency;
|
||||||
AllocateObject(): strategy(), refresh(), concurrency() {}
|
AllocateObject(): strategy(), refresh(), concurrency() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(strategy, refresh, concurrency))
|
XTOSTRUCT(O(strategy, refresh, concurrency))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
namespace STREAMSETTINGSObjects
|
namespace STREAMSETTINGSObjects
|
||||||
@ -290,9 +241,7 @@ namespace Hv2ray
|
|||||||
bool tcpFastOpen;
|
bool tcpFastOpen;
|
||||||
string tproxy;
|
string tproxy;
|
||||||
SockoptObject(): mark(), tcpFastOpen(), tproxy() {}
|
SockoptObject(): mark(), tcpFastOpen(), tproxy() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(mark, tcpFastOpen, tproxy))
|
XTOSTRUCT(O(mark, tcpFastOpen, tproxy))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CertificateObject {
|
struct CertificateObject {
|
||||||
@ -302,9 +251,7 @@ namespace Hv2ray
|
|||||||
list<string> certificate;
|
list<string> certificate;
|
||||||
list<string> key;
|
list<string> key;
|
||||||
CertificateObject(): usage(), certificateFile(), keyFile(), certificate(), key() {}
|
CertificateObject(): usage(), certificateFile(), keyFile(), certificate(), key() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(usage, certificateFile, keyFile, certificate, key))
|
XTOSTRUCT(O(usage, certificateFile, keyFile, certificate, key))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TLSObject {
|
struct TLSObject {
|
||||||
@ -314,9 +261,7 @@ namespace Hv2ray
|
|||||||
list<CertificateObject> certificates;
|
list<CertificateObject> certificates;
|
||||||
bool disableSystemRoot;
|
bool disableSystemRoot;
|
||||||
TLSObject(): serverName(), allowInsecure(), certificates(), disableSystemRoot() {}
|
TLSObject(): serverName(), allowInsecure(), certificates(), disableSystemRoot() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(serverName, allowInsecure, alpn, certificates, disableSystemRoot))
|
XTOSTRUCT(O(serverName, allowInsecure, alpn, certificates, disableSystemRoot))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,9 +277,7 @@ namespace Hv2ray
|
|||||||
TRANSFERObjects::DomainSocketObject dsSettings;
|
TRANSFERObjects::DomainSocketObject dsSettings;
|
||||||
TRANSFERObjects::QuicObject quicSettings;
|
TRANSFERObjects::QuicObject quicSettings;
|
||||||
StreamSettingsObject(): network(), security(), sockopt(), tlsSettings(), tcpSettings(), kcpSettings(), wsSettings(), httpSettings(), dsSettings(), quicSettings() {}
|
StreamSettingsObject(): network(), security(), sockopt(), tlsSettings(), tcpSettings(), kcpSettings(), wsSettings(), httpSettings(), dsSettings(), quicSettings() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(network, security, sockopt, tcpSettings, tlsSettings, kcpSettings, wsSettings, httpSettings, dsSettings, quicSettings))
|
XTOSTRUCT(O(network, security, sockopt, tcpSettings, tlsSettings, kcpSettings, wsSettings, httpSettings, dsSettings, quicSettings))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename XINBOUNDSETTINGOBJECT>
|
template<typename XINBOUNDSETTINGOBJECT>
|
||||||
@ -349,9 +292,7 @@ namespace Hv2ray
|
|||||||
INBOUNDObjects::SniffingObject sniffing;
|
INBOUNDObjects::SniffingObject sniffing;
|
||||||
INBOUNDObjects::AllocateObject allocate;
|
INBOUNDObjects::AllocateObject allocate;
|
||||||
InboundObject(): port(), listen(), protocol(), settings(), streamSettings(), tag(), sniffing(), allocate() {}
|
InboundObject(): port(), listen(), protocol(), settings(), streamSettings(), tag(), sniffing(), allocate() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(port, listen, protocol, settings, streamSettings, tag, sniffing, allocate))
|
XTOSTRUCT(O(port, listen, protocol, settings, streamSettings, tag, sniffing, allocate))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
namespace OUTBOUNDObjects
|
namespace OUTBOUNDObjects
|
||||||
{
|
{
|
||||||
@ -359,18 +300,14 @@ namespace Hv2ray
|
|||||||
struct ProxySettingsObject {
|
struct ProxySettingsObject {
|
||||||
string tag;
|
string tag;
|
||||||
ProxySettingsObject(): tag() {}
|
ProxySettingsObject(): tag() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(tag))
|
XTOSTRUCT(O(tag))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MuxObject {
|
struct MuxObject {
|
||||||
bool enabled;
|
bool enabled;
|
||||||
int concurrency;
|
int concurrency;
|
||||||
MuxObject(): enabled(), concurrency() {}
|
MuxObject(): enabled(), concurrency() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(enabled, concurrency))
|
XTOSTRUCT(O(enabled, concurrency))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
template <typename XOUTBOUNDSETTINGOBJECT>
|
template <typename XOUTBOUNDSETTINGOBJECT>
|
||||||
@ -384,17 +321,13 @@ namespace Hv2ray
|
|||||||
OUTBOUNDObjects::ProxySettingsObject proxySettings;
|
OUTBOUNDObjects::ProxySettingsObject proxySettings;
|
||||||
OUTBOUNDObjects::MuxObject mux;
|
OUTBOUNDObjects::MuxObject mux;
|
||||||
OutboundObject(): sendThrough(), protocol(), settings(), tag(), streamSettings(), proxySettings(), mux() {}
|
OutboundObject(): sendThrough(), protocol(), settings(), tag(), streamSettings(), proxySettings(), mux() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(sendThrough, protocol, settings, tag, streamSettings, proxySettings, mux))
|
XTOSTRUCT(O(sendThrough, protocol, settings, tag, streamSettings, proxySettings, mux))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StatsObject {
|
struct StatsObject {
|
||||||
bool _; // Placeholder...
|
bool _; // Placeholder...
|
||||||
StatsObject(): _() {}
|
StatsObject(): _() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(_))
|
XTOSTRUCT(O(_))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
namespace REVERSEObjects
|
namespace REVERSEObjects
|
||||||
{
|
{
|
||||||
@ -403,18 +336,14 @@ namespace Hv2ray
|
|||||||
string tag;
|
string tag;
|
||||||
string domain;
|
string domain;
|
||||||
BridgeObject() : tag(), domain() {}
|
BridgeObject() : tag(), domain() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(tag, domain))
|
XTOSTRUCT(O(tag, domain))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PortalObject {
|
struct PortalObject {
|
||||||
string tag;
|
string tag;
|
||||||
string domain;
|
string domain;
|
||||||
PortalObject() : tag(), domain() {}
|
PortalObject() : tag(), domain() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(tag, domain))
|
XTOSTRUCT(O(tag, domain))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -422,9 +351,7 @@ namespace Hv2ray
|
|||||||
list<REVERSEObjects::BridgeObject> bridges;
|
list<REVERSEObjects::BridgeObject> bridges;
|
||||||
list<REVERSEObjects::PortalObject> portals;
|
list<REVERSEObjects::PortalObject> portals;
|
||||||
ReverseObject() : bridges(), portals() {}
|
ReverseObject() : bridges(), portals() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(bridges, portals))
|
XTOSTRUCT(O(bridges, portals))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
#if USE_TODO_FEATURES
|
#if USE_TODO_FEATURES
|
||||||
template<typename XIN1, typename XIN2, typename XIN3, typename XIN4, typename XIN5, typename XOUT1, typename XOUT2, typename XOUT3, typename XOUT4, typename XOUT5>
|
template<typename XIN1, typename XIN2, typename XIN3, typename XIN4, typename XIN5, typename XOUT1, typename XOUT2, typename XOUT3, typename XOUT4, typename XOUT5>
|
||||||
@ -449,14 +376,12 @@ namespace Hv2ray
|
|||||||
ReverseObject reverse;
|
ReverseObject reverse;
|
||||||
PolicyObject policy;
|
PolicyObject policy;
|
||||||
RootObject(): log(), api(), dns(), routing(), inbounds(), outbounds(), transport(), stats(), reverse(), policy() {}
|
RootObject(): log(), api(), dns(), routing(), inbounds(), outbounds(), transport(), stats(), reverse(), policy() {}
|
||||||
#if USE_TODO_FEATURES == false
|
|
||||||
XTOSTRUCT(O(log, api, dns, routing, inbounds, outbounds, transport, stats, reverse, policy))
|
XTOSTRUCT(O(log, api, dns, routing, inbounds, outbounds, transport, stats, reverse, policy))
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace V2ConfigModels
|
namespace V2ConfigModels
|
||||||
{
|
{
|
||||||
@ -572,61 +497,8 @@ namespace Hv2ray
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if USE_TODO_FEATURES
|
|
||||||
using namespace Hv2ray;
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::LogObject, access, error, loglevel)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::ApiObject, tag, services)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::DNSObjects::ServerObject, address, port, domains)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::DnsObject, hosts, servers)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::ROUTINGObjects::RuleObject, type, domain, ip, port, network, source, user, inboundTag, protocol, attrs)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::ROUTINGObjects::BalancerObject, tag, selector)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::RoutingObject, domainStrategy, rules, balancers)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::POLICYObjects::SystemPolicyObject, statsInboundUplink, statsInboundDownlink)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::POLICYObjects::LevelPolicyObject, handshake, connIdle, uplinkOnly, downlinkOnly, statsUserUplink, statsUserDownlink, bufferSize)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::PolicyObject, level, system)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::TRANSFERObjectsInternal::HTTPRequestObject, version, method, path, headers)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::TRANSFERObjectsInternal::HTTPResponseObject, version, status, reason, headers)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::TRANSFERObjectsInternal::TCPHeader_M_Object, type, request, response)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::TRANSFERObjectsInternal::HeaderObject, type)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::TCPObject, header)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::KCPObject, mtu, tti, uplinkCapacity, downlinkCapacity, congestion, readBufferSize, writeBufferSize, header)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::WebSocketObject, path, headers)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::HttpObject, host, path)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::DomainSocketObject, path)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TRANSFERObjects::QuicObject, security, key, header)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::TransportObject, tcpSettings, kcpSettings, wsSettings, httpSettings, dsSettings, quicSettings)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::INBOUNDObjects::SniffingObject, enabled, destOverride)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::INBOUNDObjects::AllocateObject, strategy, refresh, concurrency)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::OUTBOUNDObjects::ProxySettingsObject, tag)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::OUTBOUNDObjects::MuxObject, enabled, concurrency)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::REVERSEObjects::BridgeObject, tag, domain)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::REVERSEObjects::PortalObject, tag, domain)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::ReverseObject, bridges, portals)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::StatsObject, _)
|
|
||||||
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::StreamSettingsObject, tcpSettings, kcpSettings, wsSettings, httpSettings, dsSettings, quicSettings, tlsSettings, sockopt, network, security)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::STREAMSETTINGSObjects::TLSObject, serverName, allowInsecure, alpn, certificates, disableSystemRoot)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::STREAMSETTINGSObjects::CertificateObject, usage, certificateFile, keyFile, certificate, key)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::STREAMSETTINGSObjects::SockoptObject, mark, tcpFastOpen, tproxy)
|
|
||||||
|
|
||||||
// These 3 are used as templates.
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::RootObject, log, api, dns, routing, inbounds, outbounds, transport, stats, reverse, policy)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::InboundObject, port, listen, protocol, settings, streamSettings, tag, sniffing, allocate)
|
|
||||||
JSONCONS_MEMBER_TRAITS_DECL(V2ConfigModels::OutboundObject, sendThrough, protocol, settings, tag, streamSettings, proxySettings, mux)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// Code above has passed these tests.
|
/// Code above has passed these tests.
|
||||||
//using namespace Hv2ray::V2ConfigModels;
|
//using namespace Qv2ray::V2ConfigModels;
|
||||||
//RootObject<Protocols::HTTP, Protocols::VMess> x;
|
//RootObject<Protocols::HTTP, Protocols::VMess> x;
|
||||||
//InboundObject<Protocols::HTTP> inH;
|
//InboundObject<Protocols::HTTP> inH;
|
||||||
//x.inbounds.insert(x.inbounds.end(), inH);
|
//x.inbounds.insert(x.inbounds.end(), inH);
|
||||||
|
30
src/main.cpp
30
src/main.cpp
@ -10,24 +10,24 @@
|
|||||||
#include "w_MainWindow.h"
|
#include "w_MainWindow.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace Hv2ray;
|
using namespace Qv2ray;
|
||||||
using namespace Hv2ray::Utils;
|
using namespace Qv2ray::Utils;
|
||||||
using namespace Hv2ray::HConfigModels;
|
using namespace Qv2ray::QvConfigModels;
|
||||||
|
|
||||||
bool initializeHv()
|
bool initializeHv()
|
||||||
{
|
{
|
||||||
/// Hv2ray Config Path and ends with "/"
|
/// Qv2ray Config Path and ends with "/"
|
||||||
QString configPath = "";
|
QString configPath = "";
|
||||||
#if defined(__WIN32) || defined(__APPLE__)
|
#if defined(__WIN32) || defined(__APPLE__)
|
||||||
// For Windows and MacOS, there's no such 'installation' of a software
|
// For Windows and MacOS, there's no such 'installation' of a software
|
||||||
// package, So as what ShadowSocks and v2rayX does, save config files next to
|
// package, So as what ShadowSocks and v2rayX does, save config files next to
|
||||||
// the executable.
|
// the executable.
|
||||||
configPath = HV2RAY_CONFIG_DIR_NAME;
|
configPath = QV2RAY_CONFIG_DIR_NAME;
|
||||||
#else
|
#else
|
||||||
// However, for linux, this software can be and/or will be provided as a
|
// However, for linux, this software can be and/or will be provided as a
|
||||||
// package and install to whatever /usr/bin or /usr/local/bin or even /opt/
|
// package and install to whatever /usr/bin or /usr/local/bin or even /opt/
|
||||||
// Thus we save config files in the user's home directory.
|
// Thus we save config files in the user's home directory.
|
||||||
configPath = QDir::homePath() + HV2RAY_CONFIG_DIR_NAME;
|
configPath = QDir::homePath() + QV2RAY_CONFIG_DIR_NAME;
|
||||||
#endif
|
#endif
|
||||||
ConfigDir = QDir(configPath);
|
ConfigDir = QDir(configPath);
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ bool initializeHv()
|
|||||||
auto result = QDir().mkdir(configPath);
|
auto result = QDir().mkdir(configPath);
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
qDebug() << "Created hv2ray config file path at: " + configPath;
|
qDebug() << "Created Qv2ray config file path at: " + configPath;
|
||||||
} else {
|
} else {
|
||||||
// We cannot continue as it failed to create a dir.
|
// We cannot continue as it failed to create a dir.
|
||||||
qDebug() << "Failed to create config file folder under " + configPath;
|
qDebug() << "Failed to create config file folder under " + configPath;
|
||||||
@ -43,14 +43,14 @@ bool initializeHv()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QFile configFile(configPath + "hv2ray.conf");
|
QFile configFile(configPath + "Qv2ray.conf");
|
||||||
|
|
||||||
if (!Utils::hasFile(&ConfigDir, ".initialised")) {
|
if (!Utils::hasFile(&ConfigDir, ".initialised")) {
|
||||||
// This is first run!
|
// This is first run!
|
||||||
// These below genenrated very basic global config.
|
// These below genenrated very basic global config.
|
||||||
HInbondSetting inHttp = HInbondSetting(true, "127.0.0.1", 8080);
|
QvInbondSetting inHttp = QvInbondSetting(true, "127.0.0.1", 8080);
|
||||||
HInbondSetting inSocks = HInbondSetting(true, "127.0.0.1", 1080);
|
QvInbondSetting inSocks = QvInbondSetting(true, "127.0.0.1", 1080);
|
||||||
Hv2Config conf = Hv2Config("zh-CN", "info", inHttp, inSocks);
|
Qv2Config conf = Qv2Config("zh-CN", "info", inHttp, inSocks);
|
||||||
SetGlobalConfig(conf);
|
SetGlobalConfig(conf);
|
||||||
SaveConfig(&configFile);
|
SaveConfig(&configFile);
|
||||||
// Create Placeholder for initialise indicator.
|
// Create Placeholder for initialise indicator.
|
||||||
@ -67,17 +67,17 @@ bool initializeHv()
|
|||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication _qApp(argc, argv);
|
QApplication _qApp(argc, argv);
|
||||||
RunGuard guard("Hv2ray-Instance-Identifier");
|
RunGuard guard("Qv2ray-Instance-Identifier");
|
||||||
|
|
||||||
if (!guard.isSingleInstance()) {
|
if (!guard.isSingleInstance()) {
|
||||||
Utils::showWarnMessageBox(nullptr, QObject::tr("Hv2Ray"), QObject::tr("AnotherInstanceRunning"));
|
Utils::showWarnMessageBox(nullptr, QObject::tr("Qv2ray"), QObject::tr("AnotherInstanceRunning"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set file startup path as Path
|
// Set file startup path as Path
|
||||||
// WARNING: This may be changed in the future.
|
// WARNING: This may be changed in the future.
|
||||||
QDir::setCurrent(QFileInfo(QCoreApplication::applicationFilePath()).path());
|
QDir::setCurrent(QFileInfo(QCoreApplication::applicationFilePath()).path());
|
||||||
// Hv2ray Initialize
|
// Qv2ray Initialize
|
||||||
initializeHv();
|
initializeHv();
|
||||||
|
|
||||||
if (_qApp.installTranslator(getTranslator(GetGlobalConfig().language))) {
|
if (_qApp.installTranslator(getTranslator(GetGlobalConfig().language))) {
|
||||||
@ -92,7 +92,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show MainWindow
|
// Show MainWindow
|
||||||
Ui::MainWindow w;
|
Ui_Impl::MainWindow w;
|
||||||
w.show();
|
w.show();
|
||||||
return _qApp.exec();
|
return _qApp.exec();
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include <QCryptographicHash>
|
#include <QCryptographicHash>
|
||||||
|
|
||||||
#include "runguard.hpp"
|
#include "runguard.hpp"
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
|
|
||||||
//from https://stackoverflow.com/a/28172162
|
//from https://stackoverflow.com/a/28172162
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include <QSharedMemory>
|
#include <QSharedMemory>
|
||||||
#include <QSystemSemaphore>
|
#include <QSystemSemaphore>
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
// From https://stackoverflow.com/a/28172162
|
// From https://stackoverflow.com/a/28172162
|
||||||
class RunGuard
|
class RunGuard
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include "vinteract.hpp"
|
#include "vinteract.hpp"
|
||||||
#include "w_MainWindow.h"
|
#include "w_MainWindow.h"
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
bool v2Instance::checkConfigFile(const QString path)
|
bool v2Instance::checkConfigFile(const QString path)
|
||||||
{
|
{
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
enum V2RAY_INSTANCE_STARTUP_STATUS {
|
enum V2RAY_INSTANCE_STARTUP_STATUS {
|
||||||
STOPPED,
|
STOPPED,
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
#include <QIntValidator>
|
#include <QIntValidator>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
ConnectionEditWindow::ConnectionEditWindow(QWidget *parent)
|
ConnectionEditWindow::ConnectionEditWindow(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include "ui_w_ConnectionEditWindow.h"
|
#include "ui_w_ConnectionEditWindow.h"
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
class ConnectionEditWindow : public QDialog
|
class ConnectionEditWindow : public QDialog
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>Hv2ray::Ui::ConnectionEditWindow</class>
|
<class>ConnectionEditWindow</class>
|
||||||
<widget class="QDialog" name="Hv2ray::Ui::ConnectionEditWindow">
|
<widget class="QDialog" name="ConnectionEditWindow">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -864,7 +864,7 @@
|
|||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>accepted()</signal>
|
<signal>accepted()</signal>
|
||||||
<receiver>Hv2ray::Ui::ConnectionEditWindow</receiver>
|
<receiver>ConnectionEditWindow</receiver>
|
||||||
<slot>accept()</slot>
|
<slot>accept()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
@ -880,7 +880,7 @@
|
|||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>rejected()</signal>
|
<signal>rejected()</signal>
|
||||||
<receiver>Hv2ray::Ui::ConnectionEditWindow</receiver>
|
<receiver>ConnectionEditWindow</receiver>
|
||||||
<slot>reject()</slot>
|
<slot>reject()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
#include "w_ConnectionEditWindow.h"
|
#include "w_ConnectionEditWindow.h"
|
||||||
#include "w_ImportConfig.h"
|
#include "w_ImportConfig.h"
|
||||||
|
|
||||||
using namespace Hv2ray;
|
using namespace Qv2ray;
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
ImportConfig::ImportConfig(QWidget *parent)
|
ImportConfig::ImportConfig(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include "ui_w_ImportConfig.h"
|
#include "ui_w_ImportConfig.h"
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
class ImportConfig : public QDialog
|
class ImportConfig : public QDialog
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>Hv2ray::Ui::ImportConfig</class>
|
<class>ImportConfig</class>
|
||||||
<widget class="QDialog" name="Hv2ray::Ui::ImportConfig">
|
<widget class="QDialog" name="ImportConfig">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -162,7 +162,7 @@
|
|||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>accepted()</signal>
|
<signal>accepted()</signal>
|
||||||
<receiver>Hv2ray::Ui::ImportConfig</receiver>
|
<receiver>ImportConfig</receiver>
|
||||||
<slot>accept()</slot>
|
<slot>accept()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
@ -178,7 +178,7 @@
|
|||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>rejected()</signal>
|
<signal>rejected()</signal>
|
||||||
<receiver>Hv2ray::Ui::ImportConfig</receiver>
|
<receiver>ImportConfig</receiver>
|
||||||
<slot>reject()</slot>
|
<slot>reject()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
|
@ -15,14 +15,14 @@
|
|||||||
#include "w_MainWindow.h"
|
#include "w_MainWindow.h"
|
||||||
#include "w_PrefrencesWindow.h"
|
#include "w_PrefrencesWindow.h"
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
void MainWindow::CreateTrayIcon()
|
void MainWindow::CreateTrayIcon()
|
||||||
{
|
{
|
||||||
hTray = new QSystemTrayIcon();
|
hTray = new QSystemTrayIcon();
|
||||||
hTray->setToolTip(tr("Hv2ray"));
|
hTray->setToolTip(tr("Qv2ray"));
|
||||||
hTray->setIcon(this->windowIcon());
|
hTray->setIcon(this->windowIcon());
|
||||||
connect(hTray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(on_activatedTray(QSystemTrayIcon::ActivationReason)));
|
connect(hTray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(on_activatedTray(QSystemTrayIcon::ActivationReason)));
|
||||||
QAction *actionShow = new QAction(this);
|
QAction *actionShow = new QAction(this);
|
||||||
@ -58,7 +58,7 @@ namespace Hv2ray
|
|||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui_MainWindow)
|
, ui(new Ui_MainWindow)
|
||||||
{
|
{
|
||||||
this->setWindowIcon(QIcon(":/icons/Hv2ray.ico"));
|
this->setWindowIcon(QIcon(":/icons/Qv2ray.ico"));
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
UpdateConfigTable();
|
UpdateConfigTable();
|
||||||
// ui->configTable->setContextMenuPolicy(Qt::CustomContextMenu);
|
// ui->configTable->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
#include "vinteract.hpp"
|
#include "vinteract.hpp"
|
||||||
#include "V2ConfigObjects.hpp"
|
#include "V2ConfigObjects.hpp"
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
class MainWindow : public QMainWindow
|
class MainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>Hv2ray::Ui::MainWindow</class>
|
<class>MainWindow</class>
|
||||||
<widget class="QMainWindow" name="Hv2ray::Ui::MainWindow">
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -23,7 +23,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Hv2ray</string>
|
<string>Qv2ray</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralWidget">
|
<widget class="QWidget" name="centralWidget">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -16,12 +16,12 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace Hv2ray;
|
using namespace Qv2ray;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
PrefrencesWindow::PrefrencesWindow(QWidget *parent) : QDialog(parent), CurrentConfig(), ui(new Ui_PrefrencesWindow)
|
PrefrencesWindow::PrefrencesWindow(QWidget *parent) : QDialog(parent), CurrentConfig(), ui(new Ui_PrefrencesWindow)
|
||||||
{
|
{
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
#include <ui_w_PrefrencesWindow.h>
|
#include <ui_w_PrefrencesWindow.h>
|
||||||
#include "HConfigObjects.hpp"
|
#include "HConfigObjects.hpp"
|
||||||
|
|
||||||
namespace Hv2ray
|
namespace Qv2ray
|
||||||
{
|
{
|
||||||
namespace Ui
|
namespace Ui_Impl
|
||||||
{
|
{
|
||||||
class PrefrencesWindow : public QDialog
|
class PrefrencesWindow : public QDialog
|
||||||
{
|
{
|
||||||
@ -28,7 +28,7 @@ namespace Hv2ray
|
|||||||
void on_runAsRootCheckBox_stateChanged(int arg1);
|
void on_runAsRootCheckBox_stateChanged(int arg1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Hv2ray::HConfigModels::Hv2Config CurrentConfig;
|
Qv2ray::QvConfigModels::Qv2Config CurrentConfig;
|
||||||
Ui_PrefrencesWindow *ui;
|
Ui_PrefrencesWindow *ui;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>Hv2ray::Ui::PrefrencesWindow</class>
|
<class>PrefrencesWindow</class>
|
||||||
<widget class="QDialog" name="Hv2ray::Ui::PrefrencesWindow">
|
<widget class="QDialog" name="PrefrencesWindow">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@ -345,7 +345,7 @@
|
|||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>accepted()</signal>
|
<signal>accepted()</signal>
|
||||||
<receiver>Hv2ray::Ui::PrefrencesWindow</receiver>
|
<receiver>PrefrencesWindow</receiver>
|
||||||
<slot>accept()</slot>
|
<slot>accept()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
@ -361,7 +361,7 @@
|
|||||||
<connection>
|
<connection>
|
||||||
<sender>buttonBox</sender>
|
<sender>buttonBox</sender>
|
||||||
<signal>rejected()</signal>
|
<signal>rejected()</signal>
|
||||||
<receiver>Hv2ray::Ui::PrefrencesWindow</receiver>
|
<receiver>PrefrencesWindow</receiver>
|
||||||
<slot>reject()</slot>
|
<slot>reject()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
|
@ -3,197 +3,6 @@
|
|||||||
<TS version="2.1" language="en_US">
|
<TS version="2.1" language="en_US">
|
||||||
<context>
|
<context>
|
||||||
<name>ConnectionEditWindow</name>
|
<name>ConnectionEditWindow</name>
|
||||||
<message>
|
|
||||||
<source>#ConnectionSettings</source>
|
|
||||||
<translation type="vanished">Connection Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Host</source>
|
|
||||||
<translation type="vanished">Host</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Port</source>
|
|
||||||
<translation type="vanished">Port</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Name</source>
|
|
||||||
<translation type="vanished">Name</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UUID</source>
|
|
||||||
<translation type="vanished">UUID</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#AlterID</source>
|
|
||||||
<translation type="vanished">Alter ID</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Security</source>
|
|
||||||
<translation type="vanished">Security Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>auto</source>
|
|
||||||
<translation type="vanished">Auto</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>aes-128-gcm</source>
|
|
||||||
<translation type="vanished">aes-128-gcm</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>chacha20-poly1305</source>
|
|
||||||
<translation type="vanished">chacha20-poly1305</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>none</source>
|
|
||||||
<translation type="vanished">Do not use</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Transport</source>
|
|
||||||
<translation type="vanished">Transport Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>tcp (TCP)</source>
|
|
||||||
<translation type="vanished">tcp (TCP)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>http (HTTP)</source>
|
|
||||||
<translation type="vanished">http (HTTP)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>ws (WebSocket)</source>
|
|
||||||
<translation type="vanished">ws (WebSocket)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>kcp (mKCP)</source>
|
|
||||||
<translation type="vanished">kcp (mKCP)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>domainsocket (Domain Socket)</source>
|
|
||||||
<translation type="vanished">domainsocket (Domain Socket)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>quic (Quick UDP Internet Connection)</source>
|
|
||||||
<translation type="vanished">quic (Quick UDP Internet Connection)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#TransportSettings</source>
|
|
||||||
<translation type="vanished">Transport Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>TCP</source>
|
|
||||||
<translation type="vanished">TCP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>http</source>
|
|
||||||
<translation type="vanished">HTTP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Type</source>
|
|
||||||
<translation type="vanished">Type</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Request</source>
|
|
||||||
<translation type="vanished">Request</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#InsertDefaultContent</source>
|
|
||||||
<translation type="vanished">Insert Default Content</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Response</source>
|
|
||||||
<translation type="vanished">Response</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>HTTP</source>
|
|
||||||
<translation type="vanished">HTTP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Path</source>
|
|
||||||
<translation type="vanished">Path</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>WebSocket</source>
|
|
||||||
<translation type="vanished">WebSocket</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Headers</source>
|
|
||||||
<translation type="vanished">Headers</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>mKCP</source>
|
|
||||||
<translation type="vanished">mKCP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#MTU</source>
|
|
||||||
<translation type="vanished">MTU</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#TTI (ms)</source>
|
|
||||||
<translation type="vanished">TTI (ms)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UplinkCapacity (MB/s)</source>
|
|
||||||
<translation type="vanished">Uplink Capacity (MB/s)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Congestion</source>
|
|
||||||
<translation type="vanished">Congestion Control</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Enabled</source>
|
|
||||||
<translation type="vanished">Enabled</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#DownlinkCapacity (MB/s)</source>
|
|
||||||
<translation type="vanished">Downlink Capacity (MB/s)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ReadBufferSize (MB)</source>
|
|
||||||
<translation type="vanished">Read Buffer Size (MB)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#WriteBufferSize (MB)</source>
|
|
||||||
<translation type="vanished">Write Buffer Size (MB)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Header</source>
|
|
||||||
<translation type="vanished">Headers</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>srtp (SRTP, FaceTime)</source>
|
|
||||||
<translation type="vanished">srtp (SRTP, FaceTime)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>utp (BitTorrent)</source>
|
|
||||||
<translation type="vanished">utp (BitTorrent)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>wechat-video (WeChat Video Message)</source>
|
|
||||||
<translation type="vanished">wechat-video (WeChat Video Message)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>dtls (DTLS 1.2)</source>
|
|
||||||
<translation type="vanished">dtls (DTLS 1.2)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>wireguard (WireGuard fake packets)</source>
|
|
||||||
<translation type="vanished">wireguard (WireGuard fake packets)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>DomainSocket</source>
|
|
||||||
<translation type="vanished">DomainSocket</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>QUIC</source>
|
|
||||||
<translation type="vanished">QUIC</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Key</source>
|
|
||||||
<translation type="vanished">Key</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>Hv2ray::Ui::ConnectionEditWindow</name>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_ConnectionEditWindow.ui" line="20"/>
|
<location filename="../src/w_ConnectionEditWindow.ui" line="20"/>
|
||||||
<source>#ConnectionSettings</source>
|
<source>#ConnectionSettings</source>
|
||||||
@ -451,7 +260,7 @@
|
|||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Hv2ray::Ui::ImportConfig</name>
|
<name>ImportConfig</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_ImportConfig.ui" line="20"/>
|
<location filename="../src/w_ImportConfig.ui" line="20"/>
|
||||||
<source>Import file</source>
|
<source>Import file</source>
|
||||||
@ -517,45 +326,26 @@
|
|||||||
<source>#VMess Connection String</source>
|
<source>#VMess Connection String</source>
|
||||||
<translation>VMess Connection String</translation>
|
<translation>VMess Connection String</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_ImportConfig.cpp" line="38"/>
|
|
||||||
<source>OpenConfigFile</source>
|
|
||||||
<translation>Open Config File</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
|
||||||
<source>ImportConfig</source>
|
|
||||||
<translation>Import Config</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
|
||||||
<source>CannotGenerateConfig</source>
|
|
||||||
<translation>Failed to generate config file</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Hv2ray::Ui::MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="26"/>
|
<location filename="../src/w_MainWindow.ui" line="26"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="25"/>
|
<source>Qv2ray</source>
|
||||||
<source>Hv2ray</source>
|
<translation></translation>
|
||||||
<translation>Hv2ray</translation>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="46"/>
|
<location filename="../src/w_MainWindow.ui" line="46"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="35"/>
|
|
||||||
<source>#Start</source>
|
<source>#Start</source>
|
||||||
<translation>Start</translation>
|
<translation>Start</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="53"/>
|
<location filename="../src/w_MainWindow.ui" line="53"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="36"/>
|
|
||||||
<source>#Stop</source>
|
<source>#Stop</source>
|
||||||
<translation>Stop</translation>
|
<translation>Stop</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="60"/>
|
<location filename="../src/w_MainWindow.ui" line="60"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="37"/>
|
|
||||||
<source>#Restart</source>
|
<source>#Restart</source>
|
||||||
<translation>Restart</translation>
|
<translation>Restart</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -595,7 +385,7 @@
|
|||||||
<translation>Transport Settings</translation>
|
<translation>Transport Settings</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="214"/>
|
<location filename="../src/w_MainWindow.ui" line="208"/>
|
||||||
<location filename="../src/w_MainWindow.ui" line="221"/>
|
<location filename="../src/w_MainWindow.ui" line="221"/>
|
||||||
<source>#ConnectionSettings</source>
|
<source>#ConnectionSettings</source>
|
||||||
<translation>Connection Settings</translation>
|
<translation>Connection Settings</translation>
|
||||||
@ -630,29 +420,11 @@
|
|||||||
<source>#Preferences</source>
|
<source>#Preferences</source>
|
||||||
<translation>Preferences</translation>
|
<translation>Preferences</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="33"/>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="236"/>
|
|
||||||
<source>#Hide</source>
|
|
||||||
<translation>Hide</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="34"/>
|
|
||||||
<source>#Quit</source>
|
|
||||||
<translation>Quit</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="239"/>
|
|
||||||
<source>#Show</source>
|
|
||||||
<translation>Show</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Hv2ray::Ui::PrefrencesWindow</name>
|
<name>PrefrencesWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="20"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="20"/>
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="66"/>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="99"/>
|
|
||||||
<source>Prefrences</source>
|
<source>Prefrences</source>
|
||||||
<translation>Preferences</translation>
|
<translation>Preferences</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -737,11 +509,6 @@
|
|||||||
<source>#InboundSettings</source>
|
<source>#InboundSettings</source>
|
||||||
<translation>Inbound Settings</translation>
|
<translation>Inbound Settings</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="177"/>
|
|
||||||
<source>HTTP</source>
|
|
||||||
<translation>HTTP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="193"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="193"/>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="256"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="256"/>
|
||||||
@ -771,311 +538,33 @@
|
|||||||
<source>#Password</source>
|
<source>#Password</source>
|
||||||
<translation>Password</translation>
|
<translation>Password</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="250"/>
|
|
||||||
<source>SOCKS</source>
|
|
||||||
<translation>SOCKS</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="263"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="263"/>
|
||||||
<source>9001</source>
|
<source>9001</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>#Prefrences</source>
|
<location filename="../src/w_PrefrencesWindow.ui" line="177"/>
|
||||||
<translation type="obsolete">Preferences</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#CannotOpenConfigFile</source>
|
|
||||||
<translation type="obsolete">Cannot open config file</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="66"/>
|
|
||||||
<source>PortNumbersCannotBeSame</source>
|
|
||||||
<translation>Port numbers cannot be the same</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="99"/>
|
|
||||||
<source>RunAsRootNotOnWindows</source>
|
|
||||||
<translation>Run as root is not avaliable on Windows Platform</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>ImportConfig</name>
|
|
||||||
<message>
|
|
||||||
<source>Import file</source>
|
|
||||||
<translation type="vanished">Import file</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ImportFrom</source>
|
|
||||||
<translation type="vanished">Import From</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Existing File</source>
|
|
||||||
<translation type="vanished">Existing File</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>VMess Connection String</source>
|
|
||||||
<translation type="vanished">VMess Connection String</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#FromFile</source>
|
|
||||||
<translation type="vanished">From file</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Path</source>
|
|
||||||
<translation type="vanished">Path</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#SelectFile</source>
|
|
||||||
<translation type="vanished">Select File</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Name</source>
|
|
||||||
<translation type="vanished">Name</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Inbound</source>
|
|
||||||
<translation type="vanished">Inbound Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UseCurrent</source>
|
|
||||||
<translation type="vanished">Use Current Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UseImported</source>
|
|
||||||
<translation type="vanished">Use Imported Inbound Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#From VMess Connection String</source>
|
|
||||||
<translation type="vanished">From VMess Connection String</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#VMess Connection String</source>
|
|
||||||
<translation type="vanished">VMess Connection String</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>OpenConfigFile</source>
|
|
||||||
<translation type="vanished">Open Config File</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>ImportConfig</source>
|
|
||||||
<translation type="vanished">Import Config</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>CannotOpenFile</source>
|
|
||||||
<translation type="vanished">Cannot open file</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>SaveFailed</source>
|
|
||||||
<translation type="vanished">Failed to save</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>CannotCopyCustomConfig</source>
|
|
||||||
<translation type="vanished">Failed to copy config file</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>CannotGenerateConfig</source>
|
|
||||||
<translation type="vanished">Failed to generate config file</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>MainWindow</name>
|
|
||||||
<message>
|
|
||||||
<source>Hv2ray</source>
|
|
||||||
<translation type="vanished">Hv2ray</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Start</source>
|
|
||||||
<translation type="vanished">Start</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Stop</source>
|
|
||||||
<translation type="vanished">Stop</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Restart</source>
|
|
||||||
<translation type="vanished">Restart</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ClearLog</source>
|
|
||||||
<translation type="vanished">Clear Log</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#HostList</source>
|
|
||||||
<translation type="vanished">Host List</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ConfigDetail</source>
|
|
||||||
<translation type="vanished">Detailed Config Info</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Host</source>
|
|
||||||
<translation type="vanished">Host</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Port</source>
|
|
||||||
<translation type="vanished">Port</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UUID</source>
|
|
||||||
<translation type="vanished">UUID</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Transport</source>
|
|
||||||
<translation type="vanished">Transport Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ConnectionSettings</source>
|
|
||||||
<translation type="vanished">Connection Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#File</source>
|
|
||||||
<translation type="vanished">File</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#NewConnection</source>
|
|
||||||
<translation type="vanished">New Connection</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ManuallyInput</source>
|
|
||||||
<translation type="vanished">Manually Input Config</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ImportConnection</source>
|
|
||||||
<translation type="vanished">Import Config File</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Exit</source>
|
|
||||||
<translation type="vanished">Exit</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Preferences</source>
|
|
||||||
<translation type="vanished">Preferences</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Hide</source>
|
|
||||||
<translation type="vanished">Hide</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Quit</source>
|
|
||||||
<translation type="vanished">Quit</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Show</source>
|
|
||||||
<translation type="vanished">Show</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>PrefrencesWindow</name>
|
|
||||||
<message>
|
|
||||||
<source>Prefrences</source>
|
|
||||||
<translation type="vanished">Preferences</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#General</source>
|
|
||||||
<translation type="vanished">General</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Language</source>
|
|
||||||
<translation type="vanished">Language</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#RunAsRoot</source>
|
|
||||||
<translation type="vanished">Run v2ray as root</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Enabled</source>
|
|
||||||
<translation type="vanished">Enabled</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#LogLevel</source>
|
|
||||||
<translation type="vanished">Log Level</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>debug</source>
|
|
||||||
<translation type="vanished">Debug</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>info</source>
|
|
||||||
<translation type="vanished">Info</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>warning</source>
|
|
||||||
<translation type="vanished">Warning</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>error</source>
|
|
||||||
<translation type="vanished">Error</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>none</source>
|
|
||||||
<translation type="vanished">Do not use</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#MuxCool</source>
|
|
||||||
<translation type="vanished">Mux Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Concurrency</source>
|
|
||||||
<translation type="vanished">Maximum Connections</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#InboundSettings</source>
|
|
||||||
<translation type="vanished">Inbound Settings</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Port</source>
|
|
||||||
<translation type="vanished">Port</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Username</source>
|
|
||||||
<translation type="vanished">Username</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Auth</source>
|
|
||||||
<translation type="vanished">Authentication</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Password</source>
|
|
||||||
<translation type="vanished">Password</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>HTTP</source>
|
<source>HTTP</source>
|
||||||
<translation type="vanished">HTTP</translation>
|
<translation>HTTP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.ui" line="250"/>
|
||||||
<source>SOCKS</source>
|
<source>SOCKS</source>
|
||||||
<translation type="vanished">SOCKS</translation>
|
<translation>SOCKS</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Prefrences</source>
|
|
||||||
<translation type="vanished">Preferences</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#CannotOpenConfigFile</source>
|
|
||||||
<translation type="vanished">Cannot open config file</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>PortNumbersCannotBeSame</source>
|
|
||||||
<translation type="vanished">Port numbers cannot be the same</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>RunAsRootNotOnWindows</source>
|
|
||||||
<translation type="vanished">Run as root is not avaliable on Windows Platform</translation>
|
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/main.cpp" line="73"/>
|
<location filename="../src/main.cpp" line="73"/>
|
||||||
<source>Hv2Ray</source>
|
<source>AnotherInstanceRunning</source>
|
||||||
<translation>Hv2ray</translation>
|
<translation>Another instance is already running</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/main.cpp" line="73"/>
|
<location filename="../src/main.cpp" line="73"/>
|
||||||
<source>AnotherInstanceRunning</source>
|
<source>Qv2ray</source>
|
||||||
<translation>Another instance is already running</translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/vinteract.cpp" line="51"/>
|
<location filename="../src/vinteract.cpp" line="51"/>
|
||||||
@ -1093,4 +582,80 @@
|
|||||||
<translation>Configuration Error</translation>
|
<translation>Configuration Error</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Qv2ray::Ui_Impl::ImportConfig</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_ImportConfig.cpp" line="38"/>
|
||||||
|
<source>OpenConfigFile</source>
|
||||||
|
<translation>Open Config File</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
||||||
|
<source>ImportConfig</source>
|
||||||
|
<translation>Import Config</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
||||||
|
<source>CannotGenerateConfig</source>
|
||||||
|
<translation>Failed to generate config file</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Qv2ray::Ui_Impl::MainWindow</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="25"/>
|
||||||
|
<source>Qv2ray</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="33"/>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="236"/>
|
||||||
|
<source>#Hide</source>
|
||||||
|
<translation>Hide</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="34"/>
|
||||||
|
<source>#Quit</source>
|
||||||
|
<translation>Quit</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="35"/>
|
||||||
|
<source>#Start</source>
|
||||||
|
<translation>Start</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="36"/>
|
||||||
|
<source>#Stop</source>
|
||||||
|
<translation>Stop</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="37"/>
|
||||||
|
<source>#Restart</source>
|
||||||
|
<translation>Restart</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="239"/>
|
||||||
|
<source>#Show</source>
|
||||||
|
<translation>Show</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Qv2ray::Ui_Impl::PrefrencesWindow</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="82"/>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="115"/>
|
||||||
|
<source>Prefrences</source>
|
||||||
|
<translation>Preferences</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="82"/>
|
||||||
|
<source>PortNumbersCannotBeSame</source>
|
||||||
|
<translation>Port numbers cannot be the same</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="115"/>
|
||||||
|
<source>RunAsRootNotOnWindows</source>
|
||||||
|
<translation>Run as root is not avaliable on Windows Platform</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -3,197 +3,6 @@
|
|||||||
<TS version="2.1" language="zh_CN">
|
<TS version="2.1" language="zh_CN">
|
||||||
<context>
|
<context>
|
||||||
<name>ConnectionEditWindow</name>
|
<name>ConnectionEditWindow</name>
|
||||||
<message>
|
|
||||||
<source>#ConnectionSettings</source>
|
|
||||||
<translation type="vanished">连接设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Host</source>
|
|
||||||
<translation type="vanished">域名</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Port</source>
|
|
||||||
<translation type="vanished">端口</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Name</source>
|
|
||||||
<translation type="vanished">名称</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UUID</source>
|
|
||||||
<translation type="vanished">UUID</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#AlterID</source>
|
|
||||||
<translation type="vanished">Alter ID</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Security</source>
|
|
||||||
<translation type="vanished">安全设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>auto</source>
|
|
||||||
<translation type="vanished">自动</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>aes-128-gcm</source>
|
|
||||||
<translation type="vanished">aes-128-gcm</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>chacha20-poly1305</source>
|
|
||||||
<translation type="vanished">chacha20-poly1305</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>none</source>
|
|
||||||
<translation type="vanished">不使用</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Transport</source>
|
|
||||||
<translation type="vanished">传输设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>tcp (TCP)</source>
|
|
||||||
<translation type="vanished">tcp (TCP)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>http (HTTP)</source>
|
|
||||||
<translation type="vanished">http (HTTP)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>ws (WebSocket)</source>
|
|
||||||
<translation type="vanished">ws (WebSocket)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>kcp (mKCP)</source>
|
|
||||||
<translation type="vanished">kcp (mKCP)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>domainsocket (Domain Socket)</source>
|
|
||||||
<translation type="vanished">domainsocket (Domain Socket)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>quic (Quick UDP Internet Connection)</source>
|
|
||||||
<translation type="vanished">quic (Quick UDP Internet Connection)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#TransportSettings</source>
|
|
||||||
<translation type="vanished">传输设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>TCP</source>
|
|
||||||
<translation type="vanished">TCP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>http</source>
|
|
||||||
<translation type="vanished">HTTP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Type</source>
|
|
||||||
<translation type="vanished">类型</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Request</source>
|
|
||||||
<translation type="vanished">请求</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#InsertDefaultContent</source>
|
|
||||||
<translation type="vanished">默认值</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Response</source>
|
|
||||||
<translation type="vanished">相应</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>HTTP</source>
|
|
||||||
<translation type="vanished">HTTP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Path</source>
|
|
||||||
<translation type="vanished">路径</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>WebSocket</source>
|
|
||||||
<translation type="vanished">WebSocket</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Headers</source>
|
|
||||||
<translation type="vanished">头伪装</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>mKCP</source>
|
|
||||||
<translation type="vanished">mKCP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#MTU</source>
|
|
||||||
<translation type="vanished">最大传输单元</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#TTI (ms)</source>
|
|
||||||
<translation type="vanished">传输时间间隔</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UplinkCapacity (MB/s)</source>
|
|
||||||
<translation type="vanished">上行链路容量 (MB/s)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Congestion</source>
|
|
||||||
<translation type="vanished">拥塞控制</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Enabled</source>
|
|
||||||
<translation type="vanished">启用</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#DownlinkCapacity (MB/s)</source>
|
|
||||||
<translation type="vanished">下行链路容量 (MB/s)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ReadBufferSize (MB)</source>
|
|
||||||
<translation type="vanished">读取缓冲区大小 (MB)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#WriteBufferSize (MB)</source>
|
|
||||||
<translation type="vanished">写入缓冲区大小 (MB)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Header</source>
|
|
||||||
<translation type="vanished">头伪装</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>srtp (SRTP, FaceTime)</source>
|
|
||||||
<translation type="vanished">srtp (SRTP, FaceTime)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>utp (BitTorrent)</source>
|
|
||||||
<translation type="vanished">utp (BitTorrent)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>wechat-video (WeChat Video Message)</source>
|
|
||||||
<translation type="vanished">wechat-video (WeChat Video Message)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>dtls (DTLS 1.2)</source>
|
|
||||||
<translation type="vanished">dtls (DTLS 1.2)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>wireguard (WireGuard fake packets)</source>
|
|
||||||
<translation type="vanished">wireguard (WireGuard fake packets)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>DomainSocket</source>
|
|
||||||
<translation type="vanished">DomainSocket</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>QUIC</source>
|
|
||||||
<translation type="vanished">QUIC</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Key</source>
|
|
||||||
<translation type="vanished">密钥</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>Hv2ray::Ui::ConnectionEditWindow</name>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_ConnectionEditWindow.ui" line="20"/>
|
<location filename="../src/w_ConnectionEditWindow.ui" line="20"/>
|
||||||
<source>#ConnectionSettings</source>
|
<source>#ConnectionSettings</source>
|
||||||
@ -451,7 +260,7 @@
|
|||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Hv2ray::Ui::ImportConfig</name>
|
<name>ImportConfig</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_ImportConfig.ui" line="20"/>
|
<location filename="../src/w_ImportConfig.ui" line="20"/>
|
||||||
<source>Import file</source>
|
<source>Import file</source>
|
||||||
@ -517,45 +326,26 @@
|
|||||||
<source>#VMess Connection String</source>
|
<source>#VMess Connection String</source>
|
||||||
<translation>VMess 连接字符串</translation>
|
<translation>VMess 连接字符串</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_ImportConfig.cpp" line="38"/>
|
|
||||||
<source>OpenConfigFile</source>
|
|
||||||
<translation>打开配置文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
|
||||||
<source>ImportConfig</source>
|
|
||||||
<translation>导入配置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
|
||||||
<source>CannotGenerateConfig</source>
|
|
||||||
<translation>无法生成配置文件</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Hv2ray::Ui::MainWindow</name>
|
<name>MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="26"/>
|
<location filename="../src/w_MainWindow.ui" line="26"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="25"/>
|
<source>Qv2ray</source>
|
||||||
<source>Hv2ray</source>
|
<translation></translation>
|
||||||
<translation>Hv2ray</translation>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="46"/>
|
<location filename="../src/w_MainWindow.ui" line="46"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="35"/>
|
|
||||||
<source>#Start</source>
|
<source>#Start</source>
|
||||||
<translation>启动</translation>
|
<translation>启动</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="53"/>
|
<location filename="../src/w_MainWindow.ui" line="53"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="36"/>
|
|
||||||
<source>#Stop</source>
|
<source>#Stop</source>
|
||||||
<translation>停止</translation>
|
<translation>停止</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="60"/>
|
<location filename="../src/w_MainWindow.ui" line="60"/>
|
||||||
<location filename="../src/w_MainWindow.cpp" line="37"/>
|
|
||||||
<source>#Restart</source>
|
<source>#Restart</source>
|
||||||
<translation>重新启动</translation>
|
<translation>重新启动</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -595,7 +385,7 @@
|
|||||||
<translation>传输设置</translation>
|
<translation>传输设置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_MainWindow.ui" line="214"/>
|
<location filename="../src/w_MainWindow.ui" line="208"/>
|
||||||
<location filename="../src/w_MainWindow.ui" line="221"/>
|
<location filename="../src/w_MainWindow.ui" line="221"/>
|
||||||
<source>#ConnectionSettings</source>
|
<source>#ConnectionSettings</source>
|
||||||
<translation>连接设置</translation>
|
<translation>连接设置</translation>
|
||||||
@ -630,29 +420,11 @@
|
|||||||
<source>#Preferences</source>
|
<source>#Preferences</source>
|
||||||
<translation>首选项</translation>
|
<translation>首选项</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="33"/>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="236"/>
|
|
||||||
<source>#Hide</source>
|
|
||||||
<translation>隐藏</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="34"/>
|
|
||||||
<source>#Quit</source>
|
|
||||||
<translation>退出</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_MainWindow.cpp" line="239"/>
|
|
||||||
<source>#Show</source>
|
|
||||||
<translation>显示</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Hv2ray::Ui::PrefrencesWindow</name>
|
<name>PrefrencesWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="20"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="20"/>
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="66"/>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="99"/>
|
|
||||||
<source>Prefrences</source>
|
<source>Prefrences</source>
|
||||||
<translation>首选项</translation>
|
<translation>首选项</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -737,11 +509,6 @@
|
|||||||
<source>#InboundSettings</source>
|
<source>#InboundSettings</source>
|
||||||
<translation>入站设置</translation>
|
<translation>入站设置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="177"/>
|
|
||||||
<source>HTTP</source>
|
|
||||||
<translation>HTTP</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="193"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="193"/>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="256"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="256"/>
|
||||||
@ -771,311 +538,33 @@
|
|||||||
<source>#Password</source>
|
<source>#Password</source>
|
||||||
<translation>密码</translation>
|
<translation>密码</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="250"/>
|
|
||||||
<source>SOCKS</source>
|
|
||||||
<translation>SOCKS</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/w_PrefrencesWindow.ui" line="263"/>
|
<location filename="../src/w_PrefrencesWindow.ui" line="263"/>
|
||||||
<source>9001</source>
|
<source>9001</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>#Prefrences</source>
|
<location filename="../src/w_PrefrencesWindow.ui" line="177"/>
|
||||||
<translation type="obsolete">首选项</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#CannotOpenConfigFile</source>
|
|
||||||
<translation type="obsolete">无法打开配置文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="66"/>
|
|
||||||
<source>PortNumbersCannotBeSame</source>
|
|
||||||
<translation>端口号不能相同</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/w_PrefrencesWindow.cpp" line="99"/>
|
|
||||||
<source>RunAsRootNotOnWindows</source>
|
|
||||||
<translation>Windows 平台不支持这个选项</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>ImportConfig</name>
|
|
||||||
<message>
|
|
||||||
<source>Import file</source>
|
|
||||||
<translation type="vanished">导入文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ImportFrom</source>
|
|
||||||
<translation type="vanished">导入源</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Existing File</source>
|
|
||||||
<translation type="vanished">现有文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>VMess Connection String</source>
|
|
||||||
<translation type="vanished">VMess 连接字符串</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#FromFile</source>
|
|
||||||
<translation type="vanished">从文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Path</source>
|
|
||||||
<translation type="vanished">路径</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#SelectFile</source>
|
|
||||||
<translation type="vanished">选择文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Name</source>
|
|
||||||
<translation type="vanished">名称</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Inbound</source>
|
|
||||||
<translation type="vanished">入站设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UseCurrent</source>
|
|
||||||
<translation type="vanished">使用现有设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UseImported</source>
|
|
||||||
<translation type="vanished">使用导入的设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#From VMess Connection String</source>
|
|
||||||
<translation type="vanished">从 VMess 连接字符串</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#VMess Connection String</source>
|
|
||||||
<translation type="vanished">VMess 连接字符串</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>OpenConfigFile</source>
|
|
||||||
<translation type="vanished">打开配置文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>ImportConfig</source>
|
|
||||||
<translation type="vanished">导入配置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>CannotOpenFile</source>
|
|
||||||
<translation type="vanished">无法打开文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>SaveFailed</source>
|
|
||||||
<translation type="vanished">保存失败</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>CannotCopyCustomConfig</source>
|
|
||||||
<translation type="vanished">复制配置文件失败</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>CannotGenerateConfig</source>
|
|
||||||
<translation type="vanished">无法生成配置文件</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>MainWindow</name>
|
|
||||||
<message>
|
|
||||||
<source>Hv2ray</source>
|
|
||||||
<translation type="vanished">Hv2ray</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Start</source>
|
|
||||||
<translation type="vanished">启动</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Stop</source>
|
|
||||||
<translation type="vanished">停止</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Restart</source>
|
|
||||||
<translation type="vanished">重新启动</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ClearLog</source>
|
|
||||||
<translation type="vanished">清除日志</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#HostList</source>
|
|
||||||
<translation type="vanished">服务器列表</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ConfigDetail</source>
|
|
||||||
<translation type="vanished">配置详细信息</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Host</source>
|
|
||||||
<translation type="vanished">域名</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Port</source>
|
|
||||||
<translation type="vanished">端口</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#UUID</source>
|
|
||||||
<translation type="vanished">UUID</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Transport</source>
|
|
||||||
<translation type="vanished">传输设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ConnectionSettings</source>
|
|
||||||
<translation type="vanished">连接设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#File</source>
|
|
||||||
<translation type="vanished">文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#NewConnection</source>
|
|
||||||
<translation type="vanished">新建连接</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ManuallyInput</source>
|
|
||||||
<translation type="vanished">手动输入配置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#ImportConnection</source>
|
|
||||||
<translation type="vanished">导入配置文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Exit</source>
|
|
||||||
<translation type="vanished">退出</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Preferences</source>
|
|
||||||
<translation type="vanished">首选项</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Hide</source>
|
|
||||||
<translation type="vanished">隐藏</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Quit</source>
|
|
||||||
<translation type="vanished">退出</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Show</source>
|
|
||||||
<translation type="vanished">显示</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>PrefrencesWindow</name>
|
|
||||||
<message>
|
|
||||||
<source>Prefrences</source>
|
|
||||||
<translation type="vanished">首选项</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#General</source>
|
|
||||||
<translation type="vanished">一般</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Language</source>
|
|
||||||
<translation type="vanished">语言</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#RunAsRoot</source>
|
|
||||||
<translation type="vanished">使用 root 启动</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Enabled</source>
|
|
||||||
<translation type="vanished">启用</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#LogLevel</source>
|
|
||||||
<translation type="vanished">日志等级</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>debug</source>
|
|
||||||
<translation type="vanished">调试</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>info</source>
|
|
||||||
<translation type="vanished">信息</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>warning</source>
|
|
||||||
<translation type="vanished">警告</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>error</source>
|
|
||||||
<translation type="vanished">错误</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>none</source>
|
|
||||||
<translation type="vanished">不使用</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#MuxCool</source>
|
|
||||||
<translation type="vanished">Mux 设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Concurrency</source>
|
|
||||||
<translation type="vanished">最大并发连接数</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#InboundSettings</source>
|
|
||||||
<translation type="vanished">入站设置</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Port</source>
|
|
||||||
<translation type="vanished">端口</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Username</source>
|
|
||||||
<translation type="vanished">用户名</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Auth</source>
|
|
||||||
<translation type="vanished">鉴权</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Password</source>
|
|
||||||
<translation type="vanished">密码</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>HTTP</source>
|
<source>HTTP</source>
|
||||||
<translation type="vanished">HTTP</translation>
|
<translation>HTTP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.ui" line="250"/>
|
||||||
<source>SOCKS</source>
|
<source>SOCKS</source>
|
||||||
<translation type="vanished">SOCKS</translation>
|
<translation>SOCKS</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#Prefrences</source>
|
|
||||||
<translation type="vanished">首选项</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>#CannotOpenConfigFile</source>
|
|
||||||
<translation type="vanished">无法打开配置文件</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>PortNumbersCannotBeSame</source>
|
|
||||||
<translation type="vanished">端口号不能相同</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>RunAsRootNotOnWindows</source>
|
|
||||||
<translation type="vanished">Windows 平台不支持这个选项</translation>
|
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/main.cpp" line="73"/>
|
<location filename="../src/main.cpp" line="73"/>
|
||||||
<source>Hv2Ray</source>
|
<source>AnotherInstanceRunning</source>
|
||||||
<translation>Hv2ray</translation>
|
<translation>另一个实例正在运行</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/main.cpp" line="73"/>
|
<location filename="../src/main.cpp" line="73"/>
|
||||||
<source>AnotherInstanceRunning</source>
|
<source>Qv2ray</source>
|
||||||
<translation>另一个实例正在运行</translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/vinteract.cpp" line="51"/>
|
<location filename="../src/vinteract.cpp" line="51"/>
|
||||||
@ -1093,4 +582,80 @@
|
|||||||
<translation>配置出错</translation>
|
<translation>配置出错</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Qv2ray::Ui_Impl::ImportConfig</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_ImportConfig.cpp" line="38"/>
|
||||||
|
<source>OpenConfigFile</source>
|
||||||
|
<translation>打开配置文件</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
||||||
|
<source>ImportConfig</source>
|
||||||
|
<translation>导入配置</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_ImportConfig.cpp" line="125"/>
|
||||||
|
<source>CannotGenerateConfig</source>
|
||||||
|
<translation>无法生成配置文件</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Qv2ray::Ui_Impl::MainWindow</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="25"/>
|
||||||
|
<source>Qv2ray</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="33"/>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="236"/>
|
||||||
|
<source>#Hide</source>
|
||||||
|
<translation>隐藏</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="34"/>
|
||||||
|
<source>#Quit</source>
|
||||||
|
<translation>退出</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="35"/>
|
||||||
|
<source>#Start</source>
|
||||||
|
<translation>启动</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="36"/>
|
||||||
|
<source>#Stop</source>
|
||||||
|
<translation>停止</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="37"/>
|
||||||
|
<source>#Restart</source>
|
||||||
|
<translation>重新启动</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_MainWindow.cpp" line="239"/>
|
||||||
|
<source>#Show</source>
|
||||||
|
<translation>显示</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Qv2ray::Ui_Impl::PrefrencesWindow</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="82"/>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="115"/>
|
||||||
|
<source>Prefrences</source>
|
||||||
|
<translation>首选项</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="82"/>
|
||||||
|
<source>PortNumbersCannotBeSame</source>
|
||||||
|
<translation>端口号不能相同</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/w_PrefrencesWindow.cpp" line="115"/>
|
||||||
|
<source>RunAsRootNotOnWindows</source>
|
||||||
|
<translation>Windows 平台不支持这个选项</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
Loading…
Reference in New Issue
Block a user