summaryrefslogtreecommitdiff
path: root/perl/Wallet/Server.pm
AgeCommit message (Collapse)Author
2014-07-11Switch to Module::Build for the Perl moduleRuss Allbery
The wallet server now requires Perl 5.8 or later (instead of 5.006 in previous versions) and is now built with Module::Build instead of ExtUtils::MakeMaker. This should be transparent to anyone not working with the source code, since Perl 5.8 was released in 2002, but Module::Build is now required to build the wallet server. It is included in some versions of Perl, or can be installed separately from CPAN, distribution packages, or other sources. Also reorganize the test suite to use subdirectories. Change-Id: Id06120ba2bad1ebbfee3d8a48ca2f25869463165 Reviewed-on: https://gerrit.stanford.edu/1530 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
2014-04-13Change my email address to eagle@eyrie.orgRuss Allbery
Change-Id: I4c2b5d7c807d6c27dd18a3b92eef66d21287d21e Reviewed-on: https://gerrit.stanford.edu/1481 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
2013-03-27Allow owners of objects to destroy them by defaultRuss Allbery
Owners of wallet objects are now allowed to destroy them. In previous versions, a special destroy ACL had to be set and the owner ACL wasn't used for destroy actions, but operational experience at Stanford has shown that letting owners destroy their own objects is a better model. Change-Id: I0e97d7a000e62cf5321add7b44140db6edc6769f Reviewed-on: https://gerrit.stanford.edu/973 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
2013-01-31Renamed dbh subroutines and variables for clarityJon Robertson
In moving from DBI to DBIx::Class, we at first left the various variables the same. This goes through to update them for the proper names. * Wallet::Admin::schema was created to return the schema object (and similarly for Wallet::Server and Wallet::Report). * Wallet::Admin::dbh was modified to return the actual DBI handle again (and similarly for Wallet::Server and Wallet::Report). * Various places that used $admin->{dbh} were moved to $admin->{schema}. * Various places using $dbh for the schema object were changed to $schema. Change-Id: I00914866e9a8250855a7828474aa9ce0f37b914f Reviewed-on: https://gerrit.stanford.edu/733 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
2013-01-30Moved the Perl wallet modules and tests to DBIx::ClassJon Robertson
Moved all the Perl code to use DBIx::Class for the database interface. This includes updating all database calls, how the schema is generated and maintained, and the tests in places where some output has changed. We also remove the schema.t test, as the tests for it are more covered in the admin.t tests now. Change-Id: Ie5083432d09a0d9fe364a61c31378b77aa7b3cb7 Reviewed-on: https://gerrit.stanford.edu/598 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
2012-11-04Add new acl check commandRuss Allbery
Add a new acl check command which, given an ACL ID, prints yes if that ACL already exists and no otherwise. This is parallel to the check command for objects. Also fix some documentation errors in the wallet client documentation, saying that the check command doesn't require any ACL and fixing one place where "show" was used instead of "store".
2012-08-30Fix POD stopwords and formattingRuss Allbery
Fix a formatting error in Wallet::ACL::LDAP::Attribute and add new stopwords required by the latest aspell.
2011-06-20Add a comment field to objectsRuss Allbery
Add a comment field to objects and corresponding commands to wallet-backend and wallet to set and retrieve it. The comment field can only be set by the owner or wallet administrators but can be seen by anyone on the show ACL.
2010-03-05Allow naming policy enforcement for ACL namesRuss Allbery
Wallet::Config now supports an additional local function, verify_acl_name, which can be used to enforce ACL naming policies. If set, it is called for any ACL creation or rename and can reject the new ACL name.
2010-03-05Document how to clear an ACL in Wallet::ServerRuss Allbery
2010-03-03Use L<> links instead of man page references for modulesRuss Allbery
Do this only in the main text, not in the SEE ALSO section, since the latter is more for conventional man pages. This will produce better results for some POD to HTML converters (although not mine, yet).
2010-02-09Check spelling of server API POD and tweak server docsRuss Allbery
Also update the POD syntax check to the current version of that check I use elsewhere. Since I'm touching all the POD anyway, also rewrap all of the POD to 74 columns. Fix some references to MIT in the Wallet::Kadmin::Heimdal module documentation.
2009-06-09Remove Subversion Id stringsRuss Allbery
2008-02-13Remove the restriction that all object implementations must have classRuss Allbery
names of Wallet::Object::* and all ACL verifier implementations must have class names of Wallet::ACL::*.
2008-02-07Add a new autocreate API call that tries to create an object using theRuss Allbery
default ACLs. Remove autocreation support from create, which now requires that one be on the ADMIN ACL, and from get and store. The wallet client will soon know how to do the right thing.
2008-02-07Add a check command to the wallet server to determine whether an objectRuss Allbery
already exists.
2008-02-06Check naming policy on wallet object creation before checking theRuss Allbery
default ACLs to avoid creating and stranding an ACL when the naming policy check fails.
2008-01-23Only disconnect the database handle during Wallet::Server objectRuss Allbery
destruction if the database handle hasn't already been destroyed.
2008-01-23Refactor database initialization into a new Wallet::Admin module.Russ Allbery
2008-01-22Add a Wallet::Database class that now holds the database connection codeRuss Allbery
previously in Wallet::Server. Remove all the attribute setting on database handles in the other classes since Wallet::Database handles that initialization.
2008-01-17Support enforcing a naming policy for wallet objects via a PerlRuss Allbery
function in the wallet server configuration file.
2007-12-07Check a default creation ACL first before the ADMIN ACL when decidingRuss Allbery
whether we can auto-create a non-existent ACL, since creating one with the ADMIN ACL doesn't create a useful object. Allow @ in wallet-backend arguments so that principal names can be passed in.
2007-12-07Correctly implement the documented intention that setting an attributeRuss Allbery
to the empty string clears the attribute values.
2007-12-07Get rid of a bunch more return undefs.Russ Allbery
2007-12-07Load the Perl modules for ACL verifiers and object types dynamicallyRuss Allbery
now that we're reading the class from the database.
2007-12-05Various coding style fixes and cleanup based on a much-appreciatedRuss Allbery
code audit by Simon Cozens. I didn't take all of his advise, and he shouldn't be blamed for any remaining issues.
2007-12-05Determine the class for object and ACL schema implementations from theRuss Allbery
database rather than a hard-coded list and provide Wallet::Schema methods for adding new class mappings. Add a missing class mapping for the netdb ACL schema verifier.
2007-12-01Following the DBI documentation, turn on AutoCommit after RaiseError soRuss Allbery
that we have some hope of getting error messages if it fails.
2007-12-01Don't disconnect on destruction of the server object if the handle isRuss Allbery
marked with InactiveDestroy.
2007-12-01Expiration dates are now expressed in YYYY-MM-DD HH:MM:SS instead ofRuss Allbery
seconds since epoch and returned the same way. Timestamps are now stored in the database as correct date and time types rather than seconds since epoch to work properly with MySQL.
2007-11-30Initial work on supporting testing with MySQL.Russ Allbery
Add a drop() method to Wallet::Schema to destroy the wallet database. Add a test suite for it. Add a reinitialize() method to Wallet;:Server that drops the database before creating it. Modify the wallet object test cases to call reinitialize() to create the initial database and drop() to clean up the database after the test is complete. Fix a bug preventing Wallet::Schema from being initialized multiple times. We now stash the schema in a class static variable and reuse it for subsequent initializations, since re-reading DATA doesn't work.
2007-11-20Attempt to create the object with a default owner on get and storeRuss Allbery
when the object doesn't exist.
2007-11-20Add support for running a user-defined function whenever an object isRuss Allbery
created by a non-ADMIN user and using the default owner ACL returned by that function provided that the calling user is authorized by that ACL. This permits dynamic creation of new objects based on a default owner ACL programmatically determined from the name of the object.
2007-10-11Add an acl_history method to the server layer and test it.Russ Allbery
2007-10-10Add the history method (for objects).Russ Allbery
2007-10-05Add comprehensive license information in LICENSE and update the copyrightRuss Allbery
and license statements in all files. Make sure that some files that were missing copyright information now have them. Reference LICENSE rather than README in all notices.
2007-09-20Take multiple values in the attr() method and convert it to a referenceRuss Allbery
to an array internally so that the callers don't have to be aware of the internal API.
2007-09-20Change the error handling of the Wallet::ACL list() method to return theRuss Allbery
empty list on errors and clear error() so that it can be used to distinguish between an error and an empty ACL.
2007-09-20Add support for attribute setting and retrieving to the high-levelRuss Allbery
interface with appropriate ACL support. Retrieving is controlled by the show ACL and setting is controlled by the store ACL, both falling back to owner.
2007-09-18Add flag_set and flag_clear to Wallet::Server.Russ Allbery
2007-09-17Add an acl_show() method to Wallet::Server that calls the underlying ACLRuss Allbery
show() method.
2007-09-01Note that not all objects support store.Russ Allbery
2007-09-01Add some additional safeguards to ensure that users cannot destroy,Russ Allbery
rename, or remove the last entry from the ADMIN ACL. Add full documentation for Wallet::Server.
2007-08-31Use a better method of setting the internal error that automaticallyRuss Allbery
adjusts for trailing newlines and exception detritus, saving duplicate code. Standardize the documentation of the error() method and document using this in child classes of the generic ACL and Object classes. Disable printing of errors during connect in Wallet::Server since we're going to throw our own exception.
2007-08-31Allow empty DB_INFO and DB_NAME settings as long as they're defined.Russ Allbery
2007-08-30Fix ACL verification for destroy and flags actions. Clear the internalRuss Allbery
error before accessor functions that can return undef not because of an error but just because the column is null so that the caller can tell the difference.
2007-08-30Return true from object creation, not the new object, which would be aRuss Allbery
layering violation. Fix permission denied error messages for store. Don't give administrators global access to get and store, since it would encourage bad ACL practices. When checking ACLs, instantiate the ACL object correctly. Support clearing attributes and propagate object errors into the server error correctly. Reject stores of undefined data (the empty string is okay).
2007-08-30Properly clean up errors from exceptions. Properly catch exceptions whenRuss Allbery
creating ACL objects in Wallet::Server. Don't return the ACL object from the acl_create method of Wallet::Server -- it's a layering violation.
2007-08-30Clean up all exception output when storing it in the error variable toRuss Allbery
remove the " at line" stuff added by Perl and the newlines so that the errors stored in objects are consistent. Fix various bugs in the base object, including a few more type vs. name inversions and use of object instead of name. Allow owners to be specified as ACL names instead of IDs, and change the ID to a name in show. Add a new test suite for the base object implementation.
2007-08-30Fix all the interfaces so that objects are identified as type, name, notRuss Allbery
name, type, and fix the schema for the places where I'd renamed name to object for no good reason. I don't know what I was thinking originally.