php - cPanel / WHM Single Sign On with API -
really struggling one. trying write php script authenticates cpanel account , logs user in.
if there take through code below , let me know going wrong grateful...
if(isset($_get['account'])) { $cpanel_user = $_get['account']; $query = "https://whm.brixly.uk:2087/json-api/create_user_session?api.version=1&user=$cpanel_user&service=cpaneld"; $curl = curl_init(); // create curl object. curl_setopt($curl, curlopt_ssl_verifypeer, false); // allow self-signed certificates... curl_setopt($curl, curlopt_ssl_verifyhost, false); // , certificates don't match hostname. curl_setopt($curl, curlopt_header, false); // not include header in output curl_setopt($curl, curlopt_returntransfer, true); // return contents of transfer on curl_exec. $header[0] = "authorization: basic " . base64_encode($reseller_username.":".$reseller_password) . "\n\r"; curl_setopt($curl, curlopt_httpheader, $header); // set username , password. curl_setopt($curl, curlopt_url, $query); // execute query. $result = curl_exec($curl); if ($result == false) { error_log("curl_exec threw error \"" . curl_error($curl) . "\" $query"); // log error if curl exec fails } $decoded_response = json_decode( $result, true ); $session_url = $decoded_response['data']['url']; $cookie_jar = 'cookie.txt'; curl_setopt($curl, curlopt_httpheader, null); // unset authentication header. curl_setopt($curl, curlopt_cookiesession, true); // initiate new cookie session. curl_setopt($curl, curlopt_cookiejar, $cookie_jar); // set cookie jar. curl_setopt($curl, curlopt_cookiefile, $cookie_jar); // set cookie file. curl_setopt($curl, curlopt_url, $session_url); // set query url session login url. $result = curl_exec($curl); // execute session login call. if ($result == false) { error_log("curl_exec threw error \"" . curl_error($curl) . "\" $query"); // log error if curl_exec fails. } $session_url = preg_replace( '{/login(?:/)??.*}', '', $session_url ); // make $session_url = https://10.0.0.1/$session_key $query = "$session_url/execute/ftp/list_ftp"; curl_setopt($curl, curlopt_url, $query); // change query url use uapi call. $result = curl_exec($curl); // execute uapi call. if ($result == false) { error_log("curl_exec threw error \"" . curl_error($curl) . "\" $query"); // log error if curl exec fails } curl_close($curl); header("location: $query"); print $result; } rather above code logging in, redirects cpanel login page.
all of variables passing correct url coming back. far aware, url needs posted in order set cookie authenticate session.
many thanks,
dennis
earlier used script too, not work - maybe cpanel update caused problem. :( if possible, try use "username , password authentication".
<?php $query = "https://whm.brixly.uk:2087/json-api/listaccts?api.version=1"; $curl = curl_init(); // create curl object curl_setopt($curl, curlopt_ssl_verifypeer, 0); // allow self-signed certs curl_setopt($curl, curlopt_ssl_verifyhost, 0); // allow certs not match hostname curl_setopt($curl, curlopt_header, 0); // not include header in output curl_setopt($curl, curlopt_returntransfer, 1); // return contents of transfer on curl_exec $header[0] = "authorization: basic " . base64_encode($reseller_username.":".$reseller_password) . "\n\r"; curl_setopt($curl, curlopt_httpheader, $header); // set username , password curl_setopt($curl, curlopt_url, $query); // execute query $result = curl_exec($curl); if ($result == false) { error_log("curl_exec threw error \"" . curl_error($curl) . "\" $query"); // log error if curl exec fails } curl_close($curl); print $result; ?>
Comments
Post a Comment