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.
2023-05-29 15:57:56 +08:00
2023-05-29 15:57:56 +08:00
2023-05-29 15:57:56 +08:00
2023-05-29 15:10:46 +08:00
2023-05-29 15:57:56 +08:00
2023-05-29 15:57:56 +08:00

MESA-traffic-identification

技术栈springboot+mybatisplus

Getting started

  1. 根据数据库信息更新\mesa-traffic-identification\framework\src\main\resources中application.yml中数据库的信息 包括访问数据库所需的url、username、password
  2. 启动mesa-traffic-identification\framework\src\main\java\org\example\WebApplication.java即可

依赖管理

本项目中所有依赖的版本号在mesa-traffic-identification\pom.xml中统一管理

  1. 整个项目所需的依赖在mesa-traffic-identification\pom.xml该文件不仅引入依赖还确定了依赖的具体版本
  2. 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();
    }
}

2service\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
No description provided
Readme 4.8 MiB
Languages
Java 100%