From c933626e79f267a2e2579daef9b12c6bda688c92 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Fri, 21 Apr 2023 15:47:43 -0500 Subject: [PATCH] update --- defaults.inc | 8 ++- mm-scripts.sh | 179 ++++++++++++++++++++++++++++---------------------- 2 files changed, 107 insertions(+), 80 deletions(-) diff --git a/defaults.inc b/defaults.inc index 279f906..e71c5da 100755 --- a/defaults.inc +++ b/defaults.inc @@ -1,12 +1,12 @@ #!/usr/bin/env bash -VERS='4.04202023' +VERS='4.04212023' MMFOLDER="/opt/idssys/mediamanager" MMSRV=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) -UPDATESERVICES=radarr,lidarr,jackett,bazarr -BETA_SERVICES=" radarr " +UPDATESERVICES=radarr,lidarr,jackett,bazarr,ombi,sonarr +BETA_SERVICES=" " IFS=, UPDATE_SERVICES=(${UPDATESERVICES}) @@ -45,8 +45,10 @@ MM_SERVICE_PORTS['bazarr']='6767' declare -A MM_UPDATE_REPO #MM_UPDATE_REPO['ombi']='Ombi-app' +MM_UPDATE_REPO['ombi']='systemd' MM_UPDATE_REPO['radarr']='radarr' #MM_UPDATE_REPO['sonarr']='sonarr' +MM_UPDATE_REPO['sonarr']='systemd' MM_UPDATE_REPO['lidarr']='lidarr' MM_UPDATE_REPO['jackett']='jackett' MM_UPDATE_REPO['bazarr']='morpheus65535' diff --git a/mm-scripts.sh b/mm-scripts.sh index c843720..b9ac399 100755 --- a/mm-scripts.sh +++ b/mm-scripts.sh @@ -650,91 +650,116 @@ UPDATESERVICE(){ echo -e "${idsCL[Green]}Updating ${usrvc^} Service${idsCL[Default]}" DIVIDER . lightGreen - msg="Stopping service and preparing" - c=0; spc=''; spc1=$((${cw_spc}-${#msg})) - until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" - - rm -f ${MMFOLDER}/logs/update.${usrvc} - touch ${MMFOLDER}/logs/update.${usrvc} - - /bin/systemctl stop ${usrvc} >> ${MMFOLDER}/logs/update.${usrvc} - [ "${usrvc}" == "radarr" ] && [[ " ${SERVICES_CHECK[*]} " =~ " radarr3d " ]] && /bin/systemctl stop radarr3d >> ${MMFOLDER}/logs/update.${usrvc} - - tmpfile=/tmp/${usrvc}-update.tar.gz - bak=/opt/${usrvc}.bak.tgz - [[ -f ${bak} ]] && rm -f "${bak}" &>/dev/null - [[ -f ${tmpfile} ]] && rm -f "${tmpfile}" &>/dev/null + if [[ " ${UPDATE_SERVICES[*]} " =~ " ${usrvc} " ]]; then - echo -e "${idsCL[Green]}Done${idsCL[Default]}" + msg="Stopping service and preparing" + c=0; spc=''; spc1=$((${cw_spc}-${#msg})) + until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" - msg="Finding latest update url" - c=0; spc=''; spc1=$((${cw_spc}-${#msg})) - until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" - - if [[ $BETA_SERVICES == *${usrvc}* ]]; then - latest_release_url=`curl -s https://api.github.com/repos/${MM_UPDATE_REPO[${usrvc}]}/${usrvc}/releases | jq -r '.[0].assets[].browser_download_url' | grep "${MM_UPDATE_REPO_GREP[${usrvc}]}" | cut -d '"' -f 4 | grep -i 'https://'` - echo "$(date) - Updating Service (${usrvc}) : BETA UPDATEURL = ${latest_release_url}" >> $logfile - beta="BETA " - else - latest_release_url=`curl -s https://api.github.com/repos/${MM_UPDATE_REPO[${usrvc}]}/${usrvc}/releases/latest | jq -r '.assets[].browser_download_url' | grep "${MM_UPDATE_REPO_GREP[${usrvc}]}" | cut -d '"' -f 4 | grep -i 'https://'` - echo "$(date) - Updating Service (${usrvc}) : UPDATEURL = ${latest_release_url}" >> $logfile - beta="" - fi - - echo -e "${idsCL[Green]}Done${idsCL[Default]}" - echo -e "${idsCL[LightCyan]}${beta}Download URL: ${idsCL[LightGreen]}${latest_release_url}${idsCL[Default]}" - echo + rm -f ${MMFOLDER}/logs/update.${usrvc} + touch ${MMFOLDER}/logs/update.${usrvc} - msg="Downloading and updating" - c=0; spc=''; spc1=$((${cw_spc}-${#msg})) - until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" - - if curl --output /dev/null --silent --head --fail $latest_release_url; then - wget -qO ${tmpfile} $latest_release_url >> ${MMFOLDER}/logs/update.${usrvc} - if [[ ( $? -eq 0 ) && ( -f ${tmpfile} ) ]]; then - if [ "${usrvc}" != "bazarr" ]; then - rm -Rf /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} - mkdir /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} - fi - /bin/tar -cpPf $bak /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} - - if [ "${usrvc}" == "ombi" ]; then - /bin/tar xfP ${tmpfile} -C /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} - elif [ "${usrvc}" == "bazarr" ]; then - /usr/bin/unzip -oqq ${tmpfile} -d /opt/${usrvc^} - else - /bin/tar xfP ${tmpfile} -C /opt >> ${MMFOLDER}/logs/update.${usrvc} - fi - chown -R user:users /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} - fi - fi + /bin/systemctl stop ${usrvc} >> ${MMFOLDER}/logs/update.${usrvc} + [ "${usrvc}" == "radarr" ] && [[ " ${SERVICES_CHECK[*]} " =~ " radarr3d " ]] && /bin/systemctl stop radarr3d >> ${MMFOLDER}/logs/update.${usrvc} - echo -e "${idsCL[Green]}Done${idsCL[Default]}" - - rm -f ${tmpfile} &>/dev/null + tmpfile=/tmp/${usrvc}-update.tar.gz + bak=/opt/${usrvc}.bak.tgz + [[ -f ${bak} ]] && rm -f "${bak}" &>/dev/null + [[ -f ${tmpfile} ]] && rm -f "${tmpfile}" &>/dev/null - msg="Starting service back up" - c=0; spc=''; spc1=$((${cw_spc}-${#msg})) - until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" - - OUT=$(ip link | grep "$VPN_INTERFACE") >/dev/null 2>&1 - if [ ${#OUT} -ne 0 ] && [ ! -f ${MMFOLDER}/mm.stop ] && [ ! -f ${MMFOLDER}/mm.noservices ] && [[ " ${SERVICES_CHECK[*]} " =~ " ${usrvc} " ]]; then - /bin/systemctl start ${usrvc} >> ${MMFOLDER}/logs/update.${usrvc} - [ "${usrvc}" == "radarr" ] && [[ " ${SERVICES_CHECK[*]} " =~ " radarr3d " ]] && /bin/systemctl start radarr3d >> ${MMFOLDER}/logs/update.${usrvc} echo -e "${idsCL[Green]}Done${idsCL[Default]}" - else - echo -e "${idsCL[LightCyan]}Skipping${idsCL[Default]}" - fi - rm -f ${MMFOLDER}/mm.update.stop - echo "$(date) - Updating Service (${usrvc}) : Completed" >> $logfile + if [ "${MM_UPDATE_REPO[${usrvc}]}" != "" ] && [ "${MM_UPDATE_REPO[${usrvc}]}" != "systemd" ]; then - echo - echo -e "${idsCL[Green]}${usrvc} Service has been updated${idsCL[Default]}" + msg="Finding latest update url" + c=0; spc=''; spc1=$((${cw_spc}-${#msg})) + until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" + + if [[ $BETA_SERVICES == *${usrvc}* ]]; then + latest_release_url=`curl -s https://api.github.com/repos/${MM_UPDATE_REPO[${usrvc}]}/${usrvc}/releases | jq -r '.[0].assets[].browser_download_url' | grep "${MM_UPDATE_REPO_GREP[${usrvc}]}" | cut -d '"' -f 4 | grep -i 'https://'` + echo "$(date) - Updating Service (${usrvc}) : BETA UPDATEURL = ${latest_release_url}" >> $logfile + beta="BETA " + else + latest_release_url=`curl -s https://api.github.com/repos/${MM_UPDATE_REPO[${usrvc}]}/${usrvc}/releases/latest | jq -r '.assets[].browser_download_url' | grep "${MM_UPDATE_REPO_GREP[${usrvc}]}" | cut -d '"' -f 4 | grep -i 'https://'` + echo "$(date) - Updating Service (${usrvc}) : UPDATEURL = ${latest_release_url}" >> $logfile + beta="" + fi + + echo -e "${idsCL[Green]}Done${idsCL[Default]}" + echo -e "${idsCL[LightCyan]}${beta}Download URL: ${idsCL[LightGreen]}${latest_release_url}${idsCL[Default]}" + echo + + msg="Downloading and updating" + c=0; spc=''; spc1=$((${cw_spc}-${#msg})) + until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" + + if curl --output /dev/null --silent --head --fail $latest_release_url; then + wget -qO ${tmpfile} $latest_release_url >> ${MMFOLDER}/logs/update.${usrvc} + if [[ ( $? -eq 0 ) && ( -f ${tmpfile} ) ]]; then + if [ "${usrvc}" != "bazarr" ]; then + rm -Rf /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} + mkdir /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} + fi + /bin/tar -cpPf $bak /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} + + if [ "${usrvc}" == "ombi" ]; then + /bin/tar xfP ${tmpfile} -C /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} + elif [ "${usrvc}" == "bazarr" ]; then + /usr/bin/unzip -oqq ${tmpfile} -d /opt/${usrvc^} + else + /bin/tar xfP ${tmpfile} -C /opt >> ${MMFOLDER}/logs/update.${usrvc} + fi + chown -R user:users /opt/${usrvc^} >> ${MMFOLDER}/logs/update.${usrvc} + fi + fi + + echo -e "${idsCL[Green]}Done${idsCL[Default]}" + + rm -f ${tmpfile} &>/dev/null + + elif [ "${MM_UPDATE_REPO[${usrvc}]}" == "systemd" ]; then + + msg="Updating" + c=0; spc=''; spc1=$((${cw_spc}-${#msg})) + until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" + + /usr/bin/apt install ${usrvc} >/dev/null 2>&1 + /bin/systemctl disable ${usrvc} >/dev/null 2>&1 + + echo -e "${idsCL[Green]}Done${idsCL[Default]}" + + + fi + + + msg="Starting service back up" + c=0; spc=''; spc1=$((${cw_spc}-${#msg})) + until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -en "${idsCL[White]}${msg}${spc} : ${idsCL[Default]}" + + OUT=$(ip link | grep "$VPN_INTERFACE") >/dev/null 2>&1 + if [ ${#OUT} -ne 0 ] && [ ! -f ${MMFOLDER}/mm.stop ] && [ ! -f ${MMFOLDER}/mm.noservices ] && [[ " ${SERVICES_CHECK[*]} " =~ " ${usrvc} " ]]; then + /bin/systemctl start ${usrvc} >> ${MMFOLDER}/logs/update.${usrvc} + [ "${usrvc}" == "radarr" ] && [[ " ${SERVICES_CHECK[*]} " =~ " radarr3d " ]] && /bin/systemctl start radarr3d >> ${MMFOLDER}/logs/update.${usrvc} + echo -e "${idsCL[Green]}Done${idsCL[Default]}" + else + echo -e "${idsCL[LightCyan]}Skipping${idsCL[Default]}" + fi + + rm -f ${MMFOLDER}/mm.update.stop + echo "$(date) - Updating Service (${usrvc}) : Completed" >> $logfile + + echo + echo -e "${idsCL[Green]}${usrvc} Service has been updated${idsCL[Default]}" + + else + echo -e "${idsCL[Red]}Not currently available to update${idsCL[Default]}" + + fi else echo -e "${idsCL[Red]}No service selected for update${idsCL[Default]}"