2020-06-30 11:13:11 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# https://github.com/dennisreimann/kindle-display
|
|
|
|
|
|
|
|
USERNAME=kindledisplay
|
|
|
|
SERVER_PORT=3030
|
|
|
|
APP_DATA_DIR=/mnt/hdd/app-data/kindle-display
|
|
|
|
HOME_DIR=/home/$USERNAME
|
|
|
|
CONFIG_FILE=$APP_DATA_DIR/.env
|
2020-07-06 17:36:41 +02:00
|
|
|
RASPIBLITZ_FILE=/mnt/hdd/raspiblitz.conf
|
2020-06-30 11:13:11 +02:00
|
|
|
APP_ROOT_DIR=$HOME_DIR/kindle-display
|
|
|
|
APP_SERVER_DIR=$APP_ROOT_DIR/server
|
|
|
|
CRON_FILE=$APP_SERVER_DIR/cron.sh
|
2020-07-10 10:04:48 +02:00
|
|
|
APP_VERSION=0.4.0
|
2020-06-30 11:13:11 +02:00
|
|
|
|
|
|
|
# command info
|
|
|
|
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
|
|
|
|
echo "small config script to switch kindle-display on or off"
|
|
|
|
echo "bonus.kindle-display.sh [on|off]"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2020-07-24 18:15:01 +02:00
|
|
|
source /home/admin/raspiblitz.info
|
2020-06-30 11:13:11 +02:00
|
|
|
|
|
|
|
# switch on
|
|
|
|
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|
|
|
echo "*** INSTALL KINDLE-DISPLAY ***"
|
|
|
|
|
|
|
|
isInstalled=$(sudo ls $HOME_DIR 2>/dev/null | grep -c 'kindle-display')
|
|
|
|
if [ ${isInstalled} -eq 0 ]; then
|
|
|
|
# install dependencies
|
2020-11-23 22:15:33 +01:00
|
|
|
sudo apt update
|
|
|
|
sudo apt install -y firefox-esr pngcrush jo jq torsocks
|
2020-06-30 11:13:11 +02:00
|
|
|
|
|
|
|
# install nodeJS
|
2020-07-01 14:41:19 +02:00
|
|
|
/home/admin/config.scripts/bonus.nodejs.sh on
|
2020-06-30 11:13:11 +02:00
|
|
|
|
|
|
|
# add user
|
|
|
|
sudo adduser --disabled-password --gecos "" $USERNAME
|
|
|
|
|
|
|
|
# install kindle-display
|
2020-07-24 18:08:17 +02:00
|
|
|
echo "# install .."
|
2020-06-30 11:13:11 +02:00
|
|
|
cd $HOME_DIR
|
2020-07-01 14:41:19 +02:00
|
|
|
sudo -u $USERNAME wget https://github.com/dennisreimann/kindle-display/archive/v$APP_VERSION.tar.gz
|
|
|
|
sudo -u $USERNAME tar -xzf v$APP_VERSION.tar.gz kindle-display-$APP_VERSION/server
|
|
|
|
sudo -u $USERNAME mv kindle-display{-$APP_VERSION,}
|
|
|
|
sudo -u $USERNAME rm v$APP_VERSION.tar.gz
|
2020-06-30 11:13:11 +02:00
|
|
|
cd kindle-display/server
|
|
|
|
sudo -u $USERNAME npm install
|
2020-08-06 14:25:00 +02:00
|
|
|
if ! [ $? -eq 0 ]; then
|
|
|
|
echo "FAIL - npm install did not run correctly, aborting"
|
|
|
|
exit 1
|
|
|
|
fi
|
2020-06-30 11:13:11 +02:00
|
|
|
|
|
|
|
# setup kindle-display config
|
|
|
|
RPC_USER=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcuser | cut -c 9-)
|
|
|
|
RPC_PASS=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcpassword | cut -c 13-)
|
|
|
|
|
2020-07-01 14:41:19 +02:00
|
|
|
sudo mkdir -p $APP_DATA_DIR
|
2020-06-30 11:13:11 +02:00
|
|
|
sudo chown $USERNAME:$USERNAME $APP_DATA_DIR
|
|
|
|
|
2020-07-24 18:08:17 +02:00
|
|
|
echo "# create config file"
|
2020-07-01 14:41:19 +02:00
|
|
|
if [[ ! -f "$CONFIG_FILE" ]]; then
|
|
|
|
configFile=/home/admin/kindle-display.env
|
|
|
|
touch $configFile
|
|
|
|
sudo chmod 600 $configFile || exit 1
|
|
|
|
cat > $configFile <<EOF
|
2020-06-30 11:13:11 +02:00
|
|
|
# Server port
|
|
|
|
DISPLAY_SERVER_PORT=$SERVER_PORT
|
2020-07-08 13:38:56 +02:00
|
|
|
|
2020-07-10 10:04:48 +02:00
|
|
|
# Require Tor for outside API calls
|
|
|
|
DISPLAY_FORCE_TOR=true
|
|
|
|
|
2020-07-08 13:38:56 +02:00
|
|
|
# Bitcoin RPC credentials for getting the blockcount.
|
|
|
|
# Omit these setting to use blockchain.info as a fallback.
|
2020-06-30 11:13:11 +02:00
|
|
|
DISPLAY_BITCOIN_RPC_USER="$RPC_USER"
|
|
|
|
DISPLAY_BITCOIN_RPC_PASS="$RPC_PASS"
|
2020-07-08 13:38:56 +02:00
|
|
|
|
2020-07-10 10:04:48 +02:00
|
|
|
# Exchange rates to show.
|
|
|
|
# Use identifiers supported by BTCPay/Kraken, e.g. EUR, CHF
|
|
|
|
DISPLAY_RATE1="USD"
|
|
|
|
DISPLAY_RATE2="EUR"
|
|
|
|
|
2020-07-08 13:38:56 +02:00
|
|
|
# BTCPay Settings for rate fetching.
|
2020-06-30 11:13:11 +02:00
|
|
|
# Generate API via Store > Access Tokens > Legacy API Keys
|
2020-07-08 13:38:56 +02:00
|
|
|
# Omit these setting to use Kraken as a fallback.
|
2020-07-01 14:41:19 +02:00
|
|
|
# BTCPAY_HOST="https://my.btcpayserver.com"
|
|
|
|
# BTCPAY_API_TOKEN="myBtcPayLegacyApiKey"
|
2020-07-08 13:38:56 +02:00
|
|
|
|
|
|
|
# Shall the fallbacks be used?
|
|
|
|
DISPLAY_FALLBACK_BLOCK=false
|
|
|
|
DISPLAY_FALLBACK_RATES=true
|
2020-06-30 11:13:11 +02:00
|
|
|
EOF
|
2020-07-01 14:41:19 +02:00
|
|
|
sudo mv $configFile $CONFIG_FILE
|
|
|
|
fi
|
|
|
|
|
2020-06-30 11:13:11 +02:00
|
|
|
sudo chown $USERNAME:$USERNAME $CONFIG_FILE
|
2020-07-01 14:41:19 +02:00
|
|
|
|
|
|
|
# link config to app
|
2020-06-30 11:13:11 +02:00
|
|
|
sudo -u $USERNAME ln -s $CONFIG_FILE $APP_SERVER_DIR/.env
|
|
|
|
|
|
|
|
# generate initial data
|
2020-07-24 18:09:17 +02:00
|
|
|
echo "# run data.sh"
|
2020-06-30 11:13:11 +02:00
|
|
|
sudo -u $USERNAME $APP_SERVER_DIR/data.sh
|
|
|
|
|
|
|
|
# open firewall
|
2020-07-24 18:08:17 +02:00
|
|
|
echo "# firewall kindle-display service"
|
2020-06-30 11:13:11 +02:00
|
|
|
sudo ufw allow $SERVER_PORT comment 'kindle-display HTTP'
|
|
|
|
|
|
|
|
# install service
|
2020-07-24 18:08:17 +02:00
|
|
|
echo "# prepare kindle-display service"
|
2020-06-30 11:13:11 +02:00
|
|
|
cat > /home/admin/kindle-display.service <<EOF
|
|
|
|
# systemd unit for kindle-display
|
|
|
|
|
|
|
|
[Unit]
|
|
|
|
Description=kindle-display
|
|
|
|
Wants=${network}d.service
|
|
|
|
After=${network}d.service
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
WorkingDirectory=${APP_SERVER_DIR}
|
|
|
|
ExecStart=/usr/bin/npm start
|
|
|
|
User=$USERNAME
|
|
|
|
|
|
|
|
# Restart on failure but no more than 2 time every 10 minutes (600 seconds). Otherwise stop
|
|
|
|
Restart=on-failure
|
|
|
|
StartLimitIntervalSec=600
|
|
|
|
StartLimitBurst=2
|
|
|
|
|
2021-06-02 09:18:29 +01:00
|
|
|
# Hardening measures
|
|
|
|
PrivateTmp=true
|
|
|
|
ProtectSystem=full
|
|
|
|
NoNewPrivileges=true
|
|
|
|
PrivateDevices=true
|
|
|
|
|
2020-06-30 11:13:11 +02:00
|
|
|
[Install]
|
|
|
|
WantedBy=multi-user.target
|
|
|
|
EOF
|
|
|
|
sudo mv /home/admin/kindle-display.service /etc/systemd/system/kindle-display.service
|
2020-07-24 18:08:17 +02:00
|
|
|
|
|
|
|
echo "# enable kindle-display service"
|
2020-06-30 11:13:11 +02:00
|
|
|
sudo systemctl enable kindle-display
|
2020-07-23 16:17:31 +02:00
|
|
|
|
|
|
|
# https://github.com/rootzoll/raspiblitz/issues/1375
|
|
|
|
if [ "${state}" == "ready" ]; then
|
2020-07-24 18:08:17 +02:00
|
|
|
echo "# starting kindle-display service"
|
2020-07-23 16:17:31 +02:00
|
|
|
sudo systemctl start kindle-display
|
2020-06-30 11:13:11 +02:00
|
|
|
|
2020-07-24 18:15:01 +02:00
|
|
|
# generate initial screenshot
|
|
|
|
echo "# run cronfile"
|
|
|
|
sudo -u $USERNAME $CRON_FILE
|
|
|
|
fi
|
2020-06-30 11:13:11 +02:00
|
|
|
|
|
|
|
echo "OK - the KINDLE-DISPLAY script is now installed."
|
|
|
|
echo ""
|
|
|
|
echo "Switch to the '$USERNAME' user and adapt the settings in $CONFIG_FILE"
|
|
|
|
|
|
|
|
# setting value in raspi blitz config
|
2020-07-06 17:36:41 +02:00
|
|
|
grep -q '^kindleDisplay' $RASPIBLITZ_FILE && sudo sed -i "s/^kindleDisplay=.*/kindleDisplay=on/g" $RASPIBLITZ_FILE || echo 'kindleDisplay=on' >> $RASPIBLITZ_FILE
|
2020-06-30 11:13:11 +02:00
|
|
|
else
|
|
|
|
echo "KINDLE-DISPLAY already installed."
|
|
|
|
fi
|
|
|
|
|
|
|
|
cron_count=$(sudo -u $USERNAME crontab -l | grep "$CRON_FILE" -c)
|
|
|
|
if [ "${cron_count}" = "0" ]; then
|
|
|
|
echo ""
|
|
|
|
echo "You might want to set up a cronjob to run the script in regular intervals."
|
|
|
|
echo "As the '$USERNAME' user you can run the 'crontab -e' command."
|
|
|
|
echo ""
|
|
|
|
echo "Here is an example for updating every five minutes ..."
|
|
|
|
echo ""
|
|
|
|
echo "SHELL=/bin/bash"
|
|
|
|
echo "PATH=/bin:/usr/bin:/usr/local/bin"
|
2020-07-06 17:36:41 +02:00
|
|
|
echo "*/5 * * * * $CRON_FILE > /dev/null 2>&1"
|
2020-06-30 11:13:11 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
# switch off
|
|
|
|
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
|
|
|
|
echo "*** UNINSTALL KINDLE-DISPLAY ***"
|
|
|
|
isInstalled=$(sudo ls $HOME_DIR 2>/dev/null | grep -c 'kindle-display')
|
|
|
|
|
|
|
|
if [ ${isInstalled} -eq 1 ]; then
|
|
|
|
echo "*** REMOVING KINDLE-DISPLAY ***"
|
|
|
|
|
|
|
|
# setting value in raspi blitz config
|
2020-07-06 17:36:41 +02:00
|
|
|
sudo sed -i "s/^kindleDisplay=.*/kindleDisplay=off/g" $RASPIBLITZ_FILE
|
2020-06-30 11:13:11 +02:00
|
|
|
|
|
|
|
# uninstall service
|
2020-07-05 13:02:10 +02:00
|
|
|
sudo systemctl stop kindle-display
|
2020-06-30 11:13:11 +02:00
|
|
|
sudo systemctl disable kindle-display
|
|
|
|
sudo rm /etc/systemd/system/kindle-display.service
|
|
|
|
|
|
|
|
# close port on firewall
|
|
|
|
sudo ufw deny $SERVER_PORT
|
|
|
|
|
|
|
|
# remove config
|
|
|
|
sudo rm -rf $APP_DATA_DIR
|
|
|
|
|
|
|
|
# delete user and home directory
|
|
|
|
sudo userdel -rf $USERNAME
|
|
|
|
|
|
|
|
echo "OK KINDLE-DISPLAY removed."
|
|
|
|
else
|
|
|
|
echo "KINDLE-DISPLAY is not installed."
|
|
|
|
fi
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "FAIL - Unknown Parameter $1"
|
|
|
|
exit 1
|