|
@@ -1,307 +0,0 @@
|
|
|
-#!/bin/sh
|
|
|
-
|
|
|
-if [ $(id -u) -ne 0 ]; then
|
|
|
- echo "This script must be run as root"
|
|
|
- exit 1
|
|
|
-fi
|
|
|
-
|
|
|
-echo "checking dependencies..."
|
|
|
-
|
|
|
-OS=$(uname)
|
|
|
-
|
|
|
-if [ -f /etc/debian_version ]; then
|
|
|
- dependencies="wireguard wireguard-tools"
|
|
|
- update_cmd='apt update'
|
|
|
- install_cmd='apt-get install -y'
|
|
|
-elif [ -f /etc/alpine-release ]; then
|
|
|
- dependencies="wireguard"
|
|
|
- update_cmd='apk update'
|
|
|
- install_cmd='apk --update add'
|
|
|
-elif [ -f /etc/centos-release ]; then
|
|
|
- dependencies="wireguard"
|
|
|
- update_cmd='yum update'
|
|
|
- install_cmd='yum install -y'
|
|
|
-elif [ -f /etc/fedora-release ]; then
|
|
|
- dependencies="wireguard"
|
|
|
- update_cmd='dnf update'
|
|
|
- install_cmd='dnf install -y'
|
|
|
-elif [ -f /etc/redhat-release ]; then
|
|
|
- dependencies="wireguard"
|
|
|
- update_cmd='yum update'
|
|
|
- install_cmd='yum install -y'
|
|
|
-elif [ -f /etc/arch-release ]; then
|
|
|
- dependecies="wireguard-tools"
|
|
|
- update_cmd='pacman -Sy'
|
|
|
- install_cmd='pacman -S --noconfirm'
|
|
|
-elif [ "${OS}" = "FreeBSD" ]; then
|
|
|
- dependencies="wireguard wget"
|
|
|
- update_cmd='pkg update'
|
|
|
- install_cmd='pkg install -y'
|
|
|
-elif [ -f /etc/turris-version ]; then
|
|
|
- dependencies="wireguard-tools bash"
|
|
|
- OS="TurrisOS"
|
|
|
- update_cmd='opkg update'
|
|
|
- install_cmd='opkg install'
|
|
|
-elif [ -f /etc/openwrt_release ]; then
|
|
|
- dependencies="wireguard-tools bash"
|
|
|
- OS="OpenWRT"
|
|
|
- update_cmd='opkg update'
|
|
|
- install_cmd='opkg install'
|
|
|
-else
|
|
|
- install_cmd=''
|
|
|
-fi
|
|
|
-
|
|
|
-if [ -z "${install_cmd}" ]; then
|
|
|
- echo "OS unsupported for automatic dependency install"
|
|
|
- exit 1
|
|
|
-fi
|
|
|
-
|
|
|
-${update_cmd}
|
|
|
-
|
|
|
-set -- $dependencies
|
|
|
-while [ -n "$1" ]; do
|
|
|
- echo $1
|
|
|
- if [ "${OS}" = "FreeBSD" ]; then
|
|
|
- is_installed=$(pkg check -d $1 | grep "Checking" | grep "done")
|
|
|
- if [ "$is_installed" != "" ]; then
|
|
|
- echo " " $1 is installed
|
|
|
- else
|
|
|
- echo " " $1 is not installed. Attempting install.
|
|
|
- ${install_cmd} $1
|
|
|
- sleep 5
|
|
|
- is_installed=$(pkg check -d $1 | grep "Checking" | grep "done")
|
|
|
- if [ "$is_installed" != "" ]; then
|
|
|
- echo " " $1 is installed
|
|
|
- elif [ -x "$(command -v $1)" ]; then
|
|
|
- echo " " $1 is installed
|
|
|
- else
|
|
|
- echo " " FAILED TO INSTALL $1
|
|
|
- echo " " This may break functionality.
|
|
|
- fi
|
|
|
- fi
|
|
|
- else
|
|
|
- if [ "${OS}" = "OpenWRT" ] || [ "${OS}" = "TurrisOS" ]; then
|
|
|
- is_installed=$(opkg list-installed $1 | grep $1)
|
|
|
- else
|
|
|
- is_installed=$(dpkg-query -W --showformat='${Status}\n' $1 | grep "install ok installed")
|
|
|
- fi
|
|
|
- if [ "${is_installed}" != "" ]; then
|
|
|
- echo " " $1 is installed
|
|
|
- else
|
|
|
- echo " " $1 is not installed. Attempting install.
|
|
|
- ${install_cmd} $1
|
|
|
- sleep 5
|
|
|
- if [ "${OS}" = "OpenWRT" ] || [ "${OS}" = "TurrisOS" ]; then
|
|
|
- is_installed=$(opkg list-installed $1 | grep $1)
|
|
|
- else
|
|
|
- is_installed=$(dpkg-query -W --showformat='${Status}\n' $1 | grep "install ok installed")
|
|
|
- fi
|
|
|
- if [ "${is_installed}" != "" ]; then
|
|
|
- echo " " $1 is installed
|
|
|
- elif [ -x "$(command -v $1)" ]; then
|
|
|
- echo " " $1 is installed
|
|
|
- else
|
|
|
- echo " " FAILED TO INSTALL $1
|
|
|
- echo " " This may break functionality.
|
|
|
- fi
|
|
|
- fi
|
|
|
- fi
|
|
|
- shift
|
|
|
-done
|
|
|
-
|
|
|
-set -e
|
|
|
-
|
|
|
-[ -z "$KEY" ] && KEY=nokey;
|
|
|
-[ -z "$VERSION" ] && echo "no \$VERSION provided, fallback to latest" && VERSION=latest;
|
|
|
-[ "latest" != "$VERSION" ] && [ "v" != `echo $VERSION | cut -c1` ] && VERSION="v$VERSION"
|
|
|
-[ -z "$NAME" ] && NAME="";
|
|
|
-
|
|
|
-dist=netclient
|
|
|
-
|
|
|
-echo "OS Version = $(uname)"
|
|
|
-echo "Netclient Version = $VERSION"
|
|
|
-
|
|
|
-case $(uname | tr A-Z a-z) in
|
|
|
- linux*)
|
|
|
- if [ -z "$CPU_ARCH" ]; then
|
|
|
- CPU_ARCH=$(uname -m)
|
|
|
- fi
|
|
|
- case $CPU_ARCH in
|
|
|
- amd64)
|
|
|
- dist=netclient
|
|
|
- ;;
|
|
|
- x86_64)
|
|
|
- dist=netclient
|
|
|
- ;;
|
|
|
- arm64)
|
|
|
- dist=netclient-arm64
|
|
|
- ;;
|
|
|
- aarch64)
|
|
|
- dist=netclient-arm64
|
|
|
- ;;
|
|
|
- armv6l)
|
|
|
- dist=netclient-arm6
|
|
|
- ;;
|
|
|
- armv7l)
|
|
|
- dist=netclient-arm7
|
|
|
- ;;
|
|
|
- arm*)
|
|
|
- dist=netclient-$CPU_ARCH
|
|
|
- ;;
|
|
|
- mipsle)
|
|
|
- dist=netclient-mipsle
|
|
|
- ;;
|
|
|
- mips)
|
|
|
- #If binary in the below condition is not compatible with your hardware, retry with other netclient-mips* binaries.
|
|
|
- if [[ `printf '\0\1' | hexdump -e '/2 "%04x"'` -eq 0100 ]]; then
|
|
|
- #Little Endian, tested and confirmed in GL-MT1300 OS "OpenWrt 19.07.8"
|
|
|
- dist=netclient-mipsle-softfloat
|
|
|
- else
|
|
|
- #Big Endian, tested and confirmed in DSL-2750U OS "OpenWrt 22.03.2"
|
|
|
- dist=netclient-mips-softfloat
|
|
|
- fi
|
|
|
- ;;
|
|
|
- *)
|
|
|
- fatal "$CPU_ARCH : cpu architecture not supported"
|
|
|
- esac
|
|
|
- ;;
|
|
|
- darwin)
|
|
|
- dist=netclient-darwin
|
|
|
- ;;
|
|
|
- Darwin)
|
|
|
- dist=netclient-darwin
|
|
|
- ;;
|
|
|
- freebsd*)
|
|
|
- if [ -z "$CPU_ARCH" ]; then
|
|
|
- CPU_ARCH=$(uname -m)
|
|
|
- fi
|
|
|
- case $CPU_ARCH in
|
|
|
- amd64)
|
|
|
- dist=netclient-freebsd
|
|
|
- ;;
|
|
|
- x86_64)
|
|
|
- dist=netclient-freebsd
|
|
|
- ;;
|
|
|
- arm64)
|
|
|
- dist=netclient-freebsd-arm64
|
|
|
- ;;
|
|
|
- aarch64)
|
|
|
- dist=netclient-freebsd-arm64
|
|
|
- ;;
|
|
|
- armv7l)
|
|
|
- dist=netclient-freebsd-arm7
|
|
|
- ;;
|
|
|
- arm*)
|
|
|
- dist=netclient-freebsd-$CPU_ARCH
|
|
|
- ;;
|
|
|
- *)
|
|
|
- fatal "$CPU_ARCH : cpu architecture not supported"
|
|
|
- esac
|
|
|
- ;;
|
|
|
-esac
|
|
|
-
|
|
|
-echo "Binary = $dist"
|
|
|
-
|
|
|
-url="https://github.com/gravitl/netmaker/releases/download/$VERSION/$dist"
|
|
|
-curl_opts='-nv'
|
|
|
-if [ "${OS}" = "OpenWRT" ] || [ "${OS}" = "TurrisOS" ]; then
|
|
|
- curl_opts='-q'
|
|
|
-fi
|
|
|
-
|
|
|
-if curl --output /dev/null --silent --head --fail "$url"; then
|
|
|
- echo "Downloading $dist $VERSION"
|
|
|
- wget $curl_opts -O netclient $url
|
|
|
-else
|
|
|
- echo "Downloading $dist latest"
|
|
|
- wget $curl_opts -O netclient https://github.com/gravitl/netmaker/releases/latest/download/$dist
|
|
|
-fi
|
|
|
-
|
|
|
-chmod +x netclient
|
|
|
-
|
|
|
-EXTRA_ARGS=""
|
|
|
-if [ "${OS}" = "OpenWRT" ] || [ "${OS}" = "TurrisOS" ]; then
|
|
|
- EXTRA_ARGS="--daemon=off"
|
|
|
-fi
|
|
|
-
|
|
|
-if [ "${KEY}" != "nokey" ]; then
|
|
|
- if [ -z "${NAME}" ]; then
|
|
|
- ./netclient join -t $KEY $EXTRA_ARGS
|
|
|
- else
|
|
|
- ./netclient join -t $KEY --name $NAME $EXTRA_ARGS
|
|
|
- fi
|
|
|
-fi
|
|
|
-
|
|
|
-if [ "${OS}" = "FreeBSD" ]; then
|
|
|
- if ! [ -x /usr/sbin/netclient ]; then
|
|
|
- echo "Moving netclient executable to \"/usr/sbin/netclient\""
|
|
|
- mv netclient /usr/sbin
|
|
|
- else
|
|
|
- echo "Netclient already present."
|
|
|
- fi
|
|
|
-fi
|
|
|
-
|
|
|
-if [ "${OS}" = "OpenWRT" ] || [ "${OS}" = "TurrisOS" ]; then
|
|
|
- mv ./netclient /sbin/netclient
|
|
|
-
|
|
|
- if [ "${OS}" = "TurrisOS" ]; then
|
|
|
- url="https://raw.githubusercontent.com/gravitl/netmaker/$VERSION/scripts/openwrt-daemon.sh"
|
|
|
- if curl --output /dev/null --silent --head --fail $url; then
|
|
|
- wget $curl_opts -O netclient.service.tmp $url
|
|
|
- else
|
|
|
- wget $curl_opts -O netclient.service.tmp https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/openwrt-daemon.sh
|
|
|
- fi
|
|
|
- elif [ "${OS}" = "OpenWRT" ] && [ "$CPU_ARCH" = "mips" ]; then
|
|
|
- wget $curl_opts -O netclient.service.tmp https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/openwrt-daemon.sh
|
|
|
- else
|
|
|
- cat << 'END_OF_FILE' > ./netclient.service.tmp
|
|
|
-#!/bin/sh /etc/rc.common
|
|
|
-
|
|
|
-EXTRA_COMMANDS="status"
|
|
|
-EXTRA_HELP=" status Check service is running"
|
|
|
-START=99
|
|
|
-
|
|
|
-LOG_FILE="/tmp/netclient.logs"
|
|
|
-
|
|
|
-start() {
|
|
|
- if [ ! -f "${LOG_FILE}" ];then
|
|
|
- touch "${LOG_FILE}"
|
|
|
- fi
|
|
|
- local PID=$(ps|grep "netclient daemon"|grep -v grep|awk '{print $1}')
|
|
|
- if [ "${PID}" ];then
|
|
|
- echo "service is running"
|
|
|
- return
|
|
|
- fi
|
|
|
- bash -c "do /sbin/netclient daemon >> ${LOG_FILE} 2>&1;\
|
|
|
- if [ $(ls -l ${LOG_FILE}|awk '{print $5}') -gt 10240000 ];then tar zcf "${LOG_FILE}.tar" -C / "tmp/netclient.logs" && > $LOG_FILE;fi;done &"
|
|
|
- echo "start"
|
|
|
-}
|
|
|
-
|
|
|
-stop() {
|
|
|
- pids=$(ps|grep "netclient daemon"|grep -v grep|awk '{print $1}')
|
|
|
- for i in "${pids[@]}"
|
|
|
- do
|
|
|
- if [ "${i}" ];then
|
|
|
- kill "${i}"
|
|
|
- fi
|
|
|
- done
|
|
|
- echo "stop"
|
|
|
-}
|
|
|
-
|
|
|
-status() {
|
|
|
- local PID=$(ps|grep "netclient daemon"|grep -v grep|awk '{print $1}')
|
|
|
- if [ "${PID}" ];then
|
|
|
- echo -e "netclient[${PID}] is running \n"
|
|
|
- else
|
|
|
- echo -e "netclient is not running \n"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-END_OF_FILE
|
|
|
- fi
|
|
|
- mv ./netclient.service.tmp /etc/init.d/netclient
|
|
|
- chmod +x /etc/init.d/netclient
|
|
|
- /etc/init.d/netclient enable
|
|
|
- /etc/init.d/netclient start
|
|
|
-else
|
|
|
- rm -f netclient
|
|
|
-fi
|