diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/session/main.php | 21 | ||||
| -rw-r--r-- | plugins/session/www/rpc.php | 31 | ||||
| -rw-r--r-- | plugins/smf2/smf2.module | 12 | 
3 files changed, 43 insertions, 21 deletions
diff --git a/plugins/session/main.php b/plugins/session/main.php new file mode 100644 index 0000000..814bfc5 --- /dev/null +++ b/plugins/session/main.php @@ -0,0 +1,21 @@ +<?php + +define('ROOT', __DIR__ . '/../../'); + +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_conf]; +  $plugin_id = $plugin_conf['file']; +  require_once ROOT . 'plugins/' . $plugin_id . '/' . $plugin_id . '.module'; +  $function = $plugin_id . '_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); +    return $entry; +  } +  return FALSE; +} diff --git a/plugins/session/www/rpc.php b/plugins/session/www/rpc.php index 58f3634..fca85a0 100644 --- a/plugins/session/www/rpc.php +++ b/plugins/session/www/rpc.php @@ -1,25 +1,16 @@  <?php -define('ROOT', __DIR__ . '/../../../'); -define('SESS_ROOT' , __DIR__ . '/../'); +define('SESS_ROOT', __DIR__ . '/../'); -main(); +require_once SESS_ROOT . 'main.php'; -function main() { -  require_once ROOT . 'config.php'; -  require_once SESS_ROOT . 'session.module'; -  $bridge = session_init($config['session']); -  $plugin = $config['session']['plugin']; -  $plugin_conf = $config['session']['plugins'][$plugin_conf]; -  $plugin_id = $plugin_conf['file']; -  require_once SESS_ROOT . 'plugins/' . $plugin_id . '/' . $plugin_id . '.module'; -  $function = $plugin_id . '_authenticate'; -  $username = $function($plugin_conf); -  if ($username) { -    $entry = ['user' => $username, 'secret' => sha1($_POST['salt'] . time() . mt_rand()), 'time' => time()]; -    $bridge->create($entry); -    header('Content-type: text/plain; charset=UTF-8'); -    print json_encode($entry); -  } -  else header('HTTP/1.1 403 Forbidden'); +$entry = (!empty($_POST['salt']) && strlen($_POST['salt']) >= 16) ? +         create_key($_POST['salt']) : FALSE; + +if ($entry) { +  header('Content-type: text/plain; charset=UTF-8'); +  print json_encode($entry); +} +else { +  header('HTTP/1.1 403 Forbidden');  } diff --git a/plugins/smf2/smf2.module b/plugins/smf2/smf2.module index 8274318..066780e 100644 --- a/plugins/smf2/smf2.module +++ b/plugins/smf2/smf2.module @@ -1,6 +1,6 @@  <?php -function smf2_init($config) { +function smf2_bootstrap($config) {    $smf_root_path = $config['root_path'];    if (file_exists($smf_root_path . 'SSI.php')) {      include_once $smf_root_path . 'SSI.php'; @@ -9,10 +9,20 @@ function smf2_init($config) {      file_put_contents('php://stderr', "SMF not found at <{$smf_root_path}>.\n");      exit;    } +} + +function smf2_init($config) { +  smf2_bootstap($config);    require_once __DIR__ . '/BridgeSMF2.php';    return new BridgeSMF2();  } +function smf2_session($config) { +  smf2_bootstap($config); +  $user = smf_ssi('welcome', NULL); +  return (empty($user['is_guest']) && !empty($user['name'])) ? $user['name'] : FALSE; +} +  function smf_ssi($function) {    $args = func_get_args();    array_shift($args);  | 
