removed some files that don't belong into cvs

This commit is contained in:
Carsten Wolff 2004-03-24 08:56:03 +00:00
parent d29ea406c2
commit 56aa7e6eb3
16 changed files with 0 additions and 1734 deletions

View File

@ -1,6 +0,0 @@
phpgroupware-etemplate (0.9.14-0.RC3.3) unstable; urgency=low
* New release.
- Source is now splitted into modules.
-- Luca - De Whiskey's - De Vitis <luca@debian.org> Mon, 21 May 2001 15:00:56 +0200

View File

@ -1,13 +0,0 @@
Source: phpgroupware-etemplate
Section: web
Priority: optional
Maintainer: Luca - De Whiskey's - De Vitis <luca@debian.org>
Build-Depends: debhelper (>> 3.0.0)
Standards-Version: 3.5.2
Package: phpgroupware-etemplate
Section: web
Architecture: all
Depends: phpgroupware (>= ${Source-Version}), php3-pgsql | php3-cgi-pgsql | php4-pgsql | php3-mysql | php3-cgi-mysql | php4-mysql
Description: The phpGroupWare etemplate module.
This phpGroupWare module provides the Templates and Dialog-Editor.

View File

@ -1,15 +0,0 @@
This package was debianized by Luca - De Whiskey's - De Vitis <luca@debian.org> on
Sat, 29 Jun 2002 17:13:40 +0200
It was downloaded from the CVS repository at subversion.gnu.org. Try:
prompt$ CVSROOT=:pserver:anoncvs@subversions.gnu.org:/cvsroot/phpgroupware
prompt$ CVS_RSH=ssh
prompt$ cvs login
prompt$ cvs get all packages
Upstream Author(s):
Please, see credits.txt, the README file or visit http://apps.phpgroupware.org/
Copyright:
A copy of the GNU General Public License, version 2, can be found in
/usr/share/common-licenses/GPL .

View File

@ -1,74 +0,0 @@
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 by Joey Hess.
#
# This version is for a hypothetical package that builds an
# architecture-dependant package, as well as an architecture-independent
# package.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This is the debhelper compatability version to use.
export DH_COMPAT=3
APP = etemplate
PACKAGE = debian/phpgroupware-$(APP)/usr/share/phpgroupware/$(APP)
PACKAGEDOC = debian/phpgroupware-$(APP)/usr/share/doc/phpgroupware-$(APP)
COPYRIGHT = -iname copyright\* -or -iname license
CHANGELOG = -iname change\*
INSTALL = -iname install
FINDOPT = -type f -not \( -path \*CVS\* -or -path \*debian\* -or -name .cvsignore \)
SPECIAL = -size 0 -or $(INSTALL) -or $(CHANGELOG) -or $(COPYRIGHT) -or -name \*.sgml
STAMPS = -name configure-stamp -or -name build-stamp
APPFILES = -not \( -path \*doc\* -or -path \. -or -name '*.pl' -or -name '*.py' -or $(STAMPS) \)
DOCFILES = -not \( $(SPECIAL) \)
configure: configure-stamp
configure-stamp:
dh_testdir
# No configuration needed.
touch configure-stamp
build: configure-stamp build-stamp
build-stamp:
dh_testdir
# Here should go the commands necessary to build the sgml documentation...
touch build-stamp
clean:
dh_testdir
rm -f build-stamp configure-stamp
rm -f debian/.builded
rm -f debian/files
# Here should go the commands to clean the builded sgml documents.
dh_clean
install: build
dh_testdir
# Install $(APP) files in $(PACKAGE)
find $(FINDOPT) $(APPFILES) \
-exec install -D --mode=644 {} $(PACKAGE)/{} \;
# Install $(APP) doc files in $(PACKAGEDOC)
cd doc ;\
find $(FINDOPT) $(DOCFILES) \
-exec install -D --mode=644 {} ../$(PACKAGEDOC)/{} \;
binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb | tee debian/.builded
binary: binary-indep
.PHONY: build clean binary-indep binary-arch binary install configure

View File

@ -1,6 +0,0 @@
phpgroupware-infolog (0.9.14-0.RC3.3) unstable; urgency=low
* New release.
- Source is now splitted into modules.
-- Luca - De Whiskey's - De Vitis <luca@debian.org> Mon, 21 May 2001 15:00:56 +0200

