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

📄 fwclientthread.java~28~

📁 Firewall Application & source code.
💻 JAVA~28~
字号:
package fwserver;

import java.net.Socket;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.Vector;
import java.io.OutputStreamWriter;
import java.io.FileReader;
import java.net.ServerSocket;
import java.util.Date;
import java.text.SimpleDateFormat;

/**
 * Copyright: Copyright (c) 2005 CH 版权所有
 * 生成日期 2005-6-5
 * 作者姓名 崔灏
 * 类的名称 fwClientThread 父类 Thread
 * 功能描述 建立服务器,监听客户端的连接,交互信息
 * 字段清单 length_now ; 文件当前长度
 *         length_last ;文件修改前的长度
 *         suspendFlag;线程执行标志
 *         RuleVec;存储防火墙规则
 * 方法清单  public void run()
 *          public void mysuspend()
 * @version 1.0
 */
public class fwClientThread extends Thread {
    private long length_now = 0;
    private long length_last = 0;
    private String IP = "127.0.0.1";
    public Vector RuleVec = new Vector();
    private boolean suspendFlag = false;
    public fwClientThread() {
        System.err.println("Client Thread Start ");
        suspendFlag = true;
        start();
    }
    /**************************************************************
     *函数名称:public void run()
     *功能描述:类fwClientThread的方法,监听报警,生成防火墙规则,向服务器端发送
     *入口参数:无
     *出口参数:无
     *返回值:无
     *调用者:函数public void run()
     **************************************************************/
    public void run() {
        int Index = 0;
        String strRule = null;
        String strAction = "REJECT";
        String strIP_port = "";
        String name = "Default";
        String strwhenSet = " ";
        String strwhenExpire = " ";
        String precedence = "2000";
        String strwhoSet = "unknown";

        while (suspendFlag) {
            try {
             //建立文件
              File reporttxt = new File("/D:","report.txt");
                if (!reporttxt.exists()) {
                    if (reporttxt.createNewFile()) {
                        System.err.println("Create OK");
                    }
                }
              //监听报警
                ServerSocket sockets = new ServerSocket(5168);
                System.out.println("Listening  Report");
                Socket ReportSock = sockets.accept();
                sockets.close();

                InputStreamReader input = new InputStreamReader(ReportSock.
                        getInputStream());
                BufferedReader bufreaderin = new BufferedReader(input);

                StringBuffer bufferServerStr = new StringBuffer();

                String sss = bufreaderin.readLine();
                while (sss != null) {
                    bufferServerStr.append(sss + "\r\n");
                    sss = bufreaderin.readLine();
                }

                FileWriter fout = new FileWriter("report.txt");
                fout.write(bufferServerStr.toString());
                input.close();
                fout.close();
                ReportSock.close();
                //bufferServerStr.delete(0, bufferServerStr.length());

            } catch (Exception dd) {
                System.err.println("Get Report Server Error" + dd);
            }
 //根据报警生成防火墙规则
            try {
                File file = new File("report.txt");
                length_now = file.length();
                FileReader filereader = new FileReader("report.txt");
                BufferedReader filebuffer = new BufferedReader(filereader);
                if (length_last != 0) {
                    filebuffer.skip(length_last + 4);
                }
                System.err.println("length_last1 = " + length_last);
                length_last = length_now;
                System.err.println("length_last2 = " + length_last);
                Index = 0;
                RuleVec.clear();
                String strLinetxt = filebuffer.readLine();
                Index = Index + 1;
                while (strLinetxt != null) {
                    if (Index == 11) {
                        Index = 0;
                    }
                    if (Index == 3) {
                        int FirstblankIndex = strLinetxt.indexOf(" ");
                        int flagIndex = strLinetxt.indexOf("->");
                        String targetIP = strLinetxt.substring(flagIndex + 2,
                                strLinetxt.length());
                        strIP_port = strLinetxt.substring(FirstblankIndex,
                                flagIndex - 1);
                        strIP_port =strIP_port.trim();
                        ///////////////////////////////////
                        Date dtCurrTime = new Date();
                        //格式化日志时间
                        SimpleDateFormat syOutput = new SimpleDateFormat(
                                "yyyy-MM-dd HH:mm:ss");
                        String strStartTime = syOutput.format(dtCurrTime);
                        strwhenSet = strStartTime;
                        strwhenExpire ="PERPETUAL";
                        strRule = "[MANUAL UDP low REJECT]\r\n" + strAction +
                                  ", " + strIP_port + ", " + name +
                                  ", " + strwhenSet + ", " + strwhenExpire +
                                  ", " +
                                  precedence + ", " + strwhoSet + "\r\n";
                        RuleVec.add(strRule);
                        IP = targetIP.trim();
                        try {
                            sleep(200);
                            Socket socket12 = new Socket(IP, 1234);
                            String temp;
                            String strinfo;
                            String temprule;
                            int number = 0;
                            number = RuleVec.size();
                            String strnumber = String.valueOf(number);
                            strnumber = strnumber + "\r\n";
                            Vector strvec = new Vector();
                            strvec.add(strnumber);
                            for (int i = 0; i < number; i++) {
                                temprule = (String) RuleVec.elementAt(i);
                                strvec.add(temprule);
                            }

                            temp = strvec.toString();
                            strinfo = temp.substring(1, temp.length() - 1);
                            OutputStreamWriter ps = new OutputStreamWriter(
                                    socket12.
                                    getOutputStream());
                            ps.write(strinfo);
                            ps.flush();
                            RuleVec.clear();
                            strvec.clear();
                        } catch (Exception ee) {
                            System.err.print("ssdsd" + ee);
                        }

                    }

                    strLinetxt = filebuffer.readLine();
                    Index = Index + 1;
                }

            } catch (Exception e) {
                System.err.println("Error " + e);
            }

            System.err.println("Task!!!");
        }
    }

    public void mysuspend() {
        suspendFlag = false;
    }

}

⌨️ 快捷键说明

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