Vtc

Il faut toujours etre du bon cote du fusil.

Vtc

Radicale



Introduction

The Radicale Project is a complete calendar and contact storing and manipulating solution. It can store multiple calendars and multiple address books.


Calendar and contact manipulation is available from both local and distant accesses, possibly limited through authentication policies.

This HOWTO describes the installation procedure for installing Radicale around the Roundcube installation on an SME installation.


----------


Before installation

On sme8, you need to install python26

yum --enablerepo=ces-standard,epel --nogpgcheck install python26

Not need in sme9, python-2.6 is installed


----------


Download & Install Radicale

mkdir -p /opt/roundcube/

cd /opt/roundcube/

wget -no-check-certificate http://pypi.python.org/packages/source/R/Radicale/Radicale-1.0.1.tar.g

ztar xvfz Radicale-1.0.1.tar.g

zrm -f Radicale-1.0.1.tar.g

zmv Radicale-1.0.1 radicale

mkdir -p /home/e-smith/files/.radicale/collections

mkdir -p /etc/radicale

mkdir -p /var/run/radicale


Next, you need to configure how you want the logs:

touch /etc/radicale/logging

cat < /etc/radicale/logging

[loggers]

keys=root

level=NOTSET


[logger_root]

handlers=file


[formatters]

keys=simple


[formatter_simple]

format=%(asctime)s - %(name)s - %(levelname)s - %(message)s


[handlers]

keys=file


[handler_file]

class=handlers.TimedRotatingFileHandler

interval=midnight

backupCount=5

formatter=simple

level=ERROR

args=('/var/log/radicale.log',)

EOF


Set Radicale to start on system startup

To make Radicale start automagically, create

vim /etc/rc.d/init.d/radicaled

with the following content:

#!/bin/sh

#

# chkconfig: - 88 10

# description: Start/Stop the RADICALE server daemon

#

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License as published by

# the Free Software Foundation; either version 2 of the License, or

# (at your option) any later version.

#

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

# GNU General Public License for more details.

#

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

#

# Copyright (C) 2015 JM LE CORGUILLE

#


# Source function library.

. /etc/rc.d/init.d/functions


PYTHON26=/usr/bin/python26

RADICALE=/opt/roundcube/radicale/radicale.py

LOCKF=/var/lock/radicale ##/var/run/radicale/radicale.pid

CONFIG=/etc/radicale/config


[ -f $PYTHON26 ] || exit 0

[ -f $RADICALE ] || exit 0

[ -f $CONFIG ] || exit 0


RETVAL=0


case "$1" in

start)

echo -n $"Starting RADICALE server: "

cd /opt/roundcube/radicale/

$PYTHON26 $RADICALE -C $CONFIG

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch $LOCKF &&

ln -s /var/run/radicale/radicale.pid /var/run/radicale.pid 2>/dev/null

;;

stop)

echo -n $"Stopping RADICALE server: "

killproc $PYTHON26 $RADICALE

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && rm -f $LOCKF

;;

status)

status radicale

RETVAL=$?

;;

restart)

$0 stop

sleep 3

$0 start

RETVAL=$?

;;

*)

echo $"Usage: $0 {start|stop|status|restart}"

exit 1

esac


exit $RETVAL


complete it with:

chmod 755 /etc/rc.d/init.d/radicaled

chkconfig --add radicaled

ln -s /etc/rc.d/init.d/e-smith-service /etc/rc7.d/S88radicaled


----------


Setup Radicale configuration

mkdir -p /etc/e-smith/templates-custom/etc/radicale/config


Create

vim /etc/e-smith/templates-custom/etc/radicale/config/00setup


with the following content:

# -*- mode: conf -*-

# vim:ft=cfg


# Config file for Radicale - A simple calendar server

#

# Place it into /etc/radicale/config (global)

# or ~/.config/radicale/config (user)

#

# The current values are the default ones



[server]


# CalDAV server hostnames separated by a comma

# IPv4 syntax: address:port

# IPv6 syntax: [address]:port

# For example: 0.0.0.0:9999, [::]:9999

# IPv6 adresses are configured to only allow IPv6 connections

#hosts = 0.0.0.0:5232


Create

vim /etc/e-smith/templates-custom/etc/radicale/config/10hosts


with the following content:

{

my $rad_ports = $radicale{Port} || 5232;

my $rad_ip = $LocalIP || 127.0.0.1;

"hosts = $rad_ip:$rad_ports";

}


Create

vim /etc/e-smith/templates-custom/etc/radicale/config/20daemon

with the following content:


# Daemon flag

#daemon = False

daemon = True


# File storing the PID in daemon mode

#pid =

pid = /var/run/radicale/radicale.pid


# SSL flag, enable HTTPS protocol

#ssl = False

ssl = True


# SSL certificate path

#certificate = /etc/apache2/ssl/server.crt


Create

vim /etc/e-smith/templates-custom/etc/radicale/config/30crt


with the following content:

{

my $rad_name = $SystemName || "server";

my $rad_domain = $DomainName;

"certificate = /home/e-smith/ssl.crt/$rad_name.$rad_domain.crt";

}


