📄 vpserver.java
字号:
Set rrdNetboxid = (Set)hm.get("boxId"); String datatype = (String)hm.get("datatype"); Map m = getRRD(rrdNetboxid, datatype); for (Iterator it = m.entrySet().iterator(); it.hasNext();) { Map.Entry me = (Map.Entry)it.next(); String netboxid = (String)me.getKey(); Map fnMap = (Map)((Map)me.getValue()).get(datatype); outl(netboxid+"^"+fnMap.values().iterator().next()); } } private static void listLinkLoad(Map hm) throws SQLException { outl("listLinkLoad"); Set rrdGwId = (Set)hm.get("gwId"); Set rrdSwId = (Set)hm.get("swId"); Set rrdDualGwId = (Set)hm.get("dualGwId"); Set rrdDualSwId = (Set)hm.get("dualSwId"); if (rrdGwId == null) rrdGwId = new HashSet(); if (rrdSwId == null) rrdSwId = new HashSet(); if (rrdDualGwId == null) rrdDualGwId = new HashSet(); String sqlAdd = ""; Map swMap = new HashMap(); Set gwSet = new HashSet(); Set swId = new HashSet(); if (!rrdGwId.isEmpty() || !rrdDualGwId.isEmpty()) { // Get RSM translation ResultSet rs = Database.query("select gwportid,swportid from gwport join gwportprefix using(gwportid) join prefix using(prefixid) join vlan using(vlanid) join module m1 on (gwport.moduleid=m1.moduleid) join swport on (substr(gwport.interface,5)=swport.vlan and swport.moduleid in (select moduleid from module where netboxid=gwport.to_netboxid)) join netbox using(netboxid) join type using(typeid) where typename='Cis-WX5302' and swport.link='y' and trunk='f' and gwportid in ("+concat(rrdGwId)+concat(rrdDualGwId)+") order by gwportid"); while (rs.next()) { swId.add(rs.getString("swportid")); swMap.put(rs.getString("swportid"), rs.getString("gwportid")); gwSet.add(rs.getString("gwportid")); } } rrdSwId.addAll(swId); Map m = getRRD(null, "ifOutOctets", rrdGwId, rrdSwId); Map m2 = getRRD(null, new HashSet(Arrays.asList(new String[] { "ifOutOctets", "ifInOctets" })), rrdDualGwId, rrdDualSwId); Map[] mA = new Map[] { m, m2 }; for (int k=0; k < mA.length; k++) { for (Iterator it = mA[k].entrySet().iterator(); it.hasNext();) { Map.Entry me = (Map.Entry)it.next(); String netboxid = (String)me.getKey(); Map ifMap = (Map)((Map)me.getValue()).values().iterator().next(); for (Iterator ifIt = ifMap.entrySet().iterator(); ifIt.hasNext();) { me = (Map.Entry)ifIt.next(); String[] ss = ((String)me.getKey()).split(":"); String id = ss[1]; if (swMap.containsKey(id)) id = (String)swMap.get(id); else if (gwSet.contains(id)) continue; outl(id+"^"+me.getValue()); } } } } private static Map getRRD(Set netboxidS, String s) { return getRRD(netboxidS, s, null, null); } private static Map getRRD(Set netboxidS, String s, Set gwSet) { return getRRD(netboxidS, s, gwSet, null); } private static Map getRRD(Set netboxidS, String s, Set gwSet, Set swSet) { return getRRD(netboxidS, new HashSet(Arrays.asList(new String[] { s } )), gwSet, swSet, null); } private static Map getRRD(Set netboxidS, Set descrS, Set gwSet, Set swSet) { return getRRD(netboxidS, descrS, gwSet, swSet, null); } private static Map getRRD(Set netboxidS, Set descrS, Set gwSet, Set swSet, String sqlAdd) { if ((netboxidS == null || netboxidS.isEmpty()) && (gwSet == null || gwSet.isEmpty()) && (swSet == null || swSet.isEmpty()) && sqlAdd == null) return new HashMap(); try { String sql = "SELECT netboxid,descr,name,path,filename,key,value FROM rrd_file JOIN rrd_datasource USING(rrd_fileid) WHERE subsystem='cricket' AND descr IN ("+concat(descrS,"'")+")"; if (netboxidS != null && !netboxidS.isEmpty()) sql += " AND netboxid IN ("+concat(netboxidS)+")"; boolean g = gwSet != null && !gwSet.isEmpty(); if (g) sql += " AND ((key='gwport' AND value IN ("+concat(gwSet, "'")+"))"; if (swSet != null && !swSet.isEmpty()) sql += " " + (g?"OR":"AND") + " (key='swport' AND value IN ("+concat(swSet, "'")+"))"; if (g) sql += ")"; if (sqlAdd != null) sql += sqlAdd; ResultSet rs = Database.query(sql); Map fnMap = new HashMap(); while (rs.next()) { String fn = rs.getString("path")+"/"+rs.getString("filename"); List l; if ( (l=(List)fnMap.get(fn)) == null) { fnMap.put(fn, l = new ArrayList()); l.add(new String[] { rs.getString("netboxid"), rs.getString("descr"), rs.getString("key"), rs.getString("value") } ); } l.add(rs.getString("name")); } List f = new ArrayList(); List ff = new ArrayList(); for (Iterator it = fnMap.entrySet().iterator(); it.hasNext();) { Map.Entry me = (Map.Entry)it.next(); String fn = "\"" + (String)me.getKey() + "\""; List l = (List)me.getValue(); ff.add(l.remove(0)); for (Iterator lIt = l.iterator(); lIt.hasNext();) { fn += " " + lIt.next(); } f.add(fn); } List rrd = rrd(f); if (rrd.size() != f.size()) { outl("0^Error, rrd: " + rrd.size() + ", " + f.size()); return new HashMap(); } Map m = new HashMap(); for (int i=0; i < rrd.size(); i++) { String rrdVal = (String)rrd.get(i); String[] rrdA = rrdVal.split(" "); if (!isNum(rrdA[0])) continue; String[] s = (String[])ff.get(i); String netboxid = s[0]; String descr = s[1]; String kv = s[2]+":"+s[3]; Map m2; if ( (m2=(Map)m.get(netboxid)) == null) m.put(netboxid, m2 = new HashMap()); Map m3; if ( (m3=(Map)m2.get(descr)) == null) m2.put(descr, m3 = new HashMap()); if (rrdA.length > 1 && isNum(rrdA[1])) { rrdVal = rrdA[0] + "^" + rrdA[1]; } m3.put(kv, rrdVal); } return m; } catch (SQLException exp) { outl("SQLException: " + exp); exp.printStackTrace(new PrintStream(out)); } catch (Exception exp) { outl("Exception: " + exp); exp.printStackTrace(new PrintStream(out)); } return new HashMap(); } private static boolean isNum(String s) { try { Double.parseDouble(s); } catch (NumberFormatException exp) { return false; } return true; } private static String concat(Set set) { return concat(set, ""); } private static String concat(Set set, String fnut) { StringBuffer sb = new StringBuffer(); for (Iterator it = set.iterator(); it.hasNext();) { Object s = (Object)it.next(); sb.append(fnut+s+fnut); if (it.hasNext()) sb.append(","); } return sb.toString(); } private static List rrd(List f) { List rrd = new ArrayList(); try { String[] hostCmd = { Path.bindir + File.separatorChar + "vprrd.py", }; Runtime rt = Runtime.getRuntime(); Process p = rt.exec(hostCmd); PrintWriter out = new PrintWriter(p.getOutputStream()); //out.println("/usr/local/nav/cricket/cricket-data/"); out.println( ("max".equals(rrdType)?"MAX":"AVERAGE") ); out.println(rrdTime); for (Iterator it = f.iterator(); it.hasNext();) { out.println(it.next()); } out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); try { p.waitFor(); } catch (InterruptedException e) { System.err.println("InterruptedException: " + e); outl("InterruptedException: " + e); e.printStackTrace(System.err); return rrd; } String s; while ( (s=in.readLine()) != null) { s = s.trim(); if (s.length() == 0) continue; rrd.add(s); } } catch (Exception e) { e.printStackTrace(new PrintStream(out)); } return rrd; } static void listRouterGroups() throws SQLException { outl("listRouterGroups"); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='ntnu-gw')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='sb-gw')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='rfb-gw')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='hb-gw2')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='kjemi-gw')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='ed-gw2')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Kjernenett'), (SELECT boksid FROM boks WHERE sysName='ntnu-gw2')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='oslo-tn-gw2')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='hb-gw6')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='hb-gw5')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='tyholt-gw3')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='tyholt-gw')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='stav-tn-gw2')); // INSERT INTO vpBoksGrp (gruppeid,pboksid) VALUES ((SELECT gruppeid FROM vpBoksGrpInfo WHERE name='Testnett'), (SELECT boksid FROM boks WHERE sysName='hb-gw7')); int curid=-1; //ResultSet rs = Database.query("SELECT gruppeid,name,pboksid FROM vpBoksGrpInfo NATURAL JOIN vpBoksGrp ORDER BY gruppeid"); ResultSet rs = Database.query("SELECT vp_netbox_grp_infoid,name,hideicons,iconname,x,y,pnetboxid FROM vp_netbox_grp_info LEFT JOIN vp_netbox_grp USING (vp_netbox_grp_infoid) ORDER BY vp_netbox_grp_infoid"); while (rs.next()) { if (rs.getInt("vp_netbox_grp_infoid")!=curid) { if (curid>=0) outl(""); curid = rs.getInt("vp_netbox_grp_infoid"); out(rs.getString("vp_netbox_grp_infoid") + "^" + rs.getString("name") + "^" + rs.getString("x") + "^" + rs.getString("y") + "^" + (rs.getBoolean("hideicons")?"true":"false") + "^" + rs.getString("iconname") ); if (rs.getString("pnetboxid") == null) continue; } out("^" + rs.getString("pnetboxid")); } outl(""); } static void listRouterXY() throws SQLException { outl("listRouterXY"); String gruppeid = getp("gruppeid"); if (gruppeid == null) return; ResultSet rs = Database.query("SELECT pnetboxid,x,y FROM vp_netbox_xy WHERE vp_netbox_grp_infoid = '" + gruppeid + "'"); while (rs.next()) { outl(rs.getString("pnetboxid") + "^" + rs.getString("x") + "^" + rs.getString("y")); } } static void listBoks() throws SQLException { outl("listBoks"); String thisBoksid = getp("boksid"); String thisKat = getp("kat"); if (thisBoksid == null) return; if (thisKat == null || thisKat.length() == 0) { // Må koste på oss et SQL kall ekstra ResultSet rs = Database.query("SELECT catid FROM netbox WHERE netboxid='"+Database.addSlashes(thisBoksid)+"'"); if (!rs.next()) return; // boksid eksisterer ikke thisKat = rs.getString("catid"); } ArrayList up = new ArrayList(); ArrayList dn = new ArrayList(); ArrayList link = new ArrayList(); ArrayList linkInfo = new ArrayList(); HashMap linkVlanMap = new HashMap(); HashMap vlanNameMap = new HashMap(); HashMap text = new HashMap(); HashMap textOut = new HashMap(); Set netboxidSet = new HashSet(); Set rrdGwId = new HashSet(); Set rrdSwId = new HashSet(); // Vi har egentlig tre tilfeller her: // kat=gw -> vi henter info fra gwport og prefiks // kat=lan -> det er egentlig en switch vi skal vise, så vi må sjekke id'en for denne og så gå i swport // kat=<alt annet> -> Vi regner med at info finnes i swport if (thisKat.equalsIgnoreCase("gw")) { // Hent normalt fra gwport og prefiks // && = variabelnavn, ## = bytt ut med gitt verdi, !! = \n { String[] s = { "&&sysName!!Kat: ##!!Romid: ##!!Last: &&boksLast", "catid", "roomid" }; text.put("gwBoks", s); } { String[] s = { "&&sysName!!Nettadr: ##", "netaddr", }; text.put("lanBoks", s); } { String[] s = { "&&sysName!!Nettadr: ##", "netaddr", }; text.put("stamBoks", s); } { String[] s = { "&&sysName!!Nettadr: ##", "netaddr", }; text.put("defBoks", s); } // Linker { String[] s = { "&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->gw)", "interface", "metric", "netaddr", "speed" }; text.put("gw-gwLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->stam)", "interface", "metric", "netaddr", "speed" }; text.put("gw-stamLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->lan)", "interface", "metric", "netaddr", "speed" }; text.put("gw-lanLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!Interface: ##!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->def)", "interface", "metric", "netaddr", "speed" }; text.put("gw-defLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(stam->gw)", "metric", "netaddr", "speed" }; text.put("stam-gwLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(lan->gw)", "metric", "netaddr", "speed" }; text.put("lan-gwLink", s); } { String[] s = {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -