private function update_location($sub, $ip) { $rack = $ip->network->device->racks; $room = $rack->rooms; $floor = $room->floors; $building = $floor->buildings; $loc = \Ipm\Model_Location::find()->where('rack', $rack['id'])->where('node', $sub->id)->get_one(); if (!$loc) { $in = array('node' => $sub->id, 'type' => 0, 'building' => $building['id'], 'floor' => $floor['id'], 'room' => $room['id'], 'rack' => $rack['id'], 'pos_from' => 1, 'pos_to' => $rack['size']); $location = new \Ipm\Model_Location($in); $location->save(); } }
public static function IsValidLocation($sub, $device, $ip) { $valid = false; $locations = \Ipm\Model_Location::find()->where('node', $sub->id)->get(); \Log::debug('isvalid ::'); $device = $ip->network->device; $data = array($device->racks->rooms->id, $device->racks->rooms->floors->id, $device->racks->rooms->floors->buildings->id); foreach ($locations as $loc) { if ($loc->rack > 0) { //different racks if ($loc->rack == $device->racks->id) { if ($device->rack_pos >= $loc->pos_from and $device->rack_pos <= $loc->pos_to) { \Log::debug('rack ok::' . $ip->ipv4); $valid = true; } } } else { $fields = array('room', 'floor', 'building'); for ($i = 0; $i <= 2; $i++) { if ($loc[$fields[$i]] > 0) { if ($loc[$fields[$i]] == $data[$i]) { $valid = true; \Log::debug($fields[$i] . '::' . $ip->ipv4); } } } } } if (!$valid) { \Log::debug('clean ip port::' . $ip->ipv4); $ipv4 = new \Ipm\Ipv4object($ip->ipv4); $ipv4Int = $ipv4->toInt(); if ($ipv4Int > 0) { $q = array('ip_dotted' => $ip->ipv4, 'ip_int' => $ipv4Int, 'time' => time(), 'device' => 0, 'devname' => '', 'user' => 1); if ($ipv4Int > 0) { $history = new \Ipm\Model_History($q); $history->save(); } } $ip->ipv4 = ''; $ip->save(); } }
public function action_index() { $val2 = \Validation::forge('data'); $val2->add_field('name', 'subnet name', 'required|min_length[1]|max_length[50]'); if ($val2->run()) { $out = array(); if ($this->type >= 0) { $lo = \Ipm\Model_Location::find()->where('id', $val2->validated('name'))->get_one(); if ($lo) { $lo->delete(); $o = $this->structure(); $out = array('status' => 'ok', 'data' => $o); } else { $out = array('status' => 'no'); } echo json_encode($out); } } }