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

📄 managecontrol.java

📁 sifi-0.1.6.tar.gz 出自http://www.ifi.unizh.ch/ikm/SINUS/firewall/ 一个linux的防火墙工具。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
  private CheckboxMenuItem TopologyCheckbox;  private Panel Toolbar;  private Checkbox hostBox;  private Checkbox netBox;  private Checkbox internetBox;  private RuleEditor editRuleFrame;  // application data  private ManageDomain mgDomain;  private boolean topologyEdit = false;  private Class drawClass, hostClass, netClass, internetClass;} // ManageControlclass ExportData extends Thread {	public ExportData(Frame p, ManageDomain mgDomain) {	parent = p;	md = mgDomain;	}	public void run() {	Graph g;	Enumeration en;	AddrList adr;	ManageObject mo;	int ID;	Host host;	Net net;			FileDialog fd = new FileDialog(parent, "Export Topology", FileDialog.SAVE);		fd.setVisible(true);		if (fd.getFile() == null) {			parent.setEnabled(true);			parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));			return;		}		String filename = fd.getDirectory() + fd.getFile();		BusyBox b = new BusyBox("Save in progress. Please wait!");		b.start(); // show busy box, returns immediately		try {			FileOutputStream fos = new FileOutputStream(filename);			pw = new PrintWriter(fos);			Date date = new Date();			pw.println("#");			pw.println("# Topology Export");			pw.println("# Generated on " + date + "by sfControl");			pw.println("#");			pw.println();			g = md.getTopology();			en = g.getAllVertices();			ID = 0;			while (en.hasMoreElements()) {							ID += 1;				mo = (ManageObject)en.nextElement();				mo.uniqueID = ID;				pw.println("$item");				pw.println("id=" + ID);				pw.print("type=");				// process host				host = null;				if (mo instanceof Host) {					host = (Host)mo;					if (host.isFirewall & host.isServer)						pw.println("(firewall, server)");					else						if (host.isFirewall)							pw.println("firewall");						if (host.isServer)							pw.println("server");					adr = host.HostAddresses;					writeAddresses(adr);					if (host.isServer)						for (int i = 0; i < host.hostTemplates.length; i++)							if (host.hostTemplates[i])								pw.println("attribute=(service, \""+Templates.prompt[Templates.startServer+i]+"\")");				}				// process net				net = null;				if (mo instanceof Net) {					net = (Net)mo;					pw.println("net");					adr = net.NetAddresses;					writeAddresses(adr);				}				// process internet				if (mo instanceof Internet) {					pw.println("internet");				}				pw.println("$enditem");				pw.println();			}			// export connections			pw.println("# Follows the adjazenzlists of all connections.");			pw.println("# Numbers refer to the item's id.");			pw.println("$connections");			en = g.getAllVertices();			Enumeration neighbourEnum;			while (en.hasMoreElements()) {				mo = (ManageObject)en.nextElement();				pw.print("neighbours{" + mo.uniqueID + "}=(");								neighbourEnum = g.findNeighbors(mo);				if (neighbourEnum.hasMoreElements()) {					mo = (ManageObject)neighbourEnum.nextElement();					pw.print(mo.uniqueID);									while (neighbourEnum.hasMoreElements()) {						mo = (ManageObject)neighbourEnum.nextElement();						pw.print(", " + mo.uniqueID);					}					pw.println(")");				}				else					pw.println("()");			}			pw.println("$endconnections");			pw.flush();			pw.close();			fos.close();			b.done();			parent.setEnabled(true);			parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));		} // try		catch (IOException e) {			b.done();			UserDialog.ErrorBox("Error saving data to "+filename+". Data not saved! ("+Communicator.commError+")");		} // catch	}		private void writeAddresses(AddrList al) {	AddrObj ao;	String s;	byte[] address;	byte[] netmask;		Vector av = al.getAddresses();				for (int i = 0; i < av.size(); i++) {			ao = (AddrObj)av.elementAt(i);			address = ao.getAddr();			netmask = ao.getMask();			if ((address == null) || (address.length != 4))				pw.print("address=(0.0.0.0");			else {				s = ("" + Utils.unsign(address[0]));				for (i=1; i < 4; i++)					s += ("." + Utils.unsign(address[i]));				pw.print("address=(" + s);			}			if ((netmask == null) || (netmask.length != 4))				pw.println("/0.0.0.0)");			else {				s = ("" + Utils.unsign(netmask[0]));				for (i=1; i < 4; i++)					s += ("." + Utils.unsign(netmask[i]));				pw.println("/" + s + ")");			}		}		}		protected Frame parent;protected ManageDomain md;protected PrintWriter pw;}// Thread used for saving data. A separate thread is necessary, because// it is not possible to wait for the user response when showing a dialog// box from the event handling loop.class SaveData extends Thread {  public SaveData(ManageDomain md, ManageControl p, boolean ask, boolean sl) {    mgDomain = md;    parent = p;    askDialog = ask;    saveLocal = ask ? false : sl;  }  public void run() {    if (askDialog) {			int answer = JOptionPane.showConfirmDialog(null,				"Save data to firewalls before exiting?",				"Data not saved",				JOptionPane.YES_NO_CANCEL_OPTION);      parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));      switch (answer) {        case JOptionPane.YES_OPTION: // save and quit          break;        case JOptionPane.NO_OPTION: // don't save, quit          mgDomain.changed = false;          parent.prepareQuit();          return;        case JOptionPane.CANCEL_OPTION: // don't save, don't quit          parent.setEnabled(true);          return;      }      parent.setCursor(new Cursor(Cursor.WAIT_CURSOR));    }    boolean success = true;    if (!saveLocal) { // save data to firewalls      BusyBox b = new BusyBox("Save in progress. Please wait!");      b.start(); // show busy box, returns immediately      Enumeration en = mgDomain.Firewalls.elements();      Host f;      byte faddr[];      ServerOutputStream ros;      PersistentOutputStream os;      while (en.hasMoreElements()) {        f = (Host)en.nextElement();        faddr = f.HostAddresses.getFirstAddress();        try {          ros = new ServerOutputStream(faddr, ManageControl.custom.getProperty("GLOBAL_CONFIG"));          if (ros.isClosed()) {            throw new IOException();					}					os = new PersistentOutputStream(ros);          if (!mgDomain.saveDomainConfig(os))            throw new IOException();          ros.close();          os.close();        } // try        catch (IOException e) {          UserDialog.ErrorBox("Error saving data to "+f.objectID+" ("+Utils.printIP(faddr)+").");          success = false;        } // catch      } // while      b.done();    } // if    else { // save data to local file			FileDialog fd = new FileDialog(parent, "Save Configuration", FileDialog.SAVE);			fd.setVisible(true);			if (fd.getFile() == null) {				parent.setEnabled(true);				parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));				return;			}			String filename = fd.getDirectory() + fd.getFile();      BusyBox b = new BusyBox("Save in progress. Please wait!");      b.start(); // show busy box, returns immediately      try {        FileOutputStream fos = new FileOutputStream(filename);        PersistentOutputStream os = new PersistentOutputStream(fos);        if (!mgDomain.saveDomainConfig(os))          throw new IOException("Error writing data");        fos.close();        os.close();        b.done();      } // try      catch (IOException e) {        b.done();        UserDialog.ErrorBox("Error saving data to "+filename+". Data not saved! ("+Communicator.commError+")");        success = false;      } // catch    }    if (success) {      mgDomain.changed = false;      UserDialog.NoticeBox("Data saved successfully!");      if (askDialog) // quit after saving        parent.prepareQuit();    }    parent.setEnabled(true);    parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));  }  private ManageDomain mgDomain;  private ManageControl parent; // parent frame  private boolean askDialog, saveLocal;} // SaveData // This thread is used for loading dataclass LoadData extends Thread {  public LoadData(ManageDomain md, ManageControl p, int l) {    mgDomain = md;    parent = p;    load = l;  }  public void run() {    if (mgDomain.changed) {			int answer = JOptionPane.showConfirmDialog(null,				"Save data to firewalls?",				"Data not saved",				JOptionPane.YES_NO_CANCEL_OPTION);      switch (answer) {        case JOptionPane.YES_OPTION: // save and load          SaveData sd = new SaveData(mgDomain, parent, false, false);          sd.start();          while (sd.isAlive()) {            try {              sd.join(); // wait for save thread to complete              break;            }            catch (Exception ignore) {}          }          break;        case JOptionPane.NO_OPTION: // don't save, load break;					break;        case JOptionPane.CANCEL_OPTION: // don't save, abort load          parent.setEnabled(true);          parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));          return;      }    }    if (load == NONE)       parent.setManageDomain(new ManageDomain());    if (load == REMOTE) {      StringDialog strd = new StringDialog(parent, "Hostname or IP address:");      strd.show();      if (strd.getAnswer() != StringDialog.OK) {        parent.setEnabled(true);        parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));        return;      }      String hostname = strd.getString();      byte host[] = Communicator.resolve(hostname);      if (host == null) {        switch (Communicator.commError) {          case Communicator.COMM_RESOLVE:            UserDialog.ErrorBox("Unknown host "+hostname);            break;          default:            UserDialog.ErrorBox("Error while checking hostname. ("+Communicator.commError+")");            break;        }      }      else {        ManageDomain newmd;        ServerInputStream ris =          new ServerInputStream(host, ManageControl.custom.getProperty("CONF_DIR") + ManageControl.custom.getProperty("GLOBAL_CONFIG"));        if (ris.isEOF())          newmd = null;        else {          PersistentInputStream is = new PersistentInputStream(ris);					newmd = ManageDomain.loadDomainConfig(is);        }        if (newmd == null) { // error reading file          UserDialog.ErrorBox("Error loading data! ("+Communicator.commError+")");        }        else          parent.setManageDomain(newmd);      }    }    if (load == LOCAL) {			FileDialog fd = new FileDialog(parent, "Load configuration", FileDialog.LOAD);			fd.setVisible(true);			String filename = fd.getDirectory();			if (fd.getFile() == null) {				parent.setEnabled(true);				parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));				return;			}			filename += fd.getFile();			FileInputStream fis = null;			try {				fis = new FileInputStream(filename);			}			catch (FileNotFoundException e) {			}	      ManageDomain newmd;      if (fis == null)        newmd = null;      else {				PersistentInputStream is = new PersistentInputStream(fis);				newmd = ManageDomain.loadDomainConfig(is);      }      if (newmd == null) // error reading file				UserDialog.ErrorBox("Can't open File: "+filename);      else        parent.setManageDomain(newmd);    }    parent.setEnabled(true);    parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));  }  private ManageDomain mgDomain;  private ManageControl parent; // parent frame  private int load; // if false create empty domain  public static final int NONE = 0;  public static final int LOCAL = 1;  public static final int REMOTE = 2;} // LoadData// This thread executes autoconfigurationclass AutoconfThread extends Thread {  public AutoconfThread(ManageDomain md, Frame p ) {    mgDomain = md;    parent = p;  }  public void run() {    BusyBox bb = new BusyBox("Running Autoconfiguration. Please wait!");    bb.start();    try {      sleep(500); // time to show busy box    }    catch (Exception e) {}    mgDomain.autoConfig();    bb.done();    UserDialog.NoticeBox("Autoconfiguration completed successfully!");    parent.setEnabled(true);    parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));  }  private ManageDomain mgDomain;  private Frame parent;} // AutoconfThread// This thread generates and shows reportsclass ReportThread extends Thread {  public ReportThread(ManageDomain md, Frame p, int rt) {    mgDomain = md;    parent = p;    reportType = rt;  }  public void run() {    BusyBox bb = new BusyBox("Generating report. Please wait!");    bb.start();		String filename = ManageControl.custom.getProperty("TMP_DIR") + "ConfigReport.html";    if (filename == null) {      UserDialog.ErrorBox("Cannot create temporary file name! ("+Communicator.commError+")");      bb.done();      parent.setEnabled(true);      parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));      return;    }     try {      FileOutputStream fos = new FileOutputStream(filename, false);      PrintWriter pw = new PrintWriter(fos, true);      switch (reportType) {        case REPORT_CONFIG:          writeConfigReport(pw);          break;        default:          UserDialog.ErrorBox("Unknown report type!");          bb.done();          parent.setEnabled(true);          parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));          return;      }      fos.close();      pw.close();			String URLString = Utils.fileURLPrefix() + filename;			if (System.getProperty("os.name").equals("Windows 95")) {				URLString.replace('\\', '/');			}			URL	u = new URL(URLString);			Frame hv = new HTMLView(u);    }    catch (IOException e) {

⌨️ 快捷键说明

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