Omskrive function til Unifi / cURL
Hejsa,Jeg sidder og roder med en portal løsning til en Unifi controller.
Den kan man kommunikere med via curl, og det jeg har fået stykket sammen virker sådan set også fint med basis funktionerne.
Nu har jeg fundet en function fra en Class som jeg vil prøve at implementere, men kan ikke rigtig finde ud af hvordan jeg skal omskrive koden så den virker med den måde jeg sender kommandoer afsted.
Nogen som kan sige mig hvordan det gøres... er det expert i PHP, men kan lidt til "husbehov" :)
Her er den function jeg har fundet:
public function list_guests() {
$return=array();
if (!$this->is_loggedin) return $return;
$return=array();
$content=$this->exec_curl($this->baseurl."/api/s/".$this->site."/stat/sta","json={}");
$content_decoded=json_decode($content);
if (isset($content_decoded->meta->rc)) {
if ($content_decoded->meta->rc == "ok") {
if (is_array($content_decoded->data)) {
foreach ($content_decoded->data as $guest) {
$return[]=$guest;
}
}
}
}
return $return;
}
Og her er hvordan jeg laver kald nu:
function sendLogout($id)
{
global $unifiServer;
global $unifiUser;
global $unifiPass;
global $sitename;
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, TRUE);
$cookie_file = "/tmp/unifi_cookie";
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
curl_setopt($ch, CURLOPT_URL, "$unifiServer/api/login");
$data = json_encode(array("username" => $unifiUser, "password" => $unifiPass));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_exec ($ch);
// Send user to deauthorize
$data = json_encode(array(
'cmd'=>'unauthorize-guest',
'mac'=>$id));
curl_setopt($ch, CURLOPT_URL, $unifiServer . "/api/s/$sitename/cmd/stamgr");
curl_setopt($ch, CURLOPT_POSTFIELDS, 'json='.$data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_exec ($ch);
curl_setopt($ch, CURLOPT_URL, $unifiServer.'/logout');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
}