Difference between revisions of "User Contributions"

From Davical
Jump to navigationJump to search
m
m
Line 2: Line 2:
  
 
* [[Synology|Installing DAViCal on a Synology NAS]]
 
* [[Synology|Installing DAViCal on a Synology NAS]]
 +
* [[Installing DAViCal on systems running multiple versions or a non-standard port for PostgreSQL]]
  
 
===Code or Examples Relating to DAViCal===
 
===Code or Examples Relating to DAViCal===
Line 26: Line 27:
  
 
Information has been moved [[DAViCal_Web_Client | here]]
 
Information has been moved [[DAViCal_Web_Client | here]]
 
====Install davical on a server where you can find an another version of Postgresql====
 
 
Newly, i have been confronted to install davical on my server, but i had a old version of postgresql (8.0.23) already installed.
 
Unfortunately for me, davical requires a PostgreSQL: 8.1 or greater.
 
 
To stay on davical installations rules, i have compiled and installed postgresql 8.4.2 on my system and i have start it on another TCP port '''( 5433 )'''.
 
 
For to do this, you can modify file <tt>'''[my new db datastore 8.4.2]/postgresql.conf'''</tt>
 
 
  ...
 
  #------------------------------------------------------------------------------
 
  # CONNECTIONS AND AUTHENTICATION
 
  #------------------------------------------------------------------------------
 
 
 
  # - Connection Settings -
 
 
 
  listen_addresses = '*'          # what IP address(es) to listen on;
 
                                          # comma-separated list of addresses;
 
                                          # defaults to 'localhost', '*' = all
 
                                          # (change requires restart)
 
  #port = 5432                            # (change requires restart)
 
  '''port = 5433'''                            # (change requires restart)
 
  max_connections = 100                  # (change requires restart)
 
  # Note:  Increasing max_connections costs ~400 bytes of shared memory per
 
  # connection slot, plus lock space (see max_locks_per_transaction).
 
  ...
 
 
After do that, i have modify the create-database.sh file for it be able to found my new instance of postgresql.
 
 
I have added some variables :
 
 
  PGINSTALL=/opt/postgresql-8.4.2/bin  ''the path where my new postgresql is''
 
  export PGPORT=5433                    ''this variable is read by all postgres commands for to know where postgresql server listen''
 
 
After i modify all lines where i have found a command postgresql in following way :
 
 
ex :
 
  export DBVERSION="`psql -qAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
 
 
 
  by
 
 
 
  export DBVERSION="`'''${PGINSTALL}/'''psql -qAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
 
 
Below the new modified '''create-database.sh''' file. Sorry, i have not been able to upload this file on this wiki, perhaps the admin can change that ;-).
 
 
 
