The Xads protocol and its phpXads implementation
This is an initial draft. I am putting these together to generate feedback
about my ideas. I want to know if there would
be a need for such things, what are the weak and strong points, etc. So do
not hesitate to send me your comments.
What is Xads?
Xads is an XML-RPC based protocol aiming
at Administration of Distributed
System. The goal is to provide a framework allowing one part of a network to
remote procedure call to another part of the network in order to get a
Intended audience of this document
This document is intended for developers responsible of system administration.
What are Xads main goals?
- Ease/automate administration of heterogeneous servers.
- Provide detailed specifications to help building compatible Xads
components under different platforms.
- Be easily extensible.
- Be suitable for simple and very complex tasks.
- Minimize security risks and abuse through encryption and authentication
How does it works?
Currently, I believe there should be 3 main components in a Xads system:
- Xads Client
The client is the part that requests a task to be performed. It is never in
direct communication with the server itself, all requests
go through the agents manager. There can exist many different clients
administering the same set of servers through the manager. These clients
can take many forms. A client could be a script on a website requesting the
creation of an email account when a user registers, a complex
end-user control panel in a web hosting environment, a GUI allowing point
and click administration of a server farm, etc. The interesting
part is that many different clients can co-exist and administer the same
things, allowing an administrator to use a GUI client to manually fix
a problem caused by a bug in an automated script for example.
- Xads Central Agents Manager
The agents manager is in communication with both the clients and the server
agents. It holds the information about the various services offered
by the server agents. It informs the client of the available services.
Depending on the services it handles, it can hold large amount of information
in its database. For example, it can maintain the list of all the mail
accounts for a specific mail service offered by a server agent. The client can
request information about these services and request to have modifications
made to them. In the second case, the request will be made available
to the server which will accept or deny to perform it. If it accepts to
perform it, it will inform its manager when it is done. The manager will mark
the request as completed.
- Xads server agent
The server agent runs on each administered server. Its job is to perform the
task the Agents Manager asks it. It handles all the services offered
on the machine it is running, for example the administration of web, mail,
ftp servers as well as system accounts, etc. Complex agents can also
monitor the resources used by each services and report this to its agent
manager. A client will then be able to retrieve this information from
the agents manager and display it to somebody, or charge a web-hosting
client for overage use, notifiy an administrator that a free-mail user
is using too much resources or simply mail usage report stats the the user.
There are a lot of possibilities.
- Xads Services
A service is offered by a server agent, for example a user account on a unix
server. There can exist many implementation of the same service
to suit specific needs. For example one might need to create its own user
account creation and administration service implementation because it
needs to create the user accounts in a very specific way or to collect and
report specific information on the resource usages of each user accounts. The
various implementations of Xads should allow easy extensibility to new
services. For example, the planned PHP
phpXads, will allow modules to be created for the client library, the agents
manager and the server agent for each services, which will allow easy
customizations and creation of new modules.
Status of Xads and phpXads
We are currently in the initial planning stage. If you are interested in
helping with the development or if you have ideas to share, feel free to
contact me: firstname.lastname@example.org.