Table of Contents
version: 0.18
Server address: http://backend.antagus.de
All requests described afterwards are relative to this address
BDOM system works over an Apache server and the xmlApi requests are encapsulated in HTTP messages.
For more information on HTTP protocol see RFC
Authentication for xmlApi requests is based on IP - USER_ID pairs.
USER_ID is a number assigned by BDOM system when your account has been created, ex. 22
In to order accept your requests please send your public IP address to domains@antagus.de
![]() | Warning |
|---|---|
At this moment, the name and number of some fields in both the requests and answers are subject to change. |
All the differences from one version to another will be found on the Changes page
Demo in PHP to connect to BDOM server over HTTP:
Example 1.1. PHP Demo
#!/usr/local/bin/php -q
<?
class httpRequest {
var $host;
var $port;
//constructor
function httpRequest($host,$port){
$this->host = $host;
$this->port = $port;
}
//uri to get
function get($uri) {
return $this->request('GET',$uri,'');
}
//uri to put body(xml)
function put($uri,$body) {
return $this->request('PUT',$uri,$body);
}
//uri to post body(xml)
function post($uri,$body) {
return $this->request('POST',$uri,$body);
}
//uri to delete
function delete($uri) {
return $this->request('DELETE',$uri,'');
}
// private methods
//make request to server
function request($method, $uri, $body){
//open socket
$sd = fsockopen($this->host, $this->port, $errno,$errstr);
if (!$sd) {
$result = "Error: connection failed";
}else{
//send request to server
fputs($sd,$this->make_string($method, $uri, $body));
//read answer
$nl = 0;//new line detector
//initialize body length on a high value
$count = 65535;
while ($str = fgets($sd, 1024)){
$result .= $str;
$count = $count - strlen($str);
if ($nl == 1) {
//set count to actual body length
$count = hexdec($str);
$nl = 0;
}
//remove CR/LF
$str = preg_replace('/\015\012/', '',$str);
if ($str == '') {
$nl = 1;
}
if ($count <= 0) {
break;
}
}
}
//close socket
if($sd) {
fclose($sd);
}
$this->response = $result;
return $result;
}
//create request
function make_string($method, $uri, $body){
//header: method + host
$str = strtoupper($method)." ".$uri." HTTP/1.1\nHOST: ".$this->host;
//header: ...
$str .= "\nConnection: Keep-Alive\nUser-Agent: bdomHTTP\nContent-Type: text/xml; charset=iso-8859-1";
//header: body size ... if any
if ($body) {
$str .= "\nContent-Length: ".strlen($body);
}
$str .= "\n\n";
//append body ... if any
if ($body) {
$str .= $body ;
}
return $str;
}
}
class httpResponse {
var $resp;
function httpResponse($resp) {
$this->resp = $resp;
}
//extract response code
function code() {
preg_match('/HTTP\/[10\.]+\s+([0-9]+)/', $this->resp, $code);
return $code[1];
}
//extract response body
function body() {
//body is between two empty lines for "chunked" encoding
$chunk = preg_split('/(?=^\r)/m',$this->resp);
$body = "";
if ($chunk[1]){
//extract body from \nsize(body)\n0
$body = ereg_replace("\n[0-9a-fA-F]+", "", $chunk[1]);
}
return trim($body);
}
}
$obj = new httpRequest("backend.antagus.de",80);
$uri = "/bdom/contact/status/NIRAA0002/19/";
print "Unparsed response:\n";
print $obj->get($uri);
$resp = new httpResponse($obj->get($uri));
print "Response Code: ".$resp->code()."\n";
print "Response Body:\n";
print $resp->body()."\n";
?>
Demo in RUBY to connect to BDOM server over HTTP:
Example 1.2. RUBY Demo:
#!/usr/local/bin/ruby
require 'net/http'
class BdomReq
Def initialize(server, port)
@server = server
@port = port
end
def get(path)
begin
h = Net::HTTP.new(@server, @port)
@resp,@data=h.get(path, nil)
puts @resp.code.to_s
return @data
rescue SocketError => err
puts "socket error"+err.to_s
end
end
def delete(path)
begin
h = Net::HTTP.new(@server, @port)
@resp,@data=h.delete2(path, nil)
return @data
rescue SocketError => err
puts "socket error"+err.to_s
end
end
def put(path, data)
begin
h = Net::HTTP.new(@server, @port)
@resp,@data=h.put(path, data)
return @data
rescue SocketError => err
puts "socket error"+err.to_s
end
end
def post(path, data)
begin
h = Net::HTTP.new(@server, @port)
@resp,@data=h.post(path, data)
puts @resp.code.to_s
return @data
rescue SocketError => err
puts "socket error"+err.to_s
end
end
end
bdom = BdomReq.new("backend.antagus.de", 80)
cdom =
"
<?xml version="1.0" encoding="UTF-8"?>
<request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sld>example-nic-domain</sld>
<contact-ids>
<owner>ACMEA0003</owner>
<admin>ACMEA0003</admin>
<tech>ACMEA0003</tech>
<zone>ACMEA0003</zone>
</contact-ids>
<nameservers>
<ns>
<hostname>ns1.ns-serve.net</hostname>
<ip>193.254.189.162</ip>
</ns>
<ns>
<hostname>ns2.ns-serve.net</hostname>
<ip>83.243.59.34</ip>
</ns>
</nameservers>
</request>
"
#create
puts bdom.put("/bdom/domain/create/de/example-nic-domain/13048/", cdom)
#check
puts bdom.get("/bdom/domain/check/de/example-nic-domain/13048/")