cleanup + dependency checking...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2024-01-10 23:35:52 +03:00
parent a2bc38a766
commit 01366f02a6
4 changed files with 81 additions and 15 deletions

View File

@ -27,6 +27,28 @@ ECHO_PREFIX="### "
#----------------------------------------------------------------------
#
# check MSG COMMAND ..
#
check(){
local MSG=$1
shift
for cmd in "$@" ; do
which $cmd > /dev/null 2>&1 \
|| eval "echo \"$MSG\"" >&2
done
}
need(){
check 'ERROR: "$cmd": needed by this script but not in path.' "$@"
}
would-like(){
check 'WARNING: "$cmd": is not in path.' "$@"
}
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Fill section... # Fill section...
# #
@ -172,12 +194,17 @@ getLatestTemplate(){
# xread [-n] MSG VAR # xread [-n] MSG VAR
# #
# This saves all user input variables to the $XREAD_VARS array. # This saves all user input variables to the $XREAD_VARS array.
#
# XXX add support for keywords like SKIP and DISABLE
xread(){ xread(){
local non_empty= local non_empty=
if [[ $1 == '-n' ]] ; then if [[ $1 == '-n' ]] ; then
shift shift
local non_empty=1 local non_empty=1
fi fi
if [[ "${!2}" == "SKIP" ]] ; then
return
fi
if [ -z ${!2} ] ; then if [ -z ${!2} ] ; then
eval 'read -ep "'$1'" -i "$DFL_'$2'" '${2}'' eval 'read -ep "'$1'" -i "$DFL_'$2'" '${2}''
XREAD_VARS+=(${2}) XREAD_VARS+=(${2})
@ -189,6 +216,40 @@ xread(){
&& echo "$2=${!2}" && echo "$2=${!2}"
} }
#
# xreadYes MSG VAR
#
xreadYes(){
if [[ "${!2}" == "SKIP" ]] ; then
return
fi
if [ -z ${!2} ] ; then
if [ -z $(eval "echo \$DFL_${2}") ] ; then
local yes=y
local no=N
local dfl=
else
local yes=Y
local no=n
local dfl=1
fi
eval 'read -ep "'$1' ('$yes'/'$no') " '${2}''
XREAD_VARS+=(${2})
# normalize...
eval "${2}=${!2,,}"
if [[ "${!2}" == 'y' ]] ; then
eval "${2}=1"
elif [[ ${!2} == 'n' ]] ; then
eval "${2}="
# set default if empty...
else
eval "${2}=\${${2}:-$dfl}"
fi
fi
[ $SCRIPTING ] \
&& echo "$2=${!2}"
}
# #
# xreadpass VAR # xreadpass VAR
# #

View File

@ -18,13 +18,9 @@
# - the rest of the CT's are created in order of importance, strting # - the rest of the CT's are created in order of importance, strting
# from CT's needed for access and ending with services. # from CT's needed for access and ending with services.
CTs := \ CTs := \
gate \ gate ns \
ns \ ssh wireguard syncthing \
ssh \ nextcloud gitea
wireguard \
syncthing \
nextcloud \
gitea

View File

@ -72,12 +72,6 @@ buildAssets
echo "# Creating CT..." echo "# Creating CT..."
pctCreateTurnkey 'nextcloud' $ID "$OPTS_STAGE_1" "$PASS" pctCreateTurnkey 'nextcloud' $ID "$OPTS_STAGE_1" "$PASS"
#getLatestTemplate '.*-turnkey-nextcloud' TEMPLATE
#pctCreate $ID "$TEMPLATE" "$OPTS_STAGE_1" "$PASS"
#sleep ${TIMEOUT:=5}
#
#tklWaitForSetup $ID
echo "# Starting TKL UI..." echo "# Starting TKL UI..."
# XXX might be a good idea to reaaad stuff from config... # XXX might be a good idea to reaaad stuff from config...
@ lxc-attach $ID -- bash -c "\ @ lxc-attach $ID -- bash -c "\

View File

@ -13,11 +13,14 @@ source ../.pct-helpers
#---------------------------------------------------------------------- #----------------------------------------------------------------------
readConfig # check dependencies...
would-like dig qrencode
#---------------------------------------------------------------------- #----------------------------------------------------------------------
readConfig
DFL_ID=${DFL_ID:=103} DFL_ID=${DFL_ID:=103}
DFL_CTHOSTNAME=${DFL_CTHOSTNAME:=wireguard} DFL_CTHOSTNAME=${DFL_CTHOSTNAME:=wireguard}
@ -36,7 +39,11 @@ LAN_GATE=-
REBOOT=${REBOOT:=1} REBOOT=${REBOOT:=1}
# Wireguard config... # Wireguard config...
DFL_ENDPOINT=${DFL_ENDPOINT:=$(dig +short ${DOMAIN:-$DFL_DOMAIN} | tail -1)} DFL_ENDPOINT=${DFL_ENDPOINT:=$(\
which dig > /dev/null 2>&1 \
&& (dig +short ${DOMAIN:-$DFL_DOMAIN} \
| tail -1) \
|| echo "${DOMAIN:-$DFL_DOMAIN}")}
xread "Wireguard endpoint: " ENDPOINT xread "Wireguard endpoint: " ENDPOINT
DFL_ENDPOINT_PORT=${DFL_ENDPOINT_PORT:=51820} DFL_ENDPOINT_PORT=${DFL_ENDPOINT_PORT:=51820}
@ -45,6 +52,7 @@ xread "Wireguard endpoint port: " ENDPOINT_PORT
CLIENT_IPS=${CLIENT_IPS:-10.42.0.0/16} CLIENT_IPS=${CLIENT_IPS:-10.42.0.0/16}
ALLOWED_IPS=${ALLOWED_IPS:-0.0.0.0/0,${CLIENT_IPS}} ALLOWED_IPS=${ALLOWED_IPS:-0.0.0.0/0,${CLIENT_IPS}}
xreadYes "Show profile as QRcode when done?" QRCODE
readVars readVars
@ -99,6 +107,13 @@ echo "# Setup: wireguard default profile..."
echo "# client config:" echo "# client config:"
@ mkdir -p clients @ mkdir -p clients
@ pct pull $ID /etc/wireguard/clients/default.conf clients/default.conf @ pct pull $ID /etc/wireguard/clients/default.conf clients/default.conf
# show the profile as a qrcode...
if [ "$QRCODE" ] \
&& which qrencode > /dev/null 2>&1 ; then
echo "# default progile:"
cat clients/default.conf \
| qrencode -f UTF8
fi
#echo "# Setup: bridge device..." #echo "# Setup: bridge device..."
@ lxc-attach $ID wg-quick up wg0 @ lxc-attach $ID wg-quick up wg0