#!/usr/bin/php "script", "password" => "pass", "zone" => "domain.org", "name" => "www", "ttl" => 600 ); $server = 'www.xname.org'; $path = '/xmlrpc.php'; function usage(){ print "php xname.php [-h|--help] [-u|--user ] [-p|--password ] [-z|--zone ] [-r|--recordname ] [-o|--oldaddress (use "*" for all)] [-n|--newaddress ] [-s|--server ] [-P|--path ] [-t|--ttl ] [-v|--verbose] "; } $args = Console_Getopt::readPHPArgv(); unset($args[0]); $shorts='vhu:p:z:r:o:n:s:t:'; $longs=Array('help', 'user=', 'password=','zone=', 'recordname=', 'oldaddress=', 'newaddress=', 'server=', 'ttl=', 'verbose'); $opts = Console_Getopt::getopt($args, $shorts, $longs); // Invalid options if(isset($opts->message)){ print $opts->message."\n"; print_usage(); exit(1); } foreach($opts[0] as $o){ if(in_array($o[0],Array('u', '--user'))) $params['user'] = $o[1]; elseif (in_array($o[0],Array('p', '--password'))) $params['password'] =$o[1]; elseif (in_array($o[0],Array('z', '--zone'))) $params['zone'] =$o[1]; elseif (in_array($o[0],Array('r', '--recordname'))) $params['name'] =$o[1]; elseif (in_array($o[0],Array('o', '--oldaddress'))) $params['oldaddress'] =$o[1]; elseif (in_array($o[0],Array('n', '--newaddress'))) $params['newaddress'] =$o[1]; elseif (in_array($o[0],Array('s', '--server'))) $server =$o[1]; elseif (in_array($o[0],Array('P', '--path'))) $path =$o[1]; elseif (in_array($o[0],Array('t', '--ttl'))) $ttl =$o[1]; elseif (in_array($o[0],Array('v', '--verbose'))) $verbose=1; else { print_r($o); usage(); exit(); } } $data = xmlrpc_encode_request('xname.updateArecord',$params); $sock = fsockopen("ssl://$server", 443, $errno, $errstr, 30); if (!$sock) die("$errstr ($errno)\n"); fputs($sock, "POST $path HTTP/1.0\r\n"); fputs($sock, "Host: $server\r\n"); fputs($sock, "Content-type: application/x-www-url-encoded\r\n"); fputs($sock, "Content-length: " . strlen($data) . "\r\n"); fputs($sock, "Accept: */*\r\n"); fputs($sock, "\r\n"); fputs($sock, "$data\r\n"); fputs($sock, "\r\n"); # Headers while ($str = trim(fgets($sock, 4096))); // echo "$str\n"; # Body $body=""; while (!feof($sock)) $body.=fgets($sock, 4096); $answer = xmlrpc_decode($body); if(isset($verbose)) print_r($answer); if(isset($answer['faultString'])){ echo $answer['faultString']."\n"; if(isset($answer['faultCode'])){ exit($answer['faultCode']); } else { exit(1); } } fclose($sock); exit(0); ?>