07.08.2020, 14:38
(Dieser Beitrag wurde zuletzt bearbeitet: 09.08.2020, 08:45 von Manfred Aabye.)
(10.11.2018, 18:18)brenner23 schrieb: Habe fertig und noch was hinzugefügt...
Diese Version ist umbgebbaut, der XML Content habe ich in seine Bestandteile zerlegt und alles wegefiltert, was unwichtig ist, dann das witige in Variabeln verpackt und Global gesetzt in den Fuktionen...
Dann habe ich noch wenn jemand kein Monexmodul eingaubaut hat eine Fehlermeldung im Landverkauf eingebaut, das man sich sinngemäß beim Parcell Owner melden soll.. weil das Land/Parzelle mehr als 0 kosten soll ....
die XLOG ist für debuging zwecke geeignet, die URL google.de kann gegen eure ausgetauscht werden...
PHP-Code:<?php
error_reporting(E_ALL & ~E_NOTICE);
# Copyright (c)Melanie Thielker and Teravus Ovares (http://opensimulator.org/)
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the OpenSim Project nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# updated for Robust installations: BlueWall 2011
# further minor changes by justincc (http://justincc.org)
function xlog($text) {
global $IP;
$datum = date("Y-m-d H:i:s");
$fh = fopen('landtool.log', 'a'); // bitte anpassen
fwrite($fh, $datum."# ".$IP."|".$text."\n");
fclose($fh);
}
xlog(".. ");
$request_xml = file_get_contents("php://input");
//xlog("Call... request_xml - ".$request_xml);
# Settings
$dbhost = "127.0.0.1";
$dbname = "opensim";
$dbuser = "opensim";
$dbpass = "opensim123";
# Tables
$presence = "Presence";
# Splt Post raw Content as an effect because somethin does not more run under php 7.x
$search = array('<', '>', 'methodCall', '?xml version="1.0"?', '/', 'xxx', 'methodName', 'membername' , 'params' , 'param' , 'value' , 'struct', 'member', 'name', 'string', 'int');
$xml = str_replace($search, ">" ,$request_xml);
$search = array( '>>');
$xml = str_replace($search, ">" ,$xml);
$xml = str_replace($search, ">" ,$xml);
$xml = str_replace($search, ">" ,$xml);
$xml = str_replace($search, ">" ,$xml);
$xml = str_replace($search, ">" ,$xml);
$xml = str_replace($search, ">" ,$xml);
$xml_split = preg_split("[>]", $xml);
//xlog("Call... xml 0 ".$xml);
// 0 n/a
// 1 preflightBuyLandPrep
$method_name = $xml_split[1];
//xlog("Call... method_name : ".$method_name );
// 2 agentId
// 3 d8384ae7-ae6a-4a36-a254-9d62f59f695f
$agentId = $xml_split[3];
//xlog("Call... agentId : ".$agentId );
// 4 secureSessionId
// 5 0f5eddde-13ef-4aaa-85f6-03134566ef3f
$secureSessionId = $xml_split[5];
//xlog("Call... secureSessionId : ".$secureSessionId );
// 6 language
// 7 de
// 8 billableArea
// 9 0
$billableArea = $xml_split[9];
//xlog("Call... billableArea : ".$billableArea );
// 10 currencyBuy
// 11 0
$amount = $xml_split[11];
//xlog("Call... amount : ".$amount );
// 12 n/a
//xlog("Call... xml_split 0 ".$xml_split[0]);
//xlog("Call... xml_split 1 ".$xml_split[1]);
//xlog("Call... xml_split 2 ".$xml_split[2]);
//xlog("Call... xml_split 3 ".$xml_split[3]);
//xlog("Call... xml_split 4 ".$xml_split[4]);
//xlog("Call... xml_split 5 ".$xml_split[5]);
//xlog("Call... xml_split 6 ".$xml_split[6]);
//xlog("Call... xml_split 7 ".$xml_split[7]);
//xlog("Call... xml_split 8 ".$xml_split[8]);
//xlog("Call... xml_split 9 ".$xml_split[9]);
//xlog("Call... xml_split 10 ".$xml_split[10]);
//xlog("Call... xml_split 11 ".$xml_split[11]);
//xlog("Call... xml_split 12 ".$xml_split[12]);
# XMLRPC
$xmlrpc_server = xmlrpc_server_create();
xmlrpc_server_register_method($xmlrpc_server, "preflightBuyLandPrep", "buy_land_prep");
////////////////////////////////////////////
function validate_user($agent_id, $s_session_id)
{
global $dbhost, $dbuser, $dbpass, $dbname;
//$agentid = mysql_escape_string($agentId);
//$sessionid = mysql_escape_string($secureSessionId);
# New MySqli Connect
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if ($mysqli->connect_found) {
die("Connection failed: " . $mysqli->connect_found);
}
# New MySqli Connect end
$query = "select UserID from Presence where UserID='".$agent_id."' and SecureSessionID = '".$s_session_id."'";
// $result = mysql_query($query)
// or die('ERROR: '.mysql_error());
// $row = mysql_fetch_assoc($result);
// return $row['UserID'];
// }
# New MySqli Event
$result = $mysqli->query($query);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
#
$UserID = $row['UserID'];
//xlog("validate_user Succsess! [".$query."]");
}} else {
// xlog("validate_user Fail! [".$query."]");
return ;
}
# New MySqli Event end
return $UserID;
}
//xlog("Call... Function Test validate_user a ".validate_user($agentId, $secureSessionId)) ;
//xlog("Call... method_name :> ".$method_name );
//xlog("Call... agentId :> ".$agentId );
//xlog("Call... secureSessionId :> ".$secureSessionId );
function buy_land_prep($method_name)
{
global $dbhost, $dbuser, $dbpass, $dbname , $agentId, $secureSessionId, $amount, $billableArea;
$confirmvalue = "";
//xlog("Call.buy_land_prep. method_name :>> ".$method_name );
//xlog("Call.buy_land_prep. agentId :>> ".$agentId );
//xlog("Call.buy_land_prep. secureSessionId :>> ".$secureSessionId );
//xlog("Call.buy_land_prep. amount :>> ".$amount );
//xlog("Call.buy_land_prep. billableArea :>> ".$billableArea );
$ID = validate_user($agentId, $secureSessionId);
//xlog("Call.buy_land_prep. ID :>>> ".$ID );
if ( $amount != 0) {
header("Content-type: text/xml");
$response_xml = xmlrpc_encode(array(
'success' => False,
'errorMessage' => "\n\nLand/Parcels can only sell for 0!\nCall the Landowner ....",
'errorURI' => "http://www.google.de"));
print $response_xml;
return;
}
if($ID)
{
$membership_levels = array(
'levels' => array(
'id' => "00000000-0000-0000-0000-000000000000",
'description' => "some level"));
$landUse = array(
'upgrade' => False,
'action' => "http://www.google.de");
$currency = array(
'estimatedCost' => "200.00"); // convert_to_real($amount));
$membership = array(
'upgrade' => False,
'action' => "http://www.google.de",
'levels' => $membership_levels);
$response_xml = xmlrpc_encode(array(
'success' => True,
'currency' => $currency,
'membership' => $membership,
'landUse' => $landUse,
'currency' => $currency,
'confirm' => $confirmvalue));
header("Content-type: text/xml");
print $response_xml;
}
else
{
header("Content-type: text/xml");
$response_xml = xmlrpc_encode(array(
'success' => False,
'errorMessage' => "\n\nUnable to Authenticate\n\nClick URL for more info.",
'errorURI' => "http://www.google.de"));
print $response_xml;
}
return "";
}
////////////////////////////////////////////
#$request_xml = $HTTP_RAW_POST_DATA;
$request_xml = file_get_contents("php://input");
xmlrpc_server_call_method($xmlrpc_server, $request_xml, '');
xmlrpc_server_destroy($xmlrpc_server);
?>
probiert es mal aus ... und meldet mir mal ob es bei euch funktioniert...
Ich würde gerne hier mal eine Zip hinterlegen mit inhalt landtool.php ... aber vlt kann es jemand hier mal machen
lg
//So ich füge mal das Lantool.php Script hier als PastBin ein, ist in meinen Augen doppeltgemoppelt, weil es ja hier in einem CodeBlock ja schon vorhanden ist. Dachte es wären mehere Dateien, dann wäre ein ZipDatei ansprechend gewesen ;D
https://paste.md-5.net/vutoxafeqa.php
<--- Bogus
Ich habe das mal mit der DTL/NSL Money Server von Fumi.Iseki und NSL http://www.nsl.tuis.ac.jp Version getestet, es funktioniert gut zusammen.
Meine etwas abgewandelte Version ist unter Github zu bekommen: https://github.com/BigManzai/OpenSimCurrencyServer-2020
Kopiere einfach die Verzeichnisse /addon-modules und /bin in deinen OpenSim Quelltext (Gleiche Verzeichnisse überschreiben).
Aus dem Verzeichnis /helper benötigst du nur landtool.php diese machst du in deinem Web Verzeichnis /helper (Konfigurieren nicht vergessen) und setzt den Link in deine robust.ini.
Getestet mit OpenSim 0.9.2.605
Das gleiche müsste man nur noch mit der currency.php machen.
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.