package com.bocloud.nms.model.hillstone;

import java.util.Objects;

// 安全域--威胁防护
public class SafeZoneRuleModel extends HillStoneGenericModel {
    private Long safeZoneId; // 所属安全域id
    private String safeZone; // 所属安全域
    /* 缺少02 06 10 11 21 22
    01 威胁防护--攻击防护--设置--Teardrop攻击防护
    03 威胁防护--攻击防护--设置--Land攻击防护
    04 威胁防护--攻击防护--设置--IP选项
    05 威胁防护--攻击防护--设置--IP分片防护
    07 威胁防护--攻击防护--设置--WinNuke攻击防护
    08 威胁防护--攻击防护--设置--端口扫描攻击防护
    09 威胁防护--攻击防护--设置--SYN洪水攻击防护
    12 威胁防护--攻击防护--设置--TCP异常
    13 威胁防护--攻击防护--设置--ICMP洪水攻击防护
    14 威胁防护--攻击防护--设置--IP地址扫描攻击防护
    15 威胁防护--攻击防护--设置--Ping of Death攻击防护
    16 威胁防护--攻击防护--设置--ICMP大包攻击防护
    17 威胁防护--攻击防护--设置--UDP洪水攻击防护
    18 威胁防护--攻击防护--设置--DNS查询洪水攻击防护
    19 威胁防护--攻击防护--设置--DNS递归查询洪水攻击防护
    20 威胁防护--攻击防护--设置--ARP欺骗攻击防护
    23 威胁防护--攻击防护--设置--TCP握手分片攻击防护
    24 威胁防护--攻击防护
     */
    private Integer item; // 防护类型
    private Boolean enable; // 是否开启，当item!=24时，operation为100关闭，101和102开启，别的值暂未见到；当item=24,则取enable
    private Integer action; // 应对行为：1 告警 0 丢弃
    private Integer threshold; // 警戒值/源警戒值
    private Integer desThreshold; // 目的警戒值/目的警戒值--基于IP
    private Integer desThresholdPort; // 目的警戒值/目的警戒值--基于端口
    private Integer baseType; // 目的警戒值：1 基于IP 2 基于端口
    private Integer addrType; // 目的警戒值--基于端口：1 IP地址 2 地址条目（地址本）
    private Long ip; // 目的警戒值--基于端口--IP地址--地址
    private Long mask; // 目的警戒值--基于端口--IP地址--掩码
    private Long addressBookId; // 目的警戒值--基于端口--地址条目id
    private String addressBook; // 目的警戒值--基于端口--地址条目

    public Long getSafeZoneId() {
        return safeZoneId;
    }

    public void setSafeZoneId(Long safeZoneId) {
        this.safeZoneId = safeZoneId;
    }

    public String getSafeZone() {
        return safeZone;
    }

    public void setSafeZone(String safeZone) {
        this.safeZone = safeZone;
    }

    public Integer getItem() {
        return item;
    }

    public void setItem(Integer item) {
        this.item = item;
    }

    public Boolean getEnable() {
        return enable;
    }

    public void setEnable(Boolean enable) {
        this.enable = enable;
    }

    public Integer getAction() {
        return action;
    }

    public void setAction(Integer action) {
        this.action = action;
    }

    public Integer getThreshold() {
        return threshold;
    }

    public void setThreshold(Integer threshold) {
        this.threshold = threshold;
    }

    public Integer getDesThreshold() {
        return desThreshold;
    }

    public void setDesThreshold(Integer desThreshold) {
        this.desThreshold = desThreshold;
    }

    public Integer getDesThresholdPort() {
        return desThresholdPort;
    }

    public void setDesThresholdPort(Integer desThresholdPort) {
        this.desThresholdPort = desThresholdPort;
    }

    public Integer getBaseType() {
        return baseType;
    }

    public void setBaseType(Integer baseType) {
        this.baseType = baseType;
    }

    public Integer getAddrType() {
        return addrType;
    }

    public void setAddrType(Integer addrType) {
        this.addrType = addrType;
    }

    public Long getIp() {
        return ip;
    }

    public void setIp(Long ip) {
        this.ip = ip;
    }

    public Long getMask() {
        return mask;
    }

    public void setMask(Long mask) {
        this.mask = mask;
    }

    public Long getAddressBookId() {
        return addressBookId;
    }

    public void setAddressBookId(Long addressBookId) {
        this.addressBookId = addressBookId;
    }

    public String getAddressBook() {
        return addressBook;
    }

    public void setAddressBook(String addressBook) {
        this.addressBook = addressBook;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        SafeZoneRuleModel rule = (SafeZoneRuleModel) o;
        return Objects.equals(safeZoneId, rule.safeZoneId) &&
            Objects.equals(item, rule.item);
    }

    @Override
    public int hashCode() {
        return Objects.hash(safeZoneId, item);
    }
}
