Netcup SCP Webservice

Aus netcup Wiki
Version vom 27. Mai 2019, 11:54 Uhr von L.steck (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

SOAP WebService

Web Service Methods

WSDL: https://www.servercontrolpanel.de/WSEndUser?wsdl

Für das SCP verwenden Sie bitte die folgende URL: https://www.servercontrolpanel.de:443/WSEndUser?wsdl


getVServers

Parameter:

loginName = Loginname
password = Password

Return:

Strings []

startVServer

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

WebServiceSimpleResult

stopVServer

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

WebServiceSimpleResult

getVServerState

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

String [online|offline]

getVServerLoad

Hinweis: Diese Funktion ist ausschließlich für vServer basierend auf Linux-VServer gültig.

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

String load (1min, 5min, 15min)

getVServerUptime

Hinweis: Diese Funktion ist ausschließlich für vServer basierend auf Linux-VServer gültig.

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

String uptime in seconds 

getVServerProcesses

Hinweis: Diese Funktion ist ausschließlich für vServer basierend auf Linux-VServer gültig.

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

String

getVServerIPs

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

String[]

getFirewall

Hinweis: Diese Funktion ist ausschließlich für vServer basierend auf Linux-VServer gültig.

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

FilterObject[]

addFirewallRule

Hinweis: Diese Funktion ist ausschließlich für vServer basierend auf Linux-VServer gültig.

Parameter:

loginName : Loginname
password : Password
vserverName : String
rule  : FilterObject[]

Es empfiehlt sich möglichst viele Regeln auf einmal hinzuzufügen, da dies die Skriptlaufzeit erheblich reduziert.

Return:

WebServiceSimpleResult

deleteFirewallRule

Hinweis: Diese Funktion ist ausschließlich für vServer basierend auf Linux-VServer gültig.

Parameter:

loginName : Loginname
password : Password
vserverName : String
rule  : FilterObject[]

Es empfiehlt sich möglichst viele Regeln auf einmal zu löschen, da dies die Skriptlaufzeit erheblich reduziert.

Return:

WebServiceSimpleResult

changeIPRouting

Parameter:

loginName : Loginname
password : Password
routedIP : String
routedMask : String
destinationVserverName : String
destinationInterfaceMAC : String

Ändert das Routing einer FailoverIP auf einen anderen Server.

Bei einer MAC von 00:00:00:00:00:00 wird die IP aus der Routingtabelle gelöscht und diese muss vor einer weiteren Verwendung erst neu zugeordnet werden. Beim Löschauftrag muss als destinationVserverName der Server angegeben werden, auf den die IP aktuell geroutet ist.


getVServerStatToken

Parameter:

loginName : Loginname
password : Password
vserverName : String

Return:

TOKEN

Mit dem TOKEN können über folgende URL CSV-Dateien mit Statistiken geladen werden. Dabei sind die großgeschriebenen Parameter zu ersetzen:

https://www.servercontrolpanel.de/SCP/StatsViewer?type=TYPE&TimeRange=TIMERANGE&token=TOKEN
TOKEN = return von getVServerStatToken
TYPE = Statistiken-Typ: cpu, iops, pps, traffic
TIMERANGE = Wie viele Stunden (siehe SCP): 6, 24, 168, 744


Web Service Objects


WebServiceSimpleResult

success : boolean
message : String

Sobald der Request erfogreich war, ist "success" wahr. Wenn "success" unwahr ist, so steht in der message eine entsprechende Fehlermeldung.


FilterObject

id : String (interne ID)
direction : String (INPUT | OUTPUT)
proto : String (any|tcp|udp|icmp)
target : String (ACCEPT|REJECT|DROP)
srcIP : String (IPv4 oder IPv6 IP)
srcPort : String (1-65535)
destIP : String (IPv4 oder IPv6 IP)
destPort : String (1-65535)
match : String (STATE|ICMP|LIMIT)
matchValue  : String ([NEW,ESTABLISGED,RELEATED]|ICMP Code|Limit value)
srcPortRange : String (Wenn gesetzt, dann muss der Wert größer sein als srcPort)
destPortRange : String (Wenn gesetzt, dann muss der Wert größer sein als destPort)
sort : String
valid : String (regel ist gültig)

Beim anlegen benötigte Parameter:

direction, target, srcIP oder destIP

Beim anlegen ungültige Parameter:

valid, id

PHP Klasse

<?php

ini_set('default_socket_timeout',360);
class VcpWebServiceEndUser {

	private $wsdl_url = 'https://www.servercontrolpanel.de/WSEndUser?wsdl';
    private $soap_client;
	private $loginname;
	private $password;

	public function getArrayFrom2DWebServiceStringArray($webServiceResultArray) {
		$phpArray = array();
		foreach ($webServiceResultArray->return as $globalArray) {
			$phpArray[$globalArray->item[0]] = $globalArray->item[1];
		}
		return $phpArray;
	}

    function __construct($loginname, $password) {
		$this->loginname = $loginname;
		$this->password = $password;
		$this->soap_client = new SOAPClient($this->wsdl_url, array('cache_wsdl' => 0));
		// TODO error if no connection to soap server ...
    }

	/**
	 *
	 * @param String $vserverName needed
	 * @return String if action deleteVServer successfully started return actionId else return errorMessage
	 */
	public function getVServers() {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
			);

			$getVServerResult = $this->soap_client->getVServers($params);

            return $getVServerResult->return;

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}

	/**
	 *
	 * @param String $vserverName needed
	 * @return String
	 */
	public function getVServerState($vserverName) {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName
			);

			$startVServerResult = $this->soap_client->getVServerState($params);

			return $startVServerResult->return;

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}
	/**
	 *
	 * @param String $vserverName needed
	 * @return String
	 */
	public function getVServerLoad($vserverName) {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName
			);

			$startVServerResult = $this->soap_client->getVServerLoad($params);

			return $startVServerResult->return;

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}
	/**
	 *
	 * @param String $vserverName needed
	 * @return String
	 */
	public function getVServerUptime($vserverName) {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName
			);

			$startVServerResult = $this->soap_client->getVServerUptime($params);

			return $startVServerResult->return;

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}
	/**
	 *
	 * @param String $vserverName needed
	 * @return String[]
	 */
	public function getVServerIPs($vserverName) {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName
			);

			$startVServerResult = $this->soap_client->getVServerIPs($params);

			return $startVServerResult->return;

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}

    /**
	 *
	 * @param String $vserverName needed
	 * @return String if action deleteVServer successfully started return actionId else return errorMessage
	 */
	public function startVServer($vserverName) {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName
			);

			$startVServerResult = $this->soap_client->startVServer($params);

			if ($startVServerResult->return->success) {
				return $startVServerResult->return->exceptionMessage;
			} else {
				if ($startVServerResult->return->exceptionMessage != NULL) {
					return $startVServerResult->return->exceptionMessage;
				} else {
					return "undefined error";
				}
			}

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}

	/**
	 *
	 * @param String $vserverName needed
	 * @return String if action deleteVServer successfully started return actionId else return errorMessage
	 */
	public function stopVServer($vserverName) {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName
			);

			$stopVServerResult = $this->soap_client->stopVServer($params);

			if ($stopVServerResult->return->success) {
				return $stopVServerResult->return->exceptionMessage;
			} else {
				if ($stopVServerResult->return->exceptionMessage != NULL) {
					return $stopVServerResult->return->exceptionMessage;
				} else {
					return "undefined error";
				}
			}

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}

	/**
	 *
	 * @param String $vserverName needed
	 * @return String if action deleteVServer successfully started return actionId else return errorMessage
	 */
	public function getFirewall($vserverName) {

		try {

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName
			);

			return$this->soap_client->getFirewall($params);

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}

	/**
	 *
	 * @param String $vserverName needed
	 * @return String if action deleteVServer successfully started return actionId else return errorMessage
	 */
	public function addFirewallRule($vserverName, $direction, $proto, $srcip, $srcport, $srcportrange, $destip, $destport, $destportrange, $match, $matchvalue, $target) {

		try {

  			$rule_params = array(
                'direction' => $direction, // string needed
                'proto' => $proto, // string needed
                'srcIP' => $srcip,
                'srcPort' => $srcport,
                'destIP' => $destip,
                'destPort' => $destport,
                'match' => $match,
                'matchValue' => $matchvalue,
                'srcPortRange' => $srcportrange,
                'destPortRange' => $destportrange,
                'target' => $target,
                'valid' => false,
                'id' => 0,
			);

			$params = array(
				'loginName' => $this->loginname,
				'password' => $this->password,
				'vserverName' => $vserverName,
                'rule' => array($rule_params),
			);

			return $this->soap_client->addFirewallRule($params);

		} catch (Exception $e) {
			return "Exception occured: " . $e->getMessage();
		}
	}
}

?>

PHP Anwendungsbeispiele


getVServers

$vcpWebServiceEndUser = new VcpWebServiceEndUser("<VCPLOGINNAME>", "<VCPLOGINPASSWORD>");
var_dump($vcpWebServiceEndUser->getVServers());