Plesk RPC-Aufruf mit .NET funktioniert nicht.Diskutiere Plesk RPC-Aufruf mit .NET funktioniert nicht. im Sonstiges Forum im Bereich Off-Topic; Hallo,
ich wollte mir die Administration von Benutzerkonten und Domains erleichtern, indem ich mir ein PowerShell-Script bastle, welches RPC-Requests absetzt.
Nun hab ich mir ein ... -
Plesk RPC-Aufruf mit .NET funktioniert nicht. Hallo,
ich wollte mir die Administration von Benutzerkonten und Domains erleichtern, indem ich mir ein PowerShell-Script bastle, welches RPC-Requests absetzt.
Nun hab ich mir ein einfaches Testscript geschrieben um zu testen, ob ich überhaupt eine Verbindung zur Schnittstelle zusammenbekomme, aber als Rückgabe auf meine Anfrage bekomme ich keine XML-Daten, sondern den HTML-Code der Loginseite von PLESK zurück, als würde der Request direkt auf "https://<servername>:8843/" landen. Hab den Code mindestens 100mal durchkontrolliert um den Fehler zu finden. Den Request mache ich definitiv auf "https://<servername>:8843/enterprise/control/agent.php".
Habs dann aufgegeben und etwas anderes Versucht: Hab das C#-Beispiel aus der Dokumentation (http://download1.parallels.com/Plesk...-rpc-guide.pdf) nachgebaut, Server, Benutzernamen und Passwort ausgetauscht und siehe da: genau dasselbe: wieder kommt mir die Login-Page zurück.
Testweise das PHP-Sample ausprobiert: dort klappt es...
Was mache ich falsch, bzw. was habe ich noch nicht beachtet? Ist der Server falsch konfiguriert? 
Hoffe ihr könnt mir weiterhelfen!
Tobias -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. den code den du geschrieben hast bräuchte man schon um dir eventuell helfen zu können -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. natürlich (PowerShell v2.0): Code: $address = [Uri]'https://<servername>:8443/enterprise/control/agent.php'
$username = '<username>'
$password = '<password>'
[Net.ServicePointManager]::ServerCertificateValidationCallback = {return $true}
$request = @"
<?xml version="1.0" encoding="UTF-8"?>
<packet version="1.4.1.2">
<domain>
<get>
<filter>
<client_login>filter_mir_irgendwas</client_login>
</filter>
<dataset>
<hosting/>
<limits/>
<prefs/>
<stat/>
<gen_info/>
</dataset>
</get>
</domain>
</packet>
"@
$wc = New-Object Net.WebClient
$wc.Encoding = [System.Text.Encoding]::UTF8
$wc.Headers['Content-Type'] = 'text/xml'
$wc.Headers['HTTP_AUTH_LOGIN'] = $username
$wc.Headers['HTTP_AUTH_PASSWD'] = $password
$wc.Headers['HTTP_PRETTY_PRINT'] = 'TRUE'
$response = $wc.UploadString($address, $request)
$response -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. was bekommst du wenn du die url direkt im browser aufrufst? bei mir kommt nen xml:
<packet version="0.0.0.0">
−
<system>
<status>error</status>
<errcode>1003</errcode>
<errtext>Wrong request</errtext>
</system>
</packet>
ist die rpc schnittstelle installiert? (hab nur linux hier ^^ gehe davon aus das du windows hast aber bei mir nennen sich die packete psa-api-rpc und sw-xmlrpc-c) im zweifel den autoinstaller bemühen -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. Dort funktionierts: Code: <?xml version="1.0" ?>
<packet version="0.0.0.0">
<system>
<status>error</status>
<errcode>1003</errcode>
<errtext>Wrong request</errtext>
</system>
</packet> Hingegen beim Aufruf mit meinem Script bekomme ich folgendes zurück: Code: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
VZPP Plesk - Log in to Plesk 9.2.1</title>
<script type="text/javascript" src="/vz/js/common_script.js"></script><script type="text/javascript" src="/vz/js/browse
r.js"></script><link rel="stylesheet" type="text/css" href="/vz/skins/winxp.new/plesk.css">
<link rel="stylesheet" type="text/css" href="/vz/skins/winxp.new/common.css">
<link rel="stylesheet" type="text/css" href="/vz/skins/winxp.new/css_expand.css">
</head>
<body onload="autoFocus();">
<script type="text/javascript">
if (self != top)
self.top.location = self.location;
function callTip(){
}
function showSandclock(){
}
function beforeSubmit(){
}
function formCheckEmpty(){
return true;
}... was der Loginseite entspricht...
Die RPC-Schnittstelle ist installiert und sie funktioniert auch, wenn ich eine Abfrage mit z.B. PHP mache...
Nur .NET weigert sich mit der Schnittstelle zusammenzuarbeiten... -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. poste mir doch mal dein php script habe da einen verdacht -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. OK, zuerst möchte ich aber noch die Response posten, welche ich über nem HTTP-Sniffer von Plesk bekomme, wenn ich vorheriges Script aufrufe: Code: HTTP/1.1 302 Found
Date: Thu, 19 Nov 2009 14:20:02 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Location: /vz/cp/panel/plesk/noservice?aspxerrorpath=/enterprise/control/agent.php
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 189
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href='/vz/cp/panel/plesk/noservice?aspxerrorpath=/enterprise/control/agent.php'&phpMyAdmin=MqhZfra5yVwS1KFb9%2Ct0HH2sZx2>here</a>.</h2>
</body></html> Also scheinbar findet es die URL nicht...
Der RAW-Request sieht übrigens folgendermaßen aus: Code: POST /enterprise/control/agent.php HTTP/1.1
HTTP_AUTH_LOGIN: <username>
HTTP_AUTH_PASSWD: <password>
HTTP_PRETTY_PRINT: TRUE
Accept: text/xml
Content-Type: text/xml; charset=utf-8
Host: <servername>:8443
Expect: 100-continue
Content-Length: 423
<?xml version="1.0" encoding="UTF-8"?>
<packet version="1.4.1.2">
<domain>
<get>
<filter>
<client_login>filter_mir_irgendwas</client_login>
</filter>
<dataset>
<hosting/>
<limits/>
<prefs/>
<stat/>
<gen_info/>
</dataset>
</get>
</domain>
</packet> <sername>, usw... sind natürlich nur die Platzhalter... -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. finden tut er es schon...
aber irgendwo hackts da, soweit ich mich erinnere ist seit plesk 8.0 die vorgabe das das passwort md5 verschlüsselt sein muss probier doch mal in deinem net script folgendes: Code: $wc.Headers['HTTP_AUTH_PASSWD'] = md5($password) -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. Das mit dem md5-Hash hat leider nichts gebracht... Im PHP-Script brauch ich den übrigens auch nicht und es klappt...
PHP: Code: <?php
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$address = 'https://<servername>:8443/enterprise/control/agent.php';
$username = '<username>';
$password = '<password>';
$http = new Zend_Http_Client();
$http->setUri($address);
$http->setConfig(
array(
'strict' => false
)
);
$http->setHeaders(
array(
'Content-Type' => 'text/xml; charset=utf-8',
'Accept' => 'text/xml',
'HTTP_AUTH_LOGIN' => $username,
'HTTP_AUTH_PASSWD' => $password,
'HTTP_PRETTY_PRINT' => 'TRUE'
)
);
$request = '<?xml version="1.0" encoding="UTF-8" ?>
<packet version="1.4.1.2">
<client>
<get>
<filter>
<owner-login>filter_mir_irgendwas</owner-login>
</filter>
<dataset>
<gen_info/>
<stat/>
<permissions/>
<limits/>
<ippool/>
</dataset>
</get>
</client>
</packet>';
$http->setRawData($request);
$response = $http->request('POST');
var_dump($response->getBody());
?> -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. hmm sorry dann wüsste ich erstmal auch nicht weiter werd aber nochmal schauen ob ich wass finden kann.... -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. OK, danke!
Ich checks einfach nicht was hier schiefläuft... -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. Juhuu! Ich habs endlich gefunden! 
Also die Lösung, für jeden, der dasselbe Problem hat:
HttpWebRequest und demzufolge auch die WebClient-Klasse schicken immer einen Header-Befehl "Expect: 100-Continue".
Der Befehl ist im HTTP 1.1 Protokoll festgelegt und teilt dem Webserver mit, dass der eigentliche Body der Nachricht nicht mit dem ersten Request kommt.
Wenn der Server diesen Standard korrekt implementiert bzw. berücksichtigt, dann ist das kein Problem. Leider scheint dies beim Plesk-Service nicht der Fall zu sein...
Die Lösung ist eigentlich ganz simpel:
Die System.Net.ServicePointManager-Klasse implementiert ein statisches Property Expect100Continue, welches man auf false setzen muss, somit wird auf diesen Header verzichtet.
Also in meinem Powershell-Code einfach folgendes hinzufügen: Code: [Net.ServicePointManager]::Expect100Continue = $false und es funktioniert! 
Danke Harv für deine Mühen! -
AW: Plesk RPC-Aufruf mit .NET funktioniert nicht. verszchen zu helfen mache ich doch gerne (nur das ich auch helfen kann kann ich leider nicht garantieren)
danke auf jedenfall für die lösung, hat mich ja nun auch iteressiert.... Plesk RPC-Aufruf mit .NET funktioniert nicht. Ähnliche Themen zu Plesk RPC-Aufruf mit .NET funktioniert nicht. -
Aufruf von SubDomains nicht mehr möglich: Ich wünsche einen wunderschönen Tag zu haben!
Ich als eingefleischter Windows... -
[Plesk 9.0.x] Ausloggen funktioniert nicht: Frage:
Ich habe mich Normal über https://domain.tld:8443/ in mein Plesk eingeloggt, jedoch wenn... -
Plesk 8.4 - AwStats funktioniert nicht mehr: Hallo Zusammen,
folgendes wir haben vor ca. 2 Monaten auf Plesk 8.4 upgedatet, in der Zeit bis... -
Catchall funktioniert nicht Plesk 8.2: Ich habe ein Email Postfach als catchall definiert. Wenn ich jetzt eine email an eine nicht... -
Plesk 8.2.1 Firewall-Modul funktioniert nicht: Hallo Leute ich hoffe Ihr könnt mir weiterhelfen.
Habe eine Suse Linux 9.3 Server mit Plesk... Besucher kamen mit folgenden Begriffen auf die Seite: /vz/js/common_script.js,
showSandclock(),
plesk xml <errcode>1003<errcode>,
rpc aufruf,
HTTP_AUTH_LOGIN,
<packet version=0.0.0.0><system><status>error<status><errcode>1003<errcode><errtext>Wrong request<errtext><system><packet>,
plesk 10 api rpc php example,
vzcppanelplesknoserviceaspxerrorpath=enterprisecontrolagent.php,
php plesk api script,
.net rpc aufruf,
awstats Content-type: texthtml; charset=utf-8 Cache-Control: public,
plesk enterprise sample api,
HTTP_AUTH_LOGIN asp,
Plesk 10 IIS ASPX,
VZ meine seite example script,
plesk xml passwort faslch,
textxml; charset=utf-8 wurde von Dienst nicht unterstützt. ,
plesk autoinstaller status=error,
windows plesk 10 awstat funktioniert nicht mehr,
powershell new-object RPC COM,
browsing problem rpc aufruf fehler,
rpc requests c#,
php autoloader iis windows,
c# Parallels Plesk api,
plesk installer powershell | |