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

📄 firewallaction.java

📁 sifi-0.1.6.tar.gz 出自http://www.ifi.unizh.ch/ikm/SINUS/firewall/ 一个linux的防火墙工具。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                validate();                tcpPanelAdded = false;              }              UserDialog.ErrorBox("Cannot load TCP connections! ("+Communicator.commError+")");              break;            }            setEnabled(true);        		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));            actionCommand = 0;            firstRun = false;            try {              Thread.sleep(10000); // reload every ten seconds            }            catch (InterruptedException ignore) {}          } // while          break;        case KILL_TCP:          TcpConnection tc = null;          if (tcpPanelAdded)             tc = (TcpConnection)tcpCanvas.getSelectedEntry();          if (!tcpPanelAdded || tc == null) {            UserDialog.ErrorBox("No connection selected!");            break;          }          tcpThread.stop();					answer = JOptionPane.showConfirmDialog(null,						"Killing connection ID "+tc.id, "User Information",						JOptionPane.OK_CANCEL_OPTION);          remove(tcpPanel);          tcpPanelAdded = false;          if (answer == JOptionPane.OK_OPTION) {            if (!Communicator.killTcp(firewall.HostAddresses.getFirstAddress(),                               tc.id, tc.key, tc.created_jiffies))              UserDialog.ErrorBox("Error killing TCP connection! ("+Communicator.commError+")");          }          actionCommand = LOAD_TCP;          tcpThread = actionThread;          continue;        case RESET_USAGE:					answer = JOptionPane.showConfirmDialog(null,						"Do you really want to reset the usage counter?",						"Reset Usage Counters",						JOptionPane.YES_NO_OPTION);          if (answer == JOptionPane.YES_OPTION) {            if (!Communicator.resetUsage(firewall.HostAddresses.getFirstAddress()))              UserDialog.ErrorBox("Error resetting usage counter! ("+Communicator.commError+")");            else               if (rulePanelAdded) {                remove(rulePanel);                rulePanelAdded = false;                actionCommand = LOAD_CONFIG;                continue;              }          }          break;      } // switch      setEnabled(true);      setCursor(new Cursor(Cursor.DEFAULT_CURSOR));      actionCommand = 0;      return;    }  }  /**   * The varShowing variable indicates if the variable dialog is currently visible.   */  protected boolean varShowing = false;  // private data  private Thread actionThread, tcpThread;  private Host firewall;  private boolean rulePanelAdded = false;  private boolean tcpPanelAdded = false;  private boolean configLoaded = false;  // GUI data  private MenuBar mbar;  private Menu FileMenu;  private Menu AdminMenu;  private Menu ConfigMenu;  private Menu HelpMenu;  private ListPanel rulePanel;  private ShowCanvas ruleCanvas;  private ShowHeader ruleHeader;  private ListPanel tcpPanel;  private TcpCanvas tcpCanvas;  private TcpHeader tcpHeader;  private VariableDialog varDialog;} // FirewallAction// Canvas for showing the active rules using the ListPanelclass ShowCanvas 	extends ListCanvas {  public ShowCanvas(Host fw) {    super(fw.rules);    firewall = fw;    mgDomain = fw.mgDomain;    column_no = 7;    column_share = new int[column_no];    column_share[0] = 10;    column_share[1] = 15;    column_share[2] = 16;    column_share[3] = 20;    column_share[4] = 20;    column_share[5] = 11;    column_share[6] =  8;    column_size = new int[column_no];    column_pos = new int[column_no];  }  protected int drawColumn(Graphics g, Object listObj, int col,    int ypos, FontMetrics fm, int fontheight, int maxascent) {    String str[];    Rule r = (Rule)listObj;    int objIdx = listEntries.indexOf(listObj);    if (col >= 0) { // draw column          if (g == null) {        if (objIdx == 0 && col == 0)          listText = new String[listEntries.size()][][];        if (col == 0)          listText[objIdx] = new String[column_no][];        str = r.getString(col, firewall, mgDomain);        if (col == 0)          str[0] += String.valueOf(objIdx+1);        listText[objIdx][col] = str;        return str.length;      }      else        str = listText[objIdx][col];      if (ypos + str.length*fontheight - offset_y < 0)        return str.length;      int start = 0;      if (col==0) { // add rule number        start = 1;        int imageWidth;        if (r.active) {          imageWidth = greenBallImage.getWidth(null);          if (column_size[0] > imageWidth)            g.drawImage(greenBallImage, column_pos[col]+1, ypos-offset_y+1, null);        }        else {          imageWidth = redBallImage.getWidth(null);          g.drawImage(redBallImage, column_pos[col]+1, ypos-offset_y+1, null);        }        g.drawString(clipString(str[0], column_size[col]-3-imageWidth, fm),           column_pos[col]+imageWidth+2,           ypos + maxascent - offset_y);      }      for (int i=start; i < str.length; i++)         g.drawString(clipString(str[i], column_size[col]-3, fm),           column_pos[col]+1, (ypos + maxascent + i*fontheight) - offset_y);      return str.length;    }    else { // draw multi column text      if (r.comment != null && r.comment.length() > 0) {        if (g == null)           return 1;        String cs = clipString("Description: "+r.comment,           canvas_width-column_size[0]-4, fm);        g.clearRect(column_pos[1]+1, ypos - offset_y,          fm.stringWidth(cs), fontheight);        g.drawString(cs, column_pos[1]+1,           ypos + maxascent - offset_y);        return 1;      }      else         return 0;    }  }  private Host firewall;  private ManageDomain mgDomain;  private String listText[][][];  private static Image greenBallImage = Utils.greenBall();  private static Image redBallImage = Utils.redBall();} // ShowCanvas// Header bar for showing the active rules using the ListPanelclass ShowHeader extends ListHeader {  public ShowHeader(ListCanvas listCanvas) {    super(listCanvas);    header = new String[listCanvas.column_no];    header[0] = "Rule";    header[1] = "Action";    header[2] = "Protocol";    header[3] = "From";    header[4] = "To";    header[5] = "Notification";    header[6] = "Usage";  }} // ShowHeader// Dialog box for showing the variablesclass VariableDialog	extends Dialog	implements ActionListener {  public VariableDialog(FirewallAction p, Host h) {    super(p, "Variables on "+h.objectID, false);    parent = p;    host = h;    GridBagLayout gbl = new GridBagLayout();    GridBagConstraints gbc = new GridBagConstraints();    gbc.fill = GridBagConstraints.BOTH;    gbc.insets = new Insets(3,3,3,3);    setLayout(gbl);    constructString();    varArea = new TextArea(varString, 20, 60);    varArea.setEditable(false);    varArea.setFont(new Font("Courier", Font.PLAIN, 12));    Utils.add_component(this, varArea, gbl, gbc, 0, 0, 1, 1, 100, 100);    Panel pa = new Panel();    OKbutton = new Button("OK");	 OKbutton.addActionListener(this);    pa.add(OKbutton);    Utils.add_component(this, pa, gbl, gbc, 0, 1, 1, 1, 0, 0);    parent.varShowing = true;    pack();	 addWindowListener(new VDAdapter());  }  class VDAdapter extends WindowAdapter {  	public void WindowClosing(WindowEvent we) {      if (isEnabled())        dispose();      return;	}  } // VDAdapter  public void actionPerformed(ActionEvent ae) {    if (ae.getSource() == OKbutton) {      dispose();      parent.varShowing = false;      return;    }  } // actionPerformed  private void constructString() {    StringBuffer sb = new StringBuffer();    Date actDate = new Date();    int len;    for (int i=0; i < host.varnames.length; i++) {      sb.append(host.varnames[i]);      sb.append(" = ");      if (host.vartimeout[i][0].after(actDate)) {        sb.append(varval(i,0));        sb.append("\n");      }      else        sb.append("0\n");      for (int j=1; j < host.varvalues[i].length; j++) {        if (host.vartimeout[i][j].after(actDate)) {          sb.append("  host ");          len = sb.length();          sb.append(Utils.printIP(host.varaddr[i][j]));          while (sb.length() - len < 15)            sb.append(' ');          sb.append(" = ");          sb.append(varval(i,j));          sb.append("\n");        }      }      sb.append("\n");    }    varString = sb.toString();  }  private String varval(int varnum, int entrynum) {    StringBuffer sb = new StringBuffer();    sb.append(Integer.toString(host.varvalues[varnum][entrynum]));    if (host.vartimeout[varnum][entrynum].before(maxDate)) {      String tstr = host.vartimeout[varnum][entrynum].toString();      sb.append(", timeout "+tstr.substring(tstr.indexOf(':')-2,tstr.indexOf(':')+6));    }    return sb.toString();  }  public void refresh() {    constructString();    varArea.setText(varString);  }  private static Date maxDate = new Date((long)Integer.MAX_VALUE * 1000);  private FirewallAction parent;  private Host host;  private String varString;  private TextArea varArea;  private Button OKbutton;} // VariableDialog// Canvas to display the active TCP connections using the ListPanelclass TcpCanvas	extends ListCanvas {  public TcpCanvas(Host fw) {    super(fw.tcpconns);    firewall = fw;    mgDomain = fw.mgDomain;    column_no = 7;    column_share = new int[column_no];    column_share[0] =  5;    column_share[1] = 15;    column_share[2] = 12;    column_share[3] = 12;    column_share[4] = 12;    column_share[5] = 22;    column_share[6] = 22;    column_size = new int[column_no];    column_pos = new int[column_no];  }  public TcpCanvas(Host fw, int share[]) {    super(fw.tcpconns);    firewall = fw;    mgDomain = fw.mgDomain;    column_no = 7;    column_share = share;    column_size = new int[column_no];    column_pos = new int[column_no];  }  protected int drawColumn(Graphics g, Object listObj, int col,    int ypos, FontMetrics fm, int fontheight, int maxascent) {    String str;    TcpConnection tc = (TcpConnection)listObj;    int objIdx = listEntries.indexOf(listObj);    Image stateBall;    int imageWidth;    if (col >= 0) { // draw column          if (g == null) {        if (objIdx == 0 && col == 0)          listText = new String[listEntries.size()][];        if (col == 0)          listText[objIdx] = new String[column_no];        str = tc.getString(col);        listText[objIdx][col] = str;        return 1;      }      else        str = listText[objIdx][col];      if (ypos + fontheight - offset_y < 0)        return 1;      if (col == 1) { // state        switch (tc.stateColor()) {          case TcpConnection.RED:            stateBall = redBallImage;            break;          case TcpConnection.YELLOW:            stateBall = yellowBallImage;            break;          case TcpConnection.GREEN:            stateBall = greenBallImage;            break;          default:            stateBall = null;            break;        }        if (stateBall != null) {          imageWidth = stateBall.getWidth(null);          if (column_size[col] > imageWidth)            g.drawImage(stateBall, column_pos[col]+1, ypos - offset_y + 1, null);        }        else          imageWidth = 0;        g.drawString(clipString(str, column_size[col]-3-imageWidth, fm),          column_pos[col]+imageWidth+2, ypos + maxascent - offset_y);      }      else        g.drawString(clipString(str, column_size[col]-3, fm),           column_pos[col]+1, ypos + maxascent - offset_y);      return 1;    }    else // no multi column text      return 0;  }  private Host firewall;  private ManageDomain mgDomain;  private String listText[][];  private static Image greenBallImage = Utils.greenBall();  private static Image redBallImage = Utils.redBall();  private static Image yellowBallImage = Utils.yellowBall();} // TcpCanvas// Header bar for the TCP connection monitorclass TcpHeader extends ListHeader {  public TcpHeader(ListCanvas listCanvas, Host firewall) {    super(listCanvas);    header = new String[listCanvas.column_no];    header[0] = "ID";    header[1] = "State "+Utils.timeString(firewall.actDate);    header[2] = "Created";    header[3] = "Last used";    header[4] = "Timeout";    header[5] = "Source";    header[6] = "Destination";  }} // TcpHeader

⌨️ 快捷键说明

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