This commit is contained in:
arm64v8a
2022-11-29 10:15:57 +09:00
parent 1b9edf3697
commit a973c3f4ad
5 changed files with 20 additions and 15 deletions

View File

@@ -19,7 +19,8 @@ namespace NekoRay {
void ProfileManager::LoadManager() { void ProfileManager::LoadManager() {
for (auto id: _profiles) { for (auto id: _profiles) {
auto ent = LoadProxyEntity(QString("profiles/%1.json").arg(id)); auto ent = LoadProxyEntity(QString("profiles/%1.json").arg(id));
if (ent->bean->version == -114514) { // clear invaild profile if (ent == nullptr || ent->bean == nullptr || ent->bean->version == -114514) {
// clear invaild profile
DeleteProfile(id); DeleteProfile(id);
continue; continue;
} }

View File

@@ -89,6 +89,7 @@ namespace NekoRay::fmt {
CoreObjOutboundBuildResult VMessBean::BuildCoreObjSingBox() { CoreObjOutboundBuildResult VMessBean::BuildCoreObjSingBox() {
CoreObjOutboundBuildResult result; CoreObjOutboundBuildResult result;
QJsonObject outbound{ QJsonObject outbound{
{"type", "vmess"}, {"type", "vmess"},
{"server", serverAddress}, {"server", serverAddress},
@@ -105,6 +106,7 @@ namespace NekoRay::fmt {
CoreObjOutboundBuildResult TrojanVLESSBean::BuildCoreObjSingBox() { CoreObjOutboundBuildResult TrojanVLESSBean::BuildCoreObjSingBox() {
CoreObjOutboundBuildResult result; CoreObjOutboundBuildResult result;
QJsonObject outbound{ QJsonObject outbound{
{"type", proxy_type == proxy_VLESS ? "vless" : "trojan"}, {"type", proxy_type == proxy_VLESS ? "vless" : "trojan"},
{"server", serverAddress}, {"server", serverAddress},

View File

@@ -51,10 +51,16 @@ namespace NekoRay::fmt {
domain_address = WrapIPV6Host(domain_address); domain_address = WrapIPV6Host(domain_address);
connect_address = WrapIPV6Host(connect_address); connect_address = WrapIPV6Host(connect_address);
auto proxy_url = QUrl();
proxy_url.setScheme(protocol);
proxy_url.setUserName(username);
proxy_url.setPassword(password);
proxy_url.setPort(connect_port);
proxy_url.setHost(domain_address);
result.arguments += "--log"; result.arguments += "--log";
result.arguments += "--listen=socks://127.0.0.1:" + Int2String(socks_port); result.arguments += "--listen=socks://127.0.0.1:" + Int2String(socks_port);
result.arguments += "--proxy=" + protocol + "://" + username + ":" + password + "@" + result.arguments += "--proxy=" + proxy_url.toString(QUrl::FullyEncoded);
domain_address + ":" + Int2String(connect_port);
if (domain_address != connect_address) if (domain_address != connect_address)
result.arguments += "--host-resolver-rules=MAP " + domain_address + " " + connect_address; result.arguments += "--host-resolver-rules=MAP " + domain_address + " " + connect_address;
if (insecure_concurrency > 0) result.arguments += "--insecure-concurrency=" + Int2String(insecure_concurrency); if (insecure_concurrency > 0) result.arguments += "--insecure-concurrency=" + Int2String(insecure_concurrency);

View File

@@ -15,12 +15,12 @@ namespace NekoRay::fmt {
} else { } else {
url.setScheme(QString("socks%1").arg(socks_http_type)); url.setScheme(QString("socks%1").arg(socks_http_type));
} }
if (!name.isEmpty()) url.setFragment(UrlSafe_encode(name)); if (!name.isEmpty()) url.setFragment(name);
if (!username.isEmpty()) url.setUserName(username); if (!username.isEmpty()) url.setUserName(username);
if (!password.isEmpty()) url.setPassword(password); if (!password.isEmpty()) url.setPassword(password);
url.setHost(serverAddress); url.setHost(serverAddress);
url.setPort(serverPort); url.setPort(serverPort);
return url.toString(); return url.toString(QUrl::FullyEncoded);
} }
QString TrojanVLESSBean::ToShareLink() { QString TrojanVLESSBean::ToShareLink() {
@@ -30,7 +30,7 @@ namespace NekoRay::fmt {
url.setUserName(password); url.setUserName(password);
url.setHost(serverAddress); url.setHost(serverAddress);
url.setPort(serverPort); url.setPort(serverPort);
if (!name.isEmpty()) url.setFragment(UrlSafe_encode(name)); if (!name.isEmpty()) url.setFragment(name);
if (!stream->sni.isEmpty()) query.addQueryItem("sni", stream->sni); if (!stream->sni.isEmpty()) query.addQueryItem("sni", stream->sni);
query.addQueryItem("security", stream->security); query.addQueryItem("security", stream->security);
query.addQueryItem("type", stream->network); query.addQueryItem("type", stream->network);
@@ -43,7 +43,7 @@ namespace NekoRay::fmt {
} }
url.setQuery(query); url.setQuery(query);
return url.toString(); return url.toString(QUrl::FullyEncoded);
} }
QString ShadowSocksBean::ToShareLink() { QString ShadowSocksBean::ToShareLink() {
@@ -53,11 +53,11 @@ namespace NekoRay::fmt {
url.setUserName(username.toUtf8().toBase64(QByteArray::Base64Option::Base64UrlEncoding)); url.setUserName(username.toUtf8().toBase64(QByteArray::Base64Option::Base64UrlEncoding));
url.setHost(serverAddress); url.setHost(serverAddress);
url.setPort(serverPort); url.setPort(serverPort);
if (!name.isEmpty()) url.setFragment(UrlSafe_encode(name)); if (!name.isEmpty()) url.setFragment(name);
QUrlQuery q; QUrlQuery q;
if (!plugin.isEmpty()) q.addQueryItem("plugin", plugin); if (!plugin.isEmpty()) q.addQueryItem("plugin", plugin);
if (!q.isEmpty()) url.setQuery(q); if (!q.isEmpty()) url.setQuery(q);
return url.toString(); return url.toString(QUrl::FullyEncoded);
} }
QString VMessBean::ToShareLink() { QString VMessBean::ToShareLink() {
@@ -86,8 +86,8 @@ namespace NekoRay::fmt {
url.setPassword(password); url.setPassword(password);
url.setHost(serverAddress); url.setHost(serverAddress);
url.setPort(serverPort); url.setPort(serverPort);
if (!name.isEmpty()) url.setFragment(UrlSafe_encode(name)); if (!name.isEmpty()) url.setFragment(name);
return url.toString(); return url.toString(QUrl::FullyEncoded);
} }
} // namespace NekoRay::fmt } // namespace NekoRay::fmt

View File

@@ -57,10 +57,6 @@ QString GetRandomString(int randomStringLength);
quint64 GetRandomUint64(); quint64 GetRandomUint64();
inline QString UrlSafe_encode(const QString &s) {
return s.toUtf8().toPercentEncoding().replace(" ", "%20");
}
// JSON // JSON
class QJsonObject; class QJsonObject;