egroupware/xmlrpc.php
Carsten Wolff 64120e723c another shot at datetime.iso8601:
- accept both simple and extended format from input

- output simple format, if the client sends a HTTP-header "isoDate: simple".
  This should maybe extended by another possibility, where the information
  is stored in the session on login. Then there is a good way for all
  clients, regardless of the use of any combination of Auth-headers,
  login/cookies and webservers.
2005-06-30 19:01:19 +00:00

66 lines
2.5 KiB
PHP

<?php
/**************************************************************************\
* eGroupWare xmlrpc server *
* http://www.egroupware.org *
* This file written by Miles Lott <milos@groupwhere.org> *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
/* $Source$ */
/*list($usec, $sec) = explode(" ", microtime());
$GLOBALS['concisus']['script_start'] = ((float)$usec + (float)$sec);*/
$GLOBALS['phpgw_info'] = array();
$GLOBALS['phpgw_info']['flags'] = array(
'currentapp' => 'login',
'noheader' => True,
'disable_Template_class' => True
);
include('header.inc.php');
//viniciuscb: a secure way to know if we're in a xmlrpc call...
$GLOBALS['phpgw_info']['server']['xmlrpc'] = true;
$server = CreateObject('phpgwapi.xmlrpc_server');
/* uncomment here if you want to show all of the testing functions for compatibility */
//include(PHPGW_API_INC . '/xmlrpc.interop.php');
/* Note: this command only available under Apache */
$headers = getallheaders();
//print_r($headers);
$isodate = $headers['isoDate'] ? $headers['isoDate'] : $headers['isodate'];
$isodate = ($isodate == 'simple') ? True : False;
$server->setSimpleDate($isodate);
$auth_header = $headers['Authorization'] ? $headers['Authorization'] : $headers['authorization'];
if(eregi('Basic *([^ ]*)',$auth_header,$auth))
{
list($sessionid,$kp3) = explode(':',base64_decode($auth[1]));
//echo "auth='$auth[1]', sessionid='$sessionid', kp3='$kp3'\n";
}
else
{
$sessionid = get_var('sessionid',array('COOKIE','GET'));
$kp3 = get_var('kp3',array('COOKIE','GET'));
}
$server->authed = $GLOBALS['phpgw']->session->verify($sessionid,$kp3);
if (!$server->authed and isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW']))
{
$authed = $GLOBALS['phpgw']->session->create($login.'@'.$domain, $_SERVER['PHP_AUTH_PW'], 'text');
if ($authed)
{
$server->authed = true;
}
}
$server->service($_SERVER['HTTP_RAW_POST_DATA']);
?>