29
30
export function getSockets(stdout: string): Record<string, { pid: number; socket: number }> {
32
>
const mapped: { pid: number; socket: number }[] = [];
33
>
lines.forEach(line => {
34
>
const match = /\/proc\/(\d+)\/fd\/\d+ -> socket:\[(\d+)\]/.exec(line)!;
35
>
if (match && match.length >= 3) {
36
>
mapped.push({
37
>
pid: parseInt(match[1], 10),
38
>
socket: parseInt(match[2], 10)
39
>
});
40
>
}
41
>
});
42
>
const socketMap = mapped.reduce((m: Record<string, typeof mapped[0]>, socket) => {
43
>
m[socket.socket] = socket;
44
>
return m;
45
>
}, {});
46
>
return socketMap;
47
>
}
48
49
export function loadListeningPorts(...stdouts: string[]): { socket: number; ip: string; port: number }[] {