PHP class for communicating with DA

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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:

loopforever

Verified User
Joined
May 30, 2003
Messages
298
Location
/home/admin
An additional method is to simply use fopen(), file(), or getfilecontents() on the full URL. For example:

PHP:
$diskUsage = getfilecontents("http://user:pass@your.server.com: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...
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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 :)
 

Pilot

New member
Joined
Aug 26, 2003
Messages
3
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.
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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:

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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:

thoroughfare

Verified User
Joined
Aug 11, 2003
Messages
575
Hi,

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

Cheers,
Matt :)
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
Yeah, it's a simple tool for using DA's API. You could use it for other socket connections too though.
 

Gadget

Verified User
Joined
Jun 16, 2003
Messages
50
Location
Alabama, USA
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?
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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.
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
I just updated to 1.2 to fix some problems with url encoded arrays.

Enjoy :D
 

lidios

Verified User
Joined
Oct 20, 2003
Messages
9
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

???
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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.
 

thoroughfare

Verified User
Joined
Aug 11, 2003
Messages
575
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
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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 :)
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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 :)
 

l0rdphi1

Verified User
Joined
Jun 22, 2003
Messages
1,471
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:
Top