ReadMe: Changed the ``big picture'' ASCII art and wrote about the HTML entity replace...
[licom.git] / ReadMe
1  Lightweight Contact Manager - LiCoM
2 -===================================-
3
4 Requirements:
5
6 - Webserver with CGI support (Apache, http://httpd.apache.org/, with
7   mod_auth_ldap works best)
8 - LDAP server (OpenLDAP will do, http://www.openldap.org/)
9 - Perl (Version 5.6 or later)
10
11
12 Other things you need:
13 - Understanding of Apache and LDAP
14   OR
15 - Someone who knows
16   OR
17 - Curiosity, manuals, time and coffee
18
19
20 Installation:
21
22 Please read these instructions, they include non-obvious hints.
23
24 - Install and configure the LDAP-Server. The root-node for each User must be of
25   the type (aka. objectClass) ``inetOrgPerson''. Also, make sure the ``uid''
26   Field is set. LDAP-entries without an uid-field are considered to be
27   contact-entries. For a sample layout see ``The big picture'' below.
28
29 - Install and configure Apache. There is a sample config in the samples
30   directory which will guide you. It's very important that the REMOTE_USER
31   environment variable is set to the full DN by mod_auth_ldap. Look for
32   ``AuthLDAPRemoteUserIsDN'' in Apache's manual.
33   You will have to set a passwort to connect to the LDAP server, unless you
34   allow anonymous logins. Make sure the passwort is not world-readable.
35
36 - Copy the ``licom.cgi'' script into the directory you just set up. Make sure
37   it's executable by the weberser-user.
38
39 - Copy the directory ``lib/LiCoM'' to an appropriate directory.
40   ``perl -V:installsitelib'' may give you an idea what an appropriate directory
41   might be. You may not want to install the modules globally. In this case copy
42   the entire ``lib'' directory into the same directory as the CGI script. It
43   will look in a subdirectory ``lib'' for it's modules.
44
45 - Create a config at ``/etc/licom/licom.conf''. Again, the samples directory is
46   your friend. Also: there's probably a password in this file. Make sure it's
47   not world-readable. The webserver will need read-permissions though.
48
49 - To install the licom-mutt.pl script you will need to do something fancy, I
50   guess.. I'll explain it as soon as I know for sure..
51
52 Okay, that's about it. You may stop reading now if you dislike reading
53 documentation ;)
54
55
56 Motivation:
57
58 LiCoM is a contact manager I started writing because my family, my friends and
59 myself were not very comfortable with the many existing address book scripts.
60 The demands were:
61 - High compatibility with existing e-mail readers
62 - Read and write operations
63 - Export to vCards
64 - Print lists of groups and/or all contacts
65 - Multi-user capable
66
67 These requirements are tried to be met with the following approach:
68 - Data is kept in an LDAP database (the overall layout is shown in "The big
69   picture")
70 - The LDAP-server is accessed through perl modules which prodide a high-level
71   interface to the database.
72 - On top of these modules a CGI-script has been written.
73
74
75 Internationalization
76
77 FIXME
78 Since version 1.0 LiCoM is using UTF-8 for everything, so non-ASCII characters
79 may be used everywhere. Entering these characters may be a problem, though,
80 especially if you have an US american keyboard layout as I do. But entering a
81 german umlaut is still hard if you have a french keyboard layout, so the
82 problem is just shifted there.
83 If your browser supports JavaScript LiCoM lets you enter such `foreign names'
84 in a very elegant way: You simply type the HTML escape sequence and the
85 JavaScript will convert it to the right character for youàSo if you want to
86 enter `MÃller' (a very common german surname)
87
88
89 The big picture:
90
91     [dc=org]
92      |
93      `->[dc=verplant]
94          |
95          `->[ou=LiCoM]
96              |
97              +->[ou=Person]
98              |   |
99              |   +->[cn=Test Person]
100              |   +->[cn=Someone Else]
101              |   :  ...
102              |   `->[cn=Last Person]
103              |
104              `->[ou=Group]
105                  |
106                  +->[cn=Some Group]
107                  |   member=cn=Test Person,ou=Person,ou=LiCoM,dc=verplant,dc=org
108                  |   member=cn=Last Person,ou=Person,ou=LiCoM,dc=verplant,dc=org
109                  |   member=...
110                  +->[cn=Another Group]
111                  :   member=cn=Someone Else,ou=Person,ou=LiCoM,dc=verplant,dc=org
112                      member=cn=Last Person,ou=Person,ou=LiCoM,dc=verplant,dc=org
113                      member=...
114
115