diff --git a/init.d/debian/zapret b/init.d/debian/zapret index f13e28e..ef15323 100755 --- a/init.d/debian/zapret +++ b/init.d/debian/zapret @@ -138,9 +138,10 @@ exists() { which $1 >/dev/null 2>/dev/null } +JOBCT=1 run_daemon() { - # $1 - daemon string id or number. can use 1,2,3,... + # $1 - daemon number : 1,2,3,... # $2 - daemon # $3 - daemon args # use $PIDDIR/$DAEMONBASE$1.pid as pidfile @@ -154,9 +155,10 @@ run_daemon() daemonize -p "$PIDFILE" "$2" $3 else nohup "$2" $3 >/dev/null 2>/dev/null & - PID=$(jobs -p %1) + PID=$(jobs -p %$JOBCT) if [ -n "$PID" ]; then echo $PID >$PIDFILE + let JOBCT=$JOBCT+1 else echo could not start daemon $1 : $2 $3 fi @@ -164,7 +166,7 @@ run_daemon() } stop_daemon() { - # $1 - daemon string id or number. can use 1,2,3,... + # $1 - daemon number : 1,2,3,... # $2 - daemon # use $PIDDIR/$DAEMONBASE$1.pid as pidfile local DAEMONBASE=$(basename $2) diff --git a/install_easy.sh b/install_easy.sh index 2e0e870..2c6b755 100755 --- a/install_easy.sh +++ b/install_easy.sh @@ -2,7 +2,7 @@ # automated script for easy installing zapret on systemd based system # all required tools must be already present or system must use apt as package manager -# if its not apt or yum based system then manually install ipset, curl, lsb-core +# if its not apt or yum based system then manually install ipset, curl exists() { @@ -24,12 +24,11 @@ whichq() SCRIPT=$(readlink -f $0) EXEDIR=$(dirname $SCRIPT) ZAPRET_BASE=/opt/zapret -LSB_INSTALL=/usr/lib/lsb/install_initd -LSB_REMOVE=/usr/lib/lsb/remove_initd INIT_SCRIPT_SRC=$EXEDIR/init.d/debian/zapret INIT_SCRIPT=/etc/init.d/zapret GET_IPLIST=$EXEDIR/ipset/get_antizapret.sh GET_IPLIST_PREFIX=$EXEDIR/ipset/get_ +SYSTEMD_SYSV_GENERATOR=/lib/systemd/system-generators/systemd-sysv-generator exitp() { @@ -43,10 +42,15 @@ exitp() echo \* checking system ... SYSTEMCTL=$(whichq systemctl) -[ ! -x "$SYSTEMCTL" ] && { +[ -x "$SYSTEMCTL" ] || { echo not systemd based system exitp 5 } +[ -x "$SYSTEMD_SYSV_GENERATOR" ] || { + echo systemd is present but it does not support sysvinit compatibility + echo $SYSTEMD_SYSV_GENERATOR is required + exitp 5 +} echo \* checking location ... @@ -81,33 +85,36 @@ echo running from $EXEDIR echo \* checking prerequisites ... -if [ -x "$LSB_INSTALL" ] && [ -x "$LSB_REMOVE" ] && exists ipset && exists curl ; then +if exists ipset && exists curl ; then echo everything is present else echo \* installing prerequisites ... APTGET=$(whichq apt-get) YUM=$(whichq yum) + PACMAN=$(whichq pacman) if [ -x "$APTGET" ] ; then "$APTGET" update - "$APTGET" install -y --no-install-recommends ipset curl lsb-core dnsutils || { + "$APTGET" install -y --no-install-recommends ipset curl dnsutils || { echo could not install prerequisites exitp 6 } elif [ -x "$YUM" ] ; then - "$YUM" -y install curl ipset redhat-lsb-core daemonize || { + "$YUM" -y install curl ipset daemonize || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$PACMAN" ] ; then + "$PACMAN" -Syy + "$PACMAN" --noconfirm -S ipset curl || { echo could not install prerequisites exitp 6 } else echo supported package manager not found - echo you must manually install : ipset curl lsb-core + echo you must manually install : ipset curl exitp 5 fi - [ ! -x "$LSB_INSTALL" ] || [ ! -x "$LSB_REMOVE" ] && { - echo lsb install scripts not found - exitp 7 - } fi echo \* installing binaries ... @@ -148,9 +155,8 @@ fi echo \* registering init script ... -"$LSB_REMOVE" $INIT_SCRIPT -"$LSB_INSTALL" $INIT_SCRIPT || { - echo could not register $INIT_SCRIPT with LSB +"$SYSTEMCTL" enable zapret || { + echo could not register $INIT_SCRIPT with systemd exitp 20 } diff --git a/readme.txt b/readme.txt index fc87e1b..6cdd5e4 100644 --- a/readme.txt +++ b/readme.txt @@ -232,7 +232,7 @@ TPWS_OPT="--hostspell=HOST --split-http-req=method" Установить пакеты : apt-get update - apt-get install ipset curl lsb-core dnsutils git + apt-get install ipset curl dnsutils git Скопировать директорию zapret в /opt или скачать через git : cd /opt @@ -249,8 +249,11 @@ TPWS_OPT="--hostspell=HOST --split-http-req=method" Если ваша система - роутер, то раскомментировать параметр SLAVE_ETH и вписать в него название внутреннего сетевого интерфейса (LAN). -Зарегистрировать init скрипт в systemd : - /usr/lib/lsb/install_initd /etc/init.d/zapret +Принять изменения скрипта в systemd : + systemctl daemon-reload + +Включить автозапуск службы : + systemctl enable zapret В зависимости от выбранного в init скрипте MODE : @@ -288,7 +291,8 @@ MODE=custom Иные MODE : Ничего делать не нужно -Запустить службу : systemctl start zapret +Запустить службу : + systemctl start zapret Попробовать зайти куда-нибудь : http://ej.ru, http://kinozal.tv, http://grani.ru. Если не работает, то остановить службу zapret, добавить правило в iptables вручную, @@ -303,12 +307,13 @@ MODE=custom Шпаргалка по управлению службой : -install : /usr/lib/lsb/install_initd zapret -remove : /usr/lib/lsb/remove_initd zapret +enable auto start : systemctl enable zapret +disable auto start : systemctl disable zapret start : sytemctl start zapret stop : systemctl stop zapret status, output messages : systemctl status zapret После изменения /etc/init.d/zapret : systemctl daemon-reload +delete service : systemctl disable zapret ; systemctl stop zapret ; rm /etc/init.d/zapret Centos 7+, Fedora ----------------- @@ -317,7 +322,7 @@ Centos с 7 версии и более-менее новые федоры пос В качестве пакетного менеджера используется yum. Установить пакеты : - yum install -y curl ipset redhat-lsb-core daemonize + yum install -y curl ipset daemonize Далее все аналогично debian. Инит скрипт init.d/debian/zapret адаптирован под условия новых centos и fedora. @@ -348,8 +353,6 @@ Centos с 7 версии и более-менее новые федоры пос Эти скрипты будут работать и на других системах на базе systemd при условии, что уже есть следующие программы : -/usr/lib/lsb/install_initd -/usr/lib/lsb/remove_initd ipset curl diff --git a/uninstall_easy.sh b/uninstall_easy.sh index f975b43..8fcbee5 100755 --- a/uninstall_easy.sh +++ b/uninstall_easy.sh @@ -17,8 +17,6 @@ exists() SCRIPT=$(readlink -f $0) EXEDIR=$(dirname $SCRIPT) -LSB_INSTALL=/usr/lib/lsb/install_initd -LSB_REMOVE=/usr/lib/lsb/remove_initd INIT_SCRIPT_SRC=$EXEDIR/init.d/debian/zapret INIT_SCRIPT=/etc/init.d/zapret GET_IPLIST_PREFIX=$EXEDIR/ipset/get_ @@ -36,16 +34,16 @@ exitp() echo \* checking system ... SYSTEMCTL=$(which systemctl) -[ ! -x "$SYSTEMCTL" ] && { +[ -x "$SYSTEMCTL" ] || { echo not systemd based system exitp 5 } -echo \* stopping service and unregistering init script with LSB ... + +echo \* stopping service and unregistering init script "$SYSTEMCTL" disable zapret "$SYSTEMCTL" stop zapret -[ -f "$INIT_SCRIPT" ] && "$LSB_REMOVE" $INIT_SCRIPT echo \* removing init script ...