feat: Also direct all other domain-based rule conditions

This commit is contained in:
unknown 2024-07-05 11:20:29 +03:30
parent 8a41dd31ae
commit 2c5d35c4bb
No known key found for this signature in database
GPG Key ID: C2CA486E4F771093
3 changed files with 41 additions and 13 deletions

View File

@ -570,24 +570,40 @@ namespace NekoGui {
// Direct dns domains
QJsonArray directDnsDomains;
QJsonArray directDnsRuleSets;
QJsonArray directDnsSuffixes;
QJsonArray directDnsKeywords;
QJsonArray directDnsRegexes;
// server addresses
for (const auto &item: status->domainListDNSDirect) {
directDnsDomains.append(item);
}
if (!directDnsDomains.isEmpty()) {
dnsRules += QJsonObject{
{"domain", directDnsDomains},
{"server", "dns-direct"},
};
}
// Direct domains in rules
QJsonArray directDnsRuleSets;
auto sets = routeChain->get_direct_site_rule_sets();
auto sets = routeChain->get_direct_sites();
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{
{"rule_set", directDnsRuleSets},
{"domain", directDnsDomains},
{"domain_suffix", directDnsSuffixes},
{"domain_keyword", directDnsKeywords},
{"domain_regex", directDnsRegexes},
{"server", "dns-direct"},
};

View File

@ -473,12 +473,24 @@ namespace NekoGui {
return res;
}
QStringList RoutingChain::get_direct_site_rule_sets() {
QStringList RoutingChain::get_direct_sites() {
auto res = QStringList();
for (const auto& item: Rules) {
if (item->outboundID == -2) {
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);
}
}
}

View File

@ -77,6 +77,6 @@ namespace NekoGui {
std::shared_ptr<QStringList> get_used_rule_sets();
QStringList get_direct_site_rule_sets();
QStringList get_direct_sites();
};
} // namespace NekoGui