summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlocalkannel-dispatch23
1 files changed, 23 insertions, 0 deletions
diff --git a/localkannel-dispatch b/localkannel-dispatch
index 05e00c8..7343b67 100755
--- a/localkannel-dispatch
+++ b/localkannel-dispatch
@@ -143,6 +143,17 @@ addobject() {
chgrp --reference="$vardir" "$vardir/$type/$name"
echo "$name"
}
+delobject() {
+ set -e
+ type="$1"; shift || return1 "Internal error (delobject: missing type)!"
+ [ -n "$type" ] || return1 "Internal error (delobject: empty type)!"
+ name="$1"; shift || return1 "Internal error (delobject: missing name)!"
+ [ -n "$name" ] || return1 "Internal error (delobject: empty name)!"
+ oldname="$(findobjects "$type" "$name")" || return1 "$oldname"
+ [ -n "$oldname" ] || return1 "No $type named \"$name\" (typo? or perhaps already deleted?)."
+ rmdir1 "$vardir/$type/$name"
+ echo "$name"
+}
case "$app" in
@*)
@@ -174,6 +185,18 @@ case "$app" in
;;
esac
;;
+ del|delete|remove)
+ case "$1" in
+ user|group)
+ objecttype="$1"; shift || exit1 "Internal error while deleting object."
+ objectname="$(delobject "$objecttype" "$@")" || exit1 "Failed deleting $objecttype${objectname+: $objectname}!"
+ /usr/local/sbin/localsendsms "$to" "$objecttype \"$objectname\" deleted."
+ ;;
+ *)
+ exit1 "Cannot delete \"$1\" (try \"del user\" or \"del group\" instead)."
+ ;;
+ esac
+ ;;
status)
msg="$(/usr/local/sbin/localshowkannelstatus)"
/usr/local/sbin/localsendsms "$to" "$msg"