diff options
-rw-r--r-- | lib/daemon.php | 20 | ||||
-rw-r--r-- | lib/queuehandler.php | 5 | ||||
-rw-r--r-- | scripts/commandline.inc | 44 | ||||
-rwxr-xr-x | scripts/xmppdaemon.php | 20 |
4 files changed, 69 insertions, 20 deletions
diff --git a/lib/daemon.php b/lib/daemon.php index a0df00bdc..72e8bc202 100644 --- a/lib/daemon.php +++ b/lib/daemon.php @@ -23,6 +23,13 @@ if (!defined('LACONICA')) { class Daemon { + var $daemonize = true; + + function __construct($daemonize = true) + { + $this->daemonize = $daemonize; + } + function name() { return null; @@ -129,12 +136,15 @@ class Daemon common_log(LOG_INFO, $this->name() . ' already running. Exiting.'); exit(0); } - if ($this->background()) { - $this->writePidFile(); - $this->changeUser(); - $this->run(); - $this->clearPidFile(); + + if ($this->daemonize) { + $this->background(); } + + $this->writePidFile(); + $this->changeUser(); + $this->run(); + $this->clearPidFile(); } function run() diff --git a/lib/queuehandler.php b/lib/queuehandler.php index ae403c65e..c1c4f3309 100644 --- a/lib/queuehandler.php +++ b/lib/queuehandler.php @@ -27,11 +27,12 @@ require_once(INSTALLDIR.'/classes/Notice.php'); class QueueHandler extends Daemon { - var $_id = 'generic'; - function QueueHandler($id=null) + function __construct($id=null, $daemonize=true) { + parent::__construct($daemonize); + if ($id) { $this->set_id($id); } diff --git a/scripts/commandline.inc b/scripts/commandline.inc index 53b9a490b..9c6787cb7 100644 --- a/scripts/commandline.inc +++ b/scripts/commandline.inc @@ -122,24 +122,60 @@ require_once INSTALLDIR . '/lib/common.php'; set_error_handler('common_error_handler'); -function have_option($str) +function have_option($opt, $alt=null) { global $options; + + $matches = array($opt); + + if (strlen($opt) > 1 && 0 != strncmp($opt, '--', 2)) { + $matches[] = '--'.$opt; + } else { + $matches[] = $opt; + } + + if (!empty($alt)) { + if (strlen($alt) > 1 && 0 != strncmp($alt, '--', 2)) { + $matches[] = '--'.$alt; + } else { + $matches[] = $alt; + } + } + foreach ($options as $option) { - if ($option[0] == $str) { + if (in_array($option[0], $matches)) { return true; } } + return false; } -function get_option_value($str) +function get_option_value($str, $alt=null) { global $options; + + $matches = array(); + + if (strlen($opt) > 1 && 0 != strncmp($opt, '--', 2)) { + $matches[] = '--'.$opt; + } else { + $matches[] = $opt; + } + + if (!empty($alt)) { + if (strlen($alt) > 1 && 0 != strncmp($alt, '--', 2)) { + $matches[] = '--'.$alt; + } else { + $matches[] = $alt; + } + } + foreach ($options as $option) { - if ($option[0] == $str) { + if (in_array($option[0], $matches)) { return $option[1]; } } + return null; }
\ No newline at end of file diff --git a/scripts/xmppdaemon.php b/scripts/xmppdaemon.php index 3eecfec29..38d739e68 100755 --- a/scripts/xmppdaemon.php +++ b/scripts/xmppdaemon.php @@ -20,13 +20,14 @@ define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); -$shortoptions = 'i::'; -$longoptions = array('id::'); +$shortoptions = 'fi::'; +$longoptions = array('id::', 'foreground'); $helptext = <<<END_OF_XMPP_HELP Daemon script for receiving new notices from Jabber users. -i --id Identity (default none) + -f --foreground Stay in the foreground (default background) END_OF_XMPP_HELP; @@ -42,8 +43,10 @@ require_once INSTALLDIR . '/lib/daemon.php'; class XMPPDaemon extends Daemon { - function XMPPDaemon($resource=null) + function XMPPDaemon($resource=null, $daemonize=true) { + parent::__construct($daemonize); + static $attrs = array('server', 'port', 'user', 'password', 'host'); foreach ($attrs as $attr) @@ -62,7 +65,6 @@ class XMPPDaemon extends Daemon function connect() { - $connect_to = ($this->host) ? $this->host : $this->server; $this->log(LOG_INFO, "Connecting to $connect_to on port $this->port"); @@ -323,16 +325,16 @@ if (common_config('xmpp','enabled')==false) { exit(); } -if (have_option('i')) { - $id = get_option_value('i'); -} else if (have_option('--id')) { - $id = get_option_value('--id'); +if (have_option('i', 'id')) { + $id = get_option_value('i', 'id'); } else if (count($args) > 0) { $id = $args[0]; } else { $id = null; } -$daemon = new XMPPDaemon($id); +$foreground = have_option('f', 'foreground'); + +$daemon = new XMPPDaemon($id, $foreground); $daemon->runOnce(); |