From b6ea0453da7dbfdc56f5db29fea39607458cc3d3 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Wed, 13 Sep 2006 11:57:30 +1200 Subject: [PATCH] First release to attempt installation on another machine. --- TODO | 7 +- debian/changelog | 6 ++ debian/rscds.postinst | 15 ++++ debian/rscds.postrm | 15 ++++ debian/rscds.prerm | 15 ++++ htdocs/caldav.php | 1 + htdocs/freebusy.php | 20 ++++++ htdocs/index.php | 18 +++++ inc/RSCDSSession.php | 159 ++++++++++++++++++++++++++++++++++++++++++ inc/always.php | 2 - inc/page-footer.php | 0 inc/page-header.php | 0 rscds.webprj | 4 ++ 13 files changed, 256 insertions(+), 6 deletions(-) create mode 100644 debian/rscds.postinst create mode 100644 debian/rscds.postrm create mode 100644 debian/rscds.prerm create mode 100644 htdocs/freebusy.php create mode 100644 htdocs/index.php create mode 100644 inc/RSCDSSession.php create mode 100644 inc/page-footer.php create mode 100644 inc/page-header.php diff --git a/TODO b/TODO index 614eab3d..6387c992 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,8 @@ -Critical +Desirable - accept the free/busy information as a PUT - -Important - Parse the normal PUT requests so we know when time is available - Understand the repeat frequencies so ditto... -Nice +Important - Some form of admin functionality + - Ability to group users, and to give read/write permission to groups / individuals diff --git a/debian/changelog b/debian/changelog index b9325895..43fecf16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +rscds (0.1.1) unstable; urgency=low + + * Time for a real-world-ish release. + + -- Andrew McMillan Tue, 12 Sep 2006 05:10:32 -0500 + rscds (0.1.0) unstable; urgency=low * Initial Debian packaging diff --git a/debian/rscds.postinst b/debian/rscds.postinst new file mode 100644 index 00000000..a2224598 --- /dev/null +++ b/debian/rscds.postinst @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +[ -n "${DEBUG}" ] && set -o xtrace +PACKAGE=::package:: +[ -n "${DEBUG}" ] && echo "PostInst Parameters: $@" + + +case $1 in + configure) + ;; +esac + +#DEBHELPER# diff --git a/debian/rscds.postrm b/debian/rscds.postrm new file mode 100644 index 00000000..18b25f50 --- /dev/null +++ b/debian/rscds.postrm @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +[ -n "${DEBUG}" ] && set -o xtrace +PACKAGE=::package:: + +[ -n "${DEBUG}" ] && echo "PostRM Parameters: $@" + +case $1 in + purge) + ;; +esac + +#DEBHELPER# diff --git a/debian/rscds.prerm b/debian/rscds.prerm new file mode 100644 index 00000000..c6daa218 --- /dev/null +++ b/debian/rscds.prerm @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +[ -n "${DEBUG}" ] && set -o xtrace +PACKAGE=::package:: + +[ -n "${DEBUG}" ] && echo "PreRM Parameters: $@" + +case $1 in + remove) + ;; +esac + +#DEBHELPER# diff --git a/htdocs/caldav.php b/htdocs/caldav.php index eb373c2a..bb8508f3 100644 --- a/htdocs/caldav.php +++ b/htdocs/caldav.php @@ -1,5 +1,6 @@ >%s<<", $_SERVER['REQUEST_METHOD'] ); + dbg_log_array( "freebusy", 'HEADERS', $raw_headers ); + dbg_log_array( "freebusy", '_SERVER', $_SERVER, true ); + dbg_error_log( "freebusy", "RAW: %s", str_replace("\n", "",str_replace("\r", "", $raw_post)) ); +} + + +?> \ No newline at end of file diff --git a/htdocs/index.php b/htdocs/index.php new file mode 100644 index 00000000..1368298f --- /dev/null +++ b/htdocs/index.php @@ -0,0 +1,18 @@ +LoginRequired(); + +?> + + + +Really Simple CalDAV Store + + +

These are the admin pages...

+You appear to be logged on as $session->username ($session->fullname)

