This repository has been archived on 2025-09-14 . You can view files and clone it, but cannot push or open issues or pull requests.
main
MESA-traffic-identification
技术栈:springboot+mybatisplus
Getting started
- 根据数据库信息更新\mesa-traffic-identification\framework\src\main\resources中application.yml中数据库的信息 包括访问数据库所需的:url、username、password
- 启动mesa-traffic-identification\framework\src\main\java\org\example\WebApplication.java即可
依赖管理
本项目中所有依赖的版本号在mesa-traffic-identification\pom.xml中统一管理
- 整个项目所需的依赖在mesa-traffic-identification\pom.xml,该文件不仅引入依赖,还确定了依赖的具体版本
- mesa-traffic-identification下其他目标的pom.xml文件只需要写入依赖的名称,不需要添加版本号
功能实现
以请求源IP列表为例
请求源IP列表
1. 需求
查询所有扫描源IP,并按照扫描次数排序。
2. 接口设计
见接口文档
3. 代码实现
1)从前端接收请求
mesa-traffic-identification\framework\src\main\java\org\example\controller这个包中定义的函数用于接收前端的请求。
当前端请求http://localhost:7777/portscan/getIpList这个url时
controller\PortscanController.java中getIpList()这个函数会响应这个请求,并且调用portscanService.getIpList()这个函数实现请求的功能
@RequestMapping("/portscan")
public class PortscanController {
@Autowired
private PortscanService portscanService;
@GetMapping("/getIpList")
public ResponseResult getIpList(){
return portscanService.getIpList();
}
}
2)service\PortscanService.java是一个接口函数,用于定义所有函数,具体实现在service\impl\PortscanServiceImpl.java这个函数中
3)在service\impl\PortscanServiceImpl.java这个函数中实现功能
@Service("portscanService")
public class PortscanServiceImpl extends ServiceImpl<PortscanMapper, Portscan> implements PortscanService {
@Autowired
private PortscanMapper portscanMapper;
private RdnsService rdnsService;
@Override
public ResponseResult getIpList() {
//联表查询,查询portscan中sip在ip表中对应的id
MPJLambdaWrapper<Portscan> wrapper = new MPJLambdaWrapper<Portscan>()
.selectAs(Portscan::getSip,IpListVo::getIp)
.select(Ip::getId)
.leftJoin(Ip.class,Ip::getIp,Portscan::getSip);
List<IpListVo> ipListVoList = portscanMapper.selectJoinList(IpListVo.class,wrapper);
//统计ipListVoList中每个ip出现的次数
HashMap<String,Long> ipNum = new HashMap<>();
for (IpListVo ipListVo : ipListVoList) {
if(!ipNum.containsKey(ipListVo.getIp())){
ipNum.put(ipListVo.getIp(), 1L);
}else{
ipNum.replace(ipListVo.getIp(),ipNum.get(ipListVo.getIp())+1);
}
}
//将ip出现的次数赋值给num
for (IpListVo ipListVo : ipListVoList) {
ipListVo.setNum(ipNum.get(ipListVo.getIp()));
}
//list去重
List<IpListVo> finalIpList = ipListVoList.stream().distinct().collect(Collectors.toList());
PageVo pageVo = new PageVo(finalIpList,finalIpList.size());
return ResponseResult.okResult(pageVo);
}
}
Description
Languages
Java
100%