fix: fixed connection issue with empty outbound tag

This commit is contained in:
Qv2ray-dev 2020-03-12 10:35:48 +08:00
parent 1a61e7fdd0
commit e81e575d54
3 changed files with 12 additions and 10 deletions

View File

@ -1 +1 @@
4664 4665

View File

@ -9,7 +9,7 @@ namespace Qv2ray::core::connection
{ {
// -------------------------- BEGIN CONFIG GENERATIONS // -------------------------- BEGIN CONFIG GENERATIONS
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
ROUTING GenerateRoutes(bool enableProxy, bool proxyCN, const QString &proxyTag, const QString &directTag) ROUTING GenerateRoutes(bool enableProxy, bool bypassCN)
{ {
ROUTING root; ROUTING root;
root.insert("domainStrategy", "IPIfNonMatch"); root.insert("domainStrategy", "IPIfNonMatch");
@ -21,16 +21,19 @@ namespace Qv2ray::core::connection
{ {
// This is added to disable all proxies, as a alternative // This is added to disable all proxies, as a alternative
// influence of #64 // influence of #64
rulesList.append(GenerateSingleRouteRule("regexp:.*", true, directTag)); rulesList.append(GenerateSingleRouteRule("regexp:.*", true, OUTBOUND_TAG_DIRECT));
} }
// Private IPs should always NOT TO PROXY! // Private IPs should always NOT TO PROXY!
rulesList.append(GenerateSingleRouteRule("geoip:private", false, directTag)); rulesList.append(GenerateSingleRouteRule("geoip:private", false, OUTBOUND_TAG_DIRECT));
// //
// Check if CN needs proxy, or direct. // Check if CN needs proxy, or direct.
rulesList.append(GenerateSingleRouteRule("geoip:cn", false, proxyCN ? directTag : proxyTag)); if (bypassCN)
rulesList.append(GenerateSingleRouteRule("geosite:cn", true, proxyCN ? directTag : proxyTag)); {
// // No proxy agains CN addresses.
rulesList.append(GenerateSingleRouteRule("geoip:cn", false, OUTBOUND_TAG_DIRECT));
rulesList.append(GenerateSingleRouteRule("geosite:cn", true, OUTBOUND_TAG_DIRECT));
}
// As a bug fix of #64, this default rule has been disabled. // As a bug fix of #64, this default rule has been disabled.
// rulesList.append(GenerateSingleRouteRule(QStringList({"regexp:.*"}), // rulesList.append(GenerateSingleRouteRule(QStringList({"regexp:.*"}),
// true, globalProxy ? OUTBOUND_TAG_PROXY : OUTBOUND_TAG_DIRECT)); // true, globalProxy ? OUTBOUND_TAG_PROXY : OUTBOUND_TAG_DIRECT));
@ -386,8 +389,7 @@ namespace Qv2ray::core::connection
} }
auto outboundTag = getTag(OUTBOUND(root["outbounds"].toArray().first().toObject())); auto outboundTag = getTag(OUTBOUND(root["outbounds"].toArray().first().toObject()));
auto routeObject = auto routeObject = GenerateRoutes(GlobalConfig.connectionConfig.enableProxy, GlobalConfig.connectionConfig.bypassCN);
GenerateRoutes(GlobalConfig.connectionConfig.enableProxy, GlobalConfig.connectionConfig.bypassCN, outboundTag);
root.insert("routing", routeObject); root.insert("routing", routeObject);
// //
// Process forward proxy // Process forward proxy

View File

@ -6,7 +6,7 @@ namespace Qv2ray::core::connection
{ {
// Important config generation algorithms. // Important config generation algorithms.
const QStringList vLogLevels = { "none", "debug", "info", "warning", "error" }; const QStringList vLogLevels = { "none", "debug", "info", "warning", "error" };
ROUTING GenerateRoutes(bool enableProxy, bool cnProxy, const QString &proxyTag, const QString &directTag = OUTBOUND_TAG_DIRECT); ROUTING GenerateRoutes(bool enableProxy, bool bypassCN);
ROUTERULE GenerateSingleRouteRule(QString str, bool isDomain, QString outboundTag, QString type = "field"); ROUTERULE GenerateSingleRouteRule(QString str, bool isDomain, QString outboundTag, QString type = "field");
ROUTERULE GenerateSingleRouteRule(QStringList list, bool isDomain, QString outboundTag, QString type = "field"); ROUTERULE GenerateSingleRouteRule(QStringList list, bool isDomain, QString outboundTag, QString type = "field");
QJsonObject GenerateDNS(bool withLocalhost, QStringList dnsServers); QJsonObject GenerateDNS(bool withLocalhost, QStringList dnsServers);