Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add 'fake-ip-filter-mode' in 'dns' #4011

Merged
merged 5 commits into from
Sep 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,13 @@ if op_mode == "fake-ip" then
o = s:taboption("dns", Flag, "custom_fakeip_filter", translate("Fake-IP-Filter"))
o.default = 0

o = s:taboption("dns", ListValue, "custom_fakeip_filter_mode", translate("Fake-IP-Filter-Mode"))
o.description = translate("Fake-IP is not returned if the matching succeeds when blacklist mode or Fake-IP is returned if the matching succeeds when whitelist mode")
o.default = "blacklist"
o:value("blacklist", translate("Blacklist Mode"))
o:value("whitelist", translate("Whitelist Mode"))
o:depends("custom_fakeip_filter", "1")

custom_fake_black = s:taboption("dns", Value, "custom_fake_filter")
custom_fake_black.template = "cbi/tvalue"
custom_fake_black.description = translate("Domain Names In The List Do Not Return Fake-IP, One rule per line")
Expand Down
15 changes: 15 additions & 0 deletions luci-app-openclash/po/zh-cn/openclash.zh-cn.po
Original file line number Diff line number Diff line change
Expand Up @@ -3356,3 +3356,18 @@ msgstr "指定正确的 LAN 接口名称"

msgid "For More Useful Meta Core Functions Go Wiki"
msgstr "如需要了解更多关于 Meta 内核的功能,请前往 Wiki"

msgid "Tip: Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule"
msgstr "提示:为保证绕过 IP 正常工作,已在 Fake-IP-Filter 中删除规则"

msgid "Tip: Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule"
msgstr "提示:为保证绕过 IP 正常工作,已在 Fake-IP-Filter 中添加规则"

msgid "Fake-IP is not returned if the matching succeeds when blacklist mode or Fake-IP is returned if the matching succeeds when whitelist mode"
msgstr "黑名单模式表示如果匹配成功则不返回 Fake-IP, 白名单模式时只有匹配成功才返回 Fake-IP"

msgid "Blacklist Mode"
msgstr "黑名单模式"

msgid "Whitelist Mode"
msgstr "白名单模式"
3 changes: 2 additions & 1 deletion luci-app-openclash/root/etc/init.d/openclash
Original file line number Diff line number Diff line change
Expand Up @@ -2880,6 +2880,7 @@ get_config()
keep_alive_interval=$(uci -q get openclash.config.keep_alive_interval || echo "0")
proxy_dns_group=$(uci -q get openclash.config.proxy_dns_group || echo "Disable")
intranet_allowed_wan_name=$(uci -q get openclash.config.intranet_allowed_wan_name || echo "0")
custom_fakeip_filter_mode=$(uci -q get openclash.config.custom_fakeip_filter_mode || echo "blacklist")
[ -z "$dns_port" ] && dns_port=7874 && uci -q set openclash.config.dns_port=7874
uci -q commit openclash
}
Expand Down Expand Up @@ -2907,7 +2908,7 @@ start()
if ! $quick_start; then
LOG_OUT "Step 3: Modify The Config File..."
config_check
/usr/share/openclash/yml_change.sh 2>/dev/null "$en_mode" "$da_password" "$cn_port" "$proxy_port" "$TMP_CONFIG_FILE" "$ipv6_enable" "$http_port" "$socks_port" "$log_level" "$proxy_mode" "$en_mode_tun" "$stack_type" "$dns_port" "$mixed_port" "$tproxy_port" "$ipv6_dns" "$store_fakeip" "$enable_meta_sniffer" "$enable_geoip_dat" "$geodata_loader" "$enable_meta_sniffer_custom" "$interface_name" "$enable_tcp_concurrent" "$core_type" "$append_default_dns" "$enable_meta_sniffer_pure_ip" "$find_process_mode" "$fakeip_range" "$global_client_fingerprint" "$ipv6_mode" "$stack_type_v6" "$enable_unified_delay" "$keep_alive_interval" "$proxy_dns_group"
/usr/share/openclash/yml_change.sh 2>/dev/null "$en_mode" "$da_password" "$cn_port" "$proxy_port" "$TMP_CONFIG_FILE" "$ipv6_enable" "$http_port" "$socks_port" "$log_level" "$proxy_mode" "$en_mode_tun" "$stack_type" "$dns_port" "$mixed_port" "$tproxy_port" "$ipv6_dns" "$store_fakeip" "$enable_meta_sniffer" "$enable_geoip_dat" "$geodata_loader" "$enable_meta_sniffer_custom" "$interface_name" "$enable_tcp_concurrent" "$core_type" "$append_default_dns" "$enable_meta_sniffer_pure_ip" "$find_process_mode" "$fakeip_range" "$global_client_fingerprint" "$ipv6_mode" "$stack_type_v6" "$enable_unified_delay" "$keep_alive_interval" "$proxy_dns_group" "$custom_fakeip_filter_mode"
/usr/share/openclash/yml_rules_change.sh 2>/dev/null "$rule_source" "$enable_custom_clash_rules" "$TMP_CONFIG_FILE" "$enable_rule_proxy" "$CONFIG_NAME" "$router_self_proxy" "$lan_ip" "$proxy_port" "$tproxy_port" "$enable_redirect_dns" "$fakeip_range" "$en_mode"
/usr/share/openclash/openclash_custom_domain_dns.sh >/dev/null 2>&1
#Custom overwrite
Expand Down
7 changes: 6 additions & 1 deletion luci-app-openclash/root/usr/share/openclash/res/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,11 @@ dns:
# fake-ip-filter:
# - '*.lan'
# - localhost.ptlogin2.qq.com

