summaryrefslogtreecommitdiff
path: root/localkannel-dispatch
diff options
context:
space:
mode:
authorJonas <dr@jones.dk>2010-05-20 20:08:30 +0200
committerJonas <dr@jones.dk>2010-05-20 20:08:30 +0200
commit16542abffa25dadd328a1ddc4dc4fb72cc137a75 (patch)
treeaf0d21d859c38fa1a980983ff61d4b4b0f96369f /localkannel-dispatch
parenta49c116e631b7a2d04bff6e65cbd9fe03cd9afc4 (diff)
Add function delobject(), and keyword del/delete/remove.
Diffstat (limited to 'localkannel-dispatch')
-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"