diff options
author | Jonas <dr@jones.dk> | 2010-05-20 20:08:30 +0200 |
---|---|---|
committer | Jonas <dr@jones.dk> | 2010-05-20 20:08:30 +0200 |
commit | 16542abffa25dadd328a1ddc4dc4fb72cc137a75 (patch) | |
tree | af0d21d859c38fa1a980983ff61d4b4b0f96369f /localkannel-dispatch | |
parent | a49c116e631b7a2d04bff6e65cbd9fe03cd9afc4 (diff) |
Add function delobject(), and keyword del/delete/remove.
Diffstat (limited to 'localkannel-dispatch')
-rwxr-xr-x | localkannel-dispatch | 23 |
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" |