Funambol

From SME Server
Revision as of 07:59, 5 May 2010 by Thf (talk | contribs)
Jump to navigation Jump to search
Edit-find-replace.png Not reviewed:
This howto or contrib has not been reviewed and might contain code that could harm your installation. For more information on the review process have a look at the Development Review page.


Important.png Note:
This HOWTO is still under development.


PythonIcon.png Skill level: Advanced
The instructions on this page may require deviations from standard procedures. A good understanding of linux and Koozali SME Server is recommended.


Introduction

This is a very preliminary writeup on the installation of Funambol on an SME8b5 installation for use with Sogo

Use only for testing on non production machines and when you find an error, please correct it right here :-)

Download & Install Funambol

Goto https://www.forge.funambol.org/DomainHome.html to download Funambol 8.0. The latest GNU/Linux 32bit funambol server is 8.5, but this has not been confirmed yet for use with SOGO.

cd /opt
wget http://download.forge.objectweb.org/sync4j/funambol-8.0.2.bin

Run the binary to install:

chmod +x funambol-8.0.2.bin
./funambol-8.0.2.bin

Agree on the licence terms and accept /opt as the directory to extract Funambol. This will install it in:

/opt/Funambol

At the end of the install, answer NO on the question if you want to start the server.

Download Apache Commons components

Download components from here

http://commons.apache.org/

Copy components in the following directory

cd /opt/Funambol/tools/tomcat/lib/

collections (v3.2.1)

wget http://www.apache.org/dist/commons/collections/binaries/commons-collections-3.2.1-bin.zip
unzip 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

confguration (v1.6)

wget http://www.apache.org/dist/commons/configuration/binaries/commons-configuration-1.6.zip
unzip 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://www.apache.org/dist/commons/logging/binaries/commons-logging-1.1.1-bin.zip
unzip commons-logging-1.1.1-bin.zip
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://www.apache.org/dist/commons/lang/binaries/commons-lang-2.5-bin.zip
unzip commons-lang-2.5-bin.zip
cp -p commons-lang-2.5/commons-lang-2.5.jar /opt/Funambol/tools/tomcat/lib/
rm -rf commons-lang-2.5

json-simple

cd /opt/Funambol/tools/tomcat/lib/
wget http://json-simple.googlecode.com/files/json_simple.jar

Download & Configure Funambol SOGO Connector

Check here: http://www.scalableogo.org/english/downloads/backend.html for the latest version of the Funambol SOGo Connector

cd /opt/Funambol/ds-server/modules
wget http://www.scalableogo.org/uploads/Funambol/funambol-sogo-1.0.7.s4j

Then, open the /opt/Funambol/ds-server/install.properties file

vim /opt/Funambol/ds-server/install.properties

and add funambol-sogo-1.0.7 at the end of the "modules-to-install" line.

Download & Configure MySQL JDBC driver

Funambol by installation defaults to use the Hypersonic DB engine, but SOGO requires the use of MySQL.

Goto http://dev.mysql.com/downloads/connector/j/5.0.html to download the JDBC driver for MySQL. The current version is mysql-connector-java-5.0.8.zip. Download it to /opt.

cd /opt
unzip mysql-connector-java-5.0.8.zip
mkdir -p /opt/Funambol/tools/mysql/lib
cp mysql-connector-java-5.0.8/mysql-connector-java-5.0.8-bin.jar /opt/Funambol/tools/mysql/lib
rm -rf mysql-connector-java-5.0.8

Edit the /opt/Funambol/ds-server/install.properties file to change the Funambol DB connector to MySQL.

vim /opt/Funambol/ds-server/install.properties

Comment out the existing jdbc driver for Hypersonic and add:

# MySQL
# =====
jdbc.classpath=../tools/mysql/lib/mysql-connector-java-5.0.8-bin.jar
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/funambol?characterEncoding=UTF-8
jdbc.user=funambol
jdbc.password=yourpassword

Reconfigure MySQL for InnoDB and access from the local network

Funambol uses MySQL wit the InnoDB engine and uses networking for access.

/sbin/e-smith/config setprop mysqld InnoDB enabled
/sbin/e-smith/config setprop mysqld LocalNetworkingOnly no
/sbin/e-smith/expand-template /etc/my.cnf
/etc/rc.d/rc7.d/S50mysqld restart

Creating MYSQL user and database

To create the Funambol Database, you'll need to perform each of the following steps:

mysqladmin create funambol --default-character-set=utf8
mysql -e "grant all privileges on funambol.* to funambol@localhost identified by 'yourpassword'"
mysql -e "flush privileges"


  Warning:
You may wish to alter the "funambol" and "yourpassword" information in the grant privileges line above. Be sure to configure it correctly in /opt/Funambol/ds-server/install.properties !


Disable Hypersonic JDBC driver

Edit /opt/Funambol/bin/funambol and change COMED=true to COMED=false somewhere around line 44.

This prevents the start/stop script from trying to start or stop the Hypersonic database, since we’re are now using MySQL.

Optionally you can rm -rf /opt/Funambol/tools/hypersonic to save a bit of disk space.

