r1188 + adjust gateway reply format so we can return more data
authorDenis Ovsienko <infrastation@yandex.ru>
Fri, 12 Oct 2007 11:59:54 +0000 (11:59 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Fri, 12 Oct 2007 11:59:54 +0000 (11:59 +0000)
+ push up LAN descriptions from cisco connector
+ print out VLAN list on the VLANs tab

gateways/switchvlans/cisco.connector
gateways/switchvlans/main
inc/interface.php

index 9f02dbe9606b554c3feb06bd808e2fe645e3fff3..89fa461af604711337ad0cfcecbce05f9a642f2a 100755 (executable)
@@ -79,7 +79,7 @@ do_fetch()
                exit 4
        fi
        nc $ENDPOINT 23 < $CMDS2 > "$OUT2"
-       cat "$OUT1" | fgrep ' active    ' | cut -d' ' -f1 > $FILE1
+       cat "$OUT1" | fgrep ' active    ' | sed -E 's/^([[:digit:]]+)[[:space:]]+(.+)[[:space:]]+ active    (.*)/\1=\2/;s/[[:space:]]+$//' > $FILE1
        cat "$OUT2" | egrep '^(Et|Fa|Gi|Te)' | sed -E 's/ +(notconnect|connected) +/=/;s/=(trunk|([0-9]+)) .*$/=\1/' > $FILE2
 }
 
index c5290b3ae08ff91a40d7b603841792822c724e7e..a5b82657fee3eba93bc435995d4be5748b576f81 100755 (executable)
@@ -137,12 +137,12 @@ do_listfile()
                return
        fi
        echo -n 'OK!'
-       local COMMA=''
+       local semicolon=''
        # tr might do the work, but use our chance to perform filtering once more
        cat "$F" | while read line; do
                [ "$line" = "" ] && continue
-               echo -n "$COMMA$line"
-               COMMA=','
+               echo -n "$semicolon$line"
+               semicolon=';'
        done
        echo
 }
index 7ef8c28d13c64e7a11e967652097f27f1b87ceef..bb5f5a415385f9e3ae847cd9a7a38dd7faf63d4d 100644 (file)
@@ -2892,15 +2892,20 @@ function getSwitchVLANs ($object_id = 0)
                return NULL;
        }
        // Now we have VLAN list in $data[1] and port list in $data[2]. Let's sort this out.
-       $vlanlist = array_unique (explode (',', substr ($data[1], strlen ('OK!'))));
-       sort ($vlanlist);
-       if (count ($vlanlist) == 0)
+       $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)
+       foreach (explode (';', substr ($data[2], strlen ('OK '))) as $pair)
        {
                list ($portname, $vlanid) = explode ('=', $pair);
                $portlist[] = array ('portname' => $portname, 'vlanid' => $vlanid);
@@ -3018,7 +3023,25 @@ function renderVLANMembership ($object_id = 0)
        if ($data === NULL)
                return;
        list ($vlanlist, $portlist) = $data;
-       startPortlet ('Current configuration');
+
+       echo '<table border=0 width="100%"><tr><td class=pcleft>'; // --------------------------------------------------
+
+       startPortlet ('VLAN table');
+       echo '<table class=cooltable cellspacing=0 cellpadding=5 align=center>';
+       echo "<tr><th>ID</th><th>Description</th></tr>";
+       $order = 'even';
+       global $nextorder;
+       foreach ($vlanlist as $id => $descr)
+       {
+               echo "<tr class=row_${order}><td class=tdright>${id}</td><td class=tdleft>${descr}</td></tr>";
+               $order = $nextorder[$order];
+       }
+       echo '</table>';
+       finishPortlet();
+
+       echo '</td><td class=pcright>'; // ------------------------------------------------------------
+
+       startPortlet ('Port configuration');
        echo "<table class=widetable cellspacing=0 cellpadding='5' align=center><tr>";
        echo "<form method=post>";
        echo "<input type=hidden name=page value='${pageno}'>";
@@ -3045,7 +3068,7 @@ function renderVLANMembership ($object_id = 0)
                else
                {
                        echo "<select name=vlanid_${portno}>";
-                       foreach ($vlanlist as $dummy => $v)
+                       foreach ($vlanlist as $v => $d)
                        {
                                echo "<option value=${v}";
                                if ($v == $port['vlanid'])
@@ -3059,6 +3082,8 @@ function renderVLANMembership ($object_id = 0)
        }
        echo "</tr><tr><td colspan=" . (PORTS_PER_ROW + 1) . "><input type=submit value='Save changes'></form></td></tr></table>";
        finishPortlet();
+
+       echo '</td></tr></table>'; // -------------------------------------
 }
 
 ?>