function link_region($method_name, $params, $user_data) { log_message('info', "link_region called"); $config =& get_config(); $req = $params[0]; if (isset($req['region_name']) && strlen($req['region_name']) > 0) { $region_name = $req['region_name']; log_message('debug', "Using specified region name {$region_name}"); } else { $region_name = $config['hypergrid_default_region']; log_message('debug', "No region name specified - using {$region_name}"); } $scene = lookup_scene_by_name($region_name); $response = array(); if ($scene == null) { log_message('warn', "Unable to link to unknown region {$region_name} - no scene found"); $response['result'] = 'false'; } else { $response['result'] = 'true'; $response['uuid'] = $scene->SceneID; // Yay for 64-bit integer bitmath in PHP $x = $scene->MinPosition->X; $y = $scene->MinPosition->Y; $handle = bitShift($x, 32); $handle = bitOr($handle, (string) $y, 0); $response['handle'] = (string) $handle; $response['region_image'] = "http://" . $scene->ExtraData['ExternalAddress'] . ":" . ($response['server_uri'] = $scene->Address); $response['external_name'] = $scene->Name; log_message('debug', "Succesfully linked to {$region_name}@" . $scene->Address); } return $response; }
function rsa_decrypt($enc_data, $p, $q, $d) { $enc_data = int2bin($enc_data); $exp = $d; $modulus = bcmul($p, $q); $data_len = strlen($enc_data); $chunk_len = bitLen($modulus) - 1; $block_len = (int) ceil($chunk_len / 8); $curr_pos = 0; $bit_pos = 0; $plain_data = 0; while ($curr_pos < $data_len) { $tmp = bin2int(substr($enc_data, $curr_pos, $block_len)); $tmp = bcpowmod($tmp, $exp, $modulus); $plain_data = bitOr($plain_data, $tmp, $bit_pos); $bit_pos += $chunk_len; $curr_pos += $block_len; } return int2bin($plain_data); }