diff --git a/pkg/qnap/Dockerfile b/pkg/qnap/Dockerfile new file mode 100644 index 000000000..3deb161cb --- /dev/null +++ b/pkg/qnap/Dockerfile @@ -0,0 +1,8 @@ +# vim: ft=dockerfile + +FROM ubuntu:20.04 + +# COPY zerotier/qbuild /qbuild + +COPY entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/pkg/qnap/build.sh b/pkg/qnap/build.sh new file mode 100755 index 000000000..6d4f4d0b5 --- /dev/null +++ b/pkg/qnap/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +build_packages() +{ + sudo docker run -v $(pwd):/zto ztqnap +} + +build_container() +{ + sudo docker build -t ztqnap . --load +} + +"$@" diff --git a/pkg/qnap/entrypoint.sh b/pkg/qnap/entrypoint.sh new file mode 100755 index 000000000..d236a5429 --- /dev/null +++ b/pkg/qnap/entrypoint.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +ZTO_VER=$(git describe --abbrev=0 --tags) +ZTO_COMMIT=$(git rev-parse HEAD) +ZTO_DESC=$(jq -r '.desc' ../config.json) + +mkdir -p pkg/qnap/zerotier/arm_64 +mkdir -p pkg/qnap/zerotier/arm_x09 +mkdir -p pkg/qnap/zerotier/arm_x10 +mkdir -p pkg/qnap/zerotier/arm_x12 +mkdir -p pkg/qnap/zerotier/arm_x19 +mkdir -p pkg/qnap/zerotier/arm_x31 +mkdir -p pkg/qnap/zerotier/arm_x41 +mkdir -p pkg/qnap/zerotier/x86_64 +mkdir -p pkg/qnap/zerotier/x86 +mkdir -p pkg/qnap/zerotier/x86_ce53xx + +cat > pkg/qnap/zerotier/qpkg.cfg <<- EOM +# Update package config +# Name of the packaged application. +QPKG_NAME="zerotier" +# Name of the display application. +QPKG_DISPLAY_NAME="ZeroTier" +# Version of the packaged application. +QPKG_VER="$ZTO_VER" +# Author or maintainer of the package +QPKG_AUTHOR="ZeroTier, Inc." +# License for the packaged application +QPKG_LICENSE="BUSL-1.1" +# One-line description of the packaged application +QPKG_SUMMARY="$ZTO_DESC" + +# Preferred number in start/stop sequence. +QPKG_RC_NUM="101" +# Init-script used to control the start and stop of the installed application. +QPKG_SERVICE_PROGRAM="zerotier.sh" + +# Specifies any packages required for the current package to operate. +QPKG_REQUIRE="QVPN Service" +# Specifies what packages cannot be installed if the current package +# is to operate properly. +#QPKG_CONFLICT="Python, OPT/sed" +# Name of configuration file (multiple definitions are allowed). +#QPKG_CONFIG="myApp.conf" +#QPKG_CONFIG="/etc/config/myApp.conf" +# Port number used by service program. +QPKG_SERVICE_PORT="9993" + +# Minimum QTS version requirement +QTS_MINI_VERSION="4.1.0" +# Maximum QTS version requirement +QTS_MAX_VERSION="5.0.0" + +# Location of icons for the packaged application. +QDK_DATA_DIR_ICONS="icons" +EOM + +# Copy binaries into pkg directory +# See: https://github.com/qnap-dev/QDK +cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-aarch64 pkg/qnap/zerotier/arm_64/zerotier-one +#cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-armv5tejl pkg/qnap/zerotier/arm-x09/zerotier-one +#cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-armv5tel pkg/qnap/zerotier/arm-x19/zerotier-one +cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-armhf pkg/qnap/zerotier/arm-x31/zerotier-one +cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-armhf pkg/qnap/zerotier/arm-x41/zerotier-one +cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-i386 pkg/qnap/zerotier/x86/zerotier-one +cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-x86_64 pkg/qnap/zerotier/x86_64/zerotier-one +cp -vf output/static/zerotier-one.${ZTO_VER}.alpine-i386 pkg/qnap/zerotier/x86_ce53xx/zerotier-one + +rm -rf output/qnap/* + +pushd pkg/qnap/zerotier +./qbuild #--build-arch arm-x31 +cp -f build/* ../../../output/qnap + +# Show output product +cd popd diff --git a/pkg/qnap/qdk.conf b/pkg/qnap/qdk.conf new file mode 100644 index 000000000..90942b431 --- /dev/null +++ b/pkg/qnap/qdk.conf @@ -0,0 +1,3 @@ +QDK_VERSION=2.3.11 +QDK_PATH_P=`pwd | awk 'BEGIN { FS = "QDK" } ; { print $1 }'` +QDK_PATH="${QDK_PATH_P}/QDK" diff --git a/pkg/qnap/zerotier/Makefile b/pkg/qnap/zerotier/Makefile new file mode 100644 index 000000000..caea3915f --- /dev/null +++ b/pkg/qnap/zerotier/Makefile @@ -0,0 +1,7 @@ +.PHONY: all + +all: + @$(CC) -o qpkg_encrypt qpkg_encrypt.c + +clean: + rm -rf /bin/qpkg_encrypt diff --git a/pkg/qnap/zerotier/arm_64/.gitkeep b/pkg/qnap/zerotier/arm_64/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/arm_x09/.gitkeep b/pkg/qnap/zerotier/arm_x09/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/arm_x10/.gitkeep b/pkg/qnap/zerotier/arm_x10/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/arm_x12/.gitkeep b/pkg/qnap/zerotier/arm_x12/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/arm_x19/.gitkeep b/pkg/qnap/zerotier/arm_x19/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/arm_x31/.gitkeep b/pkg/qnap/zerotier/arm_x31/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/arm_x41/.gitkeep b/pkg/qnap/zerotier/arm_x41/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/config/.gitkeep b/pkg/qnap/zerotier/config/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/icons/.gitkeep b/pkg/qnap/zerotier/icons/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/icons/ZeroTier.gif b/pkg/qnap/zerotier/icons/ZeroTier.gif new file mode 100644 index 000000000..db1b190c4 Binary files /dev/null and b/pkg/qnap/zerotier/icons/ZeroTier.gif differ diff --git a/pkg/qnap/zerotier/icons/ZeroTier_80.gif b/pkg/qnap/zerotier/icons/ZeroTier_80.gif new file mode 100644 index 000000000..db1b190c4 Binary files /dev/null and b/pkg/qnap/zerotier/icons/ZeroTier_80.gif differ diff --git a/pkg/qnap/zerotier/icons/ZeroTier_gray.gif b/pkg/qnap/zerotier/icons/ZeroTier_gray.gif new file mode 100644 index 000000000..a04faa18e Binary files /dev/null and b/pkg/qnap/zerotier/icons/ZeroTier_gray.gif differ diff --git a/pkg/qnap/zerotier/package_routines b/pkg/qnap/zerotier/package_routines new file mode 100644 index 000000000..e80c71458 --- /dev/null +++ b/pkg/qnap/zerotier/package_routines @@ -0,0 +1,158 @@ +###################################################################### +# List of available definitions (it's not necessary to uncomment them) +###################################################################### +###### Command definitions ##### +#CMD_AWK="/bin/awk" +#CMD_CAT="/bin/cat" +#CMD_CHMOD="/bin/chmod" +#CMD_CHOWN="/bin/chown" +#CMD_CP="/bin/cp" +#CMD_CUT="/bin/cut" +#CMD_DATE="/bin/date" +#CMD_ECHO="/bin/echo" +#CMD_EXPR="/usr/bin/expr" +#CMD_FIND="/usr/bin/find" +#CMD_GETCFG="/sbin/getcfg" +#CMD_GREP="/bin/grep" +#CMD_GZIP="/bin/gzip" +#CMD_HOSTNAME="/bin/hostname" +#CMD_LN="/bin/ln" +#CMD_LOG_TOOL="/sbin/log_tool" +#CMD_MD5SUM="/bin/md5sum" +#CMD_MKDIR="/bin/mkdir" +#CMD_MV="/bin/mv" +#CMD_RM="/bin/rm" +#CMD_RMDIR="/bin/rmdir" +#CMD_SED="/bin/sed" +#CMD_SETCFG="/sbin/setcfg" +#CMD_SLEEP="/bin/sleep" +#CMD_SORT="/usr/bin/sort" +#CMD_SYNC="/bin/sync" +#CMD_TAR="/bin/tar" +#CMD_TOUCH="/bin/touch" +#CMD_WGET="/usr/bin/wget" +#CMD_WLOG="/sbin/write_log" +#CMD_XARGS="/usr/bin/xargs" +#CMD_7Z="/usr/local/sbin/7z" +# +###### System definitions ##### +#SYS_EXTRACT_DIR="$(pwd)" +#SYS_CONFIG_DIR="/etc/config" +#SYS_INIT_DIR="/etc/init.d" +#SYS_STARTUP_DIR="/etc/rcS.d" +#SYS_SHUTDOWN_DIR="/etc/rcK.d" +#SYS_RSS_IMG_DIR="/home/httpd/RSS/images" +#SYS_QPKG_DATA_FILE_GZIP="./data.tar.gz" +#SYS_QPKG_DATA_FILE_BZIP2="./data.tar.bz2" +#SYS_QPKG_DATA_FILE_7ZIP="./data.tar.7z" +#SYS_QPKG_DATA_CONFIG_FILE="./conf.tar.gz" +#SYS_QPKG_DATA_MD5SUM_FILE="./md5sum" +#SYS_QPKG_DATA_PACKAGES_FILE="./Packages.gz" +#SYS_QPKG_CONFIG_FILE="$SYS_CONFIG_DIR/qpkg.conf" +#SYS_QPKG_CONF_FIELD_QPKGFILE="QPKG_File" +#SYS_QPKG_CONF_FIELD_NAME="Name" +#SYS_QPKG_CONF_FIELD_VERSION="Version" +#SYS_QPKG_CONF_FIELD_ENABLE="Enable" +#SYS_QPKG_CONF_FIELD_DATE="Date" +#SYS_QPKG_CONF_FIELD_SHELL="Shell" +#SYS_QPKG_CONF_FIELD_INSTALL_PATH="Install_Path" +#SYS_QPKG_CONF_FIELD_CONFIG_PATH="Config_Path" +#SYS_QPKG_CONF_FIELD_WEBUI="WebUI" +#SYS_QPKG_CONF_FIELD_WEBPORT="Web_Port" +#SYS_QPKG_CONF_FIELD_SERVICEPORT="Service_Port" +#SYS_QPKG_CONF_FIELD_SERVICE_PIDFILE="Pid_File" +#SYS_QPKG_CONF_FIELD_AUTHOR="Author" +#SYS_QPKG_CONF_FIELD_RC_NUMBER="RC_Number" +## The following variables are assigned values at run-time. +#SYS_HOSTNAME=$($CMD_HOSTNAME) +## Data file name (one of SYS_QPKG_DATA_FILE_GZIP, SYS_QPKG_DATA_FILE_BZIP2, +## or SYS_QPKG_DATA_FILE_7ZIP) +#SYS_QPKG_DATA_FILE= +## Base location. +#SYS_QPKG_BASE="" +## Base location of QPKG installed packages. +#SYS_QPKG_INSTALL_PATH="" +## Location of installed software. +#SYS_QPKG_DIR="" +## If the QPKG should be enabled or disabled after the installation/upgrade. +#SYS_QPKG_SERVICE_ENABLED="" +## Architecture of the device the QPKG is installed on. +#SYS_CPU_ARCH="" +## Name and location of system shares +#SYS_PUBLIC_SHARE="" +#SYS_PUBLIC_PATH="" +#SYS_DOWNLOAD_SHARE="" +#SYS_DOWNLOAD_PATH="" +#SYS_MULTIMEDIA_SHARE="" +#SYS_MULTIMEDIA_PATH="" +#SYS_RECORDINGS_SHARE="" +#SYS_RECORDINGS_PATH="" +#SYS_USB_SHARE="" +#SYS_USB_PATH="" +#SYS_WEB_SHARE="" +#SYS_WEB_PATH="" +## Path to ipkg or opkg package tool if installed. +#CMD_PKG_TOOL= +# + +###################################################################### +# All package specific functions shall call 'err_log MSG' if an error +# is detected that shall terminate the installation. +###################################################################### + +###################################################################### +# Define any package specific operations that shall be performed when +# the package is removed. +###################################################################### + +#PKG_PRE_REMOVE="{ +#}" + +PKG_MAIN_REMOVE="{ + rm -rf /usr/sbin/zerotier-cli + # all identity files are stored in the Install_Path and will be removed automatically +}" + +#PKG_POST_REMOVE="{ +#}" + +###################################################################### +# Define any package specific initialization that shall be performed +# before the package is installed. +###################################################################### + +pkg_init() +{ + modprobe tun +} + + +###################################################################### +# Define any package specific requirement checks that shall be +# performed before the package is installed. +###################################################################### + +#pkg_check_requirement() +#{ +#} + +###################################################################### +# Define any package specific operations that shall be performed when +# the package is installed. +###################################################################### + +#pkg_pre_install() +#{ +# log "pkg_pre_install" +#} + +#pkg_install() +#{ +# log "pkg_install" +#} + +pkg_post_install() +{ + log $SYS_QPKG_INSTALL_PATH + modprobe tun +} diff --git a/pkg/qnap/zerotier/qpkg.cfg b/pkg/qnap/zerotier/qpkg.cfg new file mode 100644 index 000000000..ed641da90 --- /dev/null +++ b/pkg/qnap/zerotier/qpkg.cfg @@ -0,0 +1,99 @@ +# Update package config +# Name of the packaged application. +QPKG_NAME="zerotier" +# Name of the display application. +QPKG_DISPLAY_NAME="ZeroTier" +# Version of the packaged application. +QPKG_VER="1.8.4" +# Author or maintainer of the package +QPKG_AUTHOR="ZeroTier, Inc." +# License for the packaged application +QPKG_LICENSE="BUSL-1.1" +# One-line description of the packaged application +QPKG_SUMMARY="Securely connect any device, anywhere." + +# Preferred number in start/stop sequence. +QPKG_RC_NUM="101" +# Init-script used to control the start and stop of the installed application. +QPKG_SERVICE_PROGRAM="zerotier.sh" + +# Specifies any packages required for the current package to operate. +QPKG_REQUIRE="QVPN Service" +# Specifies what packages cannot be installed if the current package +# is to operate properly. +#QPKG_CONFLICT="Python, OPT/sed" +# Name of configuration file (multiple definitions are allowed). +#QPKG_CONFIG="myApp.conf" +#QPKG_CONFIG="/etc/config/myApp.conf" +# Port number used by service program. +QPKG_SERVICE_PORT="9993" +# Location of file with running service's PID +#QPKG_SERVICE_PIDFILE="/var/lib/zerotier-one/zerotier-one.pid" +# Relative path to web interface +#QPKG_WEBUI="" +# Port number for the web interface. +#QPKG_WEB_PORT="" +# Port number for the SSL web interface. +#QPKG_WEB_SSL_PORT="" + +# Use QTS HTTP Proxy and set Proxy_Path in the qpkg.conf. +# When the QPKG has its own HTTP service port, and want clients to connect via QTS HTTP port (default 8080). +# Usually use this option when the QPKG need to connect via myQNAPcloud service. +#QPKG_USE_PROXY="1" +#QPKG_PROXY_PATH="/qpkg_name" + +#Desktop Application (since 4.1) +# Set value to 1 means to open the QPKG's Web UI inside QTS desktop instead of new window. +#QPKG_DESKTOP_APP="1" +# Desktop Application Window default inner width (since 4.1) (not over 1178) +#QPKG_DESKTOP_APP_WIN_WIDTH="" +# Desktop Application Window default inner width (since 4.1) (not over 600) +#QPKG_DESKTOP_APP_WIN_HEIGHT="" + +# Minimum QTS version requirement +QTS_MINI_VERSION="4.1.0" +# Maximum QTS version requirement +QTS_MAX_VERSION="5.0.0" + +# Select volume +# 1: support installation +# 2: support migration +# 3 (1+2): support both installation and migration +#QPKG_VOLUME_SELECT="0" + +# Set timeout for QPKG enable and QPKG disable (since 4.1.0) +# Format in seconds (enable, disable) +#QPKG_TIMEOUT="10,30" + +# Visible setting for the QPKG that has web UI, show this QPKG on the Main menu of +# 1(default): administrators, 2: all NAS users. +#QPKG_VISIBLE="2" + +# Location of the chroot environment (only TS-x09) +#QPKG_ROOTFS="" +# Init-script used to controls the start and stop of the +# installed application (only TS-x09) +#QPKG_SERVICE_PROGRAM_CHROOT="" + +# Location of icons for the packaged application. +QDK_DATA_DIR_ICONS="icons" +# Location of files specific to arm-x09 packages. +#QDK_DATA_DIR_X09="arm-x09" +# Location of files specific to arm-x19 packages. +#QDK_DATA_DIR_X19="arm-x19" +# Location of files specific to arm-x31 packages. +#QDK_DATA_DIR_X31="arm-x31" +# Location of files specific to arm-x41 packages. +#QDK_DATA_DIR_X41="arm_al" +# Location of files specific to x86 packages. +#QDK_DATA_DIR_X86="x86" +# Location of files specific to x86 (64-bit) packages. +#QDK_DATA_DIR_X86_64="x86_64" +# Location of files common to all architectures. +#QDK_DATA_DIR_SHARED="shared" +# Location of configuration files. +#QDK_DATA_DIR_CONFIG="config" +# Name of local data package. +#QDK_DATA_FILE="" +# Name of extra package (multiple definitions are allowed). +#QDK_EXTRA_FILE="" diff --git a/pkg/qnap/zerotier/shared/.gitkeep b/pkg/qnap/zerotier/shared/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/shared/.qpkg_icon.gif b/pkg/qnap/zerotier/shared/.qpkg_icon.gif new file mode 100644 index 000000000..900f2d4cd Binary files /dev/null and b/pkg/qnap/zerotier/shared/.qpkg_icon.gif differ diff --git a/pkg/qnap/zerotier/shared/.qpkg_icon_80.gif b/pkg/qnap/zerotier/shared/.qpkg_icon_80.gif new file mode 100644 index 000000000..900f2d4cd Binary files /dev/null and b/pkg/qnap/zerotier/shared/.qpkg_icon_80.gif differ diff --git a/pkg/qnap/zerotier/shared/.qpkg_icon_gray.gif b/pkg/qnap/zerotier/shared/.qpkg_icon_gray.gif new file mode 100644 index 000000000..db7c8fd1e Binary files /dev/null and b/pkg/qnap/zerotier/shared/.qpkg_icon_gray.gif differ diff --git a/pkg/qnap/zerotier/shared/zerotier.sh b/pkg/qnap/zerotier/shared/zerotier.sh new file mode 100755 index 000000000..a5c1aa55e --- /dev/null +++ b/pkg/qnap/zerotier/shared/zerotier.sh @@ -0,0 +1,34 @@ +#!/bin/sh +CONF=/etc/config/qpkg.conf +QPKG_NAME="zerotier" +QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}` +APACHE_ROOT=/share/`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info` +case "$1" in + start) + modprobe tun + ln -s $QPKG_ROOT/zerotier-one /usr/sbin/zerotier-cli + ln -s $QPKG_ROOT/zerotier-one /usr/bin/zerotier-cli + ln -s $QPKG_ROOT /var/lib/zerotier-one + ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF) + if [ "$ENABLED" != "TRUE" ]; then + echo "$QPKG_NAME is disabled." + exit 1 + fi + $QPKG_ROOT/zerotier-one $QPKG_ROOT -d + ;; + + stop) + killall zerotier-one + ;; + + restart) + $0 stop + $0 start + ;; + + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit 0 diff --git a/pkg/qnap/zerotier/x86/.gitkeep b/pkg/qnap/zerotier/x86/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/x86_64/.gitkeep b/pkg/qnap/zerotier/x86_64/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/qnap/zerotier/x86_ce53xx/.gitkeep b/pkg/qnap/zerotier/x86_ce53xx/.gitkeep new file mode 100644 index 000000000..e69de29bb