123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- /*
- * 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 Nini.Config;
- namespace LaunchSLClient
- {
- public partial class Form1 : Form
- {
- string gridUrl = "";
- string sandboxUrl = "";
- string runUrl = "";
- string runLine = "";
- string exeFlags = "";
- string exePath = "";
- private MachineConfig m_machineConfig;
- private List<Grid> m_grids = new List<Grid>();
- public Form1()
- {
- InitializeComponent();
- m_machineConfig = getMachineConfig();
- m_machineConfig.GetClient(ref exePath, ref runLine, ref exeFlags);
- initializeGrids();
- ArrayList menuItems = new ArrayList();
- menuItems.Add("Please select one:");
- addLocalSims(ref menuItems);
- foreach (Grid grid in m_grids)
- {
- menuItems.Add(grid.Name + " - " + grid.URL);
- }
- comboBox1.DataSource = menuItems;
- }
- private MachineConfig getMachineConfig()
- {
- if (Environment.OSVersion.Platform == PlatformID.Unix)
- {
- if (File.Exists("/System/Library/Frameworks/Cocoa.framework/Cocoa"))
- {
- return new OSXConfig();
- }
- else
- {
- return new UnixConfig();
- }
- }
- else
- {
- return new WindowsConfig();
- }
- }
- private void initializeGrids()
- {
- string iniFile = "LaunchSLClient.ini";
- if (!File.Exists(iniFile))
- return;
- IniConfigSource configSource = new IniConfigSource(iniFile);
- foreach (IConfig config in configSource.Configs)
- {
- Grid grid = new Grid();
- grid.Name = config.Name;
- grid.LoginURI = config.GetString("loginURI", "");
- grid.URL = config.GetString("URL", "");
- m_grids.Add(grid);
- }
- }
- 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=\\\"(?<port>.*?)\\\".*external_host_name=\\\"(?<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
- if (File.Exists("network_servers_information.xml"))
- {
- string text;
- FileInfo defaultFile = new FileInfo("network_servers_information.xml");
- Regex myRegex = new Regex(".*UserServerURL=\\\"(?<url>.*?)\\\".*");
- 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)
- {
- string configDir = m_machineConfig.GetConfigDir();
- if (!string.IsNullOrEmpty(configDir))
- {
- Directory.SetCurrentDirectory(configDir);
- addLocalSandbox(ref menuItems);
- addLocalGrid(ref menuItems);
- }
- }
- private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (comboBox1.Text == "Please select one:")
- {
- return;
- }
- else if (comboBox1.Text == "Local Sandbox")
- {
- runUrl=" -loginuri " + sandboxUrl;
- }
- else if (comboBox1.Text == "Local Grid Server")
- {
- runUrl = " -loginuri " + gridUrl;
- }
- else
- {
- foreach (Grid grid in m_grids)
- {
- if (comboBox1.Text == grid.Name + " - " + grid.URL)
- {
- if (grid.LoginURI != string.Empty)
- runUrl = " -loginuri " + grid.LoginURI;
- else
- runUrl = "";
- break;
- }
- }
- }
- System.Diagnostics.Process proc = new System.Diagnostics.Process();
- proc.StartInfo.FileName = runLine;
- proc.StartInfo.Arguments = exeFlags + " " + runUrl;
- proc.StartInfo.UseShellExecute = false;
- proc.StartInfo.RedirectStandardOutput = false;
- proc.StartInfo.WorkingDirectory = exePath;
- proc.Start();
- proc.WaitForExit();
- }
- }
- }
|