View File

@ -1,15 +0,0 @@
Source: phpgroupware-infolog
Section: web
Priority: optional
Maintainer: Luca - De Whiskey's - De Vitis <luca@debian.org>
Build-Depends: debhelper (>> 3.0.0)
Standards-Version: 3.5.2
Package: phpgroupware-infolog
Section: web
Architecture: all
Depends: phpgroupware (>= ${Source-Version}), php3-pgsql | php3-cgi-pgsql | php4-pgsql | php3-mysql | php3-cgi-mysql | php4-mysql
Description: The phpGroupWare infolog applcation
This phpGroupWare module allows to track ongoing and previous support
requests, phone calls, and other customer relations.

View File

@ -1,15 +0,0 @@
This package was debianized by Luca - De Whiskey's - De Vitis <luca@debian.org> on
Sat, 29 Jun 2002 17:13:40 +0200
It was downloaded from the CVS repository at subversion.gnu.org. Try:
prompt$ CVSROOT=:pserver:anoncvs@subversions.gnu.org:/cvsroot/phpgroupware
prompt$ CVS_RSH=ssh
prompt$ cvs login
prompt$ cvs get all packages
Upstream Author(s):
Please, see credits.txt, the README file or visit http://apps.phpgroupware.org/
Copyright:
A copy of the GNU General Public License, version 2, can be found in
/usr/share/common-licenses/GPL .

View File

@ -1,74 +0,0 @@
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 by Joey Hess.
#
# This version is for a hypothetical package that builds an
# architecture-dependant package, as well as an architecture-independent
# package.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This is the debhelper compatability version to use.
export DH_COMPAT=3
APP = infolog
PACKAGE = debian/phpgroupware-$(APP)/usr/share/phpgroupware/$(APP)
PACKAGEDOC = debian/phpgroupware-$(APP)/usr/share/doc/phpgroupware-$(APP)
COPYRIGHT = -iname copyright\* -or -iname license
CHANGELOG = -iname change\*
INSTALL = -iname install
FINDOPT = -type f -not \( -path \*CVS\* -or -path \*debian\* -or -name .cvsignore \)
SPECIAL = -size 0 -or $(INSTALL) -or $(CHANGELOG) -or $(COPYRIGHT) -or -name \*.sgml
STAMPS = -name configure-stamp -or -name build-stamp
APPFILES = -not \( -path \*doc\* -or -path \. -or -name '*.pl' -or -name '*.py' -or $(STAMPS) \)
DOCFILES = -not \( $(SPECIAL) \)
configure: configure-stamp
configure-stamp:
dh_testdir
# No configuration needed.
touch configure-stamp
build: configure-stamp build-stamp
build-stamp:
dh_testdir
# Here should go the commands necessary to build the sgml documentation...
touch build-stamp
clean:
dh_testdir
rm -f build-stamp configure-stamp
rm -f debian/.builded
rm -f debian/files
# Here should go the commands to clean the builded sgml documents.
dh_clean
install: build
dh_testdir
# Install $(APP) files in $(PACKAGE)
find $(FINDOPT) $(APPFILES) \
-exec install -D --mode=644 {} $(PACKAGE)/{} \;
# Install $(APP) doc files in $(PACKAGEDOC)
cd doc ;\
find $(FINDOPT) $(DOCFILES) \
-exec install -D --mode=644 {} ../$(PACKAGEDOC)/{} \;
binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb | tee debian/.builded
binary: binary-indep
.PHONY: build clean binary-indep binary-arch binary install configure

View File

