feat: auto-mapping old rule-set name

This commit is contained in:
parhelia512 2025-08-16 13:21:01 +08:00
parent 83df3706b8
commit ee2e5c4e87
4 changed files with 22 additions and 8 deletions

View File

@ -753,12 +753,12 @@ namespace Configs {
}; };
} }
else else
if(ruleSetMap.count(QUrl(item).fileName().toStdString()) > 0) { if(ruleSetMap.count(item.toStdString()) > 0) {
ruleSetArray += QJsonObject{ ruleSetArray += QJsonObject{
{"type", "remote"}, {"type", "remote"},
{"tag", item}, {"tag", item},
{"format", "binary"}, {"format", "binary"},
{"url", get_jsdelivr_link(QString::fromStdString(ruleSetMap.at(QUrl(item).fileName().toStdString())))}, {"url", get_jsdelivr_link(QString::fromStdString(ruleSetMap.at(item.toStdString())))},
}; };
} }
} }

View File

@ -601,6 +601,20 @@ namespace Configs {
} }
std::shared_ptr<QStringList> RoutingChain::get_used_rule_sets() { std::shared_ptr<QStringList> RoutingChain::get_used_rule_sets() {
// will be removed on November 1st, 2025
for (auto ruleItem = Rules.begin(); ruleItem != Rules.end(); ++ruleItem) {
for (auto ruleSetItem = (*ruleItem)->rule_set.begin(); ruleSetItem != (*ruleItem)->rule_set.end(); ++ruleSetItem) {
if ((*ruleSetItem).endsWith("_IP")) {
*ruleSetItem = "geoip-" + (*ruleSetItem).left((*ruleSetItem).length() - 3);
}
if ((*ruleSetItem).endsWith("_SITE")) {
*ruleSetItem = "geosite-" + (*ruleSetItem).left((*ruleSetItem).length() - 5);
}
}
}
Save();
auto res = std::make_shared<QStringList>(); auto res = std::make_shared<QStringList>();
for (const auto& item: Rules) { for (const auto& item: Rules) {
for (const auto& ruleItem: item->rule_set) { for (const auto& ruleItem: item->rule_set) {
@ -615,7 +629,7 @@ namespace Configs {
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 << QString("ruleset:" + rset); if (rset.startsWith("geosite-")) res << QString("ruleset:" + rset);
} }
for (const auto& domain: item->domain) { for (const auto& domain: item->domain) {
res << QString("domain:" + domain); res << QString("domain:" + domain);
@ -640,7 +654,7 @@ namespace Configs {
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("_IP")) res << QString("ruleset:" + rset); if (rset.startsWith("geoip-")) res << QString("ruleset:" + rset);
} }
for (const auto& domain: item->ip_cidr) { for (const auto& domain: item->ip_cidr) {
res << QString("ip:" + domain); res << QString("ip:" + domain);

View File

@ -442,9 +442,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
} }
else else
err = resp.error; err = resp.error;
QThread::sleep(2); QThread::sleep(30);
} }
MW_show_log(QObject::tr("Requesting rule-set error: %1").arg(err)); MW_show_log(QObject::tr("Requesting rule-set list error: %1").arg(err));
}; };
runOnNewThread(getRuleSet); runOnNewThread(getRuleSet);

View File

@ -65,7 +65,7 @@ RouteItem::RouteItem(QWidget *parent, const std::shared_ptr<Configs::RoutingChai
// setup rule set helper // setup rule set helper
for (const auto& item : ruleSetMap) { for (const auto& item : ruleSetMap) {
geo_items.append("ruleset:" + QString::fromStdString(item.first)); geo_items.append(QString::fromStdString(item.first));
} }
rule_set_editor = new AutoCompleteTextEdit("", geo_items, this); rule_set_editor = new AutoCompleteTextEdit("", geo_items, this);
ui->rule_attr_data->layout()->addWidget(rule_set_editor); ui->rule_attr_data->layout()->addWidget(rule_set_editor);