Files
DetectionLab/Vagrant/resources/malcolm/name-map-ui/scripts/name-map-save-watch.sh
2021-08-06 10:35:01 +02:00

23 lines
987 B
Bash
Executable File

#!/bin/bash
# Copyright (c) 2021 Battelle Energy Alliance, LLC. All rights reserved.
PROCESS_DIR=${NAME_MAP_SAVE_DIR:-/var/www/html/upload/}
DEST_MAP=${NAME_MAP_JSON:-/var/www/html/maps/net-map.json}
inotifywait -m -e close_write --format '%w%f' "${PROCESS_DIR}" | while read NEWFILE
do
sleep 0.1
# verify that the file is json|txt and that it is valid JSON
FILEMIME=$(file -b --mime-type "$NEWFILE")
if ( echo "$FILEMIME" | grep -q -e "\(application/json\|text/plain\)" ) && ( python3 -mjson.tool "$NEWFILE" >/dev/null 2>&1 ); then
# move the new net-map.json file into its final location
# (done like this with "tee" since we may not be able to cp overwrite a volume-mounted file)
(>/dev/null tee "$DEST_MAP" < "$NEWFILE") && echo "\"$NEWFILE\" -> \"$DEST_MAP\""
rm -f "$NEWFILE"
else
# invalid or unhandled file type uploaded, delete it
(>&2 rm -f "$NEWFILE") && echo "Removed \"$NEWFILE\" (\"$FILEMIME\"): invalid file type or format"
fi
done