[READ-ONLY] Mirror of https://github.com/FoxxMD/komodo-utilities. Small utilities to enhance Komodo
gotify komodo
0

Configure Feed

Select the types of activity you want to include in your feed.

formatting

FoxxMD (Jan 24, 2025, 9:28 AM EST) 95309de1 d572ea1d

+21 -22
+21 -22
actions/find_ip.toml
··· 6 6 7 7 const IP_LIKE_VALS = IP_LIKE.split(',').map(x => x.trim()); 8 8 9 - type ContextualContainer = {server: string, container: Types.Container }; 9 + type ContextualContainer = { server: string, container: Types.Container }; 10 10 11 11 let foundAny = false; 12 12 13 13 const servers: Types.ListServersResponse = await komodo.read('ListServers', {}); 14 - const serverMap: Record<string, Types.ServerListItem> = servers.reduce((acc, curr) => ({...acc, [curr.id]: curr}), {}); 14 + const serverMap: Record<string, Types.ServerListItem> = servers.reduce((acc, curr) => ({ ...acc, [curr.id]: curr }), {}); 15 15 16 16 // could do filtering during promise execution 17 17 // but for re-useability, extensibility, and completeness sake, keep all data intact and foreach after retriving everything 18 18 // (even if doing filtering during promise we'd still be fetching all data so it doesn't decrease execution time significantly) 19 - const data: ContextualContainer[] = (await Promise.all(servers.map(async (s) => 20 - { 21 - const containers = await komodo.read('ListDockerContainers', {server: s.id}); 19 + const data: ContextualContainer[] = (await Promise.all(servers.map(async (s) => { 20 + const containers = await komodo.read('ListDockerContainers', { server: s.id }); 22 21 23 22 const containerInfos = await Promise.all(containers.map(async (c) => { 24 - const container = await komodo.read('InspectDockerContainer', {server: s.id, container: c.id}); 25 - return {server: s.id, container}; 23 + const container = await komodo.read('InspectDockerContainer', { server: s.id, container: c.id }); 24 + return { server: s.id, container }; 26 25 })); 27 26 28 27 return containerInfos; 29 28 30 29 }))).flat(); 31 30 32 - for(const cInfo of data) { 33 - const {server, container} = cInfo; 31 + for (const cInfo of data) { 32 + const { server, container } = cInfo; 34 33 35 - if(container.NetworkSettings.Networks !== undefined) { 36 - const found: string[] = []; 37 - for(const [network, v] of Object.entries(container.NetworkSettings.Networks)) { 38 - if(IP_LIKE_VALS.some(x => v.Gateway.includes(x))) { 39 - found.push(`Gateway ${v.Gateway} in Network ${network}`); 40 - } 41 - if(IP_LIKE_VALS.some(x => v.IPAddress.includes(x))) { 42 - found.push(`IP ${v.IPAddress} in Network ${network}`); 43 - } 34 + if (container.NetworkSettings.Networks !== undefined) { 35 + const found: string[] = []; 36 + for (const [network, v] of Object.entries(container.NetworkSettings.Networks)) { 37 + if (IP_LIKE_VALS.some(x => v.Gateway.includes(x))) { 38 + found.push(`Gateway ${v.Gateway} in Network ${network}`); 44 39 } 45 - if(found.length > 0) { 46 - console.log(`Server ${serverMap[server].name} -> Container ${container.Name.substring(1)} has ${found.join(', ')}`); 47 - foundAny = true; 40 + if (IP_LIKE_VALS.some(x => v.IPAddress.includes(x))) { 41 + found.push(`IP ${v.IPAddress} in Network ${network}`); 48 42 } 49 43 } 44 + if (found.length > 0) { 45 + console.log(`Server ${serverMap[server].name} -> Container ${container.Name.substring(1)} has ${found.join(', ')}`); 46 + foundAny = true; 47 + } 48 + } 50 49 } 51 50 52 - if(!foundAny) { 51 + if (!foundAny) { 53 52 console.log(`Did not find Gateways or IP Addresses containing ${IP_LIKE_VALS.join(' or ')}`); 54 53 } 55 54 """