date_default_timezone_set('Europe/Oslo'); $loop = LoopFactory::create(); $app = new \Ratchet\App('localhost', 8080, '127.0.0.1', $loop); $handler = new \Monolog\Handler\StreamHandler('php://stdout', \Psr\Log\LogLevel::INFO); $processor = new \Monolog\Processor\MemoryUsageProcessor(); $logger = new Monolog\Logger('socketty', array($handler), array($processor)); $authenticator = new BasicAuthenticator('username'); $authorizer = new BasicAuthorizer(); $enabledCommands = ['ssh', 'top', 'ping']; $spawner = new CommandSpawner($enabledCommands); $terminalFactory = new TerminalFactory($loop, $spawner); $clientFactory = new ClientFactory($loop, $logger, $terminalFactory, $authorizer); $socketty = new Socketty($logger, $loop, $clientFactory, $authenticator); $memcached = new Memcached(); $memcached->addServer('localhost', 11211); $handler = new MemcachedSessionHandler($memcached); $sessionProvider = new SessionProvider($socketty, $handler, array('name' => 'CUSTOM_NAME')); declare (ticks=1); $sig_handler = function ($signal) use($socketty, $logger) { try { $logger->critical('Server was killed. Stopping new connections and closing existing connections now...'); $socketty->allowNewConnections(false); $socketty->closeAll(); $logger->critical('All connections now closed. Exiting...'); } finally { exit; } }; pcntl_signal(SIGTERM, $sig_handler); $app->route('', $sessionProvider); $app->run();