diff options
author | Christoph Burschka | 2014-01-16 19:34:39 +0100 |
---|---|---|
committer | Christoph Burschka | 2014-01-16 19:34:39 +0100 |
commit | 841bcac241bac980d5e943793ffda3372d7f8f82 (patch) | |
tree | 93ffd23c4340426358ce3ee86869cd785a195cd8 /plugins/session | |
parent | Finally remove unused setpass/register hooks. (diff) | |
download | ejabberd-auth-php-841bcac241bac980d5e943793ffda3372d7f8f82.tar.gz |
Big multiple-plugins patch (fixes #2).
Diffstat (limited to 'plugins/session')
-rw-r--r-- | plugins/session/BridgeSession.php | 17 | ||||
-rw-r--r-- | plugins/session/config.sample.php | 17 | ||||
-rw-r--r-- | plugins/session/main.php | 21 | ||||
-rw-r--r-- | plugins/session/session.module | 9 |
4 files changed, 33 insertions, 31 deletions
diff --git a/plugins/session/BridgeSession.php b/plugins/session/BridgeSession.php index 58e2208..d9c3afc 100644 --- a/plugins/session/BridgeSession.php +++ b/plugins/session/BridgeSession.php @@ -11,11 +11,6 @@ class BridgeSession extends EjabberdAuthBridge { $this->_isuser = $this->db->prepare(sprintf('SELECT COUNT(*) FROM `%s` WHERE `username` = :user AND `created` >= :limit;', $this->table)); $this->_auth = $this->db->prepare(sprintf('DELETE FROM `%s` WHERE `username` = :user AND `secret` = :secret AND `created` >= :limit;', $this->table)); $this->_prune = $this->db->prepare(sprintf('DELETE COUNT(*) FROM `%s` WHERE `created` < :limit;', $this->table)); - $this->_create = $this->db->prepare(sprintf('INSERT INTO `%s` (`username`, `secret`, `created`) VALUES (:user, :secret, :time);', $this->table)); - } - - function create($entry) { - $this->_create->execute([':user' => $entry['user'], ':secret' => $entry['secret'], ':time' => $entry['time']]); } function prune() { @@ -33,16 +28,4 @@ class BridgeSession extends EjabberdAuthBridge { $this->_auth->execute([':user' => $username, ':secret' => $password, ':limit' => time() - $this->timeout]); return $this->_auth->rowCount() > 0; } - - function setpass($username, $server, $password) { - return FALSE; - } - - function tryregister($username, $server, $password) { - return FALSE; - } - - function removeuser($username, $server) { - return FALSE; - } } diff --git a/plugins/session/config.sample.php b/plugins/session/config.sample.php new file mode 100644 index 0000000..8677cf3 --- /dev/null +++ b/plugins/session/config.sample.php @@ -0,0 +1,17 @@ +<?php + +/** + * This configuration file is used only by the RPC script. + */ + +$config = [ + 'plugin' => '' + 'config' => ['root_path' => '/path/to/site'], + 'mysql' => [ + 'dsn' => 'mysql:host=localhost;dbname=DATABASE;charset=utf8', + 'username' => 'USER', + 'password' => 'PASSWORD', + 'table' => 'TABLE', + ], + ], +]; diff --git a/plugins/session/main.php b/plugins/session/main.php index 8bd6f74..18bacd8 100644 --- a/plugins/session/main.php +++ b/plugins/session/main.php @@ -1,21 +1,22 @@ <?php define('ROOT', __DIR__ . '/../../'); -require_once ROOT . 'core/EjabberdAuthBridge.php'; + +require_once ROOT . 'plugins/session/session.module'; function create_key($salt) { - require_once ROOT . 'config.php'; - require_once ROOT . 'plugins/session/session.module'; - $bridge = session_init($config['session']); - $plugin = $config['session']['plugin']; - $plugin_conf = $config[$plugin]; - $plugin_id = $plugin; - require_once ROOT . 'plugins/' . $plugin_id . '/' . $plugin_id . '.module'; - $function = $plugin_id . '_session'; + require_once __DIR__ . '/config.php'; + $db = session_db($config['mysql']); + $plugin = $config['plugin']; + $plugin_conf = $config['config']; + require_once ROOT . 'plugins/' . $plugin . '/' . $plugin . '.module'; + $function = $plugin . '_session'; + $username = function_exists($function) ? $function($plugin_conf) : NULL; if ($username) { $entry = ['user' => $username, 'secret' => sha1($salt . time() . mt_rand()), 'time' => time()]; - $bridge->create($entry); + $query = $db->prepare(sprintf('INSERT INTO `%s` (`username`, `secret`, `created`) VALUES (:user, :secret, :time);', $config['mysql']['tablename'])); + $query->execute([':user' => $entry['user'], ':secret' => $entry['secret'], ':time' => $entry['time']]); return $entry; } return FALSE; diff --git a/plugins/session/session.module b/plugins/session/session.module index ed1771c..c979a8a 100644 --- a/plugins/session/session.module +++ b/plugins/session/session.module @@ -1,10 +1,11 @@ <?php -function session_init($config) { - $v = $config['mysql']; +function session_db($mysql) { $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8']; - $pdo = new PDO($v['dsn'], $v['username'], $v['password'], $options); + return new PDO($mysql['dsn'], $mysql['username'], $mysql['password'], $options); +} +function session_init($config) { require_once __DIR__ . '/BridgeSession.php'; - return new BridgeSession($pdo, $config); + return new BridgeSession(session_db($config['mysql']), $config); } |