@ -1,403 +0,0 @@
#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 218
\textclass docbook
\language english
\inputencoding auto
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default
\layout Title
Proposal for a Common Groupware Interface Standard
\layout Author
by Miles Lott <milos@groupwhere.org>
\layout Date
September 13, 2001 and December 29, 2003
\layout Standard
\begin_inset LatexCommand \tableofcontents{}
\end_inset
\layout Section
Scope
\layout Standard
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.
\layout Standard
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 themselve
s.
\layout Standard
Examples will be given for implementations in XML-RPC, since this standard
is relatively fixed and open.
\layout Standard
This document does not provide recommendations for the underlying access
control system which would allow or deny a particular action.
\layout Standard
Also not discussed here is login and authorization to be used for initial
access to a service provider.
\layout Section
The Services
\layout Subsection
Overview
\layout Standard
There are a few common services types that will be needed for minimum useability
of a groupware server or application.
They are:
\layout Itemize
Contacts
\layout Itemize
Schedule
\layout Itemize
Notes
\layout Itemize
Todo
\layout Standard
These services are represented already in places such as existing groupware
client-server applications and also in the PalmOS basic-4 buttons and applicati
ons.
Different systems may have different names for these services internally,
e.g.
Contacts - addresses, addressbook, people, Schedule - calendar, agenda,
meetings.
\layout Standard
Within each of these services are some common methods that would be called
to store, retreive, or update data:
\layout Itemize
read_list
\layout Itemize
read
\layout Itemize
save
\layout Itemize
delete
\layout Subsection
Detail
\layout Subsubsection
Contacts
\layout Standard
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.
\layout Standard
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 communicat
ions:
\layout Itemize
read_list
\layout Standard
This method is used to list contacts, with or without limits, filters, or
search criteria.
In this way it can be used for simple lists or to search for contact records
and their identifiers.
The optional search criteria includes:
\layout Enumerate
start - Start at this identifier (integer: default 0)
\layout Enumerate
limit - Limit to this number of records returned(integer: unlimited by default)
\layout Enumerate
fieldlist - limit to showing only these fields (array: default to identifier,
owner identifier, possibly firstname and lastname)
\layout Enumerate
filter - Show records that are public or private only, or other system-specific
filters, e.g group or company(string: default '')
\layout Enumerate
query - Search internal fieldlist for a value (string: default '')
\layout Standard
The return for this method includes:
\layout Enumerate
count of number of records returned(integer)
\layout Enumerate
array consisting of: array: identifier => (array: fieldlist key => value
pairs)
\layout Itemize
read
\layout Standard
Once the identifier for a single contact record is known, the contact may
be read for more detail using this method.
This takes two parameters:
\layout Enumerate
identifier - (integer: no default)
\layout Enumerate
fieldlist - limit to showing only these fields (array: default to identifier,
owner identifier, possibly firstname and lastname)
\layout Standard
And returns:
\layout Enumerate
array consisting of: array: identifier => (array: fieldlist key => value
pairs)
\layout Itemize
save
\layout Standard
This is a method used to save an existing record or create a new one.
If the identifier for an existing record is not passed, a new entry will
be created.
\layout Itemize
delete
\layout Standard
This will allow deletion of a record by passing its identifier.
\layout Subsubsection
Schedule
\layout Subsubsection
Notes
\layout Subsubsection
Todo
\layout Subsection
Examples in XML-RPC
\layout Standard
Query the contacts service for read_list, using only start and limit to
grab the first 5 records, starting with identifier 1.
Additionally, return only the firstname and lastname fields n_given and
n_family (firstname and lastname in pseudo vcard format):
\layout Code
<methodCall>
\layout Code
<methodName>service.contacts.read_list</methodName>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><struct>
\layout Code
<member><name>start</name>
\layout Code
<value><string>1</string></value>
\layout Code
</member>
\layout Code
<member><name>limit</name>
\layout Code
<value><string>5</string></value>
\layout Code
</member>
\layout Code
<member><name>fields</name>
\layout Code
<value><struct>
\layout Code
<member><name>n_given</name>
\layout Code
<value><string>n_given</string></value>
\layout Code
</member>
\layout Code
<member><name>n_family</name>
\layout Code
<value><string>n_family</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</member>
\layout Code
<member><name>query</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
<member><name>filter</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodCall>
\layout Section
Conclusion
\layout Standard
This document outlined the following services and methods:
\layout Subsection
Contacts:
\layout Itemize
service.contacts.read_list([search criteria])
\layout Itemize
service.contacts.read(identifier,[fieldlist])
\layout Itemize
service.contacts.save(fields)
\layout Itemize
service.contacts.delete(identifier)
\layout Subsection
Schedule:
\layout Itemize
service.schedule.read_list([search criteria])
\layout Itemize
service.schedule.read(identifier,[fieldlist])
\layout Itemize
service.schedule.save(fields)
\layout Itemize
service.schedule.delete(identifier)
\layout Subsection
Notes:
\layout Itemize
service.notes.read_list([search criteria])
\layout Itemize
service.notes.read(identifier,[fieldlist])
\layout Itemize
service.notes.save(fields)
\layout Itemize
service.notes.delete(identifier)
\layout Subsection
Todo:
\layout Itemize
service.todo.read_list(search criteria)
\layout Itemize
service.todo.read(identifer,[fieldlist])
\layout Itemize
service.todo.save(fields)
\layout Itemize
service.todo.delete(identifier)
\the_end

