public function get_used($subnet, $count = false) { $ipv4 = new Ipv4($subnet); $data = $ipv4->get(); $query = \Basic\Model_Network_Ip::find()->where('addrint', '>=', 1)->where('addrint', '>=', $data['from'])->where('addrint', '<=', $data['to'])->order_by('addrint', 'asc'); if ($count) { return $query->count(); } return $query->get(); }
public function action_index() { $val = \Validation::forge('data'); $val->add_field('name', 'subnet name', 'required|min_length[1]|max_length[50]'); if ($val->run()) { $out = array(); if ($this->type >= 0) { /*** * 'subnet'=>$this->_subnet, 'mask'=>$this->_maskbit, 'from'=>$this->_intAddrFrom, 'to'=>$this->_intAddrTo, 'hosts'=>$this->_numberOfHosts, 'network'=>$this->_network */ if ($this->type == 2 or $this->type == 1) { $ip = new Ipv4($val->validated('name')); $ipdata = $ip->get(); //check if subnet already exist //$sub= Model_Subnet::find()->where('range_from','<',$ip['from'])->where('range_from','<',$ip[''])->get(); $from = $ipdata['from']; $to = $ipdata['to']; $query = \DB::query('select * from ipm_subnet where (range_from>=' . $from . ' and range_from<=' . $to . ') or (range_to>=' . $from . ' and range_to<=' . $to . ') or (range_from>=' . $from . ' and range_to<=' . $to . ') '); $sub = $query->execute(); $m = false; foreach ($sub as $s) { $error = $s; $m = true; } if (!$m) { $data = array('subnet' => $ipdata['subnet'], 'alias' => '', 'description' => '', 'size' => $ipdata['hosts'], 'mask' => $ipdata['mask'], 'type' => 0, 'vlan' => 0, 'parent' => $this->id, 'meta_update_user' => $this->user, 'range_from' => $ipdata['from'], 'range_to' => $ipdata['to']); $sub = new Model_Subnet($data); $sub->save(); $data = $this->get_ip_usage($this->id, true); echo json_encode(array('id' => $sub->id, 'subnet' => $sub->subnet, 'status' => 'valid', 'data' => $data)); } else { echo json_encode(array('status' => 'taken', 'err' => $error)); } } } } }
private function updateSubnet($ip) { $ip_int = $this->___IPv4_dotquadA_to_intA($ip); $sub = Model_Subnet::find()->where('range_from', '<=', $ip_int)->where('range_to', '>=', $ip_int)->get_one(); if ($sub) { return $sub; } else { $newsub = $this->c_class_from_Ipv4($ip); $ip_ob = new Ipv4($newsub); $ipdata = $ip_ob->get(); $data = array('subnet' => $ipdata['subnet'], 'alias' => '', 'description' => '', 'size' => $ipdata['hosts'], 'mask' => $ipdata['mask'], 'type' => 0, 'vlan' => 0, 'parent' => $this->defualtNode(), 'meta_update_user' => 1, 'range_from' => $ipdata['from'], 'range_to' => $ipdata['to']); $sub = new Model_Subnet($data); $sub->save(); return $sub; /* 'subnet'=>$this->_subnet, 'mask'=>$this->_maskbit, 'from'=>$this->_intAddrFrom, 'to'=>$this->_intAddrTo, 'hosts'=>$this->_numberOfHosts, 'network'=>$this->_network */ } }