diff --git a/README.md b/README.md index ae76a70..d1513ca 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,114 @@ -# LDAP-Admin +# ldap-admin -## abstract +A tool to manage users in an LDAP dictionary or a MySQL database. -Some ruby code for LDAP directory management. +_unfinished_ -## requires +## Synopsis -ruby 1.8 +The DN's used in ``tester.rb`` are obviously not applicable for other sites. +Additionally they do not reflect the current structure used here at +**weird-web-workers.org**. -## status +To test anything you need to have a directory and use fitting DN's for +testing. -discontinued \ No newline at end of file +## Description + +### What is there + + * Various data-models (user, group, mailAccount, mailALias, etc.) + * These might be stored in different storage backends + * These storage engines are queried with different query languages. + * The model specifies _which_ data is queried. + * The storage engine decides _how_ the data is queried. + +> **Conflict**: With ldap it is difficult to separate the _which_ from the +> _how_. +> +> **Possible solution: Some kind of factory that initializes the concrete +> database by the class of the model and the class of the storage engine. +> +> **Alternative**: Instead of a separate factory it might be feasable to +> create a generic database class with a method to create an instance by a +> given model. +> +> **Problem**: Then the database class has to know the initialization +> information for the associated model, which is an implementation detail +> of the model in fact. So this information should come from somewhere else +> but probably not from the model, because it probably also needs +> implementation details of the database class. +> +> **Maybe**: it is possible to do something by nameing conventions. But it +> might be cleaner to have a separate configuration file for each storage +> backend in which the necessary informations for the queries of the models +> can be configured. + +A yaml file for this might look like this: (ldap.yml) + + ldap: # => wenn es pro Datenbank ne eigenen datei gibt ist das nicht noetig + host: host.one.virtual + port: 389 + queries: + User: + baseDn: ou=user,o=system,dc=weird-web-workers,dc=org + filter: (objectClass=posixAccount) + Group: + baseDn: ou=group,o=system,dc=weird-web-workers,dc=org + filter: (objectClass=posixGroup) + + ... + +As an alternative of a single mapping file we could create one mapping file +for each mode / storage backend combination. These would be very small and +fast readable. + +Filesystem structure: + + model - user.rb + - group.rb + - site.rb + - mailalias_role.rb + - mailalias_person.rb + - mailaccount.rb + data - ldap.rb + data - config - ldap.yml + adapter - ldap.rb + - config - ldap - user.yml + - group.yml + - site.yml + - mailalias_role.yml + - mailalias_person.yml + - mailaccount.yml + +## Requirements + + * A running test dictionary or database + * Ruby + +## Dependencies + +unknown + +## Contributing + +Just email me. + +## License + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +## Author + +Georg Hopp