2017-10-23 1 views
0

Ich versuche zu implementieren, um die awstats Seite von cpanel zu zeigen. Ich möchte mich automatisch in cpanel einloggen und dann die awstats der übergebenen Domain anzeigen. Ich habe den folgenden Code für diese, aber es scheint Seite gehen um sich einzuloggen und nicht die awstats Seitecpanel awstats Umleitung automatisch

$cp_user = "<username>"; 
$cp_pwd = "<password>"; 
$url = "https://xxxx:2083/login"; 
$cookies = "cookies.txt"; 

$ch=curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
//curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies); // Save cookies to 
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=$cp_user&pass=$cp_pwd"); 
curl_setopt($ch, CURLOPT_TIMEOUT, 100020); 

$f = curl_exec($ch); 
$h = curl_getinfo($ch); 
curl_close($ch); 

if ($f == true and strpos($h['url'],"cpsess")) 
{ 
    // Get the cpsess part of the url 
$pattern="/.*?(\/cpsess.*?)\/.*?/is"; 
$preg_res=preg_match($pattern,$h['url'],$cpsess); 
} 

$token= $cpsess[1]; 
header('Locations: https://xxxx:2083'.$token.'/awstats.pl?config=<domain>&ssl=&lang=en'); 

Gibt es etwas falsch mit diesem zeigt?

Antwort

0

Ich weiß, das ist eine alte Frage, aber ich dachte, ich würde eine Antwort rauswerfen, da niemand sonst geantwortet hat. Vielleicht hilft es einem anderen, der das auch versucht.

Der Grund, warum Sie dies nicht schaffen, ist, weil cPanel die IP-Adresse des Benutzers überprüft. Ihr cURL-Skript befindet sich auf Ihrem Server mit seiner IP-Adresse und der Benutzer, der sich anmelden möchte, hat eine eigene IP-Adresse.

Überprüfen Sie das cPanel (x3) Login-Formular, es gibt nicht einmal ein Formularfeld zum Absenden Ihrer IP-Adresse, so dass es nur auf der Serverseite abgerufen wird, um Spoofing zu verhindern.

$curl = curl_init(); 

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl, CURLOPT_HEADER, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_POSTFIELDS, "user=myuser&pass=mypass"); 
$result = curl_exec($curl); 
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); 
$header = substr($result, 0, $header_size); 
$body = substr($result, $header_size); 
curl_close($curl); 

$header = str_replace("\r", '', $header); 
$header = explode("\n", $header); 

foreach ($header as $h) { 
    header ($h); 
} 
$parts = explode('URL=', $result); 
$session_parts = explode('/frontend/', $parts[1]); 
$token = $session_parts[0]; 

header('Location: http://ss.com:2082'.$token.'/awstats.pl?config=ss.com&ssl=&lang=pt'); 
+0

Danke Ravi Chauhan für die Antwort, also, was bedeutet, es gibt keine Möglichkeiten, dies zu erreichen? –