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

📄 207e72a8681e001c15e3abbdec04c53b

📁 基于linux操作系统
💻
字号:
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 + -