/** * NOT WORKING * reimplementation of system.keyswapcall with capability of forcing the local renew * */ function mnetadmin_keyswap($function, $params) { global $CFG, $MNET; $return = array(); $wwwroot = $params[0]; $pubkey = $params[1]; $application = $params[2]; $forcerenew = $params[3]; if ($forcerenew == 0) { // standard keyswap for first key recording if (!empty($CFG->mnet_register_allhosts)) { $mnet_peer = new mnet_peer(); $keyok = $mnet_peer->bootstrap($wwwroot, $pubkey, $application); if ($keyok) { $mnet_peer->commit(); } } } else { $mnet_peer = new mnet_peer(); // we can only renew hosts that we know something about. if ($mnet_peer->set_wwwroot($wwwroot)) { $mnet_peer->public_key = clean_param($pubkey, PARAM_PEM); $mnet_peer->public_key_expires = $mnet_peer->check_common_name($pubkey); $mnet_peer->updateparams->public_key = clean_param($pubkey, PARAM_PEM); $mnet_peer->updateparams->public_key_expires = $mnet_peer->check_common_name($pubkey); $mnet_peer->commit(); } else { return false; // avoid giving our key to unkown hosts. } } return $MNET->public_key; }
if ($mnet_peers) { foreach ($mnet_peers as $peer) { if ($peer->id == $CFG->mnet_all_hosts_id || $peer->id == $CFG->mnet_localhost_id) { continue; } $application = $DB->get_record('mnet_application', array('id' => $peer->applicationid)); $mnet_peer = new mnet_peer(); $mnet_peer->set_wwwroot($peer->wwwroot); // get the sessions for each vmoodle that have same ID Number // we use a force parameter to force fetching the key remotely anyway $currentkey = mnet_get_public_key($mnet_peer->wwwroot, $application, 1); if ($currentkey) { $mnet_peer->public_key = clean_param($currentkey, PARAM_PEM); $mnet_peer->updateparams = new StdClass(); $mnet_peer->updateparams->public_key = clean_param($currentkey, PARAM_PEM); $mnet_peer->public_key_expires = $mnet_peer->check_common_name($currentkey); $mnet_peer->updateparams->public_key_expires = $mnet_peer->check_common_name($currentkey); $mnet_peer->commit(); mtrace('My key renewed at ' . $peer->wwwroot . ' till ' . userdate($mnet_peer->public_key_expires)); $trace .= userdate(time()) . ' KEY RENEW from ' . $CFG->wwwroot . ' to ' . $peer->wwwroot . " suceeded\n"; } else { mtrace('Failed renewing key with ' . $peer->wwwroot . "\n"); $trace .= userdate(time()) . ' KEY RENEW from ' . $CFG->wwwroot . ' to ' . $peer->wwwroot . " failed\n"; } } } set_config('mnet_autorenew_haveto', 0); $trace .= userdate(time()) . ' RESET KEY RENEW on ' . $CFG->wwwroot . "\n"; /// record trace in trace file if ($CFG->tracevmoodlekeyrenew) { if ($TRACE = fopen($CFG->dataroot . '/vmoodle_renew.log', 'w+')) {
if (isset($form->name) && $form->name != $mnet_peer->name) { $form->name = clean_param($form->name, PARAM_NOTAGS); $mnet_peer->set_name($form->name); } if (isset($form->deleted) && ($form->deleted == '0' || $form->deleted == '1')) { $mnet_peer->deleted = $form->deleted; } if (isset($form->public_key)) { $form->public_key = clean_param($form->public_key, PARAM_PEM); if (empty($form->public_key)) { error(get_string("invalidpubkey", 'mnet'), 'peers.php?step=update&hostid=' . $mnet_peer->id); exit; } else { $oldkey = $mnet_peer->public_key; $mnet_peer->public_key = $form->public_key; $mnet_peer->public_key_expires = $mnet_peer->check_common_name($form->public_key); if ($mnet_peer->public_key_expires == false) { $mnet_peer->public_key == $oldkey; $errmsg = '<br />'; foreach ($mnet_peer->error as $err) { $errmsg .= $err['code'] . ': ' . $err['text'] . '<br />'; } error(get_string("invalidpubkey", 'mnet') . $errmsg, 'peers.php?step=update&hostid=' . $mnet_peer->id); exit; } } } // PREVENT DUPLICATE RECORDS /////////////////////////////////////////// if ('input' == $form->step) { if (isset($mnet_peer->id) && $mnet_peer->id > 0) { error(get_string("hostexists", 'mnet', $mnet_peer->id), 'peers.php?step=update&hostid=' . $mnet_peer->id);