Funambol
PostgreSQL
La base de données contiendra les infos nécessaires au fonctionnement de Funambol ainsi que vos données personnelles issues de la synchronisation.
Installation
Installez le gestionnaire de base de données en suivant le guide de PostgreSQL. Installez le paquet libpg-java du pilote JDBC (Java Database Connectivity) pour PostgreSQL nécessaire à la communication entre Java et la base. Installez, si vous le souhaitez, le client d'administration graphique PgAdmin III.
Base de données Funambol
Créez un utilisateur autorisé à se connecter à la base de données et à créer des tables. Il sera utilisé par Funambol pour accéder à la base qui contiendra les données. Saisissez funambol comme mot de passe :
$ sudo su postgres $ createuser -S -D -R -P funambol Saisissez le mot de passe pour le nouvel rôle : Saisissez-le à nouveau : CREATE ROLE
-S → pas un super-utilisateur -D → pas le droit de créer des bases -R → pas le droit de créer des rôles -P → demande un mot de passe pour l'utilisateur
Créez ensuite une base funambol dont l'utilisateur que l'on vient de créer sera le propriétaire (option -O pour owner) :
$ createdb -O funambol funambol CREATE DATABASE
Intsallation Funambol
Télécharger la dernière version bundle de funambol
wget http://en.sourceforge.jp/projects/sfnet_funambol/downloads/bundle/v10/funambol-10.0.3-x64.bin/
On exécute l ebinaire
chmod +x funambol-10.0.3-x64.bin ./funambol-10.0.3-x64.bin
On accepte la license et le dossier d'installation est par défaut /opt/Funambol
A la fin de l'installation on répond non au lancement du serveur funambol
Parametrage Postgresql
On a besoin de télécharger le driver JDBC postgresql; Pour ce faire, on exécute la commande suivante :
Une fois installé, on copie le jdbc dans le dossier d'installation de Funambol
On édite le fichier /opt/Funambol/ds-server/install.properties pour spoécifier qu'on utilise une base PostgreSQL.
On modifie la ligne avec dbms
# # The DBMS name. One of: # - hypersonic # - postgresql # - mysql # dbms=postgresql
On commente les lignes concernant Hypersonic et on décommente celle de postgresql
# PostgreSQL # ========== # jdbc.classpath=/opt/Funambol/tools/postgresql/lib/postgresql-jdbc4-9.1.jar jdbc.driver=org.postgresql.Driver jdbc.url=jdbc:postgresql://IP:PORT/funambol jdbc.user=funambol jdbc.password=funambol
On crée l'utilisateur et groupe funambol
groupadd funambol useradd -g funambol -d /opt/Funambol funambol chmod 770 /opt/Funambol/
Script de demarrage
On crée un script pour démarrer/arrêter funambol
nano /etc/init.d/funambol
#!/bin/sh
cd `dirname $0`
FUNAMBOL_HOME=`(cd /opt/Funambol ; pwd)`
DS_SERVER_HOME=$FUNAMBOL_HOME/ds-server
if [ ! -d $FUNAMBOL_HOME/config ]; then
#
# maybe we are in Funambol/tool/bin
#
FUNAMBOL_HOME=$FUNAMBOL_HOME/..
DS_SERVER_HOME=$FUNAMBOL_HOME/ds-server
fi
# Setting the JAVA_HOME to the JRE in the bundle if not set or if not correctly set
if [ -z "$JAVA_HOME" ]; then
export JAVA_HOME=$FUNAMBOL_HOME/tools/jre-1.6.0/jre
else
if [ ! -f "$JAVA_HOME/bin/java" ]; then
export JAVA_HOME=$FUNAMBOL_HOME/tools/jre-1.6.0/jre
fi
fi
if [ -z "$JAVA_HOME" ]; then
echo "Please, set JAVA_HOME before running this script."
exit 1
fi
if [ ! -f "$JAVA_HOME/bin/java" ]
then
echo "Please set JAVA_HOME to the path of a valid jre."
exit;
fi
export J2EE_HOME=${FUNAMBOL_HOME}/tools/tomcat
export CATALINA_HOME=${FUNAMBOL_HOME}/tools/tomcat
cd ${FUNAMBOL_HOME}
export LANG=en_US.utf-8
cd ${J2EE_HOME}/bin
COMED=false
case $1 in
start)
if [ "$COMED" = "true" ] ; then
#
# Run Hypersonic
#
sh $FUNAMBOL_HOME/bin/hypersonic start > /dev/null
fi
#
# Run CTP Server
#
sh $FUNAMBOL_HOME/bin/ctp-server start > /dev/null
#
# Run DS Server
#
sh $FUNAMBOL_HOME/bin/funambol-server start > /dev/null
#
# Run Inbox Listener
#
sh $FUNAMBOL_HOME/bin/inbox-listener start > /dev/null
#
# Run Pim Listener
#
sh $FUNAMBOL_HOME/bin/pim-listener start > /dev/null
;;
stop)
#
# Shutdown Inbox Listener
#
sh $FUNAMBOL_HOME/bin/inbox-listener stop > /dev/null
#
# Shutdown Pim Listener
#
sh $FUNAMBOL_HOME/bin/pim-listener stop > /dev/null
#
# Shutdown Tomcat
#
sh $FUNAMBOL_HOME/bin/funambol-server stop > /dev/null
#
# Shutdown CTP Server
#
sh $FUNAMBOL_HOME/bin/ctp-server stop > /dev/null
if [ "$COMED" = "true" ] ; then
#
# Shutdown Hypersonic
#
sh $FUNAMBOL_HOME/bin/hypersonic stop > /dev/null
fi
;;
license)
less "${FUNAMBOL_HOME}/LICENSE.txt"
;;
*)
echo "usage: $0 [start|stop|license]"
;;
esacOn aoute le script au démarrage et arrêt du système
Sogo connector
Avant d'installer le connecteur sogo, funambol a besoin de dépendances que l'on doit installer. Ces dépendances peuvent être téléchargée depuis :
http://commons.apache.org/
et copier dans le dossier /opt/Funambol/tools/tomcat/lib/
collections (v3.2.1) wget http://apache.cu.be//commons/collections/binaries/commons-collections-3.2.1-bin.tar.gz tar -xzf commons-collections-3.2.1-bin.zip cp -p commons-collections-3.2.1/commons-collections-3.2.1.jar /opt/Funambol/tools/tomcat/lib/ rm -rf commons-collections-3.2.1
configuration (v1.6) wget http://apache.cu.be//commons/configuration/binaries/commons-configuration-1.9-bin.tar.gz tar -xzf commons-configuration-1.6.zip cp -p commons-configuration-1.6/commons-configuration-1.6.jar /opt/Funambol/tools/tomcat/lib/ rm -rf commons-configuration-1.6
logging (v1.1) wget http://apache.cu.be//commons/logging/binaries/commons-logging-1.1.1-bin.tar.gz tar -xzf commons-logging-1.1.1-bin.tar.gz cp -p commons-logging-1.1.1/commons-logging-1.1.1.jar /opt/Funambol/tools/tomcat/lib/ rm -rf commons-logging-1.1.1
lang (v2.4) wget http://apache.cu.be//commons/lang/binaries/commons-lang3-3.1-bin.tar.gz tar -xzf commons-lang3-3.1-bin.tar.gz cp -p commons-lang3-3.1/commons-lang-3-3.1.jar /opt/Funambol/tools/tomcat/lib/ rm -rf commons-lang3-3.1
json-simple wget http://json-simple.googlecode.com/files/json_simple.jar cp json_simple.jar /opt/Funambol/tools/tomcat/lib/
Installation et configuration
On télécharge le connecteur Sogo
wget http://www.sogo.nu/uploads/Funambol/funambol-sogo-1.0.9.s4j cp funambol-sogo-1.0.9.s4j /opt/Funambol/ds-server/modules
On édite le fichier /opt/Funambol/ds-server/install.properties pour ajouter à l afin de la ligne "modules-to-install" funambol-sogo-1.0.9
Installation des modules et création des tables funambol
Maintenant que Funambol et le connecteur sogo est connecté, on peux lancer l'installation de Funambol
cd /opt/Funambol/ ./bin/install
On repond Oui à toutes les questions
On réattribue, par sureté, les bon propriétaire au dossier funambol
On peux démarrer Funambol pour tester qu'il s'est bien installé:
On se rend à l'adresse suivante pour s'assurer du bon fonctionnement
http://<server_domain_name>:8080/funambol/ds
Une fois fais, on peux éteindre funambol avant de poursuivre
Création des SOGo Sync Sources
On doit insérer 3 champs dans la table fnbl_sync_source
INSERT INTO `fnbl_sync_source` (`uri`, `config`, `name`, `sourcetype`) VALUES
('sogo-cal', 'sogo/sogo/sogo/sogo-cal.xml', 'sogo-cal', 'sogo'),
('sogo-card', 'sogo/sogo/sogo/sogo-card.xml', 'sogo-card', 'sogo'),
('sogo-todo', 'sogo/sogo/sogo/sogo-todo.xml', 'sogo-todo', 'sogo');
Configuration de la syncronisation des calendar
mkdir -p /opt/Funambol/config/sogo/sogo/sogo cd /opt/Funambol/config/sogo/sogo/sogo
nano sogo-cal.xml
Adapter les informations userdb,passwd,ip serveur.
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.7.0_09" class="java.beans.XMLDecoder">
<object class="ca.inverse.sogo.engine.source.SOGoSyncSource">
<void property="databasePassword">
<string>sogo</string>
</void>
<void property="databaseURL">
<string>jdbc:postgresql://IP:PORT/sogo</string>
</void>
<void property="databaseUsername">
<string>sogo</string>
</void>
<void property="info">
<object class="com.funambol.framework.engine.source.SyncSourceInfo">
<void property="supportedTypes">
<array class="com.funambol.framework.engine.source.ContentType" length="1">
<void index="0">
<object class="com.funambol.framework.engine.source.ContentType" id="ContentType0">
<void class="com.funambol.framework.engine.source.ContentType" method="getField">
<string>type</string>
<void method="set">
<object idref="ContentType0">
<void class="com.funambol.framework.engine.source.ContentType" method="getField">
<string>version</string>
<void method="set">
<object idref="ContentType0"/>
<string>1</string>
</void>
</void>
</object>
<string>text/x-vevent</string>
</void>
</void>
</object>
</void>
</array>
</void>
</object>
</void>
<void property="name">
<string>sogo-cal</string>
</void>
<void property="sourceURI">
<string>sogo-cal</string>
</void>
</object>
</java>
Configuration de la syncro contacts
nano sogo-card.xml
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.7.0_09" class="java.beans.XMLDecoder">
<object class="ca.inverse.sogo.engine.source.SOGoSyncSource">
<void property="databasePassword">
<string>sogo</string>
</void>
<void property="databaseURL">
<string>jdbc:postgresql://IP:PORT/sogo</string>
</void>
<void property="databaseUsername">
<string>sogo</string>
</void>
<void property="info">
<object class="com.funambol.framework.engine.source.SyncSourceInfo">
<void property="supportedTypes">
<array class="com.funambol.framework.engine.source.ContentType" length="1">
<void index="0">
<object class="com.funambol.framework.engine.source.ContentType" id="ContentType0">
<void class="com.funambol.framework.engine.source.ContentType" method="getField">
<string>type</string>
<void method="set">
<object idref="ContentType0">
<void class="com.funambol.framework.engine.source.ContentType" method="getField">
<string>version</string>
<void method="set">
<object idref="ContentType0"/>
<string>1</string>
</void>
</void>
</object>
<string>text/x-vcard</string>
</void>
</void>
</object>
</void>
</array>
</void>
</object>
</void>
<void property="name">
<string>sogo-card</string>
</void>
<void property="sourceURI">
<string>sogo-card</string>
</void>
</object>
</java>
Configuration de la syncro todo
nano sogo-todo.xml
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.7.0_09" class="java.beans.XMLDecoder">
<object class="ca.inverse.sogo.engine.source.SOGoSyncSource">
<void property="databasePassword">
<string>sogo</string>
</void>
<void property="databaseURL">
<string>jdbc:postgresql://IP:PORT/sogo</string>
</void>
<void property="databaseUsername">
<string>sogo</string>
</void>
<void property="info">
<object class="com.funambol.framework.engine.source.SyncSourceInfo">
<void property="supportedTypes">
<array class="com.funambol.framework.engine.source.ContentType" length="1">
<void index="0">
<object class="com.funambol.framework.engine.source.ContentType" id="ContentType0">
<void class="com.funambol.framework.engine.source.ContentType" method="getField">
<string>type</string>
<void method="set">
<object idref="ContentType0">
<void class="com.funambol.framework.engine.source.ContentType" method="getField">
<string>version</string>
<void method="set">
<object idref="ContentType0"/>
<string>1</string>
</void>
</void>
</object>
<string>text/x-vtodo</string>
</void>
</void>
</object>
</void>
</array>
</void>
</object>
</void>
<void property="name">
<string>sogo-todo</string>
</void>
<void property="sourceURI">
<string>sogo-todo</string>
</void>
</object>
</java>
Auto-create Funambol user accounts
On édite la configuration de Funambol
nano /opt/Funambol/config/Funambol.xml
On change les paramètre officer
<void property="officer">
<string>ca/inverse/sogo/security/SOGoOfficer.xml</string>
</void>
On crée le fichier SOGoOfficer.xml
nano /opt/Funambol/config/ca/inverse/sogo/security/SOGoOfficer.xml
on modifie :
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.0" class="java.beans.XMLDecoder">
<object class="ca.inverse.sogo.security.SOGoOfficer">
<void property="host">
<string>localhost</string>
</void>
<void property="port">
<string>20000</string>
</void>
</object>
</java>
On réassigne l'utilisateur funambol
Funambol Client Configuration
The URL for accessing the Funambol server from mobile devices is:
http://<server_domain_name>:8080/funambol/ds
Client
BlackBerry
Ouvrir le navigateur du blackberry
Inscrire l'adresse suivante (http://my.funambol.com/bb/sync45.jad (OS =< 4.5)) ou (http://my.funambol.com/bb/sync47.jad (OS >= 4.7))
Iphone
Calendrier
Calendar
Settings->Add Account->Other->Add CalDAV Account
Serveur: NOM DNS/IP SOGO Utilisateur: nomUser Mot de passe: mot de passe Description: description souhaité ( on peux laisser par défaut )
Quand on accepte la connexion, une fenêtre apparait "Connexion impossible avec SSL"
Fermer le pop-up et allez dans Réglages avancés
Utiliser SSL: ON Port: 443 URL du compte: https://IP OU NOM DNS:443/SOGo/dav/nomUser
