⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vpserver.java

📁 监控大型网络的软件。能够自动发现拓扑结构
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
					"&&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 + -