202 lines
6.2 KiB
Bash
Executable File
202 lines
6.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
VERS='3.10.9-11282025'
|
|
|
|
MMFOLDER="/opt/idssys/mediamanager"
|
|
TMPFOLDER="${MMFOLDER}/.tmp"
|
|
LOGFOLDER="${MMFOLDER}/logs"
|
|
[ ! -d ${TMPFOLDER} ] && mkdir ${TMPFOLDER}
|
|
[ ! -d ${LOGFOLDER} ] && mkdir ${LOGFOLDER}
|
|
MMSRV=$(/bin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)
|
|
|
|
# NM_FOLDER="/opt/idssys/nodemgmt"
|
|
# [ -f ${NM_FOLDER}/conf/defaults.local.inc ] && source ${NM_FOLDER}/defaults.inc
|
|
|
|
|
|
AVAILSERVICES=bazarr,jackett,lidarr,ombi,snap.overseerr.daemon,prowlarr,qbittorrent,radarr,radarr3d,readarr,sonarr,snap.tautulli.tautulli,huntarr,cleanuparr
|
|
UPDATESERVICES=bazarr,jackett,lidarr,ombi,organizr,prowlarr,qbittorrent,radarr,readarr,sonarr,cleanuparr
|
|
BETA_SERVICES=" readarr "
|
|
|
|
MM_LOGFILE=${LOGFOLDER}/logfile
|
|
MM_OUTPUT_LOGFILE=${LOGFOLDER}/outputs.check.log
|
|
MM_BACKUP_FOLDER='/opt/!MM-Service-Backups'
|
|
|
|
([ -z ${MM_VPN_RESTART+x} ] || [ ${MM_VPN_RESTART} -gt 85800 ]) && MM_VPN_RESTART=85800
|
|
|
|
[ ! -f ${MM_LOGFILE} ] && touch ${MM_LOGFILE}
|
|
[ ! -f ${MM_OUTPUT_LOGFILE} ] && touch ${MM_OUTPUT_LOGFILE}
|
|
[ ! -d ${MM_BACKUP_FOLDER} ] && mkdir ${MM_BACKUP_FOLDER}
|
|
|
|
IFS=,
|
|
ADD_ROUTES=(${ADDROUTES})
|
|
AVAIL_SERVICES=(${AVAILSERVICES})
|
|
UPDATE_SERVICES=(${UPDATESERVICES})
|
|
SERVICES_CHECK=(${SERVICESCHECK})
|
|
unset IFS
|
|
|
|
noheader=' check noup update update-organizr cron '
|
|
allowrun=' status update stop vpninfo '
|
|
|
|
declare -A MM_SERVICES
|
|
MM_SERVICES['openvpn']='OpenVPN (TorGuard VPN Tunnel)'
|
|
MM_SERVICES['wireguard']='WireGuard (TorGuard VPN Tunnel)'
|
|
MM_SERVICES['bazarr']='Bazarr (Subtitle Manager)'
|
|
MM_SERVICES['jackett']='Jackett (Torrent Indexing Manager)'
|
|
MM_SERVICES['lidarr']='Lidarr (Music Manager)'
|
|
MM_SERVICES['ombi']='Ombi (Download Requester)'
|
|
MM_SERVICES['snap.overseerr.daemon']='Overseerr (Download Requester)'
|
|
MM_SERVICES['qbittorrent']='qBittorrent (Torrent Downloader)'
|
|
MM_SERVICES['prowlarr']='Prowlarr (Torrent Indexing Manager)'
|
|
MM_SERVICES['radarr']='Radarr (Movies Manager)'
|
|
MM_SERVICES['radarr3d']='Radarr3D (3D Movies Manager)'
|
|
MM_SERVICES['readarr']='Readarr (Books Manager)'
|
|
MM_SERVICES['sonarr']='Sonarr (TV Shows Manager)'
|
|
MM_SERVICES['snap.tautulli.tautulli']='Tautulli (Plex Stats)'
|
|
MM_SERVICES['huntarr']='Huntarr (Hunts Missing/HQ Media)'
|
|
MM_SERVICES['cleanuparr']='Cleanuparr (Media Management Cleanser)'
|
|
|
|
|
|
declare -A MM_SERVICE_PORTS
|
|
MM_SERVICE_PORTS['ombi']='5000'
|
|
MM_SERVICE_PORTS['radarr']='5555'
|
|
MM_SERVICE_PORTS['radarr3d']='5556'
|
|
MM_SERVICE_PORTS['sonarr']='5656'
|
|
MM_SERVICE_PORTS['qbittorrent']='5858'
|
|
MM_SERVICE_PORTS['snap.tautulli.tautulli']='8181'
|
|
MM_SERVICE_PORTS['snap.overseerr.daemon']='5055'
|
|
MM_SERVICE_PORTS['lidarr']='8686'
|
|
MM_SERVICE_PORTS['jackett']='9117'
|
|
MM_SERVICE_PORTS['bazarr']='6767'
|
|
MM_SERVICE_PORTS['prowlarr']='9696'
|
|
MM_SERVICE_PORTS['readarr']='8787'
|
|
MM_SERVICE_PORTS['huntarr']='9705'
|
|
MM_SERVICE_PORTS['cleanuparr']='11011'
|
|
|
|
declare -A MM_SERVICE_CFG
|
|
MM_SERVICE_CFG['ombi']='/etc/Ombi'
|
|
MM_SERVICE_CFG['radarr']='/home/user/.config/Radarr'
|
|
MM_SERVICE_CFG['radarr3d']='/home/user/.config/Radarr3D'
|
|
MM_SERVICE_CFG['sonarr']='/home/user/.config/Sonarr'
|
|
MM_SERVICE_CFG['qbittorrent']='/home/user/.config/qBittorrent'
|
|
MM_SERVICE_CFG['snap.tautulli.tautulli']='/root/snap/tautulli'
|
|
MM_SERVICE_CFG['lidarr']='/home/user/.config/Lidarr'
|
|
MM_SERVICE_CFG['jackett']='/home/user/.config/Jackett'
|
|
MM_SERVICE_CFG['prowlarr']='/home/user/.config/Prowlarr'
|
|
MM_SERVICE_CFG['readarr']='/home/user/.config/Readarr'
|
|
MM_SERVICE_CFG['bazarr']=''
|
|
MM_SERVICE_CFG['huntarr']='/home/user/.config/huntarr'
|
|
MM_SERVICE_CFG['cleanuparr']='/opt/cleanuparr/config'
|
|
|
|
declare -A MM_SERVICE_APP
|
|
MM_SERVICE_APP['qbittorrent']='none'
|
|
MM_SERVICE_APP['radarr3d']='none'
|
|
MM_SERVICE_APP['sonarr']='/usr/lib/sonarr/bin'
|
|
MM_SERVICE_APP['snap.tautulli.tautulli']='/snap/tautulli/current'
|
|
|
|
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'
|
|
MM_UPDATE_REPO['organizr']='git'
|
|
MM_UPDATE_REPO['qbittorrent']='systemd'
|
|
MM_UPDATE_REPO['prowlarr']='prowlarr'
|
|
MM_UPDATE_REPO['readarr']='readarr'
|
|
MM_UPDATE_REPO['cleanuparr']='cleanuparr'
|
|
# MM_UPDATE_REPO['huntarr']='huntarr'
|
|
|
|
declare -A MM_UPDATE_REPO_GREP
|
|
MM_UPDATE_REPO_GREP['ombi']='linux-x64'
|
|
MM_UPDATE_REPO_GREP['radarr']='linux-core-x64'
|
|
MM_UPDATE_REPO_GREP['sonarr']='linux-core-x64'
|
|
MM_UPDATE_REPO_GREP['lidarr']='linux-core-x64'
|
|
MM_UPDATE_REPO_GREP['jackett']='LinuxAMDx64'
|
|
MM_UPDATE_REPO_GREP['bazarr']='zip'
|
|
MM_UPDATE_REPO_GREP['prowlarr']='linux-core-x64'
|
|
MM_UPDATE_REPO_GREP['readarr']='linux-core-x64'
|
|
MM_UPDATE_REPO_GREP['cleanuparr']='linux-amd64'
|
|
|
|
|
|
if [ "${VPN_INTERFACE}" = "tun0" ]; then #openvpn
|
|
VPN_START=(/bin/systemctl start openvpn)
|
|
VPN_STOP=(/bin/systemctl stop openvpn)
|
|
|
|
else #default wireguard
|
|
VPN_START=(sudo /usr/bin/wg-quick up ${VPN_INTERFACE})
|
|
VPN_STOP=(sudo /usr/bin/wg-quick down ${VPN_INTERFACE})
|
|
|
|
fi
|
|
|
|
DEBUGLOGSTOP(){
|
|
chktmend=`date +%s`
|
|
# chktm=$((chktmend-chktmstart))
|
|
# echo "$(date) - ${mmsv} Runtime: ${chktm}s" >> ${MM_LOGFILE}
|
|
}
|
|
|
|
MMUPDATECHECK(){
|
|
if curl -m 15 -s --head --request GET https://git.schroedercity.com | grep "HTTP/2 200" > /dev/null; then
|
|
cd /opt/idssys/mediamanager
|
|
if [ "`git log --pretty=%H ...refs/heads/master^ | head -n 1`" != "`git ls-remote origin -h refs/heads/master |cut -f1`" ]; then
|
|
touch ${TMPFOLDER}/update.available
|
|
else
|
|
/bin/rm -f ${TMPFOLDER}/update.available
|
|
fi
|
|
else
|
|
/bin/rm -f ${TMPFOLDER}/update.available
|
|
fi
|
|
}
|
|
|
|
SENDNOTICE(){
|
|
[ "${EMAIL_NOTICE}" != "" ] && echo -e "${2}\n\n$(date)" | mail -s "${1}" ${EMAIL_NOTICE}
|
|
[ "${PUSHOVER_APP_TOKEN}" != "" ] && PUSH_TO_MOBILE "${2}
|
|
|
|
$(date)" "${1}" ${3}
|
|
|
|
}
|
|
|
|
uptime_minutes() {
|
|
set `uptime -p`
|
|
local minutes=0
|
|
shift
|
|
while [ -n "$1" ]; do
|
|
case $2 in
|
|
day*)
|
|
((minutes+=$1*1440));;
|
|
hour*)
|
|
((minutes+=$1*60));;
|
|
minute*)
|
|
((minutes+=$1));;
|
|
esac
|
|
shift
|
|
shift
|
|
done
|
|
echo $minutes
|
|
}
|
|
declare -A SYSTEMD_CONF
|
|
SYSTEMD_CONF['prowlarr']="[Unit]
|
|
Description=Prowlarr Daemon
|
|
After=syslog.target network.target
|
|
[Service]
|
|
User=user
|
|
Group=users
|
|
Type=simple
|
|
|
|
ExecStart=/opt/Prowlarr/Prowlarr -nobrowser -data=/home/user/.config/Prowlarr/
|
|
TimeoutStopSec=20
|
|
KillMode=process
|
|
Restart=on-failure
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|