/
githubmirror
/
XX-Net
Обзор
Документация
Войти
/
githubmirror
/
XX-Net
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
5.5.1
start
237 строк
5 KB
micheal.X
Fix mac start questioning issue.
11 ноя 2022, 06:22
11 ноя 2022, 06:22
52e872a
Код
Авторство
О чём код?
#!/bin/sh path_to_script () { TARGET="$1" BASENAME="$(basename "$TARGET")" ( cd -P "$(dirname "$TARGET")" if [ -h "$BASENAME" ] then path_to_script "$(readlink "$BASENAME")" else echo "$PWD" fi ) } goto_script_path() { PATH_TO_SCRIPT="$(path_to_script "$0")" # Fails to start if the install path contains spaces, so it must be quoted. cd "$PATH_TO_SCRIPT" } goto_script_path if ! type python > /dev/null 2>&1; then PYTHON="python3" elif python -V 2>&1| grep -q "Python 3" ;then PYTHON="python" else PYTHON="python3" fi if [ -f code/version.txt ]; then VERSION=`cat code/version.txt` else VERSION="default" fi if [ ! -f "code/$VERSION/launcher/start.py" ]; then VERSION="default" fi REAL_VERSION=`cat code/$VERSION/version.txt` echo "Start version:$REAL_VERSION" # launch xx-net service by ignore hungup signal launchWithNoHungup() { nohup ${PYTHON} code/${VERSION}/launcher/start.py $@>/dev/null 2>&1 & } # launch xx-net service by hungup signal launchWithHungup() { ${PYTHON} code/${VERSION}/launcher/start.py $@ } # check command avalibility has_command() { type $1 > /dev/null 2>&1 } openwrt_setup_env() { echo "It is OpenWrt." #TODO: Setup # check mount usb disk # install python, python-openssl, ipset to usb device # opkg --dest usb install python python-pyopenssl # setup dns # set auto start # echo "It is openwrt." } # Install Packages # get operating system name os_name=`uname -s` if [ $os_name = 'Linux' ]; then PYTHON3="python3/bin/python3" if test -f "$PYTHON3"; then echo "Linux using embedded python." PYTHON="$PYTHON3" else if ! ${PYTHON} -c 'import brotli' 2> /dev/null; then echo 'Installing brotli for your system... Please type in your password if requested' if has_command zypper; then # openSUSE sudo zypper in -y python3-brotli elif has_command apt-get; then # Debian or Debian-like sudo apt-get install -y python3-brotli elif has_command dnf; then # Fedora sudo dnf install -y python3-brotli elif has_command yum; then # RedHat sudo yum install -y pybrotli elif has_command pacman; then # ArchLinux sudo pacman -S --noconfirm python-brotli elif has_command opkg; then # OpenWrt echo "install python" opkg install python3 python3-brotli fi pip install brotli fi fi elif [ $os_name = 'Darwin' ]; then PYTHON3="python3/bin/python3" if test -f "$PYTHON3"; then echo "Darwin using embedded python." PYTHON="$PYTHON3" else if ! ${PYTHON} -c 'import PyObjCTools, AppKit, SystemConfiguration' 2> /dev/null; then sudo pip3 install -U PyObjC Pillow fi fi if [ ! -d "data/launcher" ]; then # remove the mask for download file warning xattr -c -r * fi fi help() { echo " USAGE: start -h show help. start -allow_remote enable remote connect. -no_mess_system Don't mess the system, include not install CA to browser, not add shortcut to desktop automatically. -f Run in foreground, in Mac will run in background as default. -hungup start with nohup to run in background. start set_iptables [interface] set iptables for transparent proxy. interface The network interface which will be redirected Default is br-lan start unset_iptables [interface] " exit 0 } set_iptables(){ if [ "$1" = '' ]; then INF="br-lan" else INF=$1 fi echo "set interface $INF" # TODO: check if rule exist iptables -t nat -N REDSOCKS iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 8086 iptables -t nat -A PREROUTING --in-interface $INF -p tcp -j REDSOCKS exit 0 } unset_iptables(){ if [ "$1" = '' ]; then INF="br-lan" else INF=$1 fi iptables -t nat -D PREROUTING --in-interface $INF -p tcp -j REDSOCKS iptables -t nat -X REDSOCKS } ARGS=$@ if [ $os_name = 'Darwin' ] ; then HANGUP='1' else HANGUP='0' fi while [ -n "$1" ]; do case $1 in -h) help;shift 1;; -help) help;shift 1;; --help) help;shift 1;; -\?) help;shift 1;; -allow_remote)shift 1;; -no_mess_system)shift 1;; -f)HANGUP='0'; shift 1;; -hungup)HANGUP='1';shift 1;; set_iptables) set_iptables $2;; unset_iptables) unset_iptables $2;; *) echo "unknown option $1."; shift 1;; esac done # Start Application if [ $HANGUP = '1' ]; then echo "Run XX-Net in background." launchWithNoHungup $ARGS else launchWithHungup $ARGS fi