"; +?> + + \ No newline at end of file diff --git a/inc/RSCDSSession.php b/inc/RSCDSSession.php new file mode 100644 index 00000000..0ece17f3 --- /dev/null +++ b/inc/RSCDSSession.php @@ -0,0 +1,159 @@ + +* @copyright Catalyst .Net Ltd +* @license http://gnu.org/copyleft/gpl.html GNU GPL v2 +*/ + +/** +* All session data is held in the database. +*/ +require_once('PgQuery.php'); + +/** +* @global resource $session +* @name $session +* The session object is global. +*/ +$session = 1; // Fake initialisation + +// The Session object uses some (optional) configurable SQL to load +// the records related to the logged-on user... (the where clause gets added). +// It's very important that someone not be able to externally control this, +// so we make it a function rather than a variable. +/** +* @todo Make this a defined constant +*/ +function local_session_sql() { + $sql = <<Session($sid); + } + + + + /** + * Checks whether this user is a banker + * + * @return boolean Whether or not the logged in user is a banker + */ + function IsAdmin() { + return ( $this->logged_in && isset($this->is_admin) && ($this->is_admin == 't') ); + } + + + /** + * Returns a value for user_no which is within the legal values for this user, + * using a POST value or a GET value if available and allowed, otherwise using + * this user's value. + * + * @return int The sanitised value of user_no + */ + function SanitisedUserNo( ) { + $user_no = 0; + if ( ! $this->logged_in ) return $user_no; + + $user_no = $this->user_no; + if ( $this->AllowedTo("Admin") && (isset($_POST['user_no']) || isset($_GET['user_no'])) ) { + $user_no = intval(isset($_POST['user_no']) ? $_POST['user_no'] : $_GET['user_no'] ); + } + if ( $user_no == 0 ) $user_no = $this->user_no; + return $user_no; + } + + +/** +* Checks that this user is logged in, and presents a login screen if they aren't. +* +* The function can optionally confirm whether they are a member of one of a list +* of groups, and deny access if they are not a member of any of them. +* +* @param string $groups The list of groups that the user must be a member of one of to be allowed to proceed. +* @return boolean Whether or not the user is logged in and is a member of one of the required groups. +*/ + function LoginRequired( $groups = "" ) { + global $c, $session, $main_menu, $sub_menu, $tab_menu; + + if ( $this->logged_in && $groups == "" ) return; + if ( ! $this->logged_in ) { + $c->messages[] = "You must log in to use this system."; + include_once("page-header.php"); + if ( function_exists("local_index_not_logged_in") ) { + local_index_not_logged_in(); + } + else { + echo <<Log On Please +

For access to the $c->system_name you should log on with +the username and password that have been issued to you.

+ +

If you would like to request access, please e-mail $c->admin_email.

+EOHTML; + echo $this->RenderLoginPanel(); + } + } + else { + $valid_groups = split(",", $groups); + foreach( $valid_groups AS $k => $v ) { + if ( $this->AllowedTo($v) ) return; + } + $c->messages[] = "You are not authorised to use this function."; + include_once("page-header.php"); + } + + include("page-footer.php"); + exit; + } +} + +$session = new RSCDSSession(); +$session->_CheckLogin(); + +?> \ No newline at end of file diff --git a/inc/always.php b/inc/always.php index 44763dac..3b9f3b99 100644 --- a/inc/always.php +++ b/inc/always.php @@ -77,7 +77,5 @@ function dbg_log_array( $component, $name, $arr, $recursive = false ) { } include_once("PgQuery.php"); -include_once("BasicAuthSession.php"); -// include_once("iCalendar.php"); ?> \ No newline at end of file diff --git a/inc/page-footer.php b/inc/page-footer.php new file mode 100644 index 00000000..e69de29b diff --git a/inc/page-header.php b/inc/page-header.php new file mode 100644 index 00000000..e69de29b diff --git a/rscds.webprj b/rscds.webprj index f68921aa..035dd370 100644 --- a/rscds.webprj +++ b/rscds.webprj @@ -30,5 +30,9 @@ + + + +