From 279e0061c515ee0a03036bef68eea9738273d785 Mon Sep 17 00:00:00 2001
From: Johan Berntsson
Date: Tue, 4 Mar 2008 05:31:54 +0000
Subject: Merged 3Di code that provides scene and avatar serialization, and
plugin support for region move/split/merge. See ThirdParty/3Di/README.txt.
Unless the new modules are used there should be no noticeable changes when
running OpenSim.
---
.../MonitorGUI/htdocs/MonitorGUI/View.pm | 214 +++++++++++++++++++++
.../3Di/RegionMonitor/MonitorGUI/htdocs/MyCGI.pm | 91 +++++++++
.../RegionMonitor/MonitorGUI/htdocs/monitor.cgi | 202 +++++++++++++++++++
3 files changed, 507 insertions(+)
create mode 100644 ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs/MonitorGUI/View.pm
create mode 100644 ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs/MyCGI.pm
create mode 100644 ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs/monitor.cgi
(limited to 'ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs')
diff --git a/ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs/MonitorGUI/View.pm b/ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs/MonitorGUI/View.pm
new file mode 100644
index 0000000..bab462f
--- /dev/null
+++ b/ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs/MonitorGUI/View.pm
@@ -0,0 +1,214 @@
+package MonitorGUI::View;
+
+use strict;
+
+my @server_list;
+my $max_port;
+my $regions;
+
+sub screen_header {
+ return << "HEADER";
+
+
+
+
+
+Region Monitor GUI, 3Di
+
+
+HEADER
+}
+
+sub screen_footer {
+ return << "FOOTER";
+
+
+FOOTER
+}
+
+sub html {
+ my $grid_info = shift;
+ my $regions_list = $grid_info->{"sim-profiles"};
+ $regions = undef;
+ foreach(@$regions_list) {
+ my $ip = $_->{sim_ip} || "UNKNOWN";
+ my $port = $_->{sim_port} || "UNKNOWN";
+ $regions->{$ip}->{$port} = $_;
+ if (!$regions->{max_port} || $regions->{max_port} < $port) {
+ $regions->{max_port} = $port;
+ }
+ }
+ @server_list = keys %$regions;
+ $max_port = $regions->{max_port};
+ my $html = "";
+ foreach my $machine (@server_list) {
+ next if ($machine eq "max_port");
+ $html .= &_machine_view($machine, $regions->{$machine});
+ }
+ return $html;
+}
+
+sub _machine_view {
+ my ($ip, $info) = @_;
+ my $region_html = "";
+ foreach my $region (keys %$info) {
+ $region_html .= &_region_html($info->{$region});
+ }
+ my $html =<< "MACHINE_HTML";
+$ip
+$region_html
+
+MACHINE_HTML
+}
+
+sub _region_html {
+ my $region_info = shift;
+ my $name = $region_info->{name} || "UNKNOWN";
+ my $x = $region_info->{x} || -1;
+ my $y = $region_info->{y} || -1;
+ my $ip = $region_info->{sim_ip} || "UNKNOWN";
+ my $port = $region_info->{sim_port} || "UNKNOWN";
+ my $get_scene_presence_filter = $region_info->{get_scene_presence_filter};
+ my $get_scene_presence = $region_info->{get_scene_presence};
+ my $get_avatar_filter = $region_info->{get_avatar_filter};
+ my $get_avatar = $region_info->{get_avatar};
+ my $avatar_names = $region_info->{avatar_names};
+ my $action_forms = &_action_forms($region_info);
+ my $html = <<"REGION_HTML";
+$name
+$ip:$port | X: $x Y: $y
+
+
+get_avatar |
+$get_avatar |
+ |
+
+
+get_avatar_filter |
+$get_avatar_filter |
+$avatar_names |
+
+
+get_scene_presence |
+$get_scene_presence |
+ |
+
+
+get_scene_presence_filter |
+$get_scene_presence_filter |
+ |
+
+
+$action_forms
+REGION_HTML
+ return $html;
+}
+
+sub _action_forms {
+ my $region_info = shift;
+ my $ip = $region_info->{sim_ip};
+ my $port = $region_info->{sim_port};
+ my $default_input_port = $max_port + 1;
+ my $move_to_options = "";
+ my $split_to_options = "";
+ my $merge_ip_options = "";
+ foreach(@server_list) {
+ next if ($_ eq "max_port");
+ $merge_ip_options .= "