X-Git-Url: https://git.jacobcasper.com/?p=mercuryms.git;a=blobdiff_plain;f=listener.sh;fp=listener.sh;h=182842e619267b32ed483331a0159bad20f87b16;hp=0000000000000000000000000000000000000000;hb=8ef3a2be63fa62015b02a2efe413689094fa1c41;hpb=e0e687e1ce8146c7ef790b0f4e93083a1662c84f diff --git a/listener.sh b/listener.sh new file mode 100755 index 0000000..182842e --- /dev/null +++ b/listener.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# DATA indices are defined by the mercuryms-send program, and are from mercuryms-sqlite +# 0: MEDIA.ID +# 1: MEDIA.PHONE_NUMBER +# 2: MEDIA.URI +while IFS='|' read -a DATA DATA_STR; do + # Check if the phone number has an existing folder. + # WebDAV responds to a PROPFIND with a 207 if a resource exists. + # It responds 404 otherwise, but we will attempt to create on any other code. + # AWK exits with inverted exit codes to use the && bash short circuit. + curl --silent --include --user $USER:$($PW_COMMAND) "$HOST/remote.php/dav/files/$USER/${DATA[1]}" -X PROPFIND --data ' + + + + + ' | awk '/HTTP\// {if ($2 == "207") { exit 1; } else { exit 0; } }' && curl --silent \ + --user $USER:$($PW_COMMAND) \ + -X MKCOL "$HOST/remote.php/dav/files/$USER/${DATA[1]}" + # Download the media we were sent from the URI. + # Upload it to Nextcloud and respond with the ID in the database + # so that we can record success. + IDENTIFIER=$(echo ${DATA[2]} | awk -F/ '{print $NF}') + curl --silent \ + --location ${DATA[2]} \ + | curl --silent \ + --user $USER:$($PW_COMMAND) \ + --upload-file - \ + "$HOST/remote.php/dav/files/$USER/${DATA[1]}/$IDENTIFIER.jpg" && echo ${DATA[0]} received. +done + +exit 0