networks.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { docker } from '../server.js';
  2. export const Networks = async function(req, res) {
  3. let networks = await docker.listNetworks({ all: true });
  4. let network_list = `
  5. <thead>
  6. <tr>
  7. <th class="w-1"><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select all" onclick="selectAll()"></th>
  8. <th><button class="table-sort" data-sort="sort-name">Name</button></th>
  9. <th><button class="table-sort" data-sort="sort-city">ID</button></th>
  10. <th><button class="table-sort" data-sort="sort-score">Status</button></th>
  11. <th><button class="table-sort" data-sort="sort-date">Created</button></th>
  12. <th><button class="table-sort" data-sort="sort-progress">Action</button></th>
  13. </tr>
  14. </thead>
  15. <tbody class="table-tbody">`
  16. for (let i = 0; i < networks.length; i++) {
  17. // let date = new Date(images[i].Created * 1000);
  18. // let created = date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });
  19. let details = `
  20. <tr>
  21. <td><input class="form-check-input m-0 align-middle" name="select" value="${networks[i].Id}" type="checkbox" aria-label="Select"></td>
  22. <td class="sort-name">${networks[i].Name}</td>
  23. <td class="sort-city">${networks[i].Id}</td>
  24. <td class="sort-score text-green"> - </td>
  25. <td class="sort-date" data-date="1628122643">${networks[i].Created}</td>
  26. <td class="text-end"><a class="btn" href="#">Details</a></td>
  27. </tr>`
  28. network_list += details;
  29. }
  30. network_list += `</tbody>`
  31. res.render("networks", {
  32. name: req.session.user,
  33. role: req.session.role,
  34. avatar: req.session.avatar,
  35. network_list: network_list,
  36. network_count: networks.length
  37. });
  38. }
  39. export const removeNetwork = async function(req, res) {
  40. let networks = req.body.select;
  41. if (typeof(networks) == 'string') {
  42. networks = [networks];
  43. }
  44. for (let i = 0; i < networks.length; i++) {
  45. if (networks[i] != 'on') {
  46. try {
  47. console.log(`Removing network: ${networks[i]}`);
  48. let network = docker.getNetwork(networks[i]);
  49. await network.remove();
  50. } catch (error) {
  51. console.log(`Unable to remove network: ${networks[i]}`);
  52. }
  53. }
  54. }
  55. res.redirect("/networks");
  56. }