public function connect(Application $app) { $controllers = new ControllerCollection(); $supervisor = new API(); $servers = (include __DIR__ . '/../../config.php'); foreach (array_keys($servers) as $server_id) { $servers[$server_id]['id'] = $server_id; } $controllers->get('/list.{_format}', function ($_format) use($supervisor, $app, $servers) { if ($_format == 'json') { return $app->json($servers); } else { // use a closure to avoid leaking any vars into the template that we don't explicitly want return call_user_func(function () use($app) { $url_root = $app['url_generator']->generate('home'); ob_start(); ob_implicit_flush(false); include __DIR__ . '/../../views/supervisorui.html.php'; return ob_get_clean(); }); } })->bind('server_list')->value('_format', 'html'); $controllers->get('/details/{server_id}', function ($server_id) use($supervisor, $app, $servers) { $server_ip = $servers[$server_id]['ip']; $details = array_merge(array('version' => $supervisor->getSupervisorVersion('127.0.0.1'), 'pid' => $supervisor->getPID('127.0.0.1')), $supervisor->getState('127.0.0.1'), $servers[$server_id]); return $app->json($details); }); return $controllers; }
public function connect(Application $app) { $controllers = new ControllerCollection(); $supervisor = new API(); $servers = (require_once __DIR__ . '/../../config.php'); $controllers->get('/{server}', function ($server) use($supervisor, $app) { //$server_ip = $servers[$server]['ip']; $services = $supervisor->getAllProcessInfo('127.0.0.1'); return $app->json($services); }); $controllers->post('/{server}/{service}', function (Request $request, $server, $service) use($supervisor, $servers, $app) { $server_ip = $servers[$server]['ip']; if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) { $data = json_decode($request->getContent(), true); } else { return false; } $result = false; // Get the current state of the service $current_service = $supervisor->getProcessInfo('127.0.0.1', $service); if (isset($current_service['error'])) { $result = $current_service; } else { if (!(bool) $data['running'] && $current_service['state'] == $supervisor::STATE_RUNNING) { $result = $supervisor->stopProcess('127.0.0.1', $service); } else { if ((bool) $data['running'] && $current_service['state'] != $supervisor::STATE_RUNNING) { $result = $supervisor->startProcess('127.0.0.1', $service); } } } if (!$result) { $result = array('error' => array('code' => '', 'msg' => 'Error getting details for ' . $service . ' from ' . $server_ip)); } return $app->json($result); }); $controllers->get('/{server}/{service}', function ($server, $service) use($supervisor, $servers, $app) { $server_ip = $servers[$server]['ip']; return $app->json($supervisor->getProcessInfo('127.0.0.1', $service)); }); return $controllers; }