View File

@ -1,713 +0,0 @@
#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 218
\textclass docbook
\language english
\inputencoding auto
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default
\layout Title
phpGroupWare XML-RPC/SOAP Methodology
\layout Author
Miles Lott
\layout Author
milosch@phpgroupware.org
\layout Date
August 23, 2001
\layout Standard
additions made September 3, 2001.
\layout Standard
This document is very preliminary, but describes a working system.
\layout Section
System level requests
\layout Subsection
Login and authentication
\layout Standard
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.
\layout Standard
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.
\layout Standard
Our current method for authenticating requests after successful login is
via the Authorization: Basic HTTP header to be sent by the client or requesting
server.
The format of this header is a base64 encoding of the assigned sessionid
and kp3 variables, seperated by a ':'.
\layout Standard
Further security may be obtained by using SSL on the client and server.
In the future, we may encrypt/descrypt the data on either end, or at least
provide this as an option.
The sessionid and key variables will make this possible, and relatively
secure.
\layout Subsubsection
system.login
\layout Standard
The first request a client will make is the system.login method.
Here is a sample of a server login packet in XML-RPC:
\layout Code
<?xml version="1.0"?>
\layout Code
<methodCall>
\layout Code
<methodName>system.login</methodName>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><struct>
\layout Code
<member><name>server_name</name>
\layout Code
<value><string>my.host.name</string></value>
\layout Code
</member>
\layout Code
<member><name>username</name>
\layout Code
<value><string>bubba</string></value>
\layout Code
</member>
\layout Code
<member><name>password</name>
\layout Code
<value><string>gump</string></value>
\layout Code
</member> </struct></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodCall>
\layout Standard
And the same in SOAP:
\layout Code
<?xml version="1.0"?>
\layout Code
<SOAP-ENV:Envelope
\layout Code
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.
org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:si="http://soapi
nterop.org/xsd"
\layout Code
xmlns:ns6="http://soapinterop.org" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.o
rg/soap/encoding/">
\layout Code
<SOAP-ENV:Body> <ns6:system_login>
\layout Code
<server_name xsi:type=":string">my.host.name</server_name>
\layout Code
<username xsi:type=":string">bubba</username>
\layout Code
<password xsi:type=":string">gump</password>
\layout Code
</ns6:system_login>
\layout Code
</SOAP-ENV:Body>
\layout Code
</SOAP-ENV:Envelope>
\layout Standard
The same style of packet would be required for a user/client login.
A successful login should yield the following reply:
\layout Code
<methodResponse>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><struct>
\layout Code
<member><name>sessionid</name>
\layout Code
<value><string>cf5c5534307562fc57915608377db007</string></value>
\layout Code
</member>
\layout Code
<member><name>kp3</name>
\layout Code
<value><string>2fe54daa11c8d52116788aa3f93cb70e</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodResponse>
\layout Standard
And a failed login:
\layout Code
<methodResponse>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><struct>
\layout Code
<member><name>GOAWAY</name>
\layout Code
<value><string>XOXO</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodResponse>
\layout Standard
eqweqw
\layout Subsubsection
system.logout
\layout Standard
Logout:
\layout Code
<?xml version="1.0"?>
\layout Code
<methodCall>
\layout Code
<methodName>system.logout</methodName>
\layout Code
<params> <param>
\layout Code
<value><struct>
\layout Code
<member><name>sessionid</name>
\layout Code
<value><string>ea35cac53d2c12bd05caecd97304478a</string></value>
\layout Code
</member>
\layout Code
<member><name>kp3</name>
\layout Code
<value><string>4f2b256e0da4e7cbbebaac9f1fc8ca4a</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodCall>
\layout Standard
Logout worked:
\layout Code
<methodResponse>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><struct>
\layout Code
<member><name>GOODBYE</name>
\layout Code
<value><string>XOXO</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodResponse>
\layout Section
Business layer requests
\layout Standard
Once a successful login return packet has been received and sessionid/kp3
have been extracted, every subsequent packet sent to the phpgroupware server
must be preceded by an Authorization header.
Here is a sample header:
\layout Code
POST /phpgroupware/xmlrpc.php HTTP/1.0
\layout Code
User-Agent: PHP XMLRPC 1.0
\layout Code
Host: my.local.host
\layout Code
Authorization: Basic ZDgxNDIyZDRkYjg5NDEyNGNiMzZlMDhhZTdlYzAxZmY6NTU3YzkyYjBmNGE
4ZDVlOTUzMzI2YmU2OTQyNjM3YjQ=
\layout Code
Content-Type: text/xml
\layout Code
Content-Length: 875
\layout Standard
The longish string is a base64 encoding of the $sessionid .
':' .
$kp3.
For now this is our only supported authentication method.
Additional methods would probably also affect the methodCalls.
This is certainly open to discussion.
Following is a typical request for some contact data:
\layout Code
<?xml version="1.0"?>
\layout Code
<methodCall>
\layout Code
<methodName>addressbook.boaddressbook.read_entries</methodName>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><struct>
\layout Code
<member><name>start</name>
\layout Code
<value><string>1</string></value>
\layout Code
</member>
\layout Code
<member><name>limit</name>
\layout Code
<value><string>5</string></value>
\layout Code
</member>
\layout Code
<member><name>fields</name>
\layout Code
<value><struct>
\layout Code
<member><name>n_given</name>
\layout Code
<value><string>n_given</string></value>
\layout Code
</member>
\layout Code
<member><name>n_family</name>
\layout Code
<value><string>n_family</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</member>
\layout Code
<member><name>query</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
<member><name>filter</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
<member><name>sort</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
<member><name>order</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodCall>
\layout Standard
Successful response:
\layout Code
<?xml version="1.0"?>
\layout Code
<methodResponse>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><struct>
\layout Code
<member><name>0</name>
\layout Code
<value><struct>
\layout Code
<member><name>id</name>
\layout Code
<value><string>1</string></value>
\layout Code
</member>
\layout Code
<member><name>lid</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
<member><name>tid</name>
\layout Code
<value><string>n</string></value>
\layout Code
</member>
\layout Code
<member><name>owner</name>
\layout Code
<value><string>500</string></value>
\layout Code
</member>
\layout Code
<member><name>access</name>
\layout Code
<value><string>private</string></value>
\layout Code
</member>
\layout Code
<member><name>cat_id</name>
\layout Code
<value><string>1</string></value>
\layout Code
</member>
\layout Code
<member><name>n_given</name>
\layout Code
<value><string>Alan</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</member>
\layout Code
<member><name>1</name>
\layout Code
<value><struct>
\layout Code
<member><name>id</name>
\layout Code
<value><string>2</string></value>
\layout Code
</member>
\layout Code
<member><name>lid</name>
\layout Code
<value><string></string></value>
\layout Code
</member>
\layout Code
<member><name>tid</name>
\layout Code
<value><string>n</string></value>
\layout Code
</member>
\layout Code
<member><name>owner</name>
\layout Code
<value><string>500</string></value>
\layout Code
</member>
\layout Code
<member><name>access</name>
\layout Code
<value><string>private</string></value>
\layout Code
</member>
\layout Code
<member><name>cat_id</name>
\layout Code
<value><string>1</string></value>
\layout Code
</member>
\layout Code
<member><name>n_given</name>
\layout Code
<value><string>Andy</string></value>
\layout Code
</member>
\layout Code
</struct></value>
\layout Code
</member>
\layout Code
...
\layout Standard
Unauthorized access attempt returns:
\layout Code
<methodResponse>
\layout Code
<params>
\layout Code
<param>
\layout Code
<value><string>UNAUTHORIZED</string></value>
\layout Code
</param>
\layout Code
</params>
\layout Code
</methodResponse>
\layout Section
More to come...
\layout Standard
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.
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.
\the_end

