diff --git a/sso/hive/lib.php b/sso/hive/lib.php new file mode 100755 index 0000000000000..40e125ac52748 --- /dev/null +++ b/sso/hive/lib.php @@ -0,0 +1,69 @@ +sso = 'hive'; + // $CFG->hiveprot = 'http'; + // $CFG->hiveport = '80'; + // $CFG->hivehost = 'turkey.harvestroad.com.au'; + // $CFG->hivepath = '/cgi-bin/hive/hivedb.cgi'; + // $CFG->hivecbid = '28'; + +function sso_user_login($username, $password) { + + global $CFG, $SESSION; + + include($CFG->libdir.'/snoopy/Snoopy.class.inc'); + + if (empty($CFG->hivehost)) { + return false; // Hive config variables not configured yet + } + +/// Set up Snoopy + + $snoopy = new Snoopy; + + $submit_url = $CFG->hiveprot .'://'. $CFG->hivehost .':'. $CFG->hiveport .''. $CFG->hivepath ; + + $submit_vars['HIVE_UNAME'] = $username; + $submit_vars['HIVE_UPASS'] = $password; + $submit_vars['HIVE_ENDUSER']= $username; + $submit_vars['HIVE_REQ'] = '2112'; + $submit_vars['HIVE_REF'] = 'hin:hive@Moodle Login'; + $submit_vars['HIVE_RET'] = 'ORG'; + $submit_vars['HIVE_REM'] = ''; + $submit_vars['HIVE_PROD'] = '0'; + $submit_vars['HIVE_USERIP'] = getremoteaddr(); + + +/// Ideally we would use POST for a bit more security, but there is a Hive bug preventing this +/// $snoopy->submit($submit_url,$submit_vars); + +/// Using GET instead + foreach ($submit_vars as $name => $value) { + $params[] = "$name=".urlencode($value); + } + $submit_url .= '?'.implode('&', $params); + $snoopy->fetch($submit_url); + + +/// Extract HIVE_SESSION from headers + + foreach ($snoopy->headers as $header) { + if (strpos($header, 'HIVE_SESSION=') !== false) { + $header = explode('HIVE_SESSION=', $header); + if (count($header) > 1) { + $cookie = explode(';', $header[1]); + $cookie = $cookie[0]; + $SESSION->HIVE_SESSION = $cookie; + return true; + } + } + } + + return false; // No cookie found +} + +?>