install_easy: openrc support

This commit is contained in:
bol-van 2021-11-12 16:48:34 +03:00
parent 02343afba7
commit 7c85d8c6c4
5 changed files with 155 additions and 46 deletions

View File

@ -198,3 +198,7 @@ v40
init scripts : IFACE_LAN, IFACE_WAN now accept multiple interfaces
init scripts : openwrt uses now OPENWRT_LAN parameter to override incoming interfaces for tpws
v41
install_easy : openrc support

View File

@ -629,7 +629,7 @@ And you can start or stop the demons separately from the firewall:
Simple install to desktop linux system
--------------------------------------
Simple install works on most modern linux distributions with systemd, OpenWRT and MacOS.
Simple install works on most modern linux distributions with systemd or openrc, OpenWRT and MacOS.
Run install_easy.sh and answer its questions.
Simple install to openwrt

View File

@ -1,4 +1,4 @@
zapret v.40
zapret v.41
English
-------
@ -1037,14 +1037,16 @@ stop : rc-service zapret stop
-----------------
install_easy.sh автоматизирует описанные выше ручные варианты процедур установки.
Он поддерживает OpenWRT, linux системы на базе systemd и MacOS.
Он поддерживает OpenWRT, linux системы на базе systemd или openrc и MacOS.
Для более гибкой настройки перед запуском инсталятора следует выполнить раздел "Выбор параметров".
Если система на базе systemd, но используется не поддерживаемый инсталятором менеджер пакетов
Если система запуска поддерживается, но используется не поддерживаемый инсталятором менеджер пакетов
или названия пакетов не соответствуют прописанным в инсталятор, пакеты нужно установить вручную.
Требуется : ipset curl
Для совсем обрезанных дистрибутивов (alpine) требуется отдельно установить iptables и ip6tables.
В комплекте идут статические бинарики для большинства архитектур. Какой-то из них подойдет
с вероятностью 99%. Но если у вас экзотическая система, инсталятор попробует собрать бинарики сам
через make. Для этого нужны gcc, make и необходимые -dev пакеты. Можно форсировать режим

View File

@ -161,8 +161,11 @@ check_system()
SYSTEM=systemd
elif [ -f "/etc/openwrt_release" ] && exists opkg && exists uci ; then
SYSTEM=openwrt
elif exists /sbin/openrc-run || exists /usr/sbin/openrc-run ; then
SYSTEM=openrc
else
echo system is not either systemd based or openwrt. check readme.txt for manual setup info.
echo system is not either systemd, openrc or openwrt based
echo check readme.txt for manual setup info.
exitp 5
fi
elif [ "$UNAME" = "Darwin" ]; then
@ -625,8 +628,16 @@ check_prerequisites_linux()
{
echo \* checking prerequisites
if exists iptables && exists ip6tables ; then
echo iptables present
else
# looks like it's a limited system. will not guess how to install base tools
echo '! iptables/ip6tables NOT present. you must install them manually.'
exitp 5
fi
if exists ipset && exists curl ; then
echo everything is present
echo ipset and curl are present
else
echo \* installing prerequisites
@ -635,6 +646,7 @@ check_prerequisites_linux()
PACMAN=$(whichq pacman)
ZYPPER=$(whichq zypper)
EOPKG=$(whichq eopkg)
APK=$(whichq apk)
if [ -x "$APTGET" ] ; then
"$APTGET" update
"$APTGET" install -y --no-install-recommends ipset curl dnsutils || {
@ -662,6 +674,11 @@ check_prerequisites_linux()
echo could not install prerequisites
exitp 6
}
elif [ -x "$APK" ] ; then
"$APK" add ipset curl || {
echo could not install prerequisites
exitp 6
}
else
echo supported package manager not found
echo you must manually install : ipset curl
@ -895,6 +912,82 @@ install_systemd()
install_sysv_init()
{
# $1 - "0"=disable
echo \* installing init script
[ -x "$INIT_SCRIPT" ] && {
"$INIT_SCRIPT" stop
"$INIT_SCRIPT" disable
}
ln -fs "$INIT_SCRIPT_SRC" "$INIT_SCRIPT"
[ "$1" != "0" ] && "$INIT_SCRIPT" enable
}
install_openrc_init()
{
# $1 - "0"=disable
echo \* installing init script
[ -x "$INIT_SCRIPT" ] && {
"$INIT_SCRIPT" stop
rc-update del zapret
}
ln -fs "$INIT_SCRIPT_SRC" "$INIT_SCRIPT"
[ "$1" != "0" ] && rc-update add zapret
}
service_start_sysv()
{
echo \* starting zapret service
"$INIT_SCRIPT" start || {
echo could not start zapret service
exitp 30
}
}
service_stop_sysv()
{
[ -x "$INIT_SCRIPT" ] && {
echo \* stopping zapret service
"$INIT_SCRIPT" stop
}
}
_install_sysv()
{
# $1 - install init script
INIT_SCRIPT_SRC="$EXEDIR/init.d/sysv/zapret"
check_bins
require_root
check_location copy_all
check_prerequisites_linux
service_stop_sysv
install_binaries
check_dns
select_ipv6
ask_config
$1
download_list
crontab_del_quiet
# desktop system. more likely up at daytime
crontab_add 10 22
service_start_sysv
}
install_sysv()
{
_install_sysv install_sysv_init
}
install_openrc()
{
_install_sysv install_openrc_init
}
check_kmod()
{
@ -1134,29 +1227,6 @@ deoffload_openwrt_firewall()
}
install_sysv_init()
{
# $1 - "0"=disable
echo \* installing init script
[ -x "$INIT_SCRIPT" ] && {
"$INIT_SCRIPT" stop
"$INIT_SCRIPT" disable
}
ln -fs "$INIT_SCRIPT_SRC" "$INIT_SCRIPT"
[ "$1" != "0" ] && "$INIT_SCRIPT" enable
}
service_start_sysv()
{
echo \* starting zapret service
"$INIT_SCRIPT" start || {
echo could not start zapret service
exitp 30
}
}
install_openwrt()
@ -1275,6 +1345,9 @@ case $SYSTEM in
systemd)
install_systemd
;;
openrc)
install_openrc
;;
openwrt)
install_openwrt
;;

