2018-05-17 15:35:25 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
2018-05-17 16:11:27 +02:00
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
2018-05-17 15:35:25 +02:00
|
|
|
SSH_IP="127.0.0.1"
|
|
|
|
SSHPORT="2322"
|
|
|
|
SSH_USER="command"
|
|
|
|
SSH_SUCCESS_FILE="/tmp/chch-status_ssh-success"
|
|
|
|
JSON_FILE="/var/www/chch_api/chch.json"
|
2018-05-17 16:11:27 +02:00
|
|
|
JSON_FILE_TEMPL="$SCRIPT_DIR/include/chch.json.template"
|
2018-05-17 15:35:25 +02:00
|
|
|
JSON_FILE_TMP="$(mktemp)"
|
|
|
|
STATUS_FILE="/tmp/chch-status"
|
|
|
|
STATUS_OPEN="geöffnet"
|
|
|
|
STATUS_CLOSED="geschlossen"
|
|
|
|
STATUS_NULL="unbekannt"
|
|
|
|
STATUS_NULL_DELAY_MINUTES=10
|
|
|
|
STATUS_NULL_TIMEOUT_MINUTES=180
|
|
|
|
STATUS_MSG_CLOSED="Geschlossen | Closed"
|
|
|
|
STATUS_MSG_OPEN="Geöffnet | Open"
|
2023-01-15 01:48:54 +01:00
|
|
|
YAMMAT_JSON_URL="http://localhost:9991/backup/inventory.json"
|
|
|
|
BEVERAGE_SUPPLY_TMP="/tmp/chch-beverage-supply-tmp"
|
2018-05-17 15:35:25 +02:00
|
|
|
WIKI_PATH="/var/www/chch/"
|
2018-09-21 14:57:01 +02:00
|
|
|
WIKI_IMAGE_CLOSED="ChCh_closed.png"
|
|
|
|
WIKI_IMAGE_OPEN="ChCh_open.png"
|
2018-05-17 15:35:25 +02:00
|
|
|
WIKI_MAIN_PAGE="Hauptseite"
|
|
|
|
WIKI_STATUS_PAGE="Aktueller_ChCh-Öffnungsstatus"
|
|
|
|
|
|
|
|
find "$SSH_SUCCESS_FILE" -mmin +$STATUS_NULL_TIMEOUT_MINUTES -exec rm "$STATUS_FILE" \; 2>/dev/null
|
|
|
|
|
|
|
|
OLD_STATUS="$(cat "$STATUS_FILE" 2>/dev/null)"
|
|
|
|
STATUS="$(echo status | ssh -q -p $SSHPORT $SSH_USER@$SSH_IP 2>/dev/null)"
|
|
|
|
|
|
|
|
if [ -z "$STATUS" ]; then
|
2019-04-06 20:21:03 +02:00
|
|
|
if [ -f "$SSH_SUCCESS_FILE" ] && test "$(find "$SSH_SUCCESS_FILE" -mmin -$STATUS_NULL_DELAY_MINUTES -mmin +0)"; then
|
2018-05-17 15:35:25 +02:00
|
|
|
STATUS="$OLD_STATUS"
|
|
|
|
[ -z "$STATUS" ] && STATUS="$STATUS_NULL"
|
|
|
|
else
|
|
|
|
STATUS="$STATUS_NULL"
|
|
|
|
fi
|
|
|
|
else
|
2018-05-17 16:11:27 +02:00
|
|
|
touch "$SSH_SUCCESS_FILE"
|
2018-05-17 15:35:25 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
TIMESTAMP_LASTCHANGE=$(stat -c '%Y' "$STATUS_FILE" 2>/dev/null) || TIMESTAMP_LASTCHANGE=$(date +%s)
|
|
|
|
[ "$STATUS" != "$STATUS_NULL" ] && printf "%s\n" "$STATUS" > "$STATUS_FILE"
|
2019-04-06 20:21:03 +02:00
|
|
|
if [ "$STATUS" == "$OLD_STATUS" ] || [ "$STATUS" == "$STATUS_NULL" ]; then
|
|
|
|
touch --date=@"$TIMESTAMP_LASTCHANGE" "$STATUS_FILE"
|
2018-05-17 15:35:25 +02:00
|
|
|
else
|
|
|
|
TIMESTAMP_LASTCHANGE=$(stat -c '%Y' "$STATUS_FILE" 2>/dev/null)
|
|
|
|
fi
|
2018-09-21 14:57:01 +02:00
|
|
|
TIMESTAMP_LASTCHANGE_DATE="$(date -d "@$TIMESTAMP_LASTCHANGE" "+%H:%M (%d.%m.%Y)")"
|
2018-05-17 15:35:25 +02:00
|
|
|
|
|
|
|
API_STATUS="null"
|
|
|
|
API_STATUS_MSG="$STATUS_MSG_CLOSED"
|
2019-03-21 11:35:11 +01:00
|
|
|
WIKI_STATUS="{{Noframeright|[[File:$WIKI_IMAGE_CLOSED|link=]]|'''unbekannt'''}}"
|
2018-05-17 15:35:25 +02:00
|
|
|
case $STATUS in
|
|
|
|
$STATUS_OPEN)
|
|
|
|
API_STATUS="true"
|
2018-09-21 15:53:57 +02:00
|
|
|
WIKI_STATUS="{{Noframeright|[[File:$WIKI_IMAGE_OPEN|link=]]|'''$STATUS'''<br>seit $TIMESTAMP_LASTCHANGE_DATE}}"
|
2018-05-17 15:35:25 +02:00
|
|
|
API_STATUS_MSG="$STATUS_MSG_OPEN"
|
|
|
|
;;
|
|
|
|
$STATUS_CLOSED)
|
|
|
|
API_STATUS="false"
|
|
|
|
API_STATUS_MSG="$STATUS_MSG_CLOSED"
|
2018-09-21 15:53:57 +02:00
|
|
|
WIKI_STATUS="{{Noframeright|[[File:$WIKI_IMAGE_CLOSED|link=]]|'''$STATUS'''<br>seit $TIMESTAMP_LASTCHANGE_DATE}}"
|
2018-05-17 15:35:25 +02:00
|
|
|
;;
|
|
|
|
$STATUS_NULL)
|
|
|
|
API_STATUS="null"
|
|
|
|
STATUS_="'''Öffnungsstatus unbekannt'''"
|
2018-12-09 03:10:52 +01:00
|
|
|
IMAGE="$WIKI_IMAGE_CLOSED"
|
2019-05-28 11:36:11 +02:00
|
|
|
WIKI_STATUS_SINCE=""
|
2018-05-17 15:35:25 +02:00
|
|
|
if [ -f "$STATUS_FILE" ]; then
|
|
|
|
case $(head -n1 "$STATUS_FILE") in
|
|
|
|
$STATUS_OPEN)
|
2018-09-21 14:57:01 +02:00
|
|
|
STATUS_="'''unbekannt'''<br>zuletzt war $STATUS_OPEN"
|
2018-05-17 15:35:25 +02:00
|
|
|
IMAGE="$WIKI_IMAGE_OPEN"
|
2019-05-28 11:36:11 +02:00
|
|
|
WIKI_STATUS_SINCE="<br>seit $TIMESTAMP_LASTCHANGE_DATE"
|
2018-05-17 15:35:25 +02:00
|
|
|
;;
|
|
|
|
$STATUS_CLOSED)
|
2018-09-21 14:57:01 +02:00
|
|
|
STATUS_="'''unbekannt'''<br>zuletzt war $STATUS_CLOSED"
|
2018-09-18 15:31:04 +02:00
|
|
|
IMAGE="$WIKI_IMAGE_CLOSED"
|
2019-05-28 11:36:11 +02:00
|
|
|
WIKI_STATUS_SINCE="<br>seit $TIMESTAMP_LASTCHANGE_DATE"
|
2018-05-17 15:35:25 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
API_STATUS_MSG="$STATUS_MSG_CLOSED"
|
2019-05-28 11:36:11 +02:00
|
|
|
WIKI_STATUS="{{Noframeright|[[File:$IMAGE|link=]]|${STATUS_}$WIKI_STATUS_SINCE}}"
|
2018-05-17 15:35:25 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2023-01-15 01:48:54 +01:00
|
|
|
BEVERAGE_SUPPLY="$(wget -O- "$YAMMAT_JSON_URL" 2>/dev/null | jq -rc "[ .[] | select( . | .amount > 0 ) | { value: .amount, unit: \"btl\", name: .name, description: ([(.price/100), \"€\"]|join(\" \")) } ]")"
|
|
|
|
if [ -z "$BEVERAGE_SUPPLY" ]; then
|
|
|
|
BEVERAGE_SUPPLY="$(cat $BEVERAGE_SUPPLY_TMP)"
|
|
|
|
else
|
|
|
|
echo "$BEVERAGE_SUPPLY" > "$BEVERAGE_SUPPLY_TMP"
|
|
|
|
fi
|
|
|
|
|
2018-05-17 15:35:25 +02:00
|
|
|
# The status file for spaceapi.ccc.de and for our IRC bot.
|
2023-01-15 01:48:54 +01:00
|
|
|
sed "s/%%STATUS%%/${API_STATUS}/;s/%%MESSAGE%%/${API_STATUS_MSG}/;s/%%LASTCHANGE%%/${TIMESTAMP_LASTCHANGE}/;s/%%BEVERAGE_SUPPLY%%/${BEVERAGE_SUPPLY}/" "$JSON_FILE_TEMPL" | jq . > "$JSON_FILE_TMP"
|
2018-05-17 16:11:27 +02:00
|
|
|
chown --reference="$JSON_FILE_TEMPL" "$JSON_FILE_TMP"
|
|
|
|
chmod --reference="$JSON_FILE_TEMPL" "$JSON_FILE_TMP"
|
|
|
|
mv "$JSON_FILE_TMP" "$JSON_FILE"
|
2018-05-17 15:35:25 +02:00
|
|
|
|
|
|
|
echo -n "$WIKI_STATUS" | php "$WIKI_PATH/maintenance/edit.php" -m -b --no-rc -s "$STATUS" "$WIKI_STATUS_PAGE" >> /dev/null 2>&1
|
|
|
|
echo "$WIKI_MAIN_PAGE" | php "$WIKI_PATH/maintenance/purgeList.php" --purge >> /dev/null 2>&1
|