public function action_index() { if ($_POST) { $val = \Validation::forge(); $val->add_field('room', 'Room id', 'required|min_length[1]|max_length[20]'); if ($val->run()) { \Fuel\Core\Module::load('basic'); $room = \Basic\Model_Room::find($val->validated('room')); if ($room) { $query = \DB::query('select distinct cables.id from cables, rack, device where rack.room=' . $room->id . ' and device.rack=rack.id and (device.id=cables.dev1 or device.id=cables.dev2)'); $cables = $query->as_object()->execute(); $cabledata = array(); foreach ($cables as $c) { $cab = \Basic\Model_Cable::find($c->id); $dev1 = \Basic\Model_Device::find($cab->dev1); $dev2 = \Basic\Model_Device::find($cab->dev2); array_push($cabledata, array('id' => $cab->id, 'dev1' => $cab->dev1, 'port1' => $cab->port1, 'dev2' => $cab->dev2, 'port2' => $cab->port2, 'name1' => $cab->name1, 'name2' => $cab->name2, 'type' => $cab->type, 'hostname1' => $dev1->hostname, 'hostname2' => $dev2->hostname)); } $data['cabledata'] = $cabledata; $data['room'] = $room; return \Response::forge(\View::forge('rack', $data)); } } } }
private function IsCableConnected($dev, $mac) { if ($mac > 0) { $cable = \Basic\Model_Cable::find()->where('dev1', $dev)->where('port1', $mac)->get_one(); if ($cable) { return array('dev' => $cable->dev2, 'port' => $cable->port2); } else { $cable = \Basic\Model_Cable::find()->where('dev2', $dev)->where('port2', $mac)->get_one(); if ($cable) { return array('dev' => $cable->dev1, 'port' => $cable->port1); } } } return false; }
public function action_index() { if ($this->id) { $out = array('type' => $this->type, 'data' => array()); switch ($this->type) { case 'build': array_push($out['data'], array('name' => 'All', 'id' => 'all')); //return floors $building = \Basic\Model_Building::find($this->id); foreach ($building->floor as $floor) { array_push($out['data'], array('name' => $floor['name'], 'id' => $floor['id'])); } break; case 'floor': array_push($out['data'], array('name' => 'All', 'id' => 'all')); //return rooms $data = \Basic\Model_Floor::find($this->id); foreach ($data->room as $room) { array_push($out['data'], array('name' => $room['name'], 'id' => $room['id'])); } break; case 'room': array_push($out['data'], array('name' => 'All', 'id' => 'all')); //return racks $data = \Basic\Model_Room::find($this->id); foreach ($data->rack as $rack) { array_push($out['data'], array('name' => $rack['name'], 'id' => $rack['id'], 'size' => $rack['size'])); } break; case 'rack': array_push($out['data'], array('name' => 'All', 'id' => 'all')); //return panels $data = \Basic\Model_Rack::find($this->id); if (count($data->device)) { foreach ($data->device as $device) { if ($device['cat'] == 5) { array_push($out['data'], array('name' => $device['hostname'], 'id' => $device['id'], 'size' => $device['size'])); } } } break; case 'rack2': array_push($out['data'], array('name' => 'All', 'id' => 'all')); //return panels $data = \Basic\Model_Rack::find($this->id); if (count($data->device)) { foreach ($data->device as $device) { array_push($out['data'], array('name' => $device['hostname'], 'id' => $device['id'], 'size' => $device['size'])); } } break; case 'panel_int': //cable $cab = \Basic\Model_Cable::find($_POST['cab']); if ($cab->port1 == $this->id) { $did = $cab->dev2; } else { $did = $cab->dev1; } $device = \Basic\Model_Device::find()->where('id', $did)->get_one(); $devices = \Basic\Model_Device::find()->where('rack', $device->rack)->get(); $rack = \Basic\Model_Rack::find($device->rack); $racks = \Basic\Model_Rack::find()->where('room', $rack->room)->get(); $data = array('racks' => array(), 'devices' => array()); foreach ($devices as $device) { array_push($data['devices'], array('id' => $device->id, 'name' => $device->hostname)); } foreach ($racks as $rack) { array_push($data['racks'], array('id' => $rack->id, 'name' => $rack->name)); } array_push($out['data'], $data); break; case 'panel_ext': //cable $cab = \Basic\Model_Cable::find($_POST['cab']); if ($cab->port1 == $this->id) { $did = $cab->dev2; } else { $did = $cab->dev1; } // devices $device = \Basic\Model_Device::find()->where('id', $did)->get_one(); $devices = \Basic\Model_Device::find()->where('rack', $device->rack)->get(); // rack $rack = \Basic\Model_Rack::find($device->rack); $racks = \Basic\Model_Rack::find()->where('room', $rack->room)->get(); // room $room = \Basic\Model_Room::find($rack->room); $rooms = \Basic\Model_Room::find()->where('floor', $room->floor)->get(); // floor $floor = \Basic\Model_Floor::find($room->floor); $floors = \Basic\Model_Floor::find()->where('building', $floor->building)->get(); // building $buildings = \Basic\Model_Building::find('all'); $data = array('buildings' => array(), 'floors' => array(), 'rooms' => array(), 'racks' => array(), 'devices' => array()); foreach ($devices as $device) { array_push($data['devices'], array('id' => $device->id, 'name' => $device->hostname)); } foreach ($racks as $rack) { array_push($data['racks'], array('id' => $rack->id, 'name' => $rack->name)); } foreach ($rooms as $room) { array_push($data['rooms'], array('id' => $room->id, 'name' => $room->name)); } foreach ($floors as $floor) { array_push($data['floors'], array('id' => $floor->id, 'name' => $floor->name)); } foreach ($buildings as $building) { array_push($data['buildings'], array('id' => $building->id, 'name' => $building->name)); } array_push($out['data'], $data); break; } echo json_encode($out); } }
} $out['data'] = $macdata; foreach ($vlans as $vlan) { $dd = array('id' => $vlan->id, 'name' => $vlan->name); array_push($vlandata, $dd); } $data = array(array('title' => 'General', 'items' => array(array('act' => 'act3', 'field' => 'Number of ports', 'value' => $net->ports, 'element' => 'select', 'min' => 0, 'max' => 48, 'width' => 135, 'class' => 'port_select'), array('act' => 'act4', 'field' => 'Number of uplink ports', 'element' => 'select', 'value' => $net->uplinks, 'min' => 0, 'max' => 4, 'width' => 135, 'class' => 'port_select'), array('act' => 'act2', 'field' => 'Management IP ports', 'value' => $net->vports, 'element' => 'select', 'min' => 0, 'max' => 48, 'width' => 135, 'class' => 'port_select'))), array('title' => 'Ports', 'items' => array(array('special' => 'mactable', 'count' => $net->ports + $net->uplinks, 'element' => 'none', 'class' => 'win_iptable', 'trclass' => 'head', 'attr' => array('cellpadding' => 5, 'cellspacing' => 0), 'tr' => array(array('name' => 'Port', 'attr' => array('width' => '10%'), 'class' => ''), array('name' => 'MAC addresses', 'attr' => array('width' => '30%'), 'class' => ''), array('name' => 'Connected Device', 'attr' => array('width' => '60%'), 'class' => '')), 'struct' => array(array('el' => 'num', 'attr' => array('width' => '10%'), 'class' => ''), array('el' => 'input', 'attr' => array('width' => '30%'), 'class' => ''), array('el' => 'input', 'attr' => array('width' => '50%'), 'class' => ''))))), array('title' => 'IP Adrresses', 'items' => array(array('special' => 'iptable', 'count' => $net->nics, 'element' => 'none', 'class' => 'win_iptable win_table_small', 'conn' => $conn, 'trclass' => 'head', 'attr' => array('cellpadding' => 0, 'cellspacing' => 0), 'items' => $ipdata))), array('title' => 'Vlans', 'items' => array(array('special' => 'vlan', 'ports' => $net->ports + $net->uplinks, 'element' => 'none', 'class' => '', 'items' => $vlandata))), array('title' => 'Config data', 'items' => array(array('special' => 'config', 'field' => 'Config file of switch', 'element' => 'none', 'class' => 'text_notes', 'values' => $net->config_data)))); break; case 3: // pach panel $ipdata = array(); $macdata = array(); $i = 1; foreach ($macs as $mac) { $cab1 = \Basic\Model_Cable::find()->where('port1', $mac->id)->get(); $cab2 = \Basic\Model_Cable::find()->where('port2', $mac->id)->get(); $dev11 = \Basic\Model_Device::find()->where('id', $cab1->dev1); $dev12 = \Basic\Model_Device::find()->where('id', $cab1->dev2); $dev21 = \Basic\Model_Device::find()->where('id', $cab2->dev1); $dev22 = \Basic\Model_Device::find()->where('id', $cab2->dev2); $d = array('n' => $i, 'id' => $mac->id, 'mac_addr' => $mac->mac_address, 'conn_dev' => $mac->conn_device, 'type' => $mac->type, 'vlan' => $mac->vlan, 'devname11' => $dev11->hostname, 'devname12' => $dev12->hostname, 'devname21' => $dev21->hostname, 'devname22' => $dev22->hostname); array_push($macdata, $d); $i++; } $out['data'] = $macdata; $data = array(array('title' => 'General', 'items' => array(array('act' => 'act6', 'field' => 'Number of ports', 'value' => $net->ports / 2, 'element' => 'select', 'min' => 0, 'max' => 48, 'width' => 135, 'class' => 'port_select'))), array('title' => 'Ports', 'items' => array(array('special' => 'paneltable', 'count' => $net->ports + $net->uplinks, 'element' => 'none', 'class' => 'win_iptable', 'trclass' => 'head', 'items' => $macdata, 'conn' => $conn, 'attr' => array('cellpadding' => 5, 'cellspacing' => 0), 'tr' => array(array('name' => 'Port', 'attr' => array('width' => '10%'), 'class' => ''), array('name' => 'Patch panel', 'attr' => array('width' => '35%'), 'class' => ''), array('name' => 'Network port', 'attr' => array('width' => '35%'), 'class' => ''), array('name' => 'Connector', 'attr' => array('width' => '20%'), 'class' => '')), 'struct' => array(array('el' => 'num', 'attr' => array('width' => '10%'), 'class' => ''), array('el' => 'input', 'attr' => array('width' => '35%'), 'class' => ''), array('el' => 'input', 'attr' => array('width' => '35%'), 'class' => ''), array('el' => 'select', 'attr' => array('width' => '20%'), 'class' => '')))))); break; default: break; } $out['items'] = $data;