# HG changeset patch # User Michael Schloh von Bennewitz # Date 1290425998 -3600 # Node ID 731574048d851e6f794f800ea5fbf0a01b8893fd # Parent 1ff6f25dc4d97298e6220611cc8d456447d934e4 Import package vendor original specs for necessary manipulations. diff -r 1ff6f25dc4d9 -r 731574048d85 davical/davical-apache.conf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/davical/davical-apache.conf Mon Nov 22 12:39:58 2010 +0100 @@ -0,0 +1,98 @@ +## +## davical-apache.conf -- DAViCal Apache Custom Configuration +## + +ServerRoot @l_prefix@ +ServerAdmin root@@l_hostname@.@l_domainname@ +ServerName @l_hostname@.@l_domainname@ +ServerTokens Prod +User @l_rusr@ +Group @l_rgrp@ + +Listen 127.0.0.1:8080 + + +Listen 127.0.0.1:8443 + + +# runtime files +PidFile @l_prefix@/var/davical/run/apache.pid +ScoreBoardFile @l_prefix@/var/davical/run/apache.sb +LockFile @l_prefix@/var/davical/run/apache.lck + +# include apache-php +Include @l_prefix@/etc/apache/apache.d/apache-php.conf + +# server behaviour +Timeout 300 +KeepAlive on +MaxKeepAliveRequests 100 +KeepAliveTimeout 15 +MinSpareServers 5 +MaxSpareServers 10 +StartServers 5 +MaxClients 15 +MaxRequestsPerChild 500 +HostnameLookups off +UseCanonicalName on + +# access logging +LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined +LogFormat "%h %l %u %t \"%r\" %>s %b" common +LogFormat "%{Referer}i -> %U" referer +LogFormat "%{User-agent}i" agent +CustomLog @l_prefix@/var/davical/log/apache.access.log common + +# error logging +LogLevel warn +ErrorLog @l_prefix@/var/davical/log/apache.error.log +ServerSignature on + +# SSL/TLS support + +SSLEngine on +SSLRandomSeed startup builtin +SSLRandomSeed connect builtin +SSLMutex sem +SSLCADNRequestFile @l_prefix@/etc/x509/example-ca.crt.pem +SSLCACertificateFile @l_prefix@/etc/x509/example-ca.crt.pem +SSLCertificateFile @l_prefix@/etc/x509/example-server.crt.pem +SSLCertificateKeyFile @l_prefix@/etc/x509/example-server.key.pem +SSLSessionCache shm:@l_prefix@/var/davical/run/apache.ssl_scache(512000) +SSLSessionCacheTimeout 300 +SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL +SetEnvIf User-Agent ".*MSIE.*" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + + +# secure root directory + + Options FollowSymLinks + AllowOverride None + + +# configure PHP +AddType application/x-httpd-php .php +php_admin_flag magic_quotes_gpc on +php_admin_flag register_globals on +php_admin_flag register_argc_argv off + +# configure DAViCal +php_value include_path @l_prefix@/lib/davical/davical/inc:@l_prefix@/lib/davical/awl/inc +php_value error_reporting "E_ALL & ~E_NOTICE" +php_value default_charset "utf-8" +RewriteEngine on +RewriteRule ^/caldav/(.*)$ /caldav.php/$1 [PT] +DocumentRoot @l_prefix@/lib/davical/davical/htdocs +DirectoryIndex index.php + + + SSLOptions +StdEnvVars + + Options None + AllowOverride None + Order allow,deny + Allow from all + + diff -r 1ff6f25dc4d9 -r 731574048d85 davical/davical-config.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/davical/davical-config.php Mon Nov 22 12:39:58 2010 +0100 @@ -0,0 +1,20 @@ +system_name = "DAViCal CalDAV Server"; +$c->domain_name = "calendar.example.com"; +$c->admin_email = 'hostmaster@example.com'; + +$c->pg_connect[] = "dbname=davical user=davical password=davical"; + +$c->home_calendar_name = 'home'; +$c->hide_TODO = true; +$c->readonly_webdav_collections = true; +$c->enable_row_linking = true; +$c->collections_always_exist = true; +$c->default_relationships = array(); +$c->default_locale = 'en_US.UTF-8'; +$c->allow_get_email_visibility = false; + diff -r 1ff6f25dc4d9 -r 731574048d85 davical/davical-setup.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/davical/davical-setup.sh Mon Nov 22 12:39:58 2010 +0100 @@ -0,0 +1,86 @@ +#!/bin/sh +## +## davical-setup +## + +# command line argument sanity check +prg="$0" +if [ $# -eq 0 ]; then + echo "$prg:ERROR: invalid command line" 1>&2 + echo "$prg:USAGE: $prg install []" 1>&2 + echo "$prg:USAGE: $prg uninstall" 1>&2 + echo "$prg:USAGE: $prg edit" 1>&2 + exit 1 +fi + +# database configuration +db_dir="@l_prefix@/var/davical/db" +db_name="davical" +db_user="davical" +db_pass="davical" +db_sname=`grep "^superuser_database" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ + sed -e 's;^ *superuser_database="\(.*\)".*;\1;'` +db_suser=`grep "^superuser_username" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ + sed -e 's;^ *superuser_username="\(.*\)".*;\1;'` +db_spass=`grep "^superuser_password" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ + sed -e 's;^ *superuser_password="\(.*\)".*;\1;'` + +# dispatch operation +cmd="${1:-"install"}" +shift +case "$cmd" in + install ) + # determine admin password + admin_password="$1" + if [ ".$admin_password" = . ]; then + admin_password="`@l_prefix@/bin/apg -Mncl -a1 -m12 -n1`" + echo "ATTENTION: using generated \"admin\" password: \"$admin_password\"" 1>&2 + fi + + # create database + ( echo "CREATE ROLE $db_user LOGIN ENCRYPTED PASSWORD '$db_pass' NOCREATEDB NOCREATEUSER;" + echo "CREATE TABLESPACE $db_name OWNER $db_user LOCATION '$db_dir';" + echo "CREATE DATABASE $db_name OWNER $db_user TABLESPACE $db_name ENCODING 'UTF8';" + ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ + -c "CREATE LANGUAGE plpgsql;" + + # create schema 1/2 (from original "create_database" script) + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/awl/dba/awl-tables.sql" 2>&1 | grep -v NOTICE + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/awl/dba/schema-management.sql" 2>&1 | grep -v NOTICE + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/davical/dba/davical.sql" 2>&1 | grep -v NOTICE + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/davical/dba/base-data.sql" 2>&1 | grep -v NOTICE + + # create schema 2/2 (from original "update-davical-database" script) + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/davical/dba/supported_locales.sql" 2>&1 | grep -v NOTICE + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/davical/dba/caldav_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/davical/dba/rrule_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' + PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_name" -A -t \ + -f "@l_prefix@/lib/davical/davical/dba/appuser_permissions.txt" 2>&1 | grep -v NOTICE + + # set admin password + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ + -c "UPDATE usr SET password = '**$admin_password' WHERE user_no = 1;" + ;; + + uninstall ) + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ + -c "DROP LANGUAGE plpgsql CASCADE;" 2>&1 | grep -v NOTICE + ( echo "DROP DATABASE $db_name;" + echo "DROP TABLESPACE $db_name;" + echo "DROP ROLE $db_user;" + ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- + ;; + + edit ) + PGPASSWORD="$db_spass" @l_prefix@/bin/psql -U "$db_suser" -d "$db_name" + ;; +esac + diff -r 1ff6f25dc4d9 -r 731574048d85 davical/davical.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/davical/davical.patch Mon Nov 22 12:39:58 2010 +0100 @@ -0,0 +1,121 @@ +Index: davical-0.9.9.3/dba/appuser_permissions.txt +--- davical-0.9.9.3/dba/appuser_permissions.txt.orig 2010-04-19 02:32:58.000000000 +0200 ++++ davical-0.9.9.3/dba/appuser_permissions.txt 2010-09-21 17:32:46.000000000 +0200 +@@ -17,49 +17,53 @@ + # + + GRANT SELECT,INSERT,UPDATE,DELETE +- ON collection +- ON caldav_data +- ON calendar_item +- ON relationship +- ON locks +- ON property +- ON freebusy_ticket +- ON usr +- ON usr_setting +- ON roles +- ON role_member +- ON session +- ON tmp_password +- ON group_member +- ON principal +- ON relationship_type +- ON sync_tokens +- ON sync_changes +- ON grants +- ON dav_principal +- ON access_ticket +- ON dav_binding +- ON calendar_alarm +- ON calendar_attendee +- ON addressbook_resource +- ON addressbook_address_adr +- ON addressbook_address_tel +- ON addressbook_address_email ++ ON collection, ++ caldav_data, ++ calendar_item, ++ relationship, ++ locks, ++ property, ++ freebusy_ticket, ++ usr, ++ usr_setting, ++ roles, ++ role_member, ++ session, ++ tmp_password, ++ group_member, ++ principal, ++ relationship_type, ++ sync_tokens, ++ sync_changes, ++ grants, ++ dav_principal, ++ access_ticket, ++ dav_binding, ++ calendar_alarm, ++ calendar_attendee, ++ addressbook_resource, ++ addressbook_address_adr, ++ addressbook_address_tel, ++ addressbook_address_email ++ TO davical; + + GRANT SELECT,UPDATE +- ON relationship_type_rt_id_seq +- ON dav_id_seq +- ON usr_user_no_seq +- ON roles_role_no_seq +- ON session_session_id_seq +- ON principal_type_principal_type_id_seq +- ON sync_tokens_sync_token_seq ++ ON relationship_type_rt_id_seq, ++ dav_id_seq, ++ usr_user_no_seq, ++ roles_role_no_seq, ++ session_session_id_seq, ++ principal_type_principal_type_id_seq, ++ sync_tokens_sync_token_seq ++ TO davical; + + GRANT SELECT,INSERT + ON time_zone ++ TO davical; + + GRANT SELECT +- ON supported_locales +- ON awl_db_revision +- ON principal_type ++ ON supported_locales, ++ awl_db_revision, ++ principal_type ++ TO davical; + +Index: davical-0.9.9.3/inc/always.php.in +--- davical-0.9.9.3/inc/always.php.in.orig 2010-09-21 03:40:44.000000000 +0200 ++++ davical-0.9.9.3/inc/always.php.in 2010-09-21 18:20:41.000000000 +0200 +@@ -117,20 +117,8 @@ + * too early. + */ + ob_start( ); +-if ( @file_exists('/etc/davical/'.$_SERVER['SERVER_NAME'].'-conf.php') ) { +- include('/etc/davical/'.$_SERVER['SERVER_NAME'].'-conf.php'); +-} +-else if ( @file_exists('/etc/davical/config.php') ) { +- include('/etc/davical/config.php'); +-} +-else if ( @file_exists('/usr/local/etc/davical/'.$_SERVER['SERVER_NAME'].'-conf.php') ) { +- include('/usr/local/etc/davical/'.$_SERVER['SERVER_NAME'].'-conf.php'); +-} +-else if ( @file_exists('/usr/local/etc/davical/config.php') ) { +- include('/usr/local/etc/davical/config.php'); +-} +-else if ( @file_exists('../config/config.php') ) { +- include('../config/config.php'); ++if ( @file_exists("@l_prefix@/etc/davical/davical-config.php") ) { ++ include_once("@l_prefix@/etc/davical/davical-config.php"); + } + else if ( @file_exists('config/config.php') ) { + include('config/config.php'); diff -r 1ff6f25dc4d9 -r 731574048d85 davical/davical.spec --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/davical/davical.spec Mon Nov 22 12:39:58 2010 +0100 @@ -0,0 +1,204 @@ +## +## davical.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2010 OpenPKG Foundation e.V. +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package version +%define V_opkg 0.9.9.3 +%define V_davical 0.9.9.3 +%define V_awl 0.37 + +# package information +Name: davical +Summary: CalDAV Server +URL: http://rscds.sourceforge.net/ +Vendor: Andrew McMillan +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: EVAL +Group: Network +License: GPL +Version: %{V_opkg} +Release: 20100926 + +# package options +%define with_ssl no + +# list of sources +Source0: http://debian.mcmillan.net.nz/packages/davical/davical-%{V_davical}.tar.gz +Source1: http://debian.mcmillan.net.nz/packages/awl/awl_%{V_awl}.tar.gz +Source2: davical-config.php +Source3: davical-apache.conf +Source4: davical-setup.sh +Source5: rc.davical +Patch0: davical.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20100101 +PreReq: OpenPKG, openpkg >= 20100101 +PreReq: pcre, pcre::with_utf8 +PreReq: apache +%if "%{with_ssl}" == "yes" +PreReq: apache::with_mod_ssl = yes, x509 +%endif +PreReq: apache-php +PreReq: apache-php::with_pgsql = yes +PreReq: apache-php::with_gettext = yes +PreReq: postgresql + +%description + The DAViCal CalDAV Server is a repository for calendar, schedule, + todo and journal entries which may be accessed with CalDAV capable + client software. + +%track + prog davical:davical = { + version = %{V_davical} + url = http://debian.mcmillan.net.nz/packages/davical/ + regex = davical-(__VER__)\.tar\.gz + } + prog davical:awl = { + version = %{V_awl} + url = http://debian.mcmillan.net.nz/packages/awl/ + regex = awl_(__VER__)\.tar\.gz + } + +%prep + %setup -q -c + %setup -q -T -D -a 1 + %patch -p0 + +%build + +%install + # create installation hierarchy + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/sbin \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ + $RPM_BUILD_ROOT%{l_prefix}/etc/davical \ + $RPM_BUILD_ROOT%{l_prefix}/lib/davical/davical \ + $RPM_BUILD_ROOT%{l_prefix}/lib/davical/awl \ + $RPM_BUILD_ROOT%{l_prefix}/var/davical/db \ + $RPM_BUILD_ROOT%{l_prefix}/var/davical/run \ + $RPM_BUILD_ROOT%{l_prefix}/var/davical/log + + # install program components + find . -name "*.orig" -print | xargs rm -f + cp -r \ + awl-%{V_awl}/dba \ + awl-%{V_awl}/inc \ + $RPM_BUILD_ROOT%{l_prefix}/lib/davical/awl/ + rm -f davical-%{V_davical}/inc/always.php.in + %{l_shtool} subst %{l_value -s -a} \ + davical-%{V_davical}/inc/always.php + cp -r \ + davical-%{V_davical}/dba \ + davical-%{V_davical}/inc \ + davical-%{V_davical}/htdocs \ + $RPM_BUILD_ROOT%{l_prefix}/lib/davical/davical/ + + # install DAViCal application configuration file + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE davical-config.php} \ + $RPM_BUILD_ROOT%{l_prefix}/etc/davical/ + + # install DAViCal Apache configuration file + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE davical-apache.conf} \ + $RPM_BUILD_ROOT%{l_prefix}/etc/davical/ + + # install run-command script +%if "%{with_ssl}" == "yes" + with_ssl="-DSSL" +%else + with_ssl="" +%endif + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + -e "s;@with_ssl@;$with_ssl;" \ + %{SOURCE rc.davical} \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # install RDBMS setup script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE davical-setup.sh} \ + $RPM_BUILD_ROOT%{l_prefix}/sbin/davical-setup + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%config %{l_prefix}/etc/davical/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/davical' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/davical/*' + +%files -f files + +%clean + +%post + if [ $1 -eq 1 ]; then + # display final hints on initial installation + ( echo "1. To complete this installation of Drupal please start PostgreSQL" + echo " and initialize the DAViCal database like this:" + echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc postgresql start" + echo " \$ $RPM_INSTALL_PREFIX/sbin/davical-setup install" + echo "" + echo "2. By default, DAViCal runs its own SSL/TLS based Apache server" + echo " under 127.0.0.1, TCP port 8443. Please change this by editing" + echo " the \"Listen 127.0.0.1:8443\" directive in:" + echo " $RPM_INSTALL_PREFIX/etc/davical/davical-apache.conf" + echo "" + echo "3. Now start DAViCal by running the command" + echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc davical start" + echo " and connect with a browser to the URL" +%if "%{with_ssl}" == "yes" + echo " https://127.0.0.1:8443/" +%else + echo " https://127.0.0.1:8080/" +%endif + echo " and create user accounts." + echo "" + echo "4. Now you are able to subscribe to user \"example\"'s \"home\"" + echo " calendar with a CalDAV client through the URL" +%if "%{with_ssl}" == "yes" + echo " https://127.0.0.1:8443/caldav/example/home" +%else + echo " http://127.0.0.1:8080/caldav/example/home" +%endif + ) | %{l_rpmtool} msg -b -t notice + fi + if [ $1 -eq 2 ]; then + # after upgrade, restart service + eval `%{l_rc} davical status 2>/dev/null` + [ ".$davical_active" = .yes ] && %{l_rc} davical restart + fi + exit 0 + +%preun + if [ $1 -eq 0 ]; then + # before erase, stop service and remove log files + %{l_rc} davical stop 2>/dev/null + $RPM_INSTALL_PREFIX/sbin/davical-setup uninstall >/dev/null 2>&1 || true + rm -f $RPM_INSTALL_PREFIX/var/davical/log/* >/dev/null 2>&1 || true + rm -f $RPM_INSTALL_PREFIX/var/davical/run/* >/dev/null 2>&1 || true + rm -f $RPM_INSTALL_PREFIX/var/davical/db/* >/dev/null 2>&1 || true + fi + exit 0 + diff -r 1ff6f25dc4d9 -r 731574048d85 davical/rc.davical --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/davical/rc.davical Mon Nov 22 12:39:58 2010 +0100 @@ -0,0 +1,39 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.davical -- Run-Commands +## + +%config + davical_enable="$openpkg_rc_def" + +%status -u @l_susr@ -o + davical_usable="no" + davical_active="no" + @l_prefix@/sbin/apache -t \ + -f @l_prefix@/etc/davical/davical-apache.conf 2>/dev/null && \ + davical_usable="yes" + [ -f @l_prefix@/var/davical/run/apache.pid ] && \ + kill -0 `cat @l_prefix@/var/davical/run/apache.pid` && \ + davical_active="yes" + echo "davical_enable=\"$davical_enable\"" + echo "davical_usable=\"$davical_usable\"" + echo "davical_active=\"$davical_active\"" + +%start -u @l_susr@ + rcService davical enable yes || exit 0 + rcService davical active yes && exit 0 + @l_prefix@/sbin/apache @with_ssl@ \ + -f @l_prefix@/etc/davical/davical-apache.conf + +%stop -u @l_susr@ + rcService davical enable yes || exit 0 + rcService davical active no && exit 0 + [ -f @l_prefix@/var/davical/run/apache.pid ] && \ + kill -TERM `cat @l_prefix@/var/davical/run/apache.pid` + sleep 2 + +%restart -u @l_susr@ + rcService davical enable yes || exit 0 + rcService davical active no && exit 0 + rc davical stop start +