package edu.sjtu.infosec.ismp.manager.RAM.service;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import jxl.read.biff.BiffException;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoLeak;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoProj;
/**
* 应用层 漏洞扫描Manager接口.
*/
public interface LeakScanService {
/**
* 保存/更新扫描漏洞
* 漏洞
**/
void saveOrUpdate(AsseInfoLeak leak);
/**
* 批量保存/更新扫描漏洞
* 漏洞列表
**/
void batchSaveOrUpdate(List<AsseInfoLeak> leaks);
/**
* 删除漏洞
* 漏洞
**/
void remove(AsseInfoLeak leak);
/**
* 批量删除漏洞
* 漏洞列表
**/
void remove(List<AsseInfoLeak> leakList);
/**
* 查询漏洞
*
* @param id
* 漏洞id
* @return 漏洞对象
**/
AsseInfoLeak find(String id);
/**
* 查询漏洞
*
* @param cveId
* cveId
* @param asseInfoProj
* 测评项目
* @return 漏洞对象
**/
AsseInfoLeak findByCveId(String cveId,AsseInfoProj asseInfoProj);
/**
* 查询漏洞数量
* @param asseInfoProj
* 测评项目
* @return 漏洞数量
**/
int getCount(AsseInfoProj asseInfoProj, String ip);
/**
* 查询漏洞分页记录
**/
List<AsseInfoLeak> findAll(int startResult ,int maxResult,AsseInfoProj asseInfoProj, String ip);
/**
* 查询漏洞记录
* @param asseInfoProj
* 测评项目
* @return 分页记录列表
**/
List<AsseInfoLeak> listAsseInfoLeak(AsseInfoProj asseInfoProj);
/**
* 检查是否已导入过
* @param asseInfoProj
* 测评项目
* @return true/false
**/
boolean checkExit(AsseInfoProj asseInfoProj);
/**
* 导入扫描报告
* @param asseInfoProj
* 测评项目
* @param inputXml
* 报告绝对路径
**/
void importDataByXmlFile( AsseInfoProj asseInfoProj,InputStream inputXml);
void importDataByXlsFile( AsseInfoProj asseInfoProj,InputStream inputXls) throws IOException,BiffException;
/**
* 查询漏洞
*
* @param pluginId
* pluginId
* @param asseInfoProj
* 测评项目
* @return 漏洞对象
**/
List findByPluginId(String pluginId,AsseInfoProj asseInfoProj);
/**
* 查询漏洞
*
* @param vulId
* vulId
* @param asseInfoProj
* 测评项目
* @return 漏洞对象
**/
List findByVulId(String vulId,AsseInfoProj asseInfoProj);
/**
* 判断安全级别
* @param risk
* 绿盟xml报告中的risk值
* @return true/false
**/
String retSecuLeve(String risk);
/**
* 查询IP地址列表
* @param asseInfoProj
* 测评项目
* @return IP地址列表
**/
List<String> listIP(AsseInfoProj asseInfoProj);
List<String> listCVEId(AsseInfoProj asseInfoProj);
}