Update for egroupware

This commit is contained in:
Miles Lott 2003-12-28 15:58:08 +00:00
parent 4f382debb6
commit 14c759a62c
16 changed files with 369 additions and 459 deletions

Binary file not shown.

View File

@ -27,10 +27,10 @@
Proposal for a Common Groupware Interface Standard
\layout Author
by Miles Lott <milosch@phpgroupware.org>
(C) 2001-2004 Miles Lott <milos@groupwhere.org>
\layout Date
September 13, 2001
September 13, 2001 and December 29, 2003
\layout Standard

View File

@ -27,10 +27,18 @@
Proposal for a Common Groupware Interface Standard
\layout Author
by Miles Lott <milosch@phpgroupware.org>
by Miles Lott <milos@groupwhere.org>
\layout Date
September 13, 2001
September 13, 2001 and December 29, 2003
\layout Standard
\begin_inset LatexCommand \tableofcontents{}
\end_inset
\layout Section
Scope

Binary file not shown.

View File

@ -5,18 +5,27 @@
See http://www.lyx.org/ for more information -->
<artheader>
<title>
Common Groupware Interface Standard
Proposal for a Common Groupware Interface Standard
</title>
<author>
(C) 2001-2004 Miles Lott &lt;milos@groupwhere.org&gt;
</author>
<date>
September 13, 2001 and December 29, 2003
</date>
<para>
<toc></toc>
</para>
</artheader>
<sect1>
<title>
Scope
</title>
<para>
As many different opensource and freesoftware groupware systems are being developed, the full realization of the dream of a connected world must be prefaced by an agreement to interoperate. There are limited ways in which cooperation with commercial groupware systems may be achecived, the majority if not all of which were derived via the establishment of open standards. These might include email (POP3/IMAP), contacts(LDAP,vcard), or scheduling(ical/vcal). It is felt that while these have proven themselves to be very useful, they are insufficient to satisfy the real needs of a typical corporate environment.
As many different opensource and freesoftware groupware systems are being developed, the full realization of the dream of a connected world should be prefaced by an agreement to interoperate. There are limited ways in which cooperation with these and commercial groupware systems may be achecived, the majority if not all of which were derived via the establishment of open standards. These might include email (POP3/IMAP), contacts(LDAP,vcard), or scheduling(ical/vcal). It is felt that while these have proven themselves to be very useful, they are insufficient to satisfy the real needs of a typical business environment.
</para>
<para>
This document hopes to provide a reasonable recommendation for a set of standardized methods to be used for groupware services interaction. More specifically, it hopes to address the need for such a standard as well as to spur discussion about the common service names and methods themselves.
This document hopes to provide a reasonable, if limited, recommendation for a set of standardized methods to be used for groupware services interaction. More specifically, it hopes to address the need for such a standard as well as to spur discussion about the common service names and methods themselves.
</para>
<para>
Examples will be given for implementations in XML-RPC, since this standard is relatively fixed and open.
@ -62,7 +71,7 @@
</listitem>
</itemizedlist>
<para>
These services are represented already in places such as existing groupware client-server applications and also in the PalmOS basic-4 buttons and applications.
These services are represented already in places such as existing groupware client-server applications and also in the PalmOS basic-4 buttons and applications. Different systems may have different names for these services internally, e.g. Contacts - addresses, addressbook, people, Schedule - calendar, agenda, meetings.
</para>
<para>
Within each of these services are some common methods that would be called to store, retreive, or update data:
@ -102,7 +111,7 @@
The concept of contacts may encompass local addressbooks, LDAP, and lists stored in other media. The purpose of the contacts service is not to duplicate or attempt to replace these. In some respects, it might do just that. But its goal is more so to provide a common and shareable way for the other core services to create, edit, and read a common user and address list. All of the other services may use the contact service to obtain record owner information to be used in access control. They would also use them when it is required to share this data, as with a meeting where other local and non-local users will be invited to attend.
</para>
<para>
Contacts may include the local installed user base, users on other cooperative servers, or email addresses used for limited cooperation with other groupware services that are not compliant with this service scheme or implementations thereof. It could also include individuals using web-based or local ISP email services. The scope of this document, however, is to define the service with regard to the common methods to be used:
Contacts may include the local installed user base, users on other cooperative servers, or email addresses used for limited cooperation with other groupware services that are not compliant with this service scheme or implementations thereof. It could also include individuals using web-based or local ISP email services. The scope of this document, however, is to define the service with regard to the common methods to be used for server-server and client-server communications:
</para>
<itemizedlist>
<listitem>
@ -260,12 +269,6 @@
]]><![ CDATA [<member><name>filter</name>
]]><![ CDATA [<value><string></string></value>
]]><![ CDATA [</member>
]]><![ CDATA [<member><name>sort</name>
]]><![ CDATA [<value><string></string></value>
]]><![ CDATA [</member>
]]><![ CDATA [<member><name>order</name>
]]><![ CDATA [<value><string></string></value>
]]><![ CDATA [</member>
]]><![ CDATA [</struct></value>
]]><![ CDATA [</param>
]]><![ CDATA [</params>

View File

@ -1,25 +1,50 @@
Common Groupware Interface Standard
Proposal for a Common Groupware Interface Standard
(C) 2001-2004 Miles Lott <milos@groupwhere.org>
September 13, 2001 and December 29, 2003
Table of Contents
1 Scope
2 The Services
2.1 Overview
2.2 Detail
2.2.1 Contacts
2.2.2 Schedule
2.2.3 Notes
2.2.4 Todo
2.3 Examples in XML-RPC
3 Conclusion
3.1 Contacts:
3.2 Schedule:
3.3 Notes:
3.4 Todo:
1 Scope
As many different opensource and freesoftware groupware systems
are being developed, the full realization of the dream of
a connected world must be prefaced by an agreement to interoperate.
There are limited ways in which cooperation with commercial
groupware systems may be achecived, the majority if not
all of which were derived via the establishment of open
standards. These might include email (POP3/IMAP), contacts(LDAP,vcard),
or scheduling(ical/vcal). It is felt that while these have
proven themselves to be very useful, they are insufficient
to satisfy the real needs of a typical corporate environment.
a connected world should be prefaced by an agreement to
interoperate. There are limited ways in which cooperation
with these and commercial groupware systems may be achecived,
the majority if not all of which were derived via the establishment
of open standards. These might include email (POP3/IMAP),
contacts(LDAP,vcard), or scheduling(ical/vcal). It is felt
that while these have proven themselves to be very useful,
they are insufficient to satisfy the real needs of a typical
business environment.
This document hopes to provide a reasonable recommendation
for a set of standardized methods to be used for groupware
services interaction. More specifically, it hopes to address
the need for such a standard as well as to spur discussion
about the common service names and methods themselves.
This document hopes to provide a reasonable, if limited,
recommendation for a set of standardized methods to be used
for groupware services interaction. More specifically, it
hopes to address the need for such a standard as well as
to spur discussion about the common service names and methods
themselves.
Examples will be given for implementations in XML-RPC, since
this standard is relatively fixed and open.
@ -49,7 +74,10 @@ They are:
These services are represented already in places such as
existing groupware client-server applications and also in
the PalmOS basic-4 buttons and applications.
the PalmOS basic-4 buttons and applications. Different systems
may have different names for these services internally,
e.g. Contacts - addresses, addressbook, people, Schedule
- calendar, agenda, meetings.
Within each of these services are some common methods that
would be called to store, retreive, or update data:
@ -85,7 +113,7 @@ not compliant with this service scheme or implementations
thereof. It could also include individuals using web-based
or local ISP email services. The scope of this document,
however, is to define the service with regard to the common
methods to be used:
methods to be used for server-server and client-server communications:
* read_list
@ -212,18 +240,6 @@ vcard format):
</member>
<member><name>sort</name>
<value><string></string></value>
</member>
<member><name>order</name>
<value><string></string></value>
</member>
</struct></value>
</param>

View File

@ -1,82 +0,0 @@
XML-RPC for phpGroupWare
Written by Joseph Engo <jengo@phpgroupware.org>
This document will give you a brief intro to the new XML-RPC calls to phpGroupWare. The older pure PHP XML-RPC classes where cumbersome, slow, and had quite a number of issues with parameters and returns not meeting XML-RPC specs.
This document is broken down into 2 main sections, for developers of applications in phpGroupWare and developers who are writing applications to connect to phpGroupWare via XML-RPC. Keep in mind, I suck at writing docs, so this doc is quick and to the point.
For phpGroupWare developers:
Before you can port your applications to utilize the XML-RPC features of phpGroupWare, you must follow these rules in order for things to work correctly.
- ALL functions must have a return of some type. This is a rule for XML-RPC in general. If you are unsure what to use, the simple Boolean value of True will work.
- Your class must have an array (described bellow) showing what functions are made available through XML-RPC. Only allow functions that the client NEEDS to use.
- Your method can NOT print out any direct output. No HTML, XML, etc. Errors must be reported using xmlrpc_error().
- Do NOT add any redirects within the function. Header(), $phpgw->redirect() are not acceptable and can lead to a number of issues.
Each class, needs to have an array describing what methods are made available in that class. The required fields are, name and description. Other values might be made a requirement in the future. The other values, such as developer, are recommended.
class bofoo
{
var $xmlrpc_methods = array();
function bofoo()
{
$this->xmlrpc_methods[] = array(
?name? => ?add?
?description? => ?Add an entry?
);
}
function add()
{
return True;
}
}
Description of the xmlrpc_methods array:
name: Function name to be called.
description: Brief description of what the function does
author: List of authors who wrote the function.
(More to be added soon)
Error reporting:
xmlrpc_error() is created to report errors that have happened during that execution. The errors returned are errors unless they are state change errors.
1001: State change - session expired, server not accepting new connections, server down for maintaince, etc. These aren?t show stopper errors, but report that calling more methods isn?t possible.
1002: Notices ? An example of this would be a function not returning a value, or other errors that can mean things can continue, but should be fixed.
1003: Warning ? An example of this would be an SQL error, care should be taken with the results.
1004: Error ? Invailed parameters, wrong parameter count, invailed parameter data, wrong parameter types, etc. (Not finished)
1005: PHP error ? These are errors generated by PHP, can be anything from parse errors, to include failures, calling an undefined function, etc.
For the XML-RPC client side developer:
This is for developers who are writing applications to connect to a phpGroupWare server via XML-RPC. Currently, there isn?t a list of all the methods available.
system.login ? This is generally the first method you need to call. This will return the sessionid and kp3. It will return a 1001 error if the login failed. The faultString will explain why it failed. The faultString should always be written in English. Example: Session expired, Access not permited and Login failed.
system.logout ? This will destroy the current session. This should always be called once you are finished with your session.
Calling application level methods should work as follows. <application name>.<class>.<method> Example: messenger.bomessenger.read_inbox
Besides the defined methods, there are also listMethods and describeMethods. They are ONLY available to the application you are requesting and have access to. messenger.bomessenger.listMethods will not list infolog.boinfolog.readIdArray since you aren?t accessing infolog. You can ONLY call listMethods for an application you have access to. (This might be subject to change)
When calling /xmlrpc.php, you will need to pass the sessionid and kp3 using the HTTP_AUTH headers. You can also call it like: http://<sessionid>:<kp3>@www.mydomain.com/phpgroupware/xmlrpc.php
The username should be the sessionid, and the password should be kp3. Both are required and will fail if not present. If kp3 is incorrect, (if they have mcrypt / mhash installed and enabled) the session will fail to decrypt.
Passing the sessionid and kp3 to the method will be made available soon as another method for XML-RPC libraries which don?t support this kind of authentication. (Its not apart of the XML-RPC spec)
With the old XML-RPC classes the user would need to have access to the phpgwapi in order to access methods like, phpgwapi.applications.read This restriction has been removed with some exceptions. The phpGroupWare API is in read only mode when accessing it via XML-RPC. Meaning, creating accounts, adding / deleting applications, is not currently available. This will require permission checks from inside the function, rather then outside in the call wrapper. Not all methods are available, and care should be taken each time a method is enabled. The only ones enabled are the ones that are NEEDED to be enabled.
General information about the new xmlrpc.php file:
In order to use this, you MUST have the epi xmlrpc libraries installed. They are bundled with newer versions of PHP, but require the --with-xmlrpc option enabled at ./configure time. These libraries are written in C, and are much faster then the old pure PHP version. Not to mention, they are also easier to use and work correctly.
xmlrpc_call_wrapper():
I know lots of developers prefer not to use wrappers, but this one is required. When the function is called, the method name is the first parameter sent. Rather then require all developers to have this parameter first, and a single array as the actual parameters sent, this will filter and handle it.
Permissions are checked before the method is registered. If they can?t access an application, the application isn?t even registered. This will also return an error stating Access not permitted.
system.login is only registered when there is no sessionid and/or kp3 present.
system.logout is only registered when there is a valied session present.

View File

@ -1,9 +1,9 @@
/* $Id$ */
Perl interfacing to phpgroupware:
Perl interfacing to egroupware:
The Frontier::RPC module available at CPAN is capable of logging into a
phpgroupware server. To authenticate your session after the initial login,
The Frontier::RPC module available at CPAN is capable of logging into an
egroupware server. To authenticate your session after the initial login,
however, requires a patch to Frontier. This patch causes Frontier to create
an Authentication header using username/password values. We use the assigned
sessionid and kp3 for this.
@ -18,7 +18,7 @@ TODO:
the Frontier source:
rpc-client.pl \
http://www.phpgroupware.org/cvsdemo/xmlrpc.php \
http://www.egroupware.org/egroupware/xmlrpc.php \
system.login \
"{domain => '',username => 'demo', password => 'guest'}"
@ -32,7 +32,7 @@ $result = HASH(0x826d4b0)
5. Place these on the commandline for a new request:
rpc-client.pl \
http://www.phpgroupware.org/cvsdemo/xmlrpc.php \
http://www.egroupware.org/egroupware/xmlrpc.php \
--username 36f9ec1e4ad78bxd8bc902b1c38d3e14 \
--password e0219714614769x25bc92286016c60c2 \
service.contacts.read \

Binary file not shown.

View File

@ -1,7 +1,7 @@
<HTML
><HEAD
><TITLE
> phpGroupWare XML-RPC/SOAP Methodology
> eGroupWare XML-RPC/SOAP Methodology
</TITLE
><META
NAME="GENERATOR"
@ -21,7 +21,7 @@ CLASS="TITLEPAGE"
CLASS="TITLE"
><A
NAME="AEN2"
>phpGroupWare XML-RPC/SOAP Methodology</A
>eGroupWare XML-RPC/SOAP Methodology</A
></H1
><H3
CLASS="AUTHOR"
@ -47,7 +47,7 @@ NAME="AEN10"
>Login and authentication</A
></H2
><P
> Authentication for user logins is handled internally no differently than for the typical phpGroupWare login via web browser. Server logins, added for XML-RPC and SOAP, are only slightly different. For either protocol, user and server login and authentication and subsequent requests are handled by their respective server apps, xmlrpc.php and soap.php. A server is identified by a custom HTTP header, without which a normal user login will be undertaken.
> Authentication for user logins is handled internally no differently than for the typical eGroupWare login via web browser. Server logins, added for XML-RPC and SOAP, are only slightly different. For either protocol, user and server login and authentication and subsequent requests are handled by their respective server apps, xmlrpc.php and soap.php. A server is identified by a custom HTTP header, without which a normal user login will be undertaken.
</P
><P
> A client or server sends the appropriate XML-RPC or SOAP packet containing host, user, and password information to the phpgw server. The server then assigns a sessionid and key, which is returned to the client in the appropriate format.
@ -302,4 +302,4 @@ VALIGN="top"
></DIV
></BODY
></HTML
>
>

View File

@ -24,16 +24,16 @@
\layout Title
phpGroupWare XML-RPC/SOAP Methodology
eGroupWare XML-RPC/SOAP Methodology
\layout Author
Miles Lott
(C) 2001-2004 Miles Lott
\layout Author
milosch@phpgroupware.org
milos@groupwhere.org
\layout Date
August 23, 2001
August 23, 2001 and December 29, 2003
\layout Standard
additions made September 3, 2001.
@ -49,7 +49,7 @@ Login and authentication
\layout Standard
Authentication for user logins is handled internally no differently than
for the typical phpGroupWare login via web browser.
for the typical eGroupWare login via web browser.
Server logins, added for XML-RPC and SOAP, are only slightly different.
For either protocol, user and server login and authentication and subsequent
requests are handled by their respective server apps, xmlrpc.php and soap.php.
@ -701,7 +701,7 @@ More to come...
Documenting every single call will be difficult, but should be done.
In leiu of this, please see the class.bo{APPNAME}.inc.php files in each applicatio
n/inc directory in the phpgroupware cvs.
n/inc directory in the egroupware cvs.
In this file will be a list_methods() function, which returns the information
to the server about input/output structure for each call.
If the file does not have this function, then it is not yet workable via

Binary file not shown.

View File

@ -1,8 +1,7 @@
%!PS-Adobe-2.0
%%Creator: dvipsk 5.86 p1.5d Copyright 1996-2001 ASCII Corp.(www-ptex@ascii.co.jp)
%%based on dvipsk 5.86 Copyright 1999 Radical Eye Software (www.radicaleye.com)
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: phpgw_server.dvi
%%Pages: 8
%%Pages: 6
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: Helvetica-Bold Times-Roman Courier Times-Italic
@ -10,7 +9,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -t letter -o phpgw_server.ps phpgw_server.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 2001.09.03:2156
%DVIPSSource: TeX output 2003.12.28:0956
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@ -54,32 +53,32 @@ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: 8r.enc
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
% version = "0.6",
% date = "1 July 1998",
% date = "22 June 1996",
% filename = "8r.enc",
% email = "tex-fonts@@tug.org",
% docstring = "Encoding for TrueType or Type 1 fonts
% to be used with TeX."
% email = "kb@@mail.tug.org",
% address = "135 Center Hill Rd. // Plymouth, MA 02360",
% codetable = "ISO/ASCII",
% checksum = "119 662 4424",
% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
% @}
%
% Idea is to have all the characters normally included in Type 1 fonts
@ -107,8 +106,7 @@ B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
% upward-compatible revisions, if someday more characters are generally
% available.
%
% (5) hyphen appears twice for compatibility with both
% ASCII and Windows.
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
%
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
@ -126,7 +124,7 @@ B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
% very contentious; it's so painful not having quoteleft and quoteright
% at 96 and 145 that we move the things normally found there to here.
% at 96 and 145 that we move the things normally found there down to here.
/grave /quotesingle
% 0x20 (ASCII begins)
/space /exclam /quotedbl /numbersign
@ -197,15 +195,15 @@ B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin 0 1 255{exch dup type/integertype ne{pop pop 1 sub
exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}for Metrics/Metrics currentdict end def[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end
ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
def end
%%EndProcSet
%%BeginProcSet: special.pro
@ -316,34 +314,32 @@ setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 600 600 (phpgw_server.dvi)
@start /Fa 134[ 37 3[ 42 23 1[ 32 1[ 42 42 2[ 23 3[ 42
42 1[ 37 42 2[ 42 8[ 51 69 3[ 42 51 1[ 51 60 1[ 69 46
4[ 60 3[ 55 1[ 51 8[ 42 42 42 42 42 42 42 42 1[ 23 1[ 28
45[{ TeXBase1Encoding ReEncodeFont} 33 83.022 /Times-Italic
rf /Fb 133[ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
45 45 45 45 45 45 45 45 45 45 45 45 1[ 45 4[ 45 45 45
45 45 45 45 45 45 45 45 45 45 45 45 2[ 45 45 45 1[ 45
45 45 45 45 1[ 45 45 45 45 1[ 45 45 45 45 45 45 45 45
45 45 45 45 45 45 10[ 45 34[{ TeXBase1Encoding ReEncodeFont} 69
74.7198 /Courier rf /Fc 134[ 55 3[ 61 33 55 3[ 61 61
89 28 2[ 28 1[ 61 1[ 55 50[ 55 55 2[ 28 46[{
TeXBase1Encoding ReEncodeFont} 14 99.6264 /Helvetica-Bold
rf /Fd 130[ 40 1[ 40 37 42 42 60 42 42 23 32 28 42 42
42 42 65 23 42 1[ 23 42 42 28 37 42 37 42 37 1[ 42 6[ 60
78 1[ 60 51 46 55 1[ 46 60 60 74 51 2[ 28 60 60 46 51
60 55 55 60 6[ 23 3[ 42 1[ 42 42 3[ 23 21 28 21 2[ 28
28 28 2[ 42 32[ 46 46 2[{ TeXBase1Encoding ReEncodeFont} 62
83.022 /Times-Roman rf /Fe 138[ 73 40 4[ 73 73 4[ 33
73 73 1[ 66 73 66 1[ 66 20[ 73 26[ 66 2[ 33 46[{
TeXBase1Encoding ReEncodeFont} 14 119.552 /Helvetica-Bold
rf /Ff 134[ 80 2[ 80 88 48 80 56 88 1[ 88 88 128 40 2[ 40
3[ 80 1[ 80 1[ 80 13[ 96 5[ 120 10[ 104 14[ 80 80 80
2[ 40 46[{ TeXBase1Encoding ReEncodeFont} 22 143.462
/Helvetica-Bold rf /Fg 134[ 115 3[ 126 69 1[ 80 1[ 126
126 2[ 57 3[ 126 126 1[ 115 126 2[ 115 8[ 138 195 3[ 138
149 1[ 138 161 1[ 172 126 4[ 161 3[ 149 1[ 149 17[ 57
1[ 69 45[{ TeXBase1Encoding ReEncodeFont} 25 206.584
/Helvetica-Bold rf end
@start /Fa 134[37 3[42 23 1[32 1[42 42 2[23 3[42 42 1[37
42 2[42 8[51 69 3[42 51 1[51 60 1[69 46 4[60 3[55 1[51
10[42 42 42 42 42 42 1[23 1[28 45[{TeXBase1Encoding ReEncodeFont}31
83.022 /Times-Italic rf /Fb 133[45 45 45 45 45 45 45
45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
45 1[45 4[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
2[45 45 45 1[45 45 45 45 45 1[45 45 45 45 1[45 45 45
45 45 45 45 45 45 45 45 45 45 45 10[45 34[{
TeXBase1Encoding ReEncodeFont}69 74.7198 /Courier rf
/Fc 134[46 3[51 28 46 3[51 51 74 23 2[23 1[51 1[46 50[46
46 2[23 46[{TeXBase1Encoding ReEncodeFont}14 83.022 /Helvetica-Bold
rf /Fd 130[40 1[40 37 42 42 60 42 42 23 32 28 42 42 42
42 65 23 42 1[23 42 42 28 37 42 37 42 37 1[42 6[60 78
1[60 51 46 55 1[46 60 60 74 51 2[28 60 60 46 51 60 55
55 60 6[23 3[42 1[42 42 3[23 21 28 21 2[28 28 28 2[42
32[46 46 2[{TeXBase1Encoding ReEncodeFont}62 83.022 /Times-Roman
rf /Fe 138[61 33 4[61 61 4[28 61 61 1[55 61 55 1[55 20[61
26[55 2[28 46[{TeXBase1Encoding ReEncodeFont}14 99.6264
/Helvetica-Bold rf /Ff 134[66 2[66 73 40 66 47 73 1[73
73 106 33 2[33 3[66 1[66 1[66 13[80 5[100 10[86 14[66
66 66 2[33 46[{TeXBase1Encoding ReEncodeFont}22 119.552
/Helvetica-Bold rf /Fg 134[115 3[126 69 1[80 1[126 126
2[57 3[126 126 1[115 126 2[115 8[138 195 3[138 149 1[138
161 1[172 126 4[161 3[149 1[149 17[57 1[69 45[{
TeXBase1Encoding ReEncodeFont}25 206.584 /Helvetica-Bold
rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
@ -354,249 +350,218 @@ letter
%%EndSetup
%%Page: 1 1
1 0 bop Black 0 TeXcolorgray Black Black Fg 579 647 a(phpGr) l(oupW) -8
b(are) 58 b(XML-RPC/SO) -10 b(AP) 1497 915 y(Methodolog) r(y) p
Ff -2 1382 a(1.) 39 b(System) f(le) n(vel) h(request) n(s) p
Fe -2 1710 a(1.1.) 34 b(Login) g(and) g(authentica) r(tion) p
Fd 396 1878 a(Authenticatio) n(n) 20 b(for) g(user) g(logins) g(is) h
(hand) n(led) g(intern) n(ally) g(no) e(dif) n(feren) n(tly) h(than) g
(for) g(the) g(typical) g(php) n(Group) n(W) -7 b(are) 396
1986 y(login) 20 b(via) g(web) g(bro) n(wser) -7 b(.) 21
b(Serv) o(er) e(logins,) h(added) f(for) h(XML-RPC) g(and) g(SO) m(AP)
-9 b(,) 21 b(are) f(only) f(slightly) h(dif) n(fer) n(ent.) g(F) o(or)
396 2094 y(either) g(proto) n(col,) g(user) g(and) g(serv) o(er) f
(login) h(and) f(authenticatio) n(n) i(and) e(subsequen) n(t) i(requ) n
(ests) h(are) e(hand) n(led) g(by) g(their) 396 2202
y(respecti) n(v) o(e) f(serv) o(er) h(app) n(s,) h(xmlrpc) n(.php) f
(and) f(soap.ph) n(p.) h(A) h(serv) o(er) e(is) i(identi\002ed) f(by) f
(a) i(custom) f(HTTP) g(header) -5 b(,) 396 2309 y(without) 20
b(which) f(a) i(norm) n(al) g(user) f(login) f(will) i(be) g(und) n
(ertak) o(en.) 396 2459 y(A) g(client) f(or) g(serv) o(er) f(sends) i
(the) f(appr) n(opriate) g(XML-RPC) g(or) g(SO) m(AP) h(pack) o(et) f
(contain) n(ing) g(host,) g(user) m(,) g(and) f(passw) o(ord) 396
2567 y(inform) n(ation) h(to) g(the) h(php) n(gw) f(serv) o(er) -5
b(.) 20 b(The) g(serv) o(er) f(then) h(assigns) g(a) h(sessionid) f
(and) g(k) o(e) o(y) -5 b(,) 19 b(which) g(is) j(retur) n(ned) e(to) g
(the) 396 2675 y(client) g(in) h(the) f(appro) n(priate) g(form) n(at.)
396 2824 y(Our) g(curren) n(t) h(method) e(for) g(authenticatin) n(g) i
(requ) n(ests) g(after) f(successful) g(login) g(is) h(via) f(the) g
(Author) n(ization:) g(Basic) 396 2932 y(HTTP) g(header) f(to) i(be) f
(sent) g(by) g(the) g(client) g(or) f(requesting) g(serv) o(er) -7
b(.) 21 b(The) f(form) n(at) h(of) f(this) g(header) f(is) i(a) g
(base64) e(encod) n(ing) 396 3040 y(of) h(the) g(assigned) g(sessionid)
g(and) g(kp3) f(v) n(ariables,) g(seperated) h(by) f(a) i(':'.) 396
3189 y(Further) e(security) h(may) g(be) g(obtain) n(ed) h(by) e(using)
h(SSL) h(on) f(the) g(client) g(and) g(serv) o(er) -7
b(.) 21 b(In) f(the) g(future,) f(we) i(may) 396 3297
y(encryp) n(t/descrypt) e(the) i(data) f(on) f(either) h(end,) g(or) g
(at) g(least) h(pro) o(v) n(ide) f(this) h(as) g(an) f(option) n(.) h
(The) f(sessionid) g(and) f(k) o(e) o(y) 396 3405 y(v) n(ariables) h
(will) h(mak) o(e) e(this) i(possible,) f(and) f(relati) n(v) o(ely) g
(secure.) p Fc 396 3693 a(1.1.1.) 28 b(syst) r(em.logi) n(n) p
Fd 396 3850 a(The) 20 b(\002rst) h(reque) n(st) h(a) e(client) g(will) h
(mak) o(e) f(is) h(the) f(system.login) f(method) n(.) i(Here) f(is) h
(a) g(sample) f(of) g(a) g(serv) o(er) f(login) h(pack) o(et) 396
3958 y(in) h(XML-RPC:) p Fb 396 4138 a(<?xml) 44 b(version="1.) n(0"?>)
396 4236 y(<methodCall) n(>) 396 4333 y(<methodName) n(>system.logi) n
(n</methodNam) n(e>) 396 4430 y(<params>) 396 4527 y(<param>) 396
4624 y(<value><str) n(uct>) 396 4721 y(<member><na) n(me>server_na) n
(me</name>) 396 4818 y(<value><str) n(ing>my.host.) n(name</string) n
(></value>) p Black Fa 3842 5278 a(1) p Black 90 rotate
dyy eop
1 0 bop Black 0 TeXcolorgray Black Black 711 140 a Fg(eGr)l(oupW)-8
b(are)57 b(XML-RPC/SO)-10 b(AP)1497 409 y(Methodology)-2
826 y Ff(1.)34 b(System)g(le)n(vel)h(requests)396 1114
y Fe(1.1.)28 b(Login)f(and)h(authentication)396 1271
y Fd(Authentication)18 b(for)i(user)g(logins)g(is)h(handled)e
(internally)g(no)g(dif)n(ferently)f(than)i(for)g(the)g(typical)g
(eGroupW)-7 b(are)19 b(login)396 1379 y(via)h(web)h(bro)n(wser)-5
b(.)19 b(Serv)o(er)g(logins,)h(added)f(for)g(XML-RPC)i(and)f(SO)m(AP)-9
b(,)20 b(are)g(only)g(slightly)f(dif)n(ferent.)g(F)o(or)h(either)396
1487 y(protocol,)e(user)j(and)e(serv)o(er)h(login)f(and)h
(authentication)e(and)h(subsequent)g(requests)h(are)g(handled)f(by)g
(their)396 1595 y(respecti)n(v)o(e)g(serv)o(er)h(apps,)f(xmlrpc.php)f
(and)h(soap.php.)f(A)j(serv)o(er)e(is)i(identi\002ed)f(by)f(a)i(custom)
f(HTTP)g(header)m(,)396 1703 y(without)g(which)f(a)i(normal)e(user)h
(login)f(will)i(be)g(undertak)o(en.)396 1853 y(A)g(client)f(or)g(serv)o
(er)f(sends)i(the)f(appropriate)e(XML-RPC)i(or)g(SO)m(AP)h(pack)o(et)f
(containing)e(host,)i(user)m(,)g(and)f(passw)o(ord)396
1961 y(information)f(to)i(the)h(phpgw)d(serv)o(er)-5
b(.)20 b(The)g(serv)o(er)f(then)h(assigns)g(a)h(sessionid)f(and)g(k)o
(e)o(y)-5 b(,)19 b(which)g(is)j(returned)c(to)i(the)396
2068 y(client)g(in)h(the)f(appropriate)e(format.)396
2218 y(Our)i(current)f(method)g(for)g(authenticating)g(requests)g
(after)h(successful)g(login)g(is)h(via)f(the)g(Authorization:)e(Basic)
396 2326 y(HTTP)i(header)f(to)i(be)f(sent)g(by)g(the)g(client)g(or)f
(requesting)g(serv)o(er)-5 b(.)19 b(The)h(format)f(of)h(this)g(header)f
(is)i(a)g(base64)e(encoding)396 2434 y(of)h(the)g(assigned)g(sessionid)
g(and)g(kp3)f(v)n(ariables,)g(seperated)h(by)f(a)i(':'.)396
2583 y(Further)e(security)h(may)g(be)g(obtained)f(by)g(using)h(SSL)h
(on)f(the)g(client)g(and)g(serv)o(er)-5 b(.)19 b(In)h(the)g(future,)f
(we)i(may)396 2691 y(encrypt/descrypt)c(the)k(data)f(on)f(either)h
(end,)g(or)g(at)g(least)h(pro)o(vide)d(this)j(as)g(an)f(option.)f(The)h
(sessionid)g(and)f(k)o(e)o(y)396 2799 y(v)n(ariables)h(will)h(mak)o(e)e
(this)i(possible,)f(and)f(relati)n(v)o(ely)g(secure.)396
3052 y Fc(1.1.1.)24 b(system.login)396 3202 y Fd(The)c(\002rst)h
(request)f(a)g(client)g(will)h(mak)o(e)f(is)h(the)f(system.login)f
(method.)g(Here)h(is)h(a)g(sample)f(of)g(a)g(serv)o(er)f(login)h(pack)o
(et)396 3310 y(in)h(XML-RPC:)396 3490 y Fb(<?xml)44 b(version="1.0"?>)
396 3587 y(<methodCall>)396 3684 y
(<methodName>system.login</methodName>)396 3781 y(<params>)396
3878 y(<param>)396 3976 y(<value><struct>)396 4073 y
(<member><name>server_name</name>)396 4170 y
(<value><string>my.host.name</string></val)o(ue>)396
4267 y(</member>)396 4364 y(<member><name>username</name>)396
4461 y(<value><string>bubba</string></value>)396 4558
y(</member>)396 4655 y(<member><name>password</name>)396
4753 y(<value><string>gump</string></value>)396 4850
y(</member>)g(</struct></value>)396 4947 y(</param>)396
5044 y(</params>)396 5141 y(</methodCall>)p Black 3842
5638 a Fa(1)p Black eop
%%Page: 2 2
2 1 bop Black 0 TeXcolorgray Black Fa 2326 67 a(php) n(Gr) l(oupW) -8
b(ar) m(e) 20 b(XML-RPC/SO) -5 b(AP) 20 b(Methodo) n(lo) o(gy) p
Black Fb 396 579 a(</member>) 396 676 y(<member><na) n(me>username<) n
(/name>) 396 773 y(<value><str) n(ing>bubba</s) n(tring></valu) n(e>)
396 870 y(</member>) 396 967 y(<member><na) n(me>password<) n(/name>)
396 1065 y(<value><str) n(ing>gump</st) n(ring></value) n(>) 396
1162 y(</member>) 44 b(</struc) n(t></value>) 396 1259
y(</param>) 396 1356 y(</params>) 396 1453 y(</methodCal) n(l>) p
Fd 396 1741 a(And) 20 b(the) g(same) h(in) f(SO) m(AP:) p
Fb 396 1921 a(<?xml) 44 b(version="1.) n(0"?>) 396 2019
y(<SOAP-ENV:E) n(nvelope) 396 2116 y(xmlns:SOAP-) n(ENV="http://) n
(schemas.xmls) n(oap.org/soap) n(/envelope/") f(xmlns:xsi=") n
(http://www.w) n(3.org/1999/X) n(MLSchema-) 396 2213
y(instance") h(xmlns:x) n(sd="http://w) n(ww.w3.org/19) n(99/XMLSchema)
n(") h(xmlns:SOAP) n(-ENC="http:) n(//schemas.xm) n(lsoap.org/so) n
(ap/encoding/) n(") g(xmlns:si=") n(http://soapi) n(nterop.org/x) n
(sd") 396 2310 y(xmlns:ns6=") n(http://soapi) n(nterop.org") e
(SOAP-ENV:enc) n(odingStyle=") n(http://sche) n(mas.xmlsoap.) n
(org/soap/enc) n(oding/">) 396 2407 y(<SOAP-ENV:B) n(ody>) i(<ns6:sy) n
(stem_login>) 396 2504 y(<server_nam) n(e) g(xsi:type=") n
(:string">my.) n(host.name</s) n(erver_name>) 396 2601
y(<username) f(xsi:typ) n(e=":string">) n(bubba</usern) n(ame>) 396
2698 y(<password) g(xsi:typ) n(e=":string">) n(gump</passwo) n(rd>) 396
2796 y(</ns6:syste) n(m_login>) 396 2893 y(</SOAP-ENV:) n(Body>) 396
2990 y(</SOAP-ENV:) n(Envelope>) p Fd 396 3278 a(The) 20
b(same) g(style) h(of) f(pack) o(et) g(w) o(ould) f(be) h(requir) n(ed)
h(for) e(a) i(user/client) e(login.) h(A) g(successful) g(login) g
(should) f(yield) h(the) 396 3386 y(follo) n(wing) f(reply) n(:) p
Fb 396 3566 a(<methodResp) n(onse>) 396 3663 y(<params>) 396
3760 y(<param>) 396 3857 y(<value><str) n(uct>) 396 3955
y(<member><na) n(me>sessionid) n(</name>) 396 4052 y(<value><str) n
(ing>cf5c5534) n(307562fc5791) n(5608377db007) n(</string></v) n(alue>)
396 4149 y(</member>) 396 4246 y(<member><na) n(me>kp3</name) n(>) 396
4343 y(<value><str) n(ing>2fe54daa) n(11c8d5211678) n(8aa3f93cb70e) n
(</string></v) n(alue>) 396 4440 y(</member>) 396 4537
y(</struct></) n(value>) 396 4635 y(</param>) 396 4732
y(</params>) 396 4829 y(</methodRes) n(ponse>) p Black
Fa 3842 5278 a(2) p Black 90 rotate dyy eop
2 1 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8
b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p
Black 396 263 a Fd(And)g(the)g(same)h(in)f(SO)m(AP:)396
444 y Fb(<?xml)44 b(version="1.0"?>)396 541 y(<SOAP-ENV:Envelope)396
638 y(xmlns:SOAP-ENV="http://schemas.xmlsoap.or)o(g/soap)o(/envel)o
(ope/")38 b(xmlns:xsi="http://www.w3.org/1999/XMLSche)o(ma-ins)o
(tance")g(xmlns:xsd="http://www.w3.org/1999/XMLSche)o(ma")h
(xmlns:SOAP-ENC="http://schemas.xmlsoa)o(p.org/)o(soap/e)o(ncodin)o
(g/")g(xmlns:si="http://soapinterop.org/xsd")396 735
y(xmlns:ns6="http://soapinterop.org")g
(SOAP-ENV:encodingStyle="http://schemas.xm)o(lsoap.)o(org/so)o(ap/enc)o
(oding/)o(">)396 832 y(<SOAP-ENV:Body>)k(<ns6:system_login>)396
929 y(<server_name)g(xsi:type=":string">my.host.name</server_)o(name>)
396 1026 y(<username)h(xsi:type=":string">bubba</username>)396
1124 y(<password)g(xsi:type=":string">gump</password>)396
1221 y(</ns6:system_login>)396 1318 y(</SOAP-ENV:Body>)396
1415 y(</SOAP-ENV:Envelope>)396 1703 y Fd(The)20 b(same)g(style)h(of)f
(pack)o(et)g(w)o(ould)f(be)h(required)f(for)g(a)i(user/client)e(login.)
h(A)g(successful)g(login)g(should)f(yield)h(the)396 1811
y(follo)n(wing)f(reply:)396 1991 y Fb(<methodResponse>)396
2088 y(<params>)396 2185 y(<param>)396 2283 y(<value><struct>)396
2380 y(<member><name>sessionid</name>)396 2477 y
(<value><string>cf5c5534307562fc5791560837)o(7db007)o(</stri)o(ng></v)o
(alue>)396 2574 y(</member>)396 2671 y(<member><name>kp3</name>)396
2768 y(<value><string>2fe54daa11c8d52116788aa3f9)o(3cb70e)o(</stri)o
(ng></v)o(alue>)396 2865 y(</member>)396 2962 y(</struct></value>)396
3060 y(</param>)396 3157 y(</params>)396 3254 y(</methodResponse>)396
3542 y Fd(And)h(a)h(f)o(ailed)f(login:)396 3722 y Fb(<methodResponse>)
396 3819 y(<params>)396 3916 y(<param>)396 4014 y(<value><struct>)396
4111 y(<member><name>GOAWAY</name>)396 4208 y
(<value><string>XOXO</string></value>)396 4305 y(</member>)396
4402 y(</struct></value>)396 4499 y(</param>)396 4596
y(</params>)396 4693 y(</methodResponse>)396 4982 y Fd(eqweqw)p
Black 3842 5569 a Fa(2)p Black eop
%%Page: 3 3
3 2 bop Black 0 TeXcolorgray Black Fa 2326 67 a(php) n(Gr) l(oupW) -8
b(ar) m(e) 20 b(XML-RPC/SO) -5 b(AP) 20 b(Methodo) n(lo) o(gy) p
Black Fd 396 770 a(And) g(a) h(f) o(ailed) f(login) n(:) p
Fb 396 950 a(<methodResp) n(onse>) 396 1047 y(<params>) 396
1144 y(<param>) 396 1241 y(<value><str) n(uct>) 396 1339
y(<member><na) n(me>GOAWAY</n) n(ame>) 396 1436 y(<value><str) n
(ing>XOXO</st) n(ring></value) n(>) 396 1533 y(</member>) 396
1630 y(</struct></) n(value>) 396 1727 y(</param>) 396
1824 y(</params>) 396 1921 y(</methodRes) n(ponse>) p
Fd 396 2209 a(eqweqw) p Fc 396 2547 a(1.1.2.) 28 b(syst) r(em.logou) n
(t) p Fd 396 2704 a(Logou) n(t:) p Fb 396 2884 a(<?xml) 44
b(version="1.) n(0"?>) 396 2982 y(<methodCall) n(>) 396
3079 y(<methodName) n(>system.logo) n(ut</methodNa) n(me>) 396
3176 y(<params>) g(<param>) 396 3273 y(<value><str) n(uct>) 396
3370 y(<member><na) n(me>sessionid) n(</name>) 396 3467
y(<value><str) n(ing>ea35cac5) n(3d2c12bd05ca) n(ecd97304478a) n
(</string></v) n(alue>) 396 3564 y(</member>) 396 3662
y(<member><na) n(me>kp3</name) n(>) 396 3759 y(<value><str) n
(ing>4f2b256e) n(0da4e7cbbeba) n(ac9f1fc8ca4a) n(</string></v) n(alue>)
396 3856 y(</member>) 396 3953 y(</struct></) n(value>) 396
4050 y(</param>) 396 4147 y(</params>) 396 4244 y(</methodCal) n(l>) p
Fd 396 4532 a(Logou) n(t) 21 b(w) o(ork) o(ed) n(:) p
Fb 396 4713 a(<methodResp) n(onse>) 396 4810 y(<params>) p
Black Fa 3842 5278 a(3) p Black 90 rotate dyy eop
3 2 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8
b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p
Black 396 72 a Fc(1.1.2.)k(system.logout)396 222 y Fd(Logout:)396
402 y Fb(<?xml)44 b(version="1.0"?>)396 499 y(<methodCall>)396
596 y(<methodName>system.logout</methodName>)396 693
y(<params>)g(<param>)396 791 y(<value><struct>)396 888
y(<member><name>sessionid</name>)396 985 y
(<value><string>ea35cac53d2c12bd05caecd973)o(04478a)o(</stri)o(ng></v)o
(alue>)396 1082 y(</member>)396 1179 y(<member><name>kp3</name>)396
1276 y(<value><string>4f2b256e0da4e7cbbebaac9f1f)o(c8ca4a)o(</stri)o
(ng></v)o(alue>)396 1373 y(</member>)396 1471 y(</struct></value>)396
1568 y(</param>)396 1665 y(</params>)396 1762 y(</methodCall>)396
2050 y Fd(Logout)19 b(w)o(ork)o(ed:)396 2230 y Fb(<methodResponse>)396
2327 y(<params>)396 2424 y(<param>)396 2522 y(<value><struct>)396
2619 y(<member><name>GOODBYE</name>)396 2716 y
(<value><string>XOXO</string></value>)396 2813 y(</member>)396
2910 y(</struct></value>)396 3007 y(</param>)396 3104
y(</params>)396 3202 y(</methodResponse>)-2 3876 y Ff(2.)34
b(Business)h(la)n(y)o(er)f(requests)396 4044 y Fd(Once)20
b(a)h(successful)f(login)f(return)g(pack)o(et)h(has)g(been)g(recei)n(v)
o(ed)e(and)i(sessionid/kp3)f(ha)n(v)o(e)g(been)h(e)o(xtracted,)e(e)n(v)
o(ery)396 4152 y(subsequent)h(pack)o(et)g(sent)h(to)g(the)g(phpgroupw)o
(are)c(serv)o(er)j(must)h(be)g(preceded)e(by)h(an)h(Authorization)d
(header)-5 b(.)19 b(Here)h(is)396 4259 y(a)h(sample)f(header:)396
4440 y Fb(POST)44 b(/phpgroupware/xmlrpc.php)d(HTTP/1.0)396
4537 y(User-Agent:)i(PHP)i(XMLRPC)e(1.0)396 4634 y(Host:)h
(my.local.host)396 4731 y(Authorization:)f(Basic)h
(ZDgxNDIyZDRkYjg5NDEyNGNiMzZlMDhhZTdlYz)o(AxZmY6)o(NTU3Y)o(zkyYjB)o
(mNGE4Z)o(DVlOTU)o(zMzI2Y)o(mU2OTQ)o(yNjM3Y)o(jQ=)396
4828 y(Content-Type:)f(text/xml)396 4925 y(Content-Length:)g(875)p
Black 3842 5569 a Fa(3)p Black eop
%%Page: 4 4
4 3 bop Black 0 TeXcolorgray Black Fa 2326 67 a(php) n(Gr) l(oupW) -8
b(ar) m(e) 20 b(XML-RPC/SO) -5 b(AP) 20 b(Methodo) n(lo) o(gy) p
Black Fb 396 579 a(<param>) 396 676 y(<value><str) n(uct>) 396
773 y(<member><na) n(me>GOODBYE</) n(name>) 396 870 y(<value><str) n
(ing>XOXO</st) n(ring></value) n(>) 396 967 y(</member>) 396
1065 y(</struct></) n(value>) 396 1162 y(</param>) 396
1259 y(</params>) 396 1356 y(</methodRes) n(ponse>) p
Ff -2 2079 a(2.) 39 b(Busines) n(s) h(la) m(y) o(er) f(requ) n(ests) p
Fd 396 2259 a(Once) 20 b(a) h(successful) f(login) f(return) g(pack) o
(et) h(has) g(been) g(recei) n(v) o(e) n(d) g(and) g(sessionid/kp3) f
(ha) n(v) o(e) g(been) h(e) o(xtracte) n(d,) g(e) n(v) o(ery) 396
2367 y(subsequen) n(t) h(pack) m(et) g(sent) f(to) g(the) g(php) n
(group) n(w) o(are) g(serv) o(er) f(must) h(be) g(prec) n(eded) g(by) f
(an) h(Autho) n(rization) f(header) -5 b(.) 19 b(Here) h(is) 396
2475 y(a) h(sample) f(heade) n(r:) p Fb 396 2655 a(POST) 44
b(/phpgroupwar) n(e/xmlrpc.php) f(HTTP/1.0) 396 2752
y(User-Agent:) g(PHP) i(XMLRPC) e(1.0) 396 2849 y(Host:) h(my.local.ho)
n(st) 396 2946 y(Authorizati) n(on:) h(Basic) f(ZDgxNDIy) n
(ZDRkYjg5NDEy) n(NGNiMzZlMDhh) n(ZTdlYzAxZmY6) n(NTU3YzkyYjB) n
(mNGE4ZDVlOTU) n(zMzI2YmU2OTQ) n(yNjM3YjQ=) 396 3044
y(Content-Typ) n(e:) h(text/xml) 396 3141 y(Content-Len) n(gth:) g(875)
p Fd 396 3429 a(The) 20 b(longish) f(string) h(is) h(a) g(base64) e
(encodin) n(g) h(of) g(the) h($sessionid) e(.) i(':') f(.) g($kp3) n(.)
h(F) o(or) f(no) n(w) f(this) i(is) g(our) f(only) f(suppo) n(rted) 396
3537 y(authentica) n(tion) h(method) n(.) h(Addition) n(al) g(metho) n
(ds) g(w) o(ould) f(pro) n(bably) f(also) i(af) n(fect) f(the) g(metho)
n(dCalls.) h(This) f(is) i(certain) n(ly) 396 3645 y(open) d(to) i
(discussion.) e(F) o(ollo) n(wing) g(is) i(a) g(typical) f(requ) n(est)
h(for) f(some) g(con) n(tact) h(data:) p Fb 396 3825
a(<?xml) 44 b(version="1.) n(0"?>) 396 3922 y(<methodCall) n(>) 396
4019 y(<methodName) n(>addressbook) n(.boaddressbo) n(ok.read_entr) n
(ies</methodN) n(ame>) 396 4116 y(<params>) 396 4213
y(<param>) 396 4310 y(<value><str) n(uct>) 396 4408 y(<member><na) n
(me>start</na) n(me>) 396 4505 y(<value><str) n(ing>1</strin) n
(g></value>) 396 4602 y(</member>) 396 4699 y(<member><na) n
(me>limit</na) n(me>) 396 4796 y(<value><str) n(ing>5</strin) n
(g></value>) p Black Fa 3842 5278 a(4) p Black 90 rotate
dyy eop
4 3 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8
b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p
Black 396 72 a Fd(The)g(longish)f(string)h(is)h(a)g(base64)e(encoding)f
(of)i(the)h($sessionid)e(.)i(':')f(.)g($kp3.)f(F)o(or)h(no)n(w)f(this)i
(is)g(our)f(only)f(supported)396 180 y(authentication)f(method.)h
(Additional)g(methods)g(w)o(ould)h(probably)d(also)k(af)n(fect)f(the)g
(methodCalls.)f(This)h(is)i(certainly)396 288 y(open)d(to)i
(discussion.)e(F)o(ollo)n(wing)g(is)i(a)g(typical)f(request)f(for)h
(some)g(contact)f(data:)396 468 y Fb(<?xml)44 b(version="1.0"?>)396
566 y(<methodCall>)396 663 y(<methodName>addressbook.boaddressbook.rea)
o(d_entr)o(ies</m)o(ethodN)o(ame>)396 760 y(<params>)396
857 y(<param>)396 954 y(<value><struct>)396 1051 y
(<member><name>start</name>)396 1148 y
(<value><string>1</string></value>)396 1246 y(</member>)396
1343 y(<member><name>limit</name>)396 1440 y
(<value><string>5</string></value>)396 1537 y(</member>)396
1634 y(<member><name>fields</name>)396 1731 y(<value><struct>)396
1828 y(<member><name>n_given</name>)396 1926 y
(<value><string>n_given</string></value>)396 2023 y(</member>)396
2120 y(<member><name>n_family</name>)396 2217 y
(<value><string>n_family</string></value>)396 2314 y(</member>)396
2411 y(</struct></value>)396 2508 y(</member>)396 2605
y(<member><name>query</name>)396 2703 y
(<value><string></string></value>)396 2800 y(</member>)396
2897 y(<member><name>filter</name>)396 2994 y
(<value><string></string></value>)396 3091 y(</member>)396
3188 y(<member><name>sort</name>)396 3285 y
(<value><string></string></value>)396 3383 y(</member>)396
3480 y(<member><name>order</name>)396 3577 y
(<value><string></string></value>)396 3674 y(</member>)396
3771 y(</struct></value>)396 3868 y(</param>)396 3965
y(</params>)396 4063 y(</methodCall>)396 4351 y Fd(Successful)20
b(response:)396 4531 y Fb(<?xml)44 b(version="1.0"?>)396
4628 y(<methodResponse>)396 4725 y(<params>)396 4822
y(<param>)396 4919 y(<value><struct>)396 5016 y(<member><name>0</name>)
396 5114 y(<value><struct>)p Black 3842 5569 a Fa(4)p
Black eop
%%Page: 5 5
5 4 bop Black 0 TeXcolorgray Black Fa 2326 67 a(php) n(Gr) l(oupW) -8
b(ar) m(e) 20 b(XML-RPC/SO) -5 b(AP) 20 b(Methodo) n(lo) o(gy) p
Black Fb 396 579 a(</member>) 396 676 y(<member><na) n(me>fields</n) n
(ame>) 396 773 y(<value><str) n(uct>) 396 870 y(<member><na) n
(me>n_given</) n(name>) 396 967 y(<value><str) n(ing>n_given<) n
(/string></va) n(lue>) 396 1065 y(</member>) 396 1162
y(<member><na) n(me>n_family<) n(/name>) 396 1259 y(<value><str) n
(ing>n_family) n(</string></v) n(alue>) 396 1356 y(</member>) 396
1453 y(</struct></) n(value>) 396 1550 y(</member>) 396
1647 y(<member><na) n(me>query</na) n(me>) 396 1745 y(<value><str) n
(ing></string) n(></value>) 396 1842 y(</member>) 396
1939 y(<member><na) n(me>filter</n) n(ame>) 396 2036
y(<value><str) n(ing></string) n(></value>) 396 2133
y(</member>) 396 2230 y(<member><na) n(me>sort</nam) n(e>) 396
2327 y(<value><str) n(ing></string) n(></value>) 396
2424 y(</member>) 396 2522 y(<member><na) n(me>order</na) n(me>) 396
2619 y(<value><str) n(ing></string) n(></value>) 396
2716 y(</member>) 396 2813 y(</struct></) n(value>) 396
2910 y(</param>) 396 3007 y(</params>) 396 3104 y(</methodCal) n(l>) p
Fd 396 3393 a(Successful) g(respon) n(se:) p Fb 396 3573
a(<?xml) 44 b(version="1.) n(0"?>) 396 3670 y(<methodResp) n(onse>) 396
3767 y(<params>) 396 3864 y(<param>) 396 3961 y(<value><str) n(uct>) 396
4058 y(<member><na) n(me>0</name>) 396 4155 y(<value><str) n(uct>) 396
4253 y(<member><na) n(me>id</name>) 396 4350 y(<value><str) n
(ing>1</strin) n(g></value>) 396 4447 y(</member>) 396
4544 y(<member><na) n(me>lid</name) n(>) 396 4641 y(<value><str) n
(ing></string) n(></value>) 396 4738 y(</member>) 396
4835 y(<member><na) n(me>tid</name) n(>) p Black Fa 3842
5278 a(5) p Black 90 rotate dyy eop
5 4 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8
b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p
Black 396 72 a Fb(<member><name>id</name>)396 170 y
(<value><string>1</string></value>)396 267 y(</member>)396
364 y(<member><name>lid</name>)396 461 y
(<value><string></string></value>)396 558 y(</member>)396
655 y(<member><name>tid</name>)396 752 y
(<value><string>n</string></value>)396 850 y(</member>)396
947 y(<member><name>owner</name>)396 1044 y
(<value><string>500</string></value>)396 1141 y(</member>)396
1238 y(<member><name>access</name>)396 1335 y
(<value><string>private</string></value>)396 1432 y(</member>)396
1530 y(<member><name>cat_id</name>)396 1627 y
(<value><string>1</string></value>)396 1724 y(</member>)396
1821 y(<member><name>n_given</name>)396 1918 y
(<value><string>Alan</string></value>)396 2015 y(</member>)396
2112 y(</struct></value>)396 2209 y(</member>)396 2307
y(<member><name>1</name>)396 2404 y(<value><struct>)396
2501 y(<member><name>id</name>)396 2598 y
(<value><string>2</string></value>)396 2695 y(</member>)396
2792 y(<member><name>lid</name>)396 2889 y
(<value><string></string></value>)396 2987 y(</member>)396
3084 y(<member><name>tid</name>)396 3181 y
(<value><string>n</string></value>)396 3278 y(</member>)396
3375 y(<member><name>owner</name>)396 3472 y
(<value><string>500</string></value>)396 3569 y(</member>)396
3666 y(<member><name>access</name>)396 3764 y
(<value><string>private</string></value>)396 3861 y(</member>)396
3958 y(<member><name>cat_id</name>)396 4055 y
(<value><string>1</string></value>)396 4152 y(</member>)396
4249 y(<member><name>n_given</name>)396 4346 y
(<value><string>Andy</string></value>)396 4444 y(</member>)396
4541 y(</struct></value>)396 4638 y(</member>)396 4735
y(...)396 5023 y Fd(Unauthorized)e(access)j(attempt)f(returns:)p
Black 3842 5569 a Fa(5)p Black eop
%%Page: 6 6
6 5 bop Black 0 TeXcolorgray Black Fa 2326 67 a(php) n(Gr) l(oupW) -8
b(ar) m(e) 20 b(XML-RPC/SO) -5 b(AP) 20 b(Methodo) n(lo) o(gy) p
Black Fb 396 579 a(<value><str) n(ing>n</strin) n(g></value>) 396
676 y(</member>) 396 773 y(<member><na) n(me>owner</na) n(me>) 396
870 y(<value><str) n(ing>500</str) n(ing></value>) 396
967 y(</member>) 396 1065 y(<member><na) n(me>access</n) n(ame>) 396
1162 y(<value><str) n(ing>private<) n(/string></va) n(lue>) 396
1259 y(</member>) 396 1356 y(<member><na) n(me>cat_id</n) n(ame>) 396
1453 y(<value><str) n(ing>1</strin) n(g></value>) 396
1550 y(</member>) 396 1647 y(<member><na) n(me>n_given</) n(name>) 396
1745 y(<value><str) n(ing>Alan</st) n(ring></value) n(>) 396
1842 y(</member>) 396 1939 y(</struct></) n(value>) 396
2036 y(</member>) 396 2133 y(<member><na) n(me>1</name>) 396
2230 y(<value><str) n(uct>) 396 2327 y(<member><na) n(me>id</name>) 396
2424 y(<value><str) n(ing>2</strin) n(g></value>) 396
2522 y(</member>) 396 2619 y(<member><na) n(me>lid</name) n(>) 396
2716 y(<value><str) n(ing></string) n(></value>) 396
2813 y(</member>) 396 2910 y(<member><na) n(me>tid</name) n(>) 396
3007 y(<value><str) n(ing>n</strin) n(g></value>) 396
3104 y(</member>) 396 3202 y(<member><na) n(me>owner</na) n(me>) 396
3299 y(<value><str) n(ing>500</str) n(ing></value>) 396
3396 y(</member>) 396 3493 y(<member><na) n(me>access</n) n(ame>) 396
3590 y(<value><str) n(ing>private<) n(/string></va) n(lue>) 396
3687 y(</member>) 396 3784 y(<member><na) n(me>cat_id</n) n(ame>) 396
3882 y(<value><str) n(ing>1</strin) n(g></value>) 396
3979 y(</member>) 396 4076 y(<member><na) n(me>n_given</) n(name>) 396
4173 y(<value><str) n(ing>Andy</st) n(ring></value) n(>) 396
4270 y(</member>) 396 4367 y(</struct></) n(value>) 396
4464 y(</member>) 396 4561 y(...) p Fd 396 4850 a(Unautho) n(rized) g
(access) h(attempt) f(retur) n(ns:) p Black Fa 3840 5278
a(6) p Black 90 rotate dyy eop
%%Page: 7 7
7 6 bop Black 0 TeXcolorgray Black Fa 2326 67 a(php) n(Gr) l(oupW) -8
b(ar) m(e) 20 b(XML-RPC/SO) -5 b(AP) 20 b(Methodo) n(lo) o(gy) p
Black Fb 396 579 a(<methodResp) n(onse>) 396 676 y(<params>) 396
773 y(<param>) 396 870 y(<value><str) n(ing>UNAUTHOR) n(IZED</string) n
(></value>) 396 967 y(</param>) 396 1065 y(</params>) 396
1162 y(</methodRes) n(ponse>) p Ff -2 1719 a(3.) 39 b(More) g(to) g
(come) s(...) p Fd 396 1899 a(Documen) n(ting) 20 b(e) n(v) o(ery) f
(single) h(call) h(will) f(be) h(dif) n(\002cu) n(lt,) g(b) n(ut) f
(should) f(be) h(done.) f(In) h(leiu) h(of) e(this,) i(please) f(see) h
(the) 396 2007 y(class.bo{APPN) m(AME}.in) n(c.php) e(\002les) i(in) g
(each) f(app) n(lication/inc) g(directo) n(ry) g(in) h(the) f(php) n
(grou) n(pw) o(are) g(cvs.) g(In) g(this) h(\002le) 396
2115 y(will) g(be) f(a) h(list_metho) n(ds\(\)) f(functio) n(n,) g
(which) g(return) n(s) h(the) f(inform) n(ation) g(to) g(the) h(serv) o
(e) n(r) g(abou) n(t) g(input/o) n(utput) f(structur) n(e) 396
2222 y(for) g(each) g(call.) g(If) g(the) g(\002le) h(does) f(not) g
(ha) n(v) o(e) g(this) g(functio) n(n,) h(then) e(it) i(is) g(not) f
(yet) g(w) o(orkab) n(le) h(via) f(this) h(interf) o(ace.) e(As) i(for)
396 2330 y(the) f(actual) g(function) n(s,) h(the) o(y) e(are) i(also) f
(in) g(this) h(\002le.) g(Genera) n(lly) -5 b(,) 20 b(the) o(y) g(will)
h(all) f(accept) g(associati) n(v) o(e) g(array) f(input) h(and) 396
2438 y(return) f(same,) h(b) n(ut) h(not) e(al) o(w) o(ays.) i(This) f
(code) g(is) h(in) f(\003ux,) g(ha) n(v) o(e) f(fun.) p
Black Fa 3839 5278 a(7) p Black 90 rotate dyy eop
%%Page: 8 8
8 7 bop Black 0 TeXcolorgray Black Fa 2326 67 a(php) n(Gr) l(oupW) -8
b(ar) m(e) 20 b(XML-RPC/SO) -5 b(AP) 20 b(Methodo) n(lo) o(gy) p
Black Black 3842 5278 a(8) p Black 90 rotate dyy eop
6 5 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8
b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p
Black 396 72 a Fb(<methodResponse>)396 170 y(<params>)396
267 y(<param>)396 364 y(<value><string>UNAUTHORIZED</string></val)o
(ue>)396 461 y(</param>)396 558 y(</params>)396 655 y
(</methodResponse>)-2 1164 y Ff(3.)34 b(More)f(to)g(come)r(...)396
1331 y Fd(Documenting)18 b(e)n(v)o(ery)h(single)h(call)h(will)f(be)h
(dif)n(\002cult,)e(b)n(ut)h(should)f(be)h(done.)f(In)h(leiu)h(of)e
(this,)i(please)f(see)h(the)396 1439 y(class.bo{APPN)m(AME}.inc.php)c
(\002les)k(in)g(each)f(application/inc)e(directory)g(in)j(the)f(e)o
(groupw)o(are)d(cvs.)j(In)g(this)h(\002le)396 1547 y(will)g(be)f(a)h
(list_methods\(\))d(function,)g(which)i(returns)f(the)h(information)e
(to)i(the)h(serv)o(er)e(about)g(input/output)f(structure)396
1655 y(for)i(each)g(call.)g(If)g(the)g(\002le)h(does)f(not)g(ha)n(v)o
(e)g(this)g(function,)f(then)g(it)i(is)g(not)f(yet)g(w)o(orkable)f(via)
h(this)h(interf)o(ace.)e(As)i(for)396 1763 y(the)f(actual)g(functions,)
f(the)o(y)g(are)i(also)f(in)g(this)h(\002le.)g(Generally)-5
b(,)18 b(the)o(y)i(will)h(all)f(accept)g(associati)n(v)o(e)g(array)f
(input)h(and)396 1871 y(return)f(same,)h(b)n(ut)h(not)e(al)o(w)o(ays.)i
(This)f(code)g(is)h(in)f(\003ux,)g(ha)n(v)o(e)f(fun.)p
Black 3840 5569 a Fa(6)p Black eop
%%Trailer
end
userdict /end-hook known{end-hook}if

View File

@ -5,14 +5,14 @@
See http://www.lyx.org/ for more information -->
<artheader>
<title>
phpGroupWare XML-RPC/SOAP Methodology
eGroupWare XML-RPC/SOAP Methodology
</title>
<author>
Miles Lott
milosch@phpgroupware.org
(C) 2001-2004 Miles Lott
milos@groupwhere.org
</author>
<date>
August 23, 2001
August 23, 2001 and December 29, 2003
</date>
<para>
additions made September 3, 2001.
@ -30,7 +30,7 @@
Login and authentication
</title>
<para>
Authentication for user logins is handled internally no differently than for the typical phpGroupWare login via web browser. Server logins, added for XML-RPC and SOAP, are only slightly different. For either protocol, user and server login and authentication and subsequent requests are handled by their respective server apps, xmlrpc.php and soap.php. A server is identified by a custom HTTP header, without which a normal user login will be undertaken.
Authentication for user logins is handled internally no differently than for the typical eGroupWare login via web browser. Server logins, added for XML-RPC and SOAP, are only slightly different. For either protocol, user and server login and authentication and subsequent requests are handled by their respective server apps, xmlrpc.php and soap.php. A server is identified by a custom HTTP header, without which a normal user login will be undertaken.
</para>
<para>
A client or server sends the appropriate XML-RPC or SOAP packet containing host, user, and password information to the phpgw server. The server then assigns a sessionid and key, which is returned to the client in the appropriate format.
@ -303,7 +303,7 @@
More to come...
</title>
<para>
Documenting every single call will be difficult, but should be done. In leiu of this, please see the class.bo&lcub;APPNAME&rcub;.inc.php files in each application/inc directory in the phpgroupware cvs. In this file will be a list_methods() function, which returns the information to the server about input/output structure for each call. If the file does not have this function, then it is not yet workable via this interface. As for the actual functions, they are also in this file. Generally, they will all accept associative array input and return same, but not always. This code is in flux, have fun.
Documenting every single call will be difficult, but should be done. In leiu of this, please see the class.bo&lcub;APPNAME&rcub;.inc.php files in each application/inc directory in the egroupware cvs. In this file will be a list_methods() function, which returns the information to the server about input/output structure for each call. If the file does not have this function, then it is not yet workable via this interface. As for the actual functions, they are also in this file. Generally, they will all accept associative array input and return same, but not always. This code is in flux, have fun.
</para>
</sect1>

View File

@ -1,12 +1,12 @@
phpGroupWare XML-RPC/SOAP Methodology
eGroupWare XML-RPC/SOAP Methodology
Miles Lott
(C) 2001-2004 Miles Lott
milosch@phpgroupware.org
milos@groupwhere.org
August 23, 2001
August 23, 2001 and December 29, 2003
additions made September 3, 2001.
@ -18,13 +18,13 @@ system.
1.1 Login and authentication
Authentication for user logins is handled internally no differently
than for the typical phpGroupWare login via web browser.
Server logins, added for XML-RPC and SOAP, are only slightly
different. For either protocol, user and server login and
authentication and subsequent requests are handled by their
respective server apps, xmlrpc.php and soap.php. A server
is identified by a custom HTTP header, without which a normal
user login will be undertaken.
than for the typical eGroupWare login via web browser. Server
logins, added for XML-RPC and SOAP, are only slightly different.
For either protocol, user and server login and authentication
and subsequent requests are handled by their respective
server apps, xmlrpc.php and soap.php. A server is identified
by a custom HTTP header, without which a normal user login
will be undertaken.
A client or server sends the appropriate XML-RPC or SOAP
packet containing host, user, and password information to
@ -462,7 +462,7 @@ Unauthorized access attempt returns:
Documenting every single call will be difficult, but should
be done. In leiu of this, please see the class.bo{APPNAME}.inc.php
files in each application/inc directory in the phpgroupware
files in each application/inc directory in the egroupware
cvs. In this file will be a list_methods() function, which
returns the information to the server about input/output
structure for each call. If the file does not have this

View File

@ -5,7 +5,7 @@
from xmlrpclib import *
import sys
server = Server("http://www.phpgroupware.org/cvsdemo/xmlrpc.php");
server = Server("http://www.egroupware.org/egroupware/xmlrpc.php");
try:
print "Listing methods:\n"