From acd1f24a3fa934da5ee05c84dfa3c0cdffb08a6e Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Mon, 25 Apr 2022 17:47:58 -0700 Subject: [PATCH] Add Western Digital apkg build scripts --- pkg/wd/Dockerfile | 9 +++ pkg/wd/build.sh | 13 ++++ pkg/wd/entrypoint.sh | 98 +++++++++++++++++++++++++++++++ pkg/wd/zerotier/apkg.rc | 21 +++++++ pkg/wd/zerotier/apkg.xml | 37 ++++++++++++ pkg/wd/zerotier/clean.sh | 7 +++ pkg/wd/zerotier/init.sh | 15 +++++ pkg/wd/zerotier/install.sh | 5 ++ pkg/wd/zerotier/preinst.sh | 1 + pkg/wd/zerotier/remove.sh | 10 ++++ pkg/wd/zerotier/start.sh | 3 + pkg/wd/zerotier/stop.sh | 3 + pkg/wd/zerotier/web/index.html | 58 ++++++++++++++++++ pkg/wd/zerotier/web/zerotier.png | Bin 0 -> 48062 bytes pkg/wd/zerotier/zerotier.png | Bin 0 -> 48062 bytes 15 files changed, 280 insertions(+) create mode 100644 pkg/wd/Dockerfile create mode 100755 pkg/wd/build.sh create mode 100755 pkg/wd/entrypoint.sh create mode 100644 pkg/wd/zerotier/apkg.rc create mode 100644 pkg/wd/zerotier/apkg.xml create mode 100755 pkg/wd/zerotier/clean.sh create mode 100755 pkg/wd/zerotier/init.sh create mode 100755 pkg/wd/zerotier/install.sh create mode 100755 pkg/wd/zerotier/preinst.sh create mode 100755 pkg/wd/zerotier/remove.sh create mode 100755 pkg/wd/zerotier/start.sh create mode 100755 pkg/wd/zerotier/stop.sh create mode 100644 pkg/wd/zerotier/web/index.html create mode 100644 pkg/wd/zerotier/web/zerotier.png create mode 100644 pkg/wd/zerotier/zerotier.png diff --git a/pkg/wd/Dockerfile b/pkg/wd/Dockerfile new file mode 100644 index 000000000..fd8b6774b --- /dev/null +++ b/pkg/wd/Dockerfile @@ -0,0 +1,9 @@ +# vim: ft=dockerfile + +FROM ubuntu:20.04 + +COPY mksapkg-OS5 /mksapkg-OS5 + +COPY entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] + diff --git a/pkg/wd/build.sh b/pkg/wd/build.sh new file mode 100755 index 000000000..36f81022f --- /dev/null +++ b/pkg/wd/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +build_packages() +{ + sudo docker run -v $(pwd):/zto ztwd +} + +build_dockerfile() +{ + sudo docker build -t ztwd . --load +} + +"$@" diff --git a/pkg/wd/entrypoint.sh b/pkg/wd/entrypoint.sh new file mode 100755 index 000000000..8e10c9ffe --- /dev/null +++ b/pkg/wd/entrypoint.sh @@ -0,0 +1,98 @@ +#!/bin/sh + +ZTO_VER=$(git describe --abbrev=0 --tags) +ZTO_COMMIT=$(git rev-parse HEAD) +ZTO_DESC=$(jq -r '.desc' ../config.json) + +generate_new_pkg_spec() +{ + cat > zerotier/apkg.rc <<- EOM +Package: zerotier +Section: Apps +Version: $ZTO_VER +Packager: ZeroTier, Inc. +Email: contact@zerotier.com +Homepage: http://www.zerotier.com +Description: $ZTO_DESC +AddonShowName: ZeroTier +Icon: zerotier.png +AddonIndexPage: index.html +AddonUsedPort: 9993 +InstDepend: +InstConflict: +StartDepend: +StartConflict: +CenterType:1 +UserControl:0 +MinFWVer: +MaxFWVer: +IndividualFlag: + +EOM +} + +pkg_x64() +{ + MKSAPKG=../mksapkg-OS5 + chmod a+x $MKSAPKG + BIN_SRC_DIR=.. + + pushd zerotier + + cp -f $BIN_SRC_DIR/zerotier-one bin/zerotier-one + $MKSAPKG -E -s -m WDMyCloudDL2100 + $MKSAPKG -E -s -m WDMyCloudDL4100 + $MKSAPKG -E -s -m MyCloudPR4100 + $MKSAPKG -E -s -m MyCloudPR2100 + + popd +} + +pkg_armhf() +{ + MKSAPKG=../mksapkg-OS5 + chmod a+x $MKSAPKG + BIN_SRC_DIR=.. + + pushd zerotier + cp -f $BIN_SRC_DIR/zerotier-one bin/zerotier-one + + # MyCloudEX2Ultra (Armada A385) + $MKSAPKG -E -s -m MyCloudEX2Ultra + # WDMyCloudEX4100 (Armada A385) + $MKSAPKG -E -s -m WDMyCloudEX4100 + # WDMyCloudEX2100 (Armada A385) + $MKSAPKG -E -s -m WDMyCloudEX2100 + # WDMyCloudEX4 (Armada A300) + $MKSAPKG -E -s -m WDMyCloudEX4 + # WDMyCloudEX2 (Armada A370) + $MKSAPKG -E -s -m WDMyCloudEX2 + # WDMyCloudMirrorGen2 (Armada A385) + $MKSAPKG -E -s -m WDMyCloudMirrorGen2 + # WDMyCloudMirror (Armada A370) + $MKSAPKG -E -s -m WDMyCloudMirror + # WDCloud (Armada A375 (2 cores, 1GHz each, armhf, ARMv7l, Cortex A9, vfp, neon)) + $MKSAPKG -E -s -m WDCloud + + popd +} + +normalize-filenames() +{ + for f in *'('*')'* + do + mv -i "$f" "${f/(*)/}" + done +} + +clean() +{ + rm -rf *.bin zerotier/apkg.sign +} + +generate_new_pkg_spec +pkg_x64 +pkg_armhf +normalize-filenames + +"$@" diff --git a/pkg/wd/zerotier/apkg.rc b/pkg/wd/zerotier/apkg.rc new file mode 100644 index 000000000..c01af66d1 --- /dev/null +++ b/pkg/wd/zerotier/apkg.rc @@ -0,0 +1,21 @@ +Package: zerotier +Section: Apps +Version: 1.8.8 +Packager: ZeroTier, Inc. +Email: contact@zerotier.com +Homepage: http://www.zerotier.com +Description: Securely connect any device, anywhere. +AddonShowName: ZeroTier +Icon: zerotier.png +AddonIndexPage: index.html +AddonUsedPort: 9993 +InstDepend: +InstConflict: +StartDepend: +StartConflict: +CenterType:1 +UserControl:0 +MinFWVer: +MaxFWVer: +IndividualFlag: + diff --git a/pkg/wd/zerotier/apkg.xml b/pkg/wd/zerotier/apkg.xml new file mode 100644 index 000000000..6ce296cc6 --- /dev/null +++ b/pkg/wd/zerotier/apkg.xml @@ -0,0 +1,37 @@ + + + + + 0 + 20 + 8 + 11 + 0 + 1 + 0 + zerotier + ZeroTier + 1 + 1.8.8 + 20220425 + + + + index.html + 9993 + 2 + ZeroTier, Inc. + contact@zerotier.com + http://www.zerotier.com + + + + + Securely connect any device, anywhere. + zerotier.png + + + + + + diff --git a/pkg/wd/zerotier/clean.sh b/pkg/wd/zerotier/clean.sh new file mode 100755 index 000000000..0b6a9b312 --- /dev/null +++ b/pkg/wd/zerotier/clean.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +rm -f /usr/bin/zerotier-one 2> /dev/null +rm -f /usr/sbin/zerotier-one 2> /dev/null + +rm -f /usr/bin/zerotier-cli 2> /dev/null +rm -f /usr/sbin/zerotier-cli 2> /dev/null diff --git a/pkg/wd/zerotier/init.sh b/pkg/wd/zerotier/init.sh new file mode 100755 index 000000000..e17d6c186 --- /dev/null +++ b/pkg/wd/zerotier/init.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +install_path=$1 + +ln -s $install_path/bin/zerotier-one /usr/sbin/zerotier-one +ln -s $install_path/bin/zerotier-one /usr/sbin/zerotier-cli +ln -s $install_path/bin/zerotier-one /usr/bin/zerotier-one +ln -s $install_path/bin/zerotier-one /usr/bin/zerotier-cli + +ln -s $install_path/ /var/lib/zerotier-one + +APKG_PATH=$(readlink -f $1) +WEBPATH="/var/www/apps/zerotier/" +mkdir -p $WEBPATH +ln -sf ${APKG_PATH}/web/* $WEBPATH \ No newline at end of file diff --git a/pkg/wd/zerotier/install.sh b/pkg/wd/zerotier/install.sh new file mode 100755 index 000000000..3ea51d268 --- /dev/null +++ b/pkg/wd/zerotier/install.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +path_src=$1 +path_des=$2 +mv $path_src $path_des diff --git a/pkg/wd/zerotier/preinst.sh b/pkg/wd/zerotier/preinst.sh new file mode 100755 index 000000000..1a2485251 --- /dev/null +++ b/pkg/wd/zerotier/preinst.sh @@ -0,0 +1 @@ +#!/bin/sh diff --git a/pkg/wd/zerotier/remove.sh b/pkg/wd/zerotier/remove.sh new file mode 100755 index 000000000..f1f97b41d --- /dev/null +++ b/pkg/wd/zerotier/remove.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +path=$1 +rm -f /usr/bin/zerotier-one 2> /dev/null +rm -f /usr/sbin/zerotier-one 2> /dev/null + +rm -f /usr/bin/zerotier-cli 2> /dev/null +rm -f /usr/sbin/zerotier-cli 2> /dev/null + +rm -rf $path diff --git a/pkg/wd/zerotier/start.sh b/pkg/wd/zerotier/start.sh new file mode 100755 index 000000000..71a62a839 --- /dev/null +++ b/pkg/wd/zerotier/start.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +/usr/bin/zerotier-one -d \ No newline at end of file diff --git a/pkg/wd/zerotier/stop.sh b/pkg/wd/zerotier/stop.sh new file mode 100755 index 000000000..a357a9ebf --- /dev/null +++ b/pkg/wd/zerotier/stop.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +killall zerotier-one diff --git a/pkg/wd/zerotier/web/index.html b/pkg/wd/zerotier/web/index.html new file mode 100644 index 000000000..d6b235c66 --- /dev/null +++ b/pkg/wd/zerotier/web/index.html @@ -0,0 +1,58 @@ +
+

