Версия 0.6.0
Заменяет tpws на utunws (форк nfqws под utun+BPF из Flowseal/zapret-mac-discord-youtube) на macOS: движок уровня пакетов вместо socks5-прокси даёт macOS те же 22 стратегии Flowseal, что у Windows и Linux, включая fake-пакеты и десинк UDP/QUIC — раньше tpws этого не умел вовсе. Обход теперь ставится как LaunchDaemon (resources/darwin-helper/), пароль администратора спрашивается при каждом включении/выключении, тот же принцип, что pkexec на Linux. Системный прокси и авто-список hostlist-auto больше не нужны и убраны. README: Windows отмечена как гарантированно рабочая, macOS и Linux — как частично.
This commit is contained in:
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/bin/sh
|
||||
# Привилегированная остановка обхода блокировок на macOS. Без аргументов — вызывается и как
|
||||
# osascript-точка входа из utunws.darwin.ts (выключение обхода), и напрямую (уже под root,
|
||||
# без повторной элевации) из install.sh, когда новая установка не поднялась.
|
||||
#
|
||||
# Полный снос, а не пауза: LaunchDaemon, strategy.cfg, pf-правила — всё убирается. Обратное
|
||||
# решение (оставить демона установленным и просто «выключенным», как служба на Windows) не
|
||||
# подходит здесь — на macOS нет отдельного «выключенного» состояния для LaunchDaemon кроме
|
||||
# unload/bootout, так что «выключить» и «удалить установку» здесь одно и то же действие.
|
||||
# Настройка автозапуска (RunAtLoad) значения не теряет — она хранится в приложении и
|
||||
# применяется заново при следующем включении (см. engine.darwin.ts).
|
||||
set -eu
|
||||
|
||||
LABEL=com.rknboost.zapret
|
||||
ANCHOR=com.apple/rknboost
|
||||
DEST='/Library/Application Support/RKNboost/zapret'
|
||||
PLIST=/Library/LaunchDaemons/$LABEL.plist
|
||||
PIDFILE=/var/run/rknboost-zapret.pid
|
||||
TOKEN_FILE=/var/run/rknboost-zapret.pf-token
|
||||
KEEPINIT_FILE=/var/db/rknboost-zapret.keepinit
|
||||
|
||||
/bin/launchctl disable system/"$LABEL" >/dev/null 2>&1 || true
|
||||
/bin/launchctl bootout system/"$LABEL" >/dev/null 2>&1 || true
|
||||
/sbin/pfctl -a "$ANCHOR" -F all >/dev/null 2>&1 || true
|
||||
# См. install.sh про то, почему по полному пути, а не по имени процесса.
|
||||
/usr/bin/pkill -9 -f "$DEST/bin/utunws" >/dev/null 2>&1 || true
|
||||
/bin/rm -f "$PIDFILE" "$PLIST"
|
||||
|
||||
if [ -s "$TOKEN_FILE" ]; then
|
||||
TOKEN=$(/bin/cat "$TOKEN_FILE" 2>/dev/null || true)
|
||||
if [ -n "$TOKEN" ]; then /sbin/pfctl -X "$TOKEN" >/dev/null 2>&1 || true; fi
|
||||
/bin/rm -f "$TOKEN_FILE"
|
||||
fi
|
||||
if [ -s "$KEEPINIT_FILE" ]; then
|
||||
KEEPINIT=$(/bin/cat "$KEEPINIT_FILE" 2>/dev/null || true)
|
||||
case "$KEEPINIT" in
|
||||
*[!0-9]*|'') ;;
|
||||
*) /usr/sbin/sysctl -w "net.inet.tcp.keepinit=$KEEPINIT" >/dev/null 2>&1 || true ;;
|
||||
esac
|
||||
/bin/rm -f "$KEEPINIT_FILE"
|
||||
fi
|
||||
Reference in New Issue
Block a user