View File

@ -7,8 +7,12 @@ EXEDIR="$(cd "$EXEDIR"; pwd)"
IPSET_DIR="$EXEDIR/ipset"
GET_LIST_PREFIX=/ipset/get_
SYSTEMD_SYSTEM_DIR=/lib/systemd/system
[ -d "$SYSTEMD_SYSTEM_DIR" ] || SYSTEMD_SYSTEM_DIR=/usr/lib/systemd/system
SYSTEMD_DIR=/lib/systemd
[ -d "$SYSTEMD_DIR" ] || SYSTEMD_DIR=/usr/lib/systemd
[ -d "$SYSTEMD_DIR" ] && SYSTEMD_SYSTEM_DIR="$SYSTEMD_DIR/system"
INIT_SCRIPT=/etc/init.d/zapret
exists()
{
@ -48,16 +52,22 @@ check_system()
local UNAME=$(uname)
if [ "$UNAME" = "Linux" ]; then
if [ -x "$SYSTEMCTL" ] ; then
# some distros include systemctl without systemd
if [ -d "$SYSTEMD_DIR" ] && [ -x "$SYSTEMD_DIR/systemd" ] && [ -x "$SYSTEMCTL" ]; then
SYSTEM=systemd
elif [ -f "/etc/openwrt_release" ] && exists opkg && exists uci ; then
SYSTEM=openwrt
elif exists /sbin/openrc-run || exists /usr/sbin/openrc-run ; then
SYSTEM=openrc
else
echo system is not either systemd based or openwrt. check readme.txt for manual setup info.
echo system is not either systemd, openrc or openwrt based
echo check readme.txt for manual setup info.
exitp 5
fi
elif [ "$UNAME" = "Darwin" ]; then
SYSTEM=macos
# MacOS echo from /bin/sh does not support -n
ECHON=printf
else
echo easy installer only supports Linux and MacOS. check readme.txt for supported systems and manual setup info.
exitp 5
@ -117,8 +127,6 @@ timer_remove_systemd()
remove_systemd()
{
INIT_SCRIPT=/etc/init.d/zapret
service_stop_systemd
service_remove_systemd
timer_remove_systemd
@ -126,6 +134,36 @@ remove_systemd()
}
service_remove_sysv()
{
echo \* removing zapret service
[ -x "$INIT_SCRIPT" ] && {
"$INIT_SCRIPT" disable
"$INIT_SCRIPT" stop
}
rm -f "$INIT_SCRIPT"
}
service_remove_openrc()
{
echo \* removing zapret service
[ -x "$INIT_SCRIPT" ] && {
rc-update del zapret
"$INIT_SCRIPT" stop
}
rm -f "$INIT_SCRIPT"
}
remove_openrc()
{
OPENWRT_FW_INCLUDE=/etc/firewall.zapret
service_remove_openrc
crontab_del
}
@ -188,20 +226,9 @@ remove_openwrt_iface_hook()
}
service_remove_sysv()
{
echo \* removing zapret service
[ -x "$INIT_SCRIPT" ] && {
"$INIT_SCRIPT" disable
"$INIT_SCRIPT" stop
}
rm -f "$INIT_SCRIPT"
}
remove_openwrt()
{
INIT_SCRIPT=/etc/init.d/zapret
OPENWRT_FW_INCLUDE=/etc/firewall.zapret
remove_openwrt_firewall
@ -247,6 +274,9 @@ case $SYSTEM in
systemd)
remove_systemd
;;
openrc)
remove_openrc
;;
openwrt)
remove_openwrt
;;