mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-26 20:20:53 +03:00
install_prereq.sh
This commit is contained in:
parent
5fda589b4f
commit
2184d35907
@ -262,6 +262,20 @@ replace_char()
|
|||||||
echo "$@" | tr $a $b
|
echo "$@" | tr $a $b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
random()
|
||||||
|
{
|
||||||
|
# $1 - min, $2 - max
|
||||||
|
local r rs
|
||||||
|
if [ -c /dev/urandom ]; then
|
||||||
|
read rs </dev/urandom
|
||||||
|
else
|
||||||
|
rs="$RANDOM$RANDOM$(date)"
|
||||||
|
fi
|
||||||
|
# shells use signed int64
|
||||||
|
r=1$(echo $rs | $MD5 | sed 's/[^0-9]//g' | head -c 17)
|
||||||
|
echo $(( ($r % ($2-$1+1)) + $1 ))
|
||||||
|
}
|
||||||
|
|
||||||
std_ports()
|
std_ports()
|
||||||
{
|
{
|
||||||
HTTP_PORTS=${HTTP_PORTS:-80}
|
HTTP_PORTS=${HTTP_PORTS:-80}
|
||||||
|
@ -462,3 +462,195 @@ remove_macos_firewall()
|
|||||||
pf_anchor_root_del
|
pf_anchor_root_del
|
||||||
pf_anchor_root_reload
|
pf_anchor_root_reload
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sedi()
|
||||||
|
{
|
||||||
|
# MacOS doesnt support -i without parameter. busybox doesnt support -i with parameter.
|
||||||
|
# its not possible to put "sed -i ''" to a variable and then use it
|
||||||
|
if [ "$SYSTEM" = "macos" ]; then
|
||||||
|
sed -i '' "$@"
|
||||||
|
else
|
||||||
|
sed -i "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
write_config_var()
|
||||||
|
{
|
||||||
|
# $1 - mode var
|
||||||
|
local M
|
||||||
|
eval M="\$$1"
|
||||||
|
|
||||||
|
if grep -q "^$1=\|^#$1=" "$ZAPRET_CONFIG"; then
|
||||||
|
# replace / => \/
|
||||||
|
#M=${M//\//\\\/}
|
||||||
|
M=$(echo $M | sed 's/\//\\\//g')
|
||||||
|
if [ -n "$M" ]; then
|
||||||
|
if contains "$M" " "; then
|
||||||
|
sedi -Ee "s/^#?$1=.*$/$1=\"$M\"/" "$ZAPRET_CONFIG"
|
||||||
|
else
|
||||||
|
sedi -Ee "s/^#?$1=.*$/$1=$M/" "$ZAPRET_CONFIG"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# write with comment at the beginning
|
||||||
|
sedi -Ee "s/^#?$1=.*$/#$1=/" "$ZAPRET_CONFIG"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# var does not exist in config. add it
|
||||||
|
if [ -n "$M" ]; then
|
||||||
|
echo "$1=$M" >>"$ZAPRET_CONFIG"
|
||||||
|
else
|
||||||
|
echo "#$1=$M" >>"$ZAPRET_CONFIG"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_prerequisites_linux()
|
||||||
|
{
|
||||||
|
echo \* checking prerequisites
|
||||||
|
|
||||||
|
local s cmd PKGS UTILS req="curl curl"
|
||||||
|
case "$FWTYPE" in
|
||||||
|
iptables)
|
||||||
|
req="$req iptables iptables ip6tables iptables ipset ipset"
|
||||||
|
;;
|
||||||
|
nftables)
|
||||||
|
req="$req nft nftables"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
PKGS=$(for s in $req; do echo $s; done |
|
||||||
|
while read cmd; do
|
||||||
|
read pkg
|
||||||
|
exists $cmd || echo $pkg
|
||||||
|
done | sort -u | xargs)
|
||||||
|
UTILS=$(for s in $req; do echo $s; done |
|
||||||
|
while read cmd; do
|
||||||
|
read pkg
|
||||||
|
echo $cmd
|
||||||
|
done | sort -u | xargs)
|
||||||
|
|
||||||
|
if [ -z "$PKGS" ] ; then
|
||||||
|
echo required utilities exist : $UTILS
|
||||||
|
else
|
||||||
|
echo \* installing prerequisites
|
||||||
|
|
||||||
|
echo packages required : $PKGS
|
||||||
|
|
||||||
|
APTGET=$(whichq apt-get)
|
||||||
|
YUM=$(whichq yum)
|
||||||
|
PACMAN=$(whichq pacman)
|
||||||
|
ZYPPER=$(whichq zypper)
|
||||||
|
EOPKG=$(whichq eopkg)
|
||||||
|
APK=$(whichq apk)
|
||||||
|
if [ -x "$APTGET" ] ; then
|
||||||
|
"$APTGET" update
|
||||||
|
"$APTGET" install -y --no-install-recommends $PKGS dnsutils || {
|
||||||
|
echo could not install prerequisites
|
||||||
|
exitp 6
|
||||||
|
}
|
||||||
|
elif [ -x "$YUM" ] ; then
|
||||||
|
"$YUM" -y install $PKGS || {
|
||||||
|
echo could not install prerequisites
|
||||||
|
exitp 6
|
||||||
|
}
|
||||||
|
elif [ -x "$PACMAN" ] ; then
|
||||||
|
"$PACMAN" -Syy
|
||||||
|
"$PACMAN" --noconfirm -S $PKGS || {
|
||||||
|
echo could not install prerequisites
|
||||||
|
exitp 6
|
||||||
|
}
|
||||||
|
elif [ -x "$ZYPPER" ] ; then
|
||||||
|
"$ZYPPER" --non-interactive install $PKGS || {
|
||||||
|
echo could not install prerequisites
|
||||||
|
exitp 6
|
||||||
|
}
|
||||||
|
elif [ -x "$EOPKG" ] ; then
|
||||||
|
"$EOPKG" -y install $PKGS || {
|
||||||
|
echo could not install prerequisites
|
||||||
|
exitp 6
|
||||||
|
}
|
||||||
|
elif [ -x "$APK" ] ; then
|
||||||
|
"$APK" update
|
||||||
|
# for alpine
|
||||||
|
[ "$FWTYPE" = iptables ] && [ -n "$($APK list ip6tables)" ] && PKGS="$PKGS ip6tables"
|
||||||
|
"$APK" add $PKGS || {
|
||||||
|
echo could not install prerequisites
|
||||||
|
exitp 6
|
||||||
|
}
|
||||||
|
else
|
||||||
|
echo supported package manager not found
|
||||||
|
echo you must manually install : $UTILS
|
||||||
|
exitp 5
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_prerequisites_openwrt()
|
||||||
|
{
|
||||||
|
echo \* checking prerequisites
|
||||||
|
|
||||||
|
local PKGS="curl" UPD=0
|
||||||
|
|
||||||
|
case "$FWTYPE" in
|
||||||
|
iptables)
|
||||||
|
PKGS="$PKGS ipset iptables iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra"
|
||||||
|
[ "$DISABLE_IPV6" != "1" ] && PKGS="$PKGS ip6tables ip6tables-mod-nat ip6tables-extra"
|
||||||
|
;;
|
||||||
|
nftables)
|
||||||
|
PKGS="$PKGS nftables kmod-nft-nat kmod-nft-offload kmod-nft-queue"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if check_packages_openwrt $PKGS ; then
|
||||||
|
echo everything is present
|
||||||
|
else
|
||||||
|
echo \* installing prerequisites
|
||||||
|
|
||||||
|
opkg update
|
||||||
|
UPD=1
|
||||||
|
opkg install $PKGS || {
|
||||||
|
echo could not install prerequisites
|
||||||
|
exitp 6
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
is_linked_to_busybox gzip && {
|
||||||
|
echo
|
||||||
|
echo your system uses default busybox gzip. its several times slower than GNU gzip.
|
||||||
|
echo ip/host list scripts will run much faster with GNU gzip
|
||||||
|
echo installer can install GNU gzip but it requires about 100 Kb space
|
||||||
|
if ask_yes_no N "do you want to install GNU gzip"; then
|
||||||
|
[ "$UPD" = "0" ] && {
|
||||||
|
opkg update
|
||||||
|
UPD=1
|
||||||
|
}
|
||||||
|
opkg install --force-overwrite gzip
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
is_linked_to_busybox sort && {
|
||||||
|
echo
|
||||||
|
echo your system uses default busybox sort. its much slower and consumes much more RAM than GNU sort
|
||||||
|
echo ip/host list scripts will run much faster with GNU sort
|
||||||
|
echo installer can install GNU sort but it requires about 100 Kb space
|
||||||
|
if ask_yes_no N "do you want to install GNU sort"; then
|
||||||
|
[ "$UPD" = "0" ] && {
|
||||||
|
opkg update
|
||||||
|
UPD=1
|
||||||
|
}
|
||||||
|
opkg install --force-overwrite coreutils-sort
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
[ "$FSLEEP" = 0 ] && is_linked_to_busybox sleep && {
|
||||||
|
echo
|
||||||
|
echo no methods of sub-second sleep were found.
|
||||||
|
echo if you want to speed up blockcheck install coreutils-sleep. it requires about 40 Kb space
|
||||||
|
if ask_yes_no N "do you want to install COREUTILS sleep"; then
|
||||||
|
[ "$UPD" = "0" ] && {
|
||||||
|
opkg update
|
||||||
|
UPD=1
|
||||||
|
}
|
||||||
|
opkg install --force-overwrite coreutils-sleep
|
||||||
|
fsleep_setup
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -32,27 +32,19 @@ zapret дополнительные пакеты в сжатый образ squa
|
|||||||
|
|
||||||
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
|
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
|
||||||
|
|
||||||
5) Запустите install_bin.sh (1 раз для настройки бинариков правильной архитектуры)
|
5) Выполните однократные действия по установке требуемых пакетов в ОС и настройке бинариков правильной архитектуры
|
||||||
|
|
||||||
6) На чистой openwrt потребуются дополнительные пакеты.
|
install_bin.sh
|
||||||
opkg update
|
install_prepreq.sh
|
||||||
opkg install curl
|
|
||||||
Требуемые пакеты для iptables :
|
|
||||||
opkg install iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra
|
|
||||||
Требуемые пакеты для iptables ipv6 :
|
|
||||||
opkg install ip6tables-mod-nat ip6tables-extra
|
|
||||||
Требуемые пакеты для nftables (с версии 22.03 openwrt перешел на nftables по умолчанию) :
|
|
||||||
opkg install nftables kmod-nft-nat kmod-nft-queue
|
|
||||||
|
|
||||||
Другой вариант : запустите install_easy.sh, после установки pre-реквизитов откажитесь через ctrl+c.
|
Вас могут спросить о типе фаервола (iptables/nftables) и использовании ipv6. Это нужно для установки
|
||||||
Это надо сделать 1 раз. Без дополнительных пакетов blockcheck.sh не сработает. Сам он ничего
|
правильных пакетов в ОС, чтобы не устанавливать лишнее.
|
||||||
не будет устанавливать.
|
|
||||||
|
|
||||||
7) Запустите blockcheck.sh. blockcheck позволяет выявить рабочую стратегию обхода блокировок
|
6) Запустите blockcheck.sh. blockcheck позволяет выявить рабочую стратегию обхода блокировок
|
||||||
По результатам blockcheck нужно понять какой вариант будете использовать : nfqws или tpws
|
По результатам blockcheck нужно понять какой вариант будете использовать : nfqws или tpws
|
||||||
И запомнить найденные стратегии.
|
И запомнить найденные стратегии.
|
||||||
|
|
||||||
8) blockcheck.sh в начале проверяет DNS. Если выводятся сообщения о подмене адресов, то
|
7) blockcheck.sh в начале проверяет DNS. Если выводятся сообщения о подмене адресов, то
|
||||||
первым делом нужно решить эту проблему, иначе ничего не будет работать.
|
первым делом нужно решить эту проблему, иначе ничего не будет работать.
|
||||||
Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов
|
Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов
|
||||||
от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений
|
от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений
|
||||||
@ -87,7 +79,7 @@ config interface 'wan'
|
|||||||
Если это не подходит, можно перенаправлять обращения на udp и tcp порты 53 вашего DNS сервера на 77.88.8.88:1253 средствами
|
Если это не подходит, можно перенаправлять обращения на udp и tcp порты 53 вашего DNS сервера на 77.88.8.88:1253 средствами
|
||||||
iptables/nftables. В /etc/resolv.conf нельзя прописать DNS на нестандартном порту.
|
iptables/nftables. В /etc/resolv.conf нельзя прописать DNS на нестандартном порту.
|
||||||
|
|
||||||
9) Запустите install_easy.sh.
|
8) Запустите install_easy.sh.
|
||||||
Выберите nfqws или tpws, затем согласитесь на редактирование параметров.
|
Выберите nfqws или tpws, затем согласитесь на редактирование параметров.
|
||||||
Откроется редактор, куда впишите найденные стратегии.
|
Откроется редактор, куда впишите найденные стратегии.
|
||||||
Для nfqws отдельно настраиваются стратегии на http и https для ipv4 и ipv6.
|
Для nfqws отдельно настраиваются стратегии на http и https для ipv4 и ipv6.
|
||||||
@ -116,9 +108,9 @@ NFQWS_OPT_DESYNC_HTTP и NFQWS_OPT_DESYNC_HTTPS заменяют стратег
|
|||||||
zapret не может пробить блокировку по IP адресу
|
zapret не может пробить блокировку по IP адресу
|
||||||
Для проверки нескольких доменов вводите их через пробел.
|
Для проверки нескольких доменов вводите их через пробел.
|
||||||
|
|
||||||
10) На все остальные вопросы install_easy.sh отвечайте согласно выводимой аннонтации.
|
9) На все остальные вопросы install_easy.sh отвечайте согласно выводимой аннонтации.
|
||||||
|
|
||||||
11) Если ломаются отдельные незаблокированные ресурсы, следует вносить их в исключения, либо пользоваться ограничивающим
|
10) Если ломаются отдельные незаблокированные ресурсы, следует вносить их в исключения, либо пользоваться ограничивающим
|
||||||
ipset или хост листом. Читайте основной толмуд readme.txt ради подробностей.
|
ipset или хост листом. Читайте основной толмуд readme.txt ради подробностей.
|
||||||
|
|
||||||
Это минимальная инструкция, чтобы соориентироваться с чего начать.
|
Это минимальная инструкция, чтобы соориентироваться с чего начать.
|
||||||
|
207
install_easy.sh
207
install_easy.sh
@ -27,31 +27,6 @@ GET_LIST="$IPSET_DIR/get_config.sh"
|
|||||||
MD5=md5sum
|
MD5=md5sum
|
||||||
exists $MD5 || MD5=md5
|
exists $MD5 || MD5=md5
|
||||||
|
|
||||||
sedi()
|
|
||||||
{
|
|
||||||
# MacOS doesnt support -i without parameter. busybox doesnt support -i with parameter.
|
|
||||||
# its not possible to put "sed -i ''" to a variable and then use it
|
|
||||||
if [ "$SYSTEM" = "macos" ]; then
|
|
||||||
sed -i '' "$@"
|
|
||||||
else
|
|
||||||
sed -i "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
random()
|
|
||||||
{
|
|
||||||
# $1 - min, $2 - max
|
|
||||||
local r rs
|
|
||||||
if [ -c /dev/urandom ]; then
|
|
||||||
read rs </dev/urandom
|
|
||||||
else
|
|
||||||
rs="$RANDOM$RANDOM$(date)"
|
|
||||||
fi
|
|
||||||
# shells use signed int64
|
|
||||||
r=1$(echo $rs | $MD5 | sed 's/[^0-9]//g' | head -c 17)
|
|
||||||
echo $(( ($r % ($2-$1+1)) + $1 ))
|
|
||||||
}
|
|
||||||
|
|
||||||
check_readonly_system()
|
check_readonly_system()
|
||||||
{
|
{
|
||||||
local RO
|
local RO
|
||||||
@ -123,36 +98,6 @@ install_binaries()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
write_config_var()
|
|
||||||
{
|
|
||||||
# $1 - mode var
|
|
||||||
local M
|
|
||||||
eval M="\$$1"
|
|
||||||
|
|
||||||
if grep -q "^$1=\|^#$1=" "$ZAPRET_CONFIG"; then
|
|
||||||
# replace / => \/
|
|
||||||
#M=${M//\//\\\/}
|
|
||||||
M=$(echo $M | sed 's/\//\\\//g')
|
|
||||||
if [ -n "$M" ]; then
|
|
||||||
if contains "$M" " "; then
|
|
||||||
sedi -Ee "s/^#?$1=.*$/$1=\"$M\"/" "$ZAPRET_CONFIG"
|
|
||||||
else
|
|
||||||
sedi -Ee "s/^#?$1=.*$/$1=$M/" "$ZAPRET_CONFIG"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# write with comment at the beginning
|
|
||||||
sedi -Ee "s/^#?$1=.*$/#$1=/" "$ZAPRET_CONFIG"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# var does not exist in config. add it
|
|
||||||
if [ -n "$M" ]; then
|
|
||||||
echo "$1=$M" >>"$ZAPRET_CONFIG"
|
|
||||||
else
|
|
||||||
echo "#$1=$M" >>"$ZAPRET_CONFIG"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
select_mode_mode()
|
select_mode_mode()
|
||||||
{
|
{
|
||||||
local edited v vars MODES="tpws tpws-socks nfqws filter custom"
|
local edited v vars MODES="tpws tpws-socks nfqws filter custom"
|
||||||
@ -585,88 +530,6 @@ check_location()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
check_prerequisites_linux()
|
|
||||||
{
|
|
||||||
echo \* checking prerequisites
|
|
||||||
|
|
||||||
local s cmd PKGS UTILS req="curl curl"
|
|
||||||
case "$FWTYPE" in
|
|
||||||
iptables)
|
|
||||||
req="$req iptables iptables ip6tables iptables ipset ipset"
|
|
||||||
;;
|
|
||||||
nftables)
|
|
||||||
req="$req nft nftables"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
PKGS=$(for s in $req; do echo $s; done |
|
|
||||||
while read cmd; do
|
|
||||||
read pkg
|
|
||||||
exists $cmd || echo $pkg
|
|
||||||
done | sort -u | xargs)
|
|
||||||
UTILS=$(for s in $req; do echo $s; done |
|
|
||||||
while read cmd; do
|
|
||||||
read pkg
|
|
||||||
echo $cmd
|
|
||||||
done | sort -u | xargs)
|
|
||||||
|
|
||||||
if [ -z "$PKGS" ] ; then
|
|
||||||
echo required utilities exist : $UTILS
|
|
||||||
else
|
|
||||||
echo \* installing prerequisites
|
|
||||||
|
|
||||||
echo packages required : $PKGS
|
|
||||||
|
|
||||||
APTGET=$(whichq apt-get)
|
|
||||||
YUM=$(whichq yum)
|
|
||||||
PACMAN=$(whichq pacman)
|
|
||||||
ZYPPER=$(whichq zypper)
|
|
||||||
EOPKG=$(whichq eopkg)
|
|
||||||
APK=$(whichq apk)
|
|
||||||
if [ -x "$APTGET" ] ; then
|
|
||||||
"$APTGET" update
|
|
||||||
"$APTGET" install -y --no-install-recommends $PKGS dnsutils || {
|
|
||||||
echo could not install prerequisites
|
|
||||||
exitp 6
|
|
||||||
}
|
|
||||||
elif [ -x "$YUM" ] ; then
|
|
||||||
"$YUM" -y install $PKGS || {
|
|
||||||
echo could not install prerequisites
|
|
||||||
exitp 6
|
|
||||||
}
|
|
||||||
elif [ -x "$PACMAN" ] ; then
|
|
||||||
"$PACMAN" -Syy
|
|
||||||
"$PACMAN" --noconfirm -S $PKGS || {
|
|
||||||
echo could not install prerequisites
|
|
||||||
exitp 6
|
|
||||||
}
|
|
||||||
elif [ -x "$ZYPPER" ] ; then
|
|
||||||
"$ZYPPER" --non-interactive install $PKGS || {
|
|
||||||
echo could not install prerequisites
|
|
||||||
exitp 6
|
|
||||||
}
|
|
||||||
elif [ -x "$EOPKG" ] ; then
|
|
||||||
"$EOPKG" -y install $PKGS || {
|
|
||||||
echo could not install prerequisites
|
|
||||||
exitp 6
|
|
||||||
}
|
|
||||||
elif [ -x "$APK" ] ; then
|
|
||||||
"$APK" update
|
|
||||||
# for alpine
|
|
||||||
[ "$FWTYPE" = iptables ] && [ -n "$($APK list ip6tables)" ] && PKGS="$PKGS ip6tables"
|
|
||||||
"$APK" add $PKGS || {
|
|
||||||
echo could not install prerequisites
|
|
||||||
exitp 6
|
|
||||||
}
|
|
||||||
else
|
|
||||||
echo supported package manager not found
|
|
||||||
echo you must manually install : $UTILS
|
|
||||||
exitp 5
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
service_install_systemd()
|
service_install_systemd()
|
||||||
{
|
{
|
||||||
echo \* installing zapret service
|
echo \* installing zapret service
|
||||||
@ -829,76 +692,6 @@ install_linux()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
check_prerequisites_openwrt()
|
|
||||||
{
|
|
||||||
echo \* checking prerequisites
|
|
||||||
|
|
||||||
local PKGS="curl" UPD=0
|
|
||||||
|
|
||||||
case "$FWTYPE" in
|
|
||||||
iptables)
|
|
||||||
PKGS="$PKGS ipset iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra"
|
|
||||||
[ "$DISABLE_IPV6" != "1" ] && PKGS="$PKGS ip6tables-mod-nat ip6tables-extra"
|
|
||||||
;;
|
|
||||||
nftables)
|
|
||||||
PKGS="$PKGS nftables kmod-nft-nat kmod-nft-offload kmod-nft-queue"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if check_packages_openwrt $PKGS ; then
|
|
||||||
echo everything is present
|
|
||||||
else
|
|
||||||
echo \* installing prerequisites
|
|
||||||
|
|
||||||
opkg update
|
|
||||||
UPD=1
|
|
||||||
opkg install $PKGS || {
|
|
||||||
echo could not install prerequisites
|
|
||||||
exitp 6
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
is_linked_to_busybox gzip && {
|
|
||||||
echo
|
|
||||||
echo your system uses default busybox gzip. its several times slower than GNU gzip.
|
|
||||||
echo ip/host list scripts will run much faster with GNU gzip
|
|
||||||
echo installer can install GNU gzip but it requires about 100 Kb space
|
|
||||||
if ask_yes_no N "do you want to install GNU gzip"; then
|
|
||||||
[ "$UPD" = "0" ] && {
|
|
||||||
opkg update
|
|
||||||
UPD=1
|
|
||||||
}
|
|
||||||
opkg install --force-overwrite gzip
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
is_linked_to_busybox sort && {
|
|
||||||
echo
|
|
||||||
echo your system uses default busybox sort. its much slower and consumes much more RAM than GNU sort
|
|
||||||
echo ip/host list scripts will run much faster with GNU sort
|
|
||||||
echo installer can install GNU sort but it requires about 100 Kb space
|
|
||||||
if ask_yes_no N "do you want to install GNU sort"; then
|
|
||||||
[ "$UPD" = "0" ] && {
|
|
||||||
opkg update
|
|
||||||
UPD=1
|
|
||||||
}
|
|
||||||
opkg install --force-overwrite coreutils-sort
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
[ "$FSLEEP" = 0 ] && is_linked_to_busybox sleep && {
|
|
||||||
echo
|
|
||||||
echo no methods of sub-second sleep were found.
|
|
||||||
echo if you want to speed up blockcheck install coreutils-sleep. it requires about 40 Kb space
|
|
||||||
if ask_yes_no N "do you want to install COREUTILS sleep"; then
|
|
||||||
[ "$UPD" = "0" ] && {
|
|
||||||
opkg update
|
|
||||||
UPD=1
|
|
||||||
}
|
|
||||||
opkg install --force-overwrite coreutils-sleep
|
|
||||||
fsleep_setup
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deoffload_openwrt_firewall()
|
deoffload_openwrt_firewall()
|
||||||
{
|
{
|
||||||
echo \* checking flow offloading
|
echo \* checking flow offloading
|
||||||
|
75
install_prereq.sh
Executable file
75
install_prereq.sh
Executable file
@ -0,0 +1,75 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# install prerequisites
|
||||||
|
|
||||||
|
EXEDIR="$(dirname "$0")"
|
||||||
|
EXEDIR="$(cd "$EXEDIR"; pwd)"
|
||||||
|
ZAPRET_CONFIG="$EXEDIR/config"
|
||||||
|
ZAPRET_BASE="$EXEDIR"
|
||||||
|
|
||||||
|
. "$ZAPRET_CONFIG"
|
||||||
|
. "$ZAPRET_BASE/common/base.sh"
|
||||||
|
. "$ZAPRET_BASE/common/elevate.sh"
|
||||||
|
. "$ZAPRET_BASE/common/fwtype.sh"
|
||||||
|
. "$ZAPRET_BASE/common/dialog.sh"
|
||||||
|
. "$ZAPRET_BASE/common/installer.sh"
|
||||||
|
. "$ZAPRET_BASE/common/ipt.sh"
|
||||||
|
|
||||||
|
select_ipv6()
|
||||||
|
{
|
||||||
|
local T=N
|
||||||
|
|
||||||
|
[ "$DISABLE_IPV6" != '1' ] && T=Y
|
||||||
|
local old6=$DISABLE_IPV6
|
||||||
|
echo
|
||||||
|
if ask_yes_no $T "enable ipv6 support"; then
|
||||||
|
DISABLE_IPV6=0
|
||||||
|
else
|
||||||
|
DISABLE_IPV6=1
|
||||||
|
fi
|
||||||
|
[ "$old6" != "$DISABLE_IPV6" ] && write_config_var DISABLE_IPV6
|
||||||
|
}
|
||||||
|
select_fwtype()
|
||||||
|
{
|
||||||
|
echo
|
||||||
|
[ $(get_ram_mb) -le 400 ] && {
|
||||||
|
echo WARNING ! you are running a low RAM system
|
||||||
|
echo WARNING ! nft requires lots of RAM to load huge ip sets, much more than ipsets require
|
||||||
|
echo WARNING ! if you need large lists it may be necessary to fall back to iptables+ipset firewall
|
||||||
|
}
|
||||||
|
echo select firewall type :
|
||||||
|
ask_list FWTYPE "iptables nftables" "$FWTYPE" && write_config_var FWTYPE
|
||||||
|
}
|
||||||
|
|
||||||
|
ask_config()
|
||||||
|
{
|
||||||
|
[ "$SYSTEM" = openwrt ] && select_ipv6
|
||||||
|
select_fwtype
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# build binaries, do not use precompiled
|
||||||
|
[ "$1" = "make" ] && FORCE_BUILD=1
|
||||||
|
|
||||||
|
umask 0022
|
||||||
|
fsleep_setup
|
||||||
|
fix_sbin_path
|
||||||
|
check_system
|
||||||
|
require_root
|
||||||
|
ask_config
|
||||||
|
|
||||||
|
case $UNAME in
|
||||||
|
Linux)
|
||||||
|
case $SYSTEM in
|
||||||
|
openwrt)
|
||||||
|
check_prerequisites_openwrt
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
check_prerequisites_linux
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
exitp 0
|
Loading…
Reference in New Issue
Block a user