mirror of
https://github.com/Mahdi-zarei/nekoray.git
synced 2025-12-19 13:50:12 +08:00
feat: add bypass russia chain
This commit is contained in:
parent
320b599559
commit
24d3bf6176
@ -25,6 +25,7 @@ namespace Configs {
|
||||
enum inputType {trufalse, select, text};
|
||||
const int IranBypassChainID = 111111111;
|
||||
const int ChinaBypassChainID = 222222222;
|
||||
const int RussiaBypassChainID = 333333333;
|
||||
enum ruleType {custom, simpleAddress, simpleProcessName, simpleProcessPath};
|
||||
enum simpleAction{direct, block, proxy};
|
||||
inline QString simpleActionToString(simpleAction action)
|
||||
@ -133,6 +134,8 @@ namespace Configs {
|
||||
|
||||
static std::shared_ptr<RoutingChain> GetChinaDefaultChain();
|
||||
|
||||
static std::shared_ptr<RoutingChain> GetRussiaDefaultChain();
|
||||
|
||||
std::shared_ptr<QList<int>> get_used_outbounds();
|
||||
|
||||
std::shared_ptr<QStringList> get_used_rule_sets();
|
||||
|
||||
@ -113,6 +113,7 @@ namespace Configs {
|
||||
|
||||
routes[IranBypassChainID] = RoutingChain::GetIranDefaultChain();
|
||||
routes[ChinaBypassChainID] = RoutingChain::GetChinaDefaultChain();
|
||||
routes[RussiaBypassChainID] = RoutingChain::GetRussiaDefaultChain();
|
||||
}
|
||||
|
||||
void ProfileManager::SaveManager() {
|
||||
|
||||
@ -578,7 +578,8 @@ namespace Configs {
|
||||
|
||||
bool RoutingChain::isViewOnly() const {
|
||||
return id == IranBypassChainID ||
|
||||
id == ChinaBypassChainID;
|
||||
id == ChinaBypassChainID ||
|
||||
id == RussiaBypassChainID;
|
||||
}
|
||||
|
||||
std::shared_ptr<RoutingChain> RoutingChain::GetDefaultChain() {
|
||||
@ -646,6 +647,33 @@ namespace Configs {
|
||||
return chain;
|
||||
}
|
||||
|
||||
std::shared_ptr<RoutingChain> RoutingChain::GetRussiaDefaultChain() {
|
||||
auto chain = std::make_shared<RoutingChain>();
|
||||
chain->name = "Bypass Russia";
|
||||
chain->id = RussiaBypassChainID;
|
||||
chain->save_control_no_save = true;
|
||||
|
||||
auto rule0 = std::make_shared<RouteRule>();
|
||||
rule0->name = "Route DNS";
|
||||
rule0->action = "hijack-dns";
|
||||
rule0->protocol = "dns";
|
||||
chain->Rules << rule0;
|
||||
|
||||
auto rule1 = std::make_shared<RouteRule>();
|
||||
rule1->rule_set << QString("ru_IP") << QString("category-ru_SITE");
|
||||
rule1->name = "Bypass Russia IPs and Domains";
|
||||
rule1->outboundID = -2;
|
||||
chain->Rules << rule1;
|
||||
|
||||
auto rule2 = std::make_shared<RouteRule>();
|
||||
rule2->name = "Bypass Private IPs";
|
||||
rule2->ip_is_private = true;
|
||||
rule1->outboundID = -2;
|
||||
chain->Rules << rule2;
|
||||
|
||||
return chain;
|
||||
}
|
||||
|
||||
std::shared_ptr<QList<int>> RoutingChain::get_used_outbounds() {
|
||||
auto res = std::make_shared<QList<int>>();
|
||||
for (const auto& item: Rules) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user