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
if(ruleSetMap.count(QUrl(item).fileName().toStdString()) > 0) {
if(ruleSetMap.count(item.toStdString()) > 0) {
ruleSetArray += QJsonObject{
{"type", "remote"},
{"tag", item},
{"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

@ -23,7 +23,7 @@ namespace Configs {
return false;
}
RouteRule::RouteRule() {
RouteRule::RouteRule() {
_add(new configItem("name", &name, itemType::string));
_add(new configItem("ip_version", &ip_version, itemType::string));
_add(new configItem("network", &network, itemType::string));
@ -601,6 +601,20 @@ namespace Configs {
}
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>();
for (const auto& item: Rules) {
for (const auto& ruleItem: item->rule_set) {
@ -615,7 +629,7 @@ namespace Configs {
for (const auto& item: Rules) {
if (item->outboundID == -2) {
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) {
res << QString("domain:" + domain);
@ -640,7 +654,7 @@ namespace Configs {
for (const auto& item: Rules) {
if (item->outboundID == -2) {
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) {
res << QString("ip:" + domain);

View File

@ -442,9 +442,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
}
else
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);

View File

@ -65,7 +65,7 @@ RouteItem::RouteItem(QWidget *parent, const std::shared_ptr<Configs::RoutingChai
// setup rule set helper
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);
ui->rule_attr_data->layout()->addWidget(rule_set_editor);