Small cleanup, finally remove EXEC_USER

This commit is contained in:
2022-01-12 15:47:34 -05:00
parent c3f6f4d629
commit 1f12e56dfb
2 changed files with 114 additions and 124 deletions

View File

@@ -1,6 +1,6 @@
# installJRMC
This program will install [JRiver Media Center](https://www.jriver.com/) and associated helper services on Fedora, CentOS, Ubuntu, Debian, Linux Mint, and SUSE.
This program will install [JRiver Media Center](https://www.jriver.com/) and associated helper services on most major distros.
## README
@@ -21,7 +21,7 @@ You can always find the latest supported options by running `installJRMC --help`
--install, -i repo|rpm|deb
repo: Install MC from repository, future updates will be handled by the system package manager
rpm: Build and install MC locally (RPM-based OSes only)
deb: Download and install offcial MC package locally (useful with --compat flag for older distros)
deb: Download and install official MC package locally (useful with --compat flag for older distros)
--build
Build RPM from source DEB but do not install
--target opensuse|fedora|centos
@@ -37,7 +37,7 @@ You can always find the latest supported options by running `installJRMC --help`
--service, -s SERVICE
See SERVICES section below for the list of services to deploy
--service-type user|system
Starts services at boot (system) or at user login (user) (Default: system)
Starts services at boot (system) or user login (user) (Default: system)
--container, -c CONTAINER (TODO: Under construction)
See CONTAINERS section below for a list of containers to deploy
--createrepo
@@ -60,7 +60,7 @@ You can always find the latest supported options by running `installJRMC --help`
### services
When installing systemd services it is important to execute `installJRMC` as the user you wish to run the services. Typically this is your normal user account but for some installations (e.g. containers, servers) it may be necessary to run as root.
When installing systemd services it is important to execute `installJRMC` as the user you wish to run the services. MC services are installed as system-level services running in the current user namespace
```text
jriver-mediaserver
@@ -75,7 +75,7 @@ jriver-xvnc
--vncpass PASSWORD
Set vnc password for x11vnc/Xvnc access. If no password is set, the script will either use existing password stored in ~/.vnc/jrmc_passwd or use no password
--display DISPLAY
Manually specify display to use for x11vnc/Xvnc (ex. )
Manually specify display to use for x11vnc/Xvnc (ex. ':1')
jriver-createrepo
Install hourly service to build latest MC RPM and run createrepo
```
@@ -102,39 +102,39 @@ It is possible to install multiple services at one time using multiple `--servic
* `installJRMC`
Installs the latest version of JRiver Media Center from the repository.
Install the latest version of JRiver Media Center from the repository.
* `installJRMC --install repo --service jriver-mediaserver`
Installs JRiver Media Center from the repository and starts/enables the /MediaServer service.
Install JRiver Media Center from the repository and starts/enables the /MediaServer service.
* `installJRMC --install rpm --restorefile /path/to/license.mjr --mcversion 28.0.87`
Builds JRiver Media Center version 28.0.87 RPM from the source DEB, installs it (RPM distros only), and activates it using the specified .mjr license file.
Build JRiver Media Center version 28.0.87 RPM from the source DEB, installs it (RPM distros only), and activates it using the specified .mjr license file.
* `installJRMC --createrepo --createrepo-webroot /srv/jriver/repo --createrepo-user www-user`
Builds the RPM, moves it to the webroot, and runs createrepo as `www-user`.
Build the RPM, moves it to the webroot, and runs createrepo as `www-user`.
* `installJRMC --service jriver-createrepo --createrepo-webroot /srv/jriver/repo --createrepo-user www-user`
Installs the jriver-createrepo timer and service to build the RPM, move it to the webroot, and run createrepo as `www-user` hourly.
Install the jriver-createrepo timer and service to build the RPM, move it to the webroot, and run createrepo as `www-user` hourly.
* `installJRMC --install repo --service jriver-x11vnc --service jriver-mediacenter --vncpass "letmein"`
Installs services to share the existing local desktop via VNC and automatically run Media Center on startup.
Install services to share the existing local desktop via VNC and automatically run Media Center on startup.
* `installJRMC --install repo --service jriver-xvnc --display ":2"`
Installs an Xvnc server on display ':2' that starts Media Center.
Install an Xvnc server on display ':2' that starts Media Center.
* `installJRMC --install deb --compat`
Installs a more widely-compatible version of MC on deb-based distros
Install a more widely-compatible version of MC on deb-based distros
* `installJRMC --uninstall`
Uninstalls JRiver Media Center and its associated services and firewall rules. This will **not** remove your media, media library/database, or automated library backup folder.
Uninstall JRiver Media Center and its associated services and firewall rules. This will **not** remove your media, media library/database, or automated library backup folder.
## Additional Info

View File

@@ -23,7 +23,6 @@ declare -g SCRIPTVERSION="1.0b6"
declare -g OUTPUTDIR="$PWD/output"
declare -g CREATEREPO_WEBROOT="/var/www/jriver"
declare -g USER; USER="${USER:-$(id -un)}"
declare -g USER_HOME; USER_HOME=$(grep "$USER" < /etc/passwd | cut -d":" -f6)
# MC version
# MCVERSION="28.0.87" # to set manually, if unset use automatic latest check
@@ -79,15 +78,15 @@ printHelp() {
SERVICES
jriver-mediaserver
Enable and start a mediaserver systemd service (requires an existing X server)
Enable and start a mediaserver systemd service (requires an existing X server) (user)
jriver-mediacenter
Enable and start a mediacenter systemd service (requires an existing X server)
Enable and start a mediacenter systemd service (requires an existing X server) (user)
jriver-x11vnc
Enable and start x11vnc for the local desktop (requires an existing X server)
Enable and start x11vnc for the local desktop (requires an existing X server) (user)
Usually combined with jriver-mediaserver or jriver-mediacenter services
--vncpass and --display are optional (see below)
jriver-xvnc
Enable and start a new Xvnc session running JRiver Media Center
Enable and start a new Xvnc session running JRiver Media Center (system)
--vncpass PASSWORD
Set vnc password for x11vnc/Xvnc access. If no password is set, the script
will either use existing password stored in ~/.vnc/jrmc_passwd or use no password
@@ -95,7 +94,7 @@ printHelp() {
Display to start x11vnc/Xvnc (Default: The current display (x11vnc) or the
current display incremented by 1 (Xvnc))
jriver-createrepo
Install hourly service to build latest MC RPM and run createrepo ()
Install hourly service to build latest MC RPM and run createrepo (system)
CONTAINERS (TODO: Under construction)
mediacenter-xvnc
@@ -261,20 +260,18 @@ parseInput() {
getLatestVersion() {
debug "Running: ${FUNCNAME[0]}"
declare -g MCVERSION BASE BOARDURL
declare -g MCVERSION
declare cnt
declare base="buster" # For container method
#declare base_next="bullseye" # TODO possibly use for fallback to smooth upgrades
declare boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html" # MC28 (Buster), for fallback webscrape
# Latest defaults
BASE="buster" # For container method
BOARDURL="https://yabb.jriver.com/interact/index.php/board,71.0.html" # MC28 (Buster), for fallback webscrape
#BASE_next="bullseye" # TODO use for fallback to smooth upgrades
# Use a containerized package manager
# TODO but how to determine build distro ($BASE=buster)?
# Containerized package manager
# TODO but how to determine build distro ($base=buster)?
installPackage --silent buildah
if cnt=$(buildah from debian:$BASE) &>/dev/null; then
if cnt=$(buildah from debian:$base) &>/dev/null; then
buildah run "$cnt" -- bash -c \
"echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $BASE main' > /etc/apt/sources.list 2>&1"
"echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $base main' > /etc/apt/sources.list 2>&1"
buildah run "$cnt" -- bash -c \
"apt-get update --allow-insecure-repositories &>/dev/null"
if MCVERSION=$(buildah run "$cnt" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) \
@@ -283,17 +280,16 @@ getLatestVersion() {
fi
buildah rm "$cnt" &>/dev/null
return 0
fi
# Scrape from Interact
else
installPackage wget
if MCVERSION=$(wget -qO- "$BOARDURL" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1); then
if MCVERSION=$(wget -qO- "$boardurl" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1); then
version_source="webscrape"
else
err "$BOARDURL could not be parsed"
err "MC version could not be determined"
err "Specify a version manually using --mcversion"
err "Latest MC version could not be parsed from $boardurl"
err "Try specifying a version manually using --mcversion"
exit 1
fi
fi
}
@@ -302,7 +298,7 @@ getLatestVersion() {
# Arguments:
# One or more package names
# Options:
# --nocheck: Do not check if package is already installed
# --skip-check-installed: Do not check if package is already installed
# --nogpgcheck: Disable GPG checks for RPM based distros
# --silent, -s: Do not report errors (useful if package is not strictly required and errors are noisy)
#######################################
@@ -310,14 +306,14 @@ installPackage() {
debug "Running: ${FUNCNAME[0]}" "$@"
declare -a pkg_array install_flags
declare pkg nocheck silent _return pkg_install_cmd
declare pkg skip_check_installed silent _return pkg_install_cmd
if _input=$(getopt -o +s -l nocheck,nogpgcheck,nobest,silent -- "$@"); then
if _input=$(getopt -o +s -l skip-check-installed,nogpgcheck,silent -- "$@"); then
eval set -- "$_input"
while true; do
case "$1" in
--nocheck)
nocheck=1
--skip-check-installed)
skip_check_installed=1
;;
--nogpgcheck)
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
@@ -326,11 +322,6 @@ installPackage() {
install_flags+=("--allow-unsigned-rpm")
fi
;;
--nobest)
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
install_flags+=("--nobest")
fi
;;
--silent|-s)
silent=1
;;
@@ -356,12 +347,11 @@ installPackage() {
fi
for pkg in "$@"; do
if [[ ! -v nocheck && -v PKG_ALIASES[$pkg] ]]; then
if [[ ! -v skip_check_installed && -v PKG_ALIASES[$pkg] ]]; then
pkg=${PKG_ALIASES[$pkg]}
fi
# Check if already installed
if (( nocheck )) || ([[ ! -x $(command -v $pkg) ]] \
&& ! pkg_query "$pkg" &>/dev/null); then
if (( skip_check_installed )) || ! (hash $pkg &>/dev/null || pkg_query "$pkg" &>/dev/null); then
pkg_array+=("$pkg")
fi
done
@@ -370,11 +360,12 @@ installPackage() {
if [[ ${#pkg_array[@]} -ge 1 ]]; then
pkg_install_cmd="pkg_install ${install_flags[*]} ${pkg_array[*]}"
debug "$pkg_install_cmd" || pkg_install_cmd+=" &>/dev/null"
if ! eval "$pkg_install_cmd" && (( silent )); then
if ! eval "$pkg_install_cmd" && ! (( silent )); then
err "Failed to install ${pkg_array[*]}. Attempting to continue..."
return 1
fi
fi
return 0
}
@@ -392,7 +383,7 @@ addRepo() {
gpgcheck=0
EOF'
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint|neon)$ ]]; then
# MVERSION depends on $BASE unless --mcversion is passed
# MVERSION depends on $base unless --mcversion is passed
installPackage wget
wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | sudo apt-key add - &>/dev/null
sudo wget "http://dist.jriver.com/latest/mediacenter/mediacenter$MVERSION.list" -O "/etc/apt/sources.list.d/mediacenter$MVERSION.list" &>/dev/null
@@ -425,7 +416,7 @@ installMCFromRepo() {
exit 1
fi
pkg_install_cmd="installPackage --nocheck --nogpgcheck $MCPKG"
pkg_install_cmd="installPackage --skip-check-installed --nogpgcheck $MCPKG"
debug "$pkg_install_cmd" || pkg_install_cmd+=" &>/dev/null"
eval "$pkg_install_cmd"
}
@@ -659,7 +650,7 @@ runCreaterepo() {
debug "Running: ${FUNCNAME[0]}"
declare cr_cmd cr_cp_cmd cr_mkdir_cmd cr_chown_cmd
declare cr_user="${CREATEREPO_USER:-'www-data'}"
declare cr_user="${CREATEREPO_USER:$USER}"
installPackage createrepo_c
@@ -736,12 +727,12 @@ symlinkCerts() {
restoreLicense() {
debug "Running: ${FUNCNAME[0]}"
declare _mjr
declare mjrfile
# Allow user to put the mjr file next to installJRMC
if [[ ! -v RESTOREFILE ]]; then
for _mjr in "$PWD"/*.mjr; do
[[ $_mjr -nt $RESTOREFILE ]] && RESTOREFILE="$_mjr"
for mjrfile in "$PWD"/*.mjr; do
[[ $mjrfile -nt $RESTOREFILE ]] && RESTOREFILE="$mjrfile"
done
fi
@@ -764,14 +755,14 @@ openFirewall() {
debug "Running: ${FUNCNAME[0]}" "$@"
# Create OS-specific port rules based on argument (service) name
declare -a _f_ports # for firewall-cmd
declare _u_ports # for ufw
declare -a f_ports # for firewall-cmd
declare u_ports # for ufw
if [[ "$1" == "jriver" ]]; then
_f_ports=("52100-52200/tcp" "1900/udp")
_u_ports="52100:52200/tcp|1900/udp"
f_ports=("52100-52200/tcp" "1900/udp")
u_ports="52100:52200/tcp|1900/udp"
elif [[ "$1" =~ ^(jriver-x11vnc|jriver-xvnc)$ ]]; then
_f_ports=("$_port/tcp" "1900/udp")
_u_ports="$_port/tcp|1900/udp"
f_ports=("$PORT/tcp" "1900/udp")
u_ports="$PORT/tcp|1900/udp"
fi
# Open the ports
@@ -781,13 +772,13 @@ openFirewall() {
firewall_cmd --permanent --new-service="$1" &>/dev/null
firewall_cmd --permanent --service="$1" --set-description="$1 installed by installJRMC" &>/dev/null
firewall_cmd --permanent --service="$1" --set-short="$1" &>/dev/null
for _f_port in "${_f_ports[@]}"; do
firewall_cmd --permanent --service="$1" --add-port="$_f_port" &>/dev/null
for f_port in "${f_ports[@]}"; do
firewall_cmd --permanent --service="$1" --add-port="$f_port" &>/dev/null
done
firewall_cmd --add-service "$1" --permanent &>/dev/null
firewall_cmd --reload &>/dev/null
fi
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmin|neon)$ ]]; then
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint|neon)$ ]]; then
# Debian ufw package state is broken on fresh installations
installPackage ufw
if [[ ! -f "/etc/ufw/applications.d/$1" ]]; then
@@ -795,7 +786,7 @@ openFirewall() {
[$1]
title=$1
description=$1 installed by installJRMC
ports=$_u_ports
ports=$u_ports
EOF"
fi
firewall_cmd app update "$1"
@@ -816,27 +807,27 @@ openFirewall() {
setX11VNCPass() {
debug "Running: ${FUNCNAME[0]}"
_vncpassfile="$HOME/.vnc/jrmc_passwd"
declare vncpassfile="$HOME/.vnc/jrmc_passwd"
[[ ! -d "${_vncpassfile%/*}" ]] && mkdir -p "${_vncpassfile%/*}"
[[ ! -d "${vncpassfile%/*}" ]] && mkdir -p "${vncpassfile%/*}"
if [[ -f "$_vncpassfile" ]]; then
if [[ -f "$vncpassfile" ]]; then
if [[ ! -v VNCPASS ]]; then
err "Refusing to overwrite existing $_vncpassfile with an empty password"
err "Remove existing $_vncpassfile or set --vncpass to use an empty password"
err "Refusing to overwrite existing $vncpassfile with an empty password"
err "Remove existing $vncpassfile or set --vncpass to use an empty password"
exit 1
else
rm -f "$_vncpassfile"
rm -f "$vncpassfile"
fi
fi
if [[ -v VNCPASS ]]; then
if ! x11vnc -storepasswd "$VNCPASS" "$_vncpassfile"; then
if ! x11vnc -storepasswd "$VNCPASS" "$vncpassfile"; then
err "Could not create VNC password file"
return 1
fi
else
_novncauth="true"
declare -g NOVNCAUTH=1
fi
}
@@ -847,27 +838,27 @@ setX11VNCPass() {
setVNCPass() {
debug "Running: ${FUNCNAME[0]}"
declare _vncpassfile="$HOME/.vnc/jrmc_passwd"
declare vncpassfile="$HOME/.vnc/jrmc_passwd"
[[ ! -d "${_vncpassfile%/*}" ]] && mkdir -p "${_vncpassfile%/*}"
[[ ! -d "${vncpassfile%/*}" ]] && mkdir -p "${vncpassfile%/*}"
if [[ -f "$_vncpassfile" ]]; then
if [[ -f "$vncpassfile" ]]; then
if [[ ! -v VNCPASS ]]; then
err "Refusing to overwrite existing $_vncpassfile with an empty password"
err "Remove existing $_vncpassfile or set --vncpass to use an empty password"
err "Refusing to overwrite existing $vncpassfile with an empty password"
err "Remove existing $vncpassfile or set --vncpass to use an empty password"
exit 1
else
rm -f "$_vncpassfile"
rm -f "$vncpassfile"
fi
fi
if [[ -v VNCPASS ]]; then
if ! echo "$VNCPASS" | vncpasswd -f > "$_vncpassfile"; then
if ! echo "$VNCPASS" | vncpasswd -f > "$vncpassfile"; then
err "Could not create VNC password file"
return 1
fi
else
_novncauth="true"
declare -g NOVNCAUTH=1
fi
}
@@ -895,10 +886,9 @@ setDisplay() {
setServiceVars() {
debug "Running: ${FUNCNAME[0]}"
declare -g SERVICE_NAME SERVICE_FNAME TIMER_NAME TIMER_FNAME USER_STRING EXEC_USER
declare -g SERVICE_NAME SERVICE_FNAME TIMER_NAME TIMER_FNAME USER_STRING
declare -g SERVICE_TYPE"${SERVICE_TYPE:-system}"
declare service_system_dir="/usr/lib/systemd/system"
declare service_user_dir="$USER_HOME/.config/systemd/user"
declare service_dir="/usr/lib/systemd/$SERVICE_TYPE"
if [[ "$USER" == "root" && "$SERVICE_TYPE" == "user" ]]; then
err "Trying to install user service as root"
@@ -907,16 +897,12 @@ setServiceVars() {
fi
if [[ "$SERVICE_TYPE" == "system" ]]; then
service_dir="$service_system_dir"
EXEC_USER="root"
systemctl_reload_cmd(){ sudo systemctl daemon-reload; }
systemctl_enable_cmd(){ sudo systemctl enable --now "$@"; }
systemctl_disable_cmd(){ sudo systemctl disable --now "$@"; }
systemctl_is_enabled_cmd(){ sudo systemctl is-enabled -q "$@"; }
systemctl_is_active_cmd(){ sudo systemctl is-active -q "$@"; }
elif [[ "$SERVICE_TYPE" == "user" ]]; then
service_dir="$service_user_dir"
EXEC_USER="$USER"
systemctl_reload_cmd(){ systemctl --user daemon-reload; }
systemctl_enable_cmd(){ systemctl --user enable --now "$@"; }
systemctl_disable_cmd(){ systemctl --user disable --now "$@"; }
@@ -924,20 +910,20 @@ setServiceVars() {
systemctl_is_active(){ sudo systemctl is-active -q "$@"; }
fi
[[ ! -d "$service_dir" ]] && sudo -u "$EXEC_USER" mkdir -p "$service_dir"
[[ ! -d "$service_dir" ]] && sudo mkdir -p "$service_dir"
if [[ "$USER" == "root" || "$SERVICE_TYPE" == "user" ]]; then
SERVICE_NAME="${1}.service"
TIMER_NAME="${1}.timer"
SERVICE_FNAME="$service_dir/${SERVICE_NAME}"
TIMER_FNAME="$service_dir/${TIMER_NAME}"
USER_STRING=""
else
if [[ "$SERVICE_TYPE" == "system" && "$USER" != "root" ]]; then
SERVICE_FNAME="$service_dir/${1}@.service"
TIMER_FNAME="$service_dir/${1}@.timer"
SERVICE_NAME="${1}@$USER.service"
TIMER_NAME="${1}@$USER.timer"
USER_STRING="User=%I"
else
SERVICE_NAME="${1}.service"
TIMER_NAME="${1}.timer"
SERVICE_FNAME="$service_dir/${SERVICE_NAME}"
TIMER_FNAME="$service_dir/${TIMER_NAME}"
USER_STRING=""
fi
}
@@ -952,7 +938,7 @@ service_jriver-mediacenter() {
setServiceVars
sudo -u "$EXEC_USER" bash -c "cat <<- EOF > $SERVICE_FNAME
sudo bash -c "cat <<- EOF > $SERVICE_FNAME
[Unit]
Description=JRiver Media Center $MVERSION
After=graphical.target
@@ -999,22 +985,22 @@ service_jriver-xvnc() {
setServiceVars
setDisplay
declare start_cmd
declare port=$(( NEXT_DISPLAYNUM + 5900 ))
declare -g PORT=$(( NEXT_DISPLAYNUM + 5900 ))
installPackage tigervnc-server
setVNCPass
if [[ -v _novncauth ]]; then
if (( NOVNCAUTH )); then
start_cmd="/usr/bin/vncserver $NEXT_DISPLAY -geometry 1440x900 -alwaysshared -name jriver$NEXT_DISPLAY -SecurityTypes None -autokill -xstartup /usr/bin/mediacenter$MVERSION"
else
start_cmd="/usr/bin/vncserver $NEXT_DISPLAY -geometry 1440x900 -alwaysshared -rfbauth $HOME/.vnc/jrmc_passwd -autokill -xstartup /usr/bin/mediacenter$MVERSION"
fi
sudo -u "$EXEC_USER" bash -c "cat <<- EOF > $SERVICE_FNAME
sudo bash -c "cat <<- EOF > $SERVICE_FNAME
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
After=multi-user.target
[Service]
Type=simple
@@ -1025,19 +1011,19 @@ service_jriver-xvnc() {
Restart=always
[Install]
WantedBy=default.target
WantedBy=multi-user.target
EOF"
systemctl_reload_cmd &&
systemctl_enable_cmd "$SERVICE_NAME" &&
echo "Xvnc running on localhost:$port" &&
echo "Xvnc running on localhost:$PORT" &&
openFirewall "jriver-xvnc" &&
openFirewall "jriver"
}
#######################################
# Starts and enables (at startup) JRiver Media Server and x11vnc sharing the local desktop
# Starts and enables (at startup) x11vnc screen sharing for the local desktop
#######################################
service_jriver-x11vnc() {
debug "Running: ${FUNCNAME[0]}"
@@ -1046,7 +1032,7 @@ service_jriver-x11vnc() {
setDisplay
declare start_cmd
declare port=$(( DISPLAYNUM + 5900 ))
declare -g PORT=$(( DISPLAYNUM + 5900 ))
installPackage x11vnc
@@ -1061,16 +1047,16 @@ service_jriver-x11vnc() {
# }
# _getResolution
if [[ -v _novncauth ]]; then
if (( NOVNCAUTH )); then
start_cmd="/usr/bin/x11vnc -display $DISPLAY -noscr -auth guess -forever -bg -nopw"
else
start_cmd="/usr/bin/x11vnc -display $DISPLAY -noscr -auth guess -forever -bg -rfbauth $HOME/.vnc/jrmc_passwd"
fi
sudo -u "$EXEC_USER" bash -c "cat <<-EOF > $SERVICE_FNAME
sudo bash -c "cat <<-EOF > $SERVICE_FNAME
[Unit]
Description=x11vnc
After=multi.service
After=graphical.target
[Service]
$USER_STRING
@@ -1081,12 +1067,12 @@ service_jriver-x11vnc() {
RestartSec=10
[Install]
WantedBy=default.target
WantedBy=graphical.target
EOF"
systemctl_reload_cmd &&
systemctl_enable_cmd "$SERVICE_NAME" &&
echo "x11vnc running on localhost:$port" &&
echo "x11vnc running on localhost:$PORT" &&
openFirewall "jriver-x11vnc"
}
@@ -1100,9 +1086,13 @@ service_jriver-createrepo() {
declare id="${TARGET:-$ID}"
USER="root" setServiceVars
if [[ "$USER" != "${CREATEREPO_USER:-$USER}" ]]; then
USER="root" SERVICE_TYPE="system" setServiceVars
else
setServiceVars
fi
sudo -u "$EXEC_USER" bash -c "cat <<-EOF > $SERVICE_FNAME
sudo bash -c "cat <<-EOF > $SERVICE_FNAME
[Unit]
Description=Builds JRiver Media Center RPM file, moves it to the repo dir, and runs createrepo
@@ -1111,10 +1101,10 @@ service_jriver-createrepo() {
ExecStart=$PWD/installJRMC --target $id --outputdir $OUTPUTDIR --createrepo --createrepo-webroot $CREATEREPO_WEBROOT --createrepo-user $CREATEREPO_USER
[Install]
WantedBy=default.target
WantedBy=multi-user.target
EOF"
sudo -u "$EXEC_USER" bash -c "cat <<-EOF > $TIMER_FNAME
sudo bash -c "cat <<-EOF > $TIMER_FNAME
[Unit]
Description=Run JRiver MC rpmbuild hourly
@@ -1149,7 +1139,7 @@ service_jriver-createrepo() {
# installPackage buildah podman
# # Eventually try to switch to Debian
# # if ! CNT=$(buildah from debian:$BASE); then
# # if ! CNT=$(buildah from debian:$base); then
# # echo "Bad base image for container $CNAME, skipping"
# # continue
# # fi
@@ -1335,7 +1325,7 @@ uninstall() {
fi
debug "Removing firewall rules"
if [[ -x $(command -v firewall-cmd) ]]; then
if hash firewall-cmd 2>/dev/null; then
if [[ -v debug ]]; then
debug "firewall_cmd --permanent --remove-service=jriver"
firewall_cmd --permanent --remove-service=jriver
@@ -1348,7 +1338,7 @@ uninstall() {
firewall_cmd --permanent --delete-service=jriver &>/dev/null
firewall_cmd --reload &>/dev/null
fi
elif [[ -x $(command -v ufw) ]]; then
elif hash ufw 2>/dev/null; then
firewall_cmd="firewall_cmd delete allow jriver"
debug "$firewall_cmd" || firewall_cmd+=" &>/dev/null"
eval "$firewall_cmd"
@@ -1477,7 +1467,7 @@ main() {
ar rcs "$mcdeb" "$extract_dir/debian-binary" "$extract_dir/control.tar.xz" "$extract_dir/data.tar.xz"
rm -rf "$extract_dir"
fi
pkg_install_cmd="installPackage --nocheck --nogpgcheck ${mcdeb:-$MCDEB}"
pkg_install_cmd="installPackage --skip-check-installed --nogpgcheck ${mcdeb:-$MCDEB}"
debug "$pkg_install_cmd" || pkg_install_cmd+=" &>/dev/null"
eval "$pkg_install_cmd"
fi
@@ -1492,7 +1482,7 @@ main() {
#rpm --upgrade "$MCRPM"
if installPackage --nocheck --nogpgcheck "$MCRPM"; then
if installPackage --skip-check-installed --nogpgcheck "$MCRPM"; then
echo "JRiver Media Center installed successfully"
else
err "JRiver Media Center installation failed"