Funambol

From SME Server
Revision as of 00:48, 5 May 2010 by Thf (talk | contribs)
Jump to navigationJump 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:
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 the latest GNU/Linux 32bit funambol server.

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

Install in

/opt/Funambol

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

It can also be stopped with:

/opt/Funambol/bin/funambol stop

Download MySQL component

Funambol by installation defaults to use the Hypersonic DB engine.

Goto http://dev.mysql.com/downloads/connector/j/5.0.html to download the JDBC driver for MySQL.

See the /opt/Funambol/ds-server/install.properties file for details and to change to the MySQL connector.

unzip mysql-connector-java-5.0.8.zip
cp mysql-connector-java-5.0.8/mysql-connector-java-5.0.8-bin.jar .
rm -rf mysql-connector-java-5.0.8

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
rm -rf commons-collections-3.2.1.jar
unzip commons-collections-3.2.1-bin.zip
cp -p commons-collections-3.2.1/commons-collections-3.2.1.jar .
rm -rf commons-collections-3.2.1 

confguration (v1.6)

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

json-simple

wget http://json-simple.googlecode.com/files/json_simple.jar

funambol-sogo-1.0.7.s4j

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 "funambolsogo-1.0.7" at the end of the "modules-to-install" line.

Install Funambol SOGo Connector

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

Answer 'yes' to all questions.

Note the default install using the Hypersonic DB engine.

See also:

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


MySQL Engine : Also in /opt/Funambol/bin/funambol change COMED=true to COMED=false somewhere around line 44 while you're at it (this prevents the start/stop script from trying to start or stop the Hypersonic database, since we’re going to use MySQL). After that, you can rm -rf /opt/Funambol/tools/hypersonic to save yet a bit more disk space if you want.

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
vim sogo-cal.xml
expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml

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>

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
expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml


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

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
expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml


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


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


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

To connect to the generic Funambol sync items use:

  • Contacts: card
  • Calendar: event
  • Tasks: task