public function action_ports() { if ($_POST) { $val = \Validation::forge(); $val->add_field('dev', 'Device id', 'required|min_length[1]|max_length[20]'); $val->add_field('type', 'Port type', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $network = Model_Device_Network::find()->where('deviceID', $val->validated('dev'))->get_one(); if ($network) { $m = $network->device->cat; $out = array('status' => 'ok', 'cables' => array(), 'ports' => array()); switch ($network->device->cat) { case 2: //switch //switch case 8: //FC switch //FC switch case 3: //router /* * get data from macs * */ $macs = $network->mac; foreach ($macs as $mac) { array_push($out['ports'], array('id' => $mac->id)); } $cabels = Model_Cable::find()->where('type', 1)->where('dev1', $network->deviceID)->or_where('dev2', $network->deviceID)->get(); break; case 5: $macs = $network->mac; foreach ($macs as $mac) { if ($mac->type == $val->validated('type')) { array_push($out['ports'], array('id' => $mac->id)); } } if ($val->validated('type') == 3) { $portType = 4; } else { $portType = $val->validated('type'); } $cabels = Model_Cable::query()->where('type', $portType)->and_where_open()->where('dev1', '=', $val->validated('dev'))->or_where('dev2', '=', $val->validated('dev'))->and_where_close()->get(); break; default: $ips = $network->ip; foreach ($ips as $ip) { array_push($out['ports'], array('id' => $ip->id, 'type' => $ip->type)); } $cabels = Model_Cable::find()->where('type', 1)->where('dev1', $network->deviceID)->or_where('dev2', $network->deviceID)->get(); break; } //$out['ports']=$ports; foreach ($cabels as $cab) { array_push($out['cables'], array('id' => $cab->id, 'dev1' => $cab->dev1, 'port1' => $cab->port1, 'dev2' => $cab->dev2, 'port2' => $cab->port2, 'name1' => $cab->name1, 'name2' => $cab->name2)); } } else { $out = array('status' => 'nop'); } echo json_encode($out); } } }
private function device_network() { $net = Model_Device_Network::find()->where('deviceID', $this->device->id)->get_one(); switch ($this->net_type) { case 1: $ports = $net->ip; break; case 2: $ports = $net->mac; break; } $h = $this->ports($ports); $this->SetLeftMargin(80); $this->SetY($h + 60); $num = 1; switch ($this->net_type) { case 1: $this->ip_table($ports); break; case 2: $this->mac_table($ports); break; } }
public function action_index() { $out = array(); if (count($_GET) > 0) { /* 'buildings'=>Array(), 'rooms'=>Array(), 'floors'=>Array(), 'buildings'=>Array(), 'fields'=>Array() */ $key = false; if (isset($_GET['key'])) { $key = $_GET['key']; } if ($key) { $key_right = $key . '%'; $key = '%' . $key . '%'; //device hostname $device = Model_Device::find()->where('hostname', 'like', $key)->limit(5)->where('meta_update_user', $this->user)->get(); $m = array('type' => 'Device', 'tn' => 1, 'items' => array()); foreach ($device as $dev) { $rack = $dev->racks; $room = $rack->rooms; array_push($m['items'], array('id' => $dev->id, 'name' => $dev->hostname, 'room' => $room->id, 'rack' => $rack->id, 'floor' => $room->floors->id, 'building' => $room->floors->buildings->id)); } array_push($out, $m); //buildings $buildings = Model_Building::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Building', 'tn' => 2, 'items' => array()); foreach ($buildings as $bui) { array_push($m['items'], array('id' => $bui->id, 'name' => $bui->name)); } array_push($out, $m); //floors $floors = Model_Floor::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Floor', 'tn' => 3, 'items' => array()); foreach ($floors as $fl) { array_push($m['items'], array('id' => $fl->id, 'name' => $fl->name, 'building' => $fl->buildings->id)); } array_push($out, $m); //rooms $rooms = Model_Room::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Room', 'tn' => 4, 'items' => array()); foreach ($rooms as $rm) { array_push($m['items'], array('id' => $rm->id, 'name' => $rm->name, 'floor' => $rm->floors->id, 'building' => $rm->floors->buildings->id)); } array_push($out, $m); //racks $rack = Model_Rack::find()->where('name', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Rack', 'tn' => 5, 'items' => array()); foreach ($rack as $rm) { array_push($m['items'], array('id' => $rm->id, 'name' => $rm->name, 'floor' => $rm->rooms->floors->id, 'room' => $rm->rooms->id, 'building' => $rm->rooms->floors->buildings->id)); } array_push($out, $m); //ip address $query = \DB::query('select distinct * from network_ip_ports where ipv4 like "' . $key_right . '" group by networkID limit 0,5'); $ips = $query->as_object()->execute(); foreach ($ips as $ip) { $tab = $ip->type == 3 ? 6 : 2; $network = Model_Device_Network::find()->where('id', $ip->networkID)->get_one(); $device = $network->device; $m = array('type' => 'IPv4', 'tn' => 6, 'items' => array()); $room = $device->racks->rooms; array_push($m['items'], array('id' => $ip->id, 'name' => $ip->ipv4, 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => $tab, 'dev' => $device->id)); array_push($out, $m); } //raid $query = \DB::query('select df.id, df.name, df.tab, df.deviceID, d.hostname, df.value, hrd.model, hrd.serial_number, hrd.id as "rid" from device as d join device_fieldset as df on df.deviceID = d.id join hardware_raid AS hr on hr.fieldsetID = df.id join hardware_raid_data as hrd on hrd.hardware_raid = hr.id where hrd.model like "' . $key . '" or hrd.serial_number like "' . $key . '" group by hrd.serial_number, hrd.model'); $raid = $query->as_object()->execute(); foreach ($raid as $fd) { $device = Model_Device::find($fd->deviceID); $m = array('type' => $fd->name, 'tn' => 6, 'items' => array()); $room = $device->racks->rooms; array_push($m['items'], array('id' => $fd->id, 'name' => $fd->value, 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => $fd->tab, 'dev' => $fd->deviceID, 'hostname' => $fd->hostname, 'model' => $fd->model, 'serial' => $fd->serial_number, 'rid' => $fd->rid)); array_push($out, $m); } $notes = Model_Notes::find()->where('txt', 'like', $key)->where('meta_update_user', $this->user)->limit(5)->get(); $m = array('type' => 'Device Notes', 'tn' => 7, 'items' => array()); foreach ($notes as $note) { $device = $note->device; $room = $device->racks->rooms; array_push($m['items'], array('id' => $note->id, 'name' => substr($note->txt, -100), 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => 4, 'dev' => $device->id)); } array_push($out, $m); //ram $query = \DB::query('select df.id, df.name, df.tab, df.deviceID, d.hostname, df.value, hrd.model, hrd.serial_number, hrd.id as "rid" from device as d join device_fieldset as df on df.deviceID = d.id join hardware_ram AS hr on hr.fieldsetID = df.id join hardware_ram_data as hrd on hrd.hardware_ram = hr.id where hrd.model like "' . $key . '" or hrd.serial_number like "' . $key . '" group by hrd.serial_number, hrd.model'); $ram = $query->as_object()->execute(); foreach ($ram as $fd) { $device = Model_Device::find($fd->deviceID); $m = array('type' => $fd->name, 'tn' => 8, 'items' => array()); $room = $device->racks->rooms; array_push($m['items'], array('id' => $fd->id, 'name' => $fd->value, 'room' => $device->racks->rooms->id, 'rack' => $device->racks->id, 'building' => $room->floors->buildings->id, 'floor' => $room->floors->id, 'tab' => $fd->tab, 'dev' => $fd->deviceID, 'hostname' => $fd->hostname, 'model' => $fd->model, 'serial' => $fd->serial_number, 'rid' => $fd->rid)); array_push($out, $m); } } echo json_encode($out); } }
private function add_switch($rack, $user, $pos, $name) { $props = array('hostname' => $name, 'type' => 0, 'cat' => 2, 'rack' => $rack->id, 'rack_pos' => $pos, 'rack_units' => 1, 'parent_device' => 0, 'meta_default_data' => 0, 'meta_update_time' => time(), 'meta_update_user' => $user); //print_r($props); $this->net_type = 2; $sw = new Model_Device($props); $sw->save(); $this->add_device_default_fields($sw); $network = Model_Device_Network::find()->where('deviceID', $sw->id)->get_one(); $network->ports = 48; $network->save(); $macc = array(); for ($i = 1; $i <= 48; $i++) { $prop = array('networkID' => $network->id, 'mac_address' => '', 'conn_device' => 0, 'vlan' => 0, 'type' => 1); $macs = new Model_Network_Mac($prop); $macs->save(); array_push($macc, $macs->id); } return array('id' => $sw->id, 'macs' => $macc); }
private function insert_template_to_device_data($field, $new_field) { #hdd element data ##################################################################################### if ($field->type == 'hdd') { //get raid data $old_raid = Model_Raid::find()->where('tempfieldID', $field->id)->get_one(); $hdd = Model_Raid::find()->where('fieldsetID', $new_field->id)->get_one(); //create new hardware_raid $hdd->raid_type = $old_raid->raid_type; $hdd->size = $old_raid->size; $hdd->total = $old_raid->total; $hdd->meta_update_time = time(); $hdd->meta_update_user = $this->user; //$hdd=new Model_Raid($prop); $hdd->save(); //get all discs from array foreach ($old_raid->rows as $disc) { $m = array('model' => $disc->model, 'size' => $disc->size, 'vport' => $disc->vport, 'serial_number' => $disc->serial_number, 'hardware_raid' => $hdd->id, 'meta_update_time' => time(), 'meta_update_user' => $this->user); $discs = new Model_Raid_Data($m); $discs->save(); } } //ram ##################################################################################### if ($field->type == 'ram') { //get ram data $old_ram = Model_Ram::find()->where('tempfieldID', $field->id)->get_one(); $ram = Model_Ram::find()->where('fieldsetID', $new_field->id)->get_one(); //create new hardware_ram $ram->ram_type = $old_ram->ram_type; $ram->size = $old_ram->size; $ram->total = $old_ram->total; $ram->meta_update_time = time(); $ram->meta_update_user = $this->user; $ram->save(); //get all modules from array foreach ($old_ram->rows as $modul) { $m = array('hardware_ram' => $ram->id, 'meta_update_time' => time(), 'meta_update_user' => $this->user, 'model' => $modul->model, 'size' => $modul->size, 'port' => $modul->port, 'serial_number' => $modul->serial_number); $rams = new Model_Ram_Data($m); $rams->save(); } } //images ##################################################################################### if ($field->type == 'img') { //get field images $temp_imags = Model_Device_Template_Image::find()->where('elementID', $field->id)->get(); foreach ($temp_imags as $img) { $props = array('name' => $img->name, 'elementID' => $new_field->id, 'type' => $img->type, 'width' => $img->width, 'height' => $img->height); $imgs = new Model_Image($props); $imgs->save(); copy(DOCROOT . 'images/temp' . $img->id . '.png', DOCROOT . 'images/' . $imgs->id . '.png'); copy(DOCROOT . 'images/tumb/temp' . $img->id . '.png', DOCROOT . 'images/tumb/' . $imgs->id . '.png'); } } //power out (PDU,ATS,UPS) ##################################################################################### if ($field->type == 'power_out') { //power is set automatic as field saved $power = Model_Device_Power::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->power; if ($new_field->device->meta_default_data > 0) { $max = 42; } else { $max = 24; } if ($extra->output > $max) { $extra->output = $max; } //update default data with template power data $power->input = $extra->input; $power->output = $extra->output; $power->type = $extra->type; $power->current = $extra->current; if ($power->ru == 0) { $power->ru = $extra->ru; $power->pos = $extra->pos; } $power->save(); //delete any default socket $defsockets = Model_Device_Power_Socket::find()->where('powerID', $power->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } $n = 1; foreach ($field->power->socket as $socket) { if ($n > $max) { break; } $prop = array('powerID' => $power->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Power_Socket($prop); $newsocket->save(); if ($socket->type == 2) { $n++; } } } //power in (Server,Switch,Router,...) ##################################################################################### if ($field->type == 'power_in') { //power is set automatic as field saved $power = Model_Device_Power::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->power; //update default data with template power data $power->input = $extra->input; $power->output = $extra->output; $power->type = $extra->type; $power->current = $extra->current; $power->ru = $extra->ru; $power->pos = $extra->pos; $power->save(); //delete any default socket $defsockets = Model_Device_Power_Socket::find()->where('powerID', $power->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } foreach ($field->power->socket as $socket) { $prop = array('powerID' => $power->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Power_Socket($prop); $newsocket->save(); } } //kvm out (KVM switch) ##################################################################################### if ($field->type == 'kvm_out') { //power is set automatic as field saved $kvm = Model_Device_Kvm::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->kvm; //update default data with template power data $kvm->input = $extra->input; $kvm->output = $extra->output; $kvm->type = $extra->type; $kvm->save(); //delete any default socket $defsockets = Model_Device_Kvm_Socket::find()->where('kvmID', $kvm->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } foreach ($field->kvm->socket as $socket) { $prop = array('kvmID' => $kvm->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Kvm_Socket($prop); $newsocket->save(); } } //KVM in (Server,Switch,Router,...) ##################################################################################### if ($field->type == 'kvm_in') { //kvm is set automatic as field saved $kvm = Model_Device_Kvm::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->kvm; //update default data with template kvm data $kvm->input = $extra->input; $kvm->output = $extra->output; $kvm->type = $extra->type; $kvm->save(); //delete any default socket $defsockets = Model_Device_Kvm_Socket::find()->where('kvmID', $kvm->id)->get(); foreach ($defsockets as $ds) { $ds->delete(); } foreach ($field->kvm->socket as $socket) { $prop = array('kvmID' => $kvm->id, 'conn_type' => $socket->conn_type, 'type' => $socket->type); $newsocket = new Model_Device_Kvm_Socket($prop); $newsocket->save(); } } //network ##################################################################################### if ($field->type == 'network') { //newtwork is set automatic as field saved $network = Model_Device_Network::find()->where('fieldsetID', $new_field->id)->get_one(); $extra = $field->network; //update default data with template network data $network->type = $extra->type; $network->nics = $extra->nics; $network->vports = $extra->vports; $network->ports = $extra->ports; $network->uplinks = $extra->uplinks; $network->save(); switch ($network->type) { case 1: //IP addresses foreach ($field->network->ip as $ip) { $prop = array('networkID' => $network->id, 'nic_name' => $ip->nic_name, 'ipv4' => $ip->ipv4, 'ipv6' => $ip->ipv6, 'conn_type' => $ip->conn_type, 'conn_speed' => $ip->conn_speed, 'type' => $ip->type); $ips = new Model_Network_Ip($prop); $ips->save(); } break; //MAC and VLAN //MAC and VLAN case 2: $vlan2port = array(); //if no vlan is set to mac $vlan2port[0] = 0; foreach ($field->network->vlan as $vlan) { $prop = array('networkID' => $network->id, 'name' => $vlan->name); $vlans = new Model_Network_Vlan($prop); $vlans->save(); $vlan2port[$vlan->id] = $vlans->id; } foreach ($field->network->mac as $mac) { $prop = array('networkID' => $network->id, 'mac_address' => $mac->mac_address, 'conn_device' => $mac->conn_device, 'vlan' => $vlan2port[$mac->vlan], 'type' => $mac->type); $macs = new Model_Network_Mac($prop); $macs->save(); } break; case 3: foreach ($field->network->mac as $mac) { $prop = array('networkID' => $network->id, 'mac_address' => $mac->mac_address, 'conn_device' => $mac->conn_device, 'vlan' => $mac->vlan, 'type' => $mac->type); $macs = new Model_Network_Mac($prop); $macs->save(); } break; } } }