📄 vpserver.java
字号:
"&&sysNameFrom -> &&sysNameTo!!OSPF: ##!!Nettadr: ##!!Capacity: ##!!Last: &&linkLastPst (&&linkLast)!!(def->gw)", "metric", "netaddr", "speed" }; text.put("def-gwLink", s); } { String[] s = { "gwportid: &&linkid!!&&sysNameFrom -> &&sysNameTo!!Kat: ##!!(def->def)", "catid", }; text.put("def-defLink", s); } // Vi må vite hvilken kat en gitt boks er slik at vP kan oppgi dette når den spør om LAN'et HashMap boksKatMap = new HashMap(); ResultSet rs = Database.query("SELECT netboxid,catid FROM netbox WHERE netboxid IN (SELECT to_netboxid FROM gwport JOIN gwportprefix USING(gwportid) WHERE prefixid IN (SELECT prefixid FROM gwport JOIN module USING(moduleid) JOIN gwportprefix USING(gwportid) WHERE netboxid='"+thisBoksid+"'))"); while (rs.next()) boksKatMap.put(rs.getString("netboxid"), rs.getString("catid").toLowerCase()); String cFields = ""; { HashSet hs = new HashSet(); String[] aa = { "gwportid", "netboxid", "sysName", "interface", "prefix.prefixid", "nettype", "netident", "catid", "vlan", "speed", "to_netboxid" }; for (int i=0; i < aa.length; i++) hs.add(aa[i].toLowerCase()); Iterator iter = text.entrySet().iterator(); while (iter.hasNext()) { Map.Entry me = (Map.Entry)iter.next(); String key = (String)me.getKey(); textOut.put(key, new ArrayList()); String[] s = (String[])me.getValue(); for (int i=1;i<s.length;i++) if (hs.add(s[i].toLowerCase())) cFields += ","+s[i].toLowerCase(); } } rs = Database.query("SELECT gwportid,netboxid,sysName,interface,prefix.prefixid,nettype,netident,catid,vlan,speed,to_netboxid"+cFields+" FROM gwport JOIN gwportprefix USING(gwportid) JOIN prefix USING(prefixid) JOIN vlan USING(vlanid) JOIN module USING(moduleid) JOIN netbox USING(netboxid) WHERE nettype NOT IN ('loopback','unknown') AND prefix.prefixid IN (SELECT prefixid FROM gwport JOIN module USING(moduleid) JOIN gwportprefix USING(gwportid) WHERE netboxid='"+thisBoksid+"') AND NOT (netboxid!='"+thisBoksid+"' AND nettype!='link') ORDER BY gwip"); // NY // SELECT gwportid,boksid,sysName,interf,gwport.prefiksid,nettype,nettident,kat,vlan,speed,boksbak FROM (gwport JOIN prefiks USING (prefiksid)) JOIN boks USING (boksid) WHERE nettype NOT IN ('loopback','ukjent') AND gwport.prefiksid IN (SELECT prefiksid FROM gwport WHERE boksid='') AND NOT (boksid!='' AND nettype!='link') ORDER BY gwip // Gammel // SELECT gwportid,boksid,sysName,interf,gwport.prefiksid,nettype,nettident,kat,vlan,speed,boksbak FROM (gwport JOIN prefiks USING (prefiksid)) JOIN boks USING (boksid) WHERE nettype NOT IN ('loopback','ukjent') AND gwport.prefiksid IN (SELECT prefiksid FROM gwport WHERE boksid='') ORDER BY gwip //SELECT gwportid,boksid,sysName,gwport.prefiksid,nettype,nettident,kat,vlan,speed FROM (gwport JOIN prefiks USING (prefiksid)) JOIN boks USING (boksid) WHERE nettype NOT IN ('loopback','ukjent') AND gwport.prefiksid IN (SELECT prefiksid FROM gwport WHERE boksid='"+boksid+"' // SELECT gwportid,boksid,sysName,gwport.prefiksid,nettype,nettident FROM (gwport JOIN prefiks USING (prefiksid)) JOIN boks USING (boksid) WHERE nettype NOT IN ('loopback','ukjent') AND gwport.prefiksid IN (SELECT prefiksid FROM gwport WHERE boksid='549') // SELECT gwportid,boksid,sysName,gwport.prefiksid,nettype,nettident FROM (gwport JOIN prefiks USING (prefiksid)) JOIN boks USING (boksid) WHERE nettype NOT IN ('loopback','ukjent') AND gwport.prefiksid IN (204) // SELECT gwportid,boksid,sysName,gwport.prefiksid,nettype,nettident FROM (gwport JOIN prefiks USING (prefiksid)) JOIN boks USING (boksid) WHERE nettype NOT IN ('loopback','ukjent') AND gwport.prefiksid IN (SELECT prefiksid FROM gwport WHERE boksid='549' AND nettype='link') AND boksid !=549 ORDER BY prefiksid; //ArrayList linkList = new ArrayList(); HashMap linkMap = new HashMap(); HashSet boksDupe = new HashSet(); while (rs.next()) { String gwportid = rs.getString("gwportid"); String prefiksid = rs.getString("prefixid"); String boksidTo = rs.getString("netboxid"); String sysname = rs.getString("sysname"); String katTo = rs.getString("catid").toLowerCase(); String nettype = rs.getString("nettype"); String boksbak = rs.getString("to_netboxid"); String retning = "o"; // Up er default netboxidSet.add(boksidTo); // Først legger vi til boksen som den er for å være sikker på at den alltid kommer med if (boksDupe.add(boksidTo)) { if (!nettype.equals("link") && boksbak != null) { outl(boksidTo+"^"+sysname+"^"+katTo+"^"+boksbak+","+boksKatMap.get(boksbak)); } else { outl(boksidTo+"^"+sysname+"^"+katTo); } // Legg til tekst for bokser String[] fields = (String[])text.get(katTo+"Boks"); if (fields == null) fields = (String[])text.get("defBoks"); if (fields == null) continue; // fail-safe ArrayList l = (ArrayList)textOut.get(katTo+"Boks"); if (l == null) l = (ArrayList)textOut.get("defBoks"); if (l == null) continue; // fail-safe String[] s = new String[fields.length]; s[0] = boksidTo; for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]); l.add(s); } // Har vi en ikke-link ut fra boksen så skriver vi om slik at boksen blir det vi har link til if (thisBoksid.equals(boksidTo) && !nettype.equals("link") ) { // lan, elink, stam eller tilsvarende. Nå skal det bare være en enkelt link, så vi bare skriver ut // og legger til linken. String nettident = rs.getString("netident"); if (nettident == null) nettident = "(null)"; if (nettident.indexOf("-fw") != -1) nettype = "fw"; boksidTo = "-"+prefiksid; sysname = nettident; katTo = nettype; } else if (!nettype.equals("link")) continue; //if (katTo.equals("lan")) { if (!nettype.equals("link")) { if (!boksDupe.contains(boksidTo)) { //ArrayList l = (katTo.equals("lan")) ? dn : up; //retning = (katTo.equals("lan")) ? "n" : "o"; if (katTo.equals("lan")) retning = "n"; link.add(gwportid+"^"+gwportid+"^"+boksidTo); } } else { ArrayList l; if ( (l=(ArrayList)linkMap.get(prefiksid)) == null) linkMap.put(prefiksid, l=new ArrayList()); // Linken ut skal komme først if (thisBoksid.equals(boksidTo)) { l.add(0, gwportid); } else { l.add(gwportid+"^"+boksidTo); } //up.add(gwportid+","+boksidTo); } // Hvis vi har fått en "ny" boks må vi evt. legge til boksinfo for den if (boksDupe.add(boksidTo)) { if (!nettype.equals("link") && boksbak != null) { outl(boksidTo+"^"+sysname+"^"+katTo+"^"+boksbak+","+boksKatMap.get(boksbak)); } else { outl(boksidTo+"^"+sysname+"^"+katTo); } // Legg til tekst for bokser String[] fields = (String[])text.get(katTo+"Boks"); if (fields == null) fields = (String[])text.get("defBoks"); if (fields == null) continue; // fail-safe ArrayList l = (ArrayList)textOut.get(katTo+"Boks"); if (l == null) l = (ArrayList)textOut.get("defBoks"); if (l == null) continue; // fail-safe String[] s = new String[fields.length]; s[0] = boksidTo; for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]); l.add(s); } String[] linkInfoTo = { gwportid, rs.getString("speed"), rs.getString("interface") }; linkInfo.add(linkInfoTo); { ArrayList l = new ArrayList(); l.add(rs.getString("vlan")+","+retning); linkVlanMap.put(gwportid, l); } // Legg til tekst for linker { String[] fields = (String[])text.get("gw-"+katTo+"Link"); if (fields == null) fields = (String[])text.get("gw-defLink"); if (fields == null) continue; // fail-safe ArrayList l = (ArrayList)textOut.get("gw-"+katTo+"Link"); if (l == null) l = (ArrayList)textOut.get("gw-defLink"); if (l == null) continue; // fail-safe String[] s = new String[fields.length]; s[0] = gwportid; for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]); l.add(s); } if (!nettype.equals("link")) { // Vi må også legge til tekst for linken andre veien String[] fields = (String[])text.get(katTo+"-"+thisKat+"Link"); if (fields == null) fields = (String[])text.get(katTo+"-defLink"); if (fields == null) fields = (String[])text.get("def-defLink"); if (fields == null) continue; // fail-safe ArrayList l = (ArrayList)textOut.get(katTo+"-"+thisKat+"Link"); if (l == null) l = (ArrayList)textOut.get(katTo+"-defLink"); if (l == null) l = (ArrayList)textOut.get("def-defLink"); if (l == null) continue; // fail-safe String[] s = new String[fields.length]; s[0] = "-"+gwportid; for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]); l.add(s); } } // Nå går vi gjennom linkMap og legger inn linkene, der det er to gwportid'er per link Iterator iter = linkMap.values().iterator(); while (iter.hasNext()) { ArrayList l = (ArrayList)iter.next(); if (l.size() < 2) continue; String gwportid1 = (String)l.get(0); String gwportid2 = (String)l.get(1); link.add(gwportid1+"^"+gwportid2); } } else if (thisKat.equalsIgnoreCase("lan")) { // Først må vi vite id } else { // Henter fra swport // && = variabelnavn, ## = bytt ut med gitt verdi, !! = \n { String[] s = { "&&sysName!!Kat: ##!!Romid: ##!!Bakplan: &&boksLast", "catid", "roomid" }; text.put("swBoks", s); } { String[] s = { "&&sysName!!Kat: ##!!Romid: ##!!Last: &&boksLast", "catid", "roomid" }; text.put("gwBoks", s); } { String[] s = { "&&sysName!!Kat: ## (kant)", "catid" }; text.put("kantBoks", s); } { String[] s = { "&&sysName!!Kat: ## (srv)", "catid" }; text.put("srvBoks", s); } { String[] s = { "&&sysName!!(hub)" }; text.put("hubBoks", s); } { String[] s = { "&&sysName!!(def)", }; text.put("defBoks", s); } // Linker { String[] s = { "&&sysNameFrom -> &&sysNameTo!!MP: ##/##!!Speed: ##!!Duplex: ##!!Portnavn: ##!!Last: &&linkLastPst (&&linkLast)!!(sw->sw)", "module", "port", "speed", "duplex", "portname" }; text.put("sw-swLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!MP: ##/##!!Speed: ##!!Duplex: ##!!Portnavn: ##!!Last: &&linkLastPst (&&linkLast)!!(sw->gw)", "module", "port", "speed", "duplex", "portname" }; text.put("sw-gwLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!MP: ##/##!!Speed: ##!!Duplex: ##!!Portnavn: ##!!Last: &&linkLastPst (&&linkLast)!!(sw->kant)", "module", "port", "speed", "duplex", "portname" }; text.put("sw-kantLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!MP: ##/##!!Speed: ##!!Duplex: ##!!Portnavn: ##!!Last: &&linkLastPst (&&linkLast)!!(sw->hub)", "module", "port", "speed", "duplex", "portname" }; text.put("sw-hubLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!MP: ##/##!!Speed: ##!!Duplex: ##!!Portnavn: ##!!Last: &&linkLastPst (&&linkLast)!!(sw->srv)", "module", "port", "speed", "duplex", "portname" }; text.put("sw-srvLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!MP: ##/##!!Speed: ##!!Duplex: ##!!Portnavn: ##!!Last: &&linkLastPst (&&linkLast)!!(sw->mas)", "module", "port", "speed", "duplex", "portname" }; text.put("sw-masLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!Speed: ##!!Last: &&linkLastPst (&&linkLast)!!(gw->sw)", "speed" }; text.put("gw-swLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!MP: ##/##!!Speed: ##!!Duplex: ##!!Portnavn: ##!!Last: &&linkLastPst (&&linkLast)!!(kant->sw)", "module", "port", "speed", "duplex", "portname" }; text.put("kant-swLink", s); } { String[] s = { "&&sysNameFrom -> &&sysNameTo!!Speed: ##!!Last: &&linkLastPst (&&linkLast)!!(def-def)", "speed" }; text.put("def-defLink", s); } // Hent høyste boksid ResultSet rs = Database.query("SELECT MAX(netboxid) AS maxboksid FROM netbox"); rs.next(); int maxBoksid = rs.getInt("maxboksid"); // Vi trenger å vite hvilken gw som er rootgw for et gitt prefiks //rs = Database.query("SELECT boksid FROM prefiks JOIN gwport ON (rootgwid=gwportid)"); // Vi trenger kobling mellom boksid og kat for å vite hvilken tekst som skal på en link ut fra senter-enheten HashMap boksidKatMap = new HashMap(); rs = Database.query("SELECT netboxid,catid FROM netbox WHERE netboxid IN (SELECT netboxid FROM module JOIN swport USING (moduleid) WHERE to_netboxid="+thisBoksid+")"); while (rs.next()) boksidKatMap.put(rs.getString("netboxid"), rs.getString("catid").toLowerCase() ); // Felter fra gw'er som skal med String cFields = ""; { HashSet hs = new HashSet(); String[] aa = { "netboxid", "sysName" }; for (int i=0; i < aa.length; i++) hs.add(aa[i].toLowerCase()); Iterator iter = text.entrySet().iterator(); while (iter.hasNext()) { Map.Entry me = (Map.Entry)iter.next(); String key = (String)me.getKey(); if (!key.equals("gwBoks")) continue; textOut.put(key, new ArrayList()); String[] s = (String[])me.getValue(); for (int i=1;i<s.length;i++) if (hs.add(s[i])) cFields += ","+s[i]; } } // Hent alle bokser ut som er gw HashSet boksDupe = new HashSet(); HashSet linkDupe = new HashSet(); HashSet gwboksSet = new HashSet(); rs = Database.query("SELECT netboxid,sysName"+cFields+" FROM netbox WHERE catid='GW' AND netboxid IN (SELECT netboxid FROM module JOIN gwport USING(moduleid) WHERE to_netboxid='"+thisBoksid+"')"); // SELECT boksid,sysName FROM boks WHERE kat='GW' AND boksid IN (SELECT boksbak FROM swport WHERE boksid='') while (rs.next()) { String boksid = rs.getString("netboxid"); String sysname = rs.getString("sysname"); String kat = rs.getString("catid").toLowerCase();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -