_args->version) { $this->showVersion(); return 0; } if ($this->_args->help) { $this->showHelp(); return 0; } $config = new Config(); if ($this->_args->host) { $config->host = $this->_args->host; } if ($this->_args->port) { $config->port = $this->_args->port; } if ($this->_args->hostname) { $config->hostname = $this->_args->hostname; } if ($this->_args->log) { $config->log_file = $this->_args->log; } if ($this->_args->quiet) { $config->quiet = $this->_args->quiet; } if ($this->_args->verbose) { $config->verbose = $this->_args->verbose; } if ($this->_args->get("tls-cert")) { $config->tls_certfile = $this->_args->get("tls-cert"); } else { $config->tls_certfile = sprintf("%s.cert.pem", $config->hostname); } if ($this->_args->get("tls-key")) { $config->tls_keyfile = $this->_args->get("tls-key"); } else { $config->tls_keyfile = sprintf("%s.key.pem", $config->hostname); } if (!$config->quiet) { print "Orbit // Gemini server software\n"; print ":: Using cert file " . $config->tls_certfile . "\n"; print ":: Using key file " . $config->tls_keyfile . "\n"; } $server = new Server($config, $this->makeLogger($config)); $server->listen(); } public function makeLogger($config) { $pid = getmypid(); $output = "[%datetime%] $pid %channel%.%level_name%: %message% %context%\n"; $formatter = new LineFormatter($output, 'Y-m-d\TH:i:s'); $logger = new Logger('orbit'); $level = Logger::INFO; if ($config->verbose) { $level = Logger::DEBUG; } $log_stream = new StreamHandler($config->log_file, $level); $log_stream->setFormatter($formatter); $logger->pushHandler($log_stream); if (!$config->quiet) { $std_stream = new StreamHandler('php://stdout', $level); $std_stream->setFormatter($formatter); $logger->pushHandler($std_stream); } return $logger; } public function showVersion() { print "Orbit " . Server::$version . "\n"; } public function showHelp() { $this->showVersion(); $out = $this->_terminal->do_op() . "Usage: orbit [options]\n" . "\n" . $this->_terminal->do_setaf(3) . "Options:\n" . $this->_terminal->do_op(); foreach ($this->_args->getHelp() as $key => $value) { if (strpos($key, "|")) { $parts = explode("|", $key); $left = sprintf("-%s, --%s", $parts[0], $parts[1]); } else { $left = sprintf(" --%s", $key); } if ($left[-1] == ":") { $left = substr($left, 0, -1) . " "; } $out .= sprintf( " %s%s %s%s\n", $this->_terminal->do_setaf(2), str_pad($left, 20), $this->_terminal->do_op(), $value, ); } print $out; } }