ZeroTier

+
+ +

Welcome! ZeroTier is a peer-to-peer encrypted virtual networking solution that enables you to create Local Area Networks with static IP assignments for all of your devices. Access your NAS from anywhere in the world with a single IP and without the need of cloud services backhauling your traffic. To use the CLI:

+

Using the CLI via SSH:

+
    +
  1. Using your (sshd) account, enable SSH:

    +
      +
    • Settings -> Network -> SSH
    • +
    +
  2. +
  3. From a computer, open a terminal and SSH into your NAS device:

    +
      +
    • ssh sshd@your_nas_device_lan_ip
    • +
    +
  4. +
  5. Create account and network ID at my.zerotier.com

    +
      +
    • Note: This account is merely to administer your network. Your traffic is not handled by ZeroTier except in the case where a direct connection cannot be established. This is a courtesy service we offer for free that you can disable if you'd like. In any case, your traffic is fully encrypted end-to-end.
    • +
    +
  6. +
  7. Join your device to the network:

    +
      +
    • zerotier-cli join your_network_id
    • +
    +
  8. +
  9. Use my.zerotier.com to authorize your NAS device to join your network.

    +
  10. +
+

Help and support (in order of relevance)

+ + + + + diff --git a/pkg/wd/zerotier/web/zerotier.png b/pkg/wd/zerotier/web/zerotier.png new file mode 100644 index 0000000000000000000000000000000000000000..cd864eb99408e5f030f7c78a9357186b1d57aabd GIT binary patch literal 48062 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 Pk&bP@_oMW^blH-L-u& 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 Pk&bP