mirror of
https://github.com/MatsuriDayo/nekoray.git
synced 2025-12-17 20:44:38 +03:00
bug fix
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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},
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user