IdsProtectSetTable.java 4.51 KB
package com.sitech.ismp.coll.net.juniper.table;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;

import org.apache.log4j.Logger;
import org.snmp4j.smi.VariableBinding;

import com.sitech.ismp.snmp.CommSnmpGet;

public class IdsProtectSetTable {

	private Logger logger = Logger.getLogger("COLL");

	public static final String ROOT_OID = "1.3.6.1.4.1.3224.3.1.1.1.1";

	public static final int ATTRIBCOUNT = 13;

	private String IP;

	Vector rowVector = new Vector();

	private void addRow(IdsProtectSetTableRow row) {
		rowVector.add(row);
	}

	public void FillTable(String ip, int port, String community) {
		this.IP = ip;
		CommSnmpGet snmpGet = new CommSnmpGet(ip, port, community);
		snmpGet.init();
		snmpGet.setRootOid(ROOT_OID);
		try {
			snmpGet.workTable(ROOT_OID);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			logger.error("[IP: " + IP + " Coll IdsProtectSetTable failed]");
		}

		HashMap hm = snmpGet.getWalkHashMap();
		Set set = hm.keySet();
		Iterator it = set.iterator();
		while (it.hasNext()) {
			String key = (String) it.next();
			String value = (String) hm.get(key);
			IdsProtectSetTableRow row = new IdsProtectSetTableRow();
			row.setRowIndex(key);
			row.setZoneIndex(value);
			this.addRow(row);
		}

		try {
			for (int i = 0; i < rowVector.size(); i++) {
				IdsProtectSetTableRow row = (IdsProtectSetTableRow) rowVector
						.elementAt(i);
				String rowIndex = row.getRowIndex();
				Vector oidsVector = getOtherOids(rowIndex, ATTRIBCOUNT);
				Vector resultVector = snmpGet.getPDU(oidsVector);

				for (int j = 0; j < resultVector.size(); j++) {
					VariableBinding vb = (VariableBinding) resultVector.get(j);
					String oid = vb.getOid().toString();
					String var = vb.getVariable().toString();
					if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.2.")) {
						row.setDetectPOD(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.3.")) {
						row.setTearDrop(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.4.")) {
						row.setDetectWinNuke(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.5.")) {
						row.setFilterIpSrcRoute(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.6.")) {
						row.setPortScan(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.7.")) {
						row.setAddrSweep(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.8.")) {
						row.setLandAttack(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.10.")) {
						row.setIPSpoofing(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.11.")) {
						row.setSYNAttack(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.12.")) {
						row.setICMPFlood(var);
					} else if (oid.startsWith("1.3.6.1.4.1.3224.3.1.1.1.13.")) {
						row.setUDPFlood(var);
					}
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			logger.error("[IP: " + IP + " Coll IdsProtectSetTable failed]");
		}

		snmpGet.release();

	}

	public Vector getRrows() {
		return rowVector;
	}

	private Vector getOtherOids(String rowIndex, int attribCount) {
		Vector vector = new Vector();
		for (int i = 2; i <= attribCount; i++) {
			String oid = releaseRootOidLast(ROOT_OID, rowIndex, i);
			vector.add(oid);
		}
		return vector;
	}

	private String releaseRootOidLast(String rootOid, String rowIndex, int int_i) {
		String result = "";
		String rowIndexLast = rowIndex.substring(rootOid.length(), rowIndex
				.length());
		String rootOidStart = rootOid.substring(0, rootOid.length() - 1);

		result = rootOidStart + int_i + rowIndexLast;
		return result;
	}

	public static void main(String args[]) {
		IdsProtectSetTable idsPSTable = new IdsProtectSetTable();
		idsPSTable.FillTable("130.30.15.6", 161, "ahnms2008");
		Vector vector = idsPSTable.getRrows();
		for (int i = 0; i < vector.size(); i++) {
			IdsProtectSetTableRow row = (IdsProtectSetTableRow) vector.get(i);
			System.out.println("[ZoneIndex: " + row.getZoneIndex()
					+ "]  [DetecPODS: " + row.getDetectPOD()
					+ "]  [DetecTearDrop: " + row.getTearDrop()
					+ "]  [DetecWinNuke: " + row.getDetectWinNuke()
					+ "]  [DetecFilterIP: " + row.getFilterIpSrcRoute()
					+ "]  [DetecPortScan: " + row.getPortScan()
					+ "]  [DetecAddrSweep: " + row.getAddrSweep()
					+ "]  [DetecLand: " + row.getLandAttack()
					+ "]  [DetecIPSpoofing: " + row.getIPSpoofing()
					+ "]  [DetecSYN: " + row.getSYNAttack() + "]  [DetecICMP: "
					+ row.getICMPFlood() + "]  [DetecUDP: " + row.getUDPFlood()
					+ "]");
		}
	}
}