mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2025-04-03 00:07:05 +00:00
79 lines
2.1 KiB
Bash
Executable File
79 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
#####
|
|
##### This file is part of Mail-in-a-Box-LDAP which is released under the
|
|
##### terms of the GNU Affero General Public License as published by the
|
|
##### Free Software Foundation, either version 3 of the License, or (at
|
|
##### your option) any later version. See file LICENSE or go to
|
|
##### https://github.com/downtownallday/mailinabox-ldap for full license
|
|
##### details.
|
|
#####
|
|
|
|
source /etc/mailinabox.conf # load global vars
|
|
source setup/functions.sh # load our functions
|
|
|
|
run_mods() {
|
|
MOD_COUNT=0
|
|
if [ -d "$LOCAL_MODS_DIR" ]; then
|
|
for mod in $(ls "$LOCAL_MODS_DIR" | grep -v '~$'); do
|
|
mod_path="$LOCAL_MODS_DIR/$mod"
|
|
if [ -f "$mod_path" -a -x "$mod_path" ]; then
|
|
echo "${F_WARN}Do setup mod: $(realpath -m --no-symlinks --relative-base "$(pwd)" "$mod_path")${F_RESET}"
|
|
"$mod_path"
|
|
let MOD_COUNT+=1
|
|
fi
|
|
done
|
|
fi
|
|
}
|
|
|
|
|
|
backup_mods() {
|
|
local dst="$STORAGE_ROOT/setup/mods-backup.tgz"
|
|
if [ -d "$LOCAL_MODS_DIR" -a ! -z "$(ls -A "$LOCAL_MODS_DIR" 2>/dev/null)" ]; then
|
|
local tmp="$dst.new"
|
|
mkdir -p "$(dirname "$dst")"
|
|
chmod 750 "$(dirname "$dst")"
|
|
pushd "$LOCAL_MODS_DIR" >/dev/null
|
|
rm -f "$tmp"
|
|
tar czf "$tmp" \
|
|
--exclude-backups \
|
|
--exclude-caches \
|
|
--exclude=*/__pycache__/* \
|
|
--exclude=*/__pycache__ \
|
|
*
|
|
chmod 640 "$tmp"
|
|
popd >/dev/null
|
|
rm -f "$dst"
|
|
mv "$tmp" "$dst"
|
|
else
|
|
rm -f "$dst"
|
|
fi
|
|
}
|
|
|
|
|
|
restore_mods() {
|
|
local dst="$STORAGE_ROOT/setup/mods-backup.tgz"
|
|
local r=0
|
|
if [ -e "$dst" -a ! -d "$LOCAL_MODS_DIR" ]; then
|
|
mkdir -p "$LOCAL_MODS_DIR"
|
|
pushd "$LOCAL_MODS_DIR" >/dev/null
|
|
tar xzf "$dst"
|
|
popd >/dev/null
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
|
|
|
|
if restore_mods; then
|
|
echo "${F_WARN}Restore setup mods from user-data backup${F_RESET}"
|
|
fi
|
|
|
|
run_mods
|
|
if [ $MOD_COUNT -eq 0 ]; then
|
|
echo "No setup mods are enabled. To customize setup, please see setup/mods.available/README.md"
|
|
fi
|
|
|
|
backup_mods
|
|
|