Weave, une extension prometteuse : le serveur
février 20th, 2010 Posté dans Administration, InternetLe dernier volet de notre dossier concerne l’installation du serveur Weave sur une plateforme AMP (Apache, MySQL, PHP). Dans l’exemple que je vais donner ici, l’installation sera réalisée sur une Ubuntu 8.04 LTS mais il est tout à fait possible de faire un travail similaire sur Mac OSX ou Windows. Je passerai donc sous silence l’installation des composants logiciels préalable.
Nous allons installer deux composants de la suite Weave server :
- weaveserver-sync : application REST de synchronisation des profils : le cœur du système.
- weaveserver-registration : en cas de perte de mot de passe, ce module permet d’en redemander un autre. (Le serveur de messagerie doit naturellement être disponible.)
Première étape : Mise en place d’une base de données dédiée.
Voici le script :
--
-- Structure de la table `collections`
--
CREATE TABLE IF NOT EXISTS `collections` (
`userid` int(11) NOT NULL,
`collectionid` smallint(6) NOT NULL,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`userid`,`collectionid`),
KEY `nameindex` (`userid`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `users` (utilisateurs)
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`username` varbinary(32) NOT NULL,
`md5` varbinary(32) default NULL,
`email` varbinary(64) default NULL,
`status` tinyint(4) default '1',
`alert` text,
`reset` varchar(32) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `wbo` (éléments cryptés)
--
CREATE TABLE IF NOT EXISTS `wbo` (
`username` int(11) NOT NULL,
`collection` smallint(6) NOT NULL default '0',
`id` varbinary(64) NOT NULL default '',
`parentid` varbinary(64) default NULL,
`predecessorid` varbinary(64) default NULL,
`sortindex` int(11) default NULL,
`modified` bigint(20) default NULL,
`payload` longtext,
`payload_size` int(11) default NULL,
PRIMARY KEY (`username`,`collection`,`id`),
KEY `parentindex` (`username`,`collection`,`parentid`),
KEY `modified` (`username`,`collection`,`modified`),
KEY `weightindex` (`username`,`collection`,`sortindex`),
KEY `predecessorindex` (`username`,`collection`,`predecessorid`),
KEY `size_index` (`username`,`payload_size`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Une fois les tables ajoutées dans une base MySQL, il est indispensable de créer un premier utilisateur :
INSERT INTO users ( id,username,md5,email,status,alert,reset)
VALUES (NULL , 'evoliatis', MD5( 'motdepasse' ) , 'leblog@evoliatis.com', '1', NULL , NULL);Deuxième étape : configuration d’Apache
Il est ensuite recommandé de créer un hôte virtuel apache. Voici une configuration qui tient compte du module synchronisation et registration. Cet hôte s’appelle « weave.evoliatis.com » et sa configuration est relativement sécurisé. Toutefois, pour plus de sécurité dans les échanges, nous vous conseillons vivement d’utiliser le protocole sécurisé https et pourquoi pas, une authentification apache supplémentaire (fichier .htaccess par exemple).
Notez que si le certificat https utilisé n’est pas valide (certificat auto-signé par exemple), il sera nécessaire de préalablement l’accepter au niveau du client (Firefox) pour pouvoir réaliser les synchronisations ultérieures. Dans le cas contraire, l’extension déclenche une erreur de connexion pas vraiment explicite.
Les deux applications sync et registration seront installées chacune dans un répertoire spécifique de l’hôte virtuel et seront utilisées par le biais d’alias : weaveserver-registration et weaveserver-sync.
Voici la configuration de l’hôte virtuel
ServerName weave.evoliatis.com
ServerAdmin leblog@evoliatis.com
DocumentRoot /var/www/weave.evoliatis.com
# Installation de la version 1.0
# Registration (changement des mots de passe )
# depuis : http://weave.evoliatis.com/weave-password-reset
Alias /user/1.0 /var/www/weave.evoliatis.com/weaveserver-registration/1.0/index.php
# Captcha désactivable pour bloquer les formulaires automatiques
Alias /misc/captcha_html /var/www/weave.evoliatis.com/weaveserver-registration/1.0/captcha.php
# Données statiques : feuilles de styles, images...
Alias /weave-registration-static /var/www/weave.evoliatis.com/weaveserver-registration/1.0/static
# La page elle-même
Alias /weave-password-reset /var/www/weave.evoliatis.com/weaveserver-registration/1.0/forgot_password.php
# Synchronisation depuis l'extension
Alias /1.0 /var/www/weave.evoliatis.com/weaveserver-sync/1.0/index.php
Options -Indexes FollowSymLinks MultiViews
# Journaux d'accès
AllowOverride All
Order allow,deny
allow from all
ErrorLog /var/log/apache2/weave.evoliatis.com.error.log
LogLevel warn
CustomLog /var/log/apache2/weave.evoliatis.com.access.log combined
ServerSignature OffTroisième étape : Installation de l’application weaveserver-registration
On télécharge le logiciel depuis le site de Mozilla Labs : https://hg.mozilla.org/labs/weaveserver/archive/tip.tar.gz et on le décompresse dans la racine de l’hôte virtuel :
/var/www/weave.evoliatis.com/weaveserver-registration (dans notre cas).
Il nous faut ensuite préparer un fichier de constantes : weave_user_constants.php en utilisant le modèle fourni, puis le mettre à jour
cd webserver-registration/1.0
cp weave_user_constants.php.dist weave_user_constants.php
Exemple de modifications (ce qu’il faut changer est en gras) :
# ***** BEGIN LICENSE BLOCK *****
...
define('WEAVE_AUTH_ENGINE', 'mysql');
#engine for auth
#Acceptable values: mysql | mozilla
...
#Login / Mot de passe / BD pour MySQL
if (!defined('WEAVE_MYSQL_AUTH_HOST'))
{ define('WEAVE_MYSQL_AUTH_HOST', 'localhost'); }
if (!defined('WEAVE_MYSQL_AUTH_DB'))
{ define('WEAVE_MYSQL_AUTH_DB', 'weave'); }
if (!defined('WEAVE_MYSQL_AUTH_USER'))
{ define('WEAVE_MYSQL_AUTH_USER', 'weave'); }
if (!defined('WEAVE_MYSQL_AUTH_PASS'))
{ define('WEAVE_MYSQL_AUTH_PASS', 'passwordbd'); }
...
# Activation captcha (WEAVE_REGISTER_USE_CAPTCHA = 1) sinon 0
#You can get your private and public keys from http://recaptcha.net/
if (!defined('WEAVE_REGISTER_USE_CAPTCHA'))
{ define('WEAVE_REGISTER_USE_CAPTCHA',1); }
if (!defined('RECAPTCHA_PUBLIC_KEY'))
{ define('RECAPTCHA_PUBLIC_KEY', 'votre clef'); }
if (!defined('RECAPTCHA_PRIVATE_KEY'))
{ define('RECAPTCHA_PRIVATE_KEY', 'votre clef'); }
#Email utilisé par weave pour envoyer les mots de passe
if (!defined('WEAVE_PASSWORD_RESET_EMAIL'))
{ define('WEAVE_PASSWORD_RESET_EMAIL', 'leblog@evoliatis.com'); }Quatrième étape : Installation de l’application weaveserver-sync
On télécharge le logiciel depuis le Mozilla Labs à l’adresse : https://hg.mozilla.org/labs/weaveserver-sync/archive/tip.tar.gz et on le décompresse dans l’hôte virtuel : /var/www/weave.evoliatis.com/weaveserver-sync (dans notre cas)
Il nous faut ensuite préparer un fichier de constantes : default_constants.php en utilisant le modèle fourni (default_constants.php.dist), puis le mettre à jour
cd webserver-sync/1.0
cp default_constants.php.dist default_constants.php
Modification des constantes (default_contants.php)
# ***** BEGIN LICENSE BLOCK *****
…
#engine for storage.
#Acceptable values: mysql. There are no other storage engines at this point.
#If you want sqlite, please check out the Weave Minimal server
# Nous utilisation MySQL pour le stockage des données et la connexion
define('WEAVE_STORAGE_ENGINE', 'mysql');
define('WEAVE_AUTH_ENGINE', 'mysql');
if (!defined('WEAVE_STORAGE_ENGINE')) { define('WEAVE_STORAGE_ENGINE', 'mysql'); }
if (WEAVE_STORAGE_ENGINE == 'mysql')
{
#host, db name, username and password for the auth store
if (!defined('WEAVE_MYSQL_STORE_READ_HOST'))
{ define('WEAVE_MYSQL_STORE_READ_HOST', 'localhost'); }
if (!defined('WEAVE_MYSQL_STORE_READ_DB'))
{ define('WEAVE_MYSQL_STORE_READ_DB', 'weave'); }
if (!defined('WEAVE_MYSQL_STORE_READ_USER'))
{ define('WEAVE_MYSQL_STORE_READ_USER', 'weave'); }
if (!defined('WEAVE_MYSQL_STORE_READ_PASS'))
{ define('WEAVE_MYSQL_STORE_READ_PASS', 'passwordbd'); }
…
#engine for auth (moteur utilisé pour les connexions)
#Acceptable values: mysql | sqlite | mozilla | none
#This should match the values defined in your Weave Registration constants file
if (!defined('WEAVE_AUTH_ENGINE')) { define('WEAVE_AUTH_ENGINE', 'mysql'); }
if (WEAVE_AUTH_ENGINE == 'mysql')
{
#host, db name, username and password for the mysql auth store
if (!defined('WEAVE_MYSQL_AUTH_HOST'))
{ define('WEAVE_MYSQL_AUTH_HOST', 'localhost'); }
if (!defined('WEAVE_MYSQL_AUTH_DB'))
{ define('WEAVE_MYSQL_AUTH_DB', 'weave'); }
if (!defined('WEAVE_MYSQL_AUTH_USER'))
{ define('WEAVE_MYSQL_AUTH_USER', 'weave'); }
if (!defined('WEAVE_MYSQL_AUTH_PASS'))
{ define('WEAVE_MYSQL_AUTH_PASS', 'passwordbd'); }
}
...
#The maximum size of a payload (set to 0 for unlimited) in bytes. Watch out for large characters!
if (!defined('WEAVE_PAYLOAD_MAX_SIZE')) { define('WEAVE_PAYLOAD_MAX_SIZE', 262144); } #256K
#The maximum quota per user in bytes. Keep commented out to turn quotas off
#if (!defined('WEAVE_QUOTA')) { define('WEAVE_QUOTA', 5120000); } #5MDernière étape : Test du serveur Weave
- Paramétrage de l’extension « Weave Sync »
Pour pouvoir utiliser sereinement l’extension voici les paramètres à définir (cf : le billet sur Weave Sync côté client)
Il faut être extrêmement vigilant sur l’URL, cette dernière doit obligatoirement se terminer par un slash « / » sinon, le chemin ne sera pas correct. Croyez-moi, on met un bon moment avant de comprendre… Un clic sur « Sign In » et l’assistant classique suit son cours.
- Tests de weaveserver-registration
Si la configuration des différents alias est correcte et tous les fichiers au bon endroit, nous avons également à disposition une page de gestion des mots de passe perdu à l’adresse : http://weave.evoliatis.com/weave-password-reset

- Autres tests
Notez que pour chacune des applications proposées, un répertoire « tests » permet de lancer un script d’auto-validation de l’installation. Mais ils ne semblent toutefois pas toujours très fiables. Je n’ai réussi à ne faire le test que de weaveserver-registration. Le module waveserver-sync m’indiquait une erreur alors que tout était OK !

Notez aussi que pour valider et suivre l’activité du serveur, le plus simple reste les journaux apache et les journaux de l’extension Weave sur le client. Depuis la barre des tâches, clic droit sur l’icône Weave et utiliser « Activity Log »
Nous arrivons à la fin de ce dossier, j’espère que vous aussi, vous aurez trouvé intéressant l’extension Weave Sync de Firefox et sa déclinaison serveur : weaveserver-sync et weaveserver-registration. Pour ma part, j’ai mis en place ce système sur un serveur de production en https et tout fonctionne à merveille. Je m’en sert aujourd’hui quotidiennement depuis trois semaines et n’ai pas remarqué de bugs significatifs (d’où ce dossier).
Dans les commentaires postés sur l’extension mozilla (lien ici), beaucoup d’utilsateurs s’en plaignent mais je pense vraiment qu’il s’agit de problèmes rencontrés avec les serveur de Mozilla Labs (montée en charge brusque, version bêta de certains serveurs…)

12 réponses pour “Weave, une extension prometteuse : le serveur”
Par Olivier Mengué on mar 10, 2010
Tu indiques plusieurs points sur lesquels il faut faire attention (ex: le slash dans l’URL).
As-tu rapporté ces bugs sur le Bugzilla de Weave ?
Si oui, peux-tu indiquer les urls de ces bugs ?
Par Evoliatis on mar 10, 2010
Chez Mozilla, ils sont très réactifs :
- Le problème sur le certificat SSL est indiqué dans les HOWTO mais n’est pas un bug. Heureusement que le navigateur n’accepte pas n’importe quel site avec un certificat
- Le slash à la fin a déjà été corrigé avec la version 1.1 de l’extension.
Par kirk on avr 7, 2010
Bonjour,
j’ai aussi installé un server weave mais résultats peu concluants. (synchro semble
ok mais plusieurs messages d’erreur, notamment lors de la visualisation des pages index.php de chaque module ou des modules test). De ce fait je suis pas trop confiant pour le déploiement.
As tu eu de la difficulté à le mettre en place ?
J’ai posté sur les groups dédiés mais apparemment pas trop d’aide possible.
As tu des liens ou de la doc plus explicite?
Merci
Kirk
Par Evoliatis on avr 8, 2010
Justement, il est très difficile de trouver une documentation hormis les liens que j’ai proposé dans le billet. Le projet reste encore très orienté développeur et on ne trouve pas de paquetage pour le moment.
Généralement, comme je l’ai précisé dans mon article, il ne faut pas trop se fier aux tests proposés. L’important est le remplissage de la base de données. Pour info, j’utilise weave depuis plusieurs mois maintenant sans aucun problèmes. Pour faire un vérification, le plus simple est de créer 2 profils (profilA et profilB par exemple), depuis 2 postes différents (PosteA et PosteB). Puis désinscrire les deux postes et les inscrire chacun dans le profil de l’autre. Si tout se passe bien, alors normalement ce sera bon avec 100 profils si nécessaire.
Vérifie aussi ta configuration apache afin de t’assurer une bonne montée en charge.
J’aurai du mal à te proposer plus en l’état actuel des choses
Bon courage !
Par kirk on avr 19, 2010
Bonjour,
tout d’abord merci pour ton aide.
J’ai testé 2 profils différents et cela à l’air de fonctionner.
Juste une précision:
chez moi quand je me connecte par le navigateur sur le server, j’obtiens:
par
- weaveserver-sync –> aucun message si ce n’est Firefox qui m’indique que la page n’est pas trouvée
- weaveserver-registration –> message « path not found »
as tu la même chose ?
Par przewoz osob do holandii on juil 14, 2010
I was bored until i’ve found your blog, interesting posts
Par sun tattoo designs on juil 26, 2010
Very cool website, but you must improve your header graphics.
Par Free Avatars on août 8, 2010
Adding to my bookmarks thanks. Where is your contact details though?
Par Hello Kitty Coloring Pages on août 16, 2010
Cool post thanks, where are your contact details hmm?
Par online conveyancing on août 26, 2010
I’d have to agree with you. Which is not something I will usually do! I like reading posts that will make one rattle their head. Also, thanks for allowing me to comment!
Par Evoliatis on août 26, 2010
I am sorry, but i am really love this photo…
Par hot avatars on août 31, 2010
Adding to my bookmarks thanks, definitely consider a follow up post.