r1203 + dropped config.php page
authorDenis Ovsienko <infrastation@yandex.ru>
Sat, 13 Oct 2007 20:44:39 +0000 (20:44 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sat, 13 Oct 2007 20:44:39 +0000 (20:44 +0000)
+ added a configuration viewer in place of UI page
+ updated navigation data
+ moved gateway code to gateway.php

inc/gateways.php
inc/interface.php
inc/navigation.php
inc/pagehandlers.php
inc/pagetitles.php

index 6ee1365b17565cf10f2c850e43aaa1aae05dca37..c7d7f7aa4a35e1c0db1aa51be0368d2a184cb0b5 100644 (file)
@@ -59,4 +59,131 @@ function queryGateway ($gwname, $questions)
        return $answers;
 }
 
+// This functions returns an array for VLAN list, and an array for port list (both
+// form another array themselves).
+// The ports in the latter array are marked with either VLAN ID or 'trunk'.
+// We don't sort the port list, as the gateway is believed to have done this already
+// (or at least the underlying switch software ought to). This is important, as the
+// port info is transferred to/from form not by names, but by numbers.
+function getSwitchVLANs ($object_id = 0)
+{
+       global $remote_username;
+       if ($object_id <= 0)
+       {
+               showError ('Invalid object_id in getSwitchVLANs()');
+               return;
+       }
+       $objectInfo = getObjectInfo ($object_id);
+       $endpoints = findAllEndpoints ($object_id, $objectInfo['name']);
+       if (count ($endpoints) == 0)
+       {
+               showError ('Can\'t find any mean to reach current object. Please either set FQDN attribute or assign an IP address to the object.');
+               return NULL;
+       }
+       if (count ($endpoints) > 1)
+       {
+               showError ('More than one IP address is assigned to this object, please configure FQDN attribute.');
+               return NULL;
+       }
+       $hwtype = $swtype = 'unknown';
+       foreach (getAttrValues ($object_id) as $record)
+       {
+               if ($record['name'] == 'SW type' && !empty ($record['value']))
+                       $swtype = str_replace (' ', '+', $record['value']);
+               if ($record['name'] == 'HW type' && !empty ($record['value']))
+                       $hwtype = str_replace (' ', '+', $record['value']);
+       }
+       $data = queryGateway
+       (
+               'switchvlans',
+               array ("connect ${endpoints[0]} $hwtype $swtype ${remote_username}", 'listvlans', 'listports')
+       );
+       if ($data == NULL)
+       {
+               showError ('Failed to get any response from queryGateway() or the gateway died');
+               return NULL;
+       }
+       if (strpos ($data[0], 'OK!') !== 0)
+       {
+               showError ("Gateway failure: returned code ${data[0]}.");
+               return NULL;
+       }
+       if (count ($data) != 3)
+       {
+               showError ("Gateway failure: mailformed reply.");
+               return NULL;
+       }
+       // Now we have VLAN list in $data[1] and port list in $data[2]. Let's sort this out.
+       $tmp = array_unique (explode (';', substr ($data[1], strlen ('OK!'))));
+       if (count ($tmp) == 0)
+       {
+               showError ("Gateway succeeded, but returned no VLAN records.");
+               return NULL;
+       }
+       $vlanlist = array();
+       foreach ($tmp as $record)
+       {
+               list ($vlanid, $vlandescr) = explode ('=', $record);
+               $vlanlist[$vlanid] = $vlandescr;
+       }
+       $portlist = array();
+       foreach (explode (';', substr ($data[2], strlen ('OK '))) as $pair)
+       {
+               list ($portname, $vlanid) = explode ('=', $pair);
+               $portlist[] = array ('portname' => $portname, 'vlanid' => $vlanid);
+       }
+       if (count ($portlist) == 0)
+       {
+               showError ("Gateway succeeded, but returned no port records.");
+               return NULL;
+       }
+       return array ($vlanlist, $portlist);
+}
+
+function setSwitchVLANs ($object_id = 0, $setcmd)
+{
+       global $remote_username;
+       $log = array();
+       if ($object_id <= 0)
+               return array (array ('code' => 'error', 'message' => 'Invalid object_id in setSwitchVLANs()'));
+       $objectInfo = getObjectInfo ($object_id);
+       $endpoints = findAllEndpoints ($object_id, $objectInfo['name']);
+       if (count ($endpoints) == 0)
+               return array (array ('code' => 'error', 'message' => 'Can\'t find any mean to reach current object. Please either set FQDN attribute or assign an IP address to the object.'));
+       if (count ($endpoints) > 1)
+               return array (array ('code' => 'error', 'message' => 'More than one IP address is assigned to this object, please configure FQDN attribute.'));
+       $hwtype = $swtype = 'unknown';
+       foreach (getAttrValues ($object_id) as $record)
+       {
+               if ($record['name'] == 'SW type' && !empty ($record['value']))
+                       $swtype = strtr ($record['value'], ' ', '+');
+               if ($record['name'] == 'HW type' && !empty ($record['value']))
+                       $hwtype = strtr ($record['value'], ' ', '+');
+       }
+       $data = queryGateway
+       (
+               'switchvlans',
+               array ("connect ${endpoints[0]} $hwtype $swtype ${remote_username}", $setcmd)
+       );
+       if ($data == NULL)
+               return array (array ('code' => 'error', 'message' => 'Failed to get any response from queryGateway() or the gateway died'));
+       if (strpos ($data[0], 'OK!') !== 0)
+               return array (array ('code' => 'error', 'message' => "Gateway failure: returned code ${data[0]}."));
+       if (count ($data) != 2)
+               return array (array ('code' => 'error', 'message' => 'Gateway failure: mailformed reply.'));
+       // Finally we can parse the response into message array.
+       $ret = array();
+       foreach (split (';', substr ($data[1], strlen ('OK!'))) as $text)
+       {
+               if (strpos ($text, 'I!') === 0)
+                       $code = 'success';
+               elseif (strpos ($text, 'W!') === 0)
+                       $code = 'warning';
+               else // All improperly formatted messages must be treated as error conditions.
+                       $code = 'error';
+               $ret[] = array ('code' => $code, 'message' => substr ($text, 2));
+       }
+       return $ret;
+}
+
 ?>