# The matching mode of fake-ip-filter is set to a blacklist by default.
# That is, fake-ip is not returned if the matching succeeds
# It can be set to whitelist, that is, fake-ip is returned only after the match is successful
fake-ip-filter-mode: blacklist

# Supports UDP, TCP, DoT, DoH. You can specify the port to connect to.
# All DNS questions are sent directly to the nameserver, without proxies
Expand Down Expand Up @@ -469,4 +474,4 @@ rules:
- DST-PORT,80,DIRECT
- SRC-PORT,7777,DIRECT
- RULE-SET,apple,REJECT # Premium only
- MATCH,auto
- MATCH,auto
27 changes: 22 additions & 5 deletions luci-app-openclash/root/usr/share/openclash/yml_change.sh
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,11 @@ end;
begin
Thread.new{
if '$custom_fakeip_filter' == '1' then
if '${35}' == 'whitelist' then
Value['dns']['fake-ip-filter-mode']='whitelist';
else
Value['dns']['fake-ip-filter-mode']='blacklist';
end;
if '$1' == 'fake-ip' then
if File::exist?('/etc/openclash/custom/openclash_custom_fake_filter.list') then
Value_4 = IO.readlines('/etc/openclash/custom/openclash_custom_fake_filter.list');
Expand Down Expand Up @@ -702,12 +707,24 @@ Thread.new{
end;
if '$1' == 'fake-ip' then
if '$china_ip_route' != '0' then
if Value['dns'].has_key?('fake-ip-filter') and not Value['dns']['fake-ip-filter'].to_a.empty? then
Value['dns']['fake-ip-filter'].insert(-1,'geosite:category-games@cn');
Value['dns']['fake-ip-filter'].insert(-1,'geosite:cn');
Value['dns']['fake-ip-filter']=Value['dns']['fake-ip-filter'].uniq;
if Value['dns']['fake-ip-filter-mode'] == 'blacklist' or not Value['dns'].has_key?('fake-ip-filter-mode') then
if Value['dns'].has_key?('fake-ip-filter') and not Value['dns']['fake-ip-filter'].to_a.empty? then
Value['dns']['fake-ip-filter'].insert(-1,'geosite:category-games@cn');
Value['dns']['fake-ip-filter'].insert(-1,'geosite:cn');
Value['dns']['fake-ip-filter']=Value['dns']['fake-ip-filter'].uniq;
else
Value['dns'].merge!({'fake-ip-filter'=>['geosite:category-games@cn,geosite:cn']});
end;
puts '${LOGTIME} Tip: Because Need Ensure Bypassing IP Option Work, Added The Fake-IP-Filter Rule【 geosite:category-games@cn,geosite:cn 】';
else
Value['dns'].merge!({'fake-ip-filter'=>['geosite:category-games@cn,geosite:cn']});
if Value['dns'].has_key?('fake-ip-filter') and not Value['dns']['fake-ip-filter'].to_a.empty? then
Value['dns']['fake-ip-filter'].each{|x|
if x =~ /(geosite:?).*(@cn|:cn)/ then
Value['dns']['fake-ip-filter'].delete(x);
puts '${LOGTIME} Tip: Because Need Ensure Bypassing IP Option Work, Deleted The Fake-IP-Filter Rule【' + x + '】';
end;
};
end;
end;
end;
end;
Expand Down