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 @@
+
+
+
+