| 
									
										
										
										
											2024-04-20 03:17:37 -04:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func) | 
					
						
							|  |  |  | # Copyright (c) 2021-2024 tteck | 
					
						
							|  |  |  | # Author: tteck (tteckster) | 
					
						
							|  |  |  | # Co-Author: remz1337 | 
					
						
							|  |  |  | # License: MIT | 
					
						
							|  |  |  | # https://github.com/tteck/Proxmox/raw/main/LICENSE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function header_info { | 
					
						
							|  |  |  | clear | 
					
						
							|  |  |  | cat <<"EOF" | 
					
						
							| 
									
										
										
										
											2024-04-20 03:38:08 -04:00
										 |  |  |    ______      ___ __                _       __     __ | 
					
						
							|  |  |  |   / ____/___ _/ (_) /_  ________    | |     / /__  / /_ | 
					
						
							|  |  |  |  / /   / __ `/ / / __ \/ ___/ _ \___| | /| / / _ \/ __ \
 | 
					
						
							|  |  |  | / /___/ /_/ / / / /_/ / /  /  __/___/ |/ |/ /  __/ /_/ / | 
					
						
							|  |  |  | \____/\__,_/_/_/_.___/_/   \___/    |__/|__/\___/_.___/ | 
					
						
							| 
									
										
										
										
											2024-04-20 03:22:18 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-20 03:17:37 -04:00
										 |  |  | EOF | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | header_info | 
					
						
							|  |  |  | echo -e "Loading..." | 
					
						
							| 
									
										
										
										
											2024-04-20 03:38:40 -04:00
										 |  |  | APP="Calibre-Web" | 
					
						
							| 
									
										
										
										
											2024-04-20 03:17:37 -04:00
										 |  |  | var_disk="4" | 
					
						
							|  |  |  | var_cpu="2" | 
					
						
							|  |  |  | var_ram="2048" | 
					
						
							|  |  |  | var_os="debian" | 
					
						
							|  |  |  | var_version="12" | 
					
						
							|  |  |  | variables | 
					
						
							|  |  |  | color | 
					
						
							|  |  |  | catch_errors | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function default_settings() { | 
					
						
							|  |  |  |   CT_TYPE="1" | 
					
						
							|  |  |  |   PW="" | 
					
						
							|  |  |  |   CT_ID=$NEXTID | 
					
						
							|  |  |  |   HN=$NSAPP | 
					
						
							|  |  |  |   DISK_SIZE="$var_disk" | 
					
						
							|  |  |  |   CORE_COUNT="$var_cpu" | 
					
						
							|  |  |  |   RAM_SIZE="$var_ram" | 
					
						
							|  |  |  |   BRG="vmbr0" | 
					
						
							|  |  |  |   NET="dhcp" | 
					
						
							|  |  |  |   GATE="" | 
					
						
							|  |  |  |   APT_CACHER="" | 
					
						
							|  |  |  |   APT_CACHER_IP="" | 
					
						
							|  |  |  |   DISABLEIP6="no" | 
					
						
							|  |  |  |   MTU="" | 
					
						
							|  |  |  |   SD="" | 
					
						
							|  |  |  |   NS="" | 
					
						
							|  |  |  |   MAC="" | 
					
						
							|  |  |  |   VLAN="" | 
					
						
							|  |  |  |   SSH="no" | 
					
						
							|  |  |  |   VERB="no" | 
					
						
							|  |  |  |   echo_default | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function update_script() { | 
					
						
							|  |  |  |   if [[ ! -f /etc/systemd/system/cps.service ]]; then | 
					
						
							|  |  |  |     msg_error "No ${APP} Installation Found!" | 
					
						
							|  |  |  |     exit | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   header_info | 
					
						
							|  |  |  |   msg_info "Updating $APP LXC" | 
					
						
							|  |  |  |   systemctl stop cps | 
					
						
							|  |  |  |   cd /opt/kepubify | 
					
						
							|  |  |  |   rm kepubify-linux-64bit | 
					
						
							|  |  |  |   curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit &>/dev/null | 
					
						
							|  |  |  |   chmod +x kepubify-linux-64bit | 
					
						
							|  |  |  |   menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
 | 
					
						
							|  |  |  |     "2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
 | 
					
						
							|  |  |  |     "3" "Enables displaying of additional author infos on the authors page" OFF \
 | 
					
						
							|  |  |  |     "4" "Enables login via LDAP server" OFF \
 | 
					
						
							|  |  |  |     "5" "Enables login via google or github oauth" OFF \
 | 
					
						
							|  |  |  |     "6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF \
 | 
					
						
							|  |  |  |     "7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF \
 | 
					
						
							|  |  |  |     "8" "Enables syncing with your kobo reader" OFF ) | 
					
						
							|  |  |  |   if [ -f "/opt/calibre-web/options.txt" ]; then | 
					
						
							|  |  |  |     cps_options="$(cat /opt/calibre-web/options.txt)" | 
					
						
							|  |  |  |     IFS=',' read -ra ADDR <<< "$cps_options" | 
					
						
							|  |  |  |     for i in "${ADDR[@]}"; do | 
					
						
							|  |  |  | 	  if [ $i == "gdrive" ]; then | 
					
						
							|  |  |  | 	    line=0 | 
					
						
							|  |  |  | 	  elif [ $i == "gmail" ]; then | 
					
						
							|  |  |  | 	    line=1 | 
					
						
							| 
									
										
										
										
											2024-08-23 11:39:31 -04:00
										 |  |  |           elif [ $i == "goodreads" ]; then | 
					
						
							| 
									
										
										
										
											2024-04-20 03:17:37 -04:00
										 |  |  | 	    line=2 | 
					
						
							|  |  |  | 	  elif [ $i == "ldap" ]; then | 
					
						
							|  |  |  | 	    line=3 | 
					
						
							|  |  |  | 	  elif [ $i == "oauth" ]; then | 
					
						
							|  |  |  | 	    line=4 | 
					
						
							|  |  |  | 	  elif [ $i == "metadata" ]; then | 
					
						
							|  |  |  | 	    line=5 | 
					
						
							|  |  |  | 	  elif [ $i == "comics" ]; then | 
					
						
							|  |  |  | 	    line=6 | 
					
						
							|  |  |  | 	  elif [ $i == "kobo" ]; then | 
					
						
							|  |  |  | 	    line=7 | 
					
						
							|  |  |  | 	  fi | 
					
						
							|  |  |  |       array_index=$(( 3*line + 2 )) | 
					
						
							|  |  |  |       menu_array[$array_index]=ON | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi | 
					
						
							|  |  |  |   CHOICES=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CALIBRE-WEB OPTIONS" --separate-output --checklist "Choose Additional Options" 15 125 8 "${menu_array[@]}" 3>&1 1>&2 2>&3) | 
					
						
							|  |  |  |   spinner & | 
					
						
							|  |  |  |   SPINNER_PID=$! | 
					
						
							| 
									
										
										
										
											2024-08-23 11:39:31 -04:00
										 |  |  |   options=() | 
					
						
							| 
									
										
										
										
											2024-04-20 03:17:37 -04:00
										 |  |  |   if [ ! -z "$CHOICES" ]; then | 
					
						
							|  |  |  |     for CHOICE in $CHOICES; do | 
					
						
							|  |  |  |       case "$CHOICE" in | 
					
						
							|  |  |  |       "1") | 
					
						
							|  |  |  |         options+=( gdrive ) | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       "2") | 
					
						
							|  |  |  |         options+=( gmail ) | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       "3") | 
					
						
							|  |  |  |         options+=( goodreads ) | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       "4") | 
					
						
							|  |  |  |         options+=( ldap ) | 
					
						
							|  |  |  |         apt-get install -qqy libldap2-dev libsasl2-dev | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       "5") | 
					
						
							|  |  |  |         options+=( oauth ) | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       "6") | 
					
						
							|  |  |  |         options+=( metadata ) | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       "7") | 
					
						
							|  |  |  |         options+=( comics ) | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       "8") | 
					
						
							|  |  |  |         options+=( kobo ) | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       *) | 
					
						
							|  |  |  |         echo "Unsupported item $CHOICE!" >&2 | 
					
						
							|  |  |  |         exit 1 | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       esac | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [ ! -z "$options" ] && [ ${#options[@]} -gt 0 ]; then | 
					
						
							|  |  |  |     cps_options=$(IFS=, ; echo "${options[*]}") | 
					
						
							|  |  |  |     echo $cps_options > /opt/calibre-web/options.txt | 
					
						
							|  |  |  |     pip install --upgrade calibreweb[$cps_options] | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     rm /opt/calibre-web/options.txt 2> /dev/null | 
					
						
							|  |  |  |     pip install --upgrade calibreweb | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   systemctl start cps | 
					
						
							|  |  |  |   msg_ok "Updated $APP LXC" | 
					
						
							|  |  |  |   exit | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | start | 
					
						
							|  |  |  | build_container | 
					
						
							|  |  |  | description | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | msg_info "Setting Container to Normal Resources" | 
					
						
							|  |  |  | pct set $CTID -memory 512 | 
					
						
							|  |  |  | pct set $CTID -cores 1 | 
					
						
							|  |  |  | msg_ok "Set Container to Normal Resources" | 
					
						
							|  |  |  | msg_ok "Completed Successfully!\n" | 
					
						
							|  |  |  | echo -e "${APP} should be reachable by going to the following URL.
 | 
					
						
							|  |  |  |          ${BL}http://${IP}:8083${CL} \n"
 |