_('Missing parameters')]; switch ($action) { case 'start': if ($container) { $info = $DockerClient->getDockerContainers(); $key = array_search($container,array_column($info,"Id")); if ( $key === false ) { $arrResponse = ['success' => _('Container not found. Try reloading this page to fix.')]; break; } if ($info[$key]['NetworkMode'] == "host" && $info[$key]['Cmd'] == "/opt/unraid/tailscale") { $arrResponse = ['success'=> _('For security reasons, containers with Network Type "Host" should not have Tailscale enabled. Please disable Tailscale in this container or change the Network Type of the container.')]; break; } $arrResponse = ['success' => $DockerClient->startContainer($container)]; } break; case 'pause': if ($container) $arrResponse = ['success' => $DockerClient->pauseContainer($container)]; break; case 'stop': if ($container) $arrResponse = ['success' => $DockerClient->stopContainer($container)]; break; case 'resume': if ($container) $arrResponse = ['success' => $DockerClient->resumeContainer($container)]; break; case 'restart': if ($container) $arrResponse = ['success' => $DockerClient->restartContainer($container)]; break; case 'remove_container': if ($container) $arrResponse = ['success' => $DockerClient->removeContainer($name, $container, 1)]; break; case 'remove_image': if ($image) $arrResponse = ['success' => $DockerClient->removeImage($image)]; break; case 'remove_all': if ($container && $image) { // first: try to remove container $ret = $DockerClient->removeContainer($name, $container, 2); if ($ret === true) { // next: try to remove image $arrResponse = ['success' => $DockerClient->removeImage($image)]; } else { // error: container failed to remove $arrResponse = ['success' => $ret]; } } break; default: $arrResponse = ['error' => _('Unknown action')." '$action'"]; break; } header('Content-Type: application/json'); die(json_encode($arrResponse));