'Missing parameters']; switch ($action) { case 'start': if ($container) $arrResponse = ['success' => $DockerClient->startContainer($container)]; break; case 'stop': if ($container) $arrResponse = ['success' => $DockerClient->stopContainer($container)]; break; case 'restart': if ($container) $arrResponse = ['success' => $DockerClient->restartContainer($container)]; break; case 'remove_container': if ($container) $arrResponse = ['success' => $DockerClient->removeContainer($container)]; 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($container); if ($ret === true) { // next: try to remove image $arrResponse = ['success' => $DockerClient->removeImage($image)]; } else { // error: container failed to remove $arrResponse = ['success' => $ret]; } } break; case 'log': if ($container) { $since = array_key_exists('since', $_REQUEST) ? $_REQUEST['since'] : ''; $title = array_key_exists('title', $_REQUEST) ? $_REQUEST['title'] : ''; require_once '/usr/local/emhttp/webGui/include/ColorCoding.php'; if (!$since) { readfile("/usr/local/emhttp/plugins/dynamix.docker.manager/log.htm"); echo ""; echo ""; $tail = 350; } else { $tail = null; } $echo = function($s) use ($match) { $line = substr(trim($s), 8); $span = "span"; foreach ($match as $type) { foreach ($type['text'] as $text) { if (preg_match("/$text/i",$line)) { $span = "span class='{$type['class']}'"; break 2; } } } echo ""; @flush(); }; $DockerClient->getContainerLog($container, $echo, $tail, $since); echo ''; @flush(); exit; } break; default: $arrResponse = ['error' => 'Unknown action \'' . $action . '\'']; break; } header('Content-Type: application/json'); die(json_encode($arrResponse));