* Replaced GridHTTPServer and UserHTTPServer with BaseHttpServer

* Now dumping default value in config.
*
This commit is contained in:
lbsa71
2007-04-11 20:07:58 +00:00
parent cb88393f6b
commit 1a28ef6292
24 changed files with 530 additions and 761 deletions

View File

@@ -39,126 +39,126 @@ using OpenSim.Framework.Sims;
using OpenSim.Framework.Inventory;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Console;
using OpenSim.Servers;
namespace OpenGridServices.UserServer
{
/// <summary>
/// </summary>
public class OpenUser_Main : conscmd_callback
{
private string ConfigDll = "OpenUser.Config.UserConfigDb4o.dll";
private UserConfig Cfg;
/// <summary>
/// </summary>
public class OpenUser_Main : BaseServer, conscmd_callback
{
private string ConfigDll = "OpenUser.Config.UserConfigDb4o.dll";
private UserConfig Cfg;
public static OpenUser_Main userserver;
public UserHTTPServer _httpd;
public UserProfileManager _profilemanager;
private UserProfileManager m_userProfileManager;
public Dictionary<LLUUID, UserProfile> UserSessions = new Dictionary<LLUUID, UserProfile>();
public Dictionary<LLUUID, UserProfile> UserSessions = new Dictionary<LLUUID, UserProfile>();
ConsoleBase m_console;
[STAThread]
public static void Main( string[] args )
{
Console.WriteLine("Starting...\n");
ConsoleBase m_console;
userserver = new OpenUser_Main();
userserver.Startup();
userserver.Work();
}
[STAThread]
public static void Main(string[] args)
{
Console.WriteLine("Starting...\n");
private OpenUser_Main()
{
m_console = new ConsoleBase("opengrid-userserver-console.log", "OpenUser", this);
MainConsole.Instance = m_console;
OpenUser_Main userserver = new OpenUser_Main();
userserver.Startup();
userserver.Work();
}
private OpenUser_Main()
{
m_console = new ConsoleBase("opengrid-userserver-console.log", "OpenUser", this);
MainConsole.Instance = m_console;
}
private void Work()
{
m_console.WriteLine("\nEnter help for a list of commands\n");
while (true)
{
m_console.MainConsolePrompt();
}
private void Work()
{
m_console.WriteLine("\nEnter help for a list of commands\n");
}
while (true)
{
m_console.MainConsolePrompt();
}
}
public void Startup() {
MainConsole.Instance.WriteLine("Main.cs:Startup() - Loading configuration");
Cfg = this.LoadConfigDll(this.ConfigDll);
Cfg.InitConfig();
public void Startup()
{
MainConsole.Instance.WriteLine("Main.cs:Startup() - Loading configuration");
Cfg = this.LoadConfigDll(this.ConfigDll);
Cfg.InitConfig();
MainConsole.Instance.WriteLine("Main.cs:Startup() - Creating user profile manager");
_profilemanager = new UserProfileManager();
_profilemanager.InitUserProfiles();
_profilemanager.SetKeys(Cfg.GridSendKey, Cfg.GridRecvKey, Cfg.GridServerURL, Cfg.DefaultStartupMsg);
MainConsole.Instance.WriteLine("Main.cs:Startup() - Creating user profile manager");
m_userProfileManager = new UserProfileManager();
m_userProfileManager.InitUserProfiles();
m_userProfileManager.SetKeys(Cfg.GridSendKey, Cfg.GridRecvKey, Cfg.GridServerURL, Cfg.DefaultStartupMsg);
MainConsole.Instance.WriteLine("Main.cs:Startup() - Starting HTTP process");
_httpd = new UserHTTPServer();
MainConsole.Instance.WriteLine("Main.cs:Startup() - Starting HTTP process");
BaseHttpServer httpServer = new BaseHttpServer(8002);
_httpd.AddXmlRPCHandler("login_to_simulator", _profilemanager.XmlRpcLoginMethod);
_httpd.AddRestHandler( "DELETE", "/usersessions/", _profilemanager.RestDeleteUserSessionMethod );
_httpd.Start();
httpServer.AddXmlRPCHandler("login_to_simulator", m_userProfileManager.XmlRpcLoginMethod);
httpServer.AddRestHandler("DELETE", "/usersessions/", m_userProfileManager.RestDeleteUserSessionMethod);
}
// I guess that this was never used?
//Listener.Prefixes.Add("http://+:8002/userserver/");
httpServer.Start();
}
public void do_create(string what)
{
switch (what)
{
case "user":
m_console.WriteLine("Creating new user profile");
string tempfirstname;
string templastname;
string tempMD5Passwd;
tempfirstname = m_console.CmdPrompt("First name");
templastname = m_console.CmdPrompt("Last name");
tempMD5Passwd = m_console.PasswdPrompt("Password");
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(tempMD5Passwd);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
tempMD5Passwd = s.ToString();
UserProfile newuser = m_userProfileManager.CreateNewProfile(tempfirstname, templastname, tempMD5Passwd);
newuser.homelookat = new LLVector3(-0.57343f, -0.819255f, 0f);
newuser.homepos = new LLVector3(128f, 128f, 23f);
m_userProfileManager.SaveUserProfiles();
break;
}
}
public void do_create(string what)
{
switch(what)
{
case "user":
m_console.WriteLine("Creating new user profile");
string tempfirstname;
string templastname;
string tempMD5Passwd;
tempfirstname=m_console.CmdPrompt("First name: ");
templastname=m_console.CmdPrompt("Last name: ");
tempMD5Passwd=m_console.PasswdPrompt("Password: ");
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(tempMD5Passwd);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
tempMD5Passwd = s.ToString();
UserProfile newuser=_profilemanager.CreateNewProfile(tempfirstname,templastname,tempMD5Passwd);
newuser.homelookat = new LLVector3(-0.57343f, -0.819255f, 0f);
newuser.homepos = new LLVector3(128f,128f,23f);
_profilemanager.SaveUserProfiles();
break;
}
}
public void RunCmd(string cmd, string[] cmdparams)
{
switch (cmd)
{
case "help":
m_console.WriteLine("create user - create a new user");
m_console.WriteLine("shutdown - shutdown the grid (USE CAUTION!)");
m_console.WriteLine("shutdown - shutdown the grid (USE CAUTION!)");
break;
case "create":
do_create(cmdparams[0]);
break;
do_create(cmdparams[0]);
break;
case "shutdown":
case "shutdown":
m_console.Close();
Environment.Exit(0);
Environment.Exit(0);
break;
}
}
private UserConfig LoadConfigDll(string dllName)
private UserConfig LoadConfigDll(string dllName)
{
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
UserConfig config = null;
@@ -185,9 +185,9 @@ namespace OpenGridServices.UserServer
pluginAssembly = null;
return config;
}
public void Show(string ShowWhat)
{
}
}
}
}

View File

@@ -103,9 +103,6 @@
<Compile Include="Main.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="UserHttp.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>

View File

@@ -12,7 +12,6 @@
</resources>
<sources failonempty="true">
<include name="Main.cs" />
<include name="UserHttp.cs" />
<include name="Properties/AssemblyInfo.cs" />
</sources>
<references basedir="${project::get-base-directory()}">

View File

@@ -1,154 +0,0 @@
/*
Copyright (c) OpenGrid project, http://osgrid.org/
* All rights reserved.
*
* 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 <organization> 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 <copyright holder> ``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 <copyright holder> 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.Text;
using Nwc.XmlRpc;
using System.Threading;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using libsecondlife;
using OpenSim.Framework.User;
using OpenSim.Framework.Sims;
using OpenSim.Framework.Inventory;
using OpenSim.Framework.Console;
using OpenSim.Servers;
namespace OpenGridServices.UserServer
{
public class UserHTTPServer : BaseHttpServer
{
public Thread HTTPD;
public HttpListener Listener;
public UserHTTPServer() : base( 8002 )
{
}
public void Start()
{
MainConsole.Instance.WriteLine("Starting up HTTP Server");
HTTPD = new Thread(new ThreadStart(StartHTTP));
HTTPD.Start();
}
public void StartHTTP()
{
MainConsole.Instance.WriteLine("UserHttp.cs:StartHTTP() - Spawned main thread OK");
Listener = new HttpListener();
Listener.Prefixes.Add("http://+:8002/userserver/");
Listener.Prefixes.Add("http://+:8002/usersessions/");
Listener.Start();
HttpListenerContext context;
while (true)
{
context = Listener.GetContext();
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
}
}
static string ParseXMLRPC(string requestBody)
{
return OpenUser_Main.userserver._profilemanager.ParseXMLRPC(requestBody);
}
static string ParseREST(HttpListenerRequest www_req)
{
Console.WriteLine("INCOMING REST - " + www_req.RawUrl);
char[] splitter = { '/' };
string[] rest_params = www_req.RawUrl.Split(splitter);
string req_type = rest_params[1]; // First part of the URL is the type of request - usersessions/userprofiles/inventory/blabla
switch (req_type)
{
case "usersessions":
string param = rest_params[2];
string result = "";
if (www_req.HttpMethod == "DELETE")
{
result = OpenUser_Main.userserver._profilemanager.RestDeleteUserSessionMethod( null, null, param );
}
return result;
}
return "";
}
static void HandleRequest(Object stateinfo)
{
HttpListenerContext context = (HttpListenerContext)stateinfo;
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
response.KeepAlive = false;
response.SendChunked = false;
System.IO.Stream body = request.InputStream;
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
string requestBody = reader.ReadToEnd();
body.Close();
reader.Close();
string responseString = "";
switch (request.ContentType)
{
case "text/xml":
// must be XML-RPC, so pass to the XML-RPC parser
responseString = ParseXMLRPC(requestBody);
response.AddHeader("Content-type", "text/xml");
break;
case "text/plaintext":
responseString = ParseREST(request);
response.AddHeader("Content-type", "text/plaintext");
break;
}
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
System.IO.Stream output = response.OutputStream;
response.SendChunked = false;
response.ContentLength64 = buffer.Length;
output.Write(buffer, 0, buffer.Length);
output.Close();
}
}
}