index a088a9a7c6392486d6e853c122660e47b8ca87c4..7b41f90f36cab2c1d81ba7f41a0a7d102b967672 100644 (file)
@@ -45,7 +45,7 @@ function renderIndex ()
                                                <? printImageHREF ('reports'); ?></a></h1>
                                        </td>
                                        <td>
-                                               <h1><a href='<? echo $root; ?>?page=help'>[ Help ]<br>
+                                               <h1><a href='<? echo $root; ?>?page=help'>Help<br>
                                                <? printImageHREF ('help'); ?></a></h1>
                                        </td>
                                </tr>
@@ -2424,23 +2424,6 @@ function renderPermissionsEditForm ()
        finishPortlet();
 }
 
-function renderReadonlyParameters ()
-{
-       $default_port_type = getConfigVar ('default_port_type');
-       startPortlet ('config.php');
-       echo '<table border=0 align=center>';
-       echo "<tr><th class=tdright>Code version:</th><td class=tdleft>" . CODE_VERSION . "</td></tr>\n";
-       echo "<tr><th class=tdright>password hash:</th><td class=tdleft>" . PASSWORD_HASH . "</td></tr>\n";
-       echo "<tr><th class=tdright>default port type:</th><td class=tdleft>${default_port_type}</td></tr>\n";
-       foreach (array ('F', 'A', 'U', 'T', 'Th', 'Tw', 'Thw') as $class)
-               echo
-                       "<tr><th class=tdright bgcolor='#" . getConfigVar ('color_' . $class) .
-                       "'>color for class ${class}</th><td class=tdleft>" .
-                       getConfigVar ('color_' . $class) . "</td></tr>\n";
-       echo "</table>\n";
-       finishPortlet();
-}
-
 function renderPortMap ($editable = FALSE)
 {
        global $nextorder, $root, $pageno, $tabno;
@@ -2876,134 +2859,18 @@ function renderReportSummary ()
 
 function renderUIConfig ()
 {
-       echo "Here be dragons :-P";
-}
-
-// This functions returns an array for VLAN list, and an array for port list (both
-// form another array themselves).
-// The ports in the latter array are marked with either VLAN ID or 'trunk'.
-// We don't sort the port list, as the gateway is believed to have done this already
-// (or at least the underlying switch software ought to). This is important, as the
-// port info is transferred to/from form not by names, but by numbers.
-function getSwitchVLANs ($object_id = 0)
-{
-       global $remote_username;
-       if ($object_id <= 0)
-       {
-               showError ('Invalid object_id in getSwitchVLANs()');
-               return;
-       }
-       $objectInfo = getObjectInfo ($object_id);
-       $endpoints = findAllEndpoints ($object_id, $objectInfo['name']);
-       if (count ($endpoints) == 0)
-       {
-               showError ('Can\'t find any mean to reach current object. Please either set FQDN attribute or assign an IP address to the object.');
-               return NULL;
-       }
-       if (count ($endpoints) > 1)
-       {
-               showError ('More than one IP address is assigned to this object, please configure FQDN attribute.');
-               return NULL;
-       }
-       $hwtype = $swtype = 'unknown';
-       foreach (getAttrValues ($object_id) as $record)
-       {
-               if ($record['name'] == 'SW type' && !empty ($record['value']))
-                       $swtype = str_replace (' ', '+', $record['value']);
-               if ($record['name'] == 'HW type' && !empty ($record['value']))
-                       $hwtype = str_replace (' ', '+', $record['value']);
-       }
-       $data = queryGateway
-       (
-               'switchvlans',
-               array ("connect ${endpoints[0]} $hwtype $swtype ${remote_username}", 'listvlans', 'listports')
-       );
-       if ($data == NULL)
-       {
-               showError ('Failed to get any response from queryGateway() or the gateway died');
-               return NULL;
-       }
-       if (strpos ($data[0], 'OK!') !== 0)
-       {
-               showError ("Gateway failure: returned code ${data[0]}.");
-               return NULL;
-       }
-       if (count ($data) != 3)
-       {
-               showError ("Gateway failure: mailformed reply.");
-               return NULL;
-       }
-       // Now we have VLAN list in $data[1] and port list in $data[2]. Let's sort this out.
-       $tmp = array_unique (explode (';', substr ($data[1], strlen ('OK!'))));
-       if (count ($tmp) == 0)
-       {
-               showError ("Gateway succeeded, but returned no VLAN records.");
-               return NULL;
-       }
-       $vlanlist = array();
-       foreach ($tmp as $record)
-       {
-               list ($vlanid, $vlandescr) = explode ('=', $record);
-               $vlanlist[$vlanid] = $vlandescr;
-       }
-       $portlist = array();
-       foreach (explode (';', substr ($data[2], strlen ('OK '))) as $pair)
-       {
-               list ($portname, $vlanid) = explode ('=', $pair);
-               $portlist[] = array ('portname' => $portname, 'vlanid' => $vlanid);
-       }
-       if (count ($portlist) == 0)
-       {
-               showError ("Gateway succeeded, but returned no port records.");
-               return NULL;
-       }
-       return array ($vlanlist, $portlist);
-}
-
-function setSwitchVLANs ($object_id = 0, $setcmd)
-{
-       global $remote_username;
-       $log = array();
-       if ($object_id <= 0)
-               return array (array ('code' => 'error', 'message' => 'Invalid object_id in setSwitchVLANs()'));
-       $objectInfo = getObjectInfo ($object_id);
-       $endpoints = findAllEndpoints ($object_id, $objectInfo['name']);
-       if (count ($endpoints) == 0)
-               return array (array ('code' => 'error', 'message' => 'Can\'t find any mean to reach current object. Please either set FQDN attribute or assign an IP address to the object.'));
-       if (count ($endpoints) > 1)
-               return array (array ('code' => 'error', 'message' => 'More than one IP address is assigned to this object, please configure FQDN attribute.'));
-       $hwtype = $swtype = 'unknown';
-       foreach (getAttrValues ($object_id) as $record)
-       {
-               if ($record['name'] == 'SW type' && !empty ($record['value']))
-                       $swtype = strtr ($record['value'], ' ', '+');
-               if ($record['name'] == 'HW type' && !empty ($record['value']))
-                       $hwtype = strtr ($record['value'], ' ', '+');
-       }
-       $data = queryGateway
-       (
-               'switchvlans',
-               array ("connect ${endpoints[0]} $hwtype $swtype ${remote_username}", $setcmd)
-       );
-       if ($data == NULL)
-               return array (array ('code' => 'error', 'message' => 'Failed to get any response from queryGateway() or the gateway died'));
-       if (strpos ($data[0], 'OK!') !== 0)
-               return array (array ('code' => 'error', 'message' => "Gateway failure: returned code ${data[0]}."));
-       if (count ($data) != 2)
-               return array (array ('code' => 'error', 'message' => 'Gateway failure: mailformed reply.'));
-       // Finally we can parse the response into message array.
-       $ret = array();
-       foreach (split (';', substr ($data[1], strlen ('OK!'))) as $text)
-       {
-               if (strpos ($text, 'I!') === 0)
-                       $code = 'success';
-               elseif (strpos ($text, 'W!') === 0)
-                       $code = 'warning';
-               else // All improperly formatted messages must be treated as error conditions.
-                       $code = 'error';
-               $ret[] = array ('code' => $code, 'message' => substr ($text, 2));
-       }
-       return $ret;
+       global $configCache;
+       startPortlet ('Current configuration');
+       echo '<table border=0 class=cooltable align=center>';
+       echo '<tr><th>name</th><th>type</th><th>Ok&nbsp;if&nbsp;empty?</th><th>value</th></tr>';
+       foreach ($configCache as $v)
+               if ($v['is_hidden'] == 'no')
+                       echo
+                               '<tr><td class=tdleft>' . $v['varname'] . '</td><td class=tdleft>' . $v['vartype'] .
+                               '</td><td class=tdleft>' . $v['emptyok'] . '</td><td class=tdleft>' .
+                               $v['varvalue'] . '</td></tr>';
+       echo "</table>\n";
+       finishPortlet();
 }
 
 // This function queries the gateway about current VLAN configuration and
index d0726dd30dd8c03c04b5f044eadf4dda914a43a7..f745baabcca387bfc1d4e9d6d2a0d658df7745af 100644 (file)
@@ -180,10 +180,8 @@ $ophandler['dict']['chapters']['add'] = 'addChapter';
 $page['ui']['title'] = 'static_title';
 $page['ui']['handler'] = 'handler_ui';
 $page['ui']['parent'] = 'config';
-
-$page['ro']['title'] = 'static_title';
-$page['ro']['handler'] = 'handler_ro';
-$page['ro']['parent'] = 'config';
+$tab['ui']['default'] = 'View';
+$tab['ui']['edit'] = '[ Change ]';
 
 $page['reports']['title'] = 'static_title';
 $page['reports']['handler'] = 'handler_reports';
@@ -199,10 +197,10 @@ $tab['help']['workflow'] = 'Workflow';
 $tab['help']['rackspace'] = 'Rackspace';
 $tab['help']['objects'] = 'Objects';
 $tab['help']['nets'] = 'Networking';
-$tab['help']['auth'] = 'User accounts & permissions';
-$tab['help']['dict'] = 'Dictionary';
+$tab['help']['auth'] = '[ User accounts & permissions ]';
+$tab['help']['dict'] = '[ Dictionary ]';
 $tab['help']['ports'] = 'Ports and links';
-$tab['help']['hacking'] = 'Hacker\'s guide';
+$tab['help']['hacking'] = '[ Hacker\'s guide ]';
 
 // This function returns array if page numbers leading to the target page
 // plus page number of target page itself. The first element is the target
index fcb424310970ae2d84a4335f17f926b9551c5780..4700816d0daaca4f33d48d1f69b05d955e70cee9 100644 (file)
@@ -275,18 +275,6 @@ function handler_perms ($tabno)
        }
 }
 
-function handler_ro ($tabno)
-{
-       switch ($tabno)
-       {
-               case 'default':
-                       renderReadonlyParameters();
-                       break;
-               default:
-                       showError ("Invalid tab '${tabno}' requested in handler_ro().");
-       }
-}
-
 function handler_ui ($tabno)
 {
        switch ($tabno)
index 11a88271679beb2bb43545809cc1be5372d443e6..17d2e13d09556edd9f2cd8271919e5aa24d51d34 100644 (file)
@@ -176,16 +176,13 @@ function static_title ($pageno)
                        $ret['name'] = 'Dictionary';
                        break;
                case 'ui':
-                       $ret['name'] = '[ User interface ]';
-                       break;
-               case 'ro':
-                       $ret['name'] = 'config.php';
+                       $ret['name'] = 'User interface';
                        break;
                case 'reports':
                        $ret['name'] = '[ Reports ]';
                        break;
                case 'help':
-                       $ret['name'] = '[ Help ]';
+                       $ret['name'] = 'Help';
                        break;
                default:
                        $ret['name'] = 'UNKNOWN';