64 lines
1.9 KiB
Bash
Executable File
64 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Search for specific version (1-4) and replace with specified version. If
|
|
# replacement of version "1" has been requested, change configs with no version
|
|
# set, as "1" is the default.
|
|
|
|
set -euo pipefail
|
|
# helper functions
|
|
die() { echo "$*" >&2; exit 1;}
|
|
warn() { echo "$*" >&2; }
|
|
|
|
# Default values
|
|
confused=false
|
|
version_search=0
|
|
version_replace=0
|
|
|
|
[ `id -nu` != "root" ] && die "Please execute as root"
|
|
|
|
while getopts s:r:v c; do
|
|
case "$c" in
|
|
s) version_search="$OPTARG";;
|
|
r) version_replace="$OPTARG";;
|
|
*) confused=true;;
|
|
esac
|
|
done
|
|
|
|
shift `expr $OPTIND - 1`
|
|
|
|
$confused || [ "$version_search" -eq 0 -o "$version_replace" -eq 0 ] && die "Usage: -s <version to search for> -r <version to replace with>"
|
|
! [[ "$version_search" =~ ^[1-4]$ ]] && die "Search version should be between 1-4"
|
|
! [[ "$version_replace" =~ ^[1-4]$ ]] && die "Replacement version should be between 1-4"
|
|
|
|
replace_version() {
|
|
local conf=$1
|
|
local version_current
|
|
|
|
[ -f "$conf" ] || die "File does not exist: $conf"
|
|
|
|
# Get current version if set in config
|
|
set +e
|
|
version_current=$(grep -soP "php1_select=\K[0-9]" $conf)
|
|
set -e
|
|
[ $? -eq 2 ] && die "grep encountered a fatal error"
|
|
|
|
if [ -z $version_current ]; then
|
|
# current version not found in config. assume "1"
|
|
#echo "$conf has no version set, assume 1"
|
|
version_current=1
|
|
fi
|
|
|
|
# Is this the version we're looking for?
|
|
if [ $version_current -eq $version_search ]; then
|
|
# replace or add line
|
|
sed -i '/^php1_select=/{h;s/=.*/='$version_replace'/};${x;/^$/{s//php1_select='$version_replace'/;H};x}' "$conf"
|
|
echo "$conf: changed"
|
|
fi
|
|
}
|
|
|
|
for f in /usr/local/directadmin/data/users/*/domains/*.conf; do
|
|
replace_version $f
|
|
done
|
|
|
|
echo "To update the running configuration, please run: /usr/local/directadmin/custombuild/build rewrite_confs"
|