needlogin = true; $me = new User(); $me->loadMe(); $this->me = $me; $this->layout()->set("me", $me); if (!$me->is(["Admin"])) { $this->redirect("Dashboard"); } } protected function indexAction() { $this->layout()->setTemplate("Device/Index"); $devices = DeviceModel::getAll(); $this->layout()->set("devices", $devices); } protected function detailAction() { $id = $this->request->id; if (!is_numeric($id) || !$id) { $this->layout()->setFlash("Gerät nicht gefunden", "error"); $this->redirect("Device"); } $device = new Device($id); if ($device->id != $id) { $this->layout()->setFlash("Gerät nicht gefunden", "error"); $this->redirect("Device"); } $this->layout()->setTemplate("Device/Detail"); $devicesconfig = DeviceModel::getconifg($id); $devices = DeviceModel::getOne($id); if ($devices->devicetype->olt == "1") { $customer = DeviceModel::getOltCustomer($device->ip); } else { $customer = []; } $this->layout()->set("devicesconfig", $devicesconfig); $this->layout()->set("devices", $devices); $this->layout()->set("customer", $customer); } protected function addAction() { $this->layout()->setTemplate("Device/Form"); $this->layout()->set("devicetypes", DevicetypeModel::getAll()); $this->layout()->set("pops", PopModel::getAll()); } protected function editAction() { $id = $this->request->id; if (!is_numeric($id) || !$id) { $this->layout()->setFlash("Device nicht gefunden", "error"); $this->redirect("Device"); } $device = new Device($id); if ($device->id != $id) { $this->layout()->setFlash("Device nicht gefunden", "error"); $this->redirect("Device"); } $this->layout()->set("device", $device); return $this->addAction(); } protected function saveAction() { $r = $this->request; $id = $r->id; //var_dump($r->get());exit; if (is_numeric($id) && $id > 0) { $mode = "edit"; $device = new Device($id); if (!$device->id) { $this->layout()->setFlash("Device nicht gefunden", "error"); $this->redirect("Device"); } } else { $mode = "add"; } $data = []; $data['name'] = trim($r->name); $data['devicetype_id'] = $r->devicetype_id; $data['autobackup'] = trim($r->autobackup); if (trim($r->pop_id) == "0") { $data['pop_id'] = NULL; } else { $data['pop_id'] = $r->pop_id; } if (!(trim($r->addr_street))) { $data['addr_street'] = NULL; $data['addr_number'] = NULL; $data['addr_extended'] = NULL; $data['addr_zip'] = NULL; $data['addr_city'] = NULL; } else { $data['addr_street'] = $r->addr_street; $data['addr_number'] = $r->addr_number; $data['addr_extended'] = $r->addr_extended; $data['addr_zip'] = $r->addr_zip; $data['addr_city'] = $r->addr_city; } if (!trim($r->gps_lat) || !trim($r->gps_long)) { $data['gps_lat'] = NULL; $data['gps_long'] = NULL; } else { $data['gps_lat'] = $r->gps_lat; $data['gps_long'] = $r->gps_long; } if ($data['autobackup'] != "1") { $data['autobackup'] = "0"; } $data['ip'] = $r->ip; $data['mac'] = $r->mac; $data['serial'] = $r->serial; if ($r->snmp_version) { $data['snmp_version'] = $r->snmp_version; } else { $data['snmp_version'] = NULL; } if (empty(trim($r->price))) { $data['price'] = "0.00"; } else { $data['price'] = $r->price; } if (empty(trim($r->power))) { $data['power'] = "0.0"; } else { $data['power'] = $r->power; } $data['comment'] = $r->comment; $ipv4_validation_regex = "/^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"; if (!$data['name']) { $this->layout()->setFlash("Name darf nicht leer sein", "error"); $this->redirect("Device"); } if (!$data['ip']) { $this->layout()->setFlash("IP-Adresse darf nicht leer sein", "error"); $this->redirect("Device"); } else if (!preg_match($ipv4_validation_regex, trim($data['ip']))) { $this->layout()->setFlash("IP-Adresse ist nicht gültig", "error"); $this->redirect("Device"); } // var_dump($_FILES); // var_dump($upload); // exit; if ($mode == "edit") { $device->update($data); } else { $device = DeviceModel::create($data); } // var_dump($device); // exit; $id = $device->save(); $returnUrl = "Device"; $returnAction = "Index"; $returnVariables = array(); $returnAnker = ""; if ($this->request->returnto) { if (strpos($this->request->returnto, "-") !== false) { $urls = explode('-', $this->request->returnto); $urlCounter = 0; $returnUrlGen = ""; foreach ($urls as $url) { if ($urlCounter > 0) { $returnUrlGen .= "/"; } $returnUrlGen .= ucfirst($url); $urlCounter++; } $returnAction = ""; $returnVariables['id'] = $id; $returnUrl = $returnUrlGen; } else { $returnUrl = ucfirst($this->request->returnto); } } if (!$id) { $returnVariables['id'] = $r->id; if ($mode == "edit") { $this->layout()->setFlash("Device konnte nicht gespeichert werden", "error"); } else if ($mode = "add") { $this->layout()->setFlash("Device konnte nicht angelegt werden", "error"); } $this->redirect($returnUrl, $returnAction, $returnVariables, $returnAnker); } if ($mode == "edit") { $this->layout()->setFlash("Device erfolgreich geändert", "success"); } else if ($mode = "add") { $this->layout()->setFlash("Device erfolgreich angelegt", "success"); } $this->redirect($returnUrl, $returnAction, $returnVariables, $returnAnker); } protected function apiAction() { if (!$this->me->is(["Admin"])) { $return = false; } $do = $this->request->do; $format = $this->request->format; $filename = $this->request->filename; $id = $this->request->id; $ip = $this->request->ip; $portid = $this->request->portid; $ports = $this->request->ports; $adv = $this->request->adv; $ont = $this->request->ont; $data = []; switch ($do) { case "getconfig": $return = $this->getConfig($id, $format, $filename); break; case "createconfig": $return = $this->createConfig($ip); break; case "getoltinfo": $return = $this->getoltInfo($ip, $portid, $adv); break; case "getontinfo": $return = $this->getontInfo($ip, $portid, $ont); break; case "getontinfomac": $return = $this->getontInfoMac($ip, $portid, $ont); break; case "changeoltsplitter": $return = $this->changeoltSplitter($id, $portid, $ports); break; default: $return = false; } } protected function deleteAction() { $id = $this->request->id; $device = new Device($id); if (!$device->id || $device->id != $id) { $this->layout()->setFlash("Gerätetyp nicht gefunden.", "error"); $this->redirect("Device"); } $device->delete(); $this->redirect("Device"); } private function getConfig($id, $format, $filename) { $configDownload = DeviceModel::getconifgdownload($id, $format); // // header('Content-Type: application/octet-stream'); header('Content-Type: text/plain'); header('Content-disposition: attachment; filename="' . $filename . '"'); echo $configDownload; exit; } private function createConfig($ip) { $r = $this->request; $id = $r->id; $createConfig = DeviceModel::configcreate($ip); if ($createConfig->success === "true") { $this->layout()->setFlash("Backup wurde erfolgreich erstellt", "success"); } elseif (!TT_MBI_API_ENABLE) { $this->layout()->setFlash("Backup konnte nicht erstellt werden. Fehler: Schnittstellenserver wurde vom Admin deaktiviert.", "error"); } else { $this->layout()->setFlash("Backup konnte nicht erstellt werden. Fehler: " . $createConfig->error, "error"); } $returnUrl = "Device"; $returnAction = "Detail"; $returnVariables['id'] = $id; return $this->redirect($returnUrl, $returnAction, $returnVariables, $returnAnker); } private function changeoltSplitter($id, $portid, $ports) { $changeOltSplitter = DeviceModel::changeoltSplitter($id, $portid, $ports); echo json_encode($changeOltSplitter); exit; } private function getoltInfo($ip, $portid, $adv) { $r = $this->request; $id = $r->id; $getOltInfo = DeviceModel::getoltInfo($ip, $portid, $adv); echo json_encode($getOltInfo); exit; } private function getontInfo($ip, $portid, $ont) { $r = $this->request; $id = $r->id; $getOntInfo = DeviceModel::getontInfo($ip, $portid, $ont); echo json_encode($getOntInfo); exit; } private function getontInfoMac($ip, $portid, $ont) { $r = $this->request; $id = $r->id; $getOntInfo = DeviceModel::getontInfoMac($ip, $portid, $ont); echo json_encode($getOntInfo); exit; } }