TP WEBCALENDAR

Présentation et installation

WebCalendar est une application de partage d'un agenda en réseau. Elle est écrite en PHP, avec accès à une base SQL. L'objectif est de l'installer sur la machine SE3, d'utiliser l'authentification fournié par son annuaire LDAP.
Site, documentation et tutoriel : http://www.k5n.us/webcalendar.php Comme il n'existe (pas encore) de paquets pour PHP5, nous allons procéder à une installation à partir des sources.

1ère installation standard

  1. Téléchargement
  2. Sur le site sourceforge.net, version 1.0.5
    Placer l'archive WebCalendar-1.0.5.tar.gz à la racine du serveur WEB /var/www
  3. Désarchivage
  4. cd /var/www
    décompresser
    gzip -d WebCalendar-1.0.5.tar.gz 
    dans quel répertoire se fera le désarchivage ?
    tar -tvf WebCalendar-1.0.5.tar  
    désarchivage : tout est placé dans le sous-rép WebCalendar-1.0.5
    tar -xvf WebCalendar-1.0.5.tar  
    changer de nom de répertoire
    mv WebCalendar-1.0.5  webcalendar
    
  5. Accès à la page d'installation
  6. http://ubuntu/webcalendar/
    Message décrivant la situation :
    - base de données décelée sur la plate-forme : mysql
    - actuellement, l'application ne peut pas s'y connecter 
    - il n'y a pas de mot de passe protégeant l'accès à la page
    - il faut donner le droit d'écriture sur /var/www/webcalendar/includes (et uniquement celui-là)
    
  7. Accorder les droits
  8. cd  /var/www/webcalendar
    changer les propriétaires
    chown -R www-data.root *
    enlever le droit d'écriture pour tous
    chmod -R a-w *
    l'accorder au rep. includes
    chmod u+w includes
    
  9. Reprise de la page d'installation
  10. Paramétrage de l'accès au serveur de bases de données Mysql

    Cet essai échoue, bien sûr, car le script ne peut pas créer la base au nom d'un compte inconnu du serveur Mysql !

  11. Création d'un compte dédié à la gestion de l'application
  12. Il est conseillé de ne pas utiliser le compte administrateur du serveur (ici root/fctice) pour gérer cette base de données.
    Voici comment effectuer le paramétrage d'un compte dédié (ici : cal/ cal) avec phpmyadmin ou avec le client mysql (directement sur la console ou par session distante ssh) :
    connexion au serveur avec le client mysql 
    mysql -u root -p  --> mot de passe de root 
    mysql> create database webcalendar;
    définir le compte cal/ cal et lui accorder tous les droits sur la base webcalendar
    (si on est plus restrictif, accorder quand même le droit "create" pour pouvoir créer les tables)
    mysql> GRANT ALL PRIVILEGES ON  webcalendar.* TO cal@localhost
    	IDENTIFIED BY "cal";
    mysql> quit
    mysql -u cal -p
    mysql> show databases;
    --> visibilité uniquement de la base webcalendar !
    
  13. Initialisation de la base
  14. cd /var/www/webcalendar
    mysql -u cal -p webcalendar < tables-mysql.sql

  15. Première connexion
  16. La page d'accueil http://ubuntu/webcalendar/ demande une authentification. Il s'agit de :
    login : admin / mot de passe : admin

Prise en main de WebCalendar

Voir les manuels utilisateurs et administrateurs à http://ubuntu/webcalendar/docs/WebCalendar-SysAdmin.html
Créer d'autres utilisateurs, remplir les agendas, tester le croisement des agendas personnels ..

2ème installation : authentification LDAP

Il est possible de s'authentifier directement sur un annuaire LDAP (par exemple sur SambaEdu3), à partir de l'installation
Voir : http://ubuntu/webcalendar/docs/WebCalendar-SysAdmin.html#appendixD
  1. accès web à http://ubuntu/webcalendar-ldap
  2. droits
  3. cd var/www/webcalendar-ldap/
    chown -R www-data.root *
    chmod -R go-rwx *
    chmod -R u-w *
    chmod u+w includes
    
  4. Access denied for user 'webcalendar'@'localhost' to database 'webcalendar_ldap'

  5. création manuelle du compte et de la base
  6. mysql -u root -p
     --> mot de passe de root 
    mysql> create database webcalendar_ldap;
    utiliser le compte webcalendar/webcalendar pour accéder à la base webcalendar_ldap
    mysql> GRANT ALL PRIVILEGES ON  webcalendar_ldap.* TO webcalendar@localhost
    	IDENTIFIED BY "webcalendar";
    mysql> quit
    mysql -u webcalendar -p  webcalendar_ldap  < tables-mysql.sql
    
  7. Mot de passe admin : admin
  8. Le fichier de configuration includes/settings.php
  9. Spécifier : user_inc: user-ldap.php
  10. Rejoindre l'annuaire LDAP
  11. on précise User Authentication: LDAP Puis plus rien ne fonctionne .. jusqu'à avoir édité le fichier includes/user-ldap.php, et l'avoir correctement renseigné (Voir un exemple de configuration en annexe)

ANNEXE

Configuration de l'accès à l'annuaire LDAP Cela s'effectue en renseignant correctement les clauses suivantes de includes/user-ldap.php
/------ LDAP General Server Settings ------//
//
// Name or address of the LDAP server 
//  For SSL/TLS use 'ldaps://localhost'
$ldap_server = '192.168.0.5';          

// Port LDAP listens on (default 389)        
$ldap_port = '389';                   
// Use TLS for the connection (not the same as ldaps://)
$ldap_start_tls = false;

// base DN to search for users      
$ldap_base_dn = 'ou=People,dc=fctice,dc=local';

// The ldap attribute used to find a user (login). 
// E.g., if you use cn,  your login might be "Jane Smith"
//       if you use uid, your login might be "jsmith"
$ldap_login_attr = 'uid';

// Account used to bind to the server and search for information. 
// This user must have the correct rights to perform search.
// If left empty the search will be made in anonymous.

// *** We do NOT recommend storing the root LDAP account info here ***
$ldap_admin_dn = '';  // user DN
$ldap_admin_pwd = ''; // user password

//------ Admin Group Settings ------//
// A group name (complete DN) to find users with admin rights
$ldap_admin_group_name = 'cn=Profs,dc=fctice,dc=local';

// What type of group do we want (posixgroup, groupofnames, groupofuniquenames)
$ldap_admin_group_type = 'posixgroup';

// The LDAP attribute used to store member of a group
$ldap_admin_group_attr = 'memberuid';
//------ LDAP Search Settings ------//
// LDAP filter to find a user list.
$ldap_user_filter = '(objectclass=person)';

// Attributes to fetch from LDAP and corresponding user variables in the
// application. Do change according to your LDAP Schema
$ldap_user_attr = array( 
  // LDAP attribute   //WebCalendar variable
  'uid',              //login
  'sn',               //lastname
  'givenname',        //firstname
  'cn',               //fullname
  'mail'              //email  
);
Problème : réserver l'usage à certains groupes, par exemple le groupe Profs
ligne 80 login.php --> fct user_valid_login($login, $password)
modifier cette fonction comme cela a été fait pour glpi