mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-06 11:36:50 +03:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e86bffb720 | ||
|
|
fb65b63639 | ||
|
|
daf7e30ed1 | ||
|
|
dd62ecfbeb | ||
|
|
41cb8cd650 | ||
|
|
b7ad256986 | ||
|
|
f88ffa1893 |
@@ -20,7 +20,8 @@ sh <(wget -O - https://raw.githubusercontent.com/itdoginfo/domain-routing-openwr
|
||||
|
||||
# Установка Podkop
|
||||
Пакет работает на всех архитектурах.
|
||||
Тестировался на OpenWrt 23.05 и OpenWrt 24.10.
|
||||
Тестировался на **ванильной** OpenWrt 23.05 и OpenWrt 24.10.
|
||||
На FriendlyWrt 23.05 присуствуют зависимости от iptables, которые ломают tproxy. Если у вас появляется warning про это в логах, следуйте инструкции по приведённой там ссылке.
|
||||
|
||||
Поддержки APK на данный момент нет. APK будет сделан после того как разгребу основное.
|
||||
|
||||
@@ -151,6 +152,7 @@ Luci: Services/podkop
|
||||
- [ ] Сделать галку запрещающую подкопу редачить dhcp. Допилить в исключение вместе с пустыми полями proxy и vpn
|
||||
- [ ] Валидации предустановленных значений. Если прописаны другие, то вывод в лог о неизвестной переменной и продолжение работы
|
||||
- [ ] Добавление в список доменов домены первого уровня (LuCI)
|
||||
- [ ] Проверка, что версия в makefile совпадает с тегом
|
||||
|
||||
Приоритет 2
|
||||
- [x] Списки доменов и подсетей с роутера
|
||||
|
||||
122
install.sh
122
install.sh
@@ -13,38 +13,12 @@ main() {
|
||||
check_system
|
||||
sing_box
|
||||
|
||||
wget -qO- "$REPO" | grep -o 'https://[^"[:space:]]*\.ipk' | while read -r url; do
|
||||
filename=$(basename "$url")
|
||||
filepath="$DOWNLOAD_DIR/$filename"
|
||||
|
||||
attempt=0
|
||||
while [ $attempt -lt $COUNT ]; do
|
||||
if [ -f "$filepath" ] && [ -s "$filepath" ]; then
|
||||
echo "$filename has already been uploaded"
|
||||
break
|
||||
fi
|
||||
|
||||
echo "Download $filename (count $((attempt+1)))..."
|
||||
wget -q -O "$filepath" "$url"
|
||||
|
||||
if [ -s "$filepath" ]; then
|
||||
echo "$filename successfully downloaded"
|
||||
break
|
||||
else
|
||||
echo "Download error $filename. Retry..."
|
||||
rm -f "$filepath"
|
||||
fi
|
||||
attempt=$((attempt+1))
|
||||
done
|
||||
done
|
||||
|
||||
echo "opkg update"
|
||||
opkg update
|
||||
|
||||
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"
|
||||
printf "\033[32;1mn - Upgrade and install proxy or tunnels\033[0m\n"
|
||||
printf "\033[32;1mn - Upgrade and install tunnels (WG, AWG, OpenVPN, OC)\033[0m\n"
|
||||
|
||||
while true; do
|
||||
read -r -p '' UPDATE
|
||||
@@ -69,29 +43,59 @@ main() {
|
||||
add_tunnel
|
||||
fi
|
||||
|
||||
opkg install $DOWNLOAD_DIR/podkop*.ipk
|
||||
opkg install $DOWNLOAD_DIR/luci-app-podkop*.ipk
|
||||
wget -qO- "$REPO" | grep -o 'https://[^"[:space:]]*\.ipk' | while read -r url; do
|
||||
filename=$(basename "$url")
|
||||
filepath="$DOWNLOAD_DIR/$filename"
|
||||
|
||||
attempt=0
|
||||
while [ $attempt -lt $COUNT ]; do
|
||||
if [ -f "$filepath" ] && [ -s "$filepath" ]; then
|
||||
echo "$filename has already been uploaded"
|
||||
break
|
||||
fi
|
||||
|
||||
echo "Русский язык интерфейса ставим? y/n (Need a Russian translation?)"
|
||||
while true; do
|
||||
read -r -p '' RUS
|
||||
case $RUS in
|
||||
y)
|
||||
opkg install $DOWNLOAD_DIR/luci-i18n-podkop-ru*.ipk
|
||||
break
|
||||
;;
|
||||
|
||||
n)
|
||||
break
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Please enter y or n"
|
||||
;;
|
||||
esac
|
||||
echo "Download $filename (count $((attempt+1)))..."
|
||||
wget -q -O "$filepath" "$url"
|
||||
|
||||
if [ -s "$filepath" ]; then
|
||||
echo "$filename successfully downloaded"
|
||||
else
|
||||
echo "Download error $filename. Retry..."
|
||||
rm -f "$filepath"
|
||||
fi
|
||||
attempt=$((attempt+1))
|
||||
done
|
||||
done
|
||||
|
||||
for pkg in podkop luci-app-podkop; do
|
||||
file=$(ls "$DOWNLOAD_DIR" | grep "^$pkg" | head -n 1)
|
||||
if [ -n "$file" ]; then
|
||||
echo "Installing $file"
|
||||
opkg install "$DOWNLOAD_DIR/$file"
|
||||
fi
|
||||
done
|
||||
|
||||
ru=$(ls "$DOWNLOAD_DIR" | grep "luci-i18n-podkop-ru" | head -n 1)
|
||||
if [ -n "$ru" ]; then
|
||||
printf "\033[32;1mРусский язык интерфейса ставим? y/n (Need a Russian translation?)\033[0m "
|
||||
while true; do
|
||||
read -r -p '' RUS
|
||||
case $RUS in
|
||||
y)
|
||||
opkg install "$DOWNLOAD_DIR/$ru"
|
||||
break
|
||||
;;
|
||||
n)
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "Введите y или n"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
rm -f $DOWNLOAD_DIR/podkop*.ipk $DOWNLOAD_DIR/luci-app-podkop*.ipk $DOWNLOAD_DIR/luci-i18n-podkop-ru*.ipk
|
||||
|
||||
if [ "$IS_SHOULD_RESTART_NETWORK" ]; then
|
||||
@@ -101,7 +105,7 @@ main() {
|
||||
}
|
||||
|
||||
add_tunnel() {
|
||||
echo "Will you be using Wireguard, AmneziaWG, OpenVPN, OpenConnect? If yes, select a number and they will be automatically installed"
|
||||
printf "\033[32;1mWill you be using Wireguard, AmneziaWG, OpenVPN, OpenConnect? If yes, select a number and they will be automatically installed\033[0m "
|
||||
echo "1) Wireguard"
|
||||
echo "2) AmneziaWG"
|
||||
echo "3) OpenVPN"
|
||||
@@ -153,7 +157,7 @@ add_tunnel() {
|
||||
;;
|
||||
|
||||
5)
|
||||
echo "Skip. Use this if you're installing an upgrade."
|
||||
echo "Installation without additional dependencies."
|
||||
break
|
||||
;;
|
||||
|
||||
@@ -391,21 +395,31 @@ check_system() {
|
||||
echo "Router model: $MODEL"
|
||||
|
||||
# Check available space
|
||||
AVAILABLE_SPACE=$(df /tmp | awk 'NR==2 {print $4}')
|
||||
AVAILABLE_SPACE=$(df /overlay | awk 'NR==2 {print $4}')
|
||||
REQUIRED_SPACE=15360 # 15MB in KB
|
||||
|
||||
echo "Available space: $((AVAILABLE_SPACE/1024))MB"
|
||||
echo "Required space: $((REQUIRED_SPACE/1024))MB"
|
||||
|
||||
if [ "$AVAILABLE_SPACE" -lt "$REQUIRED_SPACE" ]; then
|
||||
echo "Error: Insufficient space in /tmp"
|
||||
printf "\033[31;1mError: Insufficient space in flash\033[0m\n"
|
||||
echo "Available: $((AVAILABLE_SPACE/1024))MB"
|
||||
echo "Required: $((REQUIRED_SPACE/1024))MB"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! nslookup google.com >/dev/null 2>&1; then
|
||||
log "DNS not working"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if opkg list-installed | grep -qE "iptables|kmod-iptab"; then
|
||||
printf "\033[31;1mFound incompatible iptables packages. If you're using FriendlyWrt: https://t.me/itdogchat/44512/181082\033[0m\n"
|
||||
fi
|
||||
}
|
||||
|
||||
sing_box() {
|
||||
if ! opkg list-installed | grep -q "^sing-box"; then
|
||||
return
|
||||
fi
|
||||
|
||||
sing_box_version=$(sing-box version | head -n 1 | awk '{print $3}')
|
||||
required_version="1.11.1"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-podkop
|
||||
PKG_VERSION:=0.3.7
|
||||
PKG_VERSION:=0.3.8
|
||||
PKG_RELEASE:=1
|
||||
|
||||
LUCI_TITLE:=LuCI podkop app
|
||||
|
||||
@@ -329,4 +329,55 @@ msgid "View Logs"
|
||||
msgstr "Просмотр логов"
|
||||
|
||||
msgid "Failed to copy logs: "
|
||||
msgstr "Ошибка копирования логов: "
|
||||
msgstr "Ошибка копирования логов: "
|
||||
|
||||
msgid "Show Config"
|
||||
msgstr "Показать конфигурацию"
|
||||
|
||||
msgid "Show current podkop configuration with masked sensitive data"
|
||||
msgstr "Показать текущую конфигурацию podkop с маскированными конфиденциальными данными"
|
||||
|
||||
msgid "Podkop Configuration"
|
||||
msgstr "Конфигурация Podkop"
|
||||
|
||||
msgid "Update lists"
|
||||
msgstr "Обновить списки"
|
||||
|
||||
msgid "Update all lists in config"
|
||||
msgstr "Обновить все списки в конфигурации"
|
||||
|
||||
msgid "List Update"
|
||||
msgstr "Обновление списков"
|
||||
|
||||
msgid "Lists will be updated in background. You can check the progress in system logs."
|
||||
msgstr "Списки будут обновлены в фоновом режиме. Вы можете проверить прогресс в системных логах."
|
||||
|
||||
msgid "Extra configurations"
|
||||
msgstr "Дополнительные конфигурации"
|
||||
|
||||
msgid "Extra configuration"
|
||||
msgstr "Дополнительная конфигурация"
|
||||
|
||||
msgid "Add Section"
|
||||
msgstr "Добавить раздел"
|
||||
|
||||
msgid "QUIC disable"
|
||||
msgstr "Отключить QUIC"
|
||||
|
||||
msgid "For issues with the video stream"
|
||||
msgstr "Для проблем с видеопотоком"
|
||||
|
||||
msgid "Community Lists"
|
||||
msgstr "Списки сообщества"
|
||||
|
||||
msgid "Local Domain Lists"
|
||||
msgstr "Локальные списки доменов"
|
||||
|
||||
msgid "Use the list from the router filesystem"
|
||||
msgstr "Использовать список из файловой системы роутера"
|
||||
|
||||
msgid "Local Domain Lists Path"
|
||||
msgstr "Путь к локальным спискам доменов"
|
||||
|
||||
msgid "Enter to the list file path"
|
||||
msgstr "Введите путь к файлу списка"
|
||||
@@ -329,4 +329,55 @@ msgid "View Logs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to copy logs: "
|
||||
msgstr ""
|
||||
|
||||
msgid "Show Config"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show current podkop configuration with masked sensitive data"
|
||||
msgstr ""
|
||||
|
||||
msgid "Podkop Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Update lists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Update all lists in config"
|
||||
msgstr ""
|
||||
|
||||
msgid "List Update"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lists will be updated in background. You can check the progress in system logs."
|
||||
msgstr ""
|
||||
|
||||
msgid "Extra configurations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extra configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Section"
|
||||
msgstr ""
|
||||
|
||||
msgid "QUIC disable"
|
||||
msgstr ""
|
||||
|
||||
msgid "For issues with the video stream"
|
||||
msgstr ""
|
||||
|
||||
msgid "Community Lists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Local Domain Lists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use the list from the router filesystem"
|
||||
msgstr ""
|
||||
|
||||
msgid "Local Domain Lists Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter to the list file path"
|
||||
msgstr ""
|
||||
@@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=podkop
|
||||
PKG_VERSION:=0.3.7
|
||||
PKG_VERSION:=0.3.8
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_MAINTAINER:=ITDog <podkop@itdog.info>
|
||||
|
||||
@@ -35,6 +35,7 @@ SUBNETS_TELERAM="${GITHUB_RAW_URL}/Subnets/IPv4/telegram.lst"
|
||||
SING_BOX_CONFIG="/etc/sing-box/config.json"
|
||||
CACHE_FILE_PATH="/tmp/cache.db"
|
||||
FAKEIP="198.18.0.0/15"
|
||||
VALID_SERVICES="russia_inside russia_outside ukraine_inside geoblock block porn news anime youtube discord meta twitter hdrezka tiktok telegram"
|
||||
|
||||
start_service() {
|
||||
log "Start podkop"
|
||||
@@ -48,8 +49,7 @@ start_service() {
|
||||
fi
|
||||
|
||||
if opkg list-installed | grep -qE "iptables|kmod-iptab"; then
|
||||
echo "Found incompatible iptables packages. If you're using FriendlyWrt: https://t.me/itdogchat/44512/181082"
|
||||
exit 1
|
||||
printf "\033[31;1mFound incompatible iptables packages. If you're using FriendlyWrt: https://t.me/itdogchat/44512/181082\033[0m\n"
|
||||
fi
|
||||
|
||||
if ! ip addr | grep -q "br-lan"; then
|
||||
@@ -59,6 +59,8 @@ start_service() {
|
||||
|
||||
migration
|
||||
|
||||
config_foreach process_validate_service
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param command /bin/sh -c "/etc/init.d/podkop main &"
|
||||
procd_set_param stdout 1
|
||||
@@ -202,7 +204,7 @@ main() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Migrations funcs
|
||||
# Migrations and validation funcs
|
||||
migration() {
|
||||
# list migrate
|
||||
local CONFIG="/etc/config/podkop"
|
||||
@@ -247,6 +249,26 @@ migration() {
|
||||
fi
|
||||
}
|
||||
|
||||
validate_service() {
|
||||
local domain="$1"
|
||||
|
||||
for valid_service in $VALID_SERVICES; do
|
||||
if [ "$domain" = "$valid_service" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
log "Invalid service in domain_list: $domain. Exiting. Check config and LuCI cache"
|
||||
exit 1
|
||||
}
|
||||
|
||||
process_validate_service() {
|
||||
config_get_bool domain_list_enabled "$section" "domain_list_enabled" "0"
|
||||
if [ "$domain_list_enabled" -eq 1 ]; then
|
||||
config_list_foreach "$section" domain_list validate_service
|
||||
fi
|
||||
}
|
||||
|
||||
# Main funcs
|
||||
|
||||
route_table_rule_mark() {
|
||||
@@ -308,6 +330,7 @@ dnsmasq_rm() {
|
||||
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"
|
||||
uci commit dhcp
|
||||
|
||||
/etc/init.d/dnsmasq restart
|
||||
|
||||
Reference in New Issue
Block a user