ReadMe: Changed the ``big picture'' ASCII art and wrote about the HTML entity replace...
[licom.git] / ReadMe
diff --git a/ReadMe b/ReadMe
index 6b7f546..5700952 100644 (file)
--- a/ReadMe
+++ b/ReadMe
@@ -1,6 +1,60 @@
  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. There 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
+  your 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:
@@ -18,25 +72,44 @@ These requirements are tried to be met with the following approach:
 - On top of these modules a CGI-script has been written.
 
 
+Internationalization
+
+FIXME
+Since version 1.0 LiCoM is using UTF-8 for everything, so non-ASCII characters
+may be used everywhere. Entering these characters may be a problem, though,
+especially if you have an US american keyboard layout as I do. But entering a
+german umlaut is still hard if you have a french keyboard layout, so the
+problem is just shifted there.
+If your browser supports JavaScript LiCoM lets you enter such `foreign names'
+in a very elegant way: You simply type the HTML escape sequence and the
+JavaScript will convert it to the right character for youàSo if you want to
+enter `MÃller' (a very common german surname)
+
 
-The big picture
----------------
+The big picture:
 
-[dc=org]
- |
- `->[dc=verplant]
+    [dc=org]
      |
-     `->[ou=addresses]
+     `->[dc=verplant]
          |
-        +->[cn=Forster Florian]
-        |   |
-        |   +->[cn=Test Person]
-        |   +->[cn=Someone Else]
-        |   :  ...
-        |   `->[cn=Last Person]
-        |
-        +->[cn=Another User]
-        |   |
-        |   +->[cn=Still More Entries]
-        :   :
+         `->[ou=LiCoM]
+             |
+             +->[ou=Person]
+            |   |
+            |   +->[cn=Test Person]
+            |   +->[cn=Someone Else]
+            |   :  ...
+             |   `->[cn=Last Person]
+            |
+            `->[ou=Group]
+                |
+                +->[cn=Some Group]
+                |   member=cn=Test Person,ou=Person,ou=LiCoM,dc=verplant,dc=org
+                |   member=cn=Last Person,ou=Person,ou=LiCoM,dc=verplant,dc=org
+                |   member=...
+                +->[cn=Another Group]
+                :   member=cn=Someone Else,ou=Person,ou=LiCoM,dc=verplant,dc=org
+                    member=cn=Last Person,ou=Person,ou=LiCoM,dc=verplant,dc=org
+                    member=...
 
+