mirror of
https://github.com/Mahdi-zarei/nekoray.git
synced 2025-12-25 02:50:06 +08:00
feat: Also direct all other domain-based rule conditions
This commit is contained in:
parent
8a41dd31ae
commit
2c5d35c4bb
@ -570,24 +570,40 @@ namespace NekoGui {
|
|||||||
|
|
||||||
// Direct dns domains
|
// Direct dns domains
|
||||||
QJsonArray directDnsDomains;
|
QJsonArray directDnsDomains;
|
||||||
|
QJsonArray directDnsRuleSets;
|
||||||
|
QJsonArray directDnsSuffixes;
|
||||||
|
QJsonArray directDnsKeywords;
|
||||||
|
QJsonArray directDnsRegexes;
|
||||||
|
|
||||||
|
// server addresses
|
||||||
for (const auto &item: status->domainListDNSDirect) {
|
for (const auto &item: status->domainListDNSDirect) {
|
||||||
directDnsDomains.append(item);
|
directDnsDomains.append(item);
|
||||||
}
|
}
|
||||||
if (!directDnsDomains.isEmpty()) {
|
|
||||||
dnsRules += QJsonObject{
|
|
||||||
{"domain", directDnsDomains},
|
|
||||||
{"server", "dns-direct"},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Direct domains in rules
|
auto sets = routeChain->get_direct_sites();
|
||||||
QJsonArray directDnsRuleSets;
|
|
||||||
auto sets = routeChain->get_direct_site_rule_sets();
|
|
||||||
for (const auto &item: sets) {
|
for (const auto &item: sets) {
|
||||||
directDnsRuleSets << item;
|
if (item.startsWith("ruleset:")) {
|
||||||
|
directDnsRuleSets << item.mid(8);
|
||||||
|
}
|
||||||
|
if (item.startsWith("domain:")) {
|
||||||
|
directDnsDomains << item.mid(7);
|
||||||
|
}
|
||||||
|
if (item.startsWith("suffix:")) {
|
||||||
|
directDnsSuffixes << item.mid(7);
|
||||||
|
}
|
||||||
|
if (item.startsWith("keyword:")) {
|
||||||
|
directDnsKeywords << item.mid(8);
|
||||||
|
}
|
||||||
|
if (item.startsWith("regex:")) {
|
||||||
|
directDnsRegexes << item.mid(6);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
dnsRules += QJsonObject{
|
dnsRules += QJsonObject{
|
||||||
{"rule_set", directDnsRuleSets},
|
{"rule_set", directDnsRuleSets},
|
||||||
|
{"domain", directDnsDomains},
|
||||||
|
{"domain_suffix", directDnsSuffixes},
|
||||||
|
{"domain_keyword", directDnsKeywords},
|
||||||
|
{"domain_regex", directDnsRegexes},
|
||||||
{"server", "dns-direct"},
|
{"server", "dns-direct"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -473,12 +473,24 @@ namespace NekoGui {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList RoutingChain::get_direct_site_rule_sets() {
|
QStringList RoutingChain::get_direct_sites() {
|
||||||
auto res = QStringList();
|
auto res = QStringList();
|
||||||
for (const auto& item: Rules) {
|
for (const auto& item: Rules) {
|
||||||
if (item->outboundID == -2) {
|
if (item->outboundID == -2) {
|
||||||
for (const auto& rset: item->rule_set) {
|
for (const auto& rset: item->rule_set) {
|
||||||
if (rset.endsWith("_SITE")) res << rset;
|
if (rset.endsWith("_SITE")) res << QString("ruleset:" + rset);
|
||||||
|
}
|
||||||
|
for (const auto& domain: item->domain) {
|
||||||
|
res << QString("domain:" + domain);
|
||||||
|
}
|
||||||
|
for (const auto& suffix: item->domain_suffix) {
|
||||||
|
res << QString("suffix:" + suffix);
|
||||||
|
}
|
||||||
|
for (const auto& keyword: item->domain_keyword) {
|
||||||
|
res << QString("keyword:" + keyword);
|
||||||
|
}
|
||||||
|
for (const auto& regex: item->domain_regex) {
|
||||||
|
res << QString("regex:" + regex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,6 +77,6 @@ namespace NekoGui {
|
|||||||
|
|
||||||
std::shared_ptr<QStringList> get_used_rule_sets();
|
std::shared_ptr<QStringList> get_used_rule_sets();
|
||||||
|
|
||||||
QStringList get_direct_site_rule_sets();
|
QStringList get_direct_sites();
|
||||||
};
|
};
|
||||||
} // namespace NekoGui
|
} // namespace NekoGui
|
||||||
Loading…
Reference in New Issue
Block a user