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

📄 vpserver.java

📁 监控大型网络的软件。能够自动发现拓扑结构
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
				outl(boksid+"^"+sysname+"^"+kat);				// Legg til tekst for bokser				String[] fields = (String[])text.get(kat+"Boks");				if (fields == null) fields = (String[])text.get("defBoks");				if (fields == null) continue; // fail-safe				ArrayList l = (ArrayList)textOut.get(kat+"Boks");				if (l == null) l = (ArrayList)textOut.get("defBoks");				if (l == null) continue; // fail-safe				String[] s = new String[fields.length];				s[0] = boksid;				for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]);				l.add(s);				gwboksSet.add(boksid);				boksDupe.add(boksid);			}			// Så er det resten, da har vi info om linken også, så legg til alle felter vi skal ha med			cFields = "";			{				HashSet hs = new HashSet();				String[] aa = { "swportid", "netboxid", "sysName", "catid", "module", "port", "vlan.vlan", "speed", "direction", "to_netboxid", "portname", "nettype", "netident" };				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];				}			}			// Så henter vi alle bokser vi må eksplistitt hente info fra boks for			// SELECT * da vi ikke vet hva som skal være med			HashSet boksSet = new HashSet();			rs = Database.query("SELECT * FROM netbox WHERE netboxid IN (SELECT netboxid FROM module JOIN swport USING(moduleid) WHERE netboxid="+thisBoksid+") AND netboxid NOT IN (SELECT netboxid FROM module JOIN swport USING(moduleid) WHERE to_netboxid="+thisBoksid+")");			while (rs.next()) {				String boksid = rs.getString("netboxid");				String sysname = rs.getString("sysname");				String kat = rs.getString("catid").toLowerCase();				outl(boksid+"^"+sysname+"^"+kat);				// Legg til tekst for bokser				String[] fields = (String[])text.get(kat+"Boks");				if (fields == null) fields = (String[])text.get("defBoks");				if (fields == null) continue; // fail-safe				ArrayList l = (ArrayList)textOut.get(kat+"Boks");				if (l == null) l = (ArrayList)textOut.get("defBoks");				if (l == null) continue; // fail-safe				String[] s = new String[fields.length];				s[0] = boksid;				for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]);				l.add(s);				boksidKatMap.put(boksid, kat);				boksSet.add(boksid);			}			//rs = Database.query("SELECT swportid,boksid,sysName,kat,vlan,speed,retning,boksbak"+cFields+" FROM swport JOIN boks USING (boksid) JOIN swportvlan USING (swportid) WHERE status!='down' AND boksbak IS NOT NULL AND (boksid='"+thisBoksid+"' OR boksbak='"+thisBoksid+"')");			rs = Database.query("SELECT swportid,netboxid,sysName,catid,module,port,vlan.vlan,speed,direction,to_netboxid,portname,nettype,netident"+cFields+" FROM swport JOIN module USING(moduleid) JOIN netbox USING(netboxid) JOIN swportvlan USING (swportid) JOIN vlan USING(vlanid) LEFT JOIN prefix USING (vlanid) WHERE netbox.up!='n' AND (netboxid='"+thisBoksid+"' OR to_netboxid='"+thisBoksid+"') ORDER BY vlan.vlan");			//SELECT DISTINCT ON (vlan,boksid,boksbak) swportid,boksid,sysName,kat,vlan,speed,retning,boksbak,vpkatbak,portnavn,nettype,nettident FROM swport JOIN boks USING (boksid) JOIN swportvlan USING (swportid) LEFT JOIN prefiks USING (vlan) WHERE status!='down' AND (boksid='' OR boksbak='') ORDER BY vlan			//SELECT DISTINCT ON (vlan,boksid,boksbak) swportid,boksid,sysName,kat,trunk,boksbak,vlan,retning,vpkatbak,nettype,nettident FROM swport JOIN boks USING (boksid) JOIN swportvlan USING (swportid) LEFT JOIN prefiks USING (vlan) WHERE status!='down' AND (boksid='16' OR boksbak='16') and boksbak IN (1,28) ORDER BY vlan,boksbak;			HashMap linkMap = new HashMap();			ArrayList noInfoBoksL = new ArrayList();			while (rs.next()) {				String swportid = rs.getString("swportid");				String boksid = rs.getString("netboxid");				String sysname = rs.getString("sysname");				String kat = rs.getString("catid").toLowerCase();				String vlan = rs.getString("vlan");				//String retning = rs.getString("retning");				String boksbak = rs.getString("to_netboxid");				boolean boksbakNull = (boksbak==null) ? true : false;				String katBak;				if (thisBoksid.equals(boksid)) {					// Link ut fra enheten, så vi må endre kat					if (boksbak == null) {						String[] katSysname = decodeBoksbak(null, rs.getString("portname"));						katBak = katSysname[0];						String boksidBak = String.valueOf(++maxBoksid);						boksbak = boksidBak;						String sysnameBak =katSysname[1];						outl(boksidBak+"^"+sysnameBak+"^"+katBak);						// Vi må også legge til tekst for enheten						String[] fields = (String[])text.get(katBak+"Boks");						if (fields == null) fields = (String[])text.get("defBoks");						if (fields == null) continue; // fail-safe						ArrayList l = (ArrayList)textOut.get(katBak+"Boks");						if (l == null) l = (ArrayList)textOut.get("defBoks");						if (l == null) continue; // fail-safe						String[] s = new String[fields.length];						s[0] = boksidBak;						for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]);						l.add(s);					} else {						katBak = (String)boksidKatMap.get(boksbak);					}				} else {					katBak = thisKat;				}				// Legg til vlan				if (!vlanNameMap.containsKey(vlan)) {					vlanNameMap.put(vlan, rs.getString("nettype")+","+rs.getString("netident"));				}				// Legg evt. til boksen				if (boksDupe.add(boksid)) {					outl(boksid+"^"+sysname+"^"+kat);					// Legg til tekst for bokser					String[] fields = (String[])text.get(kat+"Boks");					if (fields == null) fields = (String[])text.get("defBoks");					if (fields == null) continue; // fail-safe					ArrayList l = (ArrayList)textOut.get(kat+"Boks");					if (l == null) l = (ArrayList)textOut.get("defBoks");					if (l == null) continue; // fail-safe					String[] s = new String[fields.length];					s[0] = boksid;					for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]);					l.add(s);				}				// Så sjekker vi linken				if (linkDupe.add(swportid)) {					String key = (thisBoksid.equals(boksid)) ? boksbak : boksid;					// Vi lagrer linker per vlan, da det kan være flere fysiske linker mellom to enheter, men					// de vil alltid være på forskjellig vlan					key += ":"+vlan;					// Legg til selve linken, litt styr fordi begge swportid'ene skal være med i samme link ut fra midten					{						ArrayList l;						if ( (l=(ArrayList)linkMap.get(key)) == null) linkMap.put(key, l=new ArrayList());						// Linken ut skal komme først						if (thisBoksid.equals(boksid)) {							//l.add(0, retning);							l.add(0, swportid);							l.add(1, boksbak);						} else {							l.add(swportid+"^"+boksid);						}					}					String[] linkInfoTo = { swportid, rs.getString("speed"), rs.getString("module")+"_"+rs.getString("port") };					linkInfo.add(linkInfoTo);					// Legg til tekst for vanlige linker					{						/*						String k1,k2;						if (thisBoksid.equals(boksid)) {							// Fra senter og ut							k1 = thisKat;							k2 = kat;						} else {							// Inn mot senter							k1 = kat;							k2 = thisKat;						}						*/						String[] fields = (String[])text.get(kat+"-"+katBak+"Link");						if (fields == null) fields = (String[])text.get(kat+"-defLink");						if (fields == null) fields = (String[])text.get("def-defLink");						if (fields == null) continue; // fail-safe						ArrayList l = (ArrayList)textOut.get(kat+"-"+katBak+"Link");						if (l == null) l = (ArrayList)textOut.get(kat+"-defLink");						if (l == null) l = (ArrayList)textOut.get("def-defLink");						if (l == null) continue; // fail-safe						String[] s = new String[fields.length];						s[0] = swportid;						for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]);						l.add(s);					}					// Spesialtilfelle der vi kun har linken en vei, dvs. boksbak er null eller det er srv, mas eller noe annet					// der boksbak er definert					// Dette er da linken inn mot senter					if (boksbakNull || boksSet.contains(boksbak)) {						String[] fields = (String[])text.get(katBak+"-"+thisKat+"Link");						if (fields == null) fields = (String[])text.get(katBak+"-defLink");						if (fields == null) fields = (String[])text.get("def-defLink");						if (fields == null) continue; // fail-safe						ArrayList l = (ArrayList)textOut.get(katBak+"-"+thisKat+"Link");						if (l == null) l = (ArrayList)textOut.get(katBak+"-defLink");						if (l == null) l = (ArrayList)textOut.get("def-defLink");						if (l == null) continue; // fail-safe						String[] s = new String[fields.length];						s[0] = "-"+swportid;						for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]);						l.add(s);					}					// Spesialtilfelle for link gw->sw					if (gwboksSet.contains(boksbak)) {						String[] fields = (String[])text.get("gw-"+thisKat+"Link");						if (fields == null) fields = (String[])text.get("gw-defLink");						if (fields == null) fields = (String[])text.get("def-defLink");						if (fields == null) continue; // fail-safe						ArrayList l = (ArrayList)textOut.get("gw-"+thisKat+"Link");						if (l == null) l = (ArrayList)textOut.get("gw-defLink");						if (l == null) l = (ArrayList)textOut.get("def-defLink");						if (l == null) continue; // fail-safe						String[] s = new String[fields.length];						s[0] = "-"+swportid;						for (int i=1;i<s.length;i++) s[i] = rs.getString(fields[i]);						l.add(s);					}				}				// Legg til vlan for linken				{					ArrayList l;					if ( (l=(ArrayList)linkVlanMap.get(swportid)) == null) linkVlanMap.put(swportid, l=new ArrayList());					String retning = rs.getString("direction");					if (!retning.equals("o") && !retning.equals("b")) retning = "n";					l.add(rs.getString("vlan")+","+retning);				}			}			// Nå går vi gjennom linkMap og legger inn linkene, det er to swportid'er per link			Iterator iter = linkMap.values().iterator();			while (iter.hasNext()) {				String retning, swportidUt, swportidInn;				ArrayList l = (ArrayList)iter.next();				if (l.size() == 2) {					// Nå har vi det tilfellet der vi har har funnet linken ut, det skjer for uplink til gw					// og for endel servere					// Vi har retning og swportid på ene siden, men vi bruker også den samme id'en andre veien da					// last hentes bare fra ene siden					//retning = (String)l.get(0);					swportidUt = (String)l.get(0);					String boksbak = (String)l.get(1);					swportidInn = swportidUt+"^"+boksbak;					// Vi har imidlertid ingen info, så legg enheten til en liste over enheter vi må hente info for, fra gwport					//gwboksL.add(boksbak);				} else if (l.size() < 3) {					continue;				} else {					//retning = (String)l.get(0);					swportidUt = (String)l.get(0);					swportidInn = (String)l.get(2);				}				String linkS = swportidUt+"^"+swportidInn;				link.add(linkS);				/*				if (retning.equals("o")) {					up.add(linkS);				}				else {					dn.add(linkS);				}				*/			}			/*			StringBuffer sb = new StringBuffer();			for (int i=0; i < gwboksL.size(); i++) {				String boksid = (String)gwboksL.get(i);				sb.append(boksid);				if (i != gwboksL.size()-1) sb.append(",");			}			String sql = "SELECT * FROM gwport JOIN boks USING (boksid) WHERE boksbak='"+thisBoksid+"' AND boksid = (SELECT boksbak FROM swport WHERE swportid IN ("+sb+"))";			outl("gwport: " + sql);			*/		}		{			Map newMap = new HashMap();			netboxidSet.add(thisBoksid);			newMap.put("boxId", netboxidSet);			newMap.put("datatype", "c5000Bandwidth");			loadMap.put("listBoxLoad", newMap);		}		// Så skrives linkene ut		outl("listBoksLinks");		Set linkIdSet = new HashSet();		for (int i=0; i < link.size(); i++) {			outl((String)link.get(i) );			linkIdSet.add( ((String)link.get(i)).split("\\^")[0] );		}		{			Map newMap = new HashMap();			newMap.put("cn", thisBoksid);			if (thisKat.equalsIgnoreCase("gw")) rrdGwId.addAll(linkIdSet);			else rrdSwId.addAll(linkIdSet);			newMap.put("dualGwId", rrdGwId);			newMap.put("dualSwId", rrdSwId);			loadMap.put("listLinkLoad", newMap);		}		/*		out("up");		for (int i=0; i < up.size(); i++) out("^"+up.get(i) );		outl("");		outl("hz^");		out("dn");		for (int i=0; i < dn.size(); i++) out("^"+dn.get(i) );		outl("");		*/		outl("listBoksLinkInfo");		for (int i=0; i < linkInfo.size(); i++) {			String[] linkInfoTo = (String[])linkInfo.get(i);			out(linkInfoTo[0]);			for (int j=1; j < linkInfoTo.length; j++) {				out("^"+linkInfoTo[j]);			}			outl("");		}		outl("listLinkVlans");		{			Iterator iter = linkVlanMap.entrySet().iterator();			while (iter.hasNext()) {				Map.Entry me = (Map.Entry)iter.next();				String linkId = (String)me.getKey();				ArrayList l = (ArrayList)me.getValue();				out(linkId);				for (int i=0; i < l.size(); i++) {					String linkVlanTo = (String)l.get(i);					out("^"+linkVlanTo);				}				outl("");			}		}		if (!vlanNameMap.isEmpty()) {			outl("listVlanNames");			Iterator iter = vlanNameMap.entrySet().iterator();			while (iter.hasNext()) {				Map.Entry me = (Map.Entry)iter.next();				String vlan = (String)me.getKey();				String vlanName = (String)me.getValue();				outl(vlan+"^"+vlanName);			}		}		String[] types = {			"Boks",			"Link"		};		for (int typ=0; typ < types.length; typ++) {			outl("list"+types[typ]+"Text");			int tcnt=0;			Iterator iter = textOut.entrySet().iterator();			while (iter.hasNext()) {				Map.Entry me = (Map.Entry)iter.next();				String key = (String)me.getKey();			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -