query("SELECT CentsPerMoneyUnit FROM ".CURRENCY_MONEY_TBL." limit 1"); list($CentsPerMoneyUnit) = $db->next_record(); $db->close(); if (!$CentsPerMoneyUnit) $CentsPerMoneyUnit = 0; # Multiply the cents per unit times the requested amount $real = $CentsPerMoneyUnit * $currency; // Dealing in cents here. The XML requires an integer // so we have to ceil out any decimal places and cast as an integer $real = (integer)ceil($real); return $real; */ $cost = $amount; return $cost; } function update_simulator_balance($agentID, $amount=-1, $secureID=null) { if (!isGUID($agnetID)) return false; if ($amount<0) { $amount = get_balance($agentID, $secureID); if ($amount<0) return false; } // XML RPC to Region Server if (!isGUID($secureID, true)) return false; $results = opensim_get_server_info($agentID); if (!$results) return false; $serverip = $results["serverIP"]; $httpport = $results["serverHttpPort"]; $serveruri = $results["serverURI"]; $results = opensim_get_avatar_session($agentID); if (!$results) return false; $sessionID = $results["sessionID"]; if ($secureID==null) $secureID = $results["secureID"]; $req = array('clientUUID'=>$agentID, 'clientSessionID'=>$sessionID, 'clientSecureSessionID'=>$secureID, "Balance"=>$amount); $params = array($req); $request = xmlrpc_encode_request('UpdateBalance', $params); $response = do_call($serverip, $httpport, $serveruri, $request); return $response; } function user_alert($agentID, $message, $secureID=null) { $results = opensim_get_server_info($agentID); if (!$results) return false; $serverip = $results["serverIP"]; $httpport = $results["serverHttpPort"]; $serveruri = $results["serverURI"]; $results = opensim_get_avatar_session($agentID); if (!$results) return false; $sessionID = $results["sessionID"]; if ($secureID==null) $secureID = $results["secureID"]; $req = array('clientUUID'=>$agentID, 'clientSessionID'=>$sessionID, 'clientSecureSessionID'=>$secureID, 'Description'=>$message); $params = array($req); $request = xmlrpc_encode_request('UserAlert', $params); $response = do_call($serverip, $httpport, $serveruti, $request); return $response; } // function move_money($agentID, $destID, $amount, $type, $flags, $desc, $prminvent=0, $nxtowner=0, $ip="") { if (!USE_CURRENCY_SERVER) { env_set_money_transaction($agentID, $destID, $amount, $type, $flags, $desc, $prminvent, $nxtowner, $ip); return true; } // Direct DB access for security $url = preg_split("/[:\/]/", USER_SERVER_URI); $userip = $url[3]; opensim_set_currency_transaction($agentID, $destID, $amount, $type, $flags, $desc, $userip); if (isGUID($agentID) and $angentID!="00000000-0000-0000-0000-0000000000000") { opensim_set_currency_balance($agentID, $userip, -$amount); } if (isGUID($destID) and $destID !="00000000-0000-0000-0000-0000000000000") { opensim_set_currency_balance($destID, $userip, $amount); } return true; } // function add_money($agentID, $amount, $secureID=null) { if (!isGUID($agentID)) return false; // if (!USE_CURRENCY_SERVER) { env_set_money_transaction(null, $agentID, $amount, 5010, 0, "Add Money", 0, 0, ""); $res["success"] = true; return $res; } // // XML RPC to Region Server // if (!isGUID($secureID, true)) return false; $results = opensim_get_server_info($agentID); $serverip = $results["serverIP"]; $httpport = $results["serverHttpPort"]; $serveruri = $results["serverURI"]; if ($serverip=="") return false; $results = opensim_get_avatar_session($agentID); $sessionID = $results["sessionID"]; //if ($sessionID=="") return false; if ($secureID==null) $secureID = $results["secureID"]; $req = array('clientUUID'=>$agentID, 'clientSessionID'=>$sessionID, 'clientSecureSessionID'=>$secureID, 'amount'=>$amount); $params = array($req); $request = xmlrpc_encode_request('AddBankerMoney', $params); $response = do_call($serverip, $httpport, $serveruri, $request); return $response; } // // Send the money to avatar for bonus // by Milo // function send_money($agentID, $amount, $secretCode=null) { if (!isGUID($agentID)) return false; if (!USE_CURRENCY_SERVER) { env_set_money_transaction(null, $agentID, $amount, 5003, 0, "Send Money", 0, 0, ""); $res["success"] = true; return $res; } // // XML RPC to Region Server // $results = opensim_get_server_info($agentID); $serverip = $results["serverIP"]; $httpport = $results["serverHttpPort"]; $serveruri = $results["serverURI"]; if ($serverip=="") return false; $serverip = gethostbyname($serverip); if ($secretCode!=null) { $secretCode = md5($secretCode."_".$serverip); } else { $secretCode = get_confirm_value($serverip); } $req = array('clientUUID'=>$agentID, 'secretAccessCode'=>$secretCode, 'amount'=>$amount); $params = array($req); $request = xmlrpc_encode_request('SendMoneyBalance', $params); $response = do_call($serverip, $httpport, $serveruri, $request); return $response; } // function get_balance($agentID, $secureID=null) { $cash = -1; if (!isGUID($agentID)) return (integer)$cash; // if (!USE_CURRENCY_SERVER) { $cash = env_get_money_balance($agentID); return (integer)$cash; } // // XML RPC to Region Server // if (!isGUID($secureID, true)) return (integer)$cash; $results = opensim_get_server_info($agentID); $serverip = $results["serverIP"]; $httpport = $results["serverHttpPort"]; $serveruri = $results["serverURI"]; if ($serverip=="") return (integer)$cash; $results = opensim_get_avatar_session($agentID); $sessionID = $results["sessionID"]; if ($sessionID=="") return (integer)$cash; if ($secureID==null) $secureID = $results["secureID"]; $req = array('clientUUID'=>$agentID, 'clientSessionID'=>$sessionID, 'clientSecureSessionID'=>$secureID); $params = array($req); $request = xmlrpc_encode_request('GetBalance', $params); $response = do_call($serverip, $httpport, $serveruri, $request); if ($response) $cash = $response["balance"]; return (integer)$cash; } // XML RPC function do_call($host, $port, $uri, $request) { $url = ""; if ($uri!="") { $dec = explode(":", $uri); if (!strncasecmp($dec[0], "http", 4)) $url = "$dec[0]:$dec[1]"; } if ($url=="") $url ="http://$host"; $url = "$url:$port/"; $header[] = "Content-type: text/xml"; $header[] = "Content-length: ".strlen($request); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); $data = curl_exec($ch); if (!curl_errno($ch)) curl_close($ch); $ret = false; if ($data) $ret = xmlrpc_decode($data); // for Debug /* ob_start(); print_r($ret); $rt = ob_get_contents(); ob_end_clean(); error_log("[do_call] responce = ".$rt); */ return $ret; } function get_confirm_value($ipAddress) { $key = env_get_config("currency_script_key"); if ($key=="") $key = "1234567883789"; $confirmvalue = md5($key."_".$ipAddress); return $confirmvalue; } ?>