115 lines
3.9 KiB
Bash
115 lines
3.9 KiB
Bash
#!/bin/bash
|
|
|
|
caddy_add_packages () {
|
|
local ifile; local bin; local pkgs; local pkg; local ipkgs
|
|
clean () {
|
|
local tmp;local tmp2; local append
|
|
if [[ -f $1 ]]; then
|
|
tmp=$(sed '/^[[:space:]]*#[^!]/d; /#$/d' $1)
|
|
else
|
|
tmp=$1
|
|
fi
|
|
echo "$tmp $2" | xargs -n1 | sort -u | xargs | sed "s# # #g"
|
|
|
|
}
|
|
[[ -f $1 ]] && pkgs=" $(clean $1)"
|
|
[[ $BUILDING && -f $BUILD_DIR/caddy.pkgs ]] && pkgs=$(clean $BUILD_DIR/caddy.pkgs "$pkgs")
|
|
# echo pkgs after build
|
|
# echo $pkgs
|
|
[[ -f $CADDY_CONF/caddy.pkgs ]] && pkgs=$(clean $CADDY_CONF/caddy.pkgs "$pkgs")
|
|
# echo pkgs after conf
|
|
# echo $pkgs
|
|
[[ ! $pkgs ]] && echo "no packages requested, nothing to do" && return 0
|
|
echo "--- packages requested to install ----"
|
|
echo $pkgs
|
|
echo "-----------"
|
|
ifile=${CADDY_HOME}/bin/installed.pkgs
|
|
# uncomment for testing
|
|
# /bin/cp installed.pkgs $ifile
|
|
[[ -f $ifile ]] && ipkgs=$(clean $ifile)
|
|
echo "--- currently installed packages ----"
|
|
[[ $ipkgs ]] && echo $ipkgs || echo NONE
|
|
echo "-----------"
|
|
for pkg in $ipkgs; do
|
|
# echo installed packaged $pkg
|
|
pkgs=${pkgs/${pkg}/};
|
|
done
|
|
[[ ! $(clean $pkgs) ]] && echo "no new packages to add, nothing to do" && return 0
|
|
echo "--- packages that need adding ----"
|
|
echo $pkgs
|
|
echo "-----------"
|
|
bin=${2:-$CADDY_BIN}
|
|
bin=${bin:-$(command -v caddy)}
|
|
# [[ ! $bin ]] && echo no caddy binary found && return 1
|
|
[[ ! -x $bin ]] && echo ERROR: can not add packages, no caddy binary found at $bin && return 1
|
|
echo "------- ADDING CADDY PACKAGES ------------"
|
|
if ! $bin add-package $pkgs >/dev/null 2>&1; then
|
|
echo Error: Aborting further package installs and reverting to last good binary
|
|
return 2
|
|
else
|
|
echo packages
|
|
echo $pkgs
|
|
echo added successfully
|
|
echo $pkgs >> $CADDY_HOME/bin/installed.pkgs
|
|
echo "---"
|
|
echo currently installed packages
|
|
cat $CADDY_HOME/bin/installed.pkgs
|
|
echo installed modules from these packages
|
|
$bin list-modules | sed '1,/Standard modules/d;/Non-standard modules/,$d'
|
|
echo "-----------------------------------"
|
|
fi
|
|
}
|
|
|
|
caddy_checksum () {
|
|
echo "verifying checksum of $2"
|
|
source $LIB_DIR/github.lib
|
|
local download=$(github_asset caddyserver caddy $1 caddy_$(echo ${1})_checksums.txt)
|
|
echo checksum file to download: $download
|
|
wget -q -O /tmp/caddy_checksum $download
|
|
# cat /tmp/caddy_checksum
|
|
local sha=$(grep $2 /tmp/caddy_checksum | cut -d " " -f1)
|
|
# echo $sha
|
|
# sha512sum $3
|
|
# must have TWO spaces in echo command!
|
|
echo "$sha $3" | sha512sum -c >/dev/null 2>&1;
|
|
ret=$?
|
|
rm -r /tmp/caddy_checksum
|
|
return $ret
|
|
}
|
|
|
|
caddy_install_bin () {
|
|
echo in caddy binary install
|
|
local arch; local download; local caddytar
|
|
source $LIB_DIR/github.lib
|
|
source $LIB_DIR/getarch.sh
|
|
arch=$(get_arch)
|
|
[[ ! $arch ]] && echo unable to determine build architecture && return 1
|
|
ver=${CADDY_VER:-$(github_latest caddyserver caddy | sed 's/^v//')};
|
|
[[ ! $ver ]] && echo unable to determine caddy version && return 1
|
|
echo "---FETCHING AND INSTALLING CADDY BINARY v$ver for $arch ------------"
|
|
caddytar="caddy_${ver}_linux_${arch}.tar.gz"
|
|
download=$(github_asset caddyserver caddy $ver $caddytar)
|
|
echo "github_asset caddyserver caddy $ver $caddytar"
|
|
echo caddy version: $ver
|
|
echo caddy tarball: $caddytar
|
|
echo getting tarball from: $download
|
|
if wget -q -O /tmp/caddy.tar.gz $download; then
|
|
if caddy_checksum $ver $caddytar /tmp/caddy.tar.gz; then
|
|
echo download tarball verified
|
|
tar x -z -f /tmp/caddy.tar.gz -C $CADDY_HOME/bin caddy
|
|
rm -f /tmp/caddy.tar.gz
|
|
chmod +x $CADDY_BIN
|
|
setcap cap_net_bind_service=+ep $CADDY_BIN
|
|
chmod +x $CADDY_BIN
|
|
echo "caddy binary successfully installed version: $($CADDY_BIN version)"
|
|
else
|
|
echo file "$download failed checksum, install terminated"
|
|
return 2
|
|
fi
|
|
else
|
|
echo failed to fetch $download, install terminated
|
|
return 1
|
|
fi
|
|
echo "----------------------------------"
|
|
}
|