23 lines
987 B
Bash
Executable File
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
|