steffen: server/kolab-resource-handlers/kolab-resource-handlers/freebusy freebusy.php, 1.4, 1.5

cvs at intevation.de cvs at intevation.de
Sun Jul 11 18:04:13 CEST 2004


Author: steffen

Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy
In directory doto:/tmp/cvs-serv21716/kolab-resource-handlers/freebusy

Modified Files:
	freebusy.php 
Log Message:
HTTP PUT support for fb upload

Index: freebusy.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy/freebusy.php,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- freebusy.php	9 Jul 2004 12:24:26 -0000	1.4
+++ freebusy.php	11 Jul 2004 16:04:11 -0000	1.5
@@ -213,6 +213,18 @@
     return $vCal->exportvCalendar();
 }
 
+function store_freebusy( $fbdirname, $fbfilename ,$fbdata )
+{  
+  $tmpn = tempnam( $fbdirname,'fb' );
+  $tmpf = fopen( $tmpn, 'w' );
+  fwrite( $tmpf, $fbdata );
+  if( !is_dir( $fbdirname ) ) {
+    mkdir( $fbdirname );
+  }
+  rename( $tmpn, $fbfilename );
+  fclose( $tmpf );      
+}
+
 // ========================================================================== //
 
 // What is the name of our script
@@ -230,7 +242,7 @@
     notFound('No user specified');
 }
 
-$fbdir = $params['kolab_prefix'].'/var/kolab/www/freebusy/'.$user.'/';
+$fbdir = $params['kolab_prefix'].'/var/kolab/www/freebusy/data/';
 $fbfilename = $fbdir.$user.($extended?'.xfb':'.ifb');
 
 // Handle the case of 'user' instead of 'user at domain'
@@ -307,10 +319,25 @@
 $imapuser = $_SERVER['PHP_AUTH_USER'];
 $imappw = $_SERVER['PHP_AUTH_PW'];
 
+if( $_SERVER['REQUEST_METHOD'] == 'PUT' ) {
+  // We have a file upload, slurp up the data
+  $vfbupload = file_get_contents( 'php://input' );
+
+  trigger_error( "user=$user, $imapuser=$imapuser, method=PUT", E_USER_NOTICE );
+
+  if( $imapuser == $user ) {
+    // Username OK, Apache should have taken care of authentication
+    store_freebusy( $fbdir, $fbfilename, $vfbupload );
+    exit;
+  } else {
+    unauthorized( "You're not allowed to store a freebusy file with that name"); 
+  }
+}
+
 trigger_error( "user=$imapuser, mailbox=$fullmbox, fbfilename=$fbfilename", E_USER_NOTICE );
 
 $vfb = false;
-if( $imapuser || $extended ) {
+if( $_SERVER['REQUEST_METHOD'] != 'PUT' && ($imapuser || $extended) ) {
   // Open an IMAP connection to the requested users' calendar
   $imap = @imap_open($fullmbox, $imapuser, $imappw);
   if ( !$imap ) {
@@ -329,14 +356,7 @@
       if( $extended ) {
 	// Don't cache
       } else {
-	$tmpn = tempnam( $fbdir,'fb' );
-	$tmpf = fopen( $tmpn, 'w' );
-	fwrite( $tmpf, $vfb );
-	if( !is_dir( $fbdir ) ) {
-	  mkdir( $fbdir );
-	}
-	rename( $tmpn, $fbfilename );
-	fclose( $tmpf );      
+	store_freebusy( $fbdir, $fbfilename, $vfb );
       }
     }
   } 





More information about the commits mailing list