mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-06 19:46:52 +03:00
Added backup dhcp and don't touch dhcp. Firefox disable doh FQDN moved to sing-box
This commit is contained in:
@@ -102,6 +102,8 @@ Luci: Services/podkop
|
||||
list doh_server '127.0.0.1#5054'
|
||||
```
|
||||
- [x] Только кастомный remote list не создаёт секцию в route-rules-rule-set и dns-rules-ruleset
|
||||
- [ ] Не отрабатывает service podkop stop, если podkop запущен и не может, к пример, зарезолвить домен с сломанным DNS
|
||||
- [ ] Всплывает в логах при старте. Не каждый раз. На работу не влияет. Wed Feb 19 17:12:28 2025 daemon.err sh[17665]: Command failed: ubus call service delete { "name": "sing-box" } (Not found)
|
||||
|
||||
# ToDo
|
||||
Этот раздел не означает задачи, которые нужно брать и делать. Это общий список хотелок. Если вы хотите помочь, пожалуйста, спросите сначала в телеграмме.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-podkop
|
||||
PKG_VERSION:=0.3.10
|
||||
PKG_VERSION:=0.3.11
|
||||
PKG_RELEASE:=1
|
||||
|
||||
LUCI_TITLE:=LuCI podkop app
|
||||
|
||||
@@ -628,6 +628,11 @@ return view.extend({
|
||||
o.rmempty = false;
|
||||
o.ucisection = 'main';
|
||||
|
||||
o = s.taboption('additional', form.Flag, 'dont_touch_dhcp', _('Dont touch my DHCP!'), _('Podkop will not change the DHCP config'));
|
||||
o.default = '0';
|
||||
o.rmempty = false;
|
||||
o.ucisection = 'main';
|
||||
|
||||
o = s.taboption('additional', form.Flag, 'exclude_ntp', _('Exclude NTP'), _('For issues with open connections sing-box'));
|
||||
o.default = '0';
|
||||
o.rmempty = false;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=podkop
|
||||
PKG_VERSION:=0.3.10
|
||||
PKG_VERSION:=0.3.11
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_MAINTAINER:=ITDog <podkop@itdog.info>
|
||||
|
||||
@@ -29,5 +29,6 @@ config main 'main'
|
||||
option socks5 '0'
|
||||
option exclude_ntp '0'
|
||||
option quic_disable '0'
|
||||
option dont_touch_dhcp '0'
|
||||
option update_interval '1d'
|
||||
option custom_domains_text
|
||||
@@ -75,7 +75,11 @@ start_service() {
|
||||
stop_service() {
|
||||
log "Stopping the podkop"
|
||||
remove_cron_job
|
||||
dnsmasq_rm
|
||||
|
||||
config_get_bool dont_touch_dhcp "main" "dont_touch_dhcp" "0"
|
||||
if [ "$dont_touch_dhcp" -eq 0 ]; then
|
||||
dnsmasq_restore
|
||||
fi
|
||||
|
||||
rm -rf /tmp/podkop/*.lst
|
||||
|
||||
@@ -205,7 +209,10 @@ main() {
|
||||
config_get interface "main" "interface"
|
||||
|
||||
if [ -n "$proxy_string" ] || [ -n "$interface" ]; then
|
||||
dnsmasq_add
|
||||
config_get_bool dont_touch_dhcp "main" "dont_touch_dhcp" "0"
|
||||
if [ "$dont_touch_dhcp" -eq 0 ]; then
|
||||
dnsmasq_add_resolver
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -315,27 +322,71 @@ create_nft_table() {
|
||||
nft add rule inet $table proxy meta mark 0x105 meta l4proto udp tproxy ip to :1602 counter
|
||||
}
|
||||
|
||||
dnsmasq_add() {
|
||||
## Future: Check config and skip restart
|
||||
save_dnsmasq_config() {
|
||||
local key="$1"
|
||||
local backup_key="$2"
|
||||
value=$(uci get "$key" 2>/dev/null)
|
||||
|
||||
if [ -z "$value" ]; then
|
||||
uci -q delete "$backup_key"
|
||||
else
|
||||
uci set "$backup_key"="$value"
|
||||
fi
|
||||
}
|
||||
|
||||
dnsmasq_add_resolver() {
|
||||
log "Save dnsmasq config"
|
||||
save_dnsmasq_config "dhcp.@dnsmasq[0].noresolv" "dhcp.@dnsmasq[0].podkop_noresolv"
|
||||
save_dnsmasq_config "dhcp.@dnsmasq[0].cachesize" "dhcp.@dnsmasq[0].podkop_cachesize"
|
||||
|
||||
uci -q delete dhcp.@dnsmasq[0].podkop_server
|
||||
for server in $(uci get dhcp.@dnsmasq[0].server 2>/dev/null); do
|
||||
if [[ "$server" == "127.0.0.42" ]]; then
|
||||
log "Dnsmasq save config error: server=127.0.0.42"
|
||||
else
|
||||
uci add_list dhcp.@dnsmasq[0].podkop_server="$server"
|
||||
fi
|
||||
done
|
||||
|
||||
log "Configure dnsmasq for sing-box"
|
||||
uci set dhcp.@dnsmasq[0].noresolv="1"
|
||||
uci set dhcp.@dnsmasq[0].filter_aaaa="1"
|
||||
uci set dhcp.@dnsmasq[0].cachesize="0"
|
||||
uci -q delete dhcp.@dnsmasq[0].server
|
||||
uci add_list dhcp.@dnsmasq[0].server="127.0.0.42"
|
||||
uci add_list dhcp.@dnsmasq[0].server='/use-application-dns.net/'
|
||||
uci commit dhcp
|
||||
|
||||
/etc/init.d/dnsmasq restart
|
||||
}
|
||||
|
||||
dnsmasq_rm() {
|
||||
dnsmasq_restore() {
|
||||
log "Removing configuration for dnsmasq"
|
||||
uci set dhcp.@dnsmasq[0].noresolv="0"
|
||||
uci set dhcp.@dnsmasq[0].filter_aaaa="0"
|
||||
uci set dhcp.@dnsmasq[0].cachesize="1000"
|
||||
uci -q delete dhcp.@dnsmasq[0].server
|
||||
uci add_list dhcp.@dnsmasq[0].server="8.8.8.8"
|
||||
|
||||
local cachesize=$(uci get dhcp.@dnsmasq[0].podkop_cachesize 2>/dev/null)
|
||||
if [ -z "$cachesize" ]; then
|
||||
log "dnsmasq revert: cachesize is unset"
|
||||
else
|
||||
uci set dhcp.@dnsmasq[0].cachesize="$cachesize"
|
||||
fi
|
||||
|
||||
local noresolv=$(uci get dhcp.@dnsmasq[0].podkop_noresolv 2>/dev/null)
|
||||
if [ -z "$noresolv" ]; then
|
||||
log "dnsmasq revert: noresolv is unset"
|
||||
else
|
||||
uci set dhcp.@dnsmasq[0].noresolv="$noresolv"
|
||||
fi
|
||||
|
||||
local server=$(uci get dhcp.@dnsmasq[0].server 2>/dev/null)
|
||||
if [[ "$server" == "127.0.0.42" ]]; then
|
||||
uci -q delete dhcp.@dnsmasq[0].server
|
||||
for server in $(uci get dhcp.@dnsmasq[0].podkop_server 2>/dev/null); do
|
||||
uci add_list dhcp.@dnsmasq[0].server="$server"
|
||||
done
|
||||
uci delete dhcp.@dnsmasq[0].podkop_server
|
||||
fi
|
||||
|
||||
uci delete dhcp.@dnsmasq[0].podkop_cachesize
|
||||
uci delete dhcp.@dnsmasq[0].podkop_noresolv
|
||||
|
||||
uci commit dhcp
|
||||
|
||||
/etc/init.d/dnsmasq restart
|
||||
@@ -600,6 +651,12 @@ sing_box_dns_rule_fakeip() {
|
||||
"action": "reject"
|
||||
},
|
||||
{
|
||||
"domain_suffix": [
|
||||
"use-application-dns.net"
|
||||
],
|
||||
"action": "reject"
|
||||
},
|
||||
{
|
||||
"server": "fakeip-server",
|
||||
"rule_set": []
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user