93 lines
3.4 KiB
Bash
Executable File
93 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
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"
|
|
JSON_FILE_TEMPL="$SCRIPT_DIR/include/chch.json.template"
|
|
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"
|
|
WIKI_PATH="/var/www/chch/"
|
|
WIKI_IMAGE_CLOSED="ChCh_closed.png"
|
|
WIKI_IMAGE_OPEN="ChCh_open.png"
|
|
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
|
|
if [ -f "$SSH_SUCCESS_FILE" ] && test $(find "$SSH_SUCCESS_FILE" -mmin -$STATUS_NULL_DELAY_MINUTES -mmin +0); then
|
|
STATUS="$OLD_STATUS"
|
|
[ -z "$STATUS" ] && STATUS="$STATUS_NULL"
|
|
else
|
|
STATUS="$STATUS_NULL"
|
|
fi
|
|
else
|
|
touch "$SSH_SUCCESS_FILE"
|
|
fi
|
|
|
|
TIMESTAMP_LASTCHANGE=$(stat -c '%Y' "$STATUS_FILE" 2>/dev/null) || TIMESTAMP_LASTCHANGE=$(date +%s)
|
|
[ "$STATUS" != "$STATUS_NULL" ] && printf "%s\n" "$STATUS" > "$STATUS_FILE"
|
|
if [ "$STATUS" == "$OLD_STATUS" -o "$STATUS" == "$STATUS_NULL" ]; then
|
|
touch --date=@$TIMESTAMP_LASTCHANGE "$STATUS_FILE"
|
|
else
|
|
TIMESTAMP_LASTCHANGE=$(stat -c '%Y' "$STATUS_FILE" 2>/dev/null)
|
|
fi
|
|
TIMESTAMP_LASTCHANGE_DATE="$(date -d "@$TIMESTAMP_LASTCHANGE" "+%H:%M (%d.%m.%Y)")"
|
|
|
|
API_STATUS="null"
|
|
API_STATUS_MSG="$STATUS_MSG_CLOSED"
|
|
WIKI_STATUS="{{Noframeright|[[File:$WIKI_IMAGE_CLOSED|link=]]|'''unbekannt'''<br>seit $TIMESTAMP_LASTCHANGE_DATE}}"
|
|
case $STATUS in
|
|
$STATUS_OPEN)
|
|
API_STATUS="true"
|
|
WIKI_STATUS="{{Noframeright|[[File:$WIKI_IMAGE_OPEN|link=]]|'''$STATUS'''<br>seit $TIMESTAMP_LASTCHANGE_DATE}}"
|
|
API_STATUS_MSG="$STATUS_MSG_OPEN"
|
|
;;
|
|
$STATUS_CLOSED)
|
|
API_STATUS="false"
|
|
API_STATUS_MSG="$STATUS_MSG_CLOSED"
|
|
WIKI_STATUS="{{Noframeright|[[File:$WIKI_IMAGE_CLOSED|link=]]|'''$STATUS'''<br>seit $TIMESTAMP_LASTCHANGE_DATE}}"
|
|
;;
|
|
$STATUS_NULL)
|
|
API_STATUS="null"
|
|
STATUS_="'''Öffnungsstatus unbekannt'''"
|
|
IMAGE="ChCh_Logo_closed.png"
|
|
if [ -f "$STATUS_FILE" ]; then
|
|
case $(head -n1 "$STATUS_FILE") in
|
|
$STATUS_OPEN)
|
|
STATUS_="'''unbekannt'''<br>zuletzt war $STATUS_OPEN"
|
|
IMAGE="$WIKI_IMAGE_OPEN"
|
|
;;
|
|
$STATUS_CLOSED)
|
|
STATUS_="'''unbekannt'''<br>zuletzt war $STATUS_CLOSED"
|
|
IMAGE="$WIKI_IMAGE_CLOSED"
|
|
;;
|
|
esac
|
|
fi
|
|
API_STATUS_MSG="$STATUS_MSG_CLOSED"
|
|
WIKI_STATUS="{{Noframeright|[[File:$IMAGE|link=]]|$STATUS_<br>seit $TIMESTAMP_LASTCHANGE_DATE}}"
|
|
;;
|
|
esac
|
|
|
|
# The status file for spaceapi.ccc.de and for our IRC bot.
|
|
sed "s/%%STATUS%%/${API_STATUS}/;s/%%MESSAGE%%/${API_STATUS_MSG}/;s/%%LASTCHANGE%%/${TIMESTAMP_LASTCHANGE}/" "$JSON_FILE_TEMPL" > "$JSON_FILE_TMP"
|
|
chown --reference="$JSON_FILE_TEMPL" "$JSON_FILE_TMP"
|
|
chmod --reference="$JSON_FILE_TEMPL" "$JSON_FILE_TMP"
|
|
mv "$JSON_FILE_TMP" "$JSON_FILE"
|
|
|
|
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
|