Binary file not shown.

View File

@ -1,6 +0,0 @@
phpgroupware-setup (0.9.14-0.RC3.3) unstable; urgency=low
* New release.
- Source is now splitted into modules.
-- Luca - De Whiskey's - De Vitis <luca@debian.org> Mon, 21 May 2001 15:00:56 +0200

View File

@ -1,15 +0,0 @@
Source: phpgroupware-setup
Section: web
Priority: optional
Maintainer: Luca - De Whiskey's - De Vitis <luca@debian.org>
Build-Depends: debhelper (>> 3.0.0)
Standards-Version: 3.5.2
Package: phpgroupware-setup
Section: web
Architecture: all
Depends: phpgroupware (>= ${Source-Version}), php3-pgsql | php3-cgi-pgsql | php4-pgsql | php3-mysql | php3-cgi-mysql | php4-mysql
Description: The phpGroupWare setup III module
This phpGroupWare module allows the system administrators to manage the
wole set of modules.

View File

@ -1,15 +0,0 @@
This package was debianized by Luca - De Whiskey's - De Vitis <luca@debian.org> on
Sat, 29 Jun 2002 17:13:40 +0200
It was downloaded from the CVS repository at subversion.gnu.org. Try:
prompt$ CVSROOT=:pserver:anoncvs@subversions.gnu.org:/cvsroot/phpgroupware
prompt$ CVS_RSH=ssh
prompt$ cvs login
prompt$ cvs get all packages
Upstream Author(s):
Please, see credits.txt, the README file or visit http://apps.phpgroupware.org/
Copyright:
A copy of the GNU General Public License, version 2, can be found in
/usr/share/common-licenses/GPL .

