Compare commits
5 Commits
dev
...
2c3f1ee6f1
| Author | SHA1 | Date | |
|---|---|---|---|
| 2c3f1ee6f1 | |||
| cc85f59c31 | |||
| 2143aa10b5 | |||
| 326dc9ea66 | |||
| d5d51ab506 |
142
installJRMC
142
installJRMC
@@ -61,6 +61,8 @@ OPTIONS
|
||||
Specify URL to source DEB package (Default: automatic)
|
||||
--betapass PASSWORD
|
||||
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
|
||||
Print this script version and exit
|
||||
-d|--debug
|
||||
@@ -80,14 +82,13 @@ OPTIONS
|
||||
--createrepo-user USER
|
||||
The web server user (Default: www-user)
|
||||
|
||||
See SERVICES for service-createrepo to automate createrepo
|
||||
|
||||
SERVICES
|
||||
--service-mediaserver
|
||||
Install JRiver MC mediaserver service
|
||||
--service-x11vnc-mediaserver
|
||||
Install JRiver MC mediaserver service and x11vnc (for headless installations without
|
||||
an existing X server)
|
||||
mediaserver
|
||||
Create and enable a JRiver MC Media Server systemd service for the current user
|
||||
|
||||
x11vnc-mediaserver
|
||||
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
|
||||
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
|
||||
unaccessible)
|
||||
|
||||
--service-createrepo
|
||||
Install service to build latest MC and run createrepo hourly
|
||||
createrepo
|
||||
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
|
||||
|
||||
# Exit using passed exit code
|
||||
@@ -108,7 +114,7 @@ EOF
|
||||
|
||||
_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"
|
||||
while true; do
|
||||
case "$1" in
|
||||
@@ -138,6 +144,9 @@ EOF
|
||||
--betapass)
|
||||
shift && _betapass="$1"
|
||||
;;
|
||||
--service)
|
||||
shift && _service="$1"
|
||||
;;
|
||||
--version|-v)
|
||||
echo "Version: $_scriptversion"
|
||||
exit 0
|
||||
@@ -162,21 +171,12 @@ EOF
|
||||
--createrepo-user)
|
||||
shift && _createrepo_user="$1"
|
||||
;;
|
||||
--service-mediaserver)
|
||||
_service_ms="true"
|
||||
;;
|
||||
--service-x11vnc-mediaserver)
|
||||
_service_xms="true"
|
||||
;;
|
||||
--vncpass)
|
||||
shift && _vncpass="$1"
|
||||
;;
|
||||
--display)
|
||||
shift && _display="$1"
|
||||
;;
|
||||
--service-createrepo)
|
||||
_service_createrepo="true"
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
@@ -186,7 +186,7 @@ EOF
|
||||
done
|
||||
else
|
||||
echo "Incorrect options provided"
|
||||
_print-help-and-exit 1
|
||||
_printHelpAndExit 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -222,11 +222,6 @@ EOF
|
||||
|
||||
_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" ]] && \
|
||||
[[ -z $_installrepo && -z $_buildonly && -z $_createrepo ]]; then
|
||||
echo "You must specify --repo, --build, or --createrepo on non-RHEL distributions!"
|
||||
@@ -253,7 +248,7 @@ EOF
|
||||
|
||||
_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
|
||||
_install_cmd=("sudo" "${_install_cmd[@]}")
|
||||
_install_cmd_nogpg=("sudo" "${_install_cmd_nogpg[@]}")
|
||||
@@ -631,23 +626,18 @@ EOF"
|
||||
# RHEL
|
||||
if [[ "$ID" == "fedora" || "$ID" == "centos" ]] && [[ -x $(command -v firewall-cmd) ]]; 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
|
||||
"${_bash_cmd[@]}" "cat <<-EOF > /etc/firewalld/services/jriver.xml
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<service>
|
||||
<short>jriver</short>
|
||||
<description>JRiver Media Center Media Server</description>
|
||||
<port protocol="udp" port="1900" />
|
||||
<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
|
||||
"${_firewallcmd[@]}" --permanent --new-service=jriver
|
||||
"${_firewallcmd[@]}" --permanent --service=jriver --set-description="JRiver Media Center Media Server"
|
||||
"${_firewallcmd[@]}" --permanent --service=jriver --set-short="jriver"
|
||||
"${_firewallcmd[@]}" --permanent --service=jriver --add-port=52100-52200/tcp
|
||||
"${_firewallcmd[@]}" --permanent --service=jriver --add-port=1900/udp
|
||||
"${_firewallcmd[@]}" --reload
|
||||
fi
|
||||
|
||||
# Ubuntu
|
||||
@@ -700,29 +690,28 @@ EOF"
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now "$1"
|
||||
else
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now "$1"
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
_generateServiceVars () {
|
||||
|
||||
unset _service_fname _service_name _timer_fname _timer_name _systemd_user
|
||||
|
||||
_service_name="$1.service"
|
||||
_timer_name="$1.timer"
|
||||
unset _service_fname _service_name _timer_fname _timer_name _user_specifier
|
||||
|
||||
if [[ "$_user" == "root" ]]; then
|
||||
_service_fname="/usr/lib/systemd/system/$1.service"
|
||||
_timer_fname="/usr/lib/systemd/system/$1.timer"
|
||||
_service_name="$1.service"
|
||||
_timer_name="$1.timer"
|
||||
_user_specifier=""
|
||||
else
|
||||
if [[ ! -d "$HOME/.config/systemd/user" ]]; then
|
||||
mkdir -p "$HOME/.config/systemd/user"
|
||||
fi
|
||||
_service_fname="$HOME/.config/systemd/user/$1.service"
|
||||
_timer_fname="$HOME/.config/systemd/user/$1.timer"
|
||||
_systemd_user="User=$_user"
|
||||
_service_fname="/usr/lib/systemd/system/$1@.service"
|
||||
_timer_fname="/usr/lib/systemd/system/$1@.timer"
|
||||
_service_name="$1@$_user.service"
|
||||
_timer_name="$1@$_user.timer"
|
||||
_user_specifier="User=%I"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -737,8 +726,8 @@ Description=JRiver Media Center $_mversion Media Server
|
||||
After=graphical.target
|
||||
|
||||
[Service]
|
||||
$_user_specifier
|
||||
Type=simple
|
||||
$_systemd_user
|
||||
Environment=DISPLAY=$_display
|
||||
ExecStart=/usr/bin/mediacenter$_mversion /MediaServer
|
||||
Restart=always
|
||||
@@ -761,9 +750,9 @@ EOF"
|
||||
_generateServiceVars "jriver-x11vnc"
|
||||
|
||||
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
|
||||
_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
|
||||
|
||||
"${_bash_cmd[@]}" "cat <<-EOF > $_service_fname
|
||||
@@ -772,15 +761,15 @@ Description=x11vnc
|
||||
After=display-manager.service
|
||||
|
||||
[Service]
|
||||
$_user_specifier
|
||||
Type=forking
|
||||
$_systemd_user
|
||||
Environment=DISPLAY=$_display
|
||||
ExecStart=$_exec_start_cmd
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical.target
|
||||
WantedBy=default.target
|
||||
EOF"
|
||||
_systemctlReloadAndEnable "$_service_name"
|
||||
}
|
||||
@@ -795,11 +784,11 @@ EOF"
|
||||
Description=Builds JRiver Media Center RPM file, moves it to the repo dir, and runs createrepo
|
||||
|
||||
[Service]
|
||||
$_systemd_user
|
||||
$_user_specifier
|
||||
ExecStart=$_basedir/installJRMC --buildpath=$_outputdir --createrepo --createrepo-webroot $_createrepo_webroot --createrepo-user $_createrepo_user
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
WantedBy=default.target
|
||||
EOF"
|
||||
"${_bash_cmd[@]}" "cat <<-EOF > $_timer_fname
|
||||
[Unit]
|
||||
@@ -894,21 +883,6 @@ EOF"
|
||||
return $?
|
||||
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
|
||||
_acquireDeb
|
||||
|
||||
@@ -924,11 +898,27 @@ EOF"
|
||||
return $?
|
||||
fi
|
||||
|
||||
# Install createrepo systemd service
|
||||
if [[ "$_service" == "createrepo" ]]; then
|
||||
_serviceCreaterepo
|
||||
fi
|
||||
|
||||
|
||||
# install MC
|
||||
_installRPM
|
||||
_symlinkCerts
|
||||
_restoreLicense
|
||||
_openFirewallPorts
|
||||
|
||||
# Install MC systemd services
|
||||
if [[ "$_service" == "x11vnc-mediaserver" ]]; then
|
||||
_serviceMediaserver
|
||||
_serviceX11VNC
|
||||
fi
|
||||
|
||||
if [[ "$_service" == "mediaserver" ]]; then
|
||||
_serviceMediaserver
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute function when called
|
||||
|
||||
Reference in New Issue
Block a user