diff --git a/README.md b/README.md index 2aa680e..ed17e22 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,8 @@ opkg update && opkg install sing-box - [x] awg работает не стабильно - [x] Сеть рестартится при любом раскладе - [x] Выкл-вкл wg через luci не отрабатывает поднятие маршрута +- [ ] Проблема скачивания списка из github release. Нужен curl -L +- [ ] Если eof после последней строки в rt_tables, то скрипт не добавляет перенос строки # ToDo Сделано @@ -124,6 +126,7 @@ opkg update && opkg install sing-box 3) включен, версия 1 (старые релизы xray, sing-box на сервере) Проблема в том, что это нужно только если SS. Выставлять выбор при парсинг из конфига вопрос можно ли. Если совсем тупо - сделать костыль в допонительные настройки - [ ] Проверка места в скрипте install. Если доступно меньше 20MB - exit 1 c выводом колько надо и сколько доступно. + показ модели роутера +- [ ] Правило запрещающее QUIC Приоритет 2 - [ ] Списки доменов и подсетей с роутера @@ -131,6 +134,7 @@ opkg update && opkg install sing-box - [ ] IPv6 - [ ] Придумать автонастройку DNS через stubby итд. Как лучше это реализовать. - [ ] Удаление подсетей CF из domain sets раз в N часов +- [ ] Поменять curl на wget, убрать зависимость Wiki - [x] Тема diff --git a/install.sh b/install.sh index 218288e..bba883f 100755 --- a/install.sh +++ b/install.sh @@ -25,7 +25,16 @@ main() { [ -f /etc/config/dhcp-opkg ] && cp /etc/config/dhcp /etc/config/dhcp-old && mv /etc/config/dhcp-opkg /etc/config/dhcp fi - + 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 uci get dhcp.@dnsmasq[0].confdir | grep -q /tmp/dnsmasq.d; then + echo "confdir alreadt set" + else + printf "Setting confdir" + uci set dhcp.@dnsmasq[0].confdir='/tmp/dnsmasq.d' + uci commit dhcp + fi + fi 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;1my - Only upgrade podkop\033[0m\n" diff --git a/podkop/files/etc/config/podkop b/podkop/files/etc/config/podkop index 7d9231d..bba0e6f 100644 --- a/podkop/files/etc/config/podkop +++ b/podkop/files/etc/config/podkop @@ -11,6 +11,8 @@ config main 'main' option custom_domains_list_type 'disable' #list custom_domains '' #option custom_domains_text '' + option custom_local_domains_list_enabled '0' + #list custom_local_domains '' option custom_download_domains_list_enabled '0' #list custom_download_domains '' option custom_domains_list_type 'disable' diff --git a/podkop/files/etc/init.d/podkop b/podkop/files/etc/init.d/podkop index 94715a8..9d05307 100755 --- a/podkop/files/etc/init.d/podkop +++ b/podkop/files/etc/init.d/podkop @@ -403,6 +403,13 @@ list_update() { fi # Main domains delist + config_get_bool custom_local_domains_list_enabled "main" "custom_local_domains_list_enabled" "0" + if [ "$custom_local_domains_list_enabled" -eq 1 ]; then + log "Adding a custom local domain list" + add_set "podkop_domains" "main" + config_list_foreach main custom_local_domains "list_custom_local_domains_create" "podkop" + fi + config_get_bool delist_domains_enabled "main" "delist_domains_enabled" "0" if [ "$delist_domains_enabled" -eq 1 ] && [ "$domain_list_enabled" -eq 1 ]; then log "Exclude domains from the common list" @@ -765,6 +772,19 @@ list_custom_domains_create() { log "$domain added to the list" } +list_custom_local_domains_create() { + local local_file="$1" + local name="$2" + local filename=$(basename "$local_file" | cut -d. -f1) + local config="/tmp/dnsmasq.d/${name}-${filename}.lst" + + rm -f $config + while IFS= read -r domain; do + echo "nftset=/$domain/4#inet#PodkopTable#${name}_domains" >>$config + done <"$local_file" + dnsmasq_config_check ${name}-${filename}.lst +} + list_custom_download_domains_create() { local URL="$1" local name="$2"