Menu="OtherSettings" Title="Docker" Icon="icon-docker" Tag="icon-docker" --- // Add the Docker JSON client require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php"; $DockerClient = new DockerClient(); exec("/etc/rc.d/rc.docker status >/dev/null",$dummy,$DockerStopped); function strposX($s, $c, $n=1) { $p = 0; while ($n && $p = strpos($s,$c,$p) !== false) {$n--; $p += strlen($c);} return $p; } unset($custom,$other); exec("ls --indicator-style=none /sys/class/net | grep -P '^br[0-9]'",$custom); exec("ls --indicator-style=none /sys/class/net | grep -P '^(bond|eth|wlan)[0-9]'",$other); $bridge = count($custom) > 0; $slaves = []; foreach ($other as $network) { if (substr($network,0,4) == 'bond') { $br = str_replace('bond','br',$network); $bond = "/sys/class/net/$network/bonding/slaves"; if (file_exists($bond)) $slaves = array_merge($slaves,explode(' ',str_replace("\n","",file_get_contents($bond)))); if (!in_array($br,$custom)) $custom[] = $network; } elseif ($bridge && substr($network,0,3) == 'eth') { $br = str_replace('eth','br',$network); $bond = str_replace('eth','bond',$network); if (!in_array($br,$custom) && !in_array($bond,$custom)) $custom[] = $network; } else { $custom[] = $network; } } $include = $include6 = $address = $address6 = $gateway = $gateway6 = $unset = $protocol = []; $wide = false; $wlan = (array)@parse_ini_file('/var/local/emhttp/wireless.ini'); foreach ($custom as $network) { if (in_array($network,$slaves)) continue; $ip4 = exec("ip -4 -br addr show scope global primary dev $network | awk '{print $3;exit}'"); $ip6 = exec("ip -6 -br addr show scope global primary -deprecated dev $network | awk '{print $3;exit}'"); $gw4 = $ip4 ? exec("ip -4 route show to default dev $network | awk '{print $3;exit}'") : ''; $gw6 = $ip6 ? exec("ip -6 route show to default dev $network | awk '{print $3;exit}'") : ''; $route4 = $ip4 ? exec("ip -4 route show dev $network | awk '$1 !~ /^default/ {print $1;exit}'") : ''; $route6 = $ip6 ? exec("ip -6 route show dev $network | awk '$1 !~ /^(default|f[a-f])/ {print $1;exit}'") : ''; if (substr($network,0,4) != 'wlan') { [$eth,$vlan] = my_explode('.',$network); $eth = str_replace(['bond','br'],'eth',$eth); if (!$vlan) { $protocol[$network] = _var($$eth,'PROTOCOL:0','ipv4'); } else { foreach ($$eth as $key => $value) if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol[$network] = _var($$eth,str_replace('VLANID','PROTOCOL',$key),'ipv4'); break;} } } else { $protocol[$network] = empty($wlan['IP6']) ? 'ipv4' : 'ipv4+ipv6'; } if ($ip4 && $route4) { $include[$network] = $route4; $address[$network] = $ip4; $gateway[$network] = $gw4; } elseif (!array_key_exists($network,$gateway6)) { $unset[] = $network; } if ($ip6 && $route6) { $include6[$network] = $route6; $address6[$network] = $ip6; $gateway6[$network] = $gw6; } elseif (!array_key_exists($network,$gateway)) { $unset[] = $network; } if ($protocol[$network] != 'ipv4') $wide = true; } $ip4class = $wide ? 'ip6' : 'ip4'; $gw4class = $wide ? 'gw6' : 'gw4'; $unset = array_unique($unset); function normalize($network) { return strtoupper(str_replace('.','_',$network)); } function base_min($route) { [$net,$mask] = my_explode('/',$route); $mask = 32-$mask; return explode('.',long2ip((ip2long($net)>>$mask)<<$mask)); } function base_max($route) { [$net,$mask] = my_explode('/',$route); $mask = 32-$mask; return explode('.',long2ip(((ip2long($net)>>$mask)<<$mask)+pow(2,$mask)-1)); } function base_net($route) { return substr(explode('/',$route)[0],0,-2); } $bgcolor = strstr('white,azure',$display['theme']) ? '#f2f2f2' : '#1c1c1c'; //Check if docker.cfg does exist $no_dockercfg = !is_file('/boot/config/docker.cfg'); ?>
".shell_exec("btrfs filesystem show /var/lib/docker").""?>