diff --git a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page index 8cf6e687c..053c6d958 100755 --- a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page +++ b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page @@ -37,7 +37,7 @@ $cpus = cpu_list(); _(Application)_ _(Version)_ _(Network)_ - _(Container IP)_ + _(Container IP)_ / _(MAC)_ _(Container Port)_ _(LAN IP:Port)_ _(Volume Mappings)_ (_(App to Host)_) @@ -46,7 +46,7 @@ $cpus = cpu_list(); _(Uptime)_ - + diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php index 920a7fdbf..5475cfe0b 100755 --- a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php +++ b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php @@ -1022,15 +1022,23 @@ public function getDockerContainers() { $ports = &$info['Config']['ExposedPorts']; } foreach($ct['NetworkSettings']['Networks'] as $netName => $netVals) { + $networkDetails = $info['NetworkSettings']['Networks'][$netName] ?? $netVals; $i = $c['NetworkMode']=='host' ? $host : $netVals['IPAddress']; - $c['Networks'][$netName] = [ 'IPAddress' => $i ]; + $c['Networks'][$netName] = [ + 'IPAddress' => $i, + 'MacAddress' => $networkDetails['MacAddress'] ?? '' + ]; if ( isset($driver[$netName]) && ($driver[$netName]=='ipvlan' || $driver[$netName]=='macvlan') ) { if (!isset($c['Ports']['vlan'])) $c['Ports']['vlan'] = []; $c['Ports']['vlan']["$i"] = $i; } } + $networkDetails = $info['NetworkSettings']['Networks'][$c['NetworkMode']] ?? $ct['NetworkSettings']['Networks'][$c['NetworkMode']] ?? []; $ip = $c['NetworkMode']=='host' ? $host : $ct['NetworkSettings']['Networks'][$c['NetworkMode']]['IPAddress'] ?? null; - $c['Networks'][$c['NetworkMode']] = [ 'IPAddress' => $ip ]; + $c['Networks'][$c['NetworkMode']] = [ + 'IPAddress' => $ip, + 'MacAddress' => $networkDetails['MacAddress'] ?? '' + ]; $ports = (isset($ports) && is_array($ports)) ? $ports : []; foreach ($ports as $port => $value) { if (!isset($info['HostConfig']['PortBindings'][$port])) { diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php index 504728b6a..8ed97abad 100644 --- a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php +++ b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php @@ -28,7 +28,7 @@ $autostart_file = $dockerManPaths['autostart-file']; if (!$containers && !$images) { - echo ""._('No Docker containers installed').""; + echo ""._('No Docker containers installed').""; return; } @@ -154,7 +154,9 @@ function my_lang_log($text) { } foreach($ct['Networks'] as $netName => $netVals) { $networks[] = $netName; - $network_ips[] = $running ? $netVals['IPAddress'] : null; + $network_ip = $running ? htmlspecialchars((string)$netVals['IPAddress']) : ''; + $network_mac = $running ? htmlspecialchars((string)($netVals['MacAddress'] ?? '')) : ''; + $network_ips[] = $network_mac ? "$network_ip
$network_mac
" : $network_ip; if (isset($ct['Networks']['host'])) { $ports_external[] = sprintf('%s', $netVals['IPAddress']); $ports_internal[0] = sprintf('%s', 'all');