[Pdns-users] PHP API - $500 Sponsorship Offered

Nicholas Williams nicholas at nicholaswilliams.net
Tue Sep 1 04:40:33 UTC 2009

I've been considering tackling this for some time but my major problem 
is that I only have production servers and don't have a good dev server 
for testing stuff. Your $500 peaks my interest more because I could get 
that testing server and put it to good use testing this and some 
PHP/Pear projects I'm starting to work on, among other things.

I think one of the most important necessities in a project like this is 
it needs to be very configurable and (like you said) extensible. 
Organizations could use this in many different ways: as a standalone 
application, plugged into their community/corporate website, or part of 
a third-party application. It needs to be capable of all of these things 
while not actually worrying about the implementation of these things. It 
should, as you said, come out of the box able to support the MySQL and 
PGSQL backends, but it shouldn't be limited to those nor even limited to 
SQL-based backends. It should be extensible for any backend.

It's conceivable (possibly desirable) that this could eventually become 
a PEAR extension, but I think that detail should be left for a later time.

I've personally written custom PDNS/MySQL PHP management interfaces for 
three different organizations, so I'm very familiar with what it 
entails. I do hereby "sign up," so to speak.

Here's a general idea of what I believe should be the goals of this 
project. I'm open to suggestions for additions to and improvements to 
this list. Remember don't get too detailed about implementation just 
yet, and our goal isn't to support everything out the door ... it's to 
build a basic framework that's extensible and initially supports MySQL 
and PGSQL. The names of interfaces/classes aren't final and may change 
because of or regardless of suggestions.

- It should be OpenSource (I'm to suggestions as to which license it 
falls under) and available on one of the major project sites (I'm 
partial to SourceForge and Google Code)
- It should have a PDNSManager interface specifying the basic CRUD 
operations for supermasters, records, domains, etc.
- It should have a PDNSMySQL class implementing PDNSManager for the 
MySQL backend using the mysqli or possibly http://pear.php.net/package/MDB2
- It should have a PDNSPostgreSQL class implementing PDNSManager for the 
PGSql backend using PHP/PG or possibly http://pear.php.net/package/MDB2
- It should have a PDNSFactory class that provides you with the correct 
PDNSManager for the type you select, and this factory should provide 
methods for specifying configuration options (DB connection details, 
location of host files, etc).
- It's possible there should be classes for domains, records and 
supermasters to simplify the code of the PDNSManagers. Now that I think 
about it some more, I think this might be essential.
- It should make use of exceptions (I prefer extensions of 
PEARException, personally) for error reporting
- Additionally, there could also be (and I think there probably should 
be) an optional, bundled GUI that implements this API for those 
organizations not wanting to code a GUI and just wanting to drop 
something in place, configure it, and use it.

Ideas? Suggestions? Comments? Wishes of good luck? :)


DORDAL wrote:
> So we've had a lot of discussion over the last few months about getting an
> object oriented PHP API for the PDNS database. I kicked it off back in Feb:
> http://mailman.powerdns.com/pipermail/pdns-users/2009-February/thread.html#5935
> and then Pascal chimed in again in June:
> http://mailman.powerdns.com/pipermail/pdns-users/2009-June/thread.html#6080
> I keep thinking I'm going to write one, but I don't have the time. So
> instead, I wanted to throw out the idea of sponsoring one... I'd be willing
> to kick in $500 for somebody to write a 'complete' PHP API and
> maintain/bugfix it for at least a year.
> What is a 'complete' API? I'd leave that up to the list + anyone else who
> wants to contribute, but I'd suggest at least:
> - object oriented, extendable design
> - ability to work with at least the MySQL and PGSQL backends
> - CRUD operations for any type of record, domains & supermasters
> - Decent test coverage (using PHPUnit or similar) for all functions
> Thoughts?


*/Nicholas Scott Williams/*

"An idea, I have. Share it with you, I will. Change the world, we will 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.powerdns.com/pipermail/pdns-users/attachments/20090831/d2c7c257/attachment.html>

More information about the Pdns-users mailing list