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

📄 managecontrol.new

📁 sifi-0.1.6.tar.gz 出自http://www.ifi.unizh.ch/ikm/SINUS/firewall/ 一个linux的防火墙工具。
💻 NEW
📖 第 1 页 / 共 3 页
字号:
  public boolean terminated = false;  public static AppletContext appletContext;  // private data  // gui data  private DragDrop ddPanel;  private MenuBar mbar;  private Menu FileMenu;  private Menu EditMenu;  private Menu ReportMenu;  private Menu HelpMenu;  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;} // ManageControl// 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) {      YesNoCancelBox ync = new YesNoCancelBox(parent, "Data not saved", "Save data to firewalls before exiting?");      ync.show();      parent.setCursor(Frame.DEFAULT_CURSOR);      switch (ync.getAnswer()) {        case YesNoCancelBox.YES: // save and quit          break;        case YesNoCancelBox.NO: // don't save, quit          mgDomain.changed = false;          parent.prepareQuit();          return;        case YesNoCancelBox.CANCEL: // don't save, don't quit          parent.setEnabled(true);          return;      }      parent.setCursor(Frame.WAIT_CURSOR);    }    boolean success = true;    if (!saveLocal) { // save data to firewalls      BusyBox b = new BusyBox(parent, "Save in progress. Please wait!");      b.show(); // show busy box, returns immediately      Enumeration en = mgDomain.Firewalls.elements();      Host f;      byte faddr[];      RelayOutputStream ros;      PersistentOutputStream os;      while (en.hasMoreElements()) {        f = (Host)en.nextElement();        faddr = f.HostAddresses.getFirstAddress();        try {          ros = new RelayOutputStream(faddr, Custom.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) {          ErrorBox eb = new ErrorBox(parent,             "Error saving data to "+f.objectID+" ("+Utils.printIP(faddr)+").");          eb.show();          success = false;        } // catch      } // while      b.done();    } // if    else { // save data to local file      StringDialog strd = new StringDialog(parent, "Filename:");      strd.setVisible(true);      if (strd.getAnswer() != StringDialog.OK) {        parent.setEnabled(true);        parent.setCursor(Frame.DEFAULT_CURSOR);        return;      }      String filename = strd.getString();      BusyBox b = new BusyBox(parent, "Save in progress. Please wait!");      b.show(); // show busy box, returns immediately      try {        LocalOutputStream los = new LocalOutputStream(filename);        if (los.isClosed())          throw new IOException("Error opening file");        PersistentOutputStream os = new PersistentOutputStream(los);        if (!mgDomain.saveDomainConfig(os))          throw new IOException("Error writing data");        los.close();        os.close();        b.done();      } // try      catch (IOException e) {        b.done();        ErrorBox eb = new ErrorBox(parent,           "Error saving data to "+filename+". Data not saved! ("+Communicator.commError+")");        eb.show();        success = false;      } // catch    }    if (success) {      mgDomain.changed = false;      NoticeBox nb = new NoticeBox(parent, "Data saved successfully!");      nb.show();      if (askDialog) // quit after saving        parent.prepareQuit();    }    parent.setEnabled(true);    parent.setCursor(Frame.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) {      YesNoCancelBox ync = new YesNoCancelBox(parent, "Data not saved", "Save data to firewalls?");      ync.show();      switch (ync.getAnswer()) {        case YesNoCancelBox.YES: // 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 YesNoCancelBox.NO: // don't save, load          break;        case YesNoCancelBox.CANCEL: // don't save, abort load          parent.setEnabled(true);          parent.setCursor(Frame.DEFAULT_CURSOR);          return;      }    }    if (load == NONE)       parent.setManageDomain(new ManageDomain());    if (load == REMOTE) {      StringDialog strd = new StringDialog(parent, "Hostname or IP address:");      strd.setVisible(true);      if (strd.getAnswer() != StringDialog.OK) {        parent.setEnabled(true);        parent.setCursor(Frame.DEFAULT_CURSOR);        return;      }      String hostname = strd.getString();      byte host[] = Communicator.resolve(hostname);      if (host == null) {        ErrorBox eb;        switch (Communicator.commError) {          case Communicator.COMM_NOCONN:            eb = new ErrorBox(parent, "Cannot connect to sfrelay!");            break;          case Communicator.COMM_RESOLVE:            eb = new ErrorBox(parent, "Unknown host "+hostname);            break;          default:            eb = new ErrorBox(parent, "Error while checking hostname. ("+Communicator.commError+")");            break;        }        eb.show();      }      else {        ManageDomain newmd;        RelayInputStream ris =          new RelayInputStream(host, Custom.CONF_DIR + Custom.GLOBAL_CONFIG);        if (ris.isEOF())          newmd = null;        else {          PersistentInputStream is = new PersistentInputStream(ris);          newmd = ManageDomain.loadDomainConfig(is);        }        if (newmd == null) { // error reading file          ErrorBox eb = new ErrorBox(parent, "Error loading data! ("+Communicator.commError+")");          eb.show();        }        else          parent.setManageDomain(newmd);      }    }    if (load == LOCAL) {      StringDialog strd = new StringDialog(parent, "Filename:");      strd.setVisible(true);      if (strd.getAnswer() != StringDialog.OK) {        parent.setEnabled(true);        parent.setCursor(Frame.DEFAULT_CURSOR);        return;      }      String filename = strd.getString();          LocalInputStream lis = new LocalInputStream(filename);      ManageDomain newmd;      if (lis.isEOF())        newmd = null;      else {        PersistentInputStream is = new PersistentInputStream(lis);        newmd = ManageDomain.loadDomainConfig(is);      }      if (newmd == null) { // error reading file        ErrorBox eb = new ErrorBox(parent, "Error loading data! ("+Communicator.commError+")");        eb.show();      }      else        parent.setManageDomain(newmd);    }    parent.setEnabled(true);    parent.setCursor(Frame.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(parent, "Running Autoconfiguration. Please wait!");    bb.show();    try {      sleep(500); // time to show busy box    }    catch (Exception e) {}    mgDomain.autoConfig();    bb.done();    NoticeBox nb = new NoticeBox(parent, "Autoconfiguration completed successfully!");    nb.show();    parent.setEnabled(true);    parent.setCursor(Frame.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(parent, "Generating report. Please wait!");    bb.show();    String filename = Communicator.getTempName();    if (filename == null) {      ErrorBox eb = new ErrorBox(parent, "Cannot create temporary file name! ("+Communicator.commError+")");      bb.done();      eb.show();      parent.setEnabled(true);      parent.setCursor(Frame.DEFAULT_CURSOR);      return;    }     try {      LocalOutputStream los = new LocalOutputStream(filename);      if (los.isClosed())         throw new IOException();      PrintStream ps = new PrintStream(los);      switch (reportType) {        case REPORT_CONFIG:          writeConfigReport(ps);          break;        default:          ErrorBox eb = new ErrorBox(parent, "Unknown report type!");          bb.done();          eb.show();          parent.setEnabled(true);          parent.setCursor(Frame.DEFAULT_CURSOR);          return;      }      los.close();      ps.close();      URL u = new URL(Utils.fileURLPrefix()+filename);      ManageControl.appletContext.showDocument(u,"_blank");    }    catch (IOException e) {      ErrorBox eb = new ErrorBox(parent, "Error writing file! ("+Communicator.commError+")");      eb.show();    }    finally {      bb.done();    }    parent.setCursor(Frame.DEFAULT_CURSOR);    parent.setEnabled(true);  }  /**   * generate configuration report   */  private void writeConfigReport(PrintStream ps) {    ps.println("<html><head><title>sf Configuration Report</title></head><body>");    ps.println("<h1>sf Configuration Report</h1>");    ps.println("<p>Report generated "+(new Date()).toString());    if (mgDomain.DomainName.length() > 0)      ps.println("<h2>Management domain <i>"+mgDomain.DomainName+"</i></h2>");    Enumeration en = mgDomain.getTopology().getAllVertices();    ManageObject mo;    Host h;    Net n;    Internet in;    while (en.hasMoreElements()) {      mo = (ManageObject)en.nextElement();      if (mo instanceof Host) {        h = (Host)mo;        ps.println("<h3><a name="+mo.identString()+">Host <i>"+h.objectID+"</i></a></h3>");        ps.println("<ul>");        if (h.level == 1)          ps.println("<li>Level: "+h.level+" firewall hop to nearest Internet connection");        else if (h.level >= 0)          ps.println("<li>Level: "+h.level+" firewall hops to nearest Internet connection");        else          ps.println("<li>No Internet connection");        if (h.isFirewall)          if (h.transparent)            ps.println("<li>Firewall (allows packets from outside to outside)");          else            ps.println("<li>Firewall (blocks packets from outside to outside)");        if (h.isServer && h.publicServer)          ps.println("<li>Server (public access)");        if (h.isServer && !h.publicServer)          ps.println("<li>Server (internal access only)");        ps.println("<li>Addresses:");        writeAddresses(ps, h.HostAddresses);        if (h.isFirewall) {          ps.println("<li>Internalnets:");          writeAddresses(ps, h.internalAddresses);        }        writeNeighbors(ps, mo);        ps.println("</ul>");      }      else if (mo instanceof Net) {        n = (Net)mo;        ps.println("<h3><a name="+mo.identString()+">Network <i>"+n.objectID+"</i></a></h3>");        ps.println("<ul>");

⌨️ 快捷键说明

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