120 lines
2.9 KiB
PHP
120 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace Orbit;
|
|
|
|
use Monolog\Logger;
|
|
use Monolog\Formatter\LineFormatter;
|
|
use Monolog\Handler\StreamHandler;
|
|
|
|
class Console extends \Qi_Console_Client
|
|
{
|
|
public function execute()
|
|
{
|
|
if ($this->_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->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 (!$config->quiet) {
|
|
print "Orbit // Gemini server software\n";
|
|
}
|
|
$server = new Server($config);
|
|
|
|
$server->setLogger($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) . " <arg>";
|
|
}
|
|
|
|
$out .= sprintf(
|
|
" %s%s %s%s\n",
|
|
$this->_terminal->do_setaf(2),
|
|
str_pad($left, 20),
|
|
$this->_terminal->do_op(),
|
|
$value,
|
|
);
|
|
}
|
|
|
|
print $out;
|
|
}
|
|
}
|