Used sequpgrade.sh to upgrade existing seqs
This commit is contained in:
@@ -6,7 +6,7 @@ toolUser=aria2
|
||||
|
||||
# Get script working directory
|
||||
# (when called from a different directory)
|
||||
WDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >>/dev/null 2>&1 && pwd)"
|
||||
WDIR="$(cd "$(dirname -- "${BASH_SOURCE[0]}")" >>/dev/null 2>&1 && pwd)"
|
||||
CONFIG=0
|
||||
SCRIPT_NAME=$(basename -- $0)
|
||||
SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
@@ -15,7 +15,7 @@ CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
aptOpt=
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
#echo "Called once before executing steps."
|
||||
## e.g. to source a config file manually:
|
||||
#. "$CONFIG_FILE"
|
||||
@@ -27,14 +27,14 @@ step_config() {
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return 1
|
||||
dry || return 1
|
||||
fi
|
||||
[ $QUIET -ne 0 ] && aptOpt="-y"
|
||||
quiet && aptOpt="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $toolDeps $aptOpt
|
||||
@@ -54,11 +54,11 @@ ariaConfLoc="/etc/aria2/aria2.conf"
|
||||
|
||||
|
||||
step_3_info() { echo "Create $toolName service"; }
|
||||
step_3_alias() { ALIAS="service"; }
|
||||
step_3_alias() { echo "service"; }
|
||||
step_3() {
|
||||
addConf -s "$ariaService" "$ariaServiceLoc"
|
||||
exe systemctl daemon-reload
|
||||
echoseq " [I] Serive not started or enabled"
|
||||
info "Service not started or enabled"
|
||||
}
|
||||
ariaServiceLoc="/etc/systemd/system/aria2.service"
|
||||
ariaService="[Unit]
|
||||
@@ -76,10 +76,11 @@ Restart=on-failure
|
||||
WantedBy=multi-user.target"
|
||||
|
||||
step_10_info() { echo "Add ufw rule for rpc port 6800"; }
|
||||
step_10_alias() { ALIAS="ufw"; }
|
||||
step_10_alias() { echo "ufw"; }
|
||||
step_10() {
|
||||
exe ufw allow in on eth0 to any port 6800 proto tcp comment "Aria2 rpc"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
||||
|
@@ -11,17 +11,17 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig -t "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
echoerr " [E] Check output for errors"
|
||||
error -e "Check output for errors"
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -31,12 +31,12 @@ step_1_info() {
|
||||
echoinfo "Essential excludes are provided in the configuration template."
|
||||
echoinfo "($CONFIG_FILE_TEMPLATE)"
|
||||
}
|
||||
step_1_alias() { ALIAS="buroot"; }
|
||||
step_1_alias() { echo "buroot"; }
|
||||
step_1() {
|
||||
local buTarget="/backup"
|
||||
if [ $CONFIG -eq 0 ] ; then
|
||||
echoerr " [E] Cannot backup root without properly configured excludes"
|
||||
echoerr " (expected config: $SEQ_CONFIG_HOME/$CONFIG_FILE_NAME)"
|
||||
error -e "Cannot backup root without properly configured excludes"
|
||||
error -e " (expected config: $SEQ_CONFIG_HOME/$CONFIG_FILE_NAME)"
|
||||
else
|
||||
buTarget="$BACKUP_TARGET"
|
||||
fi
|
||||
@@ -81,7 +81,7 @@ step_3_info() {
|
||||
echoinfo "e.g. to exclude $dir/a:"
|
||||
echoinfo " $0 budir $dir $tar /a"
|
||||
}
|
||||
step_3_alias() { ALIAS="budir"; }
|
||||
step_3_alias() { echo "budir"; }
|
||||
step_3() {
|
||||
local arg
|
||||
local configTarget=0
|
||||
@@ -105,7 +105,7 @@ step_3() {
|
||||
done
|
||||
|
||||
if [ -z "$1" ] ; then
|
||||
echoerr " [E] Nothing found to backup $1"
|
||||
error -e "Nothing found to backup $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -125,7 +125,7 @@ step_3() {
|
||||
buTarget=$(echo "$BACKUP_TARGET" | sed 's:/*$::')
|
||||
else
|
||||
if [ -z "$1" ] ; then
|
||||
echoerr " [E] No valid target found"
|
||||
error -e "No valid target found"
|
||||
exit 1
|
||||
fi
|
||||
buTarget=$(echo "$1" | sed 's:/*$::')
|
||||
@@ -133,7 +133,7 @@ step_3() {
|
||||
fi
|
||||
if [ ! -d "${buTarget}" ] && [ ! -L "${buTarget}" ]
|
||||
then
|
||||
echoerr " [E] Backup target (${buTarget}) doesn't exist"
|
||||
error -e "Backup target (${buTarget}) doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -141,9 +141,9 @@ step_3() {
|
||||
buExcludes+=("--exclude='$exclu'")
|
||||
done
|
||||
|
||||
echoseq " [I] Source : $buSource"
|
||||
echoseq " [I] Target : $buTarget"
|
||||
echoseq " [I] Excludes: $@"
|
||||
info "Source : $buSource"
|
||||
info "Target : $buTarget"
|
||||
info "Excludes: $@"
|
||||
|
||||
#fix doubling trailing slash on verbose output when backing up root
|
||||
local tmpSource="$buSource/"
|
||||
@@ -160,7 +160,7 @@ step_3() {
|
||||
fi
|
||||
|
||||
if [ ! -w "${buTarget}" ] ; then
|
||||
echoerr " [E] Backup target (${buTarget}) is not writable"
|
||||
error -e "Backup target (${buTarget}) is not writable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -174,7 +174,7 @@ step_3() {
|
||||
}
|
||||
|
||||
step_100_info() { echo "Install $toolBin"; }
|
||||
step_100_alias() { ALIAS="install"; }
|
||||
step_100_alias() { echo "install"; }
|
||||
step_100() {
|
||||
exe apt update
|
||||
exe apt install $toolBin $APTOPT
|
||||
@@ -188,6 +188,6 @@ checkInstalled() {
|
||||
toolBin="$(command -v $toolBin)"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
||||
|
@@ -15,7 +15,7 @@ WSUBDIR="${WDIR}/basics"
|
||||
#}
|
||||
|
||||
step_10_info() { echo "ssmtp installation"; }
|
||||
step_10_alias() { ALIAS="ssmtp"; }
|
||||
step_10_alias() { echo "ssmtp"; }
|
||||
step_10() {
|
||||
exe apt update && apt install "$SSMTP_DEPS"
|
||||
endReturn -o $? "ssmtp installation failed"
|
||||
@@ -23,19 +23,19 @@ step_10() {
|
||||
SSMTP_DEPS="ssmtp"
|
||||
|
||||
step_11_info() { echo "ssmtp setup"; }
|
||||
step_11_alias() { ALIAS="ssmtpSetup"; }
|
||||
step_11_alias() { echo "ssmtpSetup"; }
|
||||
step_11() {
|
||||
if [ ! -f "$CONFIG_FILE_SSMTP" ] ; then
|
||||
echoerr " [E] User config ($CONFIG_FILE_SSMTP) not found"
|
||||
echoerr " See $CONFIG_FILE_SSMTP_TEMPLATE"
|
||||
error -e "User config ($CONFIG_FILE_SSMTP) not found"
|
||||
error -e " See $CONFIG_FILE_SSMTP_TEMPLATE"
|
||||
return 1
|
||||
fi
|
||||
addConf -c -f "$CONFIG_FILE_SSMTP" "$CONFIG_LOC_SSMTP"
|
||||
endReturn -o $? "Could not write ssmtp configuration"
|
||||
|
||||
if [ ! -f "$CONFIG_FILE_SSMTP_AL" ] ; then
|
||||
echoerr " [W] User aliases ($CONFIG_FILE_SSMTP_AL) not found"
|
||||
echoerr " See $CONFIG_FILE_SSMTP_TEMPLATE or modify $CONFIG_LOC_SSMTP_AL directly"
|
||||
warning -e "User aliases ($CONFIG_FILE_SSMTP_AL) not found"
|
||||
error -e " See $CONFIG_FILE_SSMTP_TEMPLATE or modify $CONFIG_LOC_SSMTP_AL directly"
|
||||
return 1
|
||||
fi
|
||||
addConf -c -f "$CONFIG_FILE_SSMTP_AL" "$CONFIG_LOC_SSMTP_AL"
|
||||
@@ -52,17 +52,17 @@ step_13_info() {
|
||||
echo -n "Send test E-Mail to "
|
||||
if [ -z $2 ] ; then echo "<MAILADDRESS>"; else echo "$2"; fi
|
||||
}
|
||||
step_13_alias() { ALIAS="ssmtpTest"; }
|
||||
step_13_alias() { echo "ssmtpTest"; }
|
||||
step_13() {
|
||||
if [ ! -z "$2" ] || [ "$2" == "" ] ; then
|
||||
echoerr " [E] No mailaddress provided"
|
||||
error -e "No mailaddress provided"
|
||||
fi
|
||||
|
||||
exep "echo \"Subject: sendmail test\" | sendmail -v $2"
|
||||
}
|
||||
|
||||
step_15_info() { echo "ssmtp help"; }
|
||||
step_15_alias() { ALIAS="ssmtpHelp"; }
|
||||
step_15_alias() { echo "ssmtpHelp"; }
|
||||
step_15() {
|
||||
echo " Configuration files expected by this seq:"
|
||||
echo
|
||||
@@ -77,5 +77,5 @@ step_15() {
|
||||
echo " - $CONFIG_LOC_SSMTP_AL"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=9
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -15,25 +15,25 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with global config file:
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install dependencies"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt install $toolDeps $APTOPT
|
||||
}
|
||||
@@ -44,14 +44,14 @@ step_2() {
|
||||
exe adduser --disabled-password --disabled-login --home-dir "$CALWEB_USER_HOME" --gecos "" $CALWEB_USER
|
||||
exe usermod -aG users $CALWEB_USER
|
||||
else
|
||||
echoseq " [W] User $CALWEB_USER already exists"
|
||||
warning "User $CALWEB_USER already exists"
|
||||
fi
|
||||
if [ ! -e "$CALWEB_VENV_ROOT/bin" ]; then
|
||||
exe python3 -m venv "$CALWEB_VENV_ROOT"
|
||||
endReturn -o $? "Creating virtual environment failed"
|
||||
exe chown -R ${CALWEB_USER}: "$CALWEB_BASE"
|
||||
else
|
||||
echoseq " [W] Virtual env. $CALWEB_VENV_ROOT already exists"
|
||||
warning "Virtual env. $CALWEB_VENV_ROOT already exists"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -70,6 +70,8 @@ step_4() {
|
||||
toolFeatures[$i]="$toolPipName[${toolFeatures[$i]}]"
|
||||
done
|
||||
exe ${CALWEB_VENV_ROOT}/bin/pip install "${toolFeatures[@]}"
|
||||
# Needed for in-app update
|
||||
exe chown -R "${CALWEB_USER}": "${CALWEB_VENV_ROOT}/lib/python*/site-packages/calibreweb"
|
||||
}
|
||||
|
||||
step_5_info() { echo "Install systemd service"; }
|
||||
@@ -86,16 +88,16 @@ step_6() {
|
||||
}
|
||||
|
||||
step_15_info() { echo "Upgrade python pip"; }
|
||||
step_15_alias() { ALIAS="upgradepip"; }
|
||||
step_15_alias() { echo "upgradepip"; }
|
||||
step_15()
|
||||
{
|
||||
exe ${CALWEB_VENV_ROOT}/bin/pip install --upgrade pip
|
||||
}
|
||||
|
||||
step_100_info() { echo "Setup notes"; }
|
||||
step_100_alias() { ALIAS="notes"; }
|
||||
step_100_alias() { echo "notes"; }
|
||||
step_100() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_END
|
||||
# Default admin login:
|
||||
|
||||
@@ -127,5 +129,5 @@ proxy_set_header X-Script-Name /calibre; # IMPORTANT: path has NO trai
|
||||
NOTES_END
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -12,7 +12,7 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
local confReturn=$?
|
||||
if [ $confReturn -eq 0 ] ; then
|
||||
@@ -21,13 +21,13 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName for letsencrypt"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local osName=
|
||||
local distName=
|
||||
|
||||
if [ "$(which lsb_release)" == "" ] ; then
|
||||
echoerr " [W] Cannot detect OS. Assuming Ubuntu"
|
||||
warning -e "Cannot detect OS. Assuming Ubuntu"
|
||||
osName="Ubuntu"
|
||||
else
|
||||
osName=$(lsb_release -is)
|
||||
@@ -35,14 +35,14 @@ step_1() {
|
||||
fi
|
||||
|
||||
if [ "$osName" == "" ] ; then
|
||||
echoerr " [W] Error dedecting OS. Assuming Ubuntu"
|
||||
warning -e "Error dedecting OS. Assuming Ubuntu"
|
||||
osName="Ubuntu"
|
||||
fi
|
||||
|
||||
echo " [I] Detected OS: $osName $distName"
|
||||
|
||||
local aptOption=
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOption="-y"
|
||||
else
|
||||
aptOption=""
|
||||
@@ -69,7 +69,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_2_info() { echo "Create or update letsencrypt certificate"; }
|
||||
step_2_alias() { ALIAS="update"; }
|
||||
step_2_alias() { echo "update"; }
|
||||
step_2() {
|
||||
endCheckEmpty CERTBOT_DOMAINS "No domain list found. Check configuration"
|
||||
endCheckEmpty CERTBOT_WEBROOT "Invalid web root. Check configuration"
|
||||
@@ -79,5 +79,5 @@ step_2() {
|
||||
-m "$CERTBOT_MAIL" ${CERTBOT_DOMAINS[@]/#/-d }
|
||||
}
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -16,7 +16,7 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
#echo "Called once before executing steps."
|
||||
## e.g. to source a config file manually:
|
||||
#. "$CONFIG_FILE"
|
||||
@@ -28,14 +28,14 @@ step_config() {
|
||||
# CONFIG=1
|
||||
#else
|
||||
# # End if no configuration file exists
|
||||
# [ $DRY -eq 0 ] && return -1
|
||||
# dry || return -1
|
||||
#fi
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $toolDeps $APTOPT
|
||||
@@ -47,7 +47,7 @@ step_10_info() {
|
||||
echoinfo " -l : Always output update required and error information"
|
||||
echoinfo " (even with -qq)"
|
||||
}
|
||||
step_10_alias() { ALIAS="updateip"; }
|
||||
step_10_alias() { echo "updateip"; }
|
||||
step_10() {
|
||||
exitIfRunning
|
||||
shift
|
||||
@@ -56,7 +56,7 @@ step_10() {
|
||||
local ipRegex='^[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\/*[0-9]*$'
|
||||
local dnsUrl="46.182.19.48" #digitalcourage.de/support/zensurfreier-dns-server
|
||||
local dnsFallbackUrl="194.150.168.168" #dns.as250.net; Berlin/Frankfurt
|
||||
local lecho="echoseq"
|
||||
local lecho="info"
|
||||
if [ "$1" == "-l" ]; then
|
||||
lecho="echo"
|
||||
shift
|
||||
@@ -88,23 +88,23 @@ step_10() {
|
||||
$lecho "[$(date)] [I] Restarting $toolName"
|
||||
exe /bin/systemctl restart $toolServiceName
|
||||
else
|
||||
echoseq "[$(date)] [I] No update required (via $ipUpdater). Current ip: $confIp"
|
||||
info "[$(date)] [I] No update required (via $ipUpdater). Current ip: $confIp"
|
||||
fi
|
||||
}
|
||||
|
||||
step_12_info() { echo "Setup public ip update cron job every 5 minutes"; }
|
||||
step_12_alias() { ALIAS="cronip"; }
|
||||
step_12_alias() { echo "cronip"; }
|
||||
step_12() {
|
||||
echoseq " [I] Setup $ipCronLoc"
|
||||
info "Setup $ipCronLoc"
|
||||
addConf -s "$ipCron" "$ipCronLoc"
|
||||
}
|
||||
ipCronLoc="/etc/cron.d/update_public_ip"
|
||||
ipCron="*/5 * * * * root $WDIR/$SCRIPT_FILE -qq updateip"
|
||||
|
||||
step_100_info() { echo "Installation notes"; }
|
||||
step_100_alias() { ALIAS="notes"; }
|
||||
step_100_alias() { echo "notes"; }
|
||||
step_100() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<COTURN_EOF
|
||||
# Port forwarding
|
||||
|
||||
@@ -130,5 +130,5 @@ chmod g+r /etc/letsencrypt/archive/\$LOC_DOMAIN/privkey*
|
||||
COTURN_EOF
|
||||
}
|
||||
|
||||
VERSION_SEQREV=13
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -14,14 +14,14 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ step_1_info() {
|
||||
echo "Install $toolName"
|
||||
echoinfo "Default port: 5050"
|
||||
}
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $toolDeps $APTOPT
|
||||
@@ -56,10 +56,10 @@ step_4() {
|
||||
}
|
||||
|
||||
step_5_info() { echo "Add ufw rule for web interface"; }
|
||||
step_5_alias() { ALIAS="ufw"; }
|
||||
step_5_alias() { echo "ufw"; }
|
||||
step_5() {
|
||||
exe ufw allow in on eth0 to any port 5050 proto tcp comment "couchpotato"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -24,8 +24,8 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
seq_config() {
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -33,16 +33,16 @@ step_1_info() {
|
||||
echo "Download latest xz-compressed image [IMAGE FILE URL] [SD CARD DEVICE]"
|
||||
echoinfo "$toolDownSite"
|
||||
}
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
shift
|
||||
SDDEV="$2"
|
||||
if [ -z "$1" ] && [ $QUIET -eq 0 ] ; then
|
||||
if [ -z "$1" ] && interactive ; then
|
||||
read -p "Provide image download url from $toolDownSite: " toolDownUrl
|
||||
elif [ ! -z "$1" ] ; then
|
||||
toolDownUrl="$1"
|
||||
else
|
||||
echoerr " [E] No image file provided for download"
|
||||
error -e "No image file provided for download"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -65,7 +65,7 @@ step_1() {
|
||||
endReturn -o $? "Error downloading $downDownFile"
|
||||
fi
|
||||
|
||||
echoseq " [I] Checking SHA256 checksum"
|
||||
info "Checking SHA256 checksum"
|
||||
exe cd $(dirname "$toolDownFile")
|
||||
exe sha256sum -c "$downShaFile" >>/dev/null
|
||||
endReturn -o $? "SHA256 checksum error"
|
||||
@@ -81,14 +81,14 @@ step_2() {
|
||||
# check if device was confirmed
|
||||
endReturn -o $? "SD card device not found"
|
||||
|
||||
echoseq " [I] Writing $(basename "$toolDownFile")"
|
||||
info "Writing $(basename "$toolDownFile")"
|
||||
exep "xzcat \"$toolDownFile\" | dd of=$SDDEV bs=64k oflag=dsync status=progress"
|
||||
exe sync
|
||||
}
|
||||
|
||||
step_3_info() { echo "Prepare SD card for first run"; }
|
||||
step_3() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<PREPARE_EOF
|
||||
[I] Setup static IP
|
||||
[etc/network/interfaces.d/eth0]
|
||||
@@ -122,10 +122,10 @@ PREPARE_EOF
|
||||
}
|
||||
|
||||
step_10_info() { echo "Essential debian setup"; }
|
||||
step_10_alias() { ALIAS="setup"; }
|
||||
step_10_alias() { echo "setup"; }
|
||||
step_10() {
|
||||
if [ -z "$(ls /etc/default | grep raspi)" ] ; then
|
||||
echoerr " [E] Not on a Raspberry pi"
|
||||
error -e "Not on a Raspberry pi"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -144,7 +144,7 @@ step_12() {
|
||||
local localUs="en_US.UTF-8"
|
||||
local localUsDefault="$localUs UTF-8"
|
||||
if [ ! -f "$localesConfigLoc" ] ; then
|
||||
echoerr " [E] Install packages locales first"
|
||||
error -e "Install packages locales first"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -152,18 +152,18 @@ step_12() {
|
||||
endReturn -o $? "Changing locales failed"
|
||||
exe locale-gen
|
||||
exe update-locale LANG=$localUs
|
||||
echoseq " [I] Logout and login for changes to be active"
|
||||
info "Logout and login for changes to be active"
|
||||
}
|
||||
localesConfigLoc="/etc/locale.gen"
|
||||
|
||||
step_14_info() { echo "Change hostname [HOSTNAME]"; }
|
||||
step_14_alias() { ALIAS="hostname"; }
|
||||
step_14_alias() { echo "hostname"; }
|
||||
step_14() {
|
||||
shift
|
||||
local localHostname=$1
|
||||
endCheckEmpty localHostname "No hostname provided"
|
||||
if [ $(grep -r "$localHostname" "$hostsLoc">>/dev/null; echo $?) -eq 0 ] ; then
|
||||
echoseq " [I] Hostname $localHostname already defined"
|
||||
info "Hostname $localHostname already defined"
|
||||
return 0
|
||||
fi
|
||||
exe hostnamectl set-hostname "$localHostname"
|
||||
@@ -173,14 +173,14 @@ step_14() {
|
||||
hostsLoc="/etc/hosts"
|
||||
|
||||
step_16_info() { echo "Install cifs mounting requirements"; }
|
||||
step_16_alias() { ALIAS="cifs"; }
|
||||
step_16_alias() { echo "cifs"; }
|
||||
step_16() {
|
||||
exe apt install cifs-utils $APTOPT
|
||||
}
|
||||
|
||||
step_17_info() { echo "Cifs notes"; }
|
||||
step_17() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<CIFS_EOF
|
||||
# Example fstab entry
|
||||
[/etc/fstab]
|
||||
@@ -203,9 +203,9 @@ CIFS_EOF
|
||||
}
|
||||
|
||||
step_19_info() { echo "Setup notes"; }
|
||||
step_19_alias() { ALIAS="setupnotes"; }
|
||||
step_19_alias() { echo "setupnotes"; }
|
||||
step_19() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<SETUPNOTES_EOF
|
||||
# Secure root with a password
|
||||
passwd
|
||||
@@ -217,9 +217,9 @@ SETUPNOTES_EOF
|
||||
}
|
||||
|
||||
step_40_info() { echo "Boot from HD notes"; }
|
||||
step_40_alias() { ALIAS="hdboot"; }
|
||||
step_40_alias() { echo "hdboot"; }
|
||||
step_40() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<HDBOOT_EOF
|
||||
[I] Raspberry pi 4 boots from USB automatically if there is no SD available
|
||||
(needs boot loader version September 3rd)
|
||||
@@ -268,7 +268,7 @@ read_sd_dev() {
|
||||
fi
|
||||
|
||||
if [ ! -b "$SDDEV" ] ; then
|
||||
echoerr " [I] $SDDEV not a block device"
|
||||
info -e "$SDDEV not a block device"
|
||||
SDDEV=
|
||||
return 1
|
||||
fi
|
||||
@@ -296,5 +296,5 @@ read_sd_dev() {
|
||||
}
|
||||
SDBOOTPARTNO=1
|
||||
SDROOTPARTNO=2
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -10,7 +10,7 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
checkVpn
|
||||
|
||||
initSeqConfig -t "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
@@ -18,14 +18,14 @@ step_config() {
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install mono"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt install apt-transport-https dirmngr gnupg ca-certificates
|
||||
exe apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
|
||||
@@ -319,17 +319,17 @@ WantedBy=multi-user.target
|
||||
Alias=bazarr.service"
|
||||
|
||||
step_15_info() { echo "Create ufw rules for default ports"; }
|
||||
step_15_alias() { ALIAS="ufw"; }
|
||||
step_15_alias() { echo "ufw"; }
|
||||
step_15() {
|
||||
exe ufw allow in on eth0 to any port 6789 proto tcp comment "NZBGet"
|
||||
exe ufw allow in on eth0 to any port 9117 proto tcp comment "Jackett. Rules for Sonarr und Radarr in /etc/ufw/rules.before"
|
||||
|
||||
outColor red
|
||||
color red
|
||||
echo
|
||||
echo "[W] Add the following lines before \"# drop INVALID packets\""
|
||||
echo " [/etc/ufw/before.rules]"
|
||||
echo
|
||||
outColor green
|
||||
color green
|
||||
echo "# Allow all packages to sonarr and radarr"
|
||||
echo "# ufw thinks that nzb360 sends messages after socket is closed"
|
||||
echo "-A ufw-before-input -i eth0 -p tcp --dport 7878 -j ACCEPT"
|
||||
@@ -362,11 +362,11 @@ step_16() {
|
||||
}
|
||||
|
||||
step_17_info() { echo "Install danted socks proxy"; }
|
||||
step_17_alias() { ALIAS="danted"; }
|
||||
step_17_alias() { echo "danted"; }
|
||||
step_17() {
|
||||
systemctl status danted.service >>/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echoseq " [I] Danted already installed"
|
||||
info "Danted already installed"
|
||||
return 0
|
||||
fi
|
||||
exe apt update
|
||||
@@ -419,7 +419,7 @@ DANTED_EOF
|
||||
}
|
||||
|
||||
step_19_info() { echo "Disable apt-daily activities"; }
|
||||
step_19_alias() { ALIAS="aptdaily"; }
|
||||
step_19_alias() { echo "aptdaily"; }
|
||||
step_19() {
|
||||
exe /usr/bin/systemctl stop apt-daily-upgrade.timer
|
||||
exe /usr/bin/systemctl stop apt-daily.timer
|
||||
@@ -430,22 +430,18 @@ step_19() {
|
||||
}
|
||||
|
||||
step_21_info() {
|
||||
local pInstallDir="${DLD_DIR}/prowlarr"
|
||||
case $CONTEXT_HELP in
|
||||
0)
|
||||
if [ -e "$pInstallDir" ]; then
|
||||
echo -n "Upgrade "
|
||||
else
|
||||
echo -n "Install "
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo -n "Install/Update ";;
|
||||
esac
|
||||
local pInstallDir="${DLD_DIR:-}/prowlarr"
|
||||
if contextHelp ; then
|
||||
echo -n "Install/Update "
|
||||
elif [ -e "$pInstallDir" ]; then
|
||||
echo -n "Upgrade "
|
||||
else
|
||||
echo -n "Install "
|
||||
fi
|
||||
echo "prowlarr for arm64"
|
||||
echoinfo "Default port: 9696"
|
||||
}
|
||||
step_21_alias() { ALIAS="prowlarr"; }
|
||||
step_21_alias() { echo "prowlarr"; }
|
||||
step_21() {
|
||||
# local pDownDir="/tmp"
|
||||
local pInstallDir="${DLD_DIR}/prowlarr"
|
||||
@@ -455,10 +451,10 @@ step_21() {
|
||||
|
||||
if [ -e "$pInstallDir" ]; then
|
||||
prowlarrUpgrade=1
|
||||
echoseq " [I] Stopping prowlarr service"
|
||||
echoseq " Service will not be started automatically after update"
|
||||
info "Stopping prowlarr service"
|
||||
info " Service will not be started automatically after update"
|
||||
exe service prowlarr stop
|
||||
echoseq " [I] Moving existing $pInstallDir as backup"
|
||||
info "Moving existing $pInstallDir as backup"
|
||||
exe mv "$pInstallDir" "${pInstallDir}_bu_"`date +%Y%m%d-%H%M%S`
|
||||
fi
|
||||
|
||||
@@ -470,12 +466,12 @@ pTar="/tmp/Prowlarr.tgz"
|
||||
prowlarrUpgrade=0
|
||||
|
||||
step_22_info() { echo "Clean prowlarr download"; }
|
||||
step_22_alias() { ALIAS="prowlarrclean"; }
|
||||
step_22_alias() { echo "prowlarrclean"; }
|
||||
step_22() {
|
||||
exe rm -rf "$pTar"
|
||||
if [ $prowlarrUpgrade -ne 0 ]; then
|
||||
echoseq " [I] Stopping sequence here."
|
||||
echoseq " Following steps only exected for fresh installation."
|
||||
info "Stopping sequence here."
|
||||
info " Following steps only exected for fresh installation."
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
@@ -512,22 +508,18 @@ step_24() {
|
||||
}
|
||||
|
||||
step_30_info() {
|
||||
local pInstallDir="${DLD_DIR}/readarr"
|
||||
case $CONTEXT_HELP in
|
||||
0)
|
||||
if [ -e "$pInstallDir" ]; then
|
||||
echo -n "Upgrade "
|
||||
else
|
||||
echo -n "Install "
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo -n "Install/Update ";;
|
||||
esac
|
||||
local pInstallDir="${DLD_DIR:-}/readarr"
|
||||
if contextHelp ; then
|
||||
echo -n "Install/Update "
|
||||
elif [ -e "$pInstallDir" ]; then
|
||||
echo -n "Upgrade "
|
||||
else
|
||||
echo -n "Install "
|
||||
fi
|
||||
echo "readarr for arm64"
|
||||
echoinfo "Default port: 8787"
|
||||
}
|
||||
step_30_alias() { ALIAS="readarr"; }
|
||||
step_30_alias() { echo "readarr"; }
|
||||
step_30() {
|
||||
# local pDownDir="/tmp"
|
||||
local lInstallDir="${DLD_DIR}/readarr"
|
||||
@@ -537,10 +529,10 @@ step_30() {
|
||||
|
||||
if [ -e "$lInstallDir" ]; then
|
||||
readarrUpgrade=1
|
||||
echoseq " [I] Stopping readarr service"
|
||||
echoseq " Service will not be started automatically after update"
|
||||
info "Stopping readarr service"
|
||||
info " Service will not be started automatically after update"
|
||||
exe service readarr stop
|
||||
echoseq " [I] Moving existing $lInstallDir as backup"
|
||||
info "Moving existing $lInstallDir as backup"
|
||||
exe mv "$lInstallDir" "${lInstallDir}_bu_"`date +%Y%m%d-%H%M%S`
|
||||
fi
|
||||
|
||||
@@ -552,12 +544,12 @@ readarrTar="/tmp/Readarr.tar.gz"
|
||||
readarrUpgrade=0
|
||||
|
||||
step_31_info() { echo "Clean readarr download"; }
|
||||
step_31_alias() { ALIAS="readarrclean"; }
|
||||
step_31_alias() { echo "readarrclean"; }
|
||||
step_31() {
|
||||
exe rm -rf "$readarrTar"
|
||||
if [ $readarrUpgrade -ne 0 ]; then
|
||||
echoseq " [I] Stopping sequence here."
|
||||
echoseq " Following steps only exected for fresh installation."
|
||||
info "Stopping sequence here."
|
||||
info " Following steps only exected for fresh installation."
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
@@ -595,7 +587,7 @@ step_33() {
|
||||
}
|
||||
|
||||
step_50_info() { echo "Upgrade bazarr"; }
|
||||
step_50_alias() { ALIAS="upgradebazarr"; }
|
||||
step_50_alias() { echo "upgradebazarr"; }
|
||||
step_50() {
|
||||
local bazarrServiceLoc="/etc/systemd/system/bazarr.service"
|
||||
local lService=`eval "echo \"$bazarrService\""`
|
||||
@@ -610,8 +602,8 @@ step_50() {
|
||||
|
||||
checkVpn() {
|
||||
ip -br a | grep tun >>/dev/null 2>&1
|
||||
[ $? -eq 0 ] && echoseq " [W] A VPN connection is possibly active. Consider deactivating it befor any apt operation."
|
||||
[ $? -eq 0 ] && warning "A VPN connection is possibly active. Consider deactivating it befor any apt operation."
|
||||
}
|
||||
|
||||
VERSION_SEQREV=13
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -15,19 +15,19 @@ SCRIPT_NAME=$(basename -- $0)
|
||||
SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${SCRIPT_NAME}.cfg.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig -p "$SCRIPT_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
[ $DRY -eq 0 ] && return 1
|
||||
dry || return 1
|
||||
fi
|
||||
toolSyslogTag="${SCRIPT_NAME}-$SEQ_PROFILE_NAME"
|
||||
}
|
||||
|
||||
step_1_info() {
|
||||
echo -n "Backup "
|
||||
if [ $CONTEXT_HELP -ne 0 ] ; then
|
||||
if contextHelp ; then
|
||||
echo -n "selected profile"
|
||||
else
|
||||
echo -n "profile: $SEQ_PROFILE_NAME"
|
||||
@@ -36,7 +36,7 @@ step_1_info() {
|
||||
echoinfo " [OPTIONS]"
|
||||
echoinfo " --no-purge, -n : Do not purge old backups after backup"
|
||||
}
|
||||
step_1_alias() { ALIAS="backup"; }
|
||||
step_1_alias() { echo "backup"; }
|
||||
step_1() {
|
||||
shift
|
||||
|
||||
@@ -89,7 +89,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_3_info() { echo "Verify selected backup"; }
|
||||
step_3_alias() { ALIAS="verify"; }
|
||||
step_3_alias() { echo "verify"; }
|
||||
step_3() {
|
||||
shift
|
||||
|
||||
@@ -111,7 +111,7 @@ step_5_info() {
|
||||
echoinfo " (file or folder)"
|
||||
echoinfo " --time, -t <TIME> : Age of file to be restored"
|
||||
}
|
||||
step_5_alias() { ALIAS="restore"; }
|
||||
step_5_alias() { echo "restore"; }
|
||||
step_5() {
|
||||
shift
|
||||
|
||||
@@ -134,7 +134,7 @@ step_5() {
|
||||
done
|
||||
|
||||
if [ -z "$1" ] ; then
|
||||
echoerr " [E] No target provided"
|
||||
error -e "No target provided"
|
||||
return 1
|
||||
fi
|
||||
local ebuLocalTarget="$1"
|
||||
@@ -150,7 +150,7 @@ step_5() {
|
||||
}
|
||||
|
||||
step_7_info() { echo "Purge old backups [TARGET]"; }
|
||||
step_7_alias() { ALIAS="purge"; }
|
||||
step_7_alias() { echo "purge"; }
|
||||
step_7() {
|
||||
shift
|
||||
local ebuTarget="$EBU_TARGET"
|
||||
@@ -166,7 +166,7 @@ step_7() {
|
||||
elif [ ! -z "$EBU_MAX_FULLS_WITH_INCRS" ] ; then
|
||||
dupCommand+="remove-all-inc-of-but-n-full $EBU_MAX_FULLS_WITH_INCRS "
|
||||
else
|
||||
if [ $QUIET -eq 0 ] ; then echoerr " [W] No purge option configured" ; fi
|
||||
if interactive ; then warning -e "No purge option configured" ; fi
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -180,7 +180,7 @@ step_20_info() {
|
||||
shift
|
||||
local ebuTarget=$EBU_TARGET
|
||||
[ ! -z "$1" ] && ebuTarget="$1"
|
||||
if [ $CONTEXT_HELP -ne 0 ]; then
|
||||
if contextHelp; then
|
||||
echo "Status of (profile) [TARGET]"
|
||||
elif [ ! -z "$1" ]; then
|
||||
echo "Status of target: $ebuTarget"
|
||||
@@ -188,7 +188,7 @@ step_20_info() {
|
||||
echo "Status of profile \"$SEQ_PROFILE_NAME\" target: $ebuTarget"
|
||||
fi
|
||||
}
|
||||
step_20_alias() { ALIAS='status'; }
|
||||
step_20_alias() { echo 'status'; }
|
||||
step_20() {
|
||||
shift
|
||||
local ebuTarget="$EBU_TARGET"
|
||||
@@ -201,7 +201,7 @@ step_20() {
|
||||
}
|
||||
|
||||
step_22_info() { echo "List backup files [TARGET]"; }
|
||||
step_22_alias() { ALIAS='list'; }
|
||||
step_22_alias() { echo 'list'; }
|
||||
step_22() {
|
||||
shift
|
||||
local ebuTarget="$EBU_TARGET"
|
||||
@@ -216,7 +216,7 @@ step_22() {
|
||||
|
||||
step_70_info() {
|
||||
echo -n "Manage cron file for "
|
||||
if [ $CONTEXT_HELP -ne 0 ] ; then
|
||||
if contextHelp ; then
|
||||
echo -n "selected profile"
|
||||
else
|
||||
echo -n "profile: $SEQ_PROFILE_NAME"
|
||||
@@ -225,7 +225,7 @@ step_70_info() {
|
||||
echoinfo " [OPTIONS]"
|
||||
echoinfo " --remove, -r : remove cron file"
|
||||
}
|
||||
step_70_alias() { ALIAS='cron'; }
|
||||
step_70_alias() { echo 'cron'; }
|
||||
step_70() {
|
||||
shift
|
||||
local arg
|
||||
@@ -267,7 +267,7 @@ step_70() {
|
||||
}
|
||||
|
||||
step_72_info() { echo "Update all profile cron files"; }
|
||||
step_72_alias() { ALIAS="reload"; }
|
||||
step_72_alias() { echo "reload"; }
|
||||
step_72() {
|
||||
for seq in "$SEQ_CONFIG_HOME/"* ; do
|
||||
seq=$(basename ${seq})
|
||||
@@ -276,10 +276,10 @@ step_72() {
|
||||
}
|
||||
|
||||
step_100_info() { echo "Install $toolName $toolPpa"; }
|
||||
step_100_alias() { ALIAS="install"; }
|
||||
step_100_alias() { echo "install"; }
|
||||
step_100() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
|
||||
@@ -300,7 +300,7 @@ unsetPassphrase() {
|
||||
checkFileHead() {
|
||||
local readChar
|
||||
if [ ! -e "$1" ] ; then
|
||||
echoerr " [E] File $1 not found"
|
||||
error -e "File $1 not found"
|
||||
return 1
|
||||
fi
|
||||
read -r -n ${#2} readChar < "$1"
|
||||
@@ -326,5 +326,5 @@ checkInstalled() {
|
||||
fi
|
||||
}
|
||||
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -13,7 +13,7 @@ myUser=
|
||||
myPass=
|
||||
|
||||
step_1_info() { echo "Install $toolName via apt"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install -y $toolName
|
||||
@@ -72,13 +72,13 @@ Some essential settings needed:
|
||||
- Admin User"
|
||||
|
||||
step_4_info() { echo "Restart $toolName"; }
|
||||
step_4_alias() { ALIAS="restart"; }
|
||||
step_4_alias() { echo "restart"; }
|
||||
step_4() {
|
||||
exe service ejabberd restart
|
||||
}
|
||||
|
||||
step_5_info() { echo "Create new user"; }
|
||||
step_5_alias() { ALIAS="adduser"; }
|
||||
step_5_alias() { echo "adduser"; }
|
||||
step_5() {
|
||||
readDomain
|
||||
readUser
|
||||
@@ -87,14 +87,14 @@ step_5() {
|
||||
}
|
||||
|
||||
step_10_info() { echo "List existing user"; }
|
||||
step_10_alias() { ALIAS="listuser"; }
|
||||
step_10_alias() { echo "listuser"; }
|
||||
step_10() {
|
||||
readDomain
|
||||
exe ejabberdctl registered_users $myDomain
|
||||
}
|
||||
|
||||
step_12_info() { echo "Change password for existing user"; }
|
||||
step_12_alias() { ALIAS="passwd"; }
|
||||
step_12_alias() { echo "passwd"; }
|
||||
step_12() {
|
||||
readDomain
|
||||
readUser
|
||||
@@ -103,7 +103,7 @@ step_12() {
|
||||
}
|
||||
|
||||
step_14_info() { echo "Remove registered user"; }
|
||||
step_14_alias() { ALIAS="deluser"; }
|
||||
step_14_alias() { echo "deluser"; }
|
||||
step_14() {
|
||||
readDomain
|
||||
readUser
|
||||
@@ -143,5 +143,5 @@ readUserPass() {
|
||||
}
|
||||
|
||||
SEQDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )"
|
||||
VERSION_SEQREV=4
|
||||
readonly sqr_minVersion=16
|
||||
. sequencer.sh
|
||||
|
@@ -10,7 +10,7 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo " ${toolName} path: ${ELEMENT_WEB_LOC}"
|
||||
@@ -20,7 +20,7 @@ step_config() {
|
||||
}
|
||||
|
||||
step_18_info() { echo "Check for updates"; }
|
||||
step_18_alias() { ALIAS="updatecheck"; }
|
||||
step_18_alias() { echo "updatecheck"; }
|
||||
step_18() {
|
||||
shift
|
||||
local latestVersion=
|
||||
@@ -49,12 +49,12 @@ step_20_info() {
|
||||
echo
|
||||
fi
|
||||
}
|
||||
step_20_alias() { ALIAS="backup"; }
|
||||
step_20_alias() { echo "backup"; }
|
||||
step_20() {
|
||||
shift
|
||||
local tempRoot=
|
||||
if [ $CONFIG -eq 0 ] ; then
|
||||
echoerr " [E] No configuration file found"
|
||||
error -e "No configuration file found"
|
||||
return 1
|
||||
fi
|
||||
if [ ! -z $ELEMENT_WEB_BACKUP ] ; then
|
||||
@@ -76,7 +76,7 @@ step_22_info() {
|
||||
shift
|
||||
if [ -z $1 ] ; then
|
||||
echo -n "Get latest version from github"
|
||||
if [ $CONTEXT_HELP -eq 0 ] ; then
|
||||
if ! contextHelp ; then
|
||||
echo ": $(curl --silent "$latestUrl" | grep -Po '"tag_name": "\K.*?(?=")')"
|
||||
else
|
||||
echo " [CUSTOM VERSION]"
|
||||
@@ -85,7 +85,7 @@ step_22_info() {
|
||||
echo "Get version $1 from github"
|
||||
fi
|
||||
}
|
||||
step_22_alias() { ALIAS="upgrade"; }
|
||||
step_22_alias() { echo "upgrade"; }
|
||||
step_22() {
|
||||
shift # don't need step number
|
||||
local latestVersion=
|
||||
@@ -96,16 +96,16 @@ step_22() {
|
||||
fi
|
||||
|
||||
if [ -z $latestVersion ] ; then
|
||||
echoerr " [E] Cannot determine latest version from github repository"
|
||||
error -e "Cannot determine latest version from github repository"
|
||||
return 1
|
||||
elif [ $QUIET -eq 0 ] ; then
|
||||
elif interactive ; then
|
||||
echo
|
||||
exe read -p "Install $latestVersion to $ELEMENT_WEB_LOC [n]o/(y)es? " answer
|
||||
case $answer in
|
||||
[yY])
|
||||
;;
|
||||
*)
|
||||
echoerr " [I] Upgrade aborted"
|
||||
info -e "Upgrade aborted"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
@@ -155,10 +155,10 @@ tempDown="/tmp/${toolName}"
|
||||
tempLoc="$tempDown/${toolName}.tar.gz"
|
||||
|
||||
step_24_info() { echo "Clean temporary files: $tempDown"; }
|
||||
step_24_alias() { ALIAS="clean"; }
|
||||
step_24_alias() { echo "clean"; }
|
||||
step_24() {
|
||||
exe rm -rf "$tempDown"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -29,10 +29,10 @@ CONFIG_JAILS="$CONFIG_DIR/jail.d"
|
||||
#}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
|
||||
@@ -41,7 +41,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_2_info() { echo "Base jail configuration to use ufw"; }
|
||||
step_2_alias() { ALIAS="config"; }
|
||||
step_2_alias() { echo "config"; }
|
||||
step_2() {
|
||||
echo " [I] Create local configuration";
|
||||
addConf -f "$failConfLocal" "$toolConfLoc"
|
||||
@@ -54,7 +54,7 @@ banaction_multiport = ufw
|
||||
ignoreip = 127.0.0.1/8 ::1"
|
||||
|
||||
step_3_info() { echo "Add basic ip-blacklist"; }
|
||||
step_3_alias() { ALIAS="blacklist"; }
|
||||
step_3_alias() { echo "blacklist"; }
|
||||
step_3() {
|
||||
echo " [I] Adding filter"
|
||||
addConf -s -f "$ipBlackListFilter" "$toolFilter/$(basename $ipBlackListFilter)"
|
||||
@@ -67,7 +67,7 @@ ipBlackListJail="$CONFIG_JAILS/ip-blacklist.conf"
|
||||
ipBlackListFilter="$CONFIG_FILTER/ip-blacklist.conf"
|
||||
|
||||
step_4_info() { echo "$toolName notes"; }
|
||||
step_4_alias() { ALIAS="notes"; }
|
||||
step_4_alias() { echo "notes"; }
|
||||
step_4() {
|
||||
cat <<NOTES_EOF
|
||||
# Syslog not readable by librenms (https://github.com/fail2ban/fail2ban/issues/2734)
|
||||
@@ -78,12 +78,12 @@ NOTES_EOF
|
||||
}
|
||||
|
||||
step_20_info() { echo "Install mailserver jail"; }
|
||||
step_20_alias() { ALIAS="mail"; }
|
||||
step_20_alias() { echo "mail"; }
|
||||
step_20() {
|
||||
addConf -s -f "$mailJail" "$toolJails/$(basename $mailJail)"
|
||||
exe service $toolName restart
|
||||
}
|
||||
mailJail="$CONFIG_JAILS/mail.conf"
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
16
seqs/fhem.sh
16
seqs/fhem.sh
@@ -32,10 +32,10 @@ WSUBDIR="${WDIR}/${toolName}"
|
||||
#}
|
||||
|
||||
step_1_info() { echo "Install prerequisits for $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOpt=
|
||||
if [ $QUIET != 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
#exe apt update
|
||||
@@ -59,7 +59,7 @@ step_3() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "List $toolName prerequisits"; }
|
||||
step_20_alias() { ALIAS="listdeps"; }
|
||||
step_20_alias() { echo "listdeps"; }
|
||||
step_20() {
|
||||
echo " [I] $toolName prerequisits:"
|
||||
echo "$toolDeps $toolDeps2"
|
||||
@@ -79,7 +79,7 @@ step_32() {
|
||||
systemdConfigLoc="/etc/systemd/system"
|
||||
|
||||
step_34_info() { echo "Downgrade $toolName jabber dependencies (callbackIQ -> FHEM crash)"; }
|
||||
step_34_alias() { ALIAS="downgrade_xmpp"; }
|
||||
step_34_alias() { echo "downgrade_xmpp"; }
|
||||
step_34() {
|
||||
if [ ! -f $libnetDown ]; then
|
||||
exe wget "$libnetUrl" -O "$libnetDown"
|
||||
@@ -91,7 +91,7 @@ step_34() {
|
||||
fi
|
||||
|
||||
local aptOption=
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOption="-y"
|
||||
else
|
||||
aptOption=""
|
||||
@@ -136,7 +136,7 @@ Pin: version 1.23-2
|
||||
Pin-Priority: 1000"
|
||||
|
||||
step_37_info() { echo "Download latest speedtest python script"; }
|
||||
step_37_alias() { ALIAS="speedtestdownload"; }
|
||||
step_37_alias() { echo "speedtestdownload"; }
|
||||
step_37() {
|
||||
local lSpeedPath="/usr/local/bin/speedtest-cli"
|
||||
exe wget -O "$lSpeedPath" https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
|
||||
@@ -144,11 +144,11 @@ step_37() {
|
||||
}
|
||||
|
||||
step_40_info() { echo "Execute fhem [COMMAND]"; }
|
||||
step_40_alias() { ALIAS="exe"; }
|
||||
step_40_alias() { echo "exe"; }
|
||||
step_40() {
|
||||
shift
|
||||
exe perl "${toolHome}/fhem.pl" 7072 "$1"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -13,27 +13,27 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with profile config file support:
|
||||
initSeqConfig "$SCRIPT_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
echoseq " [I] Freeradius DB: $FRAD_DB_NAME"
|
||||
echoseq " Daloradius home: $DRAD_HOME"
|
||||
info "Freeradius DB: $FRAD_DB_NAME"
|
||||
info " Daloradius home: $DRAD_HOME"
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_50_info() { echo "Init freeradius and daloradius database"; }
|
||||
step_50_alias() { ALIAS="initdb"; }
|
||||
step_50_alias() { echo "initdb"; }
|
||||
step_50() {
|
||||
local drDbInit="$DRAD_HOME/contrib/db/mysql-daloradius.sql"
|
||||
local frDbSchema="$toolConfLoc/mods-config/sql/main/mysql/schema.sql"
|
||||
@@ -48,20 +48,20 @@ step_50() {
|
||||
|
||||
|
||||
step_52_info() { echo "Reset freeradius and daloradius database"; }
|
||||
step_52_alias() { ALIAS="resetdb"; }
|
||||
step_52_alias() { echo "resetdb"; }
|
||||
step_52() {
|
||||
local lAnswer
|
||||
|
||||
if [ $QUIET -eq 0 ]; then
|
||||
if interactive; then
|
||||
read -p "Do you really want to reset the database $FRAD_DB_NAME y/[n]? " lAnswer
|
||||
else
|
||||
lAnswer=y
|
||||
fi
|
||||
case "$lAnswer" in
|
||||
[yY])
|
||||
echoseq -n " [I] Reseting DB...";;
|
||||
info -n " [I] Reseting DB...";;
|
||||
*)
|
||||
echoerr " [I] Abort reset"
|
||||
info -e "Abort reset"
|
||||
return 1;;
|
||||
esac
|
||||
|
||||
@@ -69,5 +69,5 @@ step_52() {
|
||||
step initdb
|
||||
}
|
||||
|
||||
VERSION_SEQREV=13
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -10,7 +10,7 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
@@ -27,12 +27,12 @@ step_20_info() {
|
||||
echo
|
||||
fi
|
||||
}
|
||||
step_20_alias() { ALIAS="backup"; }
|
||||
step_20_alias() { echo "backup"; }
|
||||
step_20() {
|
||||
shift
|
||||
local tempRoot=
|
||||
if [ $CONFIG -eq 0 ] ; then
|
||||
echoerr " [E] No configuration file found"
|
||||
error -e "No configuration file found"
|
||||
return 1
|
||||
fi
|
||||
if [ ! -z $FR_BACKUP ] ; then
|
||||
@@ -63,7 +63,7 @@ step_22_info() {
|
||||
shift
|
||||
if [ -z $1 ] ; then
|
||||
echo -n "Get latest version from github"
|
||||
if [ $CONTEXT_HELP -eq 0 ] ; then
|
||||
if ! contextHelp ; then
|
||||
echo ": $(curl --silent "$latestUrl" | grep -Po '"tag_name": "\K.*?(?=")')"
|
||||
else
|
||||
echo " [CUSTOM VERSION]"
|
||||
@@ -72,7 +72,7 @@ step_22_info() {
|
||||
echo "Get version $1 from github"
|
||||
fi
|
||||
}
|
||||
step_22_alias() { ALIAS="upgrade"; }
|
||||
step_22_alias() { echo "upgrade"; }
|
||||
step_22() {
|
||||
shift # don't need step number
|
||||
local latestVersion=
|
||||
@@ -83,16 +83,16 @@ step_22() {
|
||||
fi
|
||||
|
||||
if [ -z $latestVersion ] ; then
|
||||
echoerr " [E] Cannot determine latest version from github repository"
|
||||
error -e "Cannot determine latest version from github repository"
|
||||
return 1
|
||||
elif [ $QUIET -eq 0 ] ; then
|
||||
elif interactive ; then
|
||||
echo
|
||||
exe read -p "Install $latestVersion to $FR_LOC [n]o/(y)es? " answer
|
||||
case $answer in
|
||||
[yY])
|
||||
;;
|
||||
*)
|
||||
echoerr " [I] Upgrade aborted"
|
||||
info -e "Upgrade aborted"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
@@ -100,7 +100,7 @@ step_22() {
|
||||
|
||||
local isInstalled=$(grep -E "Version $latestVersion" "${FR_LOC}/CHANGELOG" >>/dev/null && echo "1" || echo "0")
|
||||
if [ $isInstalled -eq 1 ] ; then
|
||||
echoerr " [E] Version $latestVersion is already installed"
|
||||
error -e "Version $latestVersion is already installed"
|
||||
return 2
|
||||
fi
|
||||
|
||||
@@ -163,10 +163,10 @@ tempLoc="$tempDown/fr.tar.gz"
|
||||
tempLocAddons="$tempDown/fradd.tar.gz"
|
||||
|
||||
step_24_info() { echo "Clean temporary files: $tempDown"; }
|
||||
step_24_alias() { ALIAS="clean"; }
|
||||
step_24_alias() { echo "clean"; }
|
||||
step_24() {
|
||||
exe rm -rf "$tempDown"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
10
seqs/git.sh
10
seqs/git.sh
@@ -12,25 +12,25 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with global config file:
|
||||
#initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
#if [ $? -eq 0 ] ; then
|
||||
# CONFIG=1
|
||||
#else
|
||||
# # End if no configuration file exists
|
||||
# [ $DRY -eq 0 ] && return -1
|
||||
# dry || return -1
|
||||
#fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Setup global git aliases"; }
|
||||
step_1_alias() { ALIAS="alias"; }
|
||||
step_1_alias() { echo "alias"; }
|
||||
step_1() {
|
||||
local brConf="branch \
|
||||
--format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - \
|
||||
@@ -48,5 +48,5 @@ step_1() {
|
||||
exe git config --global alias.ll 'log'
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -27,33 +27,33 @@ giteaDownFile="/tmp/giteaDown"
|
||||
giteaUser="git"
|
||||
versionNow=
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
if [ -z $giteaVersion ] ; then
|
||||
echoerr " [E] Couldn't determine latest version of $toolName"
|
||||
error -e "Couldn't determine latest version of $toolName"
|
||||
fi
|
||||
[ ! -z "$(command -v gitea)" ] && versionNow=$(gitea --version | sed 's/.*version \([0-9.]\+\).*/\1/')
|
||||
|
||||
checkArchitecture
|
||||
giteaIniLoc="${SEQ_GITEA_CONF_DIR}/app.ini"
|
||||
|
||||
echoseq " [I] Gitea work: $SEQ_GITEA_WORK_DIR"
|
||||
echoseq " Gitea config: $SEQ_GITEA_CONF_DIR"
|
||||
echoseq " Git user home: $SEQ_GITEA_HOME_DIR"
|
||||
echoseq
|
||||
outColor yellow
|
||||
echoseq " [W] Don't forget to adapt $SEQ_GITEA_CONF_DIR/app.ini"
|
||||
outColor
|
||||
info "Gitea work: $SEQ_GITEA_WORK_DIR"
|
||||
info " Gitea config: $SEQ_GITEA_CONF_DIR"
|
||||
info " Git user home: $SEQ_GITEA_HOME_DIR"
|
||||
info
|
||||
color yellow
|
||||
warning "Don't forget to adapt $SEQ_GITEA_CONF_DIR/app.ini"
|
||||
color
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
@@ -69,7 +69,7 @@ checkArchitecture() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Updating apt"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
}
|
||||
@@ -106,9 +106,9 @@ step_4() {
|
||||
"$SEQ_GITEA_HOME_DIR" "$SEQ_GITEA_WORK_DIR"/{custom,data,log}
|
||||
exe chown root:$SEQ_GITEA_USER "$SEQ_GITEA_CONF_DIR"
|
||||
exe chmod 770 $SEQ_GITEA_CONF_DIR
|
||||
echoseq "Creating $giteaLogDir"
|
||||
info "Creating $giteaLogDir"
|
||||
exe install -g $SEQ_GITEA_USER -m 770 -d "$giteaLogDir"
|
||||
echoseq -n "Copying gitea to global location and making it executable..."
|
||||
info -n "Copying gitea to global location and making it executable..."
|
||||
exe install -b -m 755 -T "$giteaDownFile" "$SEQ_GITEA_BIN_LOC" && echo "ok"
|
||||
endReturn "Failed to install $SEQ_GITEA_BIN_LOC"
|
||||
}
|
||||
@@ -121,17 +121,17 @@ step_5() {
|
||||
step_6_info() { echo "Starting $toolName service"; }
|
||||
step_6() {
|
||||
exe systemctl enable gitea --now
|
||||
echoseq "Before proceeding to installation you may need to create a database first with step 10"
|
||||
echoseq
|
||||
echoseq "Goto http://[yourip]:3000/install and complete installation"
|
||||
echoseq
|
||||
echoseq "Afterwards please execute step 20 to secure configuration"
|
||||
info "Before proceeding to installation you may need to create a database first with step 10"
|
||||
info
|
||||
info "Goto http://[yourip]:3000/install and complete installation"
|
||||
info
|
||||
info "Afterwards please execute step 20 to secure configuration"
|
||||
}
|
||||
|
||||
step_7_info() { echo "Show configuration notes"; }
|
||||
step_7_alias() { ALIAS="notes"; }
|
||||
step_7_alias() { echo "notes"; }
|
||||
step_7() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_END
|
||||
Final configuration notes for $giteaIniLoc:
|
||||
|
||||
@@ -173,7 +173,7 @@ step_12_info() {
|
||||
echo "Upgrade existing $toolName installation"
|
||||
fi
|
||||
}
|
||||
step_12_alias() { ALIAS="upgrade"; }
|
||||
step_12_alias() { echo "upgrade"; }
|
||||
step_12() {
|
||||
endCheckEmpty versionNow "Please install $toolName first"
|
||||
exe wget -O "$giteaDownFile" $giteaDownload
|
||||
@@ -184,8 +184,8 @@ step_12() {
|
||||
exe service gitea stop
|
||||
saveReturn $?
|
||||
endReturn
|
||||
echoseq -n "Backing up existing executable to ${toolBackup}..."
|
||||
exe cp -ar "$SEQ_GITEA_BIN_LOC" "$toolBackup" && echoseq "ok" || echoseq "nok"
|
||||
info -n "Backing up existing executable to ${toolBackup}..."
|
||||
exe cp -ar "$SEQ_GITEA_BIN_LOC" "$toolBackup" && info "ok" || info "nok"
|
||||
fi
|
||||
exe install --backup=none -m 755 -T "$giteaDownFile" "$SEQ_GITEA_BIN_LOC"
|
||||
endReturn -o $? "Upgrade failed"
|
||||
@@ -199,10 +199,10 @@ step_20() {
|
||||
}
|
||||
|
||||
step_22_info() { echo "Open $toolName config file"; }
|
||||
step_22_alias() { ALIAS="config"; }
|
||||
step_22_alias() { echo "config"; }
|
||||
step_22() {
|
||||
exe vi "$giteaIniLoc"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -25,19 +25,20 @@ readonly sq_configFileTemplate="$sq_dir/${sq_configFileName}.example"
|
||||
sq_aptOpt=
|
||||
sq_config=0
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig -p "$sq_scriptName" "$sq_configFileTemplate"
|
||||
if [ $? -eq 0 ] ; then
|
||||
sq_config=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
sc_grocyConf="${sc_grocyDir}/data/config.php"
|
||||
# config not sourced if only profiles should be listed
|
||||
sc_grocyConf="${sc_grocyDir:-}/data/config.php"
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && sq_aptOpt="-y"
|
||||
quiet && sq_aptOpt="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
@@ -52,7 +53,7 @@ step_1_info() {
|
||||
echo "Check $toolName status"
|
||||
echoinfo "Returns 1 if update is available"
|
||||
}
|
||||
step_1_alias() { ALIAS="status"; }
|
||||
step_1_alias() { echo "status"; }
|
||||
step_1() {
|
||||
getVersions
|
||||
if [ -e "${sc_grocyDir}" ] ; then
|
||||
@@ -77,7 +78,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Backup ${toolName}"; }
|
||||
step_20_alias() { ALIAS="backup"; }
|
||||
step_20_alias() { echo "backup"; }
|
||||
step_20() {
|
||||
local lBu="${sc_grocyDir}/${sc_grocyBackup}/${toolName}_$(date +%Y%m%d-%H%M%S).tgz"
|
||||
exe cd ${sc_grocyDir}/..
|
||||
@@ -89,16 +90,16 @@ step_20() {
|
||||
}
|
||||
|
||||
step_22_info() { echo "Install/upgrade ${toolName}"; }
|
||||
step_22_alias() { ALIAS="install"; }
|
||||
step_22_alias() { echo "install"; }
|
||||
step_22() {
|
||||
getVersions
|
||||
if [[ ${versionNow} == ${versionNew} ]] ; then
|
||||
endReturn -o 1 "Latest version ${versionNow} already installed"
|
||||
else
|
||||
if [ -n "${versionNow}" ] ; then
|
||||
echoseq " [I] Upgrading $toolName from ${versionNow} to ${versionNew}"
|
||||
info "Upgrading $toolName from ${versionNow} to ${versionNew}"
|
||||
else
|
||||
echoseq " [I] Installing $toolName version ${versionNew}"
|
||||
info "Installing $toolName version ${versionNew}"
|
||||
fi
|
||||
fi
|
||||
exe wget ${downUrl} -q -O "${grocyDownLoc}"
|
||||
@@ -113,16 +114,16 @@ step_22() {
|
||||
# Populate first config
|
||||
if [ ! -e "${sc_grocyConf}" ] ; then
|
||||
exe cp "${sc_grocyDir}/config-dist.php" "${sc_grocyConf}"
|
||||
echoseq " [I] Please adjust the config: ${sc_grocyConf}"
|
||||
info "Please adjust the config: ${sc_grocyConf}"
|
||||
else
|
||||
echoseq " [I] Please check ${sc_grocyDir}/config-dist.php"
|
||||
echoseq " for new configuration options"
|
||||
info "Please check ${sc_grocyDir}/config-dist.php"
|
||||
info " for new configuration options"
|
||||
fi
|
||||
}
|
||||
|
||||
step_30_alias() { ALIAS="notes"; }
|
||||
step_30_alias() { echo "notes"; }
|
||||
step_30() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_END
|
||||
# Behind reverse proxy as subfolder
|
||||
|
||||
@@ -162,5 +163,5 @@ server {
|
||||
NOTES_END
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -21,7 +21,7 @@ WDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )"
|
||||
#}
|
||||
|
||||
step_1_info() { echo "Installation of prerequisits"; }
|
||||
step_1_alias() { ALIAS="prepare"; }
|
||||
step_1_alias() { echo "prepare"; }
|
||||
step_1() {
|
||||
exe apt install gnupg2 git lsb-release ssl-cert ca-certificates apt-transport-https \
|
||||
tree locate software-properties-common dirmngr screen htop nano net-tools zip unzip \
|
||||
@@ -47,7 +47,7 @@ step_4() {
|
||||
}
|
||||
|
||||
step_5_info() { echo "Install nginx webserver"; }
|
||||
step_5_alias() { ALIAS="webserver"; }
|
||||
step_5_alias() { echo "webserver"; }
|
||||
step_5() {
|
||||
exe apt install nginx
|
||||
endReturn -o $? "Installation of webserver nginx failed"
|
||||
@@ -58,7 +58,7 @@ step_5() {
|
||||
}
|
||||
|
||||
step_6_info() { echo "Install ufw firewall"; }
|
||||
step_6_alias() { ALIAS="firewall"; }
|
||||
step_6_alias() { echo "firewall"; }
|
||||
step_6() {
|
||||
exe apt install ufw
|
||||
endReturn -o $? "Installation of firewall ufw failed"
|
||||
@@ -76,7 +76,7 @@ step_7() {
|
||||
}
|
||||
|
||||
step_8_info() { echo "Install $toolName"; }
|
||||
step_8_alias() { ALIAS="install"; }
|
||||
step_8_alias() { echo "install"; }
|
||||
step_8() {
|
||||
exe read -p "Make sure SSL certificates are available. Enter to continue"
|
||||
exe apt install jitsi-meet -y
|
||||
@@ -135,11 +135,11 @@ step_10() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Restart all $toolName components"; }
|
||||
step_20_alias() { ALIAS="restart"; }
|
||||
step_20_alias() { echo "restart"; }
|
||||
step_20() {
|
||||
echo " [I] Restart jitsi-meet components"
|
||||
exep "service prosody restart&& service jicofo restart && service jitsi-videobridge2 restart"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=10
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
24
seqs/kodi.sh
24
seqs/kodi.sh
@@ -10,7 +10,7 @@ toolServiceFile="/etc/systemd/system/kodi.service"
|
||||
toolProfileDir="/home/kodi/.kodi"
|
||||
|
||||
step_1_info() { echo "Install $toolName via apt"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update && apt install kodi
|
||||
}
|
||||
@@ -111,7 +111,7 @@ gpu_mem=320"
|
||||
|
||||
step_7_info() { echo "Reboot is needed for all changes to take effect"; }
|
||||
step_7() {
|
||||
if [ $QUIET -eq "1" ] ; then
|
||||
if quiet ; then
|
||||
answer=n
|
||||
else
|
||||
read -p "Reboot now? y/n(default)" answer
|
||||
@@ -128,7 +128,7 @@ step_7() {
|
||||
}
|
||||
|
||||
step_10_info() { echo "Send $toolName logs to syslog"; }
|
||||
step_10_alias() { ALIAS="syslog"; }
|
||||
step_10_alias() { echo "syslog"; }
|
||||
step_10() {
|
||||
addConf -s "$kodiSyslog" "$kodiSyslogLoc"
|
||||
exe chmod -f +x "$kodiSyslogLoc"
|
||||
@@ -147,9 +147,9 @@ step_11() {
|
||||
|
||||
addConf -s "$kodiSyslogService" "$kodiSyslogServiceLoc"
|
||||
|
||||
echoseq " [I] Consider limiting systemd journal size"
|
||||
echoseq " [/etc/systemd/journald.conf]"
|
||||
echoseq " SystemMaxUse=50M"
|
||||
info "Consider limiting systemd journal size"
|
||||
info " [/etc/systemd/journald.conf]"
|
||||
info " SystemMaxUse=50M"
|
||||
}
|
||||
kodiSyslogServiceLoc="/etc/systemd/system/kodisyslog.service"
|
||||
kodiSyslogService="[Unit]
|
||||
@@ -173,24 +173,24 @@ step_12() {
|
||||
}
|
||||
|
||||
step_40_info() { echo "Reset music database"; }
|
||||
step_40_alias() { ALIAS="resetmusic"; }
|
||||
step_40_alias() { echo "resetmusic"; }
|
||||
step_40() {
|
||||
local i
|
||||
local answer="y"
|
||||
local musicDb=( "$toolProfileDir/userdata/Database/MyMusic"*.db )
|
||||
echoseq " [W] Erasing:"
|
||||
warning "Erasing:"
|
||||
for i in ${musicDb[@]}; do
|
||||
echoseq $i
|
||||
info $i
|
||||
done
|
||||
[ $QUIET -eq 0 ] && read -p "Are you sure? (y)/[n] " answer
|
||||
interactive && read -p "Are you sure? (y)/[n] " answer
|
||||
case "$answer" in
|
||||
y|Y)
|
||||
exe rm ${musicDb[@]};;
|
||||
*)
|
||||
echoseq " [I] Abort reset"
|
||||
info "Abort reset"
|
||||
return 1;
|
||||
esac
|
||||
}
|
||||
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
42
seqs/ldap.sh
42
seqs/ldap.sh
@@ -12,7 +12,7 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
@@ -20,7 +20,7 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "$toolName installation"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $toolDeps
|
||||
@@ -137,9 +137,9 @@ step_20() {
|
||||
}
|
||||
|
||||
step_80_info() { echo -e "Some ldap command notes\n"; }
|
||||
step_80_alias() { ALIAS="notes"; }
|
||||
step_80_alias() { echo "notes"; }
|
||||
step_80() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_EOF
|
||||
# You can also check LDAP Base DN using the ldapsearch command as shown below
|
||||
ldapsearch -H ldapi:/// -x -LLL -s base -b "" namingContexts
|
||||
@@ -162,7 +162,7 @@ NOTES_EOF
|
||||
}
|
||||
|
||||
step_100_info() { echo "Add group <GROUP NAME> <USER ID>"; }
|
||||
step_100_alias() { ALIAS="addgroup"; }
|
||||
step_100_alias() { echo "addgroup"; }
|
||||
step_100() {
|
||||
shift
|
||||
local groupName=$1
|
||||
@@ -178,7 +178,7 @@ member: \${memberDn}
|
||||
"
|
||||
|
||||
step_102_info() { echo "Add user <USER ID> <USER NAME> <USER LASTNAME> <UIDNUMBER> <USER EMAIL> [USER GID]"; }
|
||||
step_102_alias() { ALIAS="adduser"; }
|
||||
step_102_alias() { echo "adduser"; }
|
||||
step_102() {
|
||||
shift
|
||||
userId="$1"
|
||||
@@ -215,7 +215,7 @@ loginShell: /bin/bash
|
||||
"
|
||||
|
||||
step_103_info() { echo "(re)Set passwort for <USER>"; }
|
||||
step_103_alias() { ALIAS="passwd"; }
|
||||
step_103_alias() { echo "passwd"; }
|
||||
step_103() {
|
||||
shift
|
||||
if [ ! -z $1 ] ; then
|
||||
@@ -224,14 +224,14 @@ step_103() {
|
||||
elif [ ! -z $userId ] ; then
|
||||
echo " [I] Password operation for $userId"
|
||||
else
|
||||
echoerr " [E] No user id provided"
|
||||
error -e "No user id provided"
|
||||
return 1
|
||||
fi
|
||||
exe ldappasswd -H ldapi:/// -x -D "cn=admin,$LDAP_DC" -W -S "uid=$userId,$LDAP_OU_USERS,$LDAP_DC"
|
||||
}
|
||||
|
||||
step_105_info() { echo "Adding <USER ID> to existing group <GROUP NAME>"; }
|
||||
step_105_alias() { ALIAS="user2group"; }
|
||||
step_105_alias() { echo "user2group"; }
|
||||
step_105() {
|
||||
shift
|
||||
if [ ! -z $1 ] ; then
|
||||
@@ -240,11 +240,11 @@ step_105() {
|
||||
elif [ ! -z $userId ] ; then
|
||||
echo " [I] User operation for $userId"
|
||||
else
|
||||
echoerr " [E] No user id provided"
|
||||
error -e "No user id provided"
|
||||
return 1
|
||||
fi
|
||||
if [ -z $2 ] ; then
|
||||
echoerr " [E] No group name provided"
|
||||
error -e "No group name provided"
|
||||
return 2
|
||||
fi
|
||||
local groupName="$2"
|
||||
@@ -266,7 +266,7 @@ member:
|
||||
"
|
||||
|
||||
step_107_info() { echo "Removing <USER ID> from existing group <GROUP NAME>"; }
|
||||
step_107_alias() { ALIAS="rmusergroup"; }
|
||||
step_107_alias() { echo "rmusergroup"; }
|
||||
step_107() {
|
||||
shift
|
||||
if [ ! -z $1 ] ; then
|
||||
@@ -275,11 +275,11 @@ step_107() {
|
||||
elif [ ! -z $userId ] ; then
|
||||
echo " [I] User operation for $userId"
|
||||
else
|
||||
echoerr " [E] No user id provided"
|
||||
error -e "No user id provided"
|
||||
return 1
|
||||
fi
|
||||
if [ -z $2 ] ; then
|
||||
echoerr " [E] No group name provided"
|
||||
error -e "No group name provided"
|
||||
return 2
|
||||
fi
|
||||
local groupName="$2"
|
||||
@@ -300,11 +300,11 @@ member: uid=\$userId,\$LDAP_OU_USERS,\$LDAP_DC
|
||||
"
|
||||
|
||||
step_110_info() { echo "Remove group <GROUP NAME>"; }
|
||||
step_110_alias() { ALIAS="rmgroup"; }
|
||||
step_110_alias() { echo "rmgroup"; }
|
||||
step_110() {
|
||||
shift
|
||||
if [ -z $1 ] ; then
|
||||
echoerr " [E] No group name provided"
|
||||
error -e "No group name provided"
|
||||
return 1
|
||||
fi
|
||||
local groupName=$1
|
||||
@@ -315,11 +315,11 @@ changetype: delete
|
||||
"
|
||||
|
||||
step_112_info() { echo "Remove user <USER ID>"; }
|
||||
step_112_alias() { ALIAS="rmuser"; }
|
||||
step_112_alias() { echo "rmuser"; }
|
||||
step_112() {
|
||||
shift
|
||||
if [ -z $1 ] ; then
|
||||
echoerr " [E] No user id provided"
|
||||
error -e "No user id provided"
|
||||
return 1
|
||||
fi
|
||||
local userName=$1
|
||||
@@ -330,7 +330,7 @@ changetype: delete
|
||||
"
|
||||
|
||||
step_200_info() { echo "List available groups <ADDITONAL ATTRIBUTES...>"; }
|
||||
step_200_alias() { ALIAS="listgroups"; }
|
||||
step_200_alias() { echo "listgroups"; }
|
||||
step_200() {
|
||||
shift
|
||||
echo " [I] Available groups:"
|
||||
@@ -338,7 +338,7 @@ step_200() {
|
||||
}
|
||||
|
||||
step_202_info() { echo "List available users <ADDITONAL ATTRIBUTES...>"; }
|
||||
step_202_alias() { ALIAS="listusers"; }
|
||||
step_202_alias() { echo "listusers"; }
|
||||
step_202() {
|
||||
shift
|
||||
echo " [I] Available user:"
|
||||
@@ -364,5 +364,5 @@ variable2LdifEcho() {
|
||||
echo "$tempLdif"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=10
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -23,19 +23,19 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
echoseq " Install: $LNMS_DIR"
|
||||
echoseq " Backup: $LNMS_BU_DIR"
|
||||
info " Install: $LNMS_DIR"
|
||||
info " Backup: $LNMS_BU_DIR"
|
||||
else
|
||||
[ $DRY -eq 0 ] && return 1
|
||||
dry || return 1
|
||||
fi
|
||||
}
|
||||
|
||||
step_1_info() { echo "Updating apt"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
}
|
||||
@@ -94,7 +94,7 @@ step_10() {
|
||||
|
||||
step_11_info() { echo "MariaDB configuration"; }
|
||||
step_11() {
|
||||
outColor green
|
||||
color green
|
||||
cat << SQLCONF_END
|
||||
|
||||
Edit or create /etc/mysql/mariadb.conf.d/90-myconfig.cnf and add:
|
||||
@@ -112,7 +112,7 @@ SQLCONF_END
|
||||
|
||||
step_12_info() { echo "PHP fpm/cli timezone configuration"; }
|
||||
step_12() {
|
||||
outColor green
|
||||
color green
|
||||
cat << PHPCONF_END
|
||||
|
||||
Ensure date.timezone is set in php.ini to your preferred time zone. See http://php.net/manual/en/timezones.php for a list of supported timezones. Valid examples are: "America/New_York", "Europe/Berlin", "Etc/UTC".
|
||||
@@ -131,7 +131,7 @@ PHPCONF_END
|
||||
|
||||
step_13_info() { echo "PHP fpm configuration"; }
|
||||
step_13() {
|
||||
outColor green
|
||||
color green
|
||||
cat << FPMCONF_END
|
||||
|
||||
cp /etc/php/7.3/fpm/pool.d/www.conf /etc/php/7.3/fpm/pool.d/librenms.conf
|
||||
@@ -154,7 +154,7 @@ FPMCONF_END
|
||||
|
||||
step_14_info() { echo "Nginx configuration"; }
|
||||
step_14() {
|
||||
outColor green
|
||||
color green
|
||||
cat << NGINXCONF_END
|
||||
|
||||
server {
|
||||
@@ -182,15 +182,15 @@ NGINXCONF_END
|
||||
}
|
||||
|
||||
step_20_info() { echo "Create $toolName cron job"; }
|
||||
step_20_alias() { ALIAS="cron"; }
|
||||
step_20_alias() { echo "cron"; }
|
||||
step_20() {
|
||||
echoseq -n " [I] Creating $lnmsCronLoc ... "
|
||||
exe cp "${LNMS_DIR}/librenms.nonroot.cron" "$lnmsCronLoc" && echoseq "Ok" || echoseq "Nok"
|
||||
info -n " [I] Creating $lnmsCronLoc ... "
|
||||
exe cp "${LNMS_DIR}/librenms.nonroot.cron" "$lnmsCronLoc" && info "Ok" || info "Nok"
|
||||
}
|
||||
lnmsCronLoc="/etc/cron.d/librenms"
|
||||
|
||||
step_22_info() { echo "Enable lnms command completion"; }
|
||||
step_22_alias() { ALIAS="cmdcompletion"; }
|
||||
step_22_alias() { echo "cmdcompletion"; }
|
||||
step_22() {
|
||||
exep 'echo -e "#!/bin/bash\nsudo -u '$toolUser' \"'$LNMS_DIR'/lnms\" \"\$@\"" > '"$lnmsLocalBin"
|
||||
exe chmod 744 "$lnmsLocalBin"
|
||||
@@ -199,44 +199,44 @@ step_22() {
|
||||
lnmsLocalBin="/usr/local/bin/lnms"
|
||||
|
||||
step_24_info() { echo "Copy logrotate config"; }
|
||||
step_24_alias() { ALIAS="logrotate"; }
|
||||
step_24_alias() { echo "logrotate"; }
|
||||
step_24() {
|
||||
echoseq -n " [I] Creating $lnmsLogrotLoc ... "
|
||||
exe cp "${LNMS_DIR}/misc/librenms.logrotate" "$lnmsLogrotLoc" && echoseq "Ok" || echoseq "Nok"
|
||||
info -n " [I] Creating $lnmsLogrotLoc ... "
|
||||
exe cp "${LNMS_DIR}/misc/librenms.logrotate" "$lnmsLogrotLoc" && info "Ok" || info "Nok"
|
||||
}
|
||||
lnmsLogrotLoc="/etc/logrotate.d/librenms"
|
||||
|
||||
step_26_info() { echo "Install nagios plugin to enable services"; }
|
||||
step_26_alias() { ALIAS="services"; }
|
||||
step_26_alias() { echo "services"; }
|
||||
step_26() {
|
||||
exe apt install monitoring-plugins
|
||||
echoseq
|
||||
echoseq " [$LNMS_DIR/config.php]"
|
||||
echoseq "\$config['show_services'] = 1;"
|
||||
echoseq
|
||||
echoseq " [/etc/cron.d/librenms]"
|
||||
echoseq " */5 * * * * librenms /opt/librenms/services-wrapper.py 1"
|
||||
info
|
||||
info " [$LNMS_DIR/config.php]"
|
||||
info "\$config['show_services'] = 1;"
|
||||
info
|
||||
info " [/etc/cron.d/librenms]"
|
||||
info " */5 * * * * librenms /opt/librenms/services-wrapper.py 1"
|
||||
}
|
||||
|
||||
step_30_info() { echo "Backup ${toolName} web direcotry"; }
|
||||
step_30_alias() { ALIAS="backup"; }
|
||||
step_30_alias() { echo "backup"; }
|
||||
step_30() {
|
||||
echoseq " [I] Backup install directory to ${LNMS_BU_DIR}"
|
||||
info "Backup install directory to ${LNMS_BU_DIR}"
|
||||
exe mkdir -p "$LNMS_BU_DIR"
|
||||
exep "cd \"${LNMS_DIR}\"/.. && tar czf \"${LNMS_BU_DIR}/\`date +%Y%m%d\`_${toolName}_web.tar.gz\" \"$(basename "$LNMS_DIR")\""
|
||||
}
|
||||
|
||||
step_31_info() { echo "Backup ${toolName} database [daily|monthly(default)]"; }
|
||||
step_31_alias() { ALIAS="backupdb"; }
|
||||
step_31_alias() { echo "backupdb"; }
|
||||
step_31() {
|
||||
case "$2" in
|
||||
daily|Daily|DAILY)
|
||||
echoseq " [I] Daily backup..."
|
||||
info "Daily backup..."
|
||||
exep "mysqldump --single-transaction -u root ${LNMS_DB_NAME} | bzip2 -c > \"${LNMS_BU_DIR}/${toolName}_daily.sql.bz2\""
|
||||
;;
|
||||
*)
|
||||
exe mkdir -p "$LNMS_BU_DIR/monthly"
|
||||
echoseq " [I] Monthly backup..."
|
||||
info "Monthly backup..."
|
||||
exep "mysqldump --single-transaction -u root ${LNMS_DB_NAME} | bzip2 -c > \"${LNMS_BU_DIR}/monthly/\`date +%Y%m%d\`_${toolName}.sql.bz2\""
|
||||
;;
|
||||
esac
|
||||
@@ -258,7 +258,7 @@ STABLE_EOF
|
||||
}
|
||||
|
||||
step_42_info() { echo "Fix librenms permission"; }
|
||||
step_42_alias() { ALIAS="fix"; }
|
||||
step_42_alias() { echo "fix"; }
|
||||
step_42() {
|
||||
exe chown -R ${toolUser}: "$LNMS_DIR"
|
||||
exe chmod 771 "${LNMS_DIR}"
|
||||
@@ -275,5 +275,5 @@ fetchPhpVersion() {
|
||||
}
|
||||
|
||||
# Sequence Revision
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -24,23 +24,23 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
if [ $(id -u) -ne 0 ] ; then
|
||||
endReturn -o 1 "No root"
|
||||
fi
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
echoseq " Domain: $MAS_DOMAIN"
|
||||
info " Domain: $MAS_DOMAIN"
|
||||
elif [ $? -eq 1 ] ; then
|
||||
# Config $CONFIG_FILE_NAME created. Needs modification first
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Update apt repositories"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
}
|
||||
@@ -48,7 +48,7 @@ step_1() {
|
||||
step_2_info() { echo "Install $mtaName"; }
|
||||
step_2() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
else
|
||||
read -p "In the following dialog chose \"Internet site\" and enter $MAS_DOMAIN as your domain. Enter to continue..."
|
||||
@@ -74,11 +74,11 @@ step_4() {
|
||||
|
||||
step_5_info() { echo "$mtaName enable submission service"; }
|
||||
step_5() {
|
||||
echoseq -e " [I] Copy following lines...\n"
|
||||
info -e " [I] Copy following lines...\n"
|
||||
exe cat "$mtaConfSubmission"
|
||||
exe read -rep $'\nPress Enter to open the '$mtaConfLoc'/master.cf'
|
||||
exe vi $mtaConfLoc/master.cf
|
||||
exe echoseq
|
||||
exe info
|
||||
exe cat "$mtaConfSmtps"
|
||||
exe read -rep $'\nPress Enter to open the '$mtaConfLoc'/master.cf'
|
||||
exe vi $mtaConfLoc/master.cf
|
||||
@@ -97,7 +97,7 @@ step_6() {
|
||||
exe postconf "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1"
|
||||
exe postconf "smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1"
|
||||
|
||||
echoseq " [I] Restarting $mtaName"
|
||||
info "Restarting $mtaName"
|
||||
exe service $mtaName restart
|
||||
}
|
||||
|
||||
@@ -112,14 +112,14 @@ step_7() {
|
||||
step_8_info() { echo "Install $mdaName"; }
|
||||
step_8() {
|
||||
exe apt install $mdaDeps
|
||||
echoseq -e "\n [I] Installed version: $(dovecot --version)"
|
||||
info -e "\n [I] Installed version: $(dovecot --version)"
|
||||
}
|
||||
|
||||
step_9_info() {
|
||||
echo "Configure $mdaName"
|
||||
}
|
||||
step_9() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<MDA_EOF
|
||||
# Configuring Mailbox Location
|
||||
[/etc/dovecot/conf.d/10-mail.conf]
|
||||
@@ -205,10 +205,10 @@ step_20_info() {
|
||||
echo "Install postfixadmin and create mysql database"
|
||||
echoinfo "Virtualize mailboxes, domains and aliases by using a mysql database"
|
||||
}
|
||||
step_20_alias() { ALIAS="virtual"; }
|
||||
step_20_alias() { echo "virtual"; }
|
||||
step_20() {
|
||||
local qOpt=
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
qOpt="-q"
|
||||
fi
|
||||
exe $WDIR/postfixadmin.sh ${qOpt} install
|
||||
@@ -235,7 +235,7 @@ step_21() {
|
||||
for mtaFile in ${mtaMysqlFiles[@]}
|
||||
do
|
||||
eval 'mtaVar=$MAS_'${mtaFile}
|
||||
echoseq " [I] creating ${mtaFile}.cf"
|
||||
info "creating ${mtaFile}.cf"
|
||||
exe echo -e "$localMysqlUser\n$mtaVar" > "$mtaMysqlConfLoc/${mtaFile}.cf"
|
||||
done
|
||||
|
||||
@@ -259,7 +259,7 @@ step_22() {
|
||||
exe postconf -e "virtual_gid_maps = static:$MAS_VIRTUAL_USER_ID"
|
||||
}
|
||||
|
||||
step_23_info() { echo "Create virtual user $MAS_VIRTUAL_USER and folder $MAS_VIRTUAL_FOLDER_BASE"; }
|
||||
step_23_info() { echo "Create virtual user ${MAS_VIRTUAL_USER:-} and folder ${MAS_VIRTUAL_FOLDER_BASE:-}"; }
|
||||
step_23() {
|
||||
exe mkdir -p "$MAS_VIRTUAL_FOLDER_BASE"
|
||||
exe groupadd --gid $MAS_VIRTUAL_USER_ID $MAS_VIRTUAL_USER
|
||||
@@ -267,7 +267,7 @@ step_23() {
|
||||
exe chown -R ${MAS_VIRTUAL_USER}: "$MAS_VIRTUAL_FOLDER_BASE"
|
||||
exe chmod -R 770 "$MAS_VIRTUAL_FOLDER_BASE"
|
||||
|
||||
echoseq " [I] Restarting $mtaName"
|
||||
info "Restarting $mtaName"
|
||||
exe service $mtaName restart
|
||||
}
|
||||
|
||||
@@ -335,7 +335,7 @@ step_25() {
|
||||
}
|
||||
|
||||
step_50_info() { echo "Adding default relay host for sending mails"; }
|
||||
step_50_alias() { ALIAS="default_relay"; }
|
||||
step_50_alias() { echo "default_relay"; }
|
||||
step_50() {
|
||||
if [ ! -f "$saslPassFile" ] ; then
|
||||
exe postconf -e "relayhost = $MAS_RELAYHOST"
|
||||
@@ -343,7 +343,7 @@ step_50() {
|
||||
exe postconf -e "smtp_sasl_password_maps = hash:$saslPassFile"
|
||||
addConf -s "$MAS_RELAYHOST $MAS_RELAYUSER:$MAS_RELAYPASS" "$saslPassFile"
|
||||
fi
|
||||
echoseq " [I] Updating $saslPassFile"
|
||||
info "Updating $saslPassFile"
|
||||
exe postmap "$saslPassFile"
|
||||
}
|
||||
saslPassFile="$mtaConfLoc/sasl_password"
|
||||
@@ -352,7 +352,7 @@ step_52_info() {
|
||||
echo "Grant access for specific (local) hostnames"
|
||||
echoinfo "Workaround when local clients connect to 25 with different ips (v6)"
|
||||
}
|
||||
step_52_alias() { ALIAS="client_access"; }
|
||||
step_52_alias() { echo "client_access"; }
|
||||
step_52() {
|
||||
if [ ! -f "$mtaClientAccessLoc" ] ; then
|
||||
echo " [I] Generating $mtaClientAccessLoc"
|
||||
@@ -362,7 +362,7 @@ step_52() {
|
||||
echo " smtpd_relay_restrictions ="
|
||||
echo " check_client_access hash:$mtaClientAccessLoc"
|
||||
fi
|
||||
echoseq " [I] Updating $mtaClientAccessLoc"
|
||||
info "Updating $mtaClientAccessLoc"
|
||||
exe postmap "$mtaClientAccessLoc"
|
||||
}
|
||||
mtaClientAccessLoc="$mtaConfLoc/client_access"
|
||||
@@ -370,26 +370,26 @@ mtaClientAccessLoc="$mtaConfLoc/client_access"
|
||||
step_54_info() {
|
||||
echo "Deny recipient access for listed mail addresses"
|
||||
}
|
||||
step_54_alias() { ALIAS="recipient_access"; }
|
||||
step_54_alias() { echo "recipient_access"; }
|
||||
step_54() {
|
||||
if [ ! -f "$mtaRecipientAccessLoc" ] ; then
|
||||
echoseq " [I] Generating $mtaRecipientAccessLoc"
|
||||
info "Generating $mtaRecipientAccessLoc"
|
||||
exep "echo \"# unwanted@${MAS_DOMAIN} 550 No mailbox. Nothing to see here.\" > \"$mtaRecipientAccessLoc\""
|
||||
echo " [I] Don't forget to add the following"
|
||||
echo " [$mtaConfLoc/main.cf]"
|
||||
echo " smtpd_recipient_restrictions ="
|
||||
echo " check_recipient_access hash:$mtaRecipientAccessLoc"
|
||||
fi
|
||||
echoseq " [I] Updating $mtaRecipientAccessLoc"
|
||||
info "Updating $mtaRecipientAccessLoc"
|
||||
exe postmap "$mtaRecipientAccessLoc"
|
||||
}
|
||||
mtaRecipientAccessLoc="$mtaConfLoc/recipient_access"
|
||||
|
||||
step_56_info() { echo "Add sender dependant relay with authentication"; }
|
||||
step_56_alias() { ALIAS="sender_relay"; }
|
||||
step_56_alias() { echo "sender_relay"; }
|
||||
step_56() {
|
||||
if [ ! -f "$mtaSenderRelayLoc" ] ; then
|
||||
echoseq " [I] Generating $mtaSenderRelayLoc"
|
||||
info "Generating $mtaSenderRelayLoc"
|
||||
exep "echo \"# user@extern.com smtp:[mail.extern.com]:587\" > \"$mtaSenderRelayLoc\""
|
||||
exe postconf -e "smtp_sender_dependent_authentication = yes"
|
||||
exe postconf -e "sender_dependent_relayhost_maps = hash:$mtaSenderRelayLoc"
|
||||
@@ -402,7 +402,7 @@ step_56() {
|
||||
echo " user@extern.com username:passwort"
|
||||
echo " postmap $saslPassFile"
|
||||
fi
|
||||
echoseq " [I] Updating $mtaSenderRelayLoc"
|
||||
info "Updating $mtaSenderRelayLoc"
|
||||
exe postmap "$mtaSenderRelayLoc"
|
||||
exe postmap "$saslPassFile"
|
||||
}
|
||||
@@ -412,7 +412,7 @@ step_100_info() {
|
||||
echo "Send testmail [-u SYSTEMUSER | -f FROM] [TO]"
|
||||
echoinfo "Send as current user to postmaster@\$MAS_DOMAIN by default"
|
||||
}
|
||||
step_100_alias() { ALIAS="test"; }
|
||||
step_100_alias() { echo "test"; }
|
||||
step_100() {
|
||||
shift
|
||||
local arg
|
||||
@@ -443,7 +443,7 @@ step_100() {
|
||||
}
|
||||
|
||||
step_102_info() { echo "Show mail queue"; }
|
||||
step_102_alias() { ALIAS="showqueue"; }
|
||||
step_102_alias() { echo "showqueue"; }
|
||||
step_102() {
|
||||
exe sendmail -bp
|
||||
}
|
||||
@@ -452,7 +452,7 @@ step_104_info() {
|
||||
echo "Delete mail queue [ID]"
|
||||
echoinfo "Delete all queued mails if [ID] is empty"
|
||||
}
|
||||
step_104_alias() { ALIAS="delqueue"; }
|
||||
step_104_alias() { echo "delqueue"; }
|
||||
step_104() {
|
||||
shift
|
||||
local msgId="ALL"
|
||||
@@ -462,5 +462,5 @@ step_104() {
|
||||
exe postsuper -d "$msgId"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -17,7 +17,7 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with global config file:
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
|
||||
@@ -25,21 +25,21 @@ step_config() {
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
toolCredentialDir="$MACO_BASE_DIR/.config/matrix-commander"
|
||||
toolEncStoreDir="$MACO_BASE_DIR/.local/share/matrix-commander"
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Run $toolName"; }
|
||||
step_1_alias() { ALIAS="run"; }
|
||||
step_1_alias() { echo "run"; }
|
||||
step_1() {
|
||||
shift
|
||||
exe "$MACO_BASE_DIR/bin/python3" "$MACO_DIR/matrix-commander.py" "$@"
|
||||
@@ -50,14 +50,14 @@ step_3_info() {
|
||||
echo "Send message"
|
||||
echoinfo "Each string ([MESSAGE]) is send as separate message"
|
||||
}
|
||||
step_3_alias() { ALIAS="message"; }
|
||||
step_3_alias() { echo "message"; }
|
||||
step_3() {
|
||||
shift
|
||||
step run -m "$@"
|
||||
}
|
||||
|
||||
step_50_info() { echo "Install $toolName dependencies"; }
|
||||
step_50_alias() { ALIAS="install"; }
|
||||
step_50_alias() { echo "install"; }
|
||||
step_50() {
|
||||
apt install $toolDeps $APTOPT
|
||||
}
|
||||
@@ -91,7 +91,7 @@ dbus-python
|
||||
notify2
|
||||
NOTES_END
|
||||
exe read -p "Enter to continue..."
|
||||
exe "$DEFAULT_EDITOR_SYSTEM" "$MACO_DIR/requirements.txt"
|
||||
exe editor "$MACO_DIR/requirements.txt"
|
||||
exe sudo -u $MACO_USER ${MACO_BASE_DIR}/bin/pip install -r ${MACO_DIR}/requirements.txt
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ step_55_info() {
|
||||
echo "Create systemd service for $toolName"
|
||||
echoinfo "(Make sure to modify the service content in the step configuration)"
|
||||
}
|
||||
step_55_alias() { ALIAS="service"; }
|
||||
step_55_alias() { echo "service"; }
|
||||
step_55() {
|
||||
local macommanderServiceLoc="/etc/systemd/system/matrix-commander.service"
|
||||
addConf -s "$MACO_SERVICE" "$macommanderServiceLoc"
|
||||
@@ -107,19 +107,19 @@ step_55() {
|
||||
}
|
||||
|
||||
step_57_info() { echo "First run to create credential file and encryption store"; }
|
||||
step_57_alias() { ALIAS="firstrun"; }
|
||||
step_57_alias() { echo "firstrun"; }
|
||||
step_57() {
|
||||
exe sudo -u "$MACO_USER" mkdir -p "$toolCredentialDir" "$toolEncStoreDir"
|
||||
exe cd "$toolCredentialDir"
|
||||
step run
|
||||
[ -e ./store ] && exe mv store "$toolEncStoreDir"
|
||||
|
||||
echoseq " [I] use \"$SEQ_NAME run --verify\" to verify against an existing session (like Element)"
|
||||
info "use \"$SEQ_NAME run --verify\" to verify against an existing session (like Element)"
|
||||
}
|
||||
|
||||
step_60_alias() { ALIAS="notes"; }
|
||||
step_60_alias() { echo "notes"; }
|
||||
step_60() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_EOF
|
||||
# Verify matrix-commander "device"
|
||||
|
||||
@@ -140,5 +140,5 @@ credentials.json - $MACO_BASE_DIR/.config/matrix-commander/credentials.json
|
||||
NOTES_EOF
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -14,36 +14,36 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with global config file:
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
echoerr " [W] $SCRIPT_NAME is still in alpha stage"
|
||||
echoerr " TODO: - systemd script"
|
||||
echoerr " - initial config creation"
|
||||
warning -e "$SCRIPT_NAME is still in alpha stage"
|
||||
error -e " TODO: - systemd script"
|
||||
error -e " - initial config creation"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName dependencies"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exep curl -sL https://deb.nodesource.com/setup_12.x \| bash -
|
||||
exe apt install $toolAptDeps $APTOPT
|
||||
}
|
||||
|
||||
step_2_info() { echo "Setup and build"; }
|
||||
step_2_alias() { ALIAS="setup"; }
|
||||
step_2_alias() { echo "setup"; }
|
||||
step_2() {
|
||||
if [ ! -e "$SEQ_DIMENSION_DIR" ]; then
|
||||
exe mkdir -p "$SEQ_DIMENSION_DIR"
|
||||
@@ -62,10 +62,10 @@ step_2() {
|
||||
}
|
||||
|
||||
step_10_info() { echo "Start $toolName"; }
|
||||
step_10_alias() { ALIAS="start"; }
|
||||
step_10_alias() { echo "start"; }
|
||||
step_10() {
|
||||
if [ ! -e "$SEQ_DIMENSION_DIR" ]; then
|
||||
echoerr " [E] $toolName not found ad $SEQ_DIMENSION_DIR"
|
||||
error -e "$toolName not found ad $SEQ_DIMENSION_DIR"
|
||||
return 1;
|
||||
fi
|
||||
exe cd "$SEQ_DIMENSION_DIR"
|
||||
@@ -75,5 +75,5 @@ step_10() {
|
||||
exep NODE_ENV=production node build/app/index.js
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -25,9 +25,9 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="matrix.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
if [ "$(which lsb_release)" == "" ] ; then
|
||||
echoerr " [W] Cannot detect OS. Assuming Raspberry Pi OS"
|
||||
warning -e "Cannot detect OS. Assuming Raspberry Pi OS"
|
||||
osName="Raspbian"
|
||||
else
|
||||
osName=$(lsb_release -is)
|
||||
@@ -35,7 +35,7 @@ step_config() {
|
||||
fi
|
||||
|
||||
if [ "$osName" == "" ] ; then
|
||||
echoerr " [W] Error dedecting OS. Assuming Raspberry Pi OS"
|
||||
warning -e "Error dedecting OS. Assuming Raspberry Pi OS"
|
||||
osName="Raspbian"
|
||||
fi
|
||||
|
||||
@@ -55,14 +55,14 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Installing $toolName dependencies"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOption=
|
||||
|
||||
exe apt update
|
||||
endReturn -o $? "Updating apt repositories failed"
|
||||
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOption="-y"
|
||||
else
|
||||
aptOption=""
|
||||
@@ -75,7 +75,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_2_info() { echo "Create postgres database for $toolName"; }
|
||||
step_2_alias() { ALIAS="createdb"; }
|
||||
step_2_alias() { echo "createdb"; }
|
||||
step_2() {
|
||||
readDatabaseInfos
|
||||
|
||||
@@ -92,7 +92,7 @@ step_3() {
|
||||
}
|
||||
|
||||
step_4_info() { echo "Install $toolName"; }
|
||||
step_4_alias() { ALIAS="virtualenv"; }
|
||||
step_4_alias() { echo "virtualenv"; }
|
||||
step_4() {
|
||||
exe mkdir -p "$MATRIX_HOME"
|
||||
exe virtualenv -p python3 "${MATRIX_HOME}/env"
|
||||
@@ -104,7 +104,7 @@ step_4() {
|
||||
}
|
||||
|
||||
step_5_info() { echo "Create default configuration and folder structure"; }
|
||||
step_5_alias() { ALIAS="defaultconfig"; }
|
||||
step_5_alias() { echo "defaultconfig"; }
|
||||
step_5() {
|
||||
# Create default configuration
|
||||
exe python3 -m synapse.app.homeserver --server-name "$MATRIX_DOMAIN" --config-path homeserver.yaml --generate-config --report-stats=no
|
||||
@@ -124,7 +124,7 @@ step_6() {
|
||||
}
|
||||
|
||||
step_7_info() { echo "Create $toolName systemd service"; }
|
||||
step_7_alias() { ALIAS="systemd"; }
|
||||
step_7_alias() { echo "systemd"; }
|
||||
step_7() {
|
||||
# eval needed to expand sourced configuration variables
|
||||
local localService=`eval "echo \"$toolService\""`
|
||||
@@ -156,13 +156,13 @@ WantedBy=multi-user.target"
|
||||
|
||||
step_10_info() {
|
||||
echo -n "Upgrade $toolName installation"
|
||||
if [ $CONTEXT_HELP -eq 0 ] ; then
|
||||
if ! contextHelp ; then
|
||||
echo " at $MATRIX_HOME"
|
||||
else
|
||||
echo
|
||||
fi
|
||||
}
|
||||
step_10_alias() { ALIAS="upgrade"; }
|
||||
step_10_alias() { echo "upgrade"; }
|
||||
step_10() {
|
||||
echo " [I] Upgrading $toolName"
|
||||
exe source "${MATRIX_HOME}/env/bin/activate"
|
||||
@@ -180,7 +180,7 @@ step_10() {
|
||||
}
|
||||
|
||||
step_12_info() { echo "Restart $toolName systemd service"; echo; }
|
||||
step_12_alias() { ALIAS="restart"; }
|
||||
step_12_alias() { echo "restart"; }
|
||||
step_12() {
|
||||
exe service ${toolServiceName} restart
|
||||
}
|
||||
@@ -189,7 +189,7 @@ step_14_info() {
|
||||
echoinfoArgs "[IP]:8008"
|
||||
echo "Show $toolName version"
|
||||
}
|
||||
step_14_alias() { ALIAS="version"; }
|
||||
step_14_alias() { echo "version"; }
|
||||
step_14() {
|
||||
local synapseIP=localhost
|
||||
shift
|
||||
@@ -208,7 +208,7 @@ step_16_info() {
|
||||
echoinfo "[OPTION]"
|
||||
echoinfo " -r : Raw json output"
|
||||
}
|
||||
step_16_alias() { ALIAS="listuser"; }
|
||||
step_16_alias() { echo "listuser"; }
|
||||
step_16() {
|
||||
adminTokenCheck
|
||||
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
|
||||
@@ -238,7 +238,7 @@ step_16() {
|
||||
}
|
||||
|
||||
step_18_info() { echo "Create new user"; }
|
||||
step_18_alias() { ALIAS="adduser"; }
|
||||
step_18_alias() { echo "adduser"; }
|
||||
step_18() {
|
||||
exe /opt/synapse/env/bin/register_new_matrix_user -c "$MATRIX_HOME/homeserver.yaml" $toolUrlLocal
|
||||
}
|
||||
@@ -247,9 +247,9 @@ step_20_info() {
|
||||
shift
|
||||
echoinfoArgs "[USER NAME]"
|
||||
echo -n "Reset user password"
|
||||
[ $CONTEXT_EXE -ne 0 ] && echoinfo " for $1" || echo
|
||||
contextExe && echoinfo " for $1" || echo
|
||||
}
|
||||
step_20_alias() { ALIAS="resetpw"; }
|
||||
step_20_alias() { echo "resetpw"; }
|
||||
step_20() {
|
||||
shift
|
||||
local user=
|
||||
@@ -261,7 +261,7 @@ step_20() {
|
||||
fi
|
||||
|
||||
if [ -z $user ]; then
|
||||
echoerr "No user name provided"
|
||||
error -e "No user name provided"
|
||||
return 1
|
||||
fi
|
||||
local pw="$("${MATRIX_HOME}/${synapseHashTool}")"
|
||||
@@ -277,7 +277,7 @@ step_22_info() {
|
||||
echoinfo "[OPTION]"
|
||||
echoinfo " -r : Raw json output"
|
||||
}
|
||||
step_22_alias() { ALIAS="listrooms"; }
|
||||
step_22_alias() { echo "listrooms"; }
|
||||
step_22() {
|
||||
adminTokenCheck
|
||||
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
|
||||
@@ -313,7 +313,7 @@ step_24_info() {
|
||||
echoinfo "[OPTION]"
|
||||
echoinfo " -r : Raw json output"
|
||||
}
|
||||
step_24_alias() { ALIAS="listmember"; }
|
||||
step_24_alias() { echo "listmember"; }
|
||||
step_24() {
|
||||
adminTokenCheck
|
||||
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
|
||||
@@ -353,7 +353,7 @@ step_26_info() {
|
||||
echo "Delete rooms without local users"
|
||||
echoinfo " [IP] : default is localhost"
|
||||
}
|
||||
step_26_alias() { ALIAS="purge"; }
|
||||
step_26_alias() { echo "purge"; }
|
||||
step_26() {
|
||||
adminTokenCheck
|
||||
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
|
||||
@@ -384,7 +384,7 @@ step_28_info() {
|
||||
echoinfoArgs "<ROOM ID> [IP]:8008"
|
||||
echo "Delete room"
|
||||
}
|
||||
step_28_alias() { ALIAS="deleteroom"; }
|
||||
step_28_alias() { echo "deleteroom"; }
|
||||
step_28() {
|
||||
adminTokenCheck
|
||||
endReturn -o $? "Admin token needed. Check $SEQ_CONFIG_FILE"
|
||||
@@ -430,13 +430,13 @@ EOF
|
||||
}
|
||||
|
||||
step_30_info() { echoinfoArgs "[DATABASE]"; echo "Debloat postgres"; echo; }
|
||||
step_30_alias() { ALIAS="debloat"; }
|
||||
step_30_alias() { echo "debloat"; }
|
||||
step_30() {
|
||||
shift
|
||||
local pgVerboseReId=" (VERBOSE) "
|
||||
local pgVerboseVac=" VERBOSE"
|
||||
|
||||
if [ $VERBOSE == 0 ]; then
|
||||
if ! verbose; then
|
||||
pgVerboseReId=" "
|
||||
pgVerboseVac=""
|
||||
fi
|
||||
@@ -460,7 +460,7 @@ step_30() {
|
||||
}
|
||||
|
||||
step_50_info() { echo "Drop postgres database for $toolName"; }
|
||||
step_50_alias() { ALIAS="dropdb"; }
|
||||
step_50_alias() { echo "dropdb"; }
|
||||
step_50() {
|
||||
readDatabaseInfos
|
||||
|
||||
@@ -469,7 +469,7 @@ step_50() {
|
||||
}
|
||||
|
||||
step_52_info() { echo "Backup postgres database"; }
|
||||
step_52_alias() { ALIAS="backupdb"; }
|
||||
step_52_alias() { echo "backupdb"; }
|
||||
step_52() {
|
||||
local DELYEAR=$(($(date +%Y)-2))
|
||||
if [ ! -s ~/.pgpass ] ; then
|
||||
@@ -484,7 +484,7 @@ toolDbBackupFolder=/root/backupdb
|
||||
|
||||
|
||||
step_54_info() { echo "Postgres database restore"; }
|
||||
step_54_alias() { ALIAS="restoredb"; }
|
||||
step_54_alias() { echo "restoredb"; }
|
||||
step_54() {
|
||||
echo " [I] Postgres database restore procedure"
|
||||
echo "1. Create a empty postgres database first (step 4)"
|
||||
@@ -502,7 +502,7 @@ step_54() {
|
||||
}
|
||||
|
||||
step_56_info() { echo "$toolName migration notes"; }
|
||||
step_56_alias() { ALIAS="migrate"; }
|
||||
step_56_alias() { echo "migrate"; }
|
||||
step_56() {
|
||||
echo " [I] Backup database"
|
||||
echo " ./postgres.sh backupdb synapse"
|
||||
@@ -552,12 +552,12 @@ toolScript() {
|
||||
# End step if no admin access token is configured
|
||||
adminTokenCheck() {
|
||||
if [ -z "$MATRIX_ACCESS" ] ; then
|
||||
[ $QUIET -eq 0 ] && read -s -p "Please enter admin access tocken: " MATRIX_ACCESS
|
||||
interactive && read -s -p "Please enter admin access tocken: " MATRIX_ACCESS
|
||||
# return 1 if it is still empty
|
||||
[ -z "$MATRIX_ACCESS" ] && return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -36,9 +36,9 @@ toolServiceLoc="/etc/systemd/system/${toolName}.service"
|
||||
readonly goDir="/usr/local/go"
|
||||
readonly goDownLoc="/tmp/go.tar.gz"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
if [ -z $toolVersion ] ; then
|
||||
echoerr " [E] Couldn't determine latest version of $toolName"
|
||||
error -e "Couldn't determine latest version of $toolName"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ step_1_info() {
|
||||
echo "Downloading $toolName version ${toolVersion} to ${toolLoc} from:"
|
||||
echoinfo "$toolDownload"
|
||||
}
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
step upgrade
|
||||
endReturn -o $? "Download failed"
|
||||
@@ -74,9 +74,9 @@ step_4() {
|
||||
}
|
||||
|
||||
step_5_info() { echo "Show configuration notes"; }
|
||||
step_5_alias() { ALIAS="notes"; }
|
||||
step_5_alias() { echo "notes"; }
|
||||
step_5() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_END
|
||||
|
||||
# Sample configuration
|
||||
@@ -87,7 +87,7 @@ NOTES_END
|
||||
}
|
||||
|
||||
step_10_info() { echo "Backup existing executable"; }
|
||||
step_10_alias() { ALIAS="backup"; }
|
||||
step_10_alias() { echo "backup"; }
|
||||
step_10() {
|
||||
if [ -f "$toolLoc" ] ; then
|
||||
local toolBackup=
|
||||
@@ -97,8 +97,8 @@ step_10() {
|
||||
toolBackup="${toolDir}/${toolName}_bu"
|
||||
fi
|
||||
exe service ${toolName} stop >>/dev/null 2>&1
|
||||
echoseq -n " [I] Backing up existing executable to ${toolBackup}..."
|
||||
exe cp -ar "$toolLoc" "$toolBackup" && echoseq "ok"
|
||||
info -n " [I] Backing up existing executable to ${toolBackup}..."
|
||||
exe cp -ar "$toolLoc" "$toolBackup" && info "ok"
|
||||
fi
|
||||
}
|
||||
versionNow=$([ ! -z $(which ${toolName}) ] && ${toolName} --version | sed 's/.*version: \([0-9.]\+\).*/\1/')
|
||||
@@ -116,7 +116,7 @@ step_12_info() {
|
||||
fi
|
||||
echo
|
||||
}
|
||||
step_12_alias() { ALIAS="upgrade"; }
|
||||
step_12_alias() { echo "upgrade"; }
|
||||
step_12() {
|
||||
step backup
|
||||
exe wget -O "$toolLoc" $toolDownload
|
||||
@@ -134,7 +134,7 @@ step_30_info() {
|
||||
echoinfo " --arch, -a : armhf(default), arm64"
|
||||
echoinfo " CPU architecture for downloading go sources"
|
||||
}
|
||||
step_30_alias() { ALIAS="build"; }
|
||||
step_30_alias() { echo "build"; }
|
||||
step_30() {
|
||||
shift
|
||||
local goVer="$(curl --silent -L https://go.dev/doc/devel/release | \
|
||||
@@ -151,7 +151,7 @@ step_30() {
|
||||
|
||||
# Download latest go
|
||||
if [ ! -e "${goDir}" ] ; then
|
||||
echoseq "Download go${goVer}: ${goDownUrl}"
|
||||
info "Download go${goVer}: ${goDownUrl}"
|
||||
exe wget -O "${goDownLoc}" ${goDownUrl}
|
||||
endReturn -o $? "Download ${goVer} failed"
|
||||
exe tar -C "$(dirname -- "${goDir}")" -xzf "${goDownLoc}"
|
||||
@@ -193,7 +193,7 @@ step_32() {
|
||||
}
|
||||
|
||||
# Sequence Revision
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
|
||||
# Path to sequencer
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -20,7 +20,7 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with global config file:
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
@@ -30,18 +30,18 @@ step_config() {
|
||||
postgresPass="$MAYAN_DBPASS"
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install libreoffice without gui"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt --no-install-recommends install libreoffice -y
|
||||
@@ -69,7 +69,7 @@ step_3() {
|
||||
}
|
||||
|
||||
step_4_info() { echo "Create postgres database for $toolName"; }
|
||||
step_4_alias() { ALIAS="createdb"; }
|
||||
step_4_alias() { echo "createdb"; }
|
||||
step_4() {
|
||||
readDatabaseInfos
|
||||
|
||||
@@ -91,7 +91,7 @@ step_5() {
|
||||
}
|
||||
|
||||
step_6_info() { echo "Supervisord configuration for $toolName"; }
|
||||
step_6_alias() { ALIAS="supervisorconf"; }
|
||||
step_6_alias() { echo "supervisorconf"; }
|
||||
step_6() {
|
||||
addConf -c "" "$supervisordConfLoc"
|
||||
toolScript "platformtemplate supervisord > ${supervisordConfLoc}"
|
||||
@@ -126,7 +126,7 @@ step_10_info() {
|
||||
echoinfo " super : update also supervisor configuration"
|
||||
echoinfo " (manual redis password update may be needed)"
|
||||
}
|
||||
step_10_alias() { ALIAS="upgrade"; }
|
||||
step_10_alias() { echo "upgrade"; }
|
||||
step_10() {
|
||||
shift # don't need the step number
|
||||
step upgradepip
|
||||
@@ -149,12 +149,12 @@ uninstallRemovalsLoc="/tmp/removals.txt"
|
||||
|
||||
|
||||
step_13_info() { echo "$toolName management script"; }
|
||||
step_13_alias() { ALIAS="manage"; }
|
||||
step_13_alias() { echo "manage"; }
|
||||
step_13() {
|
||||
shift
|
||||
if [ -z "$1" ] || [ "$1" == "" ] ; then
|
||||
echo -n "Command (empty for help): "
|
||||
if [ $DRY != 0 ]; then
|
||||
if dry; then
|
||||
echo " dryrun"
|
||||
else
|
||||
read command
|
||||
@@ -166,14 +166,14 @@ step_13() {
|
||||
}
|
||||
|
||||
step_15_info() { echo "Upgrade python pip"; }
|
||||
step_15_alias() { ALIAS="upgradepip"; }
|
||||
step_15_alias() { echo "upgradepip"; }
|
||||
step_15()
|
||||
{
|
||||
exe ${toolRoot}/bin/pip install --upgrade pip
|
||||
}
|
||||
|
||||
step_20_info() { echo "Backup postgres database to media folder"; }
|
||||
step_20_alias() { ALIAS="backupdb"; }
|
||||
step_20_alias() { echo "backupdb"; }
|
||||
step_20() {
|
||||
local DELYEAR=$(($(date +%Y)-2))
|
||||
if [ ! -s ~/.pgpass ] ; then
|
||||
@@ -188,7 +188,7 @@ toolDbBackupFolder=${toolMediaFolder}/backupdb
|
||||
|
||||
|
||||
step_22_info() { echo "Postgres database restore"; }
|
||||
step_22_alias() { ALIAS="restoredb"; }
|
||||
step_22_alias() { echo "restoredb"; }
|
||||
step_22() {
|
||||
echo " [I] Postgres database restore procedure"
|
||||
echo "1. Create a empty postgres database first (step 4)"
|
||||
@@ -218,7 +218,7 @@ readDatabaseInfos() {
|
||||
read -s -p "Enter postgres password: " postgresPass
|
||||
endCheckEmpty postgresPass "password"
|
||||
fi
|
||||
echoseq
|
||||
info
|
||||
}
|
||||
|
||||
# Needs readDatabaseInfos() to execute some commands
|
||||
@@ -233,5 +233,5 @@ toolScript() {
|
||||
${toolRoot}/bin/mayan-edms.py $*"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -18,7 +18,7 @@ CONFIG=0
|
||||
#CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
#CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## e.g. to source a config file manually:
|
||||
#. "$CONFIG_FILE"
|
||||
## or to use sequencer api:
|
||||
@@ -27,7 +27,7 @@ step_config() {
|
||||
# CONFIG=1
|
||||
#fi
|
||||
if [ "$(which lsb_release)" == "" ] ; then
|
||||
echoerr " [W] Cannot detect OS. Assuming Ubuntu"
|
||||
warning -e "Cannot detect OS. Assuming Ubuntu"
|
||||
SEQ_OSNAME="Ubuntu"
|
||||
else
|
||||
SEQ_OSNAME=$(lsb_release -is)
|
||||
@@ -35,7 +35,7 @@ step_config() {
|
||||
fi
|
||||
|
||||
if [ "$SEQ_OSNAME" == "" ] ; then
|
||||
echoerr " [W] Error dedecting OS. Assuming Ubuntu"
|
||||
warning -e "Error dedecting OS. Assuming Ubuntu"
|
||||
SEQ_OSNAME="Ubuntu"
|
||||
fi
|
||||
|
||||
@@ -43,20 +43,20 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName dependencies"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOption=
|
||||
|
||||
local pyVersion=$(python -V 2>&1)
|
||||
if [[ ! "$pyVersion" =~ \ 2\.[7-9]+ ]] ; then
|
||||
echoerr " [E] Motioneye requires python version 2.7 but $pyVersion was found."
|
||||
error -e "Motioneye requires python version 2.7 but $pyVersion was found."
|
||||
return 1
|
||||
fi
|
||||
|
||||
exe apt update
|
||||
endReturn -o $? "Updating apt repositories failed"
|
||||
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOption="-y"
|
||||
else
|
||||
aptOption=""
|
||||
@@ -96,7 +96,7 @@ step_3() {
|
||||
}
|
||||
|
||||
step_4_info() { echo "Upgrade python pip"; }
|
||||
step_4_alias() { ALIAS="upgradepip"; }
|
||||
step_4_alias() { echo "upgradepip"; }
|
||||
step_4()
|
||||
{
|
||||
exe pip install --upgrade pip
|
||||
@@ -138,7 +138,7 @@ motioneyeServiceSource="/usr/local/share/motioneye/extra/motioneye.systemd-unit-
|
||||
motioneyeServiceTarget="/etc/systemd/system/motioneye.service"
|
||||
|
||||
step_20_info() { echo "Upgrade $toolName"; }
|
||||
step_20_alias() { ALIAS="upgrade"; }
|
||||
step_20_alias() { echo "upgrade"; }
|
||||
step_20() {
|
||||
step "upgradepip"
|
||||
exe pip install motioneye --upgrade
|
||||
@@ -146,5 +146,5 @@ step_20() {
|
||||
exe systemctl restart motioneye
|
||||
}
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -14,7 +14,7 @@ step_1_info() {
|
||||
echoinfo "$databasePackages"
|
||||
echoinfo "(Consider step \"latest\" first to setup official repository with the latest version)"
|
||||
}
|
||||
step_1_alias() { ALIAS=install; }
|
||||
step_1_alias() { echo install; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $databasePackages
|
||||
@@ -47,7 +47,7 @@ table_definition_cache=1400
|
||||
#innodb_force_recovery=6"
|
||||
|
||||
step_8_info() { echo "Setup ubuntu $databaseName repository"; }
|
||||
step_8_alias() { ALIAS="latest"; }
|
||||
step_8_alias() { echo "latest"; }
|
||||
step_8() {
|
||||
exe apt install curl
|
||||
exep "curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --skip-maxscale --skip-tools"
|
||||
@@ -64,7 +64,7 @@ step_10_info() {
|
||||
echoinfo " Manual password entry for non existing user"
|
||||
echoinfo " --remote, -r : ip of allowed remote host"
|
||||
}
|
||||
step_10_alias() { ALIAS="createdb"; }
|
||||
step_10_alias() { echo "createdb"; }
|
||||
step_10() {
|
||||
local arg
|
||||
local dbOption=
|
||||
@@ -117,7 +117,7 @@ step_11_info() {
|
||||
echoinfo " with manual password entry for non existing user"
|
||||
echoinfo " --remote, -r : ip of allowed remote host"
|
||||
}
|
||||
step_11_alias() { ALIAS="createuser"; }
|
||||
step_11_alias() { echo "createuser"; }
|
||||
step_11() {
|
||||
local arg
|
||||
|
||||
@@ -150,11 +150,11 @@ step_11() {
|
||||
|
||||
if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$dbUser' AND host = '$dbRemote';" | mysql | grep 1 &>/dev/null; then
|
||||
# User does not exist
|
||||
if [ $DRY -eq 0 ]; then
|
||||
if ! dry; then
|
||||
read -s -p "Enter mysql user password: " dbPass
|
||||
endCheckEmpty dbPass "password"
|
||||
else
|
||||
echoseq "Enter mysql password: ...skipped..."
|
||||
info "Enter mysql password: ...skipped..."
|
||||
fi
|
||||
exe mysql -u root -e 'CREATE USER '"'"$dbUser"'"'@'"'"$dbRemote"'"' IDENTIFIED BY '"'"$dbPass"'"';'
|
||||
endReturn -o $? "Error creating mysql user"
|
||||
@@ -169,7 +169,7 @@ step_12_info() {
|
||||
echoinfo " --user, -u : user name"
|
||||
echoinfo " --remote, -r : ip of allowed remote host"
|
||||
}
|
||||
step_12_alias() { ALIAS="grant"; }
|
||||
step_12_alias() { echo "grant"; }
|
||||
step_12() {
|
||||
local arg
|
||||
|
||||
@@ -206,7 +206,7 @@ step_14_info() {
|
||||
echoinfo " --user, -u : user name"
|
||||
echoinfo " --remote, -r : ip of allowed remote host"
|
||||
}
|
||||
step_14_alias() { ALIAS="revokeall"; }
|
||||
step_14_alias() { echo "revokeall"; }
|
||||
step_14() {
|
||||
local arg
|
||||
|
||||
@@ -231,14 +231,14 @@ step_14() {
|
||||
}
|
||||
|
||||
step_30_info() { echo "List mysql databases"; }
|
||||
step_30_alias() { ALIAS="listdb"; }
|
||||
step_30_alias() { echo "listdb"; }
|
||||
step_30() {
|
||||
exe mysql -u root -e 'SHOW DATABASES;'
|
||||
echo -e "\nDrop userdb by: mysql -u root -e 'DROP DATABASE userdb;'"
|
||||
}
|
||||
|
||||
step_32_info() { echo "List mysql user"; }
|
||||
step_32_alias() { ALIAS="listuser"; }
|
||||
step_32_alias() { echo "listuser"; }
|
||||
step_32() {
|
||||
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
|
||||
echo -e "\nDrop dbuser by: mysql -u root -e 'DROP USER dbuser@localhost;'"
|
||||
@@ -251,7 +251,7 @@ step_34_info() {
|
||||
echoinfo " --user, -u : user name"
|
||||
echoinfo " --remote, -r : ip of allowed remote host"
|
||||
}
|
||||
step_34_alias() { ALIAS="listprivileges"; }
|
||||
step_34_alias() { echo "listprivileges"; }
|
||||
step_34() {
|
||||
local arg
|
||||
|
||||
@@ -276,7 +276,7 @@ step_36_info() {
|
||||
echoinfoArgs "[DATABASE_NAME]"
|
||||
echo "Size of database"
|
||||
}
|
||||
step_36_alias() { ALIAS="sizedb"; }
|
||||
step_36_alias() { echo "sizedb"; }
|
||||
step_36() {
|
||||
if [ -z "$2" ]; then
|
||||
echo "Please provide a database name. e.g. $0 sizedb mydb_db"
|
||||
@@ -293,17 +293,17 @@ step_50_info() {
|
||||
echoinfoArgs "<DATABASE NAME> <TARGET DIR>"
|
||||
echo "Backup (dump) a mysql database"
|
||||
}
|
||||
step_50_alias() { ALIAS="backup"; }
|
||||
step_50_alias() { echo "backup"; }
|
||||
step_50() {
|
||||
shift # step number not used
|
||||
if [ -z $1 ] ; then
|
||||
echoerr " [E] No database name provided"
|
||||
error -e "No database name provided"
|
||||
return 1
|
||||
fi
|
||||
local dbName="$1"
|
||||
local buTarget="$2"
|
||||
if [ -z "$2" ] ; then
|
||||
echoerr " [W] No target directory provided. Using home of current user"
|
||||
warning -e "No target directory provided. Using home of current user"
|
||||
buTarget="$HOME"
|
||||
elif [ ! -e "$2" ]; then
|
||||
endReturn -o 1 -f "$2 does not exist"
|
||||
@@ -315,7 +315,7 @@ step_50() {
|
||||
}
|
||||
|
||||
step_52_info() { echo "Restore a mysql database"; }
|
||||
step_52_alias() { ALIAS="restore"; }
|
||||
step_52_alias() { echo "restore"; }
|
||||
step_52() {
|
||||
echo "Restore with:"
|
||||
echo " mysql -e \"DROP DATABASE nextcloud_db\""
|
||||
@@ -340,5 +340,5 @@ readDatabaseInfos() {
|
||||
echo
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -13,7 +13,7 @@ sq_config=0
|
||||
sq_configFileName="${toolName}.cfg"
|
||||
sq_configFileTemplate="$sq_dir/${sq_configFileName}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api:
|
||||
initSeqConfig "$sq_configFileName" "$sq_configFileTemplate"
|
||||
if [ $? -eq 0 ] ; then
|
||||
@@ -26,7 +26,7 @@ step_1_info() {
|
||||
echoinfoArgs "[OCC ARGS]"
|
||||
echo "Execute occ command"
|
||||
}
|
||||
step_1_alias() { ALIAS="occ"; }
|
||||
step_1_alias() { echo "occ"; }
|
||||
step_1() {
|
||||
shift
|
||||
|
||||
@@ -34,10 +34,10 @@ step_1() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Upgrade $toolName on command line to latest version of selected release channel"; }
|
||||
step_20_alias() { ALIAS="upgrade"; }
|
||||
step_20_alias() { echo "upgrade"; }
|
||||
step_20() {
|
||||
if [ $sq_config -eq 0 ] ; then
|
||||
echoerr " [E] No configuration found to determine installation directory"
|
||||
error -e "No configuration found to determine installation directory"
|
||||
return 1
|
||||
fi
|
||||
exe cd "$sc_ncInstallDir"
|
||||
@@ -46,7 +46,7 @@ step_20() {
|
||||
ncInstaller="updater/updater.phar"
|
||||
|
||||
step_102_info() { echoinfoArgs "<NC DATABASE> <IPV4 ADDRESS>"; echo "Delete IP from bruteforce table"; }
|
||||
step_102_alias() { ALIAS="bruteforceRemoveIP"; }
|
||||
step_102_alias() { echo "bruteforceRemoveIP"; }
|
||||
step_102() {
|
||||
shift
|
||||
local ncdb=
|
||||
@@ -54,7 +54,7 @@ step_102() {
|
||||
local ipregex='^[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}$'
|
||||
|
||||
if [ -z $1 ] ; then
|
||||
echoerr " [E] No database provided"
|
||||
error -e "No database provided"
|
||||
if [ -f "${sq_dir}/mysql.sh" ] ; then
|
||||
echo " [I] Available mysql databases:"
|
||||
"${sq_dir}/mysql.sh" -qq listdb
|
||||
@@ -67,7 +67,7 @@ step_102() {
|
||||
if [[ "$2" =~ $ipregex ]] ; then
|
||||
ip="$2"
|
||||
else
|
||||
echoerr " [E] No valid IP:PORT detected: $2"
|
||||
error -e "No valid IP:PORT detected: $2"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -76,29 +76,29 @@ step_102() {
|
||||
}
|
||||
|
||||
step_104_info() { echoinfoArgs "<USER>"; echo "Reset and rescan the music library in the background for one user"; }
|
||||
step_104_alias() { ALIAS="audioreset"; }
|
||||
step_104_alias() { echo "audioreset"; }
|
||||
step_104() {
|
||||
shift
|
||||
local ncUser=$1
|
||||
|
||||
if [ -z "$ncUser" ] ; then
|
||||
echoerr " [E] Reset only for single user"
|
||||
error -e "Reset only for single user"
|
||||
return 1
|
||||
fi
|
||||
|
||||
exep "${localOcc[@]} audioplayer:reset $ncUser > /var/log/ncAudioRescan.log"
|
||||
echoseq " [I] Rescan audioplayer database for user $ncUser"
|
||||
info "Rescan audioplayer database for user $ncUser"
|
||||
exep "${localOcc[@]} audioplayer:scan -vvvv $ncUser >> /var/log/ncAudioRescan.log &"
|
||||
}
|
||||
|
||||
step_106_info() { echoinfoArgs "<USER>"; echo "Scan the music library"; }
|
||||
step_106_alias() { ALIAS="audioscan"; }
|
||||
step_106_alias() { echo "audioscan"; }
|
||||
step_106() {
|
||||
shift
|
||||
local ncUser=$1
|
||||
|
||||
if [ -z "$ncUser" ] ; then
|
||||
echoerr " [E] Reset only for single user"
|
||||
error -e "Reset only for single user"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -106,22 +106,22 @@ step_106() {
|
||||
}
|
||||
|
||||
step_110_info() { echo "Reset picture preview folder"; }
|
||||
step_110_alias() { ALIAS="resetpreview"; }
|
||||
step_110_alias() { echo "resetpreview"; }
|
||||
step_110() {
|
||||
if [ -e "${sc_ncDataDir}" ]; then
|
||||
exe rm -rf "${sc_ncDataDir}/appdata_"*"/preview/"*
|
||||
|
||||
echoseq " [I] Rescan app data folder"
|
||||
info "Rescan app data folder"
|
||||
exep "${localOcc[@]} files:scan-app-data &"
|
||||
else
|
||||
echoerr " [E] Nextcloud data direcotry $sc_ncDataDir not found"
|
||||
error -e "Nextcloud data direcotry $sc_ncDataDir not found"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
step_200_alias() { ALIAS="notes"; }
|
||||
step_200_alias() { echo "notes"; }
|
||||
step_200() {
|
||||
outColor green
|
||||
color green
|
||||
cat<<NOTES_END
|
||||
# Recommended preview settings
|
||||
[$sc_ncInstallDir/config/config.php]
|
||||
@@ -136,5 +136,5 @@ occ config:app:set preview jpeg_quality --value="60"
|
||||
NOTES_END
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -16,7 +16,7 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with global config file:
|
||||
#initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
|
||||
@@ -26,18 +26,18 @@ step_config() {
|
||||
# CONFIG=1
|
||||
#else
|
||||
# # End if no configuration file exists
|
||||
# [ $DRY -eq 0 ] && return -1
|
||||
# dry || return -1
|
||||
#fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
downloadLatest
|
||||
|
||||
@@ -72,5 +72,5 @@ tempDown="/tmp/olivetin"
|
||||
tempInstall="$tempDown/olivetin.deb"
|
||||
|
||||
|
||||
VERSION_SEQREV=13
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -25,7 +25,7 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## Called once before executing steps.
|
||||
## e.g. to source a config file manually:
|
||||
#. "$CONFIG_FILE"
|
||||
@@ -39,11 +39,11 @@ step_config() {
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return -1
|
||||
dry || return -1
|
||||
fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
dockerDnsEntry="DOCKER_OPTS=\"--dns $dockerDns1 --dns $dockerDns2\""
|
||||
|
||||
@@ -52,7 +52,7 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install Docker dependencies"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $dockerDeps $APTOPT
|
||||
@@ -74,7 +74,7 @@ step_2() {
|
||||
step_3_info() { echo "Install latest Docker version"; }
|
||||
step_3() {
|
||||
# Install the latest version
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOption="-y"
|
||||
else
|
||||
aptOption=""
|
||||
@@ -90,7 +90,7 @@ step_4() {
|
||||
exe sed -i "s/\(^#DOCKER_OPTS=.*\)$/#\1\n${dockerDnsEntry}/" "$dockerDefaultConf"
|
||||
exep "grep \"${dockerDns1}\" \"$dockerDefaultConf\" >>/dev/null"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echoerr " [W] Docker dns entry could not be changed"
|
||||
warning -e "Docker dns entry could not be changed"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ step_5_info() {
|
||||
echoinfo "If [SECRET] is empty, user input will be available if not run --quiet."
|
||||
echoinfo "$toolName will be run unsecured if no secret was provied."
|
||||
}
|
||||
step_5_alias() { ALIAS="startoo"; }
|
||||
step_5_alias() { echo "startoo"; }
|
||||
step_5() {
|
||||
local options=
|
||||
local secret=
|
||||
@@ -109,7 +109,7 @@ step_5() {
|
||||
secret="$2"
|
||||
elif [ ! -z "$dockerSecret" ]; then
|
||||
secret="$dockerSecret"
|
||||
elif [ $QUIET -eq 0 ] ; then
|
||||
elif interactive ; then
|
||||
exe read -s -p "JWT Secret: " secret
|
||||
fi
|
||||
|
||||
@@ -124,7 +124,7 @@ step_5() {
|
||||
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
|
||||
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql "${dockerImageName}"
|
||||
else
|
||||
echoerr " [W] Running $toolName without JWT (JSON Web Tokens)"
|
||||
warning -e "Running $toolName without JWT (JSON Web Tokens)"
|
||||
exe docker run -i -t -d -p ${onlyOfficePort}:80 --restart=always "${dockerImageName}"
|
||||
fi
|
||||
|
||||
@@ -132,7 +132,7 @@ step_5() {
|
||||
}
|
||||
|
||||
step_7_info() { echo "Upgrade $toolName to latest version"; }
|
||||
step_7_alias() { ALIAS="upgrade"; }
|
||||
step_7_alias() { echo "upgrade"; }
|
||||
step_7() {
|
||||
# get container ID
|
||||
local containerId=$(docker ps -aqf ancestor="$dockerImageName")
|
||||
@@ -140,7 +140,7 @@ step_7() {
|
||||
exe docker stop $containerId
|
||||
exe docker rm $containerId
|
||||
else
|
||||
echoerr " [W] No $toolName Docker container found"
|
||||
warning -e "No $toolName Docker container found"
|
||||
fi
|
||||
exe docker pull $dockerImageName
|
||||
endReturn -o $? "Error getting $toolName Docker update"
|
||||
@@ -149,7 +149,7 @@ step_7() {
|
||||
}
|
||||
|
||||
step_10_info() { echo "List running Docker container"; }
|
||||
step_10_alias() { ALIAS="ls"; }
|
||||
step_10_alias() { echo "ls"; }
|
||||
step_10() {
|
||||
exe docker container ls
|
||||
echo
|
||||
@@ -162,7 +162,7 @@ step_12_info() {
|
||||
echo "Clean unused Docker data"
|
||||
echoinfo "(unused containers, dangling images, networks, build cache and volumes)"
|
||||
}
|
||||
step_12_alias() { ALIAS="prune"; }
|
||||
step_12_alias() { echo "prune"; }
|
||||
step_12() {
|
||||
exe docker system df
|
||||
exe docker system prune
|
||||
@@ -170,13 +170,13 @@ step_12() {
|
||||
}
|
||||
|
||||
step_100_info() { echo "Uninstall Docker"; }
|
||||
step_100_alias() { ALIAS="uninstall"; }
|
||||
step_100_alias() { echo "uninstall"; }
|
||||
step_100() {
|
||||
exe apt-get purge docker-ce
|
||||
}
|
||||
|
||||
step_102_info() { echo "Purge images, containers, volumes, or customized configuration files"; }
|
||||
step_102_alias() { ALIAS="purge"; }
|
||||
step_102_alias() { echo "purge"; }
|
||||
step_102() {
|
||||
exe read -p "Are you sure y/[n]? " answer
|
||||
case $answer in
|
||||
@@ -190,5 +190,5 @@ step_102() {
|
||||
esac
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -16,7 +16,7 @@ CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
CONFIG_DIR="$WDIR/$SCRIPT_NAME"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
#echo "Called once before executing steps."
|
||||
## e.g. to source a config file manually:
|
||||
#. "$CONFIG_FILE"
|
||||
@@ -28,14 +28,14 @@ step_config() {
|
||||
# CONFIG=1
|
||||
#else
|
||||
# # End if no configuration file exists
|
||||
# [ $DRY -eq 0 ] && return -1
|
||||
# dry || return -1
|
||||
#fi
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $toolDeps $APTOPT
|
||||
@@ -45,15 +45,15 @@ step_2_info() { echo "Install customized helper scripts to $toolUserScriptsLoc";
|
||||
step_2() {
|
||||
exep "mkdir \"$toolUserScriptsLoc\" 2>>/dev/null"
|
||||
[ $? -ne 0 ] && \
|
||||
echoseq " [W] $toolUserScriptsLoc already exists. Not overwriting existing files."
|
||||
warning "$toolUserScriptsLoc already exists. Not overwriting existing files."
|
||||
exe cp -n "$CONFIG_DIR"/* "$toolUserScriptsLoc"
|
||||
}
|
||||
|
||||
step_10_info() { echo "Open openvpn system start configuration"; }
|
||||
step_10_alias() { ALIAS="default"; }
|
||||
step_10_alias() { echo "default"; }
|
||||
step_10() {
|
||||
exe vi "$toolDefaultConf"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=12
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -27,6 +27,6 @@ step_4() {
|
||||
fi
|
||||
}
|
||||
|
||||
VERSION_SEQREV=3
|
||||
readonly sqr_minVersion=16
|
||||
|
||||
. sequencer.sh
|
||||
|
@@ -15,17 +15,17 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
[ $DRY -eq 0 ] && return 1
|
||||
dry || return 1
|
||||
fi
|
||||
}
|
||||
|
||||
step_30_info() { echo "Backup ${toolName} web direcotry"; }
|
||||
step_30_alias() { ALIAS="backup"; }
|
||||
step_30_alias() { echo "backup"; }
|
||||
step_30() {
|
||||
exep "cd \"${PIWI_DIR}\"/.. && tar czf \"${PIWI_BU_DIR}/\`date +%Y%m%d\`_${toolName}_web.tar.gz\" --exclude=\"${toolName}/network/*\" --exclude=\"${toolName}/_data/i/*\" \"$(basename "$PIWI_DIR")\""
|
||||
}
|
||||
@@ -34,19 +34,19 @@ step_31_info() {
|
||||
echoinfoArgs "[daily|monthly(default]"
|
||||
echo "Backup ${toolName} database"
|
||||
}
|
||||
step_31_alias() { ALIAS="backupdb"; }
|
||||
step_31_alias() { echo "backupdb"; }
|
||||
step_31() {
|
||||
case "$2" in
|
||||
daily|Daily|DAILY)
|
||||
[ $QUIET -ne 2 ] && echo " [I] Daily backup..."
|
||||
silent || echo " [I] Daily backup..."
|
||||
exep "mysqldump --single-transaction -u root ${PIWI_DB_NAME} | bzip2 -c > \"${PIWI_BU_DIR}/${toolName}_daily.sql.bz2\""
|
||||
;;
|
||||
*)
|
||||
[ $QUIET -ne 2 ] && echo " [I] Monthly backup..."
|
||||
silent || echo " [I] Monthly backup..."
|
||||
exep "mysqldump --single-transaction -u root ${PIWI_DB_NAME} | bzip2 -c > \"${PIWI_BU_DIR}/monthly/\`date +%Y%m%d\`_${toolName}.sql.bz2\""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -6,7 +6,7 @@ toolDeps="composer jpegoptim php7.3-bcmath php-imagick"
|
||||
toolPath="/var/www/pixelfed"
|
||||
|
||||
step_1_info() { echo "Updating apt"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
}
|
||||
@@ -126,7 +126,7 @@ Environment=
|
||||
WantedBy=multi-user.target"
|
||||
|
||||
step_8_info() { echo "Create scheduler cron job"; }
|
||||
step_8_alias() { ALIAS="scheduler"; }
|
||||
step_8_alias() { echo "scheduler"; }
|
||||
step_8() {
|
||||
addConf -s "$schedulerCmd" "$schedulerCron"
|
||||
}
|
||||
@@ -197,7 +197,7 @@ location ~ /\\.(?!well-known).* {
|
||||
}"
|
||||
|
||||
step_20_info() { echo "Reload configuration (.env)"; }
|
||||
step_20_alias() { ALIAS="newenv"; }
|
||||
step_20_alias() { echo "newenv"; }
|
||||
step_20() {
|
||||
exe cd $toolPath
|
||||
exe php artisan config:cache
|
||||
@@ -205,17 +205,17 @@ step_20() {
|
||||
}
|
||||
|
||||
step_22_info() { echo "Create new user"; }
|
||||
step_22_alias() { ALIAS="createuser"; }
|
||||
step_22_alias() { echo "createuser"; }
|
||||
step_22() {
|
||||
exe cd $toolPath
|
||||
exe php artisan user:create
|
||||
}
|
||||
|
||||
step_24_info() { echo "Checkout to dev branch. Losing local changes!"; }
|
||||
step_24_alias() { ALIAS="forcedev"; }
|
||||
step_24_alias() { echo "forcedev"; }
|
||||
step_24() {
|
||||
exe read -p "Are you sure: y/[n]? " answer
|
||||
if [ $DRY -eq 0 ] ; then
|
||||
if ! dry ; then
|
||||
case $answer in
|
||||
[yY])
|
||||
;;
|
||||
@@ -232,7 +232,7 @@ step_24() {
|
||||
}
|
||||
|
||||
step_100_info() { echo "Upgrade \"${toolPath}\" to supported tag $toolTag"; }
|
||||
step_100_alias() { ALIAS="upgrade"; }
|
||||
step_100_alias() { echo "upgrade"; }
|
||||
step_100() {
|
||||
exe cd $toolPath
|
||||
exe git pull origin $toolTag
|
||||
@@ -242,7 +242,7 @@ step_100() {
|
||||
}
|
||||
|
||||
step_101_info() { echo "Recommended post update procedure"; }
|
||||
step_101_alias() { ALIAS="postupdate"; }
|
||||
step_101_alias() { echo "postupdate"; }
|
||||
step_101() {
|
||||
exe cd $toolPath
|
||||
exe composer install
|
||||
@@ -261,7 +261,7 @@ step_101() {
|
||||
|
||||
# Src: https://docs.pixelfed.org/running-pixelfed/troubleshooting.html
|
||||
step_102_info() { echo "Fix if horizon services is running but not showing the administration interface"; }
|
||||
step_102_alias() { ALIAS="fixhorizon"; }
|
||||
step_102_alias() { echo "fixhorizon"; }
|
||||
step_102() {
|
||||
exe cd $toolPath
|
||||
exe php artisan package:discover
|
||||
@@ -272,7 +272,7 @@ step_102() {
|
||||
}
|
||||
|
||||
# Sequence Revision
|
||||
VERSION_SEQREV=7
|
||||
readonly sqr_minVersion=16
|
||||
|
||||
# Path to sequencer
|
||||
. sequencer.sh
|
||||
|
@@ -17,7 +17,7 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo " ${toolName} path: ${PFA_WEB_LOC}"
|
||||
@@ -33,12 +33,12 @@ step_1_info() {
|
||||
echo "Install $toolName dependencies:"
|
||||
echoinfo "$localDeps"
|
||||
}
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
# eval needed to expand sourced configuration variables
|
||||
local localDeps=`eval "echo \"$toolPhpDeps\""`
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
exe apt update
|
||||
@@ -51,10 +51,10 @@ step_2() {
|
||||
}
|
||||
|
||||
step_3_info() { echo "Install fetchmail"; }
|
||||
step_3_alias() { ALIAS="install_fetchmail"; }
|
||||
step_3_alias() { echo "install_fetchmail"; }
|
||||
step_3() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
exe apt install $fetchmailDeps $aptOpt
|
||||
@@ -81,7 +81,7 @@ step_6_info() {
|
||||
echo "Create postfixadmin fetchmail systemd timer and reduce syslog entries"
|
||||
echoinfo "Needs to start after the mysql service"
|
||||
}
|
||||
step_6_alias() { ALIAS="timer"; }
|
||||
step_6_alias() { echo "timer"; }
|
||||
step_6() {
|
||||
# eval needed to expand sourced configuration variables
|
||||
local localService=`eval "echo \"$fetchPluginService\""`
|
||||
@@ -123,7 +123,7 @@ fetchPluginRsyslog="if \$programname == 'systemd' and re_match(\$msg, \"Started.
|
||||
if \$programname == 'systemd' and re_match(\$msg, \"fetchmail.*Succeeded\") then stop"
|
||||
|
||||
step_7_info() { echo "Create separate log file for fetchmail using rsyslog"; }
|
||||
step_7_alias() { ALIAS="newlog"; }
|
||||
step_7_alias() { echo "newlog"; }
|
||||
step_7() {
|
||||
addConf -f "$fetchmailRsyslog" "$fetchmailRsyslogLoc"
|
||||
addConf -f "$fetchmailRotate" "$fetchmailRotateLoc"
|
||||
@@ -144,7 +144,7 @@ fetchmailRsyslog="if \$programname == 'fetchmail' or \$programname == 'fetchmail
|
||||
& stop"
|
||||
|
||||
step_18_info() { echoinfoArgs "[NEW VERSION]"; echo "Check for updates"; }
|
||||
step_18_alias() { ALIAS="updatecheck"; }
|
||||
step_18_alias() { echo "updatecheck"; }
|
||||
step_18() {
|
||||
shift
|
||||
local isInstalled=
|
||||
@@ -175,12 +175,12 @@ step_20_info() {
|
||||
echo
|
||||
fi
|
||||
}
|
||||
step_20_alias() { ALIAS="backup"; }
|
||||
step_20_alias() { echo "backup"; }
|
||||
step_20() {
|
||||
shift
|
||||
local tempRoot=
|
||||
if [ $CONFIG -eq 0 ] ; then
|
||||
echoerr " [E] No configuration file found"
|
||||
error -e "No configuration file found"
|
||||
return 1
|
||||
fi
|
||||
if [ ! -z $PFA_BACKUP ] ; then
|
||||
@@ -203,7 +203,7 @@ step_20() {
|
||||
step_22_info() {
|
||||
echoinfoArgs "[CUSTOM VERSION]"
|
||||
shift
|
||||
if [ $CONTEXT_EXE -ne 0 ]; then
|
||||
if contextExe; then
|
||||
echoinfo -n "Upgrade to version "
|
||||
if [ -z "$1" ]; then
|
||||
echo -n "$(curl --silent "$latestUrl" | grep -Po '"tag_name": "postfixadmin-\K.*?(?=")')"
|
||||
@@ -215,7 +215,7 @@ step_22_info() {
|
||||
echo "Upgrade to latest or a custom version from github"
|
||||
fi
|
||||
}
|
||||
step_22_alias() { ALIAS="upgrade"; }
|
||||
step_22_alias() { echo "upgrade"; }
|
||||
step_22() {
|
||||
shift # don't need step number
|
||||
local latestVersion=
|
||||
@@ -226,16 +226,16 @@ step_22() {
|
||||
fi
|
||||
|
||||
if [ -z $latestVersion ] ; then
|
||||
echoerr " [E] Cannot determine latest version from github repository"
|
||||
error -e "Cannot determine latest version from github repository"
|
||||
return 1
|
||||
elif [ $QUIET -eq 0 ] ; then
|
||||
elif interactive ; then
|
||||
echo
|
||||
exe read -p "Install $latestVersion to $PFA_SRV_LOC [n]o/(y)es? " answer
|
||||
case $answer in
|
||||
[yY])
|
||||
;;
|
||||
*)
|
||||
echoerr " [I] Upgrade aborted"
|
||||
info -e "Upgrade aborted"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
@@ -245,7 +245,7 @@ step_22() {
|
||||
# Trailing ".0" is removed if exists
|
||||
local isInstalled=$(grep -E "Version ${latestVersion%.0} " "${PFA_SRV_LOC}/CHANGELOG.TXT" >>/dev/null 2>&1 && echo "1" || echo "0")
|
||||
if [ $isInstalled -eq 1 ] ; then
|
||||
echoerr " [E] Version $latestVersion is already installed"
|
||||
error -e "Version $latestVersion is already installed"
|
||||
return 2
|
||||
fi
|
||||
|
||||
@@ -308,7 +308,7 @@ tempDown="/tmp/${toolName}"
|
||||
tempLoc="$tempDown/${toolName}.tar.gz"
|
||||
|
||||
step_23_info() { echo "Clean temporary files: $tempDown"; }
|
||||
step_23_alias() { ALIAS="clean"; }
|
||||
step_23_alias() { echo "clean"; }
|
||||
step_23() {
|
||||
exe rm -rf "$tempDown"
|
||||
}
|
||||
@@ -318,11 +318,11 @@ step_100_info() {
|
||||
echo "Execute $toolName client script"
|
||||
echoinfo "[OPTIONS] are passed on to $toolName-cli unmodified"
|
||||
}
|
||||
step_100_alias() { ALIAS="cli"; }
|
||||
step_100_alias() { echo "cli"; }
|
||||
step_100() {
|
||||
shift
|
||||
exe ${PFA_SRV_LOC}/scripts/$toolName-cli $@
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -16,7 +16,7 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="postgres.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
@@ -24,14 +24,14 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Installing $toolName dependencies"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOption=
|
||||
|
||||
exe apt update
|
||||
endReturn -o $? "Updating apt repositories failed"
|
||||
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOption="-y"
|
||||
else
|
||||
aptOption=""
|
||||
@@ -41,7 +41,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_2_info() { echo "Create postgres database"; }
|
||||
step_2_alias() { ALIAS="createdb"; }
|
||||
step_2_alias() { echo "createdb"; }
|
||||
step_2() {
|
||||
readDatabaseInfos
|
||||
|
||||
@@ -52,7 +52,7 @@ step_2() {
|
||||
}
|
||||
|
||||
step_4_info() { echoinfoArgs "[DATABASE]"; echo "Drop a postgres database"; }
|
||||
step_4_alias() { ALIAS="dropdb"; }
|
||||
step_4_alias() { echo "dropdb"; }
|
||||
step_4() {
|
||||
shift
|
||||
local dbname=$1
|
||||
@@ -65,7 +65,7 @@ step_4() {
|
||||
}
|
||||
|
||||
step_6_info() { echoinfoArgs "[DATABASE]"; echo "Size of a postgres database"; }
|
||||
step_6_alias() { ALIAS="sizedb"; }
|
||||
step_6_alias() { echo "sizedb"; }
|
||||
step_6() {
|
||||
shift
|
||||
local dbname=$1
|
||||
@@ -78,14 +78,14 @@ step_6() {
|
||||
}
|
||||
|
||||
step_8_info() { echo "List available databases"; }
|
||||
step_8_alias() { ALIAS="listdb"; }
|
||||
step_8_alias() { echo "listdb"; }
|
||||
step_8() {
|
||||
exe cd ~postgres
|
||||
exe su ${toolUser} -c "psql -c '\l'"
|
||||
}
|
||||
|
||||
step_10_info() { echoinfoArgs "[DATABASE]"; echo "List all tables of a postgres database"; }
|
||||
step_10_alias() { ALIAS="listtables"; }
|
||||
step_10_alias() { echo "listtables"; }
|
||||
step_10() {
|
||||
shift
|
||||
local dbname=$1
|
||||
@@ -98,7 +98,7 @@ step_10() {
|
||||
}
|
||||
|
||||
step_20_info() { echoinfoArgs "[DATABASE]"; echo "Backup ${toolName} database"; }
|
||||
step_20_alias() { ALIAS="backupdb"; }
|
||||
step_20_alias() { echo "backupdb"; }
|
||||
step_20() {
|
||||
shift
|
||||
local dbname=$1
|
||||
@@ -118,7 +118,7 @@ step_20() {
|
||||
}
|
||||
|
||||
step_22_info() { echo "Postgres database restore"; }
|
||||
step_22_alias() { ALIAS="restoredb"; }
|
||||
step_22_alias() { echo "restoredb"; }
|
||||
step_22() {
|
||||
echo " [I] Postgres database restore procedure"
|
||||
echo "1. Create a empty postgres database first (step 4)"
|
||||
@@ -140,7 +140,7 @@ step_24_info() {
|
||||
echoinfoArgs "[DATABASE]"
|
||||
echo "Clean all ${DELYEAR} backups of a database";
|
||||
}
|
||||
step_24_alias() { ALIAS="backupclean"; }
|
||||
step_24_alias() { echo "backupclean"; }
|
||||
step_24() {
|
||||
shift
|
||||
local DELYEAR=$(($(date +%Y)-2))
|
||||
@@ -169,5 +169,5 @@ readDatabaseInfos() {
|
||||
echo
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -24,10 +24,10 @@ CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
#}
|
||||
|
||||
step_1_info() { echo "Install $toolDeps"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
exe apt update
|
||||
@@ -38,7 +38,7 @@ step_2_info() {
|
||||
echo "Add cron to update whitelist_clients from"
|
||||
echoinfo "$updateUrl"
|
||||
}
|
||||
step_2_alias() { ALIAS="cron"; }
|
||||
step_2_alias() { echo "cron"; }
|
||||
step_2() {
|
||||
addConf -s "$postCron" "$postCronLoc"
|
||||
}
|
||||
@@ -47,7 +47,7 @@ postCron="# -q quiet -N timestamping (overwrite existing file) -O target file
|
||||
01 23 5 * * root /usr/bin/wget -qNO \"$toolWhitelistLoc\" $updateUrl && /usr/sbin/service postgrey restart"
|
||||
|
||||
step_3_info() { echo "Configuration notes"; }
|
||||
step_3_alias() { ALIAS="notes"; }
|
||||
step_3_alias() { echo "notes"; }
|
||||
step_3() {
|
||||
echo "$toolNotes"
|
||||
}
|
||||
@@ -71,10 +71,10 @@ toolNotes="
|
||||
"
|
||||
|
||||
step_10_info() { echo "Restart $toolName"; }
|
||||
step_10_alias() { ALIAS="restart"; }
|
||||
step_10_alias() { echo "restart"; }
|
||||
step_10() {
|
||||
exe service $toolName restart
|
||||
}
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -17,20 +17,20 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return 1
|
||||
dry || return 1
|
||||
fi
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Apt sources.list check and update"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
echo "Make sure you have the \"deb-src\" entry active in your /etc/apt/sources.list"
|
||||
echo "Especially check for \"non-free\""
|
||||
@@ -57,7 +57,7 @@ step_3_info() {
|
||||
echoinfo " raspi: Raspberry Pi OS"
|
||||
echoinfo " debian: Debian"
|
||||
}
|
||||
step_3_alias() { ALIAS="deps"; }
|
||||
step_3_alias() { echo "deps"; }
|
||||
step_3() {
|
||||
shift
|
||||
local lDeps="$toolDeps"
|
||||
@@ -66,7 +66,7 @@ step_3() {
|
||||
lDeps="$toolDepsDebian";;
|
||||
raspi);;
|
||||
*)
|
||||
echoerr " [E] Unrecognized target"
|
||||
error -e "Unrecognized target"
|
||||
return 1;;
|
||||
esac
|
||||
exe apt-get install ${lDeps} $APTOPT
|
||||
@@ -115,17 +115,17 @@ ExecStart=/usr/bin/python \${PYL_INSTALL_DIR}/pyLoadCore.py
|
||||
WantedBy=multi-user.target"
|
||||
|
||||
step_7_info() { echo "Add ufw rules"; }
|
||||
step_7_alias() { ALIAS="ufw"; }
|
||||
step_7_alias() { echo "ufw"; }
|
||||
step_7() {
|
||||
echoseq " [I] Port 9666 needs to be forwarded to the target machine with ssh"
|
||||
echoseq " ssh -L 9666:localhost:9666 user@host -N"
|
||||
info "Port 9666 needs to be forwarded to the target machine with ssh"
|
||||
info " ssh -L 9666:localhost:9666 user@host -N"
|
||||
exe ufw allow in on eth0 to any port 8000 proto tcp comment "pyload webinterface"
|
||||
exe ufw allow in on eth0 to any port 7227 proto tcp comment "pyload remotes"
|
||||
exe ufw allow out on eth0 to 192.168.23.20 port 5222 proto tcp comment "XMPP Connection"
|
||||
}
|
||||
|
||||
step_10_info() { echo "Upgrade to latest version of branch $toolBranch"; }
|
||||
step_10_alias() { ALIAS="upgrade"; }
|
||||
step_10_alias() { echo "upgrade"; }
|
||||
step_10() {
|
||||
exe service $toolName stop
|
||||
exe cd "$PYL_INSTALL_DIR"
|
||||
@@ -134,5 +134,5 @@ step_10() {
|
||||
echo " Do so manually with: service $toolName start"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -13,14 +13,14 @@ osName=
|
||||
distName=
|
||||
RPI_BOOT_CONFIG="/boot/config.txt"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
# Shift away args
|
||||
local lArgs=( "$@" ); evalArgs "${lArgs[@]}"; shift $?
|
||||
# Set download url with specified CPU architecture
|
||||
PIDOWNURL="https://downloads.raspberrypi.org/raspios_lite_${PIARCH}_latest"
|
||||
|
||||
if [ "$(which lsb_release)" == "" ] ; then
|
||||
echoerr " [W] Cannot detect OS. Assuming Ubuntu"
|
||||
warning -e "Cannot detect OS. Assuming Ubuntu"
|
||||
osName="Ubuntu"
|
||||
else
|
||||
osName=$(lsb_release -is)
|
||||
@@ -28,12 +28,12 @@ step_config() {
|
||||
fi
|
||||
|
||||
if [ "$osName" == "" ] ; then
|
||||
echoerr " [W] Error dedecting OS. Assuming Ubuntu"
|
||||
warning -e "Error dedecting OS. Assuming Ubuntu"
|
||||
osName="Ubuntu"
|
||||
fi
|
||||
|
||||
echoseq " Detected OS: $osName $distName"
|
||||
echoseq " Requested CPU Architecture: $PIARCH"
|
||||
info " Detected OS: $osName $distName"
|
||||
info " Requested CPU Architecture: $PIARCH"
|
||||
|
||||
return 0
|
||||
}
|
||||
@@ -80,14 +80,14 @@ step_1_info() {
|
||||
|
||||
echoinfoArgs "[OPTIONS] [SD CARD DEVICE] [HD DEVICE]"
|
||||
echo "Download latest Raspberry Pi OS lite image $PIARCH"
|
||||
if [ $CONTEXT_EXE -ne 0 ]; then
|
||||
if contextExe; then
|
||||
echoinfo "Download URL: $PIDOWNURL"
|
||||
else
|
||||
echoinfo " [OPTIONS]"
|
||||
echoinfo " -a, --arch : armhf (default), arm64"
|
||||
fi
|
||||
}
|
||||
step_1_alias() { ALIAS="setup"; }
|
||||
step_1_alias() { echo "setup"; }
|
||||
step_1() {
|
||||
# Shift away args
|
||||
shift; local lArgs=( "$@" ); evalArgs "${lArgs[@]}"; shift $?
|
||||
@@ -115,9 +115,9 @@ step_2_info() {
|
||||
echoinfoArgs "[OPTIONS] [SD CARD DEVICE]"
|
||||
echo "Write Raspberry Pi OS image to SD card"
|
||||
echoinfo "This operation will delete all data previously on the SD card!"
|
||||
[ $CONTEXT_EXE -ne 0 ] && [ ! -z $1 ] && echoinfo " [SD CARD DEVICE]: $1"
|
||||
contextExe && [ ! -z $1 ] && echoinfo " [SD CARD DEVICE]: $1"
|
||||
}
|
||||
step_2_alias() { ALIAS="writesd"; }
|
||||
step_2_alias() { echo "writesd"; }
|
||||
step_2() {
|
||||
# Shift away args
|
||||
shift; local lArgs=( "$@" ); evalArgs "${lArgs[@]}"; shift $?
|
||||
@@ -151,7 +151,7 @@ step_2() {
|
||||
SDROOT=""
|
||||
|
||||
# TODO ? automatic remount
|
||||
echoerr " [W] Please remove SD now and plug it back in."
|
||||
warning -e "Please remove SD now and plug it back in."
|
||||
exe read -p " Press enter to contiue."
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ step_3_info() {
|
||||
|
||||
echoinfoArgs "[SD CARD DEVICE]"
|
||||
echo "Prepare SD for first run"
|
||||
if [ $CONTEXT_EXE -ne 0 ]; then
|
||||
if contextExe; then
|
||||
[ ! -z $1 ] && echoinfo " [SD CARD DEVICE]: $1"
|
||||
fi
|
||||
}
|
||||
@@ -170,7 +170,7 @@ step_3() {
|
||||
shift; local lArgs=( "$@" ); evalArgs "${lArgs[@]}"; shift $?
|
||||
|
||||
if [ -z $1 ] && [ ! -z $SDDEV ] ; then
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
answer="n"
|
||||
else
|
||||
exe lsblk -p "$SDDEV"
|
||||
@@ -192,7 +192,7 @@ step_3() {
|
||||
endReturn -o $? "SD card device not found"
|
||||
|
||||
if [ ! -w "$SDBOOT" ] ; then
|
||||
echoerr " [E] SD card boot partion not writeable"
|
||||
error -e "SD card boot partion not writeable"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -212,12 +212,12 @@ step_4_info() {
|
||||
|
||||
echoinfoArgs "[SD CARD DEVICE] [HD DEVICE]"
|
||||
echo "Prepare SD card to boot from hard disk"
|
||||
if [ $CONTEXT_EXE -ne 0 ]; then
|
||||
if contextExe; then
|
||||
[ ! -z $1 ] && echoinfo " [SD CARD DEVICE]: $1"
|
||||
[ ! -z $2 ] && echoinfo " [HD DEVICE]: $2"
|
||||
fi
|
||||
}
|
||||
step_4_alias() { ALIAS="hdboot"; }
|
||||
step_4_alias() { echo "hdboot"; }
|
||||
step_4() {
|
||||
# Shift away args
|
||||
shift; local lArgs=( "$@" ); evalArgs "${lArgs[@]}"; shift $?
|
||||
@@ -264,7 +264,7 @@ step_4() {
|
||||
echo " [I] Resize root partion of SD: ${SDROOT} "
|
||||
step resizesd "$SDDEV"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echoerr " [W] Something seems to have failed during resize"
|
||||
warning -e "Something seems to have failed during resize"
|
||||
else
|
||||
# Disable init script to resize SD
|
||||
echo -n " [I] remove \"init=\" part from $SDBOOT/cmdline.txt.sd"
|
||||
@@ -284,7 +284,7 @@ step_5_info() {
|
||||
echoinfoArgs "[SD CARD DEVICE] [HD DEVICE]"
|
||||
echo "Prepare HD for boot (TODO)"
|
||||
|
||||
if [ $CONTEXT_EXE -ne 0 ]; then
|
||||
if contextExe; then
|
||||
[ ! -z $1 ] && echoinfo " [SD CARD DEVICE]: $1"
|
||||
[ ! -z $2 ] && echoinfo " [HD DEVICE]: $2"
|
||||
fi
|
||||
@@ -294,7 +294,7 @@ step_5() {
|
||||
shift; local lArgs=( "$@" ); evalArgs "${lArgs[@]}"; shift $?
|
||||
|
||||
#TODO
|
||||
echoerr " [E] Not ready yet...TODO"
|
||||
error -e "Not ready yet...TODO"
|
||||
#return 1
|
||||
read_sd_dev "$1"
|
||||
endReturn -o $? "SD detection error $?"
|
||||
@@ -355,7 +355,7 @@ read_sd_dev() {
|
||||
fi
|
||||
|
||||
if [ ! -b "$SDDEV" ] ; then
|
||||
echoerr " [I] $SDDEV not a block device"
|
||||
info -e "$SDDEV not a block device"
|
||||
SDDEV=
|
||||
return 1
|
||||
fi
|
||||
@@ -423,17 +423,17 @@ read_hd_dev() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Disable swap file and remove it"; }
|
||||
step_20_alias() { ALIAS="disable_swap"; }
|
||||
step_20_alias() { echo "disable_swap"; }
|
||||
step_20() {
|
||||
exe swapoff -a
|
||||
exe systemctl disable dphys-swapfile
|
||||
exe rm -rf "$rpiSwapFile"
|
||||
echoerr " [W] Reboot to apply changes"
|
||||
if [ $QUIET -eq 0 ] ; then
|
||||
warning -e "Reboot to apply changes"
|
||||
if interactive ; then
|
||||
exe read -p " Reboot now ([n]/y)? " answer
|
||||
case $answer in
|
||||
[yY])
|
||||
echoerr " [I] Rebooting now ..."
|
||||
info -e "Rebooting now ..."
|
||||
exe reboot
|
||||
;;
|
||||
*)
|
||||
@@ -444,12 +444,12 @@ step_20() {
|
||||
rpiSwapFile="/var/swap"
|
||||
|
||||
step_22_info() { echoinfoArgs "[SD CARD DEVICE]"; echo "Resize second SD card partition"; }
|
||||
step_22_alias() { ALIAS="resizesd"; }
|
||||
step_22_alias() { echo "resizesd"; }
|
||||
step_22() {
|
||||
shift
|
||||
read_sd_dev "$1"
|
||||
if [ -z $SDDEV ] || [ "$SDDEV" = "" ] || [ "$SDROOT" == "/" ] ; then
|
||||
echoerr " [E] No SD found"
|
||||
error -e "No SD found"
|
||||
return 1
|
||||
fi
|
||||
echo " [I] Device to be resized: $SDROOTDEV"
|
||||
@@ -477,7 +477,7 @@ step_24_info() {
|
||||
echoinfo " [OPTION]"
|
||||
echoinfo " -p : Turn off permanentely (/etc/rc.local)"
|
||||
}
|
||||
step_24_alias() { ALIAS="disable_powerled"; }
|
||||
step_24_alias() { echo "disable_powerled"; }
|
||||
step_24() {
|
||||
exep "${ledOffCmd}"
|
||||
if [ ! -z "$2" ] && [ "$2" == "-p" ] ; then
|
||||
@@ -497,13 +497,13 @@ ledPowerBright="/sys/class/leds/led1/brightness"
|
||||
ledOffCmd="sudo sh -c 'echo 0 > ${ledPowerBright}'"
|
||||
|
||||
step_26_info() { echo "Restart network without reboot"; }
|
||||
step_26_alias() { ALIAS="netrestart"; }
|
||||
step_26_alias() { echo "netrestart"; }
|
||||
step_26() {
|
||||
exep "sudo ip link set eth0 down && sudo ip link set eth0 up"
|
||||
}
|
||||
|
||||
step_28_info() { echo "Disable bluetooth"; }
|
||||
step_28_alias() { ALIAS="disable_bluetooth"; }
|
||||
step_28_alias() { echo "disable_bluetooth"; }
|
||||
step_28() {
|
||||
checkBootConfig "$RPI_CONFIG_DTOVERLAY" "$RPI_CONF_DI_BLUETOOTH"
|
||||
[ $? -eq 0 ] && endReturn -o 1 "Bluetooth already disabled"
|
||||
@@ -520,26 +520,26 @@ step_29() {
|
||||
exe systemctl disable bluealsa.service
|
||||
exe systemctl disable bluetooth.service
|
||||
|
||||
echoseq " [I] Consider uninstalling bluetooth software:"
|
||||
echoseq "apt purge --autoremove -y bluez"
|
||||
echoseq
|
||||
echoseq " [W] Reboot to make changes active"
|
||||
info "Consider uninstalling bluetooth software:"
|
||||
info "apt purge --autoremove -y bluez"
|
||||
info
|
||||
warning "Reboot to make changes active"
|
||||
}
|
||||
|
||||
|
||||
step_31_info() { echo "Disable Wifi"; }
|
||||
step_31_alias() { ALIAS="disable_wifi"; }
|
||||
step_31_alias() { echo "disable_wifi"; }
|
||||
step_31() {
|
||||
checkBootConfig "$RPI_CONFIG_DTOVERLAY" "$RPI_CONF_DI_WIFI"
|
||||
[ $? -eq 0 ] && endReturn -o 1 "Wifi already disabled"
|
||||
|
||||
addConf -a "${RPI_CONFIG_DTOVERLAY}=$RPI_CONF_DI_WIFI" "$RPI_BOOT_CONFIG"
|
||||
|
||||
echoseq " [W] Reboot to make changes active"
|
||||
warning "Reboot to make changes active"
|
||||
}
|
||||
|
||||
step_33_info() { echo "Disable HDMI"; }
|
||||
step_33_alias() { ALIAS="disable_hdmi"; }
|
||||
step_33_alias() { echo "disable_hdmi"; }
|
||||
step_33() {
|
||||
checkBootConfig "$RPI_CONFIG_HDMI_BLANK" "$RPI_CONF_DI_HDMI"
|
||||
[ $? -eq 0 ] && endReturn -o 1 "HDMI already disabled"
|
||||
@@ -563,7 +563,7 @@ step_34() {
|
||||
exep "echo \"${tvserviceOffCmd}\" >> $startScript"
|
||||
exep "echo -e \"\nexit 0\" >> $startScript"
|
||||
|
||||
echoseq " [W] Reboot to make changes active"
|
||||
warning "Reboot to make changes active"
|
||||
}
|
||||
tvserviceBin="/usr/bin/tvservice"
|
||||
tvserviceOffCmd="${tvserviceBin} -o'"
|
||||
@@ -577,9 +577,9 @@ checkBootConfig() {
|
||||
return $?
|
||||
}
|
||||
|
||||
step_100_alias() { ALIAS="notes"; }
|
||||
step_100_alias() { echo "notes"; }
|
||||
step_100() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_EOF
|
||||
# Initial configuration steps
|
||||
|
||||
@@ -614,5 +614,5 @@ step_100() {
|
||||
NOTES_EOF
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -12,7 +12,7 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
@@ -20,10 +20,10 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
|
||||
@@ -32,7 +32,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_2_info() { echo "Installation notes"; }
|
||||
step_2_alias() { ALIAS="notes"; }
|
||||
step_2_alias() { echo "notes"; }
|
||||
step_2() {
|
||||
cat <<NOTES_EOF
|
||||
# For php applications make sure php-redis is installed
|
||||
@@ -70,7 +70,7 @@ step_10_info() {
|
||||
echoinfo " [CLI COMMAND]"
|
||||
echoinfo " e.g. info"
|
||||
}
|
||||
step_10_alias() { ALIAS="cli"; }
|
||||
step_10_alias() { echo "cli"; }
|
||||
step_10() {
|
||||
shift
|
||||
local cliCmd="$@"
|
||||
@@ -82,5 +82,5 @@ step_10() {
|
||||
fi
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -16,7 +16,7 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## use sequencer api:
|
||||
initSeqConfig -t "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $CONFIG -eq 0 ] ; then
|
||||
@@ -25,10 +25,10 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
|
||||
@@ -53,7 +53,7 @@ step_2() {
|
||||
|
||||
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
|
||||
then
|
||||
echoerr ' [E] Invalid installer checksum'
|
||||
error -e ' [E] Invalid installer checksum'
|
||||
exe rm composer-setup.php
|
||||
return 1
|
||||
fi
|
||||
@@ -65,7 +65,7 @@ step_2() {
|
||||
}
|
||||
|
||||
step_3_info() { echo "Configure $toolName"; }
|
||||
step_3_alias() { ALIAS="config"; }
|
||||
step_3_alias() { echo "config"; }
|
||||
step_3() {
|
||||
echo " [I] Recommended composer packages to be added to \"require\" section:"
|
||||
echo ' "melanie2/mobile": "*",'
|
||||
@@ -89,9 +89,9 @@ step_3() {
|
||||
}
|
||||
|
||||
step_10_info() { echo "Configuration notes"; }
|
||||
step_10_alias() { ALIAS="notes"; }
|
||||
step_10_alias() { echo "notes"; }
|
||||
step_10() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_END
|
||||
# smtp port if missing after installation
|
||||
[$RC_LOC/config/config.inc.php]
|
||||
@@ -126,9 +126,9 @@ NOTES_END
|
||||
}
|
||||
|
||||
step_12_info() { echo "Troubleshooting"; }
|
||||
step_12_alias() { ALIAS="trouble"; }
|
||||
step_12_alias() { echo "trouble"; }
|
||||
step_12() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<TROUBLE_END
|
||||
# On composer update errors.
|
||||
|
||||
@@ -148,10 +148,10 @@ step_20_info() {
|
||||
echo
|
||||
fi
|
||||
}
|
||||
step_20_alias() { ALIAS="backup"; }
|
||||
step_20_alias() { echo "backup"; }
|
||||
step_20() {
|
||||
if [ $CONFIG -eq 0 ] ; then
|
||||
echoerr " [E] No configuration file found"
|
||||
error -e "No configuration file found"
|
||||
return 1
|
||||
fi
|
||||
if [ ! -z $RC_BACKUP ] ; then
|
||||
@@ -168,7 +168,7 @@ step_22_info() {
|
||||
echoinfoArgs "[CUSTOM VERSION]"
|
||||
echo "Upgrade installation to \"latest\" from github if [CUSTOM_VERSION] is empty"
|
||||
}
|
||||
step_22_alias() { ALIAS="upgrade"; }
|
||||
step_22_alias() { echo "upgrade"; }
|
||||
step_22() {
|
||||
shift # don't need step number
|
||||
local currentVersion=
|
||||
@@ -180,9 +180,9 @@ step_22() {
|
||||
fi
|
||||
|
||||
if [ -z $latestVersion ] ; then
|
||||
echoerr " [E] Cannot determine latest version from github repository"
|
||||
error -e "Cannot determine latest version from github repository"
|
||||
return 1
|
||||
elif [ $QUIET -eq 0 ] ; then
|
||||
elif interactive ; then
|
||||
echo
|
||||
currentVersion="$(grep -Po ' \| Version \K.*?(?= )' $RC_LOC/index.php)"
|
||||
exe read -p "Install $latestVersion over $currentVersion to $RC_LOC [n]o/(y)es? " answer
|
||||
@@ -190,7 +190,7 @@ step_22() {
|
||||
[yY])
|
||||
;;
|
||||
*)
|
||||
echoerr " [I] Upgrade aborted"
|
||||
info -e "Upgrade aborted"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
@@ -198,7 +198,7 @@ step_22() {
|
||||
|
||||
local isInstalled=$(grep -E "RELEASE $latestVersion" "${RC_LOC}/CHANGELOG" >>/dev/null && echo "1" || echo "0")
|
||||
if [ $isInstalled -eq 1 ] ; then
|
||||
echoerr " [E] Version $latestVersion is already installed"
|
||||
error -e "Version $latestVersion is already installed"
|
||||
return 2
|
||||
fi
|
||||
|
||||
@@ -211,7 +211,7 @@ step_22() {
|
||||
}
|
||||
|
||||
step_23_info() { echo "Post upgrade procedure"; }
|
||||
step_23_alias() { ALIAS="postupgrade"; }
|
||||
step_23_alias() { echo "postupgrade"; }
|
||||
step_23() {
|
||||
exe cd "$RC_LOC"
|
||||
echo " [I] Starting post update procedure"
|
||||
@@ -254,5 +254,5 @@ downloadLatest() {
|
||||
tempDown="/tmp/roundcube"
|
||||
tempLoc="$tempDown/rc.tar.gz"
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -17,21 +17,21 @@ CONFIG_RNGD="$WDIR/${toolName}/10-rngd.conf"
|
||||
CONFIG_REMOTE="$WDIR/${toolName}/90-remote.conf"
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install "$toolName"
|
||||
}
|
||||
|
||||
step_2_info() { echo "Check configuration"; }
|
||||
step_2_alias() { ALIAS="checkconf"; }
|
||||
step_2_alias() { echo "checkconf"; }
|
||||
step_2() {
|
||||
exe rsyslogd -N 1 -f "$toolConfig"
|
||||
endReturn -o $? "Invalid $toolName configuration"
|
||||
}
|
||||
|
||||
step_10_info() { echo "Reduce snmpd syslog messages"; }
|
||||
step_10_alias() { ALIAS="snmpd"; }
|
||||
step_10_alias() { echo "snmpd"; }
|
||||
step_10() {
|
||||
addConf -s -f "$CONFIG_SNMP" "$CONFIG_SNMP_DEST"
|
||||
endReturn -o $?
|
||||
@@ -42,7 +42,7 @@ step_10() {
|
||||
CONFIG_SNMP_DEST="/etc/rsyslog.d/$(basename $CONFIG_SNMP)"
|
||||
|
||||
step_12_info() { echo "Reduce cron syslog messages"; }
|
||||
step_12_alias() { ALIAS="cron"; }
|
||||
step_12_alias() { echo "cron"; }
|
||||
step_12() {
|
||||
addConf -s -f "$CONFIG_CRON" "$CONFIG_CRON_DEST"
|
||||
endReturn -o $?
|
||||
@@ -53,7 +53,7 @@ step_12() {
|
||||
CONFIG_CRON_DEST="/etc/rsyslog.d/$(basename $CONFIG_CRON)"
|
||||
|
||||
step_14_info() { echo "Reduce rngd syslog messages"; }
|
||||
step_14_alias() { ALIAS="rngd"; }
|
||||
step_14_alias() { echo "rngd"; }
|
||||
step_14() {
|
||||
addConf -s -f "$CONFIG_RNGD" "$CONFIG_RNGD_DEST"
|
||||
endReturn -o $?
|
||||
@@ -67,7 +67,7 @@ step_16_info() {
|
||||
echoinfoArgs "<REMOTE_IP:PORT>"
|
||||
echo "Send syslog messages to remote syslog server"
|
||||
}
|
||||
step_16_alias() { ALIAS="remote"; }
|
||||
step_16_alias() { echo "remote"; }
|
||||
step_16() {
|
||||
local rex='^[0-9\.]+\:[0-9]+$'
|
||||
local remoteHost=""
|
||||
@@ -75,7 +75,7 @@ step_16() {
|
||||
if [[ "$2" =~ $rex ]] ; then
|
||||
remoteHost=$2
|
||||
else
|
||||
echoerr " [E] No valid IP:PORT detected: $2"
|
||||
error -e "No valid IP:PORT detected: $2"
|
||||
return 1
|
||||
fi
|
||||
addConf -s -f "$CONFIG_REMOTE" "$CONFIG_REMOTE_DEST"
|
||||
@@ -89,15 +89,15 @@ step_16() {
|
||||
CONFIG_REMOTE_DEST="/etc/rsyslog.d/$(basename $CONFIG_REMOTE)"
|
||||
|
||||
step_17_info() { echo "Add ufw rules for sending to remote syslog. Port 514/tcp"; }
|
||||
step_17_alias() { ALIAS="ufw"; }
|
||||
step_17_alias() { echo "ufw"; }
|
||||
step_17() {
|
||||
exe ufw allow out on eth0 to any port 514 proto tcp comment "syslog remote"
|
||||
}
|
||||
|
||||
step_30_info() { echo "Activating syslog server"; }
|
||||
step_30_alias() { ALIAS="server"; }
|
||||
step_30_alias() { echo "server"; }
|
||||
step_30() {
|
||||
outColor green
|
||||
color green
|
||||
cat << SERVER_EOF
|
||||
|
||||
# Uncomment the chapter
|
||||
@@ -106,5 +106,5 @@ step_30() {
|
||||
SERVER_EOF
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
126
seqs/snmp.sh
126
seqs/snmp.sh
@@ -6,9 +6,9 @@ toolConfigLoc="/etc/snmp"
|
||||
toolConfig="${toolConfigLoc}/snmpd.conf"
|
||||
toolSysUser="Debian-snmp"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
@@ -16,10 +16,10 @@ step_config() {
|
||||
|
||||
|
||||
step_1_info() { echo "Install packages for $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
if [ $QUIET != 0 ]; then
|
||||
if quiet; then
|
||||
exe apt-get -qq install $toolName
|
||||
else
|
||||
exe apt install $toolName
|
||||
@@ -32,23 +32,23 @@ step_2_info() {
|
||||
echo "Setup snmp v3 access"
|
||||
echoinfo " -s : Stop after creating authentication entry"
|
||||
}
|
||||
step_2_alias() { ALIAS="v3access"; }
|
||||
step_2_alias() { echo "v3access"; }
|
||||
step_2() {
|
||||
#
|
||||
## Create authentication entry
|
||||
exep "cat \"$v3AuthLoc\" | grep -e '^\s*usmUser'"
|
||||
if [ "$?" == "0" ]; then
|
||||
echoseq
|
||||
info
|
||||
|
||||
exe read -p "User entry found. Continue: y/n(default)? " answer
|
||||
case $answer in
|
||||
[yY])
|
||||
echoseq
|
||||
echoseq "Continuing installation..."
|
||||
info
|
||||
info "Continuing installation..."
|
||||
;;
|
||||
*)
|
||||
echoseq
|
||||
echoseq "Installation aborted"
|
||||
info
|
||||
info "Installation aborted"
|
||||
return 1;
|
||||
;;
|
||||
esac
|
||||
@@ -56,14 +56,14 @@ step_2() {
|
||||
|
||||
read -p "SNMPv3 Username: " v3User
|
||||
read -p "SNMPv3 Password: " v3Pass
|
||||
echoseq
|
||||
info
|
||||
read -p "Repeat Password: " v3Pass2
|
||||
|
||||
if [ "$v3Pass" != "$v3Pass2" ] ; then
|
||||
echoerr " [E] Password mismatch"
|
||||
error -e "Password mismatch"
|
||||
return 1
|
||||
fi
|
||||
echoseq
|
||||
info
|
||||
|
||||
exe service snmpd stop
|
||||
|
||||
@@ -74,7 +74,7 @@ step_2() {
|
||||
|
||||
shift
|
||||
if [ ! -z $1 ] && [ "$1" == "-s" ] ; then
|
||||
echoseq " [I] Stop after creating authentication config"
|
||||
info "Stop after creating authentication config"
|
||||
exe service snmpd start
|
||||
return 0
|
||||
fi
|
||||
@@ -105,7 +105,7 @@ step_5_info() {
|
||||
echo "Add ufw rules for port 161 udp"
|
||||
echoinfo " [INTERFACE] (default: eth0)"
|
||||
}
|
||||
step_5_alias() { ALIAS="ufw"; }
|
||||
step_5_alias() { echo "ufw"; }
|
||||
step_5() {
|
||||
shift
|
||||
local lInterface="eth0"
|
||||
@@ -118,7 +118,7 @@ step_5() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Extend $toolName for Raspberry Pi"; }
|
||||
step_20_alias() { ALIAS="raspberry"; }
|
||||
step_20_alias() { echo "raspberry"; }
|
||||
step_20() {
|
||||
checkExtend raspberry
|
||||
if [ "$?" != "0" ]; then
|
||||
@@ -143,7 +143,7 @@ rpiSudoersLoc="/etc/sudoers.d/snmprpi"
|
||||
rpiSudoersContent="${toolSysUser} ALL=(ALL) NOPASSWD: /etc/snmp/raspberry.sh, /usr/bin/vcgencmd*"
|
||||
|
||||
step_22_info() { echo "Extend $toolName with OS update availablity"; }
|
||||
step_22_alias() { ALIAS="osupdate"; }
|
||||
step_22_alias() { echo "osupdate"; }
|
||||
step_22() {
|
||||
checkExtend osupdate
|
||||
if [ "$?" != "0" ]; then
|
||||
@@ -167,21 +167,21 @@ osUpdateCron="/etc/cron.d/aptUpdate"
|
||||
osUpdateCronContent="22 */6 * * * root /usr/bin/apt-get -qq update"
|
||||
|
||||
step_25_info() { echo "Prepare nginx to provide php-fpm status to $toolName"; }
|
||||
step_25_alias() { ALIAS="phpfpm"; }
|
||||
step_25_alias() { echo "phpfpm"; }
|
||||
step_25() {
|
||||
echo -e "\n [!] Please add the following to your default server:\n"
|
||||
echo "$phpFpmStatusNginx"
|
||||
echo
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
answer=n
|
||||
else
|
||||
exe read -p "Open new shell to configure y/[n]? " answer
|
||||
fi
|
||||
case $answer in
|
||||
[yY])
|
||||
echoseq " [I] Opening interactive shell. Type \"exit\" to return to this script."
|
||||
info "Opening interactive shell. Type \"exit\" to return to this script."
|
||||
exe bash -i
|
||||
echoseq " [I] Interactive shell ended. Continuing with $0."
|
||||
info "Interactive shell ended. Continuing with $0."
|
||||
exe nginx -t
|
||||
endReturn -o $? "Nginx configuration error"
|
||||
|
||||
@@ -206,7 +206,7 @@ fastcgi_pass unix:/var/run/php/php${phpVersionStr}-fpm.sock;
|
||||
}"
|
||||
|
||||
step_26_info() { echo "Prepare php config for php-fpm status"; }
|
||||
step_26_alias() { ALIAS="phpfpm_config"; }
|
||||
step_26_alias() { echo "phpfpm_config"; }
|
||||
step_26() {
|
||||
exe sed -i "s/^;\(pm\.status_path\)/\1/" "$phpPoolConfigLoc"
|
||||
exe php-fpm${phpVersionStr} -t
|
||||
@@ -218,7 +218,7 @@ phpConfigDir="/etc/php/${phpVersionStr}"
|
||||
phpPoolConfigLoc="${phpConfigDir}/fpm/pool.d/www.conf"
|
||||
|
||||
step_27_info() { echo "Extend $toolName with parsing of php-fpm status"; }
|
||||
step_27_alias() { ALIAS="phpfpm_extend"; }
|
||||
step_27_alias() { echo "phpfpm_extend"; }
|
||||
step_27() {
|
||||
checkExtend phpfpmsp
|
||||
if [ "$?" != "0" ]; then
|
||||
@@ -236,21 +236,21 @@ step_27() {
|
||||
phpfpmExtendLoc="${toolConfigLoc}/phpfpmsp"
|
||||
|
||||
step_29_info() { echo "Prepare nginx to provide status to $toolName"; }
|
||||
step_29_alias() { ALIAS="nginx"; }
|
||||
step_29_alias() { echo "nginx"; }
|
||||
step_29() {
|
||||
echoseq -e "\n [!] Please add the following to your default server:\n"
|
||||
echoseq "$nginxStatus"
|
||||
echoseq
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
info -e "\n [!] Please add the following to your default server:\n"
|
||||
info "$nginxStatus"
|
||||
info
|
||||
if quiet ; then
|
||||
answer=n
|
||||
else
|
||||
exe read -p "Open new shell to configure y/[n]? " answer
|
||||
fi
|
||||
case $answer in
|
||||
[yY])
|
||||
echoseq " [I] Opening interactive shell. Type \"exit\" to return to this script."
|
||||
info "Opening interactive shell. Type \"exit\" to return to this script."
|
||||
exe bash -i
|
||||
echoseq " [I] Interactive shell ended. Continuing with $0."
|
||||
info "Interactive shell ended. Continuing with $0."
|
||||
exe nginx -t
|
||||
endReturn -o $? "Nginx configuration error"
|
||||
|
||||
@@ -270,7 +270,7 @@ deny all;
|
||||
}
|
||||
"
|
||||
step_30_info() { echo "Extend $toolName with parsing of nginx status"; }
|
||||
step_30_alias() { ALIAS="nginx_extend"; }
|
||||
step_30_alias() { echo "nginx_extend"; }
|
||||
step_30() {
|
||||
checkExtend nginx
|
||||
if [ "$?" != "0" ]; then
|
||||
@@ -289,10 +289,10 @@ nginxExtendLoc="${toolConfigLoc}/nginx"
|
||||
|
||||
# postfix
|
||||
step_32_info() { echo "Extend for postfix detailed and queue"; }
|
||||
step_32_alias() { ALIAS="postfix"; }
|
||||
step_32_alias() { echo "postfix"; }
|
||||
step_32() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
|
||||
@@ -314,11 +314,11 @@ step_33() {
|
||||
exe chown root:$toolSysUser "$postfixCacheLoc"
|
||||
exe chmod 770 "$postfixCacheLoc"
|
||||
|
||||
echoseq " [I] Create symlink /var/log/maillog which is used by postfixdetailed"
|
||||
info "Create symlink /var/log/maillog which is used by postfixdetailed"
|
||||
exe ln -fs /var/log/mail.log /var/log/maillog
|
||||
|
||||
echoseq " [I] Run /etc/snmp/postfixdetailed to create the initial cache file"
|
||||
echoseq " so you don't end up with some crazy initial starting value."
|
||||
info "Run /etc/snmp/postfixdetailed to create the initial cache file"
|
||||
info " so you don't end up with some crazy initial starting value."
|
||||
exe sudo -u $toolSysUser "$postfixScript"
|
||||
}
|
||||
postfixCacheLoc="/var/cache/postfixdetailed"
|
||||
@@ -328,9 +328,9 @@ postfixQueuesExtendLoc="${toolConfigLoc}/postfix-queues"
|
||||
step_34_info() { echo "Create sudoers file for postfix scripts"; }
|
||||
step_34() {
|
||||
addConf -s "$postfixSudoersContent" "$postfixSudoersLoc"
|
||||
echoseq " [I] Changing ${postfixQueuesExtendLoc} to add sudo for qshape"
|
||||
info "Changing ${postfixQueuesExtendLoc} to add sudo for qshape"
|
||||
exe sed -i -E "s/\`qshape/\`sudo qshape/" "${postfixQueuesExtendLoc}"
|
||||
echoseq " [W] Reboot may be required to make these changes active"
|
||||
warning "Reboot may be required to make these changes active"
|
||||
}
|
||||
postfixSudoersLoc="/etc/sudoers.d/snmppostfix"
|
||||
postfixSudoersContent="${toolSysUser} ALL=(ALL) NOPASSWD: /usr/sbin/qshape"
|
||||
@@ -339,12 +339,12 @@ step_35_info() { echo "Create postfix extends (postfixdetailed and postfix-queue
|
||||
step_35() {
|
||||
checkExtend postfix-queues
|
||||
if [ $? -eq 0 ]; then
|
||||
echoseq " [I] Create postfix-queues extend"
|
||||
info "Create postfix-queues extend"
|
||||
addConf -a "extend mailq ${postfixQueuesExtendLoc}" "$toolConfig"
|
||||
fi
|
||||
checkExtend postfixdetailed
|
||||
if [ $? -eq 0 ]; then
|
||||
echoseq " [I] Create postfixdetailed extend"
|
||||
info "Create postfixdetailed extend"
|
||||
addConf -a "extend postfixdetailed ${postfixScript}" "$toolConfig"
|
||||
fi
|
||||
|
||||
@@ -353,10 +353,10 @@ step_35() {
|
||||
|
||||
#fail2ban
|
||||
step_37_info() { echo "Extend for fail2ban jail information"; }
|
||||
step_37_alias() { ALIAS="fail2ban"; }
|
||||
step_37_alias() { echo "fail2ban"; }
|
||||
step_37(){
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
|
||||
@@ -367,7 +367,7 @@ step_37(){
|
||||
|
||||
checkExtend fail2ban
|
||||
if [ $? -eq 0 ]; then
|
||||
echoseq " [I] Create fail2ban extend"
|
||||
info "Create fail2ban extend"
|
||||
addConf -a "extend fail2ban ${fail2banExtendLoc} -c" "$toolConfig"
|
||||
fi
|
||||
|
||||
@@ -385,7 +385,7 @@ fail2banCron="# Update cache for faster fail2ban polling
|
||||
*/3 * * * * root ${fail2banExtendLoc} -u"
|
||||
|
||||
step_40_info() { echo "Create linux distribution detection extend (distro)"; }
|
||||
step_40_alias() { ALIAS="distro"; }
|
||||
step_40_alias() { echo "distro"; }
|
||||
step_40() {
|
||||
checkExtend distro
|
||||
if [ $? -ne 0 ]; then
|
||||
@@ -396,7 +396,7 @@ step_40() {
|
||||
endReturn -o $? "Download distro detection script failed"
|
||||
exe chmod +x "$distroExtendLoc"
|
||||
|
||||
echoseq " [I] Create distro extend"
|
||||
info "Create distro extend"
|
||||
addConf -a "extend distro ${distroExtendLoc}" "$toolConfig"
|
||||
|
||||
exe service snmpd restart
|
||||
@@ -408,7 +408,7 @@ step_42_info() {
|
||||
echo "Gather dhcp information from a dhcpd lease file"
|
||||
echoinfo "pi-hole lease file not supported"
|
||||
}
|
||||
step_42_alias() { ALIAS="dhcp"; }
|
||||
step_42_alias() { echo "dhcp"; }
|
||||
step_42() {
|
||||
local locExtName="dhcpstats"
|
||||
local locExtUrl="https://github.com/librenms/librenms-agent/raw/master/snmp/dhcp.py"
|
||||
@@ -424,10 +424,10 @@ step_42() {
|
||||
endReturn -o $? "Download $locExtName script failed"
|
||||
exe chmod +x "$locExtLoc"
|
||||
|
||||
echoseq " [I] Create extend for $locExtName"
|
||||
info "Create extend for $locExtName"
|
||||
addConf -a "extend $locExtName ${locExtLoc}" "$toolConfig"
|
||||
|
||||
echoseq " [I] Create config for $locExtName"
|
||||
info "Create config for $locExtName"
|
||||
addConf -s "$dhcpExtendConfig" "$dhcpExtendConfigLoc"
|
||||
|
||||
echo " [W] Adapt config $dhcpExtendConfigLoc manually and restart snmpd"
|
||||
@@ -437,7 +437,7 @@ dhcpExtendConfig="{\"leasefile\": \"/var/lib/dhcp/dhcpd.leases\"
|
||||
}"
|
||||
|
||||
step_44_info() { echo "Extend unbound stats"; }
|
||||
step_44_alias() { ALIAS="unbound"; }
|
||||
step_44_alias() { echo "unbound"; }
|
||||
step_44() {
|
||||
local locExtName="unbound"
|
||||
local locExtUrl="https://github.com/librenms/librenms-agent/raw/master/snmp/unbound"
|
||||
@@ -450,10 +450,10 @@ step_44() {
|
||||
endReturn -o $? "Download $locExtName script failed"
|
||||
exe chmod +x "$locExtLoc"
|
||||
|
||||
echoseq " [I] Create extend for $locExtName"
|
||||
info "Create extend for $locExtName"
|
||||
addConf -a "extend $locExtName /usr/bin/sudo ${locExtLoc}" "$toolConfig"
|
||||
|
||||
echoseq " [I] Create config for $locExtName"
|
||||
info "Create config for $locExtName"
|
||||
addConf -s "$unboundExtendConfig" "$unboundExtendConfigLoc"
|
||||
|
||||
exe systemctl restart unbound.service
|
||||
@@ -480,7 +480,7 @@ unboundSudoerLoc="/etc/sudoers.d/snmpunbound"
|
||||
unboundSudoer="Debian-snmp ALL=(ALL) NOPASSWD: /usr/sbin/unbound-control, ${toolConfigLoc}/unbound"
|
||||
|
||||
step_46_info() { echo "Extend pi-hole stats"; }
|
||||
step_46_alias() { ALIAS="pihole"; }
|
||||
step_46_alias() { echo "pihole"; }
|
||||
step_46() {
|
||||
local locExtName="pi-hole"
|
||||
local locExtUrl="https://github.com/librenms/librenms-agent/raw/master/snmp/pi-hole"
|
||||
@@ -495,19 +495,19 @@ step_46() {
|
||||
endReturn -o $? "Download $locExtName script failed"
|
||||
exe chmod +x "$locExtLoc"
|
||||
|
||||
echoseq " [I] Create extend for $locExtName"
|
||||
info "Create extend for $locExtName"
|
||||
addConf -a "extend $locExtName ${locExtLoc}" "$toolConfig"
|
||||
|
||||
if [ $QUIET -ne 0 ]; then
|
||||
outColor red
|
||||
if quiet; then
|
||||
color red
|
||||
echo -e " [W] Check the following in the extend script and restart snmpd:\n"
|
||||
else
|
||||
echo " [I] Check the follwing in the extend script:"
|
||||
fi
|
||||
echo "(API_AUTH_KEY) Add your pi-hole API key"
|
||||
echo " (API_URL) and check the API URL"
|
||||
outColor
|
||||
if [ $QUIET -eq 0 ]; then
|
||||
color
|
||||
if interactive; then
|
||||
exe read -p "Hit Enter to continue..."
|
||||
exe vi "$locExtLoc"
|
||||
exe systemctl restart snmpd.service
|
||||
@@ -516,9 +516,9 @@ step_46() {
|
||||
piholeDeps="jq"
|
||||
|
||||
step_100_info() { echo "Notes"; }
|
||||
step_100_alias() { ALIAS="notes"; }
|
||||
step_100_alias() { echo "notes"; }
|
||||
step_100() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_END
|
||||
# Reduce log level of snmpd
|
||||
|
||||
@@ -565,18 +565,18 @@ NOTES_END
|
||||
|
||||
checkExtend() {
|
||||
# adding dry run output for clarification
|
||||
if [ $DRY -ne 0 ] ; then
|
||||
echoseq " [I] check if \"extend ${1}\" exists..dry-run"
|
||||
if dry ; then
|
||||
info "check if \"extend ${1}\" exists..dry-run"
|
||||
fi
|
||||
|
||||
exep "cat \"$toolConfig\" | grep -e '^\s*extend\s\+${1}' >>/dev/null 2>&1"
|
||||
# Only warn if entry exists and dry-run is not seleted
|
||||
if [ $? -eq 0 ] && [ $DRY -eq 0 ] ; then
|
||||
if [ $? -eq 0 ] && ! dry ; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -26,10 +26,10 @@ step_1_info() {
|
||||
echo "Install packages: $toolDeps"
|
||||
echoinfo "May take a long time"
|
||||
}
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
exe apt update
|
||||
@@ -37,16 +37,16 @@ step_1() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "List spam/ham counts"; }
|
||||
step_20_alias() { ALIAS="list"; }
|
||||
step_20_alias() { echo "list"; }
|
||||
step_20() {
|
||||
exe mysql -D $SA_BAYES_DBNAME -e 'select username,spam_count,ham_count from bayes_vars;'
|
||||
}
|
||||
SA_BAYES_DBNAME='spambayes_db'
|
||||
|
||||
step_50_info() { echo "Notes"; }
|
||||
step_50_alias() { ALIAS="notes"; }
|
||||
step_50_alias() { echo "notes"; }
|
||||
step_50() {
|
||||
outColor green
|
||||
color green
|
||||
echo "$notes"
|
||||
}
|
||||
notes='
|
||||
@@ -150,5 +150,5 @@ notes='
|
||||
saNewHam=$(cat);( echo "$saNewHam" | /usr/bin/sa-learn -u ${1} --ham ) &
|
||||
'
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
26
seqs/ssh.sh
26
seqs/ssh.sh
@@ -9,14 +9,14 @@ aHost=""
|
||||
aPort="22"
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install ssh
|
||||
}
|
||||
|
||||
step_3_info() { echo "Create $toolName authentication keys"; }
|
||||
step_3_alias() { ALIAS="create"; }
|
||||
step_3_alias() { echo "create"; }
|
||||
step_3() {
|
||||
exep "ssh-keygen -l -f $toolIdentity 2>>/dev/null"
|
||||
if [ $? -eq 0 ]; then
|
||||
@@ -32,7 +32,7 @@ step_5_info() {
|
||||
echoinfo "[OPTIONS]"
|
||||
echoinfo " -4 : Force Ipv4"
|
||||
}
|
||||
step_5_alias() { ALIAS="sendkey"; }
|
||||
step_5_alias() { echo "sendkey"; }
|
||||
step_5() {
|
||||
shift
|
||||
local arg
|
||||
@@ -53,7 +53,7 @@ step_5() {
|
||||
done
|
||||
|
||||
if [ -z "$1" ] || [ "$1" == "" ] ; then
|
||||
echoerr " [E] Host not provided."
|
||||
error -e "Host not provided."
|
||||
return 1
|
||||
else
|
||||
sshHost="$1"
|
||||
@@ -75,7 +75,7 @@ step_10_info() {
|
||||
echo "Send command(ssh)/file(scp) list to remote(s)"
|
||||
echoinfo "[USER:HOST] and [PORT] are overwritten by \"host\" command from <CMDLIST>"
|
||||
}
|
||||
step_10_alias() { ALIAS="sendlist"; }
|
||||
step_10_alias() { echo "sendlist"; }
|
||||
step_10() {
|
||||
shift
|
||||
aList=$1
|
||||
@@ -115,11 +115,11 @@ parseList() {
|
||||
|
||||
if [ -z "$1" ] || [ ! -f "$1" ]; then
|
||||
if [ -z "$1" ]; then
|
||||
echoerr " [E] No Command list found"
|
||||
error -e "No Command list found"
|
||||
else
|
||||
echoerr " [E] Command list not found: $1"
|
||||
error -e "Command list not found: $1"
|
||||
fi
|
||||
if [ ! -z "$1" ] && [ $DRY == 0 ] && [ $QUIET == 0 ] ; then
|
||||
if [ ! -z "$1" ] && dry || interactive ; then
|
||||
read -p " Create template there y/[n]? " answer
|
||||
case "$answer" in
|
||||
y|Y)
|
||||
@@ -132,7 +132,7 @@ parseList() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
echoseq " [I] Parsing $(realpath $1) ..."
|
||||
info "Parsing $(realpath $1) ..."
|
||||
local line=1
|
||||
# Working loop without ssh "stealing standard input" by
|
||||
# https://unix.stackexchange.com/questions/24260/reading-lines-from-a-file-with-bash-for-vs-while
|
||||
@@ -184,15 +184,15 @@ parseList() {
|
||||
esac
|
||||
getReturn
|
||||
if [ $? -ne 0 ] ; then
|
||||
echoerr -e " [E] $line:$errorMsg"
|
||||
if [ $QUIET -eq 0 ] ; then
|
||||
error -e -e " [E] $line:$errorMsg"
|
||||
if interactive ; then
|
||||
endReturn -f "Stop on first error"
|
||||
fi
|
||||
fi
|
||||
|
||||
((line++))
|
||||
done 3<"$1"
|
||||
echoseq " [I] Parsed $((--line)) lines"
|
||||
info "Parsed $((--line)) lines"
|
||||
}
|
||||
|
||||
listFileTemplate="# following files are send to host given on command line
|
||||
@@ -210,5 +210,5 @@ f|/sourcedir/sourcefile|/destdir/destfile
|
||||
f|/sourcedir/sourcefile|/destdir/destfile
|
||||
c|/destdir2/update.sh"
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. sequencer.sh
|
||||
|
@@ -18,12 +18,12 @@ CONFIG=0
|
||||
CONFIG_FILE_NAME="${toolName}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
[ $DRY -eq 0 ] && return 1
|
||||
dry || return 1
|
||||
fi
|
||||
toolConfigLoc=`eval echo "$TWXA_CONFIG_LOC"`
|
||||
toolConfig="$toolConfigLoc/config_cache/$toolConfigName"
|
||||
@@ -39,7 +39,7 @@ step_config() {
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName [VERSION]"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
shift
|
||||
if [ ! -z $1 ] ; then
|
||||
@@ -49,7 +49,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_2_info() { echo "Setup git repository at $toolGitLoc [VERSION e.g. 1.4.1]"; }
|
||||
step_2_alias() { ALIAS="git"; }
|
||||
step_2_alias() { echo "git"; }
|
||||
step_2() {
|
||||
shift
|
||||
if [ ! -e "$toolGitLoc/.git" ] ; then
|
||||
@@ -67,11 +67,11 @@ step_2() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Backup $toolName"; }
|
||||
step_20_alias() { ALIAS="backup"; }
|
||||
step_20_alias() { echo "backup"; }
|
||||
step_20() {
|
||||
shift
|
||||
if [ ! -e "$toolConfigLoc" ] ; then
|
||||
echoerr " [E] No installation found"
|
||||
error -e "No installation found"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -115,7 +115,7 @@ step_20() {
|
||||
}
|
||||
|
||||
step_30_info() { echo "Upgrade $toolName [VERSION]"; }
|
||||
step_30_alias() { ALIAS="upgrade"; }
|
||||
step_30_alias() { echo "upgrade"; }
|
||||
step_30() {
|
||||
shift
|
||||
if [ ! -z $1 ] ; then
|
||||
@@ -124,7 +124,7 @@ step_30() {
|
||||
|
||||
#step backup
|
||||
if [ $? -ne 0 ]; then
|
||||
echoerr " [E] Backup failed. Aborting upgrade."
|
||||
error -e "Backup failed. Aborting upgrade."
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -143,5 +143,5 @@ step_30() {
|
||||
exe chown -R www-data: "$toolConfigLoc/*_cache"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -17,20 +17,20 @@ SCRIPT_NAME=${SCRIPT_NAME%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
if [ $? -eq 0 ] ; then
|
||||
CONFIG=1
|
||||
else
|
||||
# End if no configuration file exists
|
||||
[ $DRY -eq 0 ] && return 1
|
||||
dry || return 1
|
||||
fi
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $toolDeps $APTOPT
|
||||
@@ -42,7 +42,7 @@ step_1() {
|
||||
}
|
||||
|
||||
step_10_info() { echo "Setup blocklist update cron job"; }
|
||||
step_10_alias() { ALIAS="bllupdate"; }
|
||||
step_10_alias() { echo "bllupdate"; }
|
||||
step_10() {
|
||||
addConf -s "$TRDA_REMOTE_AUTH" "$TRDA_REMOTE_AUTH_LOC"
|
||||
[ $? -eq 0 ] && exe chmod 600 "$TRDA_REMOTE_AUTH_LOC"
|
||||
@@ -51,7 +51,7 @@ step_10() {
|
||||
}
|
||||
|
||||
step_11_info() { echo "Setup remote authentication for current user (~/.netrc)"; }
|
||||
step_11_alias() { ALIAS="netrcauth"; }
|
||||
step_11_alias() { echo "netrcauth"; }
|
||||
step_11() {
|
||||
local lRemoteAuth="$(realpath ~/.netrc)"
|
||||
if [ ! -f "$lRemoteAuth" ]; then
|
||||
@@ -61,7 +61,7 @@ step_11() {
|
||||
}
|
||||
|
||||
step_12_info() { echo "Add ufw rules for rpc and peer port (default 9091 and 51413)"; }
|
||||
step_12_alias() { ALIAS="ufw"; }
|
||||
step_12_alias() { echo "ufw"; }
|
||||
step_12() {
|
||||
local trdaRpcPort=9091
|
||||
exe ufw allow in on eth0 to any port $trdaRpcPort proto tcp comment "Transmission rpc"
|
||||
@@ -70,9 +70,9 @@ step_12() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Configuration notes"; }
|
||||
step_20_alias() { ALIAS="notes"; }
|
||||
step_20_alias() { echo "notes"; }
|
||||
step_20() {
|
||||
outColor green
|
||||
color green
|
||||
cat <<NOTES_EOF
|
||||
[I] Change rpc password
|
||||
1) Make sure $toolName service is stopped before editing the configuration file.
|
||||
@@ -112,32 +112,32 @@ NOTES_EOF
|
||||
}
|
||||
|
||||
step_50_info() { echo "List all available torrents"; }
|
||||
step_50_alias() { ALIAS="list"; }
|
||||
step_50_alias() { echo "list"; }
|
||||
step_50() {
|
||||
step netrcauth
|
||||
outColor green
|
||||
color green
|
||||
exe "$toolRemote" -l
|
||||
}
|
||||
|
||||
step_52_info() { echoinfoArgs "<TORRENT ID>"; echo "List information about a torrent"; }
|
||||
step_52_alias() { ALIAS="info"; }
|
||||
step_52_alias() { echo "info"; }
|
||||
step_52() {
|
||||
shift
|
||||
endCheckEmpty 1 "Id must not be empty"
|
||||
|
||||
step netrcauth
|
||||
outColor green
|
||||
color green
|
||||
exep "\"$toolRemote\" -t$1 -i | less"
|
||||
}
|
||||
|
||||
step_54_info() { echo "$toolName status"; }
|
||||
step_54_alias() { ALIAS="status"; }
|
||||
step_54_alias() { echo "status"; }
|
||||
step_54() {
|
||||
step netrcauth
|
||||
outColor green
|
||||
color green
|
||||
exe "$toolRemote" -si
|
||||
exe "$toolRemote" -st
|
||||
}
|
||||
|
||||
VERSION_SEQREV=13
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -3,7 +3,7 @@
|
||||
toolName="Tvheadend"
|
||||
|
||||
step_1_info() { echo "Apt - setup $toolName repository"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local sourceList="/etc/apt/sources.list.d/tvheadend.list"
|
||||
local sourceEntry="deb https://apt.tvheadend.org/stable raspbian-stretch main"
|
||||
@@ -47,6 +47,6 @@ step_99() {
|
||||
endReturn
|
||||
}
|
||||
|
||||
VERSION_SEQREV=8
|
||||
readonly sqr_minVersion=16
|
||||
|
||||
. sequencer.sh
|
||||
|
20
seqs/ufw.sh
20
seqs/ufw.sh
@@ -18,10 +18,10 @@ CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
#}
|
||||
|
||||
step_1_info() { echo "Install $toolName and allow ssh access"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
local aptOpt=
|
||||
if [ $QUIET -ne 0 ];then
|
||||
if quiet;then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
exe apt install $toolDeps $aptOpt
|
||||
@@ -34,7 +34,7 @@ step_2() {
|
||||
}
|
||||
|
||||
step_20_info() { echo "Enable mail server essentials"; }
|
||||
step_20_alias() { ALIAS="mailserver"; }
|
||||
step_20_alias() { echo "mailserver"; }
|
||||
step_20() {
|
||||
exe ufw allow "Postfix"
|
||||
exe ufw allow "Postfix SMTPS"
|
||||
@@ -45,11 +45,11 @@ step_20() {
|
||||
}
|
||||
|
||||
step_22_info() { echoinfoArgs "[IP]"; echo "Deny multicast from gateway"; }
|
||||
step_22_alias() { ALIAS="multicast"; }
|
||||
step_22_alias() { echo "multicast"; }
|
||||
step_22() {
|
||||
shift
|
||||
if [ -z $1 ] ; then
|
||||
echoerr " [E] No [IP} specified"
|
||||
error -e "No [IP} specified"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -64,14 +64,14 @@ step_24_info() {
|
||||
echoinfo " 139 : Cifs version 1.0"
|
||||
echoinfo " 445 : Cifs version 2.0+"
|
||||
}
|
||||
step_24_alias() { ALIAS="cifs"; }
|
||||
step_24_alias() { echo "cifs"; }
|
||||
step_24() {
|
||||
shift
|
||||
local destIp=$1
|
||||
local ipregex='^[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\.[0-2]*[0-9]{1,2}\/*[0-9]*$'
|
||||
endCheckEmpty destIp "No IP provided"
|
||||
if [[ ! $1 =~ $ipregex ]]; then
|
||||
echoseq " [E] No valid IP provided"
|
||||
error "No valid IP provided"
|
||||
return 1
|
||||
fi
|
||||
local destPort=445
|
||||
@@ -80,7 +80,7 @@ step_24() {
|
||||
destPort=$2;;
|
||||
"");; # Set default
|
||||
*)
|
||||
echoerr " [E] Invalid port."
|
||||
error -e "Invalid port."
|
||||
return 1;;
|
||||
esac
|
||||
|
||||
@@ -88,7 +88,7 @@ step_24() {
|
||||
}
|
||||
|
||||
step_26_info() { echo "Basic secure VPN setup"; }
|
||||
step_26_alias() { ALIAS="vpn"; }
|
||||
step_26_alias() { echo "vpn"; }
|
||||
step_26() {
|
||||
exe ufw --force reset
|
||||
exe ufw allow in on eth0 to any port 22 comment "ssh"
|
||||
@@ -107,5 +107,5 @@ step_26() {
|
||||
exe ufw status verbose
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
22
seqs/vim.sh
22
seqs/vim.sh
@@ -14,31 +14,31 @@ SCRIPT_NAME=${SCRIPT_FILE%%.*}
|
||||
CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg"
|
||||
CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
|
||||
step_config() {
|
||||
seq_config() {
|
||||
## or to use sequencer api with global config file:
|
||||
#initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE"
|
||||
#if [ $? -eq 0 ] ; then
|
||||
# CONFIG=1
|
||||
#else
|
||||
# # End if no configuration file exists
|
||||
# [ $DRY -eq 0 ] && return -1
|
||||
# dry || return -1
|
||||
#fi
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
[ $QUIET -ne 0 ] && APTOPT="-y"
|
||||
quiet && APTOPT="-y"
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Install $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt install vim $APTOPT
|
||||
}
|
||||
|
||||
step_2_info() { echo "Installing indentation script $seqVimIndentLoc"; }
|
||||
step_2_alias() { ALIAS="setup"; }
|
||||
step_2_alias() { echo "setup"; }
|
||||
step_2() {
|
||||
if [ ! -e "$seqVimIndentLoc" ]; then
|
||||
exe mkdir -p $(dirname "$seqVimIndentLoc")
|
||||
@@ -46,7 +46,7 @@ step_2() {
|
||||
wget --content-disposition $indentDownUrl
|
||||
fi
|
||||
|
||||
echoseq " [I] Installing indentation rules"
|
||||
info "Installing indentation rules"
|
||||
addConf -c "$seqVimConfigBasic" "$seqVimConfigLoc"
|
||||
}
|
||||
seqVimIndentLoc="$HOME/.vim/indent/sh.vim"
|
||||
@@ -55,17 +55,17 @@ filetype plugin indent on
|
||||
syntax on"
|
||||
|
||||
step_3_info() { echo "Install editorconfig as vim 8 plugin"; }
|
||||
step_3_alias() { ALIAS="editorconfig"; }
|
||||
step_3_alias() { echo "editorconfig"; }
|
||||
step_3() {
|
||||
local ecDir="$HOME/.vim/pack/editorconfig/start"
|
||||
local ecUrl='https://github.com/editorconfig/editorconfig-vim.git'
|
||||
if [ ! -e "$ecDir" ]; then
|
||||
echoseq " [I] Installing editorconfig plugin"
|
||||
info "Installing editorconfig plugin"
|
||||
exe mkdir -p "$ecDir"
|
||||
exe cd "$ecDir"
|
||||
exe git clone "$ecUrl"
|
||||
else
|
||||
echoseq " [I] Upgrading editorconfig plugin"
|
||||
info "Upgrading editorconfig plugin"
|
||||
exe cd "$ecDir"
|
||||
exe git pull
|
||||
fi
|
||||
@@ -73,7 +73,7 @@ step_3() {
|
||||
|
||||
step_10_info() { echo "Setup $HOME/.vimrc globaly to use spaces and indent 2"; }
|
||||
step_10() {
|
||||
echoseq " [I] Installing formating rules"
|
||||
info "Installing formating rules"
|
||||
addConf -a "$seqVimConfig" "$seqVimConfigLoc"
|
||||
}
|
||||
seqVimConfig="set expandtab
|
||||
@@ -81,5 +81,5 @@ set tabstop=2
|
||||
set softtabstop=2
|
||||
set shiftwidth=2"
|
||||
|
||||
VERSION_SEQREV=15
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -8,8 +8,8 @@ phpName="php${phpVersion}"
|
||||
phpPackages="${phpName}-{fpm,gd,mysql,curl,xml,zip,intl,mbstring,bz2,ldap,apcu,bcmath,gmp,imagick,igbinary,redis,smbclient,cli,common,opcache,readline} imagemagick"
|
||||
|
||||
aptOpt=
|
||||
step_config() {
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
seq_config() {
|
||||
if quiet ; then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
}
|
||||
@@ -19,17 +19,17 @@ step_1_info() {
|
||||
echo "Setup latest apt source list for $serverName"
|
||||
echoinfo "$serverSourceUrl"
|
||||
}
|
||||
step_1_alias() { ALIAS="setup"; }
|
||||
step_1_alias() { echo "setup"; }
|
||||
step_1() {
|
||||
shift
|
||||
local osRelease=$1
|
||||
endCheckEmpty osRelease "Debian release not provided"
|
||||
|
||||
echoseq " [I] Setup apt source for $serverName $serverSourceUrl"
|
||||
info "Setup apt source for $serverName $serverSourceUrl"
|
||||
local srvSource="deb $serverSourceUrl $osRelease nginx"
|
||||
addConf -s "$srvSource" "$serverSourceLoc"
|
||||
if [ $? -eq 0 ] ; then
|
||||
echoseq " [I] Get repository key for $serverSourceUrl"Y
|
||||
info "Get repository key for $serverSourceUrl"Y
|
||||
exe apt install gnupg $aptOpt
|
||||
exe apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62
|
||||
fi
|
||||
@@ -40,7 +40,7 @@ step_2_info() {
|
||||
echo "Installation of $serverName packages:"
|
||||
echoinfo "$serverPackages"
|
||||
}
|
||||
step_2_alias() { ALIAS=install; }
|
||||
step_2_alias() { echo install; }
|
||||
step_2() {
|
||||
exe apt update
|
||||
exe apt install $serverPackages $aptOpt
|
||||
@@ -64,8 +64,8 @@ step_3() {
|
||||
# create webroot
|
||||
exe mkdir -p "$siteLetsencryptWww"
|
||||
|
||||
echoseq -n "Restarting Nginx..."
|
||||
exe service nginx restart && echoseq "ok"
|
||||
info -n "Restarting Nginx..."
|
||||
exe service nginx restart && info "ok"
|
||||
endReturn -o $? "Failed to install $serverName"
|
||||
}
|
||||
snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf"
|
||||
@@ -86,7 +86,7 @@ step_4_info() {
|
||||
echo "Installation of $phpName packages:"
|
||||
echoinfo "$phpPackages"
|
||||
}
|
||||
step_4_alias() { ALIAS="php"; }
|
||||
step_4_alias() { echo "php"; }
|
||||
step_4() {
|
||||
exe apt install $(eval echo $phpPackages) $aptOpt
|
||||
}
|
||||
@@ -157,12 +157,12 @@ step_5() {
|
||||
exe sed -i 's/pm.max_spare_servers =.*/pm.max_spare_servers = '$PMaxSS'/' "$phpPoolConfigLocation"
|
||||
exe sed -i "s/;pm.max_requests =.*/pm.max_requests = 1000/" "$phpPoolConfigLocation"
|
||||
|
||||
echoseq -n "Restarting ${phpName} ... "
|
||||
exe service ${phpName}-fpm restart && echoseq "ok"
|
||||
info -n "Restarting ${phpName} ... "
|
||||
exe service ${phpName}-fpm restart && info "ok"
|
||||
}
|
||||
|
||||
step_6_info() { echo "Installation notes"; }
|
||||
step_6_alias() { ALIAS="notes"; }
|
||||
step_6_alias() { echo "notes"; }
|
||||
step_6() {
|
||||
cat <<NOTES_EOF
|
||||
# Set user to www-data on debian an tune performance a bit
|
||||
@@ -179,5 +179,5 @@ events {
|
||||
NOTES_EOF
|
||||
}
|
||||
|
||||
VERSION_SEQREV=14
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -10,7 +10,7 @@ step_1_info() {
|
||||
echo "Installation of $serverName packages:"
|
||||
echoinfo "$serverPackages"
|
||||
}
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt update
|
||||
exe apt install $serverPackages
|
||||
@@ -92,5 +92,5 @@ step_4() {
|
||||
echo "ok"
|
||||
}
|
||||
|
||||
VERSION_SEQREV=10
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
@@ -24,7 +24,7 @@ CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example"
|
||||
#}
|
||||
|
||||
step_1_info() { echo "Prepare installation of $toolName"; }
|
||||
step_1_alias() { ALIAS="install"; }
|
||||
step_1_alias() { echo "install"; }
|
||||
step_1() {
|
||||
exe apt install raspberrypi-kernel-headers
|
||||
endReturn -o $? "Installation of kernel headers failed"
|
||||
@@ -40,7 +40,7 @@ Pin-Priority: 150"
|
||||
step_2_info() { echo "Installing $toolName"; }
|
||||
step_2() {
|
||||
local aptOpt=""
|
||||
if [ $QUIET -ne 0 ] ; then
|
||||
if quiet ; then
|
||||
aptOpt="-y"
|
||||
fi
|
||||
exe apt install $toolName $aptOpt
|
||||
@@ -50,7 +50,7 @@ step_3_info() {
|
||||
echo "Enable ipv4 forwarding to allow local access via VPN"
|
||||
echoinfo "(may be skipped)"
|
||||
}
|
||||
step_3_alias() { ALIAS="ipv4"; }
|
||||
step_3_alias() { echo "ipv4"; }
|
||||
step_3() {
|
||||
exe perl -pi -e 's/#{1,}?net.ipv4.ip_forward ?= ?(0|1)/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
|
||||
}
|
||||
@@ -61,19 +61,19 @@ step_4() {
|
||||
}
|
||||
|
||||
step_10_info() { echo "Start default configuration $toolDefaultConf"; }
|
||||
step_10_alias() { ALIAS="start"; }
|
||||
step_10_alias() { echo "start"; }
|
||||
step_10() {
|
||||
exe wg-quick up wg0
|
||||
}
|
||||
|
||||
step_12_info() { echo "Stop default configuration $toolDefaultConf"; }
|
||||
step_12_alias() { ALIAS="stop"; }
|
||||
step_12_alias() { echo "stop"; }
|
||||
step_12() {
|
||||
exe wg-quick down wg0
|
||||
}
|
||||
|
||||
step_14_info() { echo "Enable default configuration $defaultConfLoc"; }
|
||||
step_14_alias() { ALIAS="enable"; }
|
||||
step_14_alias() { echo "enable"; }
|
||||
step_14() {
|
||||
if [ ! -r "$defaultConfLoc" ] ; then
|
||||
endReturn -o 1 "Default configuration \"$defaultConfLoc\" not found"
|
||||
@@ -89,5 +89,5 @@ step_20() {
|
||||
}
|
||||
|
||||
|
||||
VERSION_SEQREV=11
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
||||
|
Reference in New Issue
Block a user