View File

@ -1,74 +0,0 @@
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 by Joey Hess.
#
# This version is for a hypothetical package that builds an
# architecture-dependant package, as well as an architecture-independent
# package.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This is the debhelper compatability version to use.
export DH_COMPAT=3
APP = setup
PACKAGE = debian/phpgroupware-$(APP)/usr/share/phpgroupware/$(APP)
PACKAGEDOC = debian/phpgroupware-$(APP)/usr/share/doc/phpgroupware-$(APP)
COPYRIGHT = -iname copyright\* -or -iname license
CHANGELOG = -iname change\*
INSTALL = -iname install
FINDOPT = -type f -not \( -path \*CVS\* -or -path \*debian\* -or -name .cvsignore \)
SPECIAL = -size 0 -or $(INSTALL) -or $(CHANGELOG) -or $(COPYRIGHT) -or -name \*.sgml
STAMPS = -name configure-stamp -or -name build-stamp
APPFILES = -not \( -path \*doc\* -or -path \. -or -name '*.pl' -or -name '*.py' -or $(STAMPS) \)
DOCFILES = -not \( $(SPECIAL) \)
configure: configure-stamp
configure-stamp:
dh_testdir
# No configuration needed.
touch configure-stamp
build: configure-stamp build-stamp
build-stamp:
dh_testdir
# Here should go the commands necessary to build the sgml documentation...
touch build-stamp
clean:
dh_testdir
rm -f build-stamp configure-stamp
rm -f debian/.builded
rm -f debian/files
# Here should go the commands to clean the builded sgml documents.
dh_clean
install: build
dh_testdir
# Install $(APP) files in $(PACKAGE)
find $(FINDOPT) $(APPFILES) \
-exec install -D --mode=644 {} $(PACKAGE)/{} \;
# Install $(APP) doc files in $(PACKAGEDOC)
cd doc ;\
find $(FINDOPT) $(DOCFILES) \
-exec install -D --mode=644 {} ../$(PACKAGEDOC)/{} \;
binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb | tee debian/.builded
binary: binary-indep
.PHONY: build clean binary-indep binary-arch binary install configure

View File

