PHP class for communicating with DA

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,320
Hey.

This is a small PHP class put together to help communicate with DirectAdmin. It is simple enough, and most anyone can make good use of it.

Current Version: v2.7.2
Last updated 2014-03-18

Download: php-source or tarball

Numerous implementation examples are located here.

Pretty nifty, eh?
 
Last edited:
An additional method is to simply use fopen(), file(), or getfilecontents() on the full URL. For example:

PHP:
$diskUsage = getfilecontents("http://user:[email protected]:2222/CMD_API_SHOW_USER_USAGE?user=$some_user_name")

echo "Disk Usage is: $diskUsage";

Just another way of doing this... :) Thanks for sharing your method, I might put it to good use...
 
loopforever said:
An additional method is to simply use fopen(), file(), or getfilecontents() on the full URL. For example:

PHP:
$diskUsage = getfileco [...] s: $diskUsage";

Just another way of doing this... :) Thanks for sharing your method, I might put it to good use...
That doesn't work with the new sessions sytem. And plus you have to parse_strthe results :)
 
How would you send your information to CMD_ACCOUNT_USER to create an account?
I made all the fields and such, but I'm unsure on how to send the info.
 
John said he'd be adding an API_ACCOUNT_USER soon, but right now I use:
PHP:
		$fsock->request("/CMD_ACCOUNT_USER?username=$client_sql[client_uname]&email=".strtolower($client_sql[client_email])
			."&passwd=$client_sql[client_pword]&passwd2=$client_sql[client_pword]&domain=$client_sql[client_domain]"
			."&bandwidth=".($client_sql[client_bandwidth]*1024)."&quota=$client_sql[client_storage]&uvdomains=ON&unsubdomains=ON"
			."&unemails=ON&unemailf=ON&unemailml=ON&unemailr=ON&umysql=ON&udomainptr=ON&uftp=ON&aftp=ON&cgi=ON&ssl=ON"
			."&suspend_at_limit=ON&skin=loopXv1&ip=$server_ip&add=Submit&action=create");

$client_sql is an array of the user's data.

$server_ip the server's shared IP.

*Note: This example uses the version 1.xx of this class; you need the wrapper to continue in this fashion*
 
Last edited:
I edited my original post to include version 1.1 of the class.

I hadn't realized PHP's parse_str() function breaks when DA uses '&' characters in the returned string, and thus version 1.1 fixes this.

Additionally, I recently replied to this thread with the code I use to create DA accounts.

Enjoy,

Phi1.
 
Last edited:
Hi,

Looks interesting, what can it do exactly? Is it just for the API commands?

Cheers,
Matt :)
 
Yeah, it's a simple tool for using DA's API. You could use it for other socket connections too though.
 
I have one question, when this code is in actual working form, cant someone go "view source" and pull out your username and password for DA Login?
 
Not that I'm aware of. Even if view-source worked for me, shouldn't it only display the HTML source, and not any of the PHP?

And incase you fear someone actually getting the PHP source: you could always encrypt the password making it at least a little harder to figure out.

Phi1.
 
How about having visitors create mailboxes?

How do you implement this in the class?

<form action=/CMD_EMAIL_POP method=POST>
action=create
domain=domain.com
user=emailname (do not include @domain.com)
passwd=password
passwd2=password
create=Create

???
 
You won't need a class if you're going to send it via a form, but then again, I'm not sure that will even work. Try it, if you please.

I can modify the class to support POST, but I won't get time enough for that until this weekend.

Phi1.
 
Just post the form to your own PHP script, which in turn parses the form and uses the DA communicating class to send the info on to DA ;)

Matt
 
The problem as I take it is that DA's CMD_EMAIL_POP API doesn't take GET data. As I said though, I can add support for POST this weekend :)
 
I'm currently in the process of rewriting this by the way. Will support both GET and POST, and fix a bug in the array_last_parsed method.

Feel free to sicky, if you like :)
 
Okay, 2.0 is up. There have been a lot of changes.

I put together a wrapper for old versions, so you don't have to recode anything. Check that out here.

Enjoy :)
 
Last edited:
Back
Top