| Server IP : 165.22.154.248 / Your IP : 216.73.217.0 [ Web Server : Apache/2.4.29 (Ubuntu) System : Linux droplet-integra 4.15.0-197-generic #208-Ubuntu SMP Tue Nov 1 17:23:37 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 7.2.24-0ubuntu0.18.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/avanza-lms.old.bak9874115/mnet/ |
Upload File : |
<?php
/**
* An object to represent lots of information about an RPC-peer machine
*
* @author Donal McMullan donal@catalyst.net.nz
* @version 0.0.1
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
* @package mnet
*/
class mnet_remote_client extends mnet_peer {
// If the remote client is trying to execute a method on an object instead
// of just a function, we'll instantiate the proper class and store it in
// this 'object_to_call' property, or 'static_location' if it wants to be called statically
var $object_to_call = false;
var $static_location = false;
var $request_was_encrypted = false;
var $request_was_signed = false;
var $signatureok = false; // True if we have successfully verified that the request was signed by an established peer
var $pushkey = false; // True if we need to tell the remote peer about our current public key
var $useprivatekey = ''; // The private key we should use to sign pushkey response
function was_encrypted() {
$this->request_was_encrypted = true;
}
/* Record private key to use in pushkey response
* Called when we have decrypted a request using an old (but still acceptable) keypair
* @param $keyresource the private key we should use to sign the response.
*/
function encrypted_to($keyresource) {
$this->useprivatekey = $keyresource;
}
function set_pushkey() {
$this->pushkey = true;
}
function was_signed() {
$this->request_was_signed = true;
}
function signature_verified() {
$this->signatureok = true;
}
function object_to_call($object) {
$this->object_to_call = $object;
}
function static_location($location) {
$this->static_location = $location;
}
function plaintext_is_ok() {
global $CFG;
$trusted_hosts = explode(',', get_config('mnet', 'mnet_trusted_hosts'));
foreach($trusted_hosts as $host) {
if (address_in_subnet(getremoteaddr(), $host)) {
return true;
}
}
return false;
}
function refresh_key() {
mnet_debug("remote client refreshing key");
global $CFG;
// set up an RPC request
require_once $CFG->dirroot.'/mnet/xmlrpc/client.php';
$mnetrequest = new mnet_xmlrpc_client();
// Use any method - listServices is pretty lightweight.
$mnetrequest->set_method('system/listServices');
// Do RPC call and store response
if ($mnetrequest->send($this) === true) {
mnet_debug("refresh key request complete");
// Ok - we actually don't care about the result
$temp = new mnet_peer();
$temp->set_id($this->id);
if($this->public_key != $temp->public_key) {
$newkey = clean_param($temp->public_key, PARAM_PEM);
if(!empty($newkey)) {
$this->public_key = $newkey;
return true;
}
}
}
return false;
}
}