diff options
-rw-r--r-- | core/EjabberdAuth.php | 2 | ||||
-rwxr-xr-x | main.php | 21 |
2 files changed, 15 insertions, 8 deletions
diff --git a/core/EjabberdAuth.php b/core/EjabberdAuth.php index c9b5ec4..d2465ce 100644 --- a/core/EjabberdAuth.php +++ b/core/EjabberdAuth.php @@ -61,7 +61,7 @@ class EjabberdAuth { } function execute($data) { - $args = explode(':', $data . ':::'); + $args = is_array($data) ? array_merge($data, [NULL,NULL,NULL]) : explode(':', $data . ':::'); list($command, $username, $server, $password) = $args; $username = xmpp_unescape_node($username); @@ -10,18 +10,25 @@ main(); function main() { require_once ROOT . 'config.php'; $plugin_file = 'plugins/' . $config['plugin'] . '/' . $config['plugin'] . '.module'; - if (file_exists(ROOT . $plugin_file)) { - require_once ROOT . $plugin_file; - $function = $config['plugin'] . '_init'; - $bridge = $function($config['plugin_conf']); - } - else { + if (!file_exists(ROOT . $plugin_file)) { return fwrite(STDERR, "Plugin <{$plugin_file}> not found.\n"); } + + require_once ROOT . $plugin_file; + $function = $config['plugin'] . '_init'; + $bridge = $function($config['plugin_conf']); + if (!empty($config['session'])) { require_once 'plugins/session/session.module'; $session = session_init($config['session']); } else $session = NULL; - (new EjabberdAuth($config, $bridge, $session))->run(); + + $main = new EjabberdAuth($config, $bridge, $session); + if ($_SERVER['argc'] > 1) { + $result = $main->execute(array_slice($_SERVER['argv'], 1)); + print(($result ? 1 : 0) . "\n"); + exit($result ? 0 : 1); + } + $main->run(); } |