----
 
 
  #!/bin/sh
 
  #
 
  # Build the DAViCal database
 
  #
 
 
 
  '''PGINSTALL=/opt/postgresql-8.4.2/bin'''
 
  DBNAME="${1:-davical}"
 
  '''export PGPORT=5433'''
 
  ADMINPW="${2}"
 
 
 
  DBADIR="`dirname \"$0\"`"
 
 
 
  INSTALL_NOTE_FN="`mktemp -t tmp.XXXXXXXXXX`"
 
 
 
 
 
  testawldir() {
 
    [ -f "${1}/dba/awl-tables.sql" ]
 
  }
 
 
 
  #
 
  # Attempt to locate the AWL directory
 
  '''AWLDIR="/opt/lib/awl"'''
 
  if ! testawldir "${AWLDIR}"; then
 
    AWLDIR="/usr/share/awl"
 
    if ! testawldir "${AWLDIR}"; then
 
      AWLDIR="/usr/local/share/awl"
 
      if ! testawldir "${AWLDIR}"; then
 
        echo "Unable to find AWL libraries"
 
        exit 1
 
      fi
 
    fi
 
  fi
 
 
 
  export AWL_DBAUSER=davical_dba
 
  export AWL_APPUSER=davical_app
 
 
 
  # Get the major version for PostgreSQL
 
  export DBVERSION="`'''${PGINSTALL}/'''psql -qAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
 
 
 
  install_note() {
 
    cat >>"${INSTALL_NOTE_FN}"
 
  }
 
 
 
  db_users() {
 
    '''${PGINSTALL}/'''psql -qAt -c "SELECT usename FROM pg_user;" template1
 
  }
 
 
 
  create_db_user() {
 
    if ! db_users | grep "^${1}$" >/dev/null ; then
 
      '''${PGINSTALL}/'''psql -qAt -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1
 
      cat <<EONOTE | install_note
 
  *  You will need to edit the PostgreSQL pg_hba.conf to allow the
 
    '${1}' database user access to the 'davical' database.
 
 
 
  EONOTE
 
    fi
 
  }
 
 
 
  create_plpgsql_language() {
 
    if ! '''${PGINSTALL}/'''psql ${DBA} -qAt -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then
 
      '''${PGINSTALL}/'''createlang plpgsql "${DBNAME}"
 
    fi
 
  }
 
 
 
  try_db_user() {
 
    [ "XtestX`'''${PGINSTALL}/'''psql -U "${1}" -qAt -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ]
 
  }
 
 
 
  create_db_user "${AWL_DBAUSER}"
 
  create_db_user "${AWL_APPUSER}"
 
 
 
  # FIXME: Need to check that the database was actually created.
 
  if ! '''${PGINSTALL}/'''createdb --encoding UTF8 --template template0 --owner "${AWL_DBAUSER}" "${DBNAME}" ; then
 
    echo "Unable to create database"
 
    exit 1
 
  fi
 
 
 
  #
 
  # Try a few alternatives for a database user or give up...
 
  if try_db_user "${AWL_DBAUSER}" ; then
 
    export DBA="-U ${AWL_DBAUSER}"
 
  else
 
    if try_db_user "postgres" ; then
 
      export DBA="-U postgres"
 
    else
 
      if try_db_user "${USER}" ; then
 
        export DBA=""
 
      else
 
        if try_db_user "${PGUSER}" ; then
 
          export DBA=""
 
        else
 
          cat <<EOFAILURE
 
  * * * * ERROR * * * *
 
  I cannot find a usable database user to construct the DAViCal database with, but
 
  may have successfully created the davical_app and davical_dba users (I tried :-).
 
 
 
  You should edit your pg_hba.conf file to give permissions to the davical_app and
 
  davical_dba users to access the database and run this script again.  If you still
 
  continue to see this message then you will need to make sure you run the script
 
  as a user with full permissions to access the local PostgreSQL database.
 
 
 
  If your PostgreSQL database is non-standard then you will need to set the PGHOST,
 
  PGPORT and/or PGCLUSTER environment variables before running this script again.
 
 
 
  See:  http://wiki.davical.org/w/Install_Errors/No_Database_Rights
 
 
 
  EOFAILURE
 
          exit 1
 
        fi
 
      fi
 
    fi
 
  fi
 
 
 
  create_plpgsql_language
 
 
 
  #
 
  # Load the AWL base tables and schema management tables
 
  '''${PGINSTALL}/'''psql -qAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT|
 
  NOTICE: )"
 
  '''${PGINSTALL}/'''psql -qAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: |^t$)"
 
 
 
  #
 
  # Load the DAViCal tables
 
  '''${PGINSTALL}/'''psql -qAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: |^t$)"
 
 
 
  #
 
  # Set permissions for the application DB user on the database
 
  if ! ${DBADIR}/update-davical-database --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --nopatch --owner "${AWL_DBAUSER}" ; then
 
          cat <<EOFAILURE
 
  * * * * ERROR * * * *
 
  The database administration utility failed.  This is usually due to the Perl YAML
 
  or the Perl DBD::Pg libraries not being available.
 
 
 
  See:  http://wiki.davical.org/w/Install_Errors/No_Perl_YAML
 
 
 
  EOFAILURE
 
  fi
 
  #
 
  # Load the required base data
 
  '''${PGINSTALL}/'''psql -qAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}" | egrep -v '^10'
 
 
 
  #
 
  # We can override the admin password generation for regression testing predictability
 
  if [ "${ADMINPW}" = "" ] ; then
 
    #
 
    # Generate a random administrative password.  If pwgen is available we'll use that,
 
    # otherwise try and hack something up using a few standard utilities
 
    ADMINPW="`pwgen -Bcny 2>/dev/null | tr \"\\\\\'\" '^='`"
 
  fi
 
 
 
  if [ "$ADMINPW" = "" ] ; then
 
    # OK.  They didn't supply one, and pwgen didn't work, so we hack something
 
    # together from /dev/random ...
 
    export LC_ALL=C
 
    ADMINPW="`dd if=/dev/urandom bs=512 count=1 2>/dev/null | tr -c -d "a-km-zA-HJ-NP-Y0-9" | cut -c2-9`"
 
  fi
 
 
 
  if [ "$ADMINPW" = "" ] ; then
 
    # Right.  We're getting desperate now.  We'll have to use a default password
 
    # and hope that they change it to something more sensible.
 
    ADMINPW="please change this password"
 
  fi
 
 
 
  '''${PGINSTALL}/'''psql -q -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
 
 
 
  echo "NOTE"
 
  echo "===="
 
  cat "${INSTALL_NOTE_FN}"
 
  rm "${INSTALL_NOTE_FN}"
 
 
 
  cat <<FRIENDLY
 
  *  The password for the 'admin' user has been set to '${ADMINPW}'"
 
 
 
  Thanks for trying DAViCal!  Check in /usr/share/doc/davical/examples/ for
 
  some configuration examples.  For help, visit #davical on irc.oftc.net.
 
 
 
  FRIENDLY
 
 
I hope this howto can help someone who is in same case ;-)
 
 
ps : thanks to davical developpers for your soft...
 
 
Vic
 

Revision as of 13:58, 30 June 2015

Help
Available languages


Code or Examples Relating to DAViCal

Web Display of Calendars

I wrote this to pull calendars from DAViCal to our website. It is a re-write of some classes that pulled data from a Drupal database, so it currently doesn't display all possible text.

I'd love to see this rolled into DAViCal on the user collections page or as a way of displaying groups of collections in read-only mode.

To install, you'll need to update the following line in caldav_display.classes.php with your information, and then adjust the calendars you'd like to display in sample_display.php. Put sample_display.php and calendar.css in a web accessible folder and place the classes file in your path.

$calendar_db = pg_connect("host=hostname port=5432 dbname=rscds user=general password=password_for_general"

Place calendar_notifier on a server with cli php and call it with cron to send out nightly agenda emails. Something like:

0 4 * * * php /usr/local/sbin/calendar/calendar_notifier.php

You'll also need to install Pear's Date class and a relatively recent version of JQuery.

Download

Web client for DAViCal

Information has been moved here