__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
//
// This file is part of BasicLTI4Moodle
//
// BasicLTI4Moodle is an IMS BasicLTI (Basic Learning Tools for Interoperability)
// consumer for Moodle 1.9 and Moodle 2.0. BasicLTI is a IMS Standard that allows web
// based learning tools to be easily integrated in LMS as native ones. The IMS BasicLTI
// specification is part of the IMS standard Common Cartridge 1.1 Sakai and other main LMS
// are already supporting or going to support BasicLTI. This project Implements the consumer
// for Moodle. Moodle is a Free Open source Learning Management System by Martin Dougiamas.
// BasicLTI4Moodle is a project iniciated and leaded by Ludo(Marc Alier) and Jordi Piguillem
// at the GESSI research group at UPC.
// SimpleLTI consumer for Moodle is an implementation of the early specification of LTI
// by Charles Severance (Dr Chuck) htp://dr-chuck.com , developed by Jordi Piguillem in a
// Google Summer of Code 2008 project co-mentored by Charles Severance and Marc Alier.
//
// BasicLTI4Moodle is copyright 2009 by Marc Alier Forment, Jordi Piguillem and Nikolas Galanis
// of the Universitat Politecnica de Catalunya http://www.upc.edu
// Contact info: Marc Alier Forment granludo @ gmail.com or marc.alier @ upc.edu.
namespace moodle\mod\lti; // Using a namespace as the basicLTI module imports classes with the same names.
defined('MOODLE_INTERNAL') || die;
require_once($CFG->dirroot . '/mod/lti/OAuth.php');
require_once($CFG->dirroot . '/mod/lti/TrivialStore.php');
/**
*
* @param int $typeid LTI type ID.
* @param string[] $scopes Array of scopes which give permission for the current request.
*
* @return string|int|boolean The OAuth consumer key, the LTI type ID for the validated bearer token,
true for requests not requiring a scope, otherwise false.
*/
function get_oauth_key_from_headers($typeid = null, $scopes = null) {
global $DB;
$now = time();
$requestheaders = OAuthUtil::get_headers();
if (isset($requestheaders['Authorization'])) {
if (substr($requestheaders['Authorization'], 0, 6) == "OAuth ") {
$headerparameters = OAuthUtil::split_header($requestheaders['Authorization']);
return format_string($headerparameters['oauth_consumer_key']);
} else if (empty($scopes)) {
return true;
} else if (substr($requestheaders['Authorization'], 0, 7) == 'Bearer ') {
$tokenvalue = trim(substr($requestheaders['Authorization'], 7));
$conditions = array('token' => $tokenvalue);
if (!empty($typeid)) {
$conditions['typeid'] = intval($typeid);
}
$token = $DB->get_record('lti_access_tokens', $conditions);
if ($token) {
// Log token access.
$DB->set_field('lti_access_tokens', 'lastaccess', $now, array('id' => $token->id));
$permittedscopes = json_decode($token->scope);
if ((intval($token->validuntil) > $now) && !empty(array_intersect($scopes, $permittedscopes))) {
return intval($token->typeid);
}
}
}
}
return false;
}
function handle_oauth_body_post($oauthconsumerkey, $oauthconsumersecret, $body, $requestheaders = null) {
if ($requestheaders == null) {
$requestheaders = OAuthUtil::get_headers();
}
// Must reject application/x-www-form-urlencoded.
if (isset($requestheaders['Content-type'])) {
if ($requestheaders['Content-type'] == 'application/x-www-form-urlencoded' ) {
throw new OAuthException("OAuth request body signing must not use application/x-www-form-urlencoded");
}
}
if (isset($requestheaders['Authorization']) && (substr($requestheaders['Authorization'], 0, 6) == "OAuth ")) {
$headerparameters = OAuthUtil::split_header($requestheaders['Authorization']);
$oauthbodyhash = $headerparameters['oauth_body_hash'];
}
if ( ! isset($oauthbodyhash) ) {
throw new OAuthException("OAuth request body signing requires oauth_body_hash body");
}
// Verify the message signature.
$store = new TrivialOAuthDataStore();
$store->add_consumer($oauthconsumerkey, $oauthconsumersecret);
$server = new OAuthServer($store);
$method = new OAuthSignatureMethod_HMAC_SHA1();
$server->add_signature_method($method);
$request = OAuthRequest::from_request();
try {
$server->verify_request($request);
} catch (\Exception $e) {
$message = $e->getMessage();
throw new OAuthException("OAuth signature failed: " . $message);
}
$postdata = $body;
$hash = base64_encode(sha1($postdata, true));
if ( $hash != $oauthbodyhash ) {
throw new OAuthException("OAuth oauth_body_hash mismatch");
}
return $postdata;
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| amd | Folder | 0777 |
|
|
| backup | Folder | 0777 |
|
|
| classes | Folder | 0777 |
|
|
| db | Folder | 0777 |
|
|
| lang | Folder | 0777 |
|
|
| pix | Folder | 0777 |
|
|
| service | Folder | 0777 |
|
|
| source | Folder | 0777 |
|
|
| templates | Folder | 0777 |
|
|
| tests | Folder | 0777 |
|
|
| OAuth.php | File | 29.62 KB | 0777 |
|
| OAuthBody.php | File | 5.41 KB | 0777 |
|
| TrivialStore.php | File | 4.87 KB | 0777 |
|
| auth.php | File | 6.06 KB | 0777 |
|
| certs.php | File | 1.16 KB | 0777 |
|
| contentitem.php | File | 2.43 KB | 0777 |
|
| contentitem_return.php | File | 3.75 KB | 0777 |
|
| coursetooledit.php | File | 3.23 KB | 0777 |
|
| coursetools.php | File | 2.18 KB | 0777 |
|
| deprecatedlib.php | File | 1.1 KB | 0777 |
|
| edit_form.php | File | 21.81 KB | 0777 |
|
| externalregistrationreturn.php | File | 2.31 KB | 0777 |
|
| grade.php | File | 1.36 KB | 0777 |
|
| index.php | File | 4.46 KB | 0777 |
|
| launch.php | File | 4.31 KB | 0777 |
|
| lib.php | File | 25.84 KB | 0777 |
|
| locallib.php | File | 159.29 KB | 0777 |
|
| mod_form.php | File | 29.14 KB | 0777 |
|
| openid-configuration.php | File | 2.66 KB | 0777 |
|
| openid-registration.php | File | 3.46 KB | 0777 |
|
| register.php | File | 4.37 KB | 0777 |
|
| register_form.php | File | 4.33 KB | 0777 |
|
| registersettings.php | File | 3.15 KB | 0777 |
|
| registration.php | File | 1.4 KB | 0777 |
|
| registrationreturn.php | File | 3.47 KB | 0777 |
|
| request_tool.php | File | 2.57 KB | 0777 |
|
| return.php | File | 4.63 KB | 0777 |
|
| service.php | File | 7.34 KB | 0777 |
|
| servicelib.php | File | 9.89 KB | 0777 |
|
| services.php | File | 3.01 KB | 0777 |
|
| settings.php | File | 8.03 KB | 0777 |
|
| startltiadvregistration.php | File | 2.95 KB | 0777 |
|
| styles.css | File | 9.38 KB | 0777 |
|
| token.php | File | 3.42 KB | 0777 |
|
| toolconfigure.php | File | 2.06 KB | 0777 |
|
| toolproxies.php | File | 6.37 KB | 0777 |
|
| toolssettings.php | File | 3.79 KB | 0777 |
|
| typessettings.php | File | 6.26 KB | 0777 |
|
| upgrade.txt | File | 4.91 KB | 0777 |
|
| upgradelib.php | File | 2.08 KB | 0777 |
|
| version.php | File | 2.58 KB | 0777 |
|
| view.php | File | 8.5 KB | 0777 |
|