📄 207e72a8681e001c15e3abbdec04c53b
字号:
package deng;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import javax.swing.*;
public class SubWindow {
FireWallApp fwa;
JFrame subFrame;
//CheckboxGroup cbg=new CheckboxGroup();
ButtonGroup bg=new ButtonGroup();
JCheckBox cbx1=new JCheckBox("入站",true);
JCheckBox cbx2=new JCheckBox("出站");
JCheckBox cbx3=new JCheckBox("转发");
JTextField jtext1=new JTextField();
JTextField jtext2=new JTextField();
JTextField jtext3=new JTextField();
JTextField jtext4=new JTextField();
JTextField jtext5=new JTextField();
JTextField jtext11=new JTextField();
JTextField jtext21=new JTextField();
JTextField jtext31=new JTextField();
JTextField jtext41=new JTextField();
JTextField jtext51=new JTextField();
JTextField jtext3_1=new JTextField();
JTextField jtext3_2=new JTextField();
JTextField jtext3_3=new JTextField();
JTextField jtext3_4=new JTextField();
Choice choice=new Choice();
// Checkbox chb1=new Checkbox("接受",cbg,true);
// Checkbox chb2=new Checkbox("丢弃",cbg,false);
JCheckBox chb1=new JCheckBox("接受",true);
JCheckBox chb2=new JCheckBox("丢弃",false);
public SubWindow(FireWallApp fwa){
this.fwa=fwa;
init();
System.out.println("SubWindow 52行");
}
public void init(){
subFrame=new JFrame("指定IP及端口");
subFrame.setVisible(false);
fwa.subFrame=subFrame;
subFrame.setBounds(500, 240, 400, 380);
subFrame.setResizable(false);
subFrame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
e.getWindow().dispose();
}
});
subFrame.setLayout(null);
subFrame.getContentPane().setBackground(Color.orange);
subFrame.setVisible(true);
JPanel jp1=new JPanel();
jp1.setBounds(0, 0, 400,60);
jp1.setBackground(Color.orange);
jp1.setLayout(null);
JLabel jlabel1_1=new JLabel("请指定数据方向:");
jlabel1_1.setBounds(10, 10, 100, 25);
cbx1.setBounds(10, 30, 70,25);
cbx1.setBackground(Color.orange);
cbx2.setBounds(80, 30, 70, 25);
cbx2.setBackground(Color.orange);
cbx3.setBounds(150, 30, 70, 25);
cbx3.setBackground(Color.orange);
jp1.add(jlabel1_1);
jp1.add(cbx1);
jp1.add(cbx2);
jp1.add(cbx3);
JPanel jp2=new JPanel();
jp2.setLayout(null);
jp2.setBackground(Color.orange);
jp2.setBounds(0, 60, 400, 60);
jtext1.setBounds(50, 20, 40, 25);
jtext1.setColumns(3);
jtext2.setBounds(95, 20, 40, 25);
jtext2.setColumns(3);
jtext3.setBounds(140, 20, 40, 25);
jtext3.setColumns(3);
jtext4.setBounds(185, 20, 40, 25);
jtext4.setColumns(3);
jtext5.setBounds(235, 20, 40, 25);
jtext5.setColumns(3);
JLabel jlabel0=new JLabel("源域");
jlabel0.setBounds(10, 20, 30, 25);
JLabel jlabel1=new JLabel(".");
jlabel1.setBounds(90, 20, 5, 25);
JLabel jlabel2=new JLabel(".");
jlabel2.setBounds(135, 20, 5, 25);
JLabel jlabel3=new JLabel(".");
jlabel3.setBounds(180, 20, 5, 25);
JLabel jlabel4=new JLabel("/");
jlabel4.setBounds(228, 20, 7, 25);
jp2.add(jlabel0);
jp2.add(jtext1);
jp2.add(jlabel1);
jp2.add(jtext2);
jp2.add(jlabel2);
jp2.add(jtext3);
jp2.add(jlabel3);
jp2.add(jtext4);
jp2.add(jlabel4);
jp2.add(jtext5);
JPanel jp6=new JPanel();
jp6.setLayout(null);
jp6.setBackground(Color.orange);
jp6.setBounds(0, 120, 400, 60);
jtext11.setBounds(50, 20, 40, 25);
jtext11.setColumns(3);
jtext21.setBounds(95, 20, 40, 25);
jtext21.setColumns(3);
jtext31.setBounds(140, 20, 40, 25);
jtext31.setColumns(3);
jtext41.setBounds(185, 20, 40, 25);
jtext41.setColumns(3);
jtext51.setBounds(235, 20, 40, 25);
jtext51.setColumns(3);
JLabel jlabel01=new JLabel("目标");
jlabel01.setBounds(10, 20, 30, 25);
JLabel jlabel11=new JLabel(".");
jlabel11.setBounds(90, 20, 5, 25);
JLabel jlabel21=new JLabel(".");
jlabel21.setBounds(135, 20, 5, 25);
JLabel jlabel31=new JLabel(".");
jlabel31.setBounds(180, 20, 5, 25);
JLabel jlabel41=new JLabel("/");
jlabel41.setBounds(228, 20, 7, 25);
jp6.add(jlabel01);
jp6.add(jtext11);
jp6.add(jlabel11);
jp6.add(jtext21);
jp6.add(jlabel21);
jp6.add(jtext31);
jp6.add(jlabel31);
jp6.add(jtext41);
jp6.add(jlabel41);
jp6.add(jtext51);
JPanel jp3=new JPanel();
jp3.setLayout(null);
jp3.setBounds(0, 180,400,60);
jp3.setBackground(Color.orange);
JLabel jlabel3_1=new JLabel("源端口范围");
JLabel jlabel3_2=new JLabel(":");
JLabel jlabel3_3=new JLabel("目的端口范围");
JLabel jlabel3_4=new JLabel(":");
jlabel3_1.setBounds(10, 20, 80, 25);
jlabel3_2.setBounds(130, 20, 5, 25);
jlabel3_3.setBounds(190, 20, 80, 25);
jlabel3_4.setBounds(315, 20, 5, 25);
jtext3_1.setBounds(85, 20, 40, 25);
jtext3_2.setBounds(140, 20, 40, 25);
jtext3_3.setBounds(270, 20, 40, 25);
jtext3_4.setBounds(325, 20, 40, 25);
jp3.add(jlabel3_1);
jp3.add(jlabel3_2);
jp3.add(jlabel3_3);
jp3.add(jlabel3_4);
jp3.add(jtext3_1);
jp3.add(jtext3_2);
jp3.add(jtext3_3);
jp3.add(jtext3_4);
JPanel jp4=new JPanel();
jp4.setLayout(null);
jp4.setBackground(Color.orange);
jp4.setBounds(0, 240, 400, 60);
JLabel jl4=new JLabel("协议");
jl4.setBounds(10, 20, 40, 25);
choice.addItem("tcp");
choice.addItem("udp");
choice.addItem("icmp");
choice.addItem("all");
choice.setBounds(50, 20, 50, 25);
JLabel jl4_2=new JLabel("策略");
jl4_2.setBounds(140, 20, 40, 25);
bg.add(chb1);
bg.add(chb2);
chb1.setBounds(170, 20, 60, 25);
chb2.setBounds(235, 20, 40, 25);
jp4.add(jl4);
jp4.add(choice);
jp4.add(jl4_2);
jp4.add(chb1);
jp4.add(chb2);
JPanel jp5=new JPanel();
jp5.setBackground(Color.orange);
jp5.setBounds(0, 300, 400, 60);
JButton jb1=new JButton("确定");
jb1.addActionListener(new MyActionListener());
JButton jb2=new JButton("取消");
jb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
subFrame.setVisible(false);
subFrame.dispose();//释放资源
}
});
jp5.add(jb1);
jp5.add(jb2);
subFrame.add(jp1);
subFrame.add(jp2);
subFrame.add(jp3);
subFrame.add(jp4);
subFrame.add(jp5);
subFrame.add(jp6);
}
class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
String error="";
String [] direction=new String[3];
if(cbx1.isSelected())
direction[0]="INPUT";
if(cbx2.isSelected())
direction[1]="OUTPUT";
if(cbx3.isSelected())
direction[2]="FORWARD";
// 简单的判断IP与端口的正确性
if(jtext1.getText().equals("")||jtext2.getText().equals("")||jtext3.getText().equals("")||jtext4.getText().equals(""))
{
error="IP地址不能为空!";
JOptionPane.showMessageDialog(null, error);
return;
}
if(jtext11.getText().equals("")||jtext21.getText().equals("")||jtext31.getText().equals("")||jtext41.getText().equals(""))
{
error="IP地址不能为空!";
JOptionPane.showMessageDialog(null, error);
return;
}
try{
if(Integer.parseInt(jtext1.getText())>255
||Integer.parseInt(jtext2.getText())>255
||Integer.parseInt(jtext3.getText())>255
||Integer.parseInt(jtext4.getText())>255)
{
error="IP地址为不大于255的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if(Integer.parseInt(jtext11.getText())>255
||Integer.parseInt(jtext21.getText())>255
||Integer.parseInt(jtext31.getText())>255
||Integer.parseInt(jtext41.getText())>255)
{
error="IP地址为不大于255的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if((!jtext3_1.getText().trim().equals(""))&&Integer.parseInt(jtext3_1.getText())>65535)
{
error="端口地址为不大于65535的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if((!jtext3_2.getText().trim().equals(""))&&Integer.parseInt(jtext3_2.getText())>65535)
{
error="端口地址为不大于65535的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if((!jtext3_3.getText().trim().equals(""))&&Integer.parseInt(jtext3_3.getText())>65535)
{
error="端口地址为不大于65535的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if((!jtext3_4.getText().trim().equals(""))&&Integer.parseInt(jtext3_4.getText())>65535)
{
error="端口地址为不大于65535的整数!";
JOptionPane.showMessageDialog(null, error);
return;
}
if((!jtext5.getText().trim().equals(""))&&Integer.parseInt(jtext5.getText())>32)
{
error="网络号位数不能大于32!";
JOptionPane.showMessageDialog(null, error);
return;
}
}catch(Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null,"IP,网络号位数与端口地址必须输入整数!");
return;
}
Rule rule=new Rule();
rule.setDirection(direction);
String name="";
try{
name=JOptionPane.showInputDialog(subFrame, "请为所设置的规则指定一个名称").trim();
}catch(Exception e){
return;
}
if(name.equals(""))return;
rule.setName(name);
String ip=jtext1.getText()+"."+jtext2.getText()+"."+jtext3.getText()+"."+jtext4.getText();
if(!jtext5.getText().equals(""))
ip=ip+"/"+jtext5.getText();
rule.setIP(ip);
String dip=jtext11.getText()+"."+jtext21.getText()+"."+jtext31.getText()+"."+jtext41.getText();
if(!jtext51.getText().equals(""))
dip=dip+"/"+jtext51.getText();
rule.setDip(dip);
String port;String dport;
if(jtext3_1.getText().trim().equals("")&&jtext3_2.getText().trim().equals(""))
port="";
else if(jtext3_1.getText().trim().equals(""))
port=jtext3_2.getText();
else if(jtext3_2.getText().trim().equals(""))
port=jtext3_1.getText();
else
port=jtext3_1.getText()+":"+jtext3_2.getText();
rule.setSport(port);
if(jtext3_3.getText().trim().equals("")&&jtext3_4.getText().trim().equals(""))
dport="";
else if(jtext3_3.getText().trim().equals(""))
dport=jtext3_4.getText();
else if(jtext3_4.getText().trim().equals(""))
dport=jtext3_3.getText();
else
dport=jtext3_3.getText()+":"+jtext3_4.getText();
rule.setDport(dport);
rule.setProtocol(choice.getSelectedItem());
String strategy="";
//String strategy=cbg.getSelectedCheckbox().getLabel();
//if(strategy.equals("接受"))
if(chb1.isSelected())
strategy="ACCEPT";
else
strategy="DROP";
rule.setStrategy(strategy);
fwa.flag=true;
fwa.serverRuleList.add(rule);
subFrame.dispose();
}
}
public static void main(String []sa){
new SubWindow(new FireWallApp());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -