This commit is contained in:
itdoginfo
2024-12-14 22:56:31 +03:00
parent 9e599450f6
commit a6a171ef47
5 changed files with 49 additions and 13 deletions

View File

@@ -27,6 +27,7 @@ main() {
[ -f /etc/config/dhcp-opkg ] && cp /etc/config/dhcp /etc/config/dhcp-old && mv /etc/config/dhcp-opkg /etc/config/dhcp [ -f /etc/config/dhcp-opkg ] && cp /etc/config/dhcp /etc/config/dhcp-old && mv /etc/config/dhcp-opkg /etc/config/dhcp
fi fi
openwrt_release=$(cat /etc/openwrt_release | grep -Eo [0-9]{2}[.][0-9]{2}[.][0-9]* | cut -d '.' -f 1 | tail -n 1) openwrt_release=$(cat /etc/openwrt_release | grep -Eo [0-9]{2}[.][0-9]{2}[.][0-9]* | cut -d '.' -f 1 | tail -n 1)
if [ $openwrt_release -ge 24 ]; then if [ $openwrt_release -ge 24 ]; then
if uci get dhcp.@dnsmasq[0].confdir | grep -q /tmp/dnsmasq.d; then if uci get dhcp.@dnsmasq[0].confdir | grep -q /tmp/dnsmasq.d; then
@@ -37,6 +38,7 @@ main() {
uci commit dhcp uci commit dhcp
fi fi
fi fi
if [ -f "/etc/init.d/podkop" ]; then if [ -f "/etc/init.d/podkop" ]; then
printf "\033[32;1mPodkop is already installed. Just upgrade it? (y/n)\033[0m\n" printf "\033[32;1mPodkop is already installed. Just upgrade it? (y/n)\033[0m\n"
printf "\033[32;1my - Only upgrade podkop\033[0m\n" printf "\033[32;1my - Only upgrade podkop\033[0m\n"
@@ -393,7 +395,8 @@ check_system() {
# Check available space # Check available space
AVAILABLE_SPACE=$(df /tmp | awk 'NR==2 {print $4}') AVAILABLE_SPACE=$(df /tmp | awk 'NR==2 {print $4}')
REQUIRED_SPACE=20480 # 20MB in KB # Change after switch sing-box
REQUIRED_SPACE=1024 # 20MB in KB
echo "Available space: $((AVAILABLE_SPACE/1024))MB" echo "Available space: $((AVAILABLE_SPACE/1024))MB"
echo "Required space: $((REQUIRED_SPACE/1024))MB" echo "Required space: $((REQUIRED_SPACE/1024))MB"

View File

@@ -167,6 +167,32 @@ return view.extend({
return true; return true;
}; };
o = s.taboption('basic', form.Flag, 'custom_local_domains_list_enabled', _('Local Domain Lists'), _('Use the list from the router filesystem'));
o.default = '0';
o.rmempty = false;
o.ucisection = 'main';
o = s.taboption('basic', form.DynamicList, 'custom_local_domains', _('Local Domain Lists Path'), _('Enter to the list file path'));
o.placeholder = '/path/file.lst';
o.depends('custom_local_domains_list_enabled', '1');
o.rmempty = false;
o.ucisection = 'main';
o.validate = function (section_id, value) {
if (!value || value.length === 0) {
return true;
}
try {
const pathRegex = /^\/[a-zA-Z0-9_\-\/\.]+$/;
if (!pathRegex.test(value)) {
throw new Error(_('Invalid path format. Path must start with "/" and contain only valid characters (letters, numbers, "-", "_", "/", ".")'));
}
return true;
} catch (e) {
return _('Invalid path format');
}
};
o = s.taboption('basic', form.Flag, 'custom_download_domains_list_enabled', _('Remote Domain Lists'), _('Download and use domain lists from remote URLs')); o = s.taboption('basic', form.Flag, 'custom_download_domains_list_enabled', _('Remote Domain Lists'), _('Download and use domain lists from remote URLs'));
o.default = '0'; o.default = '0';
o.rmempty = false; o.rmempty = false;

View File

@@ -2,10 +2,14 @@
"luci-app-podkop": { "luci-app-podkop": {
"description": "Grant UCI and RPC access to LuCI app podkop", "description": "Grant UCI and RPC access to LuCI app podkop",
"read": { "read": {
"file": {
"/etc/init.d/podkop": [
"exec"
]
},
"ubus": { "ubus": {
"luci.podkop": [ "service": [
"get_sample1", "list"
"get_sample2"
] ]
}, },
"uci": [ "uci": [
@@ -18,4 +22,4 @@
] ]
} }
} }
} }

View File

@@ -1,8 +1,8 @@
config main 'main' config main 'main'
option mode '' option mode ''
option interface '' option interface ''
option proxy_config_type '' option proxy_config_type ''
#option outbound_json '' #option outbound_json ''
#option proxy_string '' #option proxy_string ''
option domain_list_enabled '1' option domain_list_enabled '1'
option domain_list 'ru_inside' option domain_list 'ru_inside'
@@ -30,14 +30,14 @@ config main 'main'
option socks5 '0' option socks5 '0'
option exclude_ntp '0' option exclude_ntp '0'
option update_interval '' option update_interval ''
option custom_domains_text option custom_domains_text
config second 'second' config second 'second'
option second_enable '0' option second_enable '0'
option second_mode 'proxy' option second_mode 'proxy'
option second_interface '' option second_interface ''
option second_proxy_config_type '' option second_proxy_config_type ''
#option second_outbound_json '' #option second_outbound_json ''
#option second_proxy_string '' #option second_proxy_string ''
option second_domain_service_enabled '0' option second_domain_service_enabled '0'
#list second_service_list 'youtube' #list second_service_list 'youtube'

View File

@@ -692,7 +692,7 @@ lists_domains_download() {
count=0 count=0
while true; do while true; do
if ping -c 1 -W 3 github.com >/dev/null 2>&1; then if curl -m 3 github.com; then
wget -q -O /tmp/dnsmasq.d/podkop-domains.lst $URL wget -q -O /tmp/dnsmasq.d/podkop-domains.lst $URL
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
sed -i 's/fw4#vpn_domains/PodkopTable#podkop_domains/g' /tmp/dnsmasq.d/podkop-domains.lst sed -i 's/fw4#vpn_domains/PodkopTable#podkop_domains/g' /tmp/dnsmasq.d/podkop-domains.lst
@@ -783,6 +783,7 @@ list_subnets_download() {
esac esac
local filename=$(basename "$URL") local filename=$(basename "$URL")
mkdir -p /tmp/podkop
wget -q -O "/tmp/podkop/$filename" "$URL" wget -q -O "/tmp/podkop/$filename" "$URL"
while IFS= read -r subnet; do while IFS= read -r subnet; do
nft add element inet PodkopTable podkop_subnets { $subnet } nft add element inet PodkopTable podkop_subnets { $subnet }
@@ -816,6 +817,7 @@ list_custom_download_domains_create() {
local config="/tmp/dnsmasq.d/${name}-${filename}.lst" local config="/tmp/dnsmasq.d/${name}-${filename}.lst"
rm -f "$config" rm -f "$config"
mkdir -p /tmp/podkop
wget -q -O "/tmp/podkop/${filename}" "$URL" wget -q -O "/tmp/podkop/${filename}" "$URL"
while IFS= read -r domain; do while IFS= read -r domain; do
echo "nftset=/$domain/4#inet#PodkopTable#${name}_domains" >>$config echo "nftset=/$domain/4#inet#PodkopTable#${name}_domains" >>$config
@@ -1148,7 +1150,8 @@ check_proxy() {
response=$(sing-box tools fetch ifconfig.me -D /etc/sing-box 2>/dev/null) response=$(sing-box tools fetch ifconfig.me -D /etc/sing-box 2>/dev/null)
if ! echo "$response" | grep -q "403 Forbidden"; then if ! echo "$response" | grep -q "403 Forbidden"; then
nolog "Proxy check completed successfully" nolog "Proxy check completed successfully"
echo "$response" | sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)/XXX.\2.\3.\4/' #echo "$response" | sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)/XXX.\2.\3.\4/'
echo "$response" | sed -n 's/^[0-9]\+\.[0-9]\+\.[0-9]\+\.\([0-9]\+\)$/X.X.X.\1/p'
return 0 return 0
fi fi
done done
@@ -1188,7 +1191,7 @@ check_nft() {
check_github() { check_github() {
nolog "Checking GitHub connectivity..." nolog "Checking GitHub connectivity..."
if ! ping -c 1 -W 3 github.com >/dev/null 2>&1; then if ! curl -m 3 github.com; then
nolog "Error: Cannot connect to GitHub" nolog "Error: Cannot connect to GitHub"
return 1 return 1
fi fi