From e16f9a16c77aca017ddd3413d6ff84d3a3ee7364 Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Fri, 15 Feb 2008 03:30:15 +0000 Subject: Moved LaunchSLClient prebuild.xml into main prebuild.xml --- OpenSim/Tools/LaunchSLClient/Form1.cs | 211 ++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 OpenSim/Tools/LaunchSLClient/Form1.cs (limited to 'OpenSim/Tools/LaunchSLClient/Form1.cs') diff --git a/OpenSim/Tools/LaunchSLClient/Form1.cs b/OpenSim/Tools/LaunchSLClient/Form1.cs new file mode 100644 index 0000000..183a104 --- /dev/null +++ b/OpenSim/Tools/LaunchSLClient/Form1.cs @@ -0,0 +1,211 @@ +/* +* Copyright (c) Contributors, http://opensimulator.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* 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. +* +*/ + +using System; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Text; +using System.Text.RegularExpressions; +using System.Windows.Forms; +using Microsoft.Win32; + +namespace LaunchSLClient +{ + public partial class Form1 : Form + { + const string deepGridUrl = "http://user.deepgrid.com:8002/"; + const string osGridUrl = "http://www.osgrid.org:8002/"; + const string openLifeGridUrl = "http://logingrid.net:8002"; + + string gridUrl = ""; + string sandboxUrl = ""; + string runUrl = ""; + string runLine = ""; + string exeFlags = ""; + string exePath = ""; + + private void addLocalSandbox(ref ArrayList menuItems) + { + // build sandbox URL from Regions\default.xml + // this is highly dependant on a standard default.xml + if (File.Exists(@"Regions\default.xml")) + { + string sandboxHostName = ""; + string sandboxPort = ""; + string text; + + Regex myRegex = new Regex(".*internal_ip_port=\\\"(?.*?)\\\".*external_host_name=\\\"(?.*?)\\\".*"); + + FileInfo defaultFile = new FileInfo(@"Regions\default.xml"); + StreamReader stream = defaultFile.OpenText(); + do + { + text = stream.ReadLine(); + if (text == null) + { + break; + } + MatchCollection theMatches = myRegex.Matches(text); + foreach (Match theMatch in theMatches) + { + if (theMatch.Length != 0) + { + sandboxHostName = theMatch.Groups["name"].ToString(); + sandboxPort = theMatch.Groups["port"].ToString(); + } + } + } while (text != null); + + stream.Close(); + sandboxUrl = "http:\\" + sandboxHostName + ":" + sandboxPort; + menuItems.Add("Local Sandbox"); + } + } + + private void addLocalGrid(ref ArrayList menuItems) + { + //build local grid URL from network_servers_information.xml + // this is highly dependant on a standard default.xml + if (File.Exists(@"network_servers_information.xml")) + { + string text; + FileInfo defaultFile = new FileInfo(@"network_servers_information.xml"); + Regex myRegex = new Regex(".*UserServerURL=\\\"(?.*?)\\\".*"); + StreamReader stream = defaultFile.OpenText(); + + do + { + text = stream.ReadLine(); + if (text == null) + { + break; + } + foreach (Match theMatch in myRegex.Matches(text)) + { + if (theMatch.Length != 0) + { + gridUrl = theMatch.Groups["url"].ToString(); + } + } + } while (text != null); + stream.Close(); + if (gridUrl != null) + { + menuItems.Add("Local Grid Server"); + } + } + } + + private void addLocalSims(ref ArrayList menuItems) + { + // find opensim directory + RegistryKey exeKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\OpenSim\OpenSim"); + if (exeKey != null) + { + Object simPath = exeKey.GetValue("Path"); + + Directory.SetCurrentDirectory(simPath.ToString()); //this should be set to wherever we decide to put the binaries + + addLocalSandbox(ref menuItems); + addLocalGrid(ref menuItems); + } + else + { + MessageBox.Show("No OpenSim installed. Showing public grids only", "No OpenSim"); + } + } + + private void getClient(ref string exePath, ref string runLine, ref string exeFlags) + { + // get executable path from registry + RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Linden Research, Inc.\SecondLife"); + if (regKey == null) + { + regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Linden Research, Inc.\SecondLife"); + if (regKey == null) + { + throw new LauncherException("Can't find Second Life. Are you sure it is installed?", "LauncherException.Form1"); + } + } + string exe = regKey.GetValue("Exe").ToString(); + exeFlags = regKey.GetValue("Flags").ToString(); + exePath = regKey.GetValue("").ToString(); + runLine = exePath + "\\" + exe; + Registry.LocalMachine.Flush(); + Registry.LocalMachine.Close(); + } + + public Form1() + { + InitializeComponent(); + ArrayList menuItems = new ArrayList(); + + getClient(ref exePath, ref runLine, ref exeFlags); + + menuItems.Add("Please select one:"); + + addLocalSims(ref menuItems); + + menuItems.Add("OSGrid - www.osgrid.org"); + menuItems.Add("DeepGrid - www.deepgrid.com"); + menuItems.Add("OpenlifeGrid - www.openlifegrid.com"); + menuItems.Add("Linden Labs - www.secondlife.com"); + + comboBox1.DataSource = menuItems; + } + + private void radioButton1_CheckedChanged(object sender, EventArgs e) + { + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + if (comboBox1.Text == "Please select one:") { return; } + if (comboBox1.Text == "Local Sandbox") { runUrl=" -loginuri " + sandboxUrl;} + if (comboBox1.Text == "Local Grid Server") { runUrl = " -loginuri " + gridUrl; } + if (comboBox1.Text == "DeepGrid - www.deepgrid.com") { runUrl = " -loginuri " + deepGridUrl; } + if (comboBox1.Text == "OSGrid - www.osgrid.org") { runUrl = " -loginuri " + osGridUrl; } + if (comboBox1.Text == "OpenlifeGrid - www.openlifegrid.com") { runUrl = " -loginuri " + openLifeGridUrl; } + if (comboBox1.Text == "Linden Labs - www.secondlife.com") { runUrl = ""; } + + System.Diagnostics.Process proc = new System.Diagnostics.Process(); + proc.StartInfo.FileName = runLine; + proc.StartInfo.Arguments = exeFlags.ToString() + " " + runUrl; + proc.StartInfo.UseShellExecute = false; + proc.StartInfo.RedirectStandardOutput = false; + proc.StartInfo.WorkingDirectory = exePath.ToString(); + proc.Start(); + proc.WaitForExit(); + } + } +} -- cgit v1.1