Server IP : 68.65.122.142 / Your IP : 18.224.54.148 Web Server : LiteSpeed System : Linux server167.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64 User : glenirhm ( 1318) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/glenirhm/lscache/../lms.myglenbow.ca/old/user/../mnet/ |
[ Home ] | [ C0mmand ] | [ 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; } }