Install Modules in Funambol

Start the Funambol server using:

/opt/Funambol/bin/funambol start

Next, install the Funambol SOGo Connector within Funambol server by issuing the following commands :

cd /opt/Funambol/
./bin/install

Answer 'yes' to all questions.

See also:

https://core.forge.funambol.org/wiki/HOWTOFunambolMySQLFedora10

Create Funambol user and group

groupadd funambol
useradd -g funambol -d /opt/Funambol funambol
chown -R funambol:funambol /opt/Funambol/
chmod 770 /opt/Funambol/

Auto start Funambol on startup

To make Funambol start automagically, create

vim /etc/init.d/funambol

with the following content:

#! /bin/bash
#
# funambol Start the funambol services
#
NAME="Funambol 8.0 with SOGO Connector"
FUNAMBOL_HOME=/opt/Funambol/bin
FUNAMBOL_USER=funambol
case "$1" in
  start)
    echo -ne "Starting $NAME.\n"
    cd $FUNAMBOL_HOME
    /bin/su $FUNAMBOL_USER funambol start
    ;;
  stop)
    echo -ne "Stopping $NAME.\n"
    cd $FUNAMBOL_HOME
    /bin/su $FUNAMBOL_USER funambol stop
    ;;
  *)
    echo "Usage: /etc/init.d/funambol {start|stop}"
    exit 1
    ;;
esac
exit 0

complete it with:

chmod 755 /etc/init.d/funambol
ln -s /etc/init.d/funambol/etc/rc.d/rc7.d/S98funambol
ln -s /etc/init.d/funambol/etc/rc.d/rc6.d/K02funambol
ln -s /etc/init.d/funambol/etc/rc.d/rc2.d/K02funambol
ln -s /etc/init.d/funambol/etc/rc.d/rc1.d/K02funambol
ln -s /etc/init.d/funambol/etc/rc.d/rc0.d/K02funambol

And if you want to access Funambol outside your local network, you must open port 8080:

config set funambol service access public status enabled TCPPort 8080
signal-event remoteaccess-update

SOGO Sync Sources

The sync sources as described in the SOGO Installation Guide were created by means of the Funambol Admin interface (remote from a PC). The files that were created were used a the source of the templates we are creating below. The templates allow us to pull in the database password for SOGO from the SOGO installation.

Configuring the Calendar Sync connection

mkdir -p /etc/e-smith/templates/opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml
cd /etc/e-smith/templates/opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml
touch template-begin

Note the $sogod{'DbPassword'} in the scripts below. This pulls in the the database password that SOGO uses to access the MySQL database.

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0_10" class="java.beans.XMLDecoder">
 <object class="ca.inverse.sogo.engine.source.SOGoSyncSource">
  <void property="databasePassword">
   <string>{$sogod{'DbPassword'}}</string>
  </void>
  <void property="databaseURL">
   <string>jdbc:mysql://localhost/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">
        <void property="type">
         <string>text/x-vevent</string>
        </void>
        <void property="version">
         <string>1</string>
        </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>

And don't forget to:

expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml

Configuring the Address Book Sync connection

mkdir -p /etc/e-smith/templates/opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml
cd /etc/e-smith/templates/opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml
touch template-begin
vim sogo-card.xml

Insert the following:

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0_10" class="java.beans.XMLDecoder">
 <object class="ca.inverse.sogo.engine.source.SOGoSyncSource">
  <void property="databasePassword">
   <string>{$sogod{'DbPassword'}}</string>
  </void>
  <void property="databaseURL">
   <string>jdbc:mysql://localhost/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">
        <void property="type">
         <string>text/x-vcard</string>
        </void>
        <void property="version">
         <string>1</string>
        </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>

And

expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml

Configuring the Todo List Sync connection

mkdir -p /etc/e-smith/templates/opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml
cd /etc/e-smith/templates/opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml
touch template-begin
vim sogo-todo.xml

Insert the following:

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0_10" class="java.beans.XMLDecoder">
 <object class="ca.inverse.sogo.engine.source.SOGoSyncSource">
  <void property="databasePassword">
   <string>{$sogod{'DbPassword'}}</string>
  </void>
  <void property="databaseURL">
   <string>jdbc:mysql://localhost/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">
        <void property="type">
         <string>text/x-vtodo</string>
        </void>
        <void property="version">
         <string>1</string>
        </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>

And

expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml

Auto-create Funambol user accounts

Edit the Funambol config file

vim /opt/Funambol/config/Funambol.xml

And change the officer parameter:

    <void property="officer">
     <string>ca/inverse/sogo/security/SOGoOfficer.xml</string>
    </void>

Then create the SOGoOfficer.xml file

vim /opt/Funambol/config/ca/inverse/sogo/security/SOGoOfficer.xml

and insert

<?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>

Funambol Client Configuration

The URL for accessing the Funambol server is:

 http://<server_domain_name>:8080/funambol/ds

To connect to the SOGO Funambol sync items use:

  • Contacts: sogo-card
  • Calendar: sogo-cal
  • Tasks: sogo-todo