#!/usr/bin/php -q
<?php

/**
 * Project:     Nxs Webservices CLI
 * 
 * File:        /usr/bin/nxs
 * @author      Jeroen de Jong <jeroen@telartis.nl>
 * @copyright   2003-2011 Telartis BV
 * @version     1.03
 *
 * @link        http://www.telartis.nl/xcms/nxs_webservices
 * 
 * Usage:
 *   nxs command [param1..4]
 *
 * Install:
 *   edit path, login and password in this script
 *   cp nxs /usr/bin/
 *   chmod 555 /usr/bin/nxs
 *
 * Examples (from shell prompt):
 *
 *   nxs AddAlias user1@example.com user2@example.com
 *   nxs AddDNS example.com
 *   nxs AddDNS2nd example.com 1.1.1.1
 *   nxs AddFTP pakketnaam password
 *   nxs AddFallback example.com
 *   nxs AddForward user@example.com user@example.net,user@example.org
 *   nxs AddOrder example.com nieuw ns1.nxs.nl 217.115.192.21 ns2.nxs.nl 217.115.193.2 handle
 *   nxs AddPop user@example.com password
 *   nxs CheckWhois example.com
 *   nxs DelAlias user@example.com
 *   nxs DelDNS example.com
 *   nxs DelForward user@example.com user@example.net
 *   nxs DelPOP user@example.com
 *   nxs DelZoneRecord example.com @ MX 10
 *   nxs GetAutoresponder user@example.com
 *   nxs GetColoAccess 13072009 1135 1920 handle reden locatie
 *   nxs GetColoAccessID internal_id
 *   nxs GetHandle handle
 *   nxs GetHandleList
 *   nxs GetIPTraffic
 *   nxs GetMailList example.com
 *   nxs GetPostfix example.com
 *   nxs GetOrderStatus orderid
 *   nxs GetPortTraffic switch 7 2009
 *   nxs GetProductList [type]
 *   nxs GetProductTypes
 *   nxs GetZoneRecord example.com @ MX
 *   nxs GetZoneRecords example.com
 *   nxs RebootServer servernummer
 *   nxs RebootServerRack pdu_id pdu_port
 *   nxs ReplaceZoneIPs 1.1.1.1 2.2.2.2
 *   nxs SetAutoresponder user@example.com "i am on vacation"
 *   nxs SetFTPPass user@example.com password
 *   nxs SetPOPFilters user@example.com
 *   nxs SetPOPPass user@example.com password
 *   nxs SetZoneRecord example.com mail MX 1.1.1.1
 *   nxs SetWebRecords example.com 1.1.1.1
 *   nxs SetMailRecords example.com
 *   nxs TestPage test_input
 *
 */

$path     '/path/to/class/';
$login    'nxs_inlognaam';
$password 'nxs_wachtwoord';

require_once 
$path.'nxs.class.php';

if (
$argc == 1) die("Usage: nxs command [param1..4]\n");

$command $argv[1];
$verbose true;
$debug false;
$nxs = new nxs($login$password$verbose);

switch (
$argc) {
case 
2:
    
$result $nxs->$command();
    break;
case 
3:
    
$result $nxs->$command($argv[2]);
    break;
case 
4:
    
$result $nxs->$command($argv[2], $argv[3]);
    break;
case 
5:
    
$result $nxs->$command($argv[2], $argv[3], $argv[4]);
    break;
case 
6:
    
$result $nxs->$command($argv[2], $argv[3], $argv[4], $argv[5]);
    break;
case 
7:
    
$result $nxs->$command($argv[2], $argv[3], $argv[4], $argv[5], $argv[6]);
    break;
case 
8:
    
$result $nxs->$command($argv[2], $argv[3], $argv[4], $argv[5], $argv[6], $argv[7]);
    break;
case 
9:
    
$result $nxs->$command($argv[2], $argv[3], $argv[4], $argv[5], $argv[6], $argv[7], $argv[8]);
    break;
default:
    die(
"parameter count not supported\n");
}

if (
$result && in_array($command, array('GetHandle''GetHandleList''GetIPTraffic''GetMailList''GetProductList''GetProductTypes''GetZoneRecords'))) {
    if (
in_array($command, array('GetHandle''GetIPTraffic'))) $result = array($result);
    if (
$command == 'GetMailList'$result array_merge($result[1], $result[2]);
    if (
$command == 'GetProductTypes'$result = array(array('types'=>$result));
    foreach (
$result as $row) {
        
$r = array();
        foreach (
$row as $key => $val$r[] = $key.'='.(is_array($val) ? implode(','$val) : $val);
        echo 
implode(', '$r)."\n";
    }
}

if (
$command == 'GetPostfix') echo $result;

if (
$debug) {
    echo 
"BEGIN URL\n".$nxs->url."\nEND URL\n";
    echo 
"BEGIN RESPONSE\n".$nxs->response."\nEND RESPONSE\n";
}

?>