Create

vim /etc/e-smith/templates-custom/etc/radicale/config/40ssl


with the following content:


# SSL private key

#key = /etc/apache2/ssl/server.key


Create

vim /etc/e-smith/templates-custom/etc/radicale/config/50key


with the following content:

{

my $rad_name = $SystemName || "server";

my $rad_domain = $DomainName;

"key = /home/e-smith/ssl.key/$rad_name.$rad_domain.key";

}


Create

vim /etc/e-smith/templates-custom/etc/radicale/config/60fin


with the following content:


# SSL Protocol used. See python's ssl module for available values

#protocol = PROTOCOL_SSLv23


# Ciphers available. See python's ssl module for available ciphers

#ciphers =


# Reverse DNS to resolve client address in logs

#dns_lookup = True

dns_lookup = True


# Root URL of Radicale (starting and ending with a slash)

#base_prefix = /


# Possibility to allow URLs cleaned by a HTTP server, without the base_prefix

#can_skip_base_prefix = False


# Message displayed in the client when a password is needed

#realm = Radicale - Password Required



[encoding]


# Encoding for responding requests

#request = utf-8


# Encoding for storing local collections

#stock = utf-8



[well-known]


# Path where /.well-known/caldav/ is redirected

#caldav = '/%(user)s/caldav/'


# Path where /.well-known/carddav/ is redirected

#carddav = '/%(user)s/carddav/'



[auth]


# Authentication method

# Value: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom

#type = None

type = IMAP


# Custom authentication handler

#custom_handler =


# Htpasswd filename

#htpasswd_filename = /etc/radicale/users


# Htpasswd encryption method

# Value: plain | sha1 | ssha | crypt

#htpasswd_encryption = crypt


# LDAP server URL, with protocol and port

#ldap_url = ldap://localhost:389/


# LDAP base path

#ldap_base = ou=users,dc=example,dc=com


# LDAP login attribute

#ldap_attribute = uid


# LDAP filter string

# placed as X in a query of the form (&(...)X)

# example: (objectCategory=Person)(objectClass=User)(memberOf=cn=calenderusers,ou=users,dc=example,dc=org)

# leave empty if no additional filter is needed

#ldap_filter =


# LDAP dn for initial login, used if LDAP server does not allow anonymous searches

# Leave empty if searches are anonymous

#ldap_binddn =


# LDAP password for initial login, used with ldap_binddn

#ldap_password =


# LDAP scope of the search

#ldap_scope = OneLevel


# IMAP Configuration

#imap_hostname = localhost

#imap_port = 143

#imap_ssl = False

imap_hostname = localhost

imap_port = 993

imap_ssl = True


# PAM group user should be member of

#pam_group_membership =


# Path to the Courier Authdaemon socket

#courier_socket =


# HTTP authentication request URL endpoint

#http_url =

# POST parameter to use for username

#http_user_parameter =

# POST parameter to use for password

#http_password_parameter =



[git]


# Git default options

#committer = Radicale



[rights]


# Rights backend

# Value: None | authenticated | owner_only | owner_write | from_file | custom

#type = None

type = owner_write


# Custom rights handler

#custom_handler =


# File for rights management from_file

#file = ~/.config/radicale/rights



[storage]


# Storage backend

# -------

# WARNING: ONLY "filesystem" IS DOCUMENTED AND TESTED,

# OTHER BACKENDS ARE NOT READY FOR PRODUCTION.

# -------

# Value: filesystem | multifilesystem | database | custom

#type = filesystem


# Custom storage handler

#custom_handler =


# Folder for storing local collections, created if not present

#filesystem_folder = ~/.config/radicale/collections

filesystem_folder = /home/e-smith/files/.radicale/collections


# Database URL for SQLAlchemy

# dialect+driver://user:password@host/dbname[?key=value..]

# For example: sqlite:///var/db/radicale.db, postgresql://user:password@localhost/radicale

# See http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#sqlalchemy.create_engine

#database_url =



[logging]


# Logging configuration file

# If no config is given, simple information is printed on the standard output

# For more information about the syntax of the configuration file, see:

# http://docs.python.org/library/logging.config.html

#config = /etc/radicale/logging

config = /etc/radicale/logging

# Set the default logging level to debug

#debug = False

# Store all environment variables (including those set in the shell)

#full_environment = False



[headers]


# Additional HTTP headers

#Access-Control-Allow-Origin = *#imap_hostname = localhost


db configuration set radicale service Port 5232 status enabled

expand-template /etc/radicale/config


/etc/rc.d/init.d/radicaled start


----------


Download & Configure MySQL JDBC driver

Funambol by installation defaults to use the Hypersonic DB engine, but SOGo uses MySQL and for Funambol to access the SOGo databases it needs to be setup to also use MySQL for the Funambol


----------


Radicale Client Configuration

The URL for accessing the radicale server is:

https://:5232/user/calendar.ics

https://:5232/user/addressbook.vcf

Where user is the sme-login for this user


----------


References

• radicale Documentation: http://radicale.org/

• roundcube Documentation: http://wiki.contribs.org/RoundCube