$value) { if (property_exists(get_called_class(), $field)) { if (substr($field, 0, 5) == "vlan_" && !$value) { $model->$field = null; continue; } $model->$field = $value; } } $me = mfValuecache::singleton()->get("me"); if (!$me) { $me = new User(); $me->loadMe(); mfValuecache::singleton()->set("me", $me); } if ($model->create_by === null) { $model->create_by = $me->id; } if ($model->edit_by === null) { $model->edit_by = $me->id; } return $model; } public static function getOne($id) { if (!is_numeric($id) || !$id) { throw new Exception("Invalid number", 400); } $item = []; $db = FronkDB::singleton(); $res = $db->select("Device", "*", "id=$id LIMIT 1"); if ($db->num_rows($res)) { $data = $db->fetch_object($res); $item = new Device($data); } return $item; } public static function getAll() { $items = []; $db = FronkDB::singleton(); $res = $db->select("Device", "*"); if ($db->num_rows($res)) { while ($data = $db->fetch_object($res)) { $items[] = new Device($data); } } return $items; } public static function getFirst() { $db = FronkDB::singleton(); $where = self::getSqlFilter($filter); $res = $db->select("Device", "*", "$where ORDER BY name, network_id"); if ($db->num_rows($res)) { $data = $db->fetch_object($res); $item = new Device($data); if ($item->id) { return $item; } else { return null; } } return null; } public static function search($filter) { $items = []; $db = FronkDB::singleton(); $where = self::getSqlFilter($filter); $res = $db->select("Device", "*", "$where ORDER BY name"); if ($db->num_rows($res)) { while ($data = $db->fetch_object($res)) { $items[] = new Device($data); } } return $items; } private static function getSqlFilter($filter) { $where = "1=1 "; //var_dump($filter);exit; if (array_key_exists("pop_id", $filter)) { $popid = $filter['pop_id']; if (is_numeric($popid)) { $where .= " AND pop_id=$popid"; } } if (array_key_exists("popIds", $filter)) { $popids = $filter['popIds']; if (is_array($popids)) { $where .= " AND pop_id IN (" . implode(",", $popids) . ")"; } } //var_dump($filter, $where);exit; return $where; } public static function getOltCustomer($ip) { $items = []; $db = FronkDB::singleton(); $sql = "Select Patching.id,lastname,firstname,customer_number,company,device_name,device_port,value_string,Building.`street`,Building.`zip`, `Building`.`city`,`Building`.`contact` `BuildingContact`,`Termination`.`contact` TerminationContact FROM Workflowvalue LEFT JOIN Termination ON Termination.id=Workflowvalue.object_id LEFT JOIN Patching ON Termination.id = Patching.termination_id LEFT JOIN OrderProduct ON (Patching.termination_id=OrderProduct.termination_id) LEFT JOIN `Order` ON (`Order`.id=OrderProduct.order_id) LEFT JOIN Address ON Address.id=`Order`.owner_id LEFT JOIN Building ON Building.id=Termination.building_id WHERE `item_id` = '55' "; $res = $db->query($sql); if ($db->num_rows($res)) { while ($data = $db->fetch_array($res)) { $ontSn=$data['value_string']; $ontSn= str_replace("HWTC","48575443",$ontSn); $items[$ontSn] = $data; } } return $items; } public static function getconifg($id) { $response = ""; if (TT_MBI_API_ENABLE) : $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceconfigs/' . $id, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . TT_MBI_API_KEY), )); $response = curl_exec($curl); curl_close($curl); endif; return json_decode($response); } public static function getconifgdownload($id, $format) { $response = ""; if (TT_MBI_API_ENABLE) : $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceconfigsdownload/' . $id . '/' . $format, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . TT_MBI_API_KEY), )); $response = curl_exec($curl); curl_close($curl); endif; return ($response); } public static function configcreate($ip) { $response = ""; if (TT_MBI_API_ENABLE) : $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceconfigscreate/' . $ip, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . TT_MBI_API_KEY), )); $response = curl_exec($curl); endif; return json_decode($response); } public static function getoltInfo($ip, $portid = '', $adv = '') { if ($portid) { $portid = "/" . $portid; } if ($adv) { $adv = "/" . $adv; } $url = TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceoltinfo/' . $ip . $portid . $adv; $response = ""; if (TT_MBI_API_ENABLE) : $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . TT_MBI_API_KEY), )); $response = curl_exec($curl); curl_close($curl); endif; return json_decode($response); } public static function getontInfo($ip, $portid = '', $ont = '') { $portid = "/" . $portid; $ont = "/ont/" . $ont; $url = TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceoltinfo/' . $ip . $portid . $ont; $response = ""; if (TT_MBI_API_ENABLE) : $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . TT_MBI_API_KEY), )); $response = curl_exec($curl); curl_close($curl); endif; return json_decode($response); } public static function getontInfoMac($ip, $portid = '', $ont = '') { $portid = "/" . $portid; $ont = "/mac/" . $ont; $url = TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceoltinfo/' . $ip . $portid . $ont; $response = ""; if (TT_MBI_API_ENABLE) : $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . TT_MBI_API_KEY), )); $response = curl_exec($curl); curl_close($curl); endif; return json_decode($response); } public static function changeoltSplitter($id, $portid, $ports) { $url = TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceoltsetsplitter/' . $id . "/" . $portid . "/" . $ports; $response = ""; if (TT_MBI_API_ENABLE) : $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . TT_MBI_API_KEY), )); $response = curl_exec($curl); curl_close($curl); endif; return json_decode($response); } public static function uploadFile($id, $file) { $response = ""; if (TT_MBI_API_ENABLE) { // Überprüfe, ob im $_FILES-Array ein 'files'-Eintrag vorhanden ist // und ob mindestens eine Datei hochgeladen wurde. if (!isset($_FILES['files']) || !isset($_FILES['files']['tmp_name'][0]) || empty($_FILES['files']['tmp_name'][0])) { return json_encode(["error" => "Dateiupload fehlgeschlagen: Keine Datei unter 'files' gefunden."]); } // Baue die URL zusammen $url = TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceuploadfile/' . $id; // Erstelle ein CURLFile-Objekt aus dem ersten (und evtl. einzigen) Element $curlFile = new CURLFile( $_FILES['files']['tmp_name'][0], $_FILES['files']['type'][0], $_FILES['files']['name'][0] ); // Bereite die POST-Daten vor: Der Schlüssel "file" entspricht // eventuell den Erwartungen der API. $postFields = ['file' => $curlFile]; // cURL-Handle initialisieren und Optionen setzen $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => $url, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postFields, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . TT_MBI_API_KEY ] ]); // Führe die Anfrage aus $response = curl_exec($curl); // Fehlerbehandlung: Bei einem cURL-Fehler gebe diesen als JSON zurück if (curl_errno($curl)) { $error_msg = curl_error($curl); curl_close($curl); return json_encode(["error" => $error_msg]); } // Schließe den cURL-Handle curl_close($curl); } // Dekodiere die Antwort und gebe sie zurück return json_decode($response); } }