Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1444

Přidáno uživatelem Michal Kliment před asi 12 roky(ů)

Oprava zobrazeni vsech clenu. Zapocaty prace na pridavani rozhrani.

Zobrazit rozdíly:

freenetis/branches/network/application/models/iface.php
);
/**
* List of interface types of which can be interface type child
*
* @var array
*/
private static $can_be_child_of = array
(
self::TYPE_VLAN => array
(
self::TYPE_WIRELESS,
self::TYPE_ETHERNET,
self::TYPE_BRIDGE,
self::TYPE_INTERNAL
),
self::TYPE_WIRELESS => array (self::TYPE_BRIDGE),
self::TYPE_ETHERNET => array (self::TYPE_BRIDGE),
);
/**
* Tests if type can have link
*
* @author Michal Kliment
......
/**
* Gets array of iface type to which the given type of interface may connect
*
* @param integer $type One of infaces types
* @param integer $type One of ifaces types
* @return array
*/
public static function get_can_connect_to($type)
......
}
/**
* Gets array of iface type of which the given interface may be child
*
* @param type $type One of ifaces types
* @return type
*/
public static function get_can_be_child_of($type)
{
if (array_key_exists($type, self::$can_be_child_of))
{
return self::$can_be_child_of[$type];
}
return array();
}
/**
* Returns type of current interface
*
* @author Michal Kliment
......
i.id, i.id AS iface_id, i.link_id, l.name AS link_name,
i.mac, i.name, i.comment, i.type, i.number, i.port_mode, l.bitrate,
cd.id AS connected_to_device_id, cd.name AS connected_to_device_name,
COUNT(*) AS connected_to_devices_count,
GROUP_CONCAT(cd.name SEPARATOR ', \\n') AS connected_to_devices,
COUNT(DISTINCT cd.id) AS connected_to_devices_count,
GROUP_CONCAT(DISTINCT cd.name SEPARATOR ', \\n') AS connected_to_devices,
l.wireless_norm, l.wireless_frequency, i.wireless_mode,
l.wireless_channel_width, l.wireless_ssid, ir.parent_iface_id,
pi.name AS parent_name, v.tag_802_1q
freenetis/branches/network/application/models/member.php
SELECT id, id AS member_id, name AS member_name, registration, registrations,
name, street, street_number, town, quarter, variable_symbol, aid, balance,
a_comment, a_comments_thread_id, type, entrance_date, leaving_date,
GROUP_CONCAT(redirect_type SEPARATOR ', ') AS redirect,
GROUP_CONCAT(redirect_type_text SEPARATOR ', \n') AS redirect_text,
GROUP_CONCAT(DISTINCT redirect_type SEPARATOR ', ') AS redirect,
GROUP_CONCAT(DISTINCT redirect_type_text SEPARATOR ', \n') AS redirect_text,
whitelisted, interrupt, 1 AS redirection, 1 AS email, 1 AS sms,
cloud
FROM
......
SELECT c.id AS cloud, IFNULL(u.member_id, c.member_id) AS member_id
FROM
(
SELECT c.*, IFNULL(i1.device_id,i2.device_id) AS device_id, ip.member_id
SELECT c.*, i.device_id, ip.member_id
FROM clouds c
JOIN clouds_subnets cs ON cs.cloud_id = c.id
JOIN subnets s ON cs.subnet_id = s.id
JOIN ip_addresses ip ON ip.subnet_id = s.id
LEFT JOIN ifaces i1 ON ip.iface_id = i1.id
LEFT JOIN vlan_ifaces vi ON ip.vlan_iface_id = vi.id
LEFT JOIN ifaces i2 ON vi.iface_id = i2.id
JOIN ifaces i ON ip.iface_id = i.id
) c
LEFT JOIN devices d ON c.device_id = d.id
LEFT JOIN users u ON d.user_id = u.id
......
SELECT c.id AS cloud, IFNULL(u.member_id, c.member_id) AS member_id
FROM
(
SELECT c.*, IFNULL(i1.device_id,i2.device_id) AS device_id, ip.member_id
SELECT c.*, i.device_id, ip.member_id
FROM clouds c
JOIN clouds_subnets cs ON cs.cloud_id = c.id
JOIN subnets s ON cs.subnet_id = s.id
JOIN ip_addresses ip ON ip.subnet_id = s.id
LEFT JOIN ifaces i1 ON ip.iface_id = i1.id
LEFT JOIN vlan_ifaces vi ON ip.vlan_iface_id = vi.id
LEFT JOIN ifaces i2 ON vi.iface_id = i2.id
JOIN ifaces i ON ip.iface_id = i.id
) c
LEFT JOIN devices d ON c.device_id = d.id
LEFT JOIN users u ON d.user_id = u.id
freenetis/branches/network/application/controllers/ifaces.php
*
* @param integer $device_id
*/
public function add($device_id = null)
public function add($device_id = NULL, $type = NULL)
{
$form = new Forge();
$form->group('Basic data');
$form->input('iname')
->label(__('Interface name').':')
->rules('length[3,250]');
$types = array
(
NULL => '----- '.__('Select type').' -----'
) + Iface_Model::get_types();
$form->dropdown('itype')
->label(__('Type').':')
->options($types)
->rules('required');
$member_id = NULL;
if (isset($device_id))
// device is set
if ($device_id)
{
$device = new Device_Model($device_id);
if ($device->id == 0)
Controller::error(RECORD);
$member_id = $device->user->member_id;
if ($device->id == 0)
Controller::error(RECORD);
$form->dropdown('device_id')
->label(__('Device name'))
->options(array($device_id => $device->name))
->rules('required');
$breadcrumbs = breadcrumbs::add()
->link(
'members/show_all',
'Members',
$this->acl_check_view('Members_Controller','members')
)
->link(
'members/show/'.$device->user->member_id,
'ID '.$device->user->member->id.' - '.$device->user->member->name,
$this->acl_check_view(
'Members_Controller',
'members',
$device->user->member_id
)
)
->link(
'users/show_by_member/'.$device->user->member_id,
"Users",
$this->acl_check_view(
'Users_Controller',
'users',$device->user->member_id
)
)
->link(
'users/show/'.$device->user_id,
$device->user->name.' '.$device->user->surname.' ('.$device->user->login.')',
$this->acl_check_view(
'Users_Controller',
'users',
$device->user->member_id
)
)
->link(
'devices/show_by_user/'.$device->user_id,
'Devices',
$this->acl_check_view(
'Devices_Controller',
'devices',
$device->user->member_id
)
)
->link(
'devices/show/'.$device_id,
$device->name,
$this->acl_check_view(
'Devices_Controller',
'devices',
$device->user->member_id
)
)
->text('Add new interface')
->html();
}
else
else
{
$device_model = new Device_Model();
$devices = array
(
NULL => '----- '.__('select device').' -----'
) + $device_model->select_list();
$form->dropdown('device_id')
->label(__('Device name'))
->options($devices)
->rules('required')
->add_button('devices');
$breadcrumbs = breadcrumbs::add()
->link(
'ifaces/show_all',
'Interfaces',
$this->acl_check_view('Devices_Controller','iface')
)
->text('Add new interface')
->html();
}
// access control
if (!$this->acl_check_new('Devices_Controller','iface',$member_id))
Controller::error(ACCESS);
$segment_model = new Link_Model();
$segments = array
(
NULL => '----- '.__('select segment').' -----'
) + $segment_model->select_list();
$form->dropdown('segment_id')
->label(__('Segment name'))
->style('width: 600px')
->options($segments)
->rules('required')
->callback(array($this, 'valid_segment'))
->add_button('segments');
$form->input('mac')
->label(__('MAC').':')
->rules('required|valid_mac_address');
$form->textarea('comment')
->rules('length[0,254]')
->cols('20')
->rows('5');
$form->group('Wireless setting');
$modes = array
(
NULL => '----- '.__('Select mode').' -----'
) + Wireless_iface_Model::get_modes();
$form->dropdown('wmode')
->label(__('Mode').':')
->options($modes)
->callback(array($this, 'valid_mode'));
$antennas = array
(
NULL => '----- '.__('Select antenna').' -----'
) + Wireless_iface_Model::get_antennas();
$form->dropdown('antenna')
->options($antennas);
$form->input('ssid')
->label(__('SSID').':');
$norms = array
(
NULL => '----- '.__('Select norm').' -----'
) + Wireless_segment_Model::get_norms();
$form->dropdown('norm')
->options($norms);
$form->input('frequence');
$form->input('channel');
$form->input('channel_width');
$polarizations = array
(
NULL => '----- '.__('Select polarization').' -----'
) + Wireless_segment_Model::get_polarizations();
$form->dropdown('polarization')
->options($polarizations);
$form->submit('Save');
special::required_forge_style($form, ' *', 'required');
// form is validate
if($form->validate())
if ($type)
{
$form_data = $form->as_array();
// iface type doesn't exist
if (!Iface_Model::get_type($type))
Controller::error (RECORD);
$iface = new Iface_Model();
try
$form = new Forge();
$form->group('Basic data');
$form->input('name')
->label(__('Interface name').':')
->rules('length[3,250]');
$member_id = NULL;
if ($device_id)
{
$iface->transaction_start();
$iface->name = $form_data['iname'];
$iface->type = $form_data['itype'];
$iface->device_id = $form_data['device_id'];
$iface->segment_id = $form_data['segment_id'];
$iface->mac = $form_data['mac'];
$iface->comment = $form_data['comment'];
$member_id = $device->user->member_id;
$iface->save_throwable();
$ifaces = $device->ifaces;
}
else
{
$device_model = new Device_Model();
if ($iface->type == Iface_Model::TYPE_WIRELESS)
$devices = array
(
NULL => '----- '.__('select device').' -----'
) + $device_model->select_list();
$form->dropdown('device_id')
->label(__('Device name'))
->options($devices)
->rules('required')
->add_button('devices');
$ifaces = ORM::factory('iface')->find_all();
}
// access control
if (!$this->acl_check_new('Devices_Controller','iface',$member_id))
Controller::error(ACCESS);
// print mac address field only if it can have mac address
if (Iface_Model::type_has_mac_address($type))
{
$form->input('mac')
->label(__('MAC').':')
->rules('valid_mac_address');
}
// print parent iface field only if type is VLAN
if ($type == Iface_Model::TYPE_VLAN)
{
$parent_ifaces = array();
foreach ($ifaces as $iface)
{
$iface->wireless->wmode = $form_data['wmode'];
$iface->wireless->antenna = $form_data['antenna'];
// limit options only if type is given
if (!$type ||
in_array($iface->type, Iface_Model::get_can_be_child_of($type)))
{
$parent_ifaces[$iface->id] = $iface->name;
}
}
$iface->wireless->iface_id = $iface->id;
$iface->wireless->save_throwable();
$parent_ifaces = array
(
NULL => '------- '.__('Select parent iface').' -------'
) + $parent_ifaces;
if ($iface->wireless->wmode = Wireless_iface_Model::WIRELESS_MODE_AP)
$form->dropdown('parent_iface_id')
->label('Parent iface')
->options($parent_ifaces);
$vlans = array
(
NULL => '------- '.__('Select VLAN').' -------'
) + ORM::factory('vlan')->select_list();
$form->dropdown('vlan_id')
->label('VLAN')
->options($vlans);
}
// print children ifaces field only if type is bridge
if ($type == Iface_Model::TYPE_BRIDGE)
{
$child_ifaces = array();
foreach ($ifaces as $iface)
{
// limit options only if type is given
if (!$type ||
in_array($type, Iface_Model::get_can_be_child_of($iface->type)))
{
$iface->segment->wireless->ssid = $form_data['ssid'];
$iface->segment->wireless->norm = $form_data['norm'];
$iface->segment->wireless->frequence = $form_data['frequence'];
$iface->segment->wireless->channel = $form_data['channel'];
$iface->segment->wireless->channel_width = $form_data['channel_width'];
$iface->segment->wireless->polarization = $form_data['polarization'];
$child_ifaces[$iface->id] = $iface->name;
}
}
$iface->segment->wireless->segment_id = $iface->segment->id;
$iface->segment->wireless->save_throwable();
$form->dropdown('children_ifaces')
->multiple('multiple')
->options($child_ifaces)
->size(15);
}
if ($type == Iface_Model::TYPE_PORT)
{
$modes = array
(
NULL => '------- '.__('Select port mode').' -------'
) + Iface_Model::get_port_modes();
$form->dropdown('port_mode')
->options($modes);
}
// print wireless fields only if type is wireless
if ($type == Iface_Model::TYPE_WIRELESS)
{
$modes = array
(
NULL => '----- '.__('Select mode').' -----'
) + Iface_Model::get_wireless_modes();
$form->dropdown('wireless_mode')
->label(__('Mode').':')
->options($modes)
->callback(array($this, 'valid_mode'));
$antennas = array
(
NULL => '----- '.__('Select antenna').' -----'
) + Iface_Model::get_wireless_antennas();
$form->dropdown('wireless_antenna')
->label('Antenna')
->options($antennas);
$form->input('wireless_ssid')
->label(__('SSID').':');
$norms = array
(
NULL => '----- '.__('Select norm').' -----'
) + Link_Model::get_wireless_norms();
$form->dropdown('wireless_norm')
->label('norm')
->options($norms);
$form->input('wireless_frequency')
->label('Frequency');
$form->input('wireless_channel')
->label('Channel');
$form->input('wireless_channel_width')
->label('Channel width');
$polarizations = array
(
NULL => '----- '.__('Select polarization').' -----'
) + Link_Model::get_wireless_polarizations();
$form->dropdown('wireless_polarization')
->label('Polarization')
->options($polarizations);
}
$form->textarea('comment')
->rules('length[0,254]')
->cols('20')
->rows('5');
// print link field only if type can has link
if (Iface_Model::type_has_link($type))
{
$link_model = new Link_Model();
$links = array
(
NULL => '----- '.__('select link').' -----'
) + $link_model->select_list();
$form->dropdown('link_id')
->label(__('Link name'))
->style('width: 600px')
->options($links)
->callback(array($this, 'valid_link'))
->add_button('links');
}
$form->submit('Save');
special::required_forge_style($form, ' *', 'required');
// form is validate
if($form->validate())
{
$form_data = $form->as_array();
$iface = new Iface_Model();
try
{
$iface->transaction_start();
$iface->name = $form_data['iname'];
$iface->type = $form_data['itype'];
$iface->device_id = $form_data['device_id'];
$iface->segment_id = $form_data['segment_id'];
$iface->mac = $form_data['mac'];
$iface->comment = $form_data['comment'];
$iface->save_throwable();
if ($iface->type == Iface_Model::TYPE_WIRELESS)
{
$iface->wireless->wmode = $form_data['wmode'];
$iface->wireless->antenna = $form_data['antenna'];
$iface->wireless->iface_id = $iface->id;
$iface->wireless->save_throwable();
if ($iface->wireless->wmode = Wireless_iface_Model::WIRELESS_MODE_AP)
{
$iface->segment->wireless->ssid = $form_data['ssid'];
$iface->segment->wireless->norm = $form_data['norm'];
$iface->segment->wireless->frequence = $form_data['frequence'];
$iface->segment->wireless->channel = $form_data['channel'];
$iface->segment->wireless->channel_width = $form_data['channel_width'];
$iface->segment->wireless->polarization = $form_data['polarization'];
$iface->segment->wireless->segment_id = $iface->segment->id;
$iface->segment->wireless->save_throwable();
}
}
$iface->transaction_commit();
status::success('Interface has been successfully saved.');
$this->redirect('show', $iface->id);
}
$iface->transaction_commit();
status::success('Interface has been successfully saved.');
$this->redirect('show', $iface->id);
catch (Exception $e)
{
$iface->transaction_rollback();
status::error('Error - Cannot add interface.');
$this->redirect('show_all');
}
}
catch (Exception $e)
else
{
$iface->transaction_rollback();
status::error('Error - Cannot add interface.');
$this->redirect('show_all');
$headline = __('Add new interface');
$view = new View('main');
$view->breadcrumbs = $breadcrumbs;
$view->title = $headline;
$view->content = new View('form');
$view->content->form = $form->html();
$view->content->headline = $headline;
$view->render(TRUE);
}
}
else
{
// device is set
if ($device_id)
$form = new Forge();
$types = array
(
NULL => '----- '.__('Select type').' -----'
) + Iface_Model::get_types();
$form->dropdown('type')
->label(__('Type').':')
->options($types)
->rules('required');
$form->submit('submit');
if ($form->validate())
{
$breadcrumbs = breadcrumbs::add()
->link(
'members/show_all',
'Members',
$this->acl_check_view('Members_Controller','members')
)
->link(
'members/show/'.$device->user->member_id,
'ID '.$device->user->member->id.' - '.$device->user->member->name,
$this->acl_check_view(
'Members_Controller',
'members',
$device->user->member_id
)
)
->link(
'users/show_by_member/'.$device->user->member_id,
"Users",
$this->acl_check_view(
'Users_Controller',
'users',$device->user->member_id
)
)
->link(
'users/show/'.$device->user_id,
$device->user->name.' '.$device->user->surname.' ('.$device->user->login.')',
$this->acl_check_view(
'Users_Controller',
'users',
$device->user->member_id
)
)
->link(
'devices/show_by_user/'.$device->user_id,
'Devices',
$this->acl_check_view(
'Devices_Controller',
'devices',
$device->user->member_id
)
)
->link(
'devices/show/'.$device_id,
$device->name,
$this->acl_check_view(
'Devices_Controller',
'devices',
$device->user->member_id
)
)
->text('Add new interface')
->html();
$form_data = $form->as_array();
$this->redirect('ifaces/add/'.(int) $device_id.'/'.$form_data['type']);
}
else
{
$breadcrumbs = breadcrumbs::add()
->link(
'ifaces/show_all',
'Interfaces',
$this->acl_check_view('Devices_Controller','iface')
)
->text('Add new interface')
->html();
$headline = __('Add new interface');
$view = new View('main');
$view->breadcrumbs = $breadcrumbs;
$view->title = $headline;
$view->content = new View('form');
$view->content->form = $form->html();
$view->content->headline = $headline;
$view->render(TRUE);
}
$headline = __('Add new interface');
$view = new View('main');
$view->breadcrumbs = $breadcrumbs;
$view->title = $headline;
$view->content = new View('form');
$view->content->form = $form->html();
$view->content->headline = $headline;
$view->render(TRUE);
}
} // end of add
......
}
// form
$form = new Forge('ifaces/edit/' . $iface_id);
$form = new Forge();
$form->group('Basic data');
......
->options(array($iface->device->id => $iface->device->name))
->rules('required');
$segment_model = new Link_Model();
$link_model = new Link_Model();
$segments = array(
NULL => '----- '.__('select segment').' -----'
) + $segment_model->get_all_links_to_iface_dropdown();
$links = array(
NULL => '----- '.__('select link').' -----'
) + $link_model->get_all_links_to_iface_dropdown();
$form->dropdown('segment_id')
->label(__('Segment name'))
$form->dropdown('link_id')
->label(__('Link name'))
->style('width: 600px')
->options($segments)
->rules('required')
->selected($iface->segment_id)
->callback(array($this, 'valid_segment'))
->add_button('segments');
->options($links)
->selected($iface->link_id)
->callback(array($this, 'valid_link'))
->add_button('links');
$form->input('mac')
->label(__('MAC').':')
->rules('required|valid_mac_address')
->rules('valid_mac_address')
->value($iface->mac);
$form->textarea('comment')
......
$modes = array
(
NULL => '----- '.__('Select mode').' -----'
) + Wireless_iface_Model::get_modes();
) + Iface_Model::get_wireless_modes();
$form->dropdown('wmode')
->label(__('Mode').':')
->options($modes)
->selected($iface->wireless->wmode)
->selected($iface->wireless_mode)
->callback(array($this, 'valid_mode'));
$antennas = array
(
NULL => '----- '.__('Select antenna').' -----'
) + Wireless_iface_Model::get_antennas();
) + Iface_Model::get_wireless_antennas();
$form->dropdown('antenna')
->options($antennas)
->selected($iface->wireless->antenna);
->selected($iface->wireless_antenna);
$form->input('ssid')
->value($iface->segment->wireless->ssid);
->value($iface->link->wireless_ssid);
$norms = array
(
NULL => '----- '.__('Select norm').' -----'
) + Wireless_segment_Model::get_norms();
) + Link_Model::get_wireless_norms();
$form->dropdown('norm')
->options($norms)
->selected($iface->segment->wireless->norm);
->selected($iface->link->wireless_norm);
$form->input('frequence')
->value($iface->segment->wireless->frequence);
->value($iface->link->wireless_frequency);
$form->input('channel')
->value($iface->segment->wireless->channel);
->value($iface->link->wireless_channel);
$form->input('channel_width')
->value($iface->segment->wireless->channel_width);
->value($iface->link->wireless_channel_width);
$polarizations = array
(
NULL => '----- '.__('Select polarization').' -----'
) + Wireless_segment_Model::get_polarizations();
) + Link_Model::get_wireless_polarizations();
$form->dropdown('polarization')
->options($polarizations)
->selected($iface->segment->wireless->polarization);
->selected($iface->link->wireless_polarization);
$form->submit('Update');

Také k dispozici: Unified diff