From 27047c883254b38bcca3b26df9228447b6fe91c9 Mon Sep 17 00:00:00 2001 From: mtongnz Date: Sun, 28 Jul 2024 11:18:31 +1200 Subject: [PATCH] fix: improve IP & port display further as per suggestions --- .../DockerContainers.page | 2 +- .../include/DockerClient.php | 5 ++++- .../include/DockerContainers.php | 17 +++++++++-------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page index 0eb3bb4ca..19e524d9a 100644 --- a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page +++ b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page @@ -31,7 +31,7 @@ $cpus = cpu_list(); "> - +
_(Application)__(Version)__(Network)__(IP)__(Port Mappings)__(Volume Mappings)_ (_(App to Host)_)_(CPU & Memory load)__(Autostart)__(Uptime)_
_(Application)__(Version)__(Network)__(Container IP)__(Container Port)__(External IP:Port)__(Volume Mappings)_ (_(App to Host)_)_(CPU & Memory load)__(Autostart)__(Uptime)_
diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php index f93d0313c..0aef6fc1b 100644 --- a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php +++ b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php @@ -948,7 +948,10 @@ class DockerClient { foreach ($ports as $port => $value) { [$PrivatePort, $Type] = array_pad(explode('/', $port),2,''); $PublicPort = $info['HostConfig']['PortBindings']["$port"][0]['HostPort'] ?: null; - $c['Ports'][$PrivatePort] = ['IP' => $ip, 'PrivatePort' => $PrivatePort, 'PublicPort' => $PublicPort, 'Type' => $Type]; + $nat = ($driver[$c['NetworkMode']]=='bridge'); + if (array_key_exists($PrivatePort, $c['Ports']) && $Type != $c['Ports'][$PrivatePort]['Type']) + $Type = $c['Ports'][$PrivatePort]['Type'] . '/' . $Type; + $c['Ports'][$PrivatePort] = ['IP' => $ip, 'PrivatePort' => $PrivatePort, 'PublicPort' => $PublicPort, 'NAT' => $nat, 'Type' => $Type, 'Driver' => $driver[$c['NetworkMode']]]; } ksort($c['Ports']); $this::$containersCache[] = $c; diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php index df60fe26e..1a28ab5f0 100644 --- a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php +++ b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php @@ -93,14 +93,14 @@ foreach ($containers as $ct) { $networks[] = $netName; $network_ips[] = $netVals['IPAddress']; } - $ports = []; + $ports_internal = []; + $ports_external = []; foreach ($ct['Ports'] as $port) { - $arrow_style = _var($port,'PublicPort') ? "\"fa fa-arrows-h\"" : ""; - if (_var($port,'PublicPort')) - $ports[] = sprintf('%s:%s%s', _var($port,'PrivatePort'), strtoupper(_var($port,'Type')),$arrow_style , _var($port,'PublicPort')); - else - $ports[] = sprintf('%s:%s%s', _var($port,'PrivatePort'), strtoupper(_var($port,'Type')),$arrow_style , "   (internal)"); - + if (_var($port,'PublicPort') && _var($port,'Driver') == 'bridge') + $ports_external[] = sprintf('%s:%s', $host, strtoupper(_var($port,'PublicPort'))); + if (_var($port,'Driver') == 'ipvlan' || _var($port,'Driver') == 'host') + $ports_external[] = sprintf('%s:%s', _var($port,'IP'), strtoupper(_var($port,'PrivatePort'))); + $ports_internal[] = sprintf('%s:%s', _var($port,'PrivatePort'), strtoupper(_var($port,'Type'))); } $paths = []; $ct['Volumes'] = is_array($ct['Volumes']) ? $ct['Volumes'] : []; @@ -147,7 +147,8 @@ foreach ($containers as $ct) { echo "
".compress(_($version),12,0)."
"; echo " ".implode('
',$networks)."
"; echo " ".implode('
',$network_ips)."
"; - echo "".implode('
',$ports)."
"; + echo "".implode('
',$ports_internal)."
"; + echo "".implode('
',$ports_external)."
"; echo "".implode('
',$paths)."
"; echo "0%
"; echo "
0 / 0";