fix: 修复新服务扫描插件的健壮性问题

- ipmi: 删除未使用的 encoding/binary 导入
- rmi: TCP读取改用 io.ReadFull 避免分片导致的解析错误
- jdwp: handshake响应读取改用 io.ReadFull 避免分片误判
- nfs: v4协议回退时使用新连接避免残留数据污染
- snmp: 修正timeout计算与其他插件保持一致
This commit is contained in:
ZacharyZcR
2026-05-19 20:46:22 +08:00
parent a92df59dfe
commit bc2a8f653a
5 changed files with 26 additions and 16 deletions
+9 -3
View File
@@ -36,9 +36,15 @@ func (p *NFSPlugin) Scan(ctx context.Context, info *common.HostInfo, session *co
// NFS NULL call (program=100003, version=3, procedure=0) to confirm NFS service
if err := p.rpcNullCall(conn, 100003, 3); err != nil {
// Try v4
_ = conn.SetDeadline(time.Now().Add(timeout))
if err := p.rpcNullCall(conn, 100003, 4); err != nil {
// Try v4 on a fresh connection
conn.Close()
c, dialErr := session.DialTCP(ctx, "tcp", addr, timeout)
if dialErr != nil {
return &ScanResult{Success: false, Service: "nfs"}
}
defer c.Close()
_ = c.SetDeadline(time.Now().Add(timeout))
if err := p.rpcNullCall(c, 100003, 4); err != nil {
return &ScanResult{Success: false, Service: "nfs"}
}
}