ztncui/build/build.sh
lideming 1295dd1d07
Some changes, including DNS support (#57)
* remove CDN

* Add a link to "members" in the network detail page

* Show object values as JSON

* remove TLS options

* Minor style improvements

* Show object values as JSON (member_detail)

* Add missing 'const'

* Navbar height fix

* Merge jQuery ready functions

* Change brand

* Merge network pages (name, members, detail) into single page and...

* Show ZT version on controller index page
* Show count of members
* Use <code> tag to display JSON data
* Fix error in some "error" pages caused by missing "navigate" when
  rendering nav items, use pug mixin to render nav items.
* Adjust column widths of network list

* Refactor: move duplicated nav code to `head_layout`

* Remove some debug logging code

* Get network members detail parallelly

* Add missing frontend script for members

* Revert "Change brand"

* Remove "members" and "name" pages which are merged into "detail"

* Add DNS support

* Trivial changes (table width etc.)

* Don't try to read TLS cert files when not using HTTPS

* Validate DNS IP

* Downgrade jquery to 3.4.1 to fix nav bar collapse

* Revert "Navbar height fix"

This reverts commit 8edaa9aa81, which
break the nav item height on mobile.

* Add missing margin for some buttons

* Display current DNS configuration above inputs

* Change network rename UI/UX

* Includes 'jquery.min.js' in pkg

* Improve JSON value rendering

* Get peer status of network members

* Display members with peer status

* Show controller itself as "CONTROLLER"

* Display peer address

* Improve login redirection

* pr57: Doc updates; version bump

* pr57: Year update

Co-authored-by: Key Networks <34238649+key-networks@users.noreply.github.com>
2021-03-01 15:10:10 +08:00

136 lines
3.3 KiB
Bash
Executable file

#!/bin/sh
set -e
THISDIR=`pwd`
if [ `basename $THISDIR` != 'build' ]; then
echo "Execute `basename $0` from the build directory"
exit 1
fi
BASE_DIR=`dirname $THISDIR`
SRC_DIR=$BASE_DIR/src
BUILD_DIR=$BASE_DIR/build
PKG_DIR=$BASE_DIR/Release
STAGING_DIR=$BASE_DIR/Staging
NAME='ztncui'
DESCRIPTION='ZeroTier network controller user interface'
VERSION=`grep version ../src/package.json | cut -f4 -d'"'`
VENDOR='Key Networks'
MAINTAINER='https://key-networks.com/contact'
URL='https://key-networks.com'
LICENSE='GPLv3'
BINDINGGYP='node_modules/argon2/binding.gyp'
NODE_VER='v14'
if [ ! -f /usr/lib/gcc/x86_64-redhat-linux/10/libstdc++.a ]; then
echo "You must install libstdc++-static"
exit 1
fi
DEPS="rpmbuild rpmsign npm node"
for DEP in ${DEPS}; do
if ! which ${DEP}; then
echo "Missing dependency ${DEP}"
exit 1
fi
done
rm -fr $STAGING_DIR && mkdir $STAGING_DIR
rm -fr $PKG_DIR && mkdir $PKG_DIR
pushd .
cd ../src
pushd .
NVER=`node --version`
if [[ ${NVER%%.*} != ${NODE_VER} ]]; then
echo "Missing dependency node ${NODE_VER}"
exit 1
fi
[[ -d ../src/node_modules ]] && rm -fr ../src/node_modules
npm install
patch --forward --dry-run --silent $BINDINGGYP $BUILD_DIR/binding.gyp.patch
if [ $? -eq 0 ]; then
echo "Applying patch to $BINDINGGYP..."
patch --forward $BINDINGGYP $BUILD_DIR/binding.gyp.patch
fi
if [ $? -ne 0 ]; then
echo "Failed to patch $BINDINGGYP"
exit 1
fi
cd node_modules/argon2/
node-gyp rebuild
if [ $? -ne 0 ]; then
echo "Failed to rebuild argon2"
exit 1
fi
popd
pkg -c ./package.json -t node14-linux-x64 bin/www -o $BUILD_DIR/ztncui
popd
install -m 755 -d $STAGING_DIR/opt
install -m 750 -d $STAGING_DIR/opt/key-networks
install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui
install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui/etc
install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui/etc/tls
install -m 750 -d $STAGING_DIR/opt/key-networks/ztncui/node_modules/argon2/build/Release
install -m 755 -d $STAGING_DIR/lib/systemd/system
install -m 600 $SRC_DIR/etc/default.passwd $STAGING_DIR/opt/key-networks/ztncui/etc/default.passwd
install -m 755 $SRC_DIR/node_modules/argon2/build/Release/argon2.node $STAGING_DIR/opt/key-networks/ztncui/node_modules/argon2/build/Release/
install -m 755 $BUILD_DIR/ztncui $STAGING_DIR/opt/key-networks/ztncui/
install -m 644 $BUILD_DIR/ztncui.service $STAGING_DIR/lib/systemd/system
rm -f $BUILD_DIR/ztncui
GENERAL_FPM_FLAGS="
--name $NAME
--version $VERSION
--url $URL
--license $LICENSE
--chdir $STAGING_DIR
--package $PKG_DIR
--directories /opt/key-networks
--depends zerotier-one
--depends openssl
--before-install before-install.sh
--after-install after-install.sh
--before-remove before-remove.sh
--after-remove after-remove.sh
--before-upgrade before-upgrade.sh
--after-upgrade after-upgrade.sh
"
fpm -s dir -t rpm \
$GENERAL_FPM_FLAGS \
--vendor "$VENDOR" \
--maintainer "$MAINTAINER" \
--description "$DESCRIPTION" \
--rpm-user ztncui \
--rpm-group ztncui \
.
fpm -s dir -t deb \
$GENERAL_FPM_FLAGS \
--vendor "$VENDOR" \
--maintainer "$MAINTAINER" \
--description "$DESCRIPTION" \
--deb-user ztncui \
--deb-group ztncui \
.
rpm --addsign ../Release/ztncui*rpm
rpm --checksig ../Release/ztncui*rpm
createrepo $PKG_DIR
gpg -u 'Key Networks' --detach-sign --armor $PKG_DIR/repodata/repomd.xml