]> ###Development releases - This package includes unstable development branch and should only be used for testing or instructed to do so. - New versioning for devel branch will include hour and minute (YYYY.MM.DD-HHmm) from now on. ###Change Log - The change log will be found in the "master" branch: --- https://github.com/olehj/disklocation/blob/devel/disklocation-master.plg logit() { echo "" echo "$1" } DOWNLOAD_PKG="false" INSTALL_PKG="false" logit "Removing old plugin data before installing, if they exists..." [ -d "&emhttpLOC;" ] && rm -fR "&emhttpLOC;" [ -f "/usr/local/bin/smartlocate" ] && rm -f "/usr/local/bin/smartlocate" [ -f "/tmp/disklocation/db.lock" ] && rm -f "/tmp/disklocation/db.lock" logit "Installing plugin..." if [ ! -d "&pluginLOC;" ] ; then logit "Creating plugin folder &pluginLOC;" mkdir -p "&pluginLOC;" else logit "Plugin folder &pluginLOC; already exists" fi if [ ! -d "&pluginLOC;-&branch;" ] ; then logit "Creating plugin folder &pluginLOC;-&branch;" mkdir -p "&pluginLOC;-&branch;" else logit "Plugin folder &pluginLOC;-&branch; already exists" fi logit "Checking existing package &pluginLOC;/&packagefile;..." if [ -f "&pluginLOC;/&packagefile;" ] ; then INSTALL_PKG="true" else logit "Latest package does not exist &pluginLOC;/&packagefile;" DOWNLOAD_PKG="true" fi if [ "$DOWNLOAD_PKG" == "true" ]; then logit "Saving any previous packages from &pluginLOC;" mkdir -p "/tmp/&name;-packages" TEMPOLD="&pluginLOC;/&name;.*.tar.bz2" TEMP="&pluginLOC;/&name;.*.zip" mv -f $TEMPOLD $TEMP "/tmp/&name;-packages/" logit "Attempting to download plugin package &packageURL;..." wget -O &pluginLOC;/&packagefile; --quiet --no-check-certificate --timeout=30 &packageURL; if [ ! $? == "0" ] ; then logit "Package server down &packageURL; - Plugin cannot install" INSTALL_PKG="false" else if [ ! -f "&pluginLOC;/&packagefile;" ] ; then logit "Package download failed &packageURL; - Plugin cannot install" INSTALL_PKG="false" else logit "Package &packagefile; downloaded to &pluginLOC;" INSTALL_PKG="true" fi fi fi if [ "$INSTALL_PKG" == "true" ] ; then logit "Extracting plugin package..." [ -d "&emhttpLOC;" ] && rm -fR "&emhttpLOC;" unzip "&pluginLOC;/&packagefile;" -d /tmp/&name;-packages/ mv "/tmp/&name;-packages/&name;-&branch;/&name;" "&emplugLOC;/" if [ -f "&emhttpLOC;/&name;.page" ] ; then echo "Version=\"&version;\"" >> "&emhttpLOC;/&name;.page" logit "Extraction done." EXTRACT_PKG="true" else logit "Extraction failed." EXTRACT_PKG="false" fi fi if [ "$EXTRACT_PKG" == "true" ] ; then cat >/usr/local/bin/smartlocate <<EOL #!/bin/bash # Simple hack to locate harddrives in hotswap arrays, # might not work on all drives or SSD's. # # Run: ./smartlocate [address] # Ex: ./smartlocate 8:0:0:0 # # Check addresses available: ls -l /dev/bsg/ # # Script needs to be interrupted: [CTRL]+[C] # or killed: pkill -f smartlocate # # Made by &author; <ole@gidderikke.no> while sleep 0.5; do pkill -f smartctl &> /dev/null smartctl -x /dev/bsg/\$1 &> /dev/null done EOL chmod +x /usr/local/bin/smartlocate rm -Rf "/tmp/&name;-packages" rm -f "/tmp/&name;-install" if [[ "`pidof -x disklocation.sh`" ]]; then logit "Cronjob is already running... retrying every 5 seconds until it finish..." while [ "`pidof -x disklocation.sh`" ]; do sleep 5 logit "retrying..." done logit "done and continue..." fi if [[ ! -d "&pluginLOC;/backup" ]]; then CURRENT_DATE=$(date +"%Y%m%d-%H%M%S") mkdir -p "&pluginLOC;/backup/$CURRENT_DATE" cp &pluginLOC;/disklocation.sqlite &pluginLOC;/backup/$CURRENT_DATE/disklocation.sqlite gzip -N -9 &pluginLOC;/backup/$CURRENT_DATE/disklocation.sqlite logit "Made backup of database (&pluginLOC;/backup/$CURRENT_DATE/disklocation.sqlite.gz)" if [[ -f "&pluginLOC;/disklocation_db_v0.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v0.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v0.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20190130-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20190130-000000/ gzip -N -9 &pluginLOC;/backup/20190130-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v0.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20190130-000000/disklocation.sqlite.gz)" fi if [[ -f "&pluginLOC;/disklocation_db_v1.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v1.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v1.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20190203-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20190203-000000/ gzip -N -9 &pluginLOC;/backup/20190203-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v1.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20190203-000000/disklocation.sqlite.gz)" fi if [[ -f "&pluginLOC;/disklocation_db_v2.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v2.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v2.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20190619-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20190619-000000/ gzip -N -9 &pluginLOC;/backup/20190619-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v2.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20190619-000000/disklocation.sqlite.gz)" fi if [[ -f "&pluginLOC;/disklocation_db_v3.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v3.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v3.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20190628-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20190628-000000/ gzip -N -9 &pluginLOC;/backup/20190628-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v3.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20190628-000000/disklocation.sqlite.gz)" fi if [[ -f "&pluginLOC;/disklocation_db_v4.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v4.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v4.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20200222-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20200222-000000/ gzip -N -9 &pluginLOC;/backup/20200222-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v4.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20200222-000000/disklocation.sqlite.gz)" fi if [[ -f "&pluginLOC;/disklocation_db_v5.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v5.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v5.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20200304-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20200304-000000/ gzip -N -9 &pluginLOC;/backup/20200304-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v5.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20200304-000000/disklocation.sqlite.gz)" fi if [[ -f "&pluginLOC;/disklocation_db_v6.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v6.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v6.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20200908-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20200908-000000/ gzip -N -9 &pluginLOC;/backup/20200908-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v6.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20200908-000000/disklocation.sqlite.gz)" fi if [[ -f "&pluginLOC;/disklocation_db_v7.sqlite.tar.bz2" ]]; then mv &pluginLOC;/disklocation_db_v7.sqlite.tar.bz2 &pluginLOC;/backup/ tar jxf &pluginLOC;/backup/disklocation_db_v7.sqlite.tar.bz2 -C &pluginLOC;/backup/ mkdir &pluginLOC;/backup/20230913-000000 mv &pluginLOC;/backup/boot/config/plugins/disklocation/disklocation.sqlite &pluginLOC;/backup/20230913-000000/ gzip -N -9 &pluginLOC;/backup/20230913-000000/disklocation.sqlite rm &pluginLOC;/backup/disklocation_db_v7.sqlite.tar.bz2 logit "Made backup of database (&pluginLOC;/backup/20230913-000000/disklocation.sqlite.gz)" fi rm -rf &pluginLOC;/backup/boot/config/plugins/disklocation rm &pluginLOC;/disklocation_db_v*.sqlite.tar.bz2 logit "Deleted old backup files after archiving them in a new place." fi logit "Package file &packagefile; extracted." DISKLOCATION_DB_LOCATION_DEFAULT="&pluginLOC;/disklocation.sqlite" if [ -f "&pluginLOC;/disklocation.conf" ] ; then DISKLOCATION_DB_LOCATION=($(jq -r '.database_location' &pluginLOC;/disklocation.conf)) else DISKLOCATION_DB_LOCATION=null fi if [ $DISKLOCATION_DB_LOCATION == "null" ]; then DISKLOCATION_DB_LOCATION=$DISKLOCATION_DB_LOCATION_DEFAULT fi DISKLOCATION_DB_VER_INSTALL=$(php &emhttpLOC;/pages/sqlite_tables.php version) DISKLOCATION_DB_VER_CURRENT=$(sqlite3 $DISKLOCATION_DB_LOCATION "PRAGMA user_version" ".quit") sleep 1 if [[ "$DISKLOCATION_DB_VER_INSTALL" != "$DISKLOCATION_DB_VER_CURRENT" ]]; then logit "Adding devices into database, please wait... this might take a while..." php -f &emhttpLOC;/pages/cron_disklocation.php cronjob install else logit "No database update, skipping adding or updating devices during install." fi logit "Installing cronjob..." cat >&pluginLOC;-&branch;/powermode.cron <<EOL # Crontab for Disk Location plugin to retrieve SMART power status in the background */5 * * * * php -f &emhttpLOC;/pages/cron_disklocation.php cronjob status &> /dev/null EOL php -f &emhttpLOC;/pages/cron_disklocation.php cronjob status chmod +x &pluginLOC;-&branch;/powermode.cron /usr/local/sbin/update_cron logit "Plugin installed successfully!" exit 0 else if [ -f "&pluginLOC;/&packagefile;" ] ; then rm -f "&pluginLOC;/&packagefile;" fi logit "Reverting back to previously saved packages..." TEMP1="/tmp/&name;-packages" TEMP2=$(ls $TEMP1) if [ "$TEMP2" != "" ] ; then OLDTEMP="/tmp/&name;-packages/&name;.*.tar.bz2" TEMP="/tmp/&name;-packages/&name;.*.zip" mv -f $OLDTEMP "&pluginLOC;" mv -f $TEMP "&pluginLOC;" logit "Previous packages restored" else logit "No previous packages to restored" fi rm -Rf "/tmp/&name;-packages" rm -f "/tmp/&name;-install" logit "Plugin install failed" exit 1 fi logit() { echo "$1" echo "" } logit "Removing plugin..." [ -f "/tmp/&name;-install" ] && rm -f "/tmp/&name;-install" [ -d "&emhttpLOC;" ] && rm -fR "&emhttpLOC;" [ -f "/usr/local/bin/smartlocate" ] && rm -f "/usr/local/bin/smartlocate" [ -f "/etc/cron.hourly/disklocation.sh" ] && rm -f "/etc/etc.hourly/disklocation.sh" [ -f "/etc/cron.daily/disklocation.sh" ] && rm -f "/etc/etc.daily/disklocation.sh" [ -f "/etc/cron.weekly/disklocation.sh" ] && rm -f "/etc/etc.weekly/disklocation.sh" [ -f "/etc/cron.monthly/disklocation.sh" ] && rm -f "/etc/etc.monthly/disklocation.sh" [ -f "/tmp/disklocation/db.lock" ] && rm -f "/tmp/disklocation/db.lock" [ -f "/tmp/disklocation/powermode.ini" ] && rm -f "/tmp/disklocation/powermode.ini" [ -d "/tmp/disklocation" ] && rmdir "/tmp/disklocation" [ -f "&pluginLOC;-&branch;/powermode.cron" ] && rm -f "&pluginLOC;-&branch;/powermode.cron" /usr/local/sbin/update_cron rm -f &pluginLOC;/disklocation.*.tar.bz2 rm -f &pluginLOC;/disklocation.*.zip logit "Plugin stopped and removed, package files removed from &pluginLOC;, database, settings and the backups are not removed."