summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Allbery <rra@stanford.edu>2007-09-18 23:40:37 +0000
committerRuss Allbery <rra@stanford.edu>2007-09-18 23:40:37 +0000
commit088e2ecba73fedebb0b7729a1f07022fd6155c22 (patch)
tree2d55f924132d08cb1ebd56a5c482db5d855f9a47
parente435832256e0ba069b771e9bb350e749600efcd4 (diff)
Document the locked flag in the server backend and client man pages.
Document locked flag issues when implementing a new object type.
-rw-r--r--TODO2
-rw-r--r--client/wallet.pod5
-rw-r--r--docs/design-api10
-rwxr-xr-xserver/wallet-backend5
4 files changed, 20 insertions, 2 deletions
diff --git a/TODO b/TODO
index c3c63e7..8ce6b96 100644
--- a/TODO
+++ b/TODO
@@ -5,8 +5,6 @@ Required to replace leland_srvtab:
* Implement support for the unchanging flag on keytabs and the backend
remctl calls to retrieve the existing keytab.
-* Implement the locked flag.
-
* Add arbitrary attribute setting and retrieval to objects and include the
attributes in the object show display.
diff --git a/client/wallet.pod b/client/wallet.pod
index a330b0a..263e623 100644
--- a/client/wallet.pod
+++ b/client/wallet.pod
@@ -111,6 +111,11 @@ Administrators can run any command on any object or ACL except for C<get>
and C<store>. For C<get> and C<show>, they must still be authorized by
either the appropriate specific ACL or the owner ACL.
+If the locked flag is set on an object, no commands can be run on that
+object that change data except the C<flags> commands, nor can the C<get>
+command be used on that object. C<show>, C<getacl>, and C<owner> or
+C<expires> without an argument can still be used on that object.
+
=over 4
=item acl add <id> <scheme> <identifier>
diff --git a/docs/design-api b/docs/design-api
index 48c5a66..af2ff65 100644
--- a/docs/design-api
+++ b/docs/design-api
@@ -45,6 +45,10 @@ Object API
administrator will want to destroy an orphaned wallet database entry
after something happened to the remote system entry.
+ If you override this method and perform actions before calling the
+ parent method, be sure to check the locked flag first and abort if the
+ object is locked.
+
flag_clear(FLAG, PRINCIPAL, HOSTNAME [, DATETIME])
Normally, objects won't have to override this method, but if the
@@ -68,6 +72,9 @@ Object API
Don't forget to call log_action() after successfully retrieving the
data to update the history and trace information.
+ Be sure to check the locked flag first and abort if the object is
+ locked before returning any data.
+
store(DATA, PRINCIPAL, HOSTNAME [, DATETIME])
Store user-supplied data into the given object. This may not be
@@ -76,6 +83,9 @@ Object API
storing data can just not implement this method and the default
store() method will return an appropriate error.
+ Be sure to check the locked flag first and abort if the object is
+ locked without storing any data.
+
If this method is implemented, don't forget to call log_action() after
successfully storing the data to update the history and trace
information.
diff --git a/server/wallet-backend b/server/wallet-backend
index 1eafee5..b54f6c3 100755
--- a/server/wallet-backend
+++ b/server/wallet-backend
@@ -223,6 +223,11 @@ Administrators can run any command on any object or ACL except for C<get>
and C<store>. For C<get> and C<show>, they must still be authorized by
either the appropriate specific ACL or the owner ACL.
+If the locked flag is set on an object, no commands can be run on that
+object that change data except the C<flags> commands, nor can the C<get>
+command be used on that object. C<show>, C<getacl>, and C<owner> or
+C<expires> without an argument can still be used on that object.
+
=over 4
=item acl add <id> <scheme> <identifier>