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
// ----------------------------------------------------------------------------
ROUTING GenerateRoutes(bool enableProxy, bool proxyCN, const QString &proxyTag, const QString &directTag)
ROUTING GenerateRoutes(bool enableProxy, bool bypassCN)
{
ROUTING root;
root.insert("domainStrategy", "IPIfNonMatch");
@ -21,16 +21,19 @@ namespace Qv2ray::core::connection
{
// This is added to disable all proxies, as a alternative
// influence of #64
rulesList.append(GenerateSingleRouteRule("regexp:.*", true, directTag));
rulesList.append(GenerateSingleRouteRule("regexp:.*", true, OUTBOUND_TAG_DIRECT));
}
// 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.
rulesList.append(GenerateSingleRouteRule("geoip:cn", false, proxyCN ? directTag : proxyTag));
rulesList.append(GenerateSingleRouteRule("geosite:cn", true, proxyCN ? directTag : proxyTag));
//
if (bypassCN)
{
// 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.
// rulesList.append(GenerateSingleRouteRule(QStringList({"regexp:.*"}),
// 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 routeObject =
GenerateRoutes(GlobalConfig.connectionConfig.enableProxy, GlobalConfig.connectionConfig.bypassCN, outboundTag);
auto routeObject = GenerateRoutes(GlobalConfig.connectionConfig.enableProxy, GlobalConfig.connectionConfig.bypassCN);
root.insert("routing", routeObject);
//
// Process forward proxy

View File

@ -6,7 +6,7 @@ namespace Qv2ray::core::connection
{
// Important config generation algorithms.
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(QStringList list, bool isDomain, QString outboundTag, QString type = "field");
QJsonObject GenerateDNS(bool withLocalhost, QStringList dnsServers);