Beste,
Ik probeer de API request van DirectAdmin "/CMD_API_DNS_CONTROL" te parsen.
Als ik daar een request naar doe krijg ik dit terug:
(er zitten ook nog allerlei spaties in, onderstaande is de zonder gestyled)A=
ftp=77.243.225.71&
localhost=127.0.0.1&
mail=77.243.225.71&
nstest.rapifia.nl.=77.243.225.71&
pop=77.243.225.71&
smtp=77.243.225.71&
www=77.243.225.71
NS=
ns1.rapifia.nl.=nstest.rapifia.nl.
&ns2.rapifia.nl.=nstest.rapifia.nl.
MX=
mail=10
CNAME=
PTR=
TXT=
nstest.rapifia.nl.="v=spf1 a mx ip4:77.243.225.71 ~all"
AAAA=
localhost=::1
SRV=
Hoe kan ik dit nu op de juiste manier parsen?A=ftp=77.243.225.71&localhost=127.0.0.1&mail=77.24 3.225.71&nstest.rapifia.nl.=77.243.225.71&pop=77.2 43.225.71&smtp=77.243.225.71&www=77.243.225.71 NS=ns1.rapifia.nl.=nstest.rapifia.nl.&ns2.rapifia. nl.=nstest.rapifia.nl. MX=mail=10 CNAME= PTR= TXT=nstest.rapifia.nl.="v=spf1 a mx ip4:77.243.225.71 ~all" AAAA=localhost=::1 SRV=
Ik wil uiteindelijk alles netjes in een tabelletje plaatsen.
Ik weet dat er een php functie bestaat (dns_get_record) maar die gebruik ik niet omdat ik dit direct van de DA api wil halen en omdat die niet alles geeft wat ik wil laten zien.
Ik hoop dat iemand me kan helpen met het parsen van deze code.
- DirectAdmin API DNS Parsen
-
11-04-2011, 20:29 #1
- Berichten
- 66
- Lid sinds
- 14 Jaar
DirectAdmin API DNS Parsen
-
In de schijnwerper
-
11-04-2011, 20:34 #2
- Berichten
- 599
- Lid sinds
- 16 Jaar
Re: DirectAdmin API DNS Parsen
Als je maar genoeg rommelt met de explode functie in PHP kom je er wel :). Er is geen andere manier volgens mij, de DirectAdmin API is nou eenmaal niet zo hoogstaand helaas...
-
11-04-2011, 20:47 #3
- Berichten
- 66
- Lid sinds
- 14 Jaar
Re: DirectAdmin API DNS Parsen
@Ricardo,
Ok. Ik zie namelijk door de bomen het bos niet meer :). Heel veel dingen snap ik maar dit soort listings manieren van DirectAdmin zijn echt onverdragelijk. Nou ja, ik ga er nog maar eens naar kijken..
Aanvullend bericht:
Goed, het is me gelukt:
Code:$Socket = new HTTPSocket; $Socket->connect( $core[ 'conf' ][ 'direct' ][ 'server' ], 2222 ); $Socket->set_login( $core[ 'conf' ][ 'direct' ][ 'user' ].'|'.$sel['daname'], $core[ 'conf' ][ 'direct' ][ 'pass' ] ); $Socket->set_method( 'GET' ); $Socket->query('/CMD_API_DNS_CONTROL', array('domain' => strip_tags(mysql_real_escape_string($_GET['domain'])), 'urlencoded' => 'yes')); $result = $Socket->fetch_body(); $dns = array(); // Get the A records $a_raw = explode("NS=", urldecode($result)); $a_rem = str_replace("A=", "", $a_raw[0]); $splitje = explode("&", $a_rem); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); $dns[] = array( 'key' => $exp[0], 'value' => $exp[1], 'type' => "A" ); $count++; } } // Get the NS records $a_raw = explode("MX=", urldecode($result)); $a_rem = explode("NS=", $a_raw[0]); $splitje = explode("&", $a_rem[1]); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); $dns[] = array( 'key' => $exp[1], 'value' => $exp[0], 'type' => "NS" ); $count++; } } // Get the MX records $a_raw = explode("CNAME=", urldecode($result)); $a_rem = explode("MX=", $a_raw[0]); $splitje = explode("&", $a_rem[1]); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); $dns[] = array( 'key' => $exp[0], 'value' => $exp[1], 'type' => "MX" ); $count++; } } // Get the CNAME records $a_raw = explode("PTR=", urldecode($result)); $a_rem = explode("CNAME=", $a_raw[0]); $splitje = explode("&", $a_rem[1]); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); $dns[] = array( 'key' => $exp[0], 'value' => $exp[1], 'type' => "CNAME" ); $count++; } } // Get the PTR records $a_raw = explode("TXT=", urldecode($result)); $a_rem = explode("PTR=", $a_raw[0]); $splitje = explode("&", $a_rem[1]); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); $dns[] = array( 'key' => $exp[0], 'value' => $exp[1], 'type' => "PTR" ); $count++; } } // Get the TXT records $a_raw = explode("AAAA=", urldecode($result)); $a_rem = explode("TXT=", $a_raw[0]); $splitje = explode("&", $a_rem[1]); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); if($exp[2] != ""){ $exp[1] = $exp[1].$exp[2]; } $dns[] = array( 'key' => $exp[0], 'value' => $exp[1], 'type' => "TXT" ); $count++; } } // Get the AAAA records $a_raw = explode("SRV=", urldecode($result)); $a_rem = explode("AAAA=", $a_raw[0]); $splitje = explode("&", $a_rem[1]); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); $dns[] = array( 'key' => $exp[0], 'value' => $exp[1], 'type' => "AAAA" ); $count++; } } // Get the SRV records $a_raw = explode("SRV=", urldecode($result)); $splitje = explode("&", $a_raw[1]); $count = 0; foreach($splitje as $value){ if(strlen($value) > 1){ $exp = explode("=", $value); $dns[] = array( 'key' => $exp[0], 'value' => $exp[1], 'type' => "SRV" ); $count++; } }
Nu ben ik verder gegaan met het verwijderen van de records.
Dit is me gelukt met de A, maar niet met de NS of CNAME records.
Dit staat er op de documentatie:
Delete a record:
CMD_API_DNS_CONTROL?domain=domain.com&action=selec t&selecttype=encoded
where "selecttype" is one of arecs0, nsrecs0, mxrecs0, cnamerecs0, ptrrecs0 (0 and be any number, generally starting from zero, going up).
and also where "encoded" is the url encoded version of:
name=www&value=1.2.3.4
Basicaly, just replace the =, and & characters to html encoded charctes so that DA doesnt thing they are url separators. Take a look at the html generated in the CMD_DNS_CONTROL page for examples (the code is the same to handel the API and the CMD_API_DNS_CONTROL, it just uses different output).
Code:$Socket = new HTTPSocket; $Socket->connect( $core[ 'conf' ][ 'direct' ][ 'server' ], 2222 ); $Socket->set_login( $core[ 'conf' ][ 'direct' ][ 'user' ].'|'.$sel['daname'], $core[ 'conf' ][ 'direct' ][ 'pass' ] ); $Socket->set_method( 'POST' ); $recs = strtolower($_POST['recordtype'])."recs0"; $wholevalue = urlencode("name=".$_POST['name']."&value=".$_POST['value']); $Socket->query('/CMD_API_DNS_CONTROL', array( "domain" => strip_tags(mysql_real_escape_string($_GET['domain'])), "action" => "select", $recs => $wholevalue ));
Weet iemand waarom niet?
Ik heb de string urlencoded en alle $_POST variabelen zijn meegestuurd.
Opgelost.Laatst aangepast door LGroot : 12-04-2011 om 09:48 Reden: Automatisch samengevoegd.
-
11-04-2012, 17:00 #4
- Berichten
- 125
- Lid sinds
- 19 Jaar
Re: DirectAdmin API DNS Parsen
Zou je de oplossing hier kunnen posten?
Alvast bedankt! :)
Aanvullend bericht:
Never mind, got it working.Laatst aangepast door Chris S. : 11-04-2012 om 17:40 Reden: Automatisch samengevoegd.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic