mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-07 03:56:55 +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'
|
list doh_server '127.0.0.1#5054'
|
||||||
```
|
```
|
||||||
- [x] Только кастомный remote list не создаёт секцию в route-rules-rule-set и dns-rules-ruleset
|
- [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
|
# ToDo
|
||||||
Этот раздел не означает задачи, которые нужно брать и делать. Это общий список хотелок. Если вы хотите помочь, пожалуйста, спросите сначала в телеграмме.
|
Этот раздел не означает задачи, которые нужно брать и делать. Это общий список хотелок. Если вы хотите помочь, пожалуйста, спросите сначала в телеграмме.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-podkop
|
PKG_NAME:=luci-app-podkop
|
||||||
PKG_VERSION:=0.3.10
|
PKG_VERSION:=0.3.11
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
LUCI_TITLE:=LuCI podkop app
|
LUCI_TITLE:=LuCI podkop app
|
||||||
|
|||||||
@@ -628,6 +628,11 @@ return view.extend({
|
|||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
o.ucisection = 'main';
|
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 = s.taboption('additional', form.Flag, 'exclude_ntp', _('Exclude NTP'), _('For issues with open connections sing-box'));
|
||||||
o.default = '0';
|
o.default = '0';
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=podkop
|
PKG_NAME:=podkop
|
||||||
PKG_VERSION:=0.3.10
|
PKG_VERSION:=0.3.11
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_MAINTAINER:=ITDog <podkop@itdog.info>
|
PKG_MAINTAINER:=ITDog <podkop@itdog.info>
|
||||||
|
|||||||
@@ -29,5 +29,6 @@ config main 'main'
|
|||||||
option socks5 '0'
|
option socks5 '0'
|
||||||
option exclude_ntp '0'
|
option exclude_ntp '0'
|
||||||
option quic_disable '0'
|
option quic_disable '0'
|
||||||
|
option dont_touch_dhcp '0'
|
||||||
option update_interval '1d'
|
option update_interval '1d'
|
||||||
option custom_domains_text
|
option custom_domains_text
|
||||||
@@ -75,7 +75,11 @@ start_service() {
|
|||||||
stop_service() {
|
stop_service() {
|
||||||
log "Stopping the podkop"
|
log "Stopping the podkop"
|
||||||
remove_cron_job
|
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
|
rm -rf /tmp/podkop/*.lst
|
||||||
|
|
||||||
@@ -205,7 +209,10 @@ main() {
|
|||||||
config_get interface "main" "interface"
|
config_get interface "main" "interface"
|
||||||
|
|
||||||
if [ -n "$proxy_string" ] || [ -n "$interface" ]; then
|
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
|
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
|
nft add rule inet $table proxy meta mark 0x105 meta l4proto udp tproxy ip to :1602 counter
|
||||||
}
|
}
|
||||||
|
|
||||||
dnsmasq_add() {
|
save_dnsmasq_config() {
|
||||||
## Future: Check config and skip restart
|
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"
|
log "Configure dnsmasq for sing-box"
|
||||||
uci set dhcp.@dnsmasq[0].noresolv="1"
|
uci set dhcp.@dnsmasq[0].noresolv="1"
|
||||||
uci set dhcp.@dnsmasq[0].filter_aaaa="1"
|
|
||||||
uci set dhcp.@dnsmasq[0].cachesize="0"
|
uci set dhcp.@dnsmasq[0].cachesize="0"
|
||||||
uci -q delete dhcp.@dnsmasq[0].server
|
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="127.0.0.42"
|
||||||
uci add_list dhcp.@dnsmasq[0].server='/use-application-dns.net/'
|
|
||||||
uci commit dhcp
|
uci commit dhcp
|
||||||
|
|
||||||
/etc/init.d/dnsmasq restart
|
/etc/init.d/dnsmasq restart
|
||||||
}
|
}
|
||||||
|
|
||||||
dnsmasq_rm() {
|
dnsmasq_restore() {
|
||||||
log "Removing configuration for dnsmasq"
|
log "Removing configuration for dnsmasq"
|
||||||
uci set dhcp.@dnsmasq[0].noresolv="0"
|
|
||||||
uci set dhcp.@dnsmasq[0].filter_aaaa="0"
|
local cachesize=$(uci get dhcp.@dnsmasq[0].podkop_cachesize 2>/dev/null)
|
||||||
uci set dhcp.@dnsmasq[0].cachesize="1000"
|
if [ -z "$cachesize" ]; then
|
||||||
uci -q delete dhcp.@dnsmasq[0].server
|
log "dnsmasq revert: cachesize is unset"
|
||||||
uci add_list dhcp.@dnsmasq[0].server="8.8.8.8"
|
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
|
uci commit dhcp
|
||||||
|
|
||||||
/etc/init.d/dnsmasq restart
|
/etc/init.d/dnsmasq restart
|
||||||
@@ -600,6 +651,12 @@ sing_box_dns_rule_fakeip() {
|
|||||||
"action": "reject"
|
"action": "reject"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"domain_suffix": [
|
||||||
|
"use-application-dns.net"
|
||||||
|
],
|
||||||
|
"action": "reject"
|
||||||
|
},
|
||||||
|
{
|
||||||
"server": "fakeip-server",
|
"server": "fakeip-server",
|
||||||
"rule_set": []
|
"rule_set": []
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user