 Lightweight Contact Manager - LiCoM
-===================================-

Requirements:

- Webserver with CGI support (Apache, http://httpd.apache.org/, with
  mod_auth_ldap works best)
- LDAP server (OpenLDAP will do, http://www.openldap.org/)
- Perl (Version 5.6 or later)


Other things you need:
- Understanding of Apache and LDAP
  OR
- Someone who knows
  OR
- Curiosity, manuals, time and coffee


Installation:

Please read these instructions, they include non-obvious hints.

- Install and configure the LDAP-Server. The root-node for each User must be of
  the type (aka. objectClass) ``inetOrgPerson''. Also, make sure the ``uid''
  Field is set. LDAP-entries without an uid-field are considered to be
  contact-entries. For a sample layout see ``The big picture'' below.

- Install and configure Apache. These is a sample config in the samples
  directory which will guide you. It's very important that the REMOTE_USER
  environment variable is set to the full DN by mod_auth_ldap. Look for
  ``AuthLDAPRemoteUserIsDN'' in Apache's manual.
  You will have to set a passwort to connect to the LDAP server, unless you
  allow anonymous logins. Make sure the passwort is not world-readable.

- Copy the ``licom.cgi'' script into the directory you just set up. Make sure
  it's executable by the weberser-user.

- Copy the directory ``lib/LiCoM'' to an appropriate directory.
  ``perl -V:installsitelib'' may give you an idea what an appropriate directory
  might be. You may not want to install the modules globally. In this case copy
  the entire ``lib'' directory into the same directory as the CGI script. It
  will look in a subdirectory ``lib'' for it's modules.

- Create a config at ``/etc/licom/licom.conf''. Again, the samples directory is
  you friend. Also: there's probably a password in this file. Make sure it's
  not world-readable. The webserver will need read-permissions though.

- To install the licom-mutt.pl script you will need to do something fancy, I
  guess.. I'll explain it as soon as I know for sure..

Okay, that's about it. You may stop reading now if you dislike reading
documentation ;)


Motivation:

LiCoM is a contact manager I started writing because my family, my friends and
myself were not very comfortable with the many existing address book scripts.
The demands were:
- High compatibility with existing e-mail readers
- Read and write operations
- Export to vCards
- Print lists of groups and/or all contacts
- Multi-user capable

These requirements are tried to be met with the following approach:
- Data is kept in an LDAP database (the overall layout is shown in "The big
  picture")
- The LDAP-server is accessed through perl modules which prodide a high-level
  interface to the database.
- On top of these modules a CGI-script has been written.


The big picture:

    [dc=org]
     |
     `->[dc=verplant]
         |
         `->[ou=addresses]
             |
             +->[cn=Forster Florian]
             |   |
             |   +->[cn=Test Person]
             |   +->[cn=Someone Else]
             |   :  ...
             |   `->[cn=Last Person]
             |
             +->[cn=Another User]
             |   |
             |   +->[cn=Still More Entries]
             :   :
    
