Exemplo n.º 1
0
function guifi_get_currentDeviceIpv4s($device)
{
    $ips = array();
    if (empty($device['ipv4'])) {
        return $ips;
    }
    foreach ($device['ipv4'] as $k => $ip) {
        if (empty($ip[netmask])) {
            continue;
        }
        $ipc = _ipcalc($ip['ipv4'], $ip['netmask']);
        $interfaces = guifi_get_currentInterfaces($device);
        if (array_key_exists($ip['interface_id'], $interfaces)) {
            $ki = $ip['interface_id'];
        } else {
            $ki = $device['id'] . ',' . $ip['id'];
        }
        $ips[$ip['interface_id'] . ',' . $ip['id']] = $ip['ipv4'] . '/' . $ipc['maskbits'] . ' ' . $interfaces[$ki];
    }
    return $ips;
}
Exemplo n.º 2
0
/**
 * @param array containing editing device information  $edit
 * @param weight form ewlements $form_weight
 */
function guifi_vinterfaces_form($iClass, $edit, &$form_weight)
{
    global $user;
    guifi_log(GUIFILOG_TRACE, 'function guifi_vinterfaces_form(iClass)', $edit[$iClass]);
    switch ($edit[type]) {
        case 'switch':
            if (!$edit[variable][managed] or in_array($iClass, 'tunnels')) {
                return;
            }
            break;
        case 'radio':
            if (empty($edit[variable][firmware_id])) {
                return;
            }
            $firm = guifi_get_firmware($edit[variable][firmware_id]);
            if (!in_array($iClass, $firm->managed)) {
                return;
            }
            break;
        default:
            return;
    }
    switch ($iClass) {
        case 'aggregations':
            $icon = '/icons/aggr-16.png';
            $iconNew = '/icons/aggr-new.png';
            $msg = t('Aggregations (bridges, bondings...) section');
            $ititle = t('Aggregations');
            break;
        case 'vlans':
            $icon = '/icons/vlans-16.png';
            $iconNew = '/icons/vlans-new.png';
            $msg = t('Virtual Interfaces (vlans,vrrp...) section');
            $ititle = t('Virtual Interfaces');
            break;
        default:
            $icon = '/icons/ports-16.png';
            $msg = t('%iClass section', array('%iClass' => $iClass));
            break;
    }
    // Build vinterface fieldset
    $form = array('#type' => 'fieldset', '#title' => t($ititle) . ' - ' . count($edit[$iClass]), '#collapsible' => TRUE, '#tree' => TRUE, '#collapsed' => TRUE, '#weight' => $form_weight++, '#prefix' => '<br><img src="/' . drupal_get_path('module', 'guifi') . $icon . '"> ' . $msg . '<div id="add-' . $iClass . '">', '#suffix' => '</div>');
    if (empty($edit[$iClass])) {
        guifi_log(GUIFILOG_TRACE, 'function guifi_ports_form(empty)', $iClass);
        guifi_vinterface_form($form, $iClass, 0, $edit, true, $form_weight);
        /* $form['msgnone'] = array(
             '#type' =>'item',
             '#value'=>t('None'),
             '#weight'=>$form_weight++,
           ); */
    }
    // Loop across all existing interfaces
    $vif_count = 0;
    $total_vif = count($iClass);
    $first_vif = true;
    // placeholder for the add interface form
    /* $form['vifs'] = array(
        '#parents'   => array('vifs'),
        '#type'      => 'fieldset',
        '#prefix'    => '<div id="add-'.$iClass.'">',
        '#suffix'    => '</div>',
        '#weight'    => $form_weight++,
      ); */
    guifi_log(GUIFILOG_TRACE, 'function guifi_vinterfaces_form(edit)', $edit[$iClass]);
    foreach ($edit[$iClass] as $vifId => $vif) {
        guifi_log(GUIFILOG_TRACE, 'function guifi_vinterfaces_form(vint LOOP)', $vifId);
        $form[$vifId] = guifi_vinterface_form($iClass, $vif, $first_vif, guifi_get_currentInterfaces($edit));
        $first_vif = false;
    }
    guifi_log(GUIFILOG_TRACE, 'function guifi_ports_form(vint LOOP AFTER)', $form);
    // placeholder for the add interface form
    /*  $form['vinew'] = array(
        '#type'   => 'hidden',
        '#prefix' => '<div id="add-'.$iClass.'">',
        '#suffix' => '</div>',
        '#weight' => $form_weight++,
      );*/
    $form['add' . $iClass] = array('#type' => 'image_button', '#src' => drupal_get_path('module', 'guifi') . $iconNew, '#parents' => array('add' . $iClass), '#attributes' => array('title' => t('Add ' . $iClass)), '#ahah' => array('path' => 'guifi/js/add-vinterface/' . $iClass, 'wrapper' => 'add-' . $iClass, 'method' => 'replace', 'effect' => 'fade'), '#weight' => $form_weight++);
    return $form;
}
Exemplo n.º 3
0
function guifi_device_print_iclass($iClass, $device)
{
    if (empty($device[$iClass])) {
        return NULL;
    }
    $rows = array();
    $inames = guifi_get_currentInterfaces($device);
    foreach ($device[$iClass] as $inum => $if) {
        $ipstr = '';
        $rows_if = array();
        guifi_log(GUIFILOG_TRACE, sprintf('function guifi_device_print_iclass(interface %s)', $if['id']), $if);
        if ($if['ipv4']) {
            foreach ($if['ipv4'] as $ipnum => $ipv4) {
                guifi_log(GUIFILOG_TRACE, sprintf('function guifi_device_print_iclass(ip %s)', $ipv4['ipv4']), $ipv4);
                if ($ipv4['ipv4']) {
                    $ip = _ipcalc($ipv4['ipv4'], $ipv4['netmask']);
                    $ipstr = $ipv4['ipv4'] . '/' . $ip['maskbits'];
                } else {
                    $ipstr = t('n/a');
                }
                $rows_if[] = array($ipstr, $ipv4['netmask']);
            }
        } else {
            $rows_if[] = array(null, null);
        }
        $related = array();
        $relatedNames = array();
        if (is_array($if[related_interfaces])) {
            $related = $if[related_interfaces];
        } else {
            $related[] = $if[related_interfaces];
        }
        foreach ($related as $v) {
            $relatedNames[$v] = $inames[$v];
        }
        $rspan = count($rows_if);
        switch ($iClass) {
            case 'vlans':
                $begin = array(array('data' => $if['interface_class']), array('data' => $if['interface_type']), array('data' => implode(', ', $relatedNames)), array('data' => $if['vlan']), array('data' => $if['comments']), array('data' => $if['mac']));
                break;
            default:
                $begin = array(array('data' => $if['interface_class']), array('data' => $if['interface_type']), array('data' => implode(', ', $relatedNames)), array('data' => $if['comments']), array('data' => $if['mac']));
        }
        foreach ($begin as $i => $r) {
            $begin[$i] = array_merge($r, array('rowspan' => $rspan, 'valign' => 'top'));
        }
        foreach ($rows_if as $i => $row) {
            if ($i == 0) {
                $rows[] = array_merge($begin, $row);
            } else {
                $rows[] = $row;
            }
        }
    }
    return $rows;
}
Exemplo n.º 4
0
function guifi_ipv4s_form($edit, &$form_weight)
{
    if ($edit['new']) {
        return;
    }
    global $user;
    //  if (empty($edit[ipv4]))
    //    return;
    guifi_log(GUIFILOG_TRACE, 'function guifi_ipv4s_form(ipv4)', $edit['ipv4']);
    // Clean empty subnets
    foreach ($edit[ipv4] as $k => $v) {
        if (empty($v[ipv4])) {
            unset($edit[ipv4][$k]);
        }
    }
    // Build ipv4 fieldset
    $form = array('#type' => 'fieldset', '#title' => t('IPv4 addresses networking section') . ' - ' . count($edit[ipv4]), '#collapsible' => TRUE, '#tree' => TRUE, '#collapsed' => TRUE, '#description' => 'Under development. Changes at this form take no effect.', '#weight' => $form_weight++, '#prefix' => '<br><img src="/' . drupal_get_path('module', 'guifi') . '/icons/ipv4.png"> ' . t('ipv4 section'));
    // Loop across all existing addresses
    $ipv4_count = 0;
    $total_ipv4 = count($edit[ipv4]);
    $first = true;
    foreach ($edit[ipv4] as $k => $ipv4) {
        if (is_numeric($k)) {
            guifi_log(GUIFILOG_TRACE, 'function guifi_ipv4s_form(vint LOOP)', $ipv4);
            $form[$k] = guifi_ipv4i_form($ipv4, $k, $first, guifi_get_currentInterfaces($edit, TRUE));
            $first = false;
        }
    }
    guifi_log(GUIFILOG_TRACE, 'function guifi_ipv4s_form(vint LOOP AFTER)', $form);
    // placeholder for the add interface form
    $form['ipv4sdialog'] = array('#parents' => array('ipv4', 'ipv4sdialog'), '#type' => 'hidden', '#title' => t('New address properties dialog'), '#description' => t('Get the address from'), '#prefix' => '<div id="add-ipv4s-dialog">', '#suffix' => '</div>', '#collapsible' => true, '#collapsed' => true, '#attributes' => array('class' => 'fieldset-interface-port'), '#weight' => $form_weight++, '#tree' => true);
    $form['ipv4sdialog']['adddid'] = array('#type' => 'textfield', '#title' => t('device'), '#description' => t('select the device to obtain the ipv4 address from'), '#autocomplete_path' => 'guifi/js/select-node-device', '#size' => 60, '#maxlength' => 128, '#element_validate' => array('guifi_devicename_validate'), '#ahah' => array('event' => 'blur', 'path' => 'guifi/js/select-device-subnets', 'wrapper' => 'add-ipv4s-dialog', 'method' => 'replace', 'effect' => 'fade'), '#weight' => $form_weight++);
    $form['ipv4sdialog']['ipv4'] = array('#type' => 'textfield', '#title' => t('IPv4 address'), '#description' => t('Obtained address'), '#size' => 20, '#maxlength' => 20, '#weight' => $form_weight++);
    $form['ipv4sdialog']['ipv4_type'] = array('#type' => 'hidden', '#weight' => $form_weight++);
    $form['ipv4sdialog']['snet'] = array('#type' => 'select', '#options' => array('none' => t('select address')), '#title' => t('address & remote interface'), '#description' => t('select a free address from the device<br>click on the select list to refresh values'), '#weight' => $form_weight++);
    $form['ipv4sdialog']['netmask'] = array('#type' => 'select', '#ahah' => array('path' => 'guifi/js/add-ipv4s/netmask', 'wrapper' => 'add-ipv4s-dialog', 'method' => 'replace', 'effect' => 'fade'), '#title' => 'network mask', '#weight' => $form_weight++);
    $form['ipv4sdialog']['iid'] = array('#type' => 'select', '#options' => guifi_get_currentInterfaces($edit), '#title' => t('interface'), '#description' => t('where the new ip addres should be given to'), '#weight' => $form_weight++);
    $form['ipv4sdialog']['addipv4'] = array('#type' => 'submit', '#value' => 'Add IPv4, Save & continue edit', '#prefix' => '<div style="clear: both">', '#suffix' => '</div>', '#submit' => array('guifi_device_add_ipv4s_submit', 'guifi_device_form_submit'), '#weight' => $form_weight++);
    $form['addpubipv4'] = array('#type' => 'image_button', '#src' => drupal_get_path('module', 'guifi') . '/icons/ipv4-public-new.png', '#attributes' => array('title' => t('Get a new IPv4 subnetwork range (10.x.x.x) publicly available')), '#ahah' => array('path' => 'guifi/js/add-ipv4s/public', 'wrapper' => 'add-ipv4s-dialog', 'method' => 'replace', 'effect' => 'fade'), '#prefix' => '<div style="clear: both">&nbsp;<hr>&nbsp;</div>', '#weight' => $form_weight++);
    $form['addprivipv4'] = array('#type' => 'image_button', '#src' => drupal_get_path('module', 'guifi') . '/icons/ipv4-private-new.png', '#attributes' => array('title' => t('Get a new IPv4 private subnetwork range (172.x.x.x) for internal links/puropses only')), '#ahah' => array('path' => 'guifi/js/add-ipv4s/private', 'wrapper' => 'add-ipv4s-dialog', 'method' => 'replace', 'effect' => 'fade'), '#weight' => $form_weight++);
    $form['addexistentipv4'] = array('#type' => 'image_button', '#src' => drupal_get_path('module', 'guifi') . '/icons/ipv4-new.png', '#attributes' => array('title' => t('Get a new IPv4 address from an subnetwork already defined')), '#ahah' => array('path' => 'guifi/js/add-ipv4s/defined', 'wrapper' => 'add-ipv4s-dialog', 'method' => 'replace', 'effect' => 'fade'), '#weight' => $form_weight++);
    return $form;
}