diff --git a/installJRMC b/installJRMC index 6b8428c..2166d8e 100755 --- a/installJRMC +++ b/installJRMC @@ -561,7 +561,7 @@ EOF ####################################### # Installs JRiver Media Center from a repository # Returns: - # 0 if JRiver Media Center installed sucessfully, 1 if installation failed + # 0 if JRiver Media Center installed sucessfully ####################################### _installMCFromRepo() { @@ -581,19 +581,30 @@ EOF' local _mcpkg="MediaCenter" elif [[ "$ID" =~ ^(ubuntu|debian)$ ]]; then wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | _ifSudo apt-key add - > /dev/null 2>&1 - _ifSudo wget "http://dist.jriver.com/latest/mediacenter/mediacenter$_mversion.list" -O "/etc/apt/sources.list.d/jriver.list" > /dev/null 2>&1 + _bash_cmd 'cat <<-EOF > /etc/apt/sources.list.d/jriver.list +deb [arch=amd64,i386,armhf] http://dist.jriver.com/latest/mediacenter/ jessie main +EOF' local _mcpkg="mediacenter$_mversion" fi # Update packages and install JRiver MediaCenter - if _pkg_update > /dev/null 2>&1 && _pkg_install "$_mcpkg" > /dev/null 2>&1; then + if [[ -n $_debug ]]; then + _pkg_update && \ + _pkg_install "$_mcpkg" + else + _pkg_update > /dev/null 2>&1 && \ + _pkg_install "$_mcpkg" > /dev/null 2>&1 + fi + + # shellcheck disable=SC2181 + # Rationale: More compact to check this once + if [[ $? -eq 0 ]]; then echo "JRiver Media Center installed successfully!" return 0 else err "JRiver Media Center installation failed!" - return 1 + exit 1 fi - } @@ -917,13 +928,43 @@ EOF" ####################################### - # Create the VNC password file - # Requires: - # _vncpass + # Create the x11vnc password file # Globals: # _novncauth # Returns: - # 0 if ports opened sucessfully, 1 if not + # 0 if password created sucessfully, 1 if not + ####################################### + _setX11VNCPass() { + + _runDebug "${FUNCNAME[0]}" + + _vncpassfile="$HOME/.vnc/jrmc_passwd" + + if [[ -f "$_vncpassfile" ]]; then + if [[ -z $_vncpass ]]; then + 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" + fi + fi + + if [[ -n $_vncpass ]]; then + if ! x11vnc -storepasswd "$_vncpass" "$_vncpassfile"; then + err "Could not create VNC password file" + return 1 + fi + else + _novncauth="true" + fi + } + + + ####################################### + # Create the vncserver password file + # Returns: + # 0 if password created sucessfully, 1 if not ####################################### _setVNCPass() { @@ -931,15 +972,21 @@ EOF" _vncpassfile="$HOME/.vnc/jrmc_passwd" - if [[ -n $_vncpass ]]; then - # Remove existing password file if it exists and write a new one - [[ -f "$_vncpassfile" ]] && rm -f "$_vncpassfile" - if ! x11vnc -storepasswd "$_vncpass" "$_vncpassfile"; then - err "Could not create VNC password file" - return 1 + if [[ -f "$_vncpassfile" ]]; then + if [[ -z $_vncpass ]]; then + 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" fi - elif [[ ! -f "$_vncpassfile" ]]; then - _novncauth="true" + fi + + [[ -z $_vncpass ]] && _vncpass="" + + if ! echo "$_vncpass" | vncpasswd -f > "$_vncpassfile"; then + err "Could not create VNC password file" + return 1 fi } @@ -964,8 +1011,6 @@ EOF" _timer_name="jriver-${1}@$_user.timer" _user_specifier="User=%I" fi - - [[ -z $_display ]] && _display="${DISPLAY:-":0"}" } @@ -973,6 +1018,8 @@ EOF" _runDebug "${FUNCNAME[0]}" + [[ -z $_display ]] && _display="${DISPLAY:-":0"}" + _bash_cmd "cat <<-EOF > $_service_fname [Unit] Description=JRiver Media Center $_mversion Media Server @@ -1000,6 +1047,8 @@ EOF" _runDebug "${FUNCNAME[0]}" + [[ -z $_display ]] && _display="${DISPLAY:-":0"}" + _bash_cmd "cat <<-EOF > $_service_fname [Unit] Description=JRiver Media Center $_mversion @@ -1027,11 +1076,12 @@ EOF" _runDebug "${FUNCNAME[0]}" - _setVNCPass - _installPackage tigervnc-server + _setVNCPass + if [[ -z $_display ]]; then + # If we are running on existing X server then increment DISPLAY by one if [[ -n $DISPLAY ]]; then _display=$(( ${DISPLAY#:} + 1 )) _display=":$_display" @@ -1040,12 +1090,6 @@ EOF" fi fi - if [[ "$_novncauth" == "true" ]]; then - _exec_start_cmd="/usr/bin/vncserver $_display -geometry 1440x900 -alwaysshared -fg" - else - _exec_start_cmd="/usr/bin/vncserver $_display -geometry 1440x900 -alwaysshared -fg -rfbauth $HOME/.vnc/jrmc_passwd" - fi - _bash_cmd "cat <<-EOF > $_service_fname [Unit] Description=Remote desktop service (VNC) @@ -1055,7 +1099,7 @@ After=syslog.target network.target Type=simple $_user_specifier ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill $_display > /dev/null 2>&1 || :' -ExecStart=$_exec_start_cmd +ExecStart=/usr/bin/vncserver $_display -geometry 1440x900 -alwaysshared -fg -rfbauth $HOME/.vnc/jrmc_passwd ExecStop=/usr/bin/vncserver -kill $_display [Install] @@ -1071,7 +1115,7 @@ EOF" _installPackage x11vnc - _setVNCPass + _setX11VNCPass if [[ "$_novncauth" == "true" ]]; then _exec_start_cmd="/usr/bin/x11vnc -display $_display -noscr -geometry 1920x1080 -auth guess -forever -bg -nopw"