new modern version, replaced git with release downloading

This commit is contained in:
Snowy-Fluffy
2025-08-23 18:20:19 +03:00
parent dc18dd21f0
commit 141b7f4a66
5 changed files with 123 additions and 56 deletions

View File

@@ -35,7 +35,7 @@ zapret
- OpenWrt
> [!IMPORTANT]
> На Openwrt также советую попробовать (zapret-openwrt)[https://github.com/remittor/zapret-openwrt]
> На Openwrt также советую попробовать [zapret-openwrt](https://github.com/remittor/zapret-openwrt)
> [!IMPORTANT]
> Системы инициализации *runit*, *OpenRC* и *SysVinit* поддерживаются только частично.
@@ -44,6 +44,9 @@ zapret
О всех багах и недочётах сообщайте в [issues](https://github.com/Snowy-Fluffy/zapret.installer/issues) или в чат моего [Telegram-канала](https://t.me/linux_hi_chat).
> [!IMPORTANT]
> Также советую попробовать [zapret-discord-youtube-linux](https://github.com/Sergeydigl3/zapret-discord-youtube-linux)
### 🖼️ Скриншоты
![Основное меню](https://github.com/user-attachments/assets/1c8d3f11-d357-4783-bb13-7eba735b52ae)
![Подменю](https://github.com/user-attachments/assets/4c5b0af1-64d3-486b-9d23-8c4611517e29)

View File

@@ -88,11 +88,11 @@ get_fwtype() {
cur_conf() {
cr_cnf="неизвестно"
if [[ -f /opt/zapret/config ]]; then
mkdir -p /tmp/zapret.installer-tmp/
cp -r /opt/zapret/config /tmp/zapret.installer-tmp/config
sed -i "s/^FWTYPE=.*/FWTYPE=iptables/" /tmp/zapret.installer-tmp/config
TEMP_CUR_STR=$(mktemp -d)
cp -r /opt/zapret/config $TEMP_CUR_STR/config
sed -i "s/^FWTYPE=.*/FWTYPE=iptables/" $TEMP_CUR_STR/config
for file in /opt/zapret/zapret.cfgs/configurations/*; do
if [[ -f "$file" && "$(sha256sum "$file" | awk '{print $1}')" == "$(sha256sum /tmp/zapret.installer-tmp/config | awk '{print $1}')" ]]; then
if [[ -f "$file" && "$(sha256sum "$file" | awk '{print $1}')" == "$(sha256sum $TEMP_CUR_STR/config | awk '{print $1}')" ]]; then
cr_cnf="$(basename "$file")"
break
fi
@@ -267,4 +267,4 @@ search_in_zapret() {
sleep 2
main_menu
fi
}
}

View File

@@ -1,6 +1,64 @@
#!/bin/bash
remote_latest_version() {
rver=$(timeout 5s curl -s https://api.github.com/repos/bol-van/zapret/releases/latest | \
grep "tag_name" | \
cut -d '"' -f 4 | \
sed 's/^v//')
}
get_latest_version() {
if [ -z "$rver" ]; then
echo "Неизвестно"
else
echo "$rver"
fi
}
zapret_update_check()
{
if cmp -s <(get_latest_version) /opt/zapret-ver; then
echo -e "0"
else
echo -e "1"
fi
}
download_zapret()
{
rm -rf /opt/zapret
rm -rf /opt/zapret-v$(get_latest_version)
TEMP_DIR_BIN=$(mktemp -d)
if [ SYSTEM = openwrt ]; then
if ! curl -L -o "$TEMP_DIR_BIN/latest.tar.gz" $(curl -s https://api.github.com/repos/bol-van/zapret/releases/latest | grep "browser_download_url.*openwrt.*tar.gz" | head -n 1 | cut -d '"' -f 4); then
rm -rf $TEMP_DIR_BIN
error_exit "Не удалось получить релиз запрета."
fi
if ! tar -xzf $TEMP_DIR_BIN/latest.tar.gz -C /opt/ --strip-components=1; then
rm -rf $TEMP_DIR_BIN /opt/zapret-v$(get_latest_version)
error_exit "Не удалось разархивировать архив с релизом запрета."
fi
else
curl -s https://api.github.com/repos/bol-van/zapret/releases/latest | grep "browser_download_url.*tar.gz" | grep -v "openwrt" | head -n 1 | cut -d '"' -f 4 | xargs -I {} curl -L -o "$TEMP_DIR_BIN/latest.tar.gz" "{}" || error_exit "не могу получить релиз запрета"
if ! tar -xzf $TEMP_DIR_BIN/latest.tar.gz -C /opt/; then
rm -rf $TEMP_DIR_BIN /opt/zapret-v$(get_latest_version)
error_exit "Не удалось разархивировать архив с релизом запрета."
fi
fi
mv /opt/zapret-v$(get_latest_version) /opt/zapret
get_latest_version > /opt/zapret-ver
echo "Клонирую репозиторий конфигураций..."
git clone https://github.com/Snowy-Fluffy/zapret.cfgs /opt/zapret/zapret.cfgs
echo "Клонирование успешно завершено."
}
install_dependencies() {
kernel="$(uname -s)"
@@ -65,49 +123,7 @@ install_zapret() {
;;
esac
fi
if [ SYSTEM = openwrt ]; then
echo "Получаю релиз запрета..."
sleep 2
mkdir -p /tmp/zapret_download
#cd /tmp/zapret_download || error_exit "Не удалось перейти в /tmp/zapret_download"
if ! curl -L -o "/tmp/zapret_download/zapret-bin-openwrt.tar.gz" $(curl -s https://api.github.com/repos/bol-van/zapret/releases/latest | grep "browser_download_url.*openwrt.*tar.gz" | head -n 1 | cut -d '"' -f 4); then
rm -rf /tmp/zapret_download
error_exit "Не удалось получить релиз запрета."
fi
mkdir -p /opt/zapret
if ! tar -xzf /tmp/zapret_download/zapret-bin-openwrt.tar.gz -C /opt/zapret --strip-components=1; then
rm -rf /tmp/zapret_download /opt/zapret
error_exit "Не удалось разархивировать архив с релизом запрета."
fi
rm -rf /tmp/zapret_download
echo "Клонирую репозиторий..."
git clone https://github.com/Snowy-Fluffy/zapret.cfgs /opt/zapret/zapret.cfgs
else
echo "Клонирую репозиторий..."
sleep 2
git clone https://github.com/bol-van/zapret /opt/zapret
echo "Клонирую репозиторий..."
git clone https://github.com/Snowy-Fluffy/zapret.cfgs /opt/zapret/zapret.cfgs
echo "Клонирование успешно завершено."
rm -rf /opt/zapret/binaries
echo -e "\e[45mКлонирую релиз запрета...\e[0m"
if [[ ! -d /opt/zapret.installer/zapret.binaries/ ]]; then
rm -rf /opt/zapret.installer/zapret.binaries/
fi
mkdir -p /opt/zapret.installer/zapret.binaries/zapret
if ! curl -L -o /opt/zapret.installer/zapret.binaries/zapret/zapret-v71.4.tar.gz https://github.com/bol-van/zapret/releases/download/v71.4/zapret-v71.4.tar.gz; then
rm -rf /opt/zapret /tmp/zapret
error_exit "не удалось получить релиз запрета."
fi
echo "Получение запрета завершено."
if ! tar -xzf /opt/zapret.installer/zapret.binaries/zapret/zapret-v71.4.tar.gz -C /opt/zapret.installer/zapret.binaries/zapret/; then
rm -rf /opt/zapret.installer/
error_exit "не удалось разархивировать архив с релизом запрета."
fi
cp -r /opt/zapret.installer/zapret.binaries/zapret/zapret-v71.4/binaries/ /opt/zapret/binaries
fi
download_zapret
cd /opt/zapret
sed -i '238s/ask_yes_no N/ask_yes_no Y/' /opt/zapret/common/installer.sh
yes "" | ./install_easy.sh
@@ -143,9 +159,31 @@ install_zapret() {
}
update_zapret() {
if [[ -d /opt/zapret ]]; then
cd /opt/zapret && git fetch origin master; git reset --hard origin/master
LIST_EXISTS=0
CONF_EXISTS=0
TEMP_DIR_CONF=$(mktemp -d)
if [[ -f /opt/zapret/config ]]; then
cp -r /opt/zapret/config $TEMP_DIR_CONF/config
CONF_EXISTS=1
fi
if [[ -f /opt/zapret/ipset/zapret-hosts-user.txt ]]; then
cp -r /opt/zapret/ipset/zapret-hosts-user.txt $TEMP_DIR_CONF/zapret-hosts-user.txt
LIST_EXISTS=1
fi
if [ $(zapret_update_check) = 0 ]; then
echo "Актуальная версия уже установлена: нечего обновлять."
bash -c 'read -p "Нажмите Enter для продолжения..."'
else
download_zapret || error_exit "не удалось обновить запрет"
echo -e "Запрет обновлен до версии $(cat /opt/zapret-ver)"
fi
cd /opt/zapret
sed -i '238s/ask_yes_no N/ask_yes_no Y/' /opt/zapret/common/installer.sh
yes "" | ./install_easy.sh
sed -i '238s/ask_yes_no Y/ask_yes_no N/' /opt/zapret/common/installer.sh
if [[ -d /opt/zapret/zapret.cfgs ]]; then
cd /opt/zapret/zapret.cfgs && git fetch origin main; git reset --hard origin/main
fi
@@ -154,6 +192,17 @@ update_zapret() {
rm -f /bin/zapret
ln -s /opt/zapret.installer/zapret-control.sh /bin/zapret || error_exit "не удалось создать символическую ссылку"
fi
if [ CONF_EXISTS = 1 ]; then
rm -f /opt/zapret/config
mv $TEMP_DIR_CONF/config /opt/zapret/config
fi
if [ LIST_EXISTS = 1 ]; then
rm -f /opt/zapret/ipset/zapret-hosts-user.txt
mv $TEMP_DIR_CONF/zapret-hosts-user.txt /opt/zapret/ipset/zapret-hosts-user.txt
fi
rm -rf $TEMP_DIR_CONF
rm -rf $TEMP_DIR_BIN
cp -r /opt/zapret/zapret.cfgs/lists/ipset-discord.txt /opt/zapret/ipset/ipset-discord.txt || error_exit "не удалось автоматически скопировать ипсет"
manage_service restart
bash -c 'read -p "Нажмите Enter для продолжения..."'
exec "$0" "$@"
@@ -197,8 +246,12 @@ uninstall_zapret() {
rm -rf /opt/zapret
rm -rf /opt/zapret.installer/
rm -r /bin/zapret
rm -f /opt/zapret-ver
echo "Удаляю zapret..."
sleep 3
TPUT_E
echo "Запрет удален"
exit
;;
* )
main_menu

View File

@@ -199,8 +199,11 @@ update_zapret_menu(){
clear
echo -e "\e[1;36m╔════════════════════════════════════╗"
echo -e "║ 🔄 Обновление Запрета ║"
echo -e "║ Текущая версия: $(if [ -f /opt/zapret-ver ]; then cat /opt/zapret-ver; else echo "Неизвестно";fi)"
echo -e "║ Последняя версия: $(get_latest_version)"
echo -e "╚════════════════════════════════════╝\e[0m"
echo -e " \e[1;33m1)\e[0m 🔧 Обновить \e[33mzapret и скрипт\e[0m \e[2m(не рекомендуется)\e[0m"
echo -e " \e[1;33m1)\e[0m 🔧 Обновить \e[33mвсё\e[0m"
echo -e " \e[1;32m2)\e[0m 📜 Обновить только \e[32mскрипт\e[0m"
echo -e " \e[1;31m3)\e[0m 🚪 Выйти в меню"
echo ""
@@ -219,16 +222,23 @@ update_zapret_menu(){
clear
echo -e "\e[1;36m╔════════════════════════════════════╗"
echo -e "║ Обновление Запрета ║"
echo -e "║ Текущая версия: $(if [ -f /opt/zapret-ver ]; then cat /opt/zapret-ver; else echo "Неизвестно";fi)"
echo -e "║ Последняя версия: $(get_latest_version)"
echo -e "╚════════════════════════════════════╝\e[0m"
echo -e " \e[1;32m1)\e[0m Обновить \e[32mскрипт\e[0m"
echo -e " \e[1;31m2)\e[0m Выйти в меню"
echo -e " \e[1;33m1)\e[0m Обновить \e[33mвсё\e[0m"
echo -e " \e[1;32m2)\e[0m Обновить только \e[32mскрипт\e[0m"
echo -e " \e[1;31m3)\e[0m Выйти в меню"
echo ""
echo -e "\e[1;96m Сделано с любовью \e[0m by: \e[4;94mhttps://t.me/linux_hi\e[0m"
echo ""
read -p $'\e[1;36mВыберите действие: \e[0m' CHOICE
case "$CHOICE" in
1) update_installed_script;;
2) main_menu;;
1) update_zapret;;
2) update_installed_script;;
3) main_menu;;
*) echo -e "\e[1;31m Неверный ввод! Попробуйте снова.\e[0m"; sleep 2;;
esac
done

View File

@@ -30,4 +30,5 @@ check_tput
$TPUT_B
check_fs
detect_init
remote_latest_version
main_menu