mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Systemd changes | root script | URL support for gif effects (#1319)
* Systemd changes and URL option for Gif Effects * Add grayscale to gif effect * WebUI adjustments * Rename version to .version * Copy runHyperionAsRoot.sh to rpi packages * Pack script into all unix packages * Start hyperion only after network is available * Snap builds removed due to poor server connection * Flexible updateHyperionUser.sh * updateHyperionUser script entered in the package * Print help on none sudo execute * Corrected embedded Python location * Replacement for the QWindowsScreen grabWindow function * Updated to latest 2.x mbedtls version 2.27 Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
This commit is contained in:
92
bin/scripts/updateHyperionUser.sh
Executable file
92
bin/scripts/updateHyperionUser.sh
Executable file
@@ -0,0 +1,92 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# help print function
|
||||
function printHelp {
|
||||
echo "The script updates the user Hyperion is executed by system and service manager (after start-up).
|
||||
Without arguments it will configure Hyperion being executed under the current user.
|
||||
The script must be executed as root, i.e. sudo $0
|
||||
|
||||
Options:
|
||||
-u username The user name Hyperion to executed to be with
|
||||
-h Shows this help message and exits"
|
||||
}
|
||||
|
||||
function prompt () {
|
||||
while true; do
|
||||
read -p "$1 " yn
|
||||
if [[ $yn = "" ]]; then
|
||||
echo "Please answer Yes or No."
|
||||
else
|
||||
case "${yn:-Y}" in
|
||||
[Yes]* ) return 1;;
|
||||
[No]* ) return 0;;
|
||||
* ) echo "Please answer Yes or No.";;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Default username
|
||||
USERNAME=${SUDO_USER}
|
||||
|
||||
while getopts u:h option
|
||||
do
|
||||
case "${option}"
|
||||
in
|
||||
u) USERNAME=${OPTARG};;
|
||||
v) _VERBOSE=1;;
|
||||
h) printHelp; exit 0;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "`id -u`" -ne 0 ]; then
|
||||
printHelp
|
||||
exit 99
|
||||
fi
|
||||
|
||||
if ! id ${USERNAME} >/dev/null 2>&1; then
|
||||
echo "The given username \"${USERNAME}\" does not exist. Exiting..."
|
||||
exit 99
|
||||
fi
|
||||
|
||||
echo "Configure the hyperion daemon to be executed under user: ${USERNAME}"
|
||||
|
||||
if [ ${USERNAME} == "root" ]; then
|
||||
echo ''
|
||||
echo 'You asked to run Hyperion with root privileges. This poses a security risk!'
|
||||
echo 'It is recommended not to do so unless there are good reasons (e.g. WS281x usage).'
|
||||
if prompt 'Are you sure you want to run Hyperion under root? [Yes/No]'; then
|
||||
echo 'No updates will be done. Exiting...'
|
||||
exit 99
|
||||
fi
|
||||
fi
|
||||
|
||||
#Disable current service
|
||||
CURRENT_SERVICE=$(systemctl --type service | { grep -o "hyperion.*@.*\.service" || true; })
|
||||
if [[ ! -z ${CURRENT_SERVICE} ]]; then
|
||||
CURRENT_SERVICE_USER=$(expr "${CURRENT_SERVICE}" : 'hyperion.*@\(.*\).service')
|
||||
if [ "${USERNAME}" == "${CURRENT_SERVICE_USER}" ]; then
|
||||
echo "Hyperion is already running under the user: ${USERNAME}. No updates required."
|
||||
exit 0;
|
||||
fi
|
||||
echo "Disable current service: ${CURRENT_SERVICE}"
|
||||
systemctl is-active --quiet ${CURRENT_SERVICE} && systemctl disable --quiet ${CURRENT_SERVICE} --now >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
HYPERION="hyperion"
|
||||
#Downward compatibility
|
||||
if [[ ${CURRENT_SERVICE} == hyperiond* ]]; then
|
||||
HYPERION="hyperiond"
|
||||
fi
|
||||
|
||||
#Enable new service
|
||||
NEW_SERVICE="${HYPERION}@${USERNAME}.service"
|
||||
echo "Restarting Hyperion Service: ${NEW_SERVICE}"
|
||||
systemctl enable --quiet ${NEW_SERVICE} --now >/dev/null 2>&1
|
||||
|
||||
# Update HyperBian splash screen
|
||||
sed -i "s/${CURRENT_SERVICE}/${NEW_SERVICE}/" /etc/update-motd.d/10-hyperbian >/dev/null 2>&1
|
||||
|
||||
echo "Done."
|
||||
exit 0
|
||||
|
Reference in New Issue
Block a user