package edu.sjtu.infosec.ismp.manager.RAM.model; import java.io.Serializable; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.hibernate.annotations.Type; /** * 信息库扫描信息类. * */ @Entity @Table(name = "RAM_INFO_LEAK") @org.hibernate.annotations.Entity(dynamicInsert=true, dynamicUpdate=true) public class AsseInfoLeak implements Serializable { /** * 记录编号 **/ @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="ID") private Integer id; /** * pluginId **/ @Column(name="PLUGIN_ID", length = 15) private String pluginId; /** * nsfocusId **/ @Column(name="NSFOCUS_ID", length = 15) private String nsfocusId; /** * bugtraqId **/ @Column(name="BUGTRAQ_ID", length = 15) private String bugtraqId; /** * risk * */ @Column(name="RISK", length = 15) private String risk; /** * cveId * */ @Column(name="CVE_ID", length = 20) private String cveId; /** * solution * */ @Column(name="SOLUTION") @Type(type="text") private String solution; /** * 关联测评项目 * */ @ManyToOne @Cascade(value={CascadeType.SAVE_UPDATE}) @JoinColumn(name = "asse_info_proj_id", nullable = false) private AsseInfoProj asseInfoProj; /** * IP地址 * */ @Column(name="IP", length = 15) private String ip; /** * 关联资产 */ @ManyToOne @Cascade(value={CascadeType.SAVE_UPDATE}) @JoinColumn(name="asse_info_asse_id") private AsseInfoAsse asse; /** * 漏洞名称 * */ @Column(name="LOCATION") @Type(type="text") private String location; /** * 端口号 * */ @Column(name="LEAKPORT", length = 5) private String port; /** * 协议 * */ @Column(name="PROTOCOL", length = 10) private String protocol; /** * 漏洞编号 * */ @Column(name="KNOW_ID", length = 20) private String knowId; /** * 告警类型 * */ @Column(name="WARN_KIND", length = 10) private String warnKind; /** * 威胁备注 * */ @Column(name="LEAKDESCRIBE") @Type(type="text") private String describe; /** * 漏洞对应返回值 * */ @Column(name="MESS_STRING") @Type(type="text") private String message; /** * @return id * */ public Integer getId() { return id; } /** * @param leakId 记录编号 * */ public void setId(Integer leakId) { this.id = leakId; } /** * @return asseInfoProj * */ public AsseInfoProj getAsseInfoProj() { return asseInfoProj; } /** * @param asseinfoProj 关联测评项目 * */ public void setAsseInfoProj(AsseInfoProj asseinfoProj) { this.asseInfoProj = asseinfoProj; } /** * @return ip * */ public String getIp() { return ip; } /** * @param leakIp IP地址 * */ public void setIp(String leakIp) { this.ip = leakIp; } /** * @return asse */ public AsseInfoAsse getAsse() { return asse; } /** * @param asseInfo * 关联资产 */ public void setAsse(AsseInfoAsse asseInfo) { this.asse = asseInfo; } /** * @return location * */ public String getLocation() { return location; } /** * @param loca 漏洞所在位置 * */ public void setLocation(String loca) { this.location = loca; } /** * @return port * */ public String getPort() { return port; } /** * @param appPort 端口 * */ public void setPort(String appPort) { this.port = appPort; } /** * @return protocol * */ public String getProtocol() { return protocol; } /** * @param prot 协议 * */ public void setProtocol(String prot) { this.protocol = prot; } /** * @return knowId * */ public String getKnowId() { return knowId; } /** * @param knowid 知识库Id * */ public void setKnowId(String knowid) { this.knowId = knowid; } /** * @return warnKind * */ public String getWarnKind() { return warnKind; } /** * @param warnkind 告警类型 * */ public void setWarnKind(String warnkind) { this.warnKind = warnkind; } /** * @return describe * */ public String getDescribe() { return describe; } /** * @param desc 漏洞描述 * */ public void setDescribe(String desc) { this.describe = desc; } /** * @return pluginId * */ public String getPluginId() { return pluginId; } /** * @param vpluginId * */ public void setPluginId(String vpluginId) { this.pluginId = vpluginId; } /** * @return nsfocusId * */ public String getNsfocusId() { return nsfocusId; } /** * @param vnsfocusId * */ public void setNsfocusId(String vnsfocusId) { this.nsfocusId = vnsfocusId; } /** * @return bugtraqId * */ public String getBugtraqId() { return bugtraqId; } /** * @param vbugtraqId * */ public void setBugtraqId(String vbugtraqId) { this.bugtraqId = vbugtraqId; } /** * @return risk * */ public String getRisk() { return risk; } /** * @param vrisk * */ public void setRisk(String vrisk) { this.risk = vrisk; } /** * @return cveId * */ public String getCveId() { return cveId; } /** * @param vcveId * */ public void setCveId(String vcveId) { this.cveId = vcveId; } /** * @return solution * */ public String getSolution() { return solution; } /** * @param vsolution * */ public void setSolution(String vsolution) { this.solution = vsolution; } /** * @return message */ public String getMessage() { return message; } /** * @param vmessage * message */ public void setMessage(String vmessage) { this.message = vmessage; } /** 比较是否相等 * @param o 漏洞实例 * @return true/false * */ public boolean equals(Object o) { if (!(o instanceof AsseInfoLeak)) { return false; } AsseInfoLeak another = (AsseInfoLeak) o; return new EqualsBuilder().append(id, another.id).isEquals(); } /** 获取哈希值 * @return 哈希值 * */ public int hashCode() { return new HashCodeBuilder().append(id).hashCode(); } /** 漏洞属性查看 * @return 属性字符串 * */ public String toString() { return new ToStringBuilder(this).append(id).append(ip).append(cveId) .append(location).append(port).append(protocol).append(knowId).append(warnKind) .append(describe).toString(); } }