48 $stmt = $Pdo->prepare($SqlQuery);
49 $stmt->execute($Parameters);
50 $results = $stmt->fetchAll(PDO::FETCH_DEFAULT);
59 foreach ($results as $row)
61 $result_world = $row[
'teleport_world']; $result_region = $row[
'teleport_region'];
63 echo $row[
'teleport_name'].
"|";
64 echo
"<".$row[
'teleport_region_x'].
",".$row[
'teleport_region_y'].
",".$row[
'teleport_region_z'].
">|";
65 echo
"<".$row[
'teleport_rotation_x'].
",".$row[
'teleport_rotation_y'].
",".$row[
'teleport_rotation_z'].
",".$row[
'teleport_rotation_s'].
">|";
66 echo
"<".$row[
'teleport_offset'].
",".$row[
'teleport_front_offset_angle'].
",".$row[
'teleport_location_info'].
">|";
67 echo $row[
'teleport_locality_group'].
"|";
70 if ($result_world != $ThisWorld)
73 echo $location_type.
"|";
74 echo $result_region.
"|".$result_world.
"\n";
76 else if ($result_region != $ThisRegion)
79 echo $location_type.
"|";
80 echo $result_region.
"\n";
85 echo $location_type.
"\n";
92 echo(
"FAILURE=EXTRACT:".$e->getMessage().
"\n");
115 global $remote_world; global $teleport_allowed; global
$readings;
124 $sql_query =
"select PrincipalId from UserAccounts where PrincipalId = :key";
125 $stmt = $PDO1->prepare($sql_query);
126 $stmt->execute([
'key' =>
$readings[
'owner']]);
127 $is_user = $stmt->fetch(PDO::FETCH_ASSOC);
139 $sql_query =
"select * from ls_os_teleport_allowed where teleport_owner = :key and teleport_world = :world";
140 $stmt = $PDO->prepare($sql_query);
142 $is_user = $stmt->fetch(PDO::FETCH_ASSOC);
145 die(
"FAILURE=BANNED|Teleporter Owner ".
$readings[
'owner'].
" is unknown\n");
149 $remote_world = $is_user[
'teleport_world'];
150 $is_allowed = $is_user[
'teleport_allowed'];
173 $dsn =
"mysql:host=$Host;dbname=$Database;charset=utf8mb4";
177 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
178 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
179 PDO::ATTR_EMULATE_PREPARES =>
true,
185 $pdo =
new PDO($dsn, $Username, $Password, $options);
187 catch (PDOException $e)
192 die(
"FAILURE=DATABASE:Connection failed " . $e->getMessage());
222 $NULL_KEY = (string)
'00000000-0000-0000-0000-000000000000';
227 $allow_outsiders = FALSE;
229 $LOCAL_LOCATION =
"GROUP";
230 $REGION_LOCATION =
"REGION";
231 $WORLD_LOCATION =
"WORLD";
232 $METAVERSE_LOCATION =
"METAVERSE";
239 $LOCATION_MASK = $GROUP_FLAG | $REGION_FLAG | $WORLD_FLAG | $METAVERSE_FLAG;
241 $ANONYMOUS_FLAG = 16;
245 $teleport_allowed = FALSE;
258 $allow_outsiders = FALSE;
264 global $db; global $host; global $db_username; global $db_password;
265 global $db1; global $host1; global $db1_username; global $db1_password;
266 global $pdo; global $pdo1; global $remote_world; global
$readings;
269 $pdo = $this->
rdOpenDatabase($db, $host, $db_username, $db_password);
273 if ($use_sim_db) $pdo1 = $this->
rdOpenDatabase($db1, $host1, $db1_username, $db1_password);
292 if ($remote_world !=
"" && (!is_allowed || !$allow_outsiders))
294 die(
"FAILURE=BANNED|Teleporter Owner ".
$readings[
'owner'].
"@".
$readings[
'world'].
" is not authorised\n");
302 $position_string = substr(
$readings[
'position'], 1, -1);
303 $pos = explode(
",", $position_string);
304 $position = array_slice($pos, 0, 3);
307 $rotation_string = substr(
$readings[
'rotation'], 1, -1);
308 $rot = explode(
",", $rotation_string);
309 $rotation = array_slice($rot, 0, 4);
316 $sql_query =
"select * from ls_os_teleport where teleport_key = :key";
319 $stmt = $pdo->prepare($sql_query);
320 $stmt->execute([
'key' =>
$readings[
'key']]);
321 $exists = $stmt->fetch(PDO::FETCH_ASSOC);
325 echo
"FAILURE=IDENTIFY:".$e->getMessage().
"\n";
337 $position[0], $position[1], $position[2],
338 $rotation[0], $rotation[1], $rotation[2], $rotation[3],
345 $sql_query =
"update ls_os_teleport set ";
346 $sql_query .=
"teleport_name = ?, teleport_owner_key = ?, teleport_world = ?, teleport_region = ?, ";
347 $sql_query .=
"teleport_region_x = ?, teleport_region_y = ?, teleport_region_z = ?, ";
348 $sql_query .=
"teleport_rotation_x = ?, teleport_rotation_y = ?, teleport_rotation_z = ?, teleport_rotation_s = ?, ";
349 $sql_query .=
"teleport_offset = ?, teleport_group_key = ?, teleport_front_offset_angle = ?, ";
350 $sql_query .=
"teleport_location_info = ?, teleport_version_number = ?, teleport_locality_group = ?, ";
351 $sql_query .=
"teleport_heartbeat = CURRENT_TIMESTAMP()";
352 $sql_query .=
"where teleport_key = ?";
357 $stmt = $pdo->prepare($sql_query);
358 $stmt->execute($data);
362 echo
"FAILURE=UPDATE:".$e->getMessage().
"\n";
376 $sql_query =
"select * from ls_os_teleport where teleport_name = :name";
379 $stmt = $pdo->prepare($sql_query);
380 $stmt->execute([
'name' =>
$readings[
'name']]);
381 $same_name = $stmt->fetch(PDO::FETCH_ASSOC);
385 echo
"FAILURE=NAME_MATCH: ".$readings[
'name'].
":Failed with".$e->getMessage().
"\n";
389 echo
"FAILURE=NAME_MATCH: Existing teleporter data - ";
390 echo $row[
'teleport_world'].
"/".$row[
'teleport_region'].
"/";
391 echo
"<".$row[
'teleport_region_x'].
",".$row[
'teleport_region_y'].
",".$row[
'teleport_region_z'].
">\n";
399 $position[0], $position[1], $position[2],
400 $rotation[0], $rotation[1], $rotation[2], $rotation[3],
406 $sql_query =
"insert into ls_os_teleport(";
407 $sql_query .=
"teleport_key, teleport_name, teleport_owner_key, teleport_world, teleport_region, ";
408 $sql_query .=
"teleport_region_x, teleport_region_y, teleport_region_z, ";
409 $sql_query .=
"teleport_rotation_x, teleport_rotation_y, teleport_rotation_z, teleport_rotation_s, ";
410 $sql_query .=
"teleport_offset, teleport_group_key, teleport_front_offset_angle,";
411 $sql_query .=
"teleport_location_info, teleport_version_number, teleport_locality_group";
412 $sql_query .=
")VALUES(";
413 $sql_query .=
"?, ?, ?, ?, ?, ";
414 $sql_query .=
"?, ?, ?, ";
415 $sql_query .=
"?, ?, ?, ?, ";
416 $sql_query .=
"?, ?, ?, ";
417 $sql_query .=
"?, ?, ?";
423 $stmt = $pdo->prepare($sql_query);
424 $stmt->execute($data);
428 echo
"FAILURE=INSERT:".$e->getMessage().
"\n";
434 echo
"EXTRACT_LIST=START\n";
437 $this_group_flag =
$readings[
'locationinfo'] & $GROUP_FLAG;
438 $this_region_flag =
$readings[
'locationinfo'] & $REGION_FLAG;
439 $this_world_flag =
$readings[
'locationinfo'] & $WORLD_FLAG;
440 $this_metaverse_flag =
$readings[
'locationinfo'] & $METAVERSE_FLAG;
447 $sql_query .=
"select * from ls_os_teleport";
448 $sql_query .=
" where teleport_key != :key";
449 $sql_query .=
" and ((teleport_location_info & :group_flag = :this_group_flag and teleport_locality_group = :group) or teleport_location_info & :region_flag = :this_region_flag)";
450 $sql_query .=
" and teleport_location_info & :anon_flag = 0";
451 $sql_query .=
" and teleport_region = :region";
452 $sql_query .=
" and teleport_world = :world";
453 $sql_query .=
" and teleport_version_number != 0";
455 $sql_query .=
" UNION ";
458 $sql_query .=
"select * from ls_os_teleport ";
459 $sql_query .=
" where teleport_key != :key";
460 $sql_query .=
" and ((teleport_location_info & :world_flag = :this_world_flag and teleport_world = :world)";
461 $sql_query .=
" and teleport_location_info & :anon_flag = 0";
462 $sql_query .=
" or (teleport_location_info & :metaverse_flag = :this_metaverse_flag and teleport_world != :world))";
463 $sql_query .=
" and teleport_version_number != 0";
466 $sql_query .=
" order by teleport_name";
470 'group_flag' => $GROUP_FLAG,
471 'region_flag' => $REGION_FLAG,
472 'world_flag' => $WORLD_FLAG,
473 'metaverse_flag' => $METAVERSE_FLAG,
474 'anon_flag' => $ANONYMOUS_FLAG,
475 'this_group_flag' => $this_group_flag,
476 'this_region_flag' => $this_region_flag,
477 'this_world_flag' => $this_world_flag,
478 'this_metaverse_flag' => $this_metaverse_flag,
488 echo
"EXTRACT_LIST=END\n";
505 $SqlQuery =
"select * from ls_os_teleport";
506 $SqlQuery .=
"where DATE_ADD(teleport_heartbeat, INTERVAL :lifetime HOUR) < CURRENT_TIMESTAMP()";
507 $SqlQuery .=
" and teleport_version_number != 0 ";
508 if ($world !=
'###') $SqlQuery .=
" and teleport_world = :world";
509 $SqlQuery .=
" order by teleport_name;";
511 $Parameters = [
'lifetime' =>
$readings[
'lifetime'] ];
512 if ($world !=
'###') $Parameters[
'world'] = $world;
516 $stmt = $pdo->prepare($SqlQuery);
517 $stmt->execute($Parameters);
518 $results = $stmt->fetchAll(PDO::FETCH_DEFAULT);
522 echo
"FAILURE=SCAN:".$e->getMessage().
"\n";
529 echo
"SCAN_LIST=START\n";
530 echo
"//=========================== Date: ".date(
"Y-m-d H:i:s").
"==================\n";
532 foreach ($results as $row)
534 $action_string =
"SCANNED";
535 $teleport_name = $row[
'teleport_name'];
536 $teleport_version = $row[
'teleport_version_number'];
541 $sql_query1 =
"delete from ls_os_teleport where teleport_key = :key";
542 $parameters1 = [
'key' => $row[
'teleport_key'] ];
543 $stmt1 = $pdo->prepare($sql_query1);
544 $stmt1->execute($parameters1);
545 $results1 = $stmt1->fetchAll(PDO::FETCH_DEFAULT);
546 $action_string =
"DELETED";
548 echo $row[
'teleport_name'].
"|".$action_string.
"|";
549 echo
"hop://".$row[
'teleport_world'].
"/".$row[
'teleport_region'].
"/".$row[
'teleport_region_x'].
"/".$row[
'teleport_region_y'].
"/".$row[
'teleport_region_z'].
"\n";
551 echo
"SCAN_LIST=END\n";