Hi Team,

As title said how to achive this part i.e using curl request get the novnc 
access.

Till now:
I got user session key from user login

say:
Array ( [loginresponse] => Array ( [username] => admin [userid] => 
f8fc2819-863a-11eb-8ae3-005056bd05cc [domainid] => 
a69b2912-863a-11eb-8ae3-005056bd05cc [timeout] => 1800 [account] => admin 
[firstname] => admin [lastname] => cloud [type] => 1 [timezone] => UTC 
[timezoneoffset] => 0.0 [registered] => false [sessionkey] => 
2emqvIDPkF1oDciRE8rVfvS2yqE ) )

Access denied. Invalid web session or API key in request

My PHP Code:
<?php $endpoint = 'http://localhost:8080/client/api'; $apiKey = 
'SH3j2o3CLpKQrDoWNBMuf6EWoKAUHc1ubTsiHEdchITQRhzgv7Fjt4-0I4bcKmTn6E9Y6GNCrkeA'; 
$secretKey = 
'5nyeq6svs47WjTq4SYhl0388ikljBTAsXHmFmV2ZOT7fJakuDL9raSjmeQXaP_irOH-n6DW2zAl9Q';
 function getSignature($queryString) { $hash = @hash_hmac("SHA1", $queryString, 
$secretKey, true); $base64encoded = base64_encode($hash); return 
urlencode($base64encoded); } $args['username'] = "admin"; $args['password'] = 
"V5grK%mks9"; $args['domain'] = "/"; $args['command'] = 'login'; 
$args['response'] = "json"; $args['apikey'] = $apiKey; $args['timestamp'] = 
round(microtime(true) * 1000); ksort($args); $query = http_build_query($args); 
$query = str_replace("+", "%20", $query); $query .= "&signature=" . 
getSignature(strtolower($query)); $ch = curl_init(); curl_setopt($ch, 
CURLOPT_URL, $endpoint); //$url curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, '3'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 
"POST"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt ($ch, 
CURLOPT_POSTFIELDS, $query); curl_setopt ($ch, CURLOPT_POST, 1); $json = 
curl_exec($ch); if (curl_errno($ch)) { $json = 
json_encode(array('createdomainresponse' => array('errortext' => 
curl_error($ch)))); } curl_close($ch); $response = json_decode($json, true); 
//The above used to generate user session echo '<pre>'; print_r($response); 
echo '</pre>'; $arg['cmd'] = 'access'; $arg['vm'] = 
'd692f12c-80d7-44b4-a880-224d3239a527'; $arg2['apikey'] = $apiKey; 
$arg2['timestamp'] = round(microtime(true) * 1000); ksort($arg); $query2 = 
http_build_query($arg2); $query3 = http_build_query($arg); $query2 = 
str_replace("+", "%20", $query2); $query2 .= "&signature=" . 
getSignature(strtolower($query2)); $endpoint2 = 
'http://localhost:8080/client/console'; $url2 = $endpoint2 . "?" . $query3 . 
'&sessionkey='.$response['loginresponse']['sessionkey']; $ch2 = curl_init(); 
curl_setopt($ch2, CURLOPT_URL, $url2); //$url curl_setopt($ch2, 
CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch2, CURLOPT_TIMEOUT, '3'); $headers = 
array(); $headers[] = 'sessionkey: 
'.$response['loginresponse']['sessionkey'].''; curl_setopt($ch2, 
CURLOPT_HTTPHEADER, $headers); curl_setopt($ch2, CURLOPT_VERBOSE, true); 
curl_setopt($ch2, CURLOPT_STDERR, fopen(dirname(__FILE__).'/errorlog.txt', 
'w')); $json2 = curl_exec($ch2); if (curl_errno($ch2)) { $json2 = 
json_encode(array('createdomainresponse' => array('errortext' => 
curl_error($ch2)))); } curl_close($ch2); $response2 = json_decode($json2, 
true); echo '<pre>'; print_r($json2); echo '</pre>';

Reply via email to