ufw-tools/ufwd

76 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
shopt -s nullglob
# Defaults for XDG
if ! [[ "$XDG_RUNTIME_DIR" ]]; then
XDG_RUNTIME_DIR="/run/user/$UID"
fi
# Defaults
cfg_workdir="$XDG_RUNTIME_DIR/ufwd"
cfg_scan_delay='30'
msg() { printf '%s\n' "$*"; }
err() { echo "$*" >&2; }
usage() { echo "No help available."; }
main() {
while (( $# )); do
case "$1" in
(--help|-h) usage; return 0;;
(--workdir|-d) cfg_workdir="$2"; shift;;
(--scan-delay|-D) cfg_scan_delay="$2"; shift;;
(--notify|-n) flag_enable_notifications=1;;
(--) shift; break;;
(-*)
err "Unknown key: $1"
usage
return 1
;;
(*) break;;
esac
shift
done
if (( flag_enable_notifications )); then
if type -P notify-send &>/dev/null; then
msg "Found notify-send."
else
err "notify-send not found in PATH, disabling notifications."
flag_enable_notifications=0
fi
fi
mkdir -p "$cfg_workdir" || {
return 1
}
cd "$cfg_workdir" || {
return 1
}
while sleep "$cfg_scan_delay"; do
for i in *; do
upload_output=$( ufw -R "$i" )
upload_return=$?
if (( flag_enable_notifications )); then
if (( $upload_return )); then
notify-send 'ufwd' "File upload failed: $upload_output"
else
notify-send 'ufwd' "File uploaded: $upload_output"
fi
fi
printf '%s\n' "$upload_output"
done
done
}
main "$@"