@ -1,290 +0,0 @@
<?php
/**************************************************************************\
* phpGroupWare xmlrpc server *
* http://www.phpgroupware.org *
* This file written by Joseph Engo <jengo@phpgroupware.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$ */
// NOTE! This file is still in the experimental stages, use at your own risk!
// The only current documentation for it is the code and the comments
// A document explaining its usage should be done shortly
// PLEASE, do *NOT* make any changes to this file without talking to me
// directly first. Until I get it fully undercontrol.
// There might be possiable security holes in this, I haven't fully tested it
// (jengo)
exit;
$GLOBALS['phpgw_info'] = array();
$GLOBALS['phpgw_info']['flags'] = array(
'currentapp' => 'login',
'noheader' => True,
'disable_Template_class' => True
);
include('header.inc.php');
// If XML-RPC isn't enabled in PHP, return an XML-RPC response stating so
if (! function_exists('xmlrpc_server_create'))
{
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
echo "<methodResponse>\n";
echo "<fault>\n";
echo " <value>\n";
echo " <struct>\n";
echo " <member>\n";
echo " <name>faultString</name>\n";
echo " <value>\n";
echo " <string>XML-RPC support NOT enabled in PHP installation</string>\n";
echo " </value>\n";
echo " </member>\n";
echo " <member>\n";
echo " <name>faultCode</name>\n";
echo " <value>\n";
echo " <int>1005</int>\n";
echo " </value>\n";
echo " </member>\n";
echo " </struct>\n";
echo " </value>\n";
echo "</fault>\n";
echo "</methodResponse>\n";
exit;
}
// Return all PHP errors as faults
$GLOBALS['xmlrpc_server'] = xmlrpc_server_create();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
set_error_handler('xmlrpc_custom_error');
$headers = getallheaders();
if (ereg('Basic',$headers['Authorization']))
{
$tmp = $headers['Authorization'];
$tmp = ereg_replace(' ','',$tmp);
$tmp = ereg_replace('Basic','',$tmp);
$auth = base64_decode(trim($tmp));
list($sessionid,$kp3) = split(':',$auth);
if ($GLOBALS['phpgw']->session->verify($sessionid,$kp3))
{
$GLOBALS['xmlrpc_server'] = xmlrpc_server_create();
$request_xml = $HTTP_RAW_POST_DATA;
// Find out what method they are calling
// This function is odd, you *NEED* to assign the results
// to a value, or $method is never returned. (jengo)
$null = xmlrpc_decode_request($request_xml, &$method);
$GLOBALS['phpgw']->session->xmlrpc_method_called = $method;
$GLOBALS['phpgw']->session->update_dla();
// Check permissions and load the class, register all methods
// for that class, and execute it
list($app,$class,$func) = explode('.',$method);
if ($method == 'system.logout' || $GLOBALS['phpgw_info']['user']['apps'][$app] || $app == 'phpgwapi')
{
$GLOBALS['obj'] = CreateObject($app . '.' . $class);
xmlrpc_server_register_method($xmlrpc_server,sprintf('%s.%s.%s',$app,$class,'listMethods'),'xmlrpc_list_methods');
xmlrpc_server_register_method($xmlrpc_server,sprintf('%s.%s.%s',$app,$class,'describeMethods'),xmlrpc_describe_methods);
xmlrpc_server_register_method($xmlrpc_server,'system.logout','xmlrpc_logout');
while (list(,$new_method) = @each($obj->xmlrpc_methods))
{
$full_method_name = sprintf('%s.%s.%s',$app,$class,$new_method['name']);
xmlrpc_server_register_method($xmlrpc_server,$full_method_name,'xmlrpc_call_wrapper');
// The following function is listed as being in the API, but doesn't actually exisit.
// This is more of a mental note to track down its exisitence
//xmlrpc_server_set_method_description($xmlrpc_server,$full_method_name,$new_method);
}
}
else if ($method != 'system.listMethods' && $method != 'system.describeMethods')
{
xmlrpc_error(1001,'Access not permitted');
}
echo xmlrpc_server_call_method($xmlrpc_server,$request_xml,'');
xmlrpc_server_destroy($xmlrpc_server);
}
else
{
// Session is invailed
xmlrpc_error(1001,'Session expired');
}
}
else
{
// First, create a single method being system.login
// If they don't request this, then just return a failed session error
$xmlrpc_server = xmlrpc_server_create();
$request_xml = $HTTP_RAW_POST_DATA;
// Find out what method they are calling
// This function is odd, you *NEED* to assign the results
// to a value, or $method is never returned. (jengo)
$null = xmlrpc_decode_request($request_xml, &$method);
if ($method == 'system.login')
{
xmlrpc_server_register_method($xmlrpc_server,'system.login','xmlrpc_login');
echo xmlrpc_server_call_method($xmlrpc_server,$request_xml,'');
xmlrpc_server_destroy($xmlrpc_server);
exit;
}
else
{
// They didn't request system.login and they didn't pass sessionid or
// kp3, this is an invailed session (The session could have also been killed or expired)
xmlrpc_error(1001,'Session expired');
}
}
// When PHP returns an error, return that error with a fault instead of
// HTML with will make most parsers fall apart
function xmlrpc_custom_error($error_number, $error_string, $filename, $line, $vars)
{
if (error_reporting() & $error_number)
{
$error_string .= sprintf("\nFilename: %s\nLine: %s",$filename,$line);
xmlrpc_error(1005,$error_string);
}
}
// This will create an XML-RPC error
// FIXME! This needs to be expanded to handle PHP errors themselfs
// it will make debugging easier
function xmlrpc_error($error_number, $error_string)
{
$values = array(
'faultString' => $error_string,
'faultCode' => $error_number
);
echo xmlrpc_encode_request(NULL,$values);
xmlrpc_server_destroy($GLOBALS['xmlrpc_server']);
exit;
}
// This will dynamicly create the avaiable methods for each class
function xmlrpc_list_methods($method)
{
list($app,$class,$func) = explode('.',$method);
$methods[] = 'system.login';
$methods[] = 'system.logout';
$methods[] = $method;
$methods[] = $app . '.' . $class . 'describeMethods';
for ($i=0; $i<count($GLOBALS['obj']->xmlrpc_methods); $i++)
{
$methods[] = $GLOBALS['obj']->xmlrpc_methods[$i]['name'];
}
return $methods;
}
function xmlrpc_describe_methods($method)
{
list($app,$class,$func) = explode('.',$method);
// FIXME! Add the missing pre-defined methods, example: system.login
for ($i=0; $i<count($GLOBALS['obj']->xmlrpc_methods); $i++)
{
$methods[] = $GLOBALS['obj']->xmlrpc_methods[$i];
}
return $methods;
}
// I know everyone hates wrappers, but this is the best way this can be done
// The XML-RPC functions pass method_name as the first parameter, which is
// unacceptable.
// Another reason for this, is it might be possiable to pass the sessionid
// and kp3 instead of using HTTP_AUTH features.
// Would be a nice workaround for librarys that don't support it, as its
// not in the XML-RPC spec.
function xmlrpc_call_wrapper($method_name, $parameters)
{
$a = explode('.',$method_name);
if (count($parameters) == 0)
{
$return = $GLOBALS['obj']->$a[2]();
}
else if (count($parameters) == 1)
{
$return = $GLOBALS['obj']->$a[2]($parameters[0]);
}
else
{
for ($i=0; $i<count($parameters); $i++)
{
$p[] = '$parameters[' . $i . ']';
}
eval('$return = $GLOBALS[\'obj\']->$a[2](' . implode(',',$p) . ');');
}
// This needs to be expanded and more fully tested
if (gettype($return) == 'NULL')
{
return xmlrpc_error(1002,'No return value detected');
}
else
{
return $return;
}
}
// The following are common functions used ONLY by XML-RPC
function xmlrpc_login($method_name, $parameters)
{
$p = $parameters[0];
if ($p['domain'])
{
$username = $p['username'] . '@' . $p['domain'];
}
else
{
$username = $p['username'];
}
$sessionid = $GLOBALS['phpgw']->session->create($username,$p['password'],'text');
$kp3 = $GLOBALS['phpgw']->session->kp3;
$domain = $GLOBALS['phpgw']->session->account_domain;
if ($sessionid && $kp3)
{
return array(
'sessionid' => $sessionid,
'kp3' => $kp3,
'domain' => $domain
);
}
else
{
xmlrpc_error(1001,'Login failed');
}
}
function xmlrpc_logout($method, $parameters)
{
// We have already verified the session upon before this method is even created
// As long as nothing happens upon, its safe to destroy the session without
// fear of it being a hijacked session
$GLOBALS['phpgw']->session->destroy($GLOBALS['phpgw']->session->sessionid,$GLOBALS['phpgw']->session->kp3);
return True;
}