3 Commits

Author SHA1 Message Date
2143aa10b5 Fix systemd user 2020-04-08 11:08:01 -04:00
326dc9ea66 Fix permissions on service scripts 2020-04-03 13:19:57 -04:00
d5d51ab506 Use firewall-cmd to avoid 5 second delay for xml file to load 2020-04-03 13:05:11 -04:00

View File

@@ -61,6 +61,8 @@ OPTIONS
Specify URL to source DEB package (Default: automatic) Specify URL to source DEB package (Default: automatic)
--betapass PASSWORD --betapass PASSWORD
Enter beta team password for access to beta builds Enter beta team password for access to beta builds
--service SERVICE
See SERVICES section below for a list of possible service to install
-v|--version -v|--version
Print this script version and exit Print this script version and exit
-d|--debug -d|--debug
@@ -80,14 +82,13 @@ OPTIONS
--createrepo-user USER --createrepo-user USER
The web server user (Default: www-user) The web server user (Default: www-user)
See SERVICES for service-createrepo to automate createrepo
SERVICES SERVICES
--service-mediaserver mediaserver
Install JRiver MC mediaserver service Create and enable a JRiver MC Media Server systemd service for the current user
--service-x11vnc-mediaserver
Install JRiver MC mediaserver service and x11vnc (for headless installations without x11vnc-mediaserver
an existing X server) Create and enable a JRiver MC mediaserver service and x11vnc (for headless
installations without an existing X server) service for the current user
--vncpass PASSWORD --vncpass PASSWORD
Set vnc password for x11vnc access. If no password is set, the script will either use Set vnc password for x11vnc access. If no password is set, the script will either use
@@ -96,8 +97,13 @@ OPTIONS
Start X11VNC on this display (Default: The current display or :0 if current display is Start X11VNC on this display (Default: The current display or :0 if current display is
unaccessible) unaccessible)
--service-createrepo createrepo
Install service to build latest MC and run createrepo hourly Install service to build latest MC RPM and run createrepo hourly for the current user
--createrepo-webroot PATH
The webroot directory to install the repo (Default: /var/www/html)
--createrepo-user USER
The web server user (Default: www-user)
EOF EOF
# Exit using passed exit code # Exit using passed exit code
@@ -108,7 +114,7 @@ EOF
_parseInput () { _parseInput () {
if _input=$(getopt -o +vdhu -l repo,build,outputdir:,mcversion:,restorefile:,boardurl:,deburl:,betapass:,version,debug,help,uninstall,createrepo,createrepo-webroot:,createrepo-user:,service-mediaserver,service-x11vnc-mediaserver,vncpass:,display:,service-createrepo -- "$@"); then if _input=$(getopt -o +vdhu -l repo,build,outputdir:,mcversion:,restorefile:,boardurl:,deburl:,betapass:,service:,version,debug,help,uninstall,createrepo,createrepo-webroot:,createrepo-user:,vncpass:,display: -- "$@"); then
eval set -- "$_input" eval set -- "$_input"
while true; do while true; do
case "$1" in case "$1" in
@@ -138,6 +144,9 @@ EOF
--betapass) --betapass)
shift && _betapass="$1" shift && _betapass="$1"
;; ;;
--service)
shift && _service="$1"
;;
--version|-v) --version|-v)
echo "Version: $_scriptversion" echo "Version: $_scriptversion"
exit 0 exit 0
@@ -162,21 +171,12 @@ EOF
--createrepo-user) --createrepo-user)
shift && _createrepo_user="$1" shift && _createrepo_user="$1"
;; ;;
--service-mediaserver)
_service_ms="true"
;;
--service-x11vnc-mediaserver)
_service_xms="true"
;;
--vncpass) --vncpass)
shift && _vncpass="$1" shift && _vncpass="$1"
;; ;;
--display) --display)
shift && _display="$1" shift && _display="$1"
;; ;;
--service-createrepo)
_service_createrepo="true"
;;
--) --)
shift shift
break break
@@ -222,11 +222,6 @@ EOF
_sanityChecks () { _sanityChecks () {
if [[ -n $_service_ms && -n $_service_xms ]]; then
echo "--service-mediaserver is redundant when --service-x11vnc-mediaserver is set, unsetting..."
unset _service_ms
fi
if ! [[ "$ID" == "fedora" || "$ID" == "centos" ]] && \ if ! [[ "$ID" == "fedora" || "$ID" == "centos" ]] && \
[[ -z $_installrepo && -z $_buildonly && -z $_createrepo ]]; then [[ -z $_installrepo && -z $_buildonly && -z $_createrepo ]]; then
echo "You must specify --repo, --build, or --createrepo on non-RHEL distributions!" echo "You must specify --repo, --build, or --createrepo on non-RHEL distributions!"
@@ -253,7 +248,7 @@ EOF
_install_cmd_nogpg=("${_install_cmd[@]}" "--nogpgcheck") _install_cmd_nogpg=("${_install_cmd[@]}" "--nogpgcheck")
# append sudo to non-containers and non-root users # append sudo for non-root users
if [[ "$_user" != "root" ]]; then if [[ "$_user" != "root" ]]; then
_install_cmd=("sudo" "${_install_cmd[@]}") _install_cmd=("sudo" "${_install_cmd[@]}")
_install_cmd_nogpg=("sudo" "${_install_cmd_nogpg[@]}") _install_cmd_nogpg=("sudo" "${_install_cmd_nogpg[@]}")
@@ -631,23 +626,18 @@ EOF"
# RHEL # RHEL
if [[ "$ID" == "fedora" || "$ID" == "centos" ]] && [[ -x $(command -v firewall-cmd) ]]; then if [[ "$ID" == "fedora" || "$ID" == "centos" ]] && [[ -x $(command -v firewall-cmd) ]]; then
if ! firewall-cmd --get-services | grep -q jriver; then if ! firewall-cmd --get-services | grep -q jriver; then
if [[ "$_user" == "root" ]]; then
_firewallcmd=("firewall-cmd")
else
_firewallcmd=("sudo" "firewall-cmd")
fi
# shellcheck disable=SC2140,SC1079,SC1078 # shellcheck disable=SC2140,SC1079,SC1078
"${_bash_cmd[@]}" "cat <<-EOF > /etc/firewalld/services/jriver.xml "${_firewallcmd[@]}" --permanent --new-service=jriver
<?xml version="1.0" encoding="utf-8"?> "${_firewallcmd[@]}" --permanent --service=jriver --set-description="JRiver Media Center Media Server"
<service> "${_firewallcmd[@]}" --permanent --service=jriver --set-short="jriver"
<short>jriver</short> "${_firewallcmd[@]}" --permanent --service=jriver --add-port=52100-52200/tcp
<description>JRiver Media Center Media Server</description> "${_firewallcmd[@]}" --permanent --service=jriver --add-port=1900/udp
<port protocol="udp" port="1900" /> "${_firewallcmd[@]}" --reload
<port protocol="tcp" port="52100-52200"/>
</service>
EOF"
fi
# Enable service
if [[ "$_user" == "root" ]]; then
firewall-cmd --permanent --add-service=jriver
else
sudo firewall-cmd --permanent --add-service=jriver
fi fi
# Ubuntu # Ubuntu
@@ -710,19 +700,16 @@ EOF"
unset _service_fname _service_name _timer_fname _timer_name _systemd_user unset _service_fname _service_name _timer_fname _timer_name _systemd_user
_service_name="$1.service"
_timer_name="$1.timer"
if [[ "$_user" == "root" ]]; then if [[ "$_user" == "root" ]]; then
_service_fname="/usr/lib/systemd/system/$1.service" _service_fname="/usr/lib/systemd/system/$1.service"
_timer_fname="/usr/lib/systemd/system/$1.timer" _timer_fname="/usr/lib/systemd/system/$1.timer"
_service_name="$1.service"
_timer_name="$1.timer"
else else
if [[ ! -d "$HOME/.config/systemd/user" ]]; then _service_fname="/usr/lib/systemd/system/$1@.service"
mkdir -p "$HOME/.config/systemd/user" _timer_fname="/usr/lib/systemd/system/$1@.timer"
fi _service_name="$1@$_user.service"
_service_fname="$HOME/.config/systemd/user/$1.service" _timer_name="$1@$_user.timer"
_timer_fname="$HOME/.config/systemd/user/$1.timer"
_systemd_user="User=$_user"
fi fi
} }
@@ -738,7 +725,6 @@ After=graphical.target
[Service] [Service]
Type=simple Type=simple
$_systemd_user
Environment=DISPLAY=$_display Environment=DISPLAY=$_display
ExecStart=/usr/bin/mediacenter$_mversion /MediaServer ExecStart=/usr/bin/mediacenter$_mversion /MediaServer
Restart=always Restart=always
@@ -761,9 +747,9 @@ EOF"
_generateServiceVars "jriver-x11vnc" _generateServiceVars "jriver-x11vnc"
if [[ "$_novncauth" == "true" ]]; then if [[ "$_novncauth" == "true" ]]; then
_exec_start_cmd="/usr/bin/x11vnc -display $_display -geometry 1920x1080 -auth guess -forever -bg -nopw" _exec_start_cmd="/usr/bin/x11vnc -display $_display -noscr -geometry 1920x1080 -auth guess -forever -bg -nopw"
else else
_exec_start_cmd="/usr/bin/x11vnc -display $_display -geometry 1920x1080 -rfbauth $HOME/.vnc/jrmc_passwd -auth guess -forever -bg" _exec_start_cmd="/usr/bin/x11vnc -display $_display -noscr -geometry 1920x1080 -rfbauth $HOME/.vnc/jrmc_passwd -auth guess -forever -bg"
fi fi
"${_bash_cmd[@]}" "cat <<-EOF > $_service_fname "${_bash_cmd[@]}" "cat <<-EOF > $_service_fname
@@ -773,14 +759,13 @@ After=display-manager.service
[Service] [Service]
Type=forking Type=forking
$_systemd_user
Environment=DISPLAY=$_display Environment=DISPLAY=$_display
ExecStart=$_exec_start_cmd ExecStart=$_exec_start_cmd
Restart=always Restart=always
RestartSec=10 RestartSec=10
[Install] [Install]
WantedBy=graphical.target WantedBy=default.target
EOF" EOF"
_systemctlReloadAndEnable "$_service_name" _systemctlReloadAndEnable "$_service_name"
} }
@@ -795,11 +780,10 @@ EOF"
Description=Builds JRiver Media Center RPM file, moves it to the repo dir, and runs createrepo Description=Builds JRiver Media Center RPM file, moves it to the repo dir, and runs createrepo
[Service] [Service]
$_systemd_user
ExecStart=$_basedir/installJRMC --buildpath=$_outputdir --createrepo --createrepo-webroot $_createrepo_webroot --createrepo-user $_createrepo_user ExecStart=$_basedir/installJRMC --buildpath=$_outputdir --createrepo --createrepo-webroot $_createrepo_webroot --createrepo-user $_createrepo_user
[Install] [Install]
WantedBy=multi-user.target WantedBy=default.target
EOF" EOF"
"${_bash_cmd[@]}" "cat <<-EOF > $_timer_fname "${_bash_cmd[@]}" "cat <<-EOF > $_timer_fname
[Unit] [Unit]
@@ -894,21 +878,6 @@ EOF"
return $? return $?
fi fi
# Install MC systemd services
if [[ -n $_service_xms ]]; then
_serviceMediaserver
_serviceX11VNC
fi
if [[ -n $_service_ms ]]; then
_serviceMediaserver
fi
# Install createrepo systemd service
if [[ -n $_service_createrepo ]]; then
_serviceCreaterepo
fi
# Acquire source deb package # Acquire source deb package
_acquireDeb _acquireDeb
@@ -924,11 +893,27 @@ EOF"
return $? return $?
fi fi
# Install createrepo systemd service
if [[ "$_service" == "createrepo" ]]; then
_serviceCreaterepo
fi
# install MC # install MC
_installRPM _installRPM
_symlinkCerts _symlinkCerts
_restoreLicense _restoreLicense
_openFirewallPorts _openFirewallPorts
# Install MC systemd services
if [[ "$_service" == "x11vnc-mediaserver" ]]; then
_serviceMediaserver
_serviceX11VNC
fi
if [[ "$_service" == "mediaserver" ]]; then
_serviceMediaserver
fi
} }
# Execute function when called # Execute function when called