summaryrefslogtreecommitdiff
path: root/src/main/java/com/zdjizhi/enums/LogMetadata.java
blob: 7c501b517425066cd25a10e03dc4b4eff15189c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.zdjizhi.enums;

import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.StrUtil;

import java.util.Arrays;

import static com.zdjizhi.common.FlowWriteConfig.CK_DATABASE;

/**
 * @description: \
 * @author: zhq
 * @create: 2022-07-05
 **/
public enum LogMetadata {

    /*
     * 日志名称,表名,字段
     * */

    CONNECTION_RECORD_LOG("connection_record_log", "connection_record_log_local", new String[]{"cap_ip", "recv_ip", "src_ip", "dst_ip", "src_port", "dst_port", "addr_type", "protocol", "fxo_id", "link_status", "dir_status", "total_cs_pkts", "total_sc_pkts", "total_cs_bytes", "total_sc_bytes", "log_gen_time", "aa", "wv", "yy", "user_mask", "conn_start_time", "app_class", "app_id", "http_host", "http_url", "http_cookie", "http_user_agent", "http_method", "http_accept", "http_accept_encoding", "http_referer", "http_rescode", "tls_sni", "tls_cert", "phone_num", "imei", "imsi"}),
    CONNECTION_RELATION_LOG("connection_relation_log", "connection_relation_log_local", new String[]{"start_time", "end_time", "src_ip", "dst_ip", "sessions", "packets", "bytes"}),
    CONNECTION_SKETCH_RECORD_LOG("connection_sketch_record_log", "connection_sketch_record_log_local", new String[]{"sled_ip", "sketch_start_time", "sketch_duration", "src_ip", "dst_ip", "sketch_sessions", "sketch_packets", "sketch_bytes"}),
    DNS_RECORD_LOG("dns_record_log", "dns_record_log_local", new String[]{"capture_time", "recv_ip", "src_ip", "dst_ip", "src_port", "dst_port", "addr_type", "dns_flag", "ttl", "protocol", "fxo_id", "req_type", "qname", "response", "dns_a", "dns_a_num", "dns_cname", "dns_cname_num", "dns_aaaa", "dns_aaaa_num", "dns_mx", "dns_mx_num", "dns_ns", "dns_ns_num"}),
    DNS_RELATION_LOG("dns_relation_log", "dns_relation_log_local", new String[]{"start_time", "end_time", "record_type", "qname", "record", "sessions"}),
    ;

    private String source;
    private String sink;
    private String[] fields;

    LogMetadata() {
    }

    LogMetadata(String source, String sink, String[] fields) {
        this.source = source;
        this.sink = sink;
        this.fields = fields;
    }

    public String getSource() {
        return source;
    }

    public String getSink() {
        return sink;
    }

    public String[] getFields() {
        return fields;
    }

    public static String getLogSink(String source) {
        LogMetadata logMetadata = EnumUtil.fromString(LogMetadata.class, source);
        return logMetadata.getSink();
    }

    public static String[] getLogFields(String tableName) {
        LogMetadata[] values = LogMetadata.values();
        for (LogMetadata value : values) {
            if (value.sink.equals(tableName)) {
                return value.fields;
            }
        }
        return null;
    }

    public static String preparedSql(String tableName) {
        String[] fields = LogMetadata.getLogFields(tableName);
        String[] placeholders = new String[fields.length];
        Arrays.fill(placeholders, "?");

        return StrUtil.concat(true, "INSERT INTO ", CK_DATABASE, ".", tableName,
                "(", StrUtil.join(",", fields), ") VALUES (", StrUtil.join(",", placeholders), ")");
    }
    public static String preparedSql(String tableName, String[] fields) {
        String[] placeholders = new String[fields.length];
        Arrays.fill(placeholders, "?");

        return StrUtil.concat(true, "INSERT INTO ", CK_DATABASE, ".", tableName,
                "(", StrUtil.join(",", fields), ") VALUES (", StrUtil.join(",", placeholders), ")");
    }
}