From 1f3a65347e3735e99ae675130a9029e34149a1a2 Mon Sep 17 00:00:00 2001 From: Nikita Skryabin Date: Thu, 20 Feb 2025 23:27:50 +0300 Subject: [PATCH] feat(podkop): add DNS Rewrite TTL configuration option --- .../resources/view/podkop/podkop.js | 18 ++++++++++++++++++ podkop/files/etc/init.d/podkop | 15 ++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js index 01f02fc..88f310c 100644 --- a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js +++ b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js @@ -697,6 +697,24 @@ return view.extend({ return true; }; + o = s.taboption('additional', form.Value, 'dns_rewrite_ttl', 'DNS Rewrite TTL', 'Time in seconds for DNS record caching (default: 600)'); + o.default = '600'; + o.rmempty = false; + o.ucisection = 'main'; + + o.validate = function (section_id, value) { + if (!value) { + return 'TTL value cannot be empty'; + } + + const ttl = parseInt(value); + if (isNaN(ttl) || ttl < 0) { + return 'TTL must be a positive number'; + } + + return true; + }; + o = s.taboption('additional', form.Value, 'cache_file', 'Cache File Path', 'Select or enter path for sing-box cache file'); o.value('/tmp/cache.db', 'RAM (/tmp/cache.db)'); o.value('/usr/share/sing-box/cache.db', 'Flash (/usr/share/sing-box/cache.db)'); diff --git a/podkop/files/etc/init.d/podkop b/podkop/files/etc/init.d/podkop index 30794e1..1de6917 100755 --- a/podkop/files/etc/init.d/podkop +++ b/podkop/files/etc/init.d/podkop @@ -709,8 +709,13 @@ sing_box_dns() { } sing_box_dns_rule_fakeip() { - log "Configure fakeip route in sing-box" + local rewrite_ttl + config_get rewrite_ttl "main" "dns_rewrite_ttl" "600" + + log "Configure fakeip route in sing-box and set TTL to $rewrite_ttl seconds" + jq \ + --arg ttl "$rewrite_ttl" \ '.dns += { "rules": [ { @@ -727,6 +732,8 @@ sing_box_dns_rule_fakeip() { }, { "server": "fakeip-server", + "domain": "", + "rewrite_ttl": ($ttl | tonumber), "rule_set": [] } ] @@ -1854,10 +1861,8 @@ sing_box_add_secure_dns_probe_domain() { --arg override "$override_address" \ '.dns.rules |= map( if .server == "fakeip-server" then - { - "server": .server, - "domain": $domain, - "rule_set": .rule_set + . + { + "domain": $domain } else .