import { docker } from '../server.js'; export const Networks = async function(req, res) { let container_networks = []; let network_name = ''; // List all containers let containers = await docker.listContainers({ all: true }); // Loop through the containers to find out which networks are being used for (let i = 0; i < containers.length; i++) { // console.log(Object.keys(containers[i].NetworkSettings.Networks)[0]); try { network_name += containers[i].HostConfig.NetworkMode; } catch {} try { container_networks.push(containers[i].NetworkSettings.Networks[network_name].NetworkID); } catch {} } // List all networks let networks = await docker.listNetworks({ all: true }); // Uses template literals to build the networks table let network_list = ` ` for (let i = 0; i < networks.length; i++) { let status = ''; // Check if the network is in use try { if (container_networks.includes(networks[i].Id)) { status = `In use`; } } catch {} // Create the row for the network entry let details = ` ${networks[i].Name} ${networks[i].Id} ${status} ${networks[i].Created} Details ` // Add the row to the network list network_list += details; } network_list += `` res.render("networks", { name: req.session.user, role: req.session.role, avatar: req.session.user.charAt(0).toUpperCase(), network_list: network_list, network_count: networks.length, alert: '', }); } export const removeNetwork = async function(req, res) { // Grab the list of networks let networks = req.body.select; // Make sure the value is an array if (typeof(networks) == 'string') { networks = [networks]; } // Loop through the array for (let i = 0; i < networks.length; i++) { if (networks[i] != 'on') { try { let network = docker.getNetwork(networks[i]); await network.remove(); } catch { console.log(`Unable to remove network: ${networks[i]}`); } } } res.redirect("/networks"); }