From 7daa3955bc3a1918e40962851f9e8d38597a245e Mon Sep 17 00:00:00 2001
From: gareth
Date: Thu, 22 Mar 2007 10:11:15 +0000
Subject: brought zircon branch into trunk
---
OpenSim.GridInterfaces/Remote/AssemblyInfo.cs | 31 ++++
.../Remote/OpenSim.GridInterfaces.Remote.csproj | 101 +++++++++++++
.../Remote/OpenSim.GridInterfaces.Remote.dll.build | 45 ++++++
OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs | 102 ++++++++++++++
OpenSim.GridInterfaces/Remote/RemoteGridServer.cs | 156 +++++++++++++++++++++
5 files changed, 435 insertions(+)
create mode 100644 OpenSim.GridInterfaces/Remote/AssemblyInfo.cs
create mode 100644 OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.csproj
create mode 100644 OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.dll.build
create mode 100644 OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
create mode 100644 OpenSim.GridInterfaces/Remote/RemoteGridServer.cs
(limited to 'OpenSim.GridInterfaces/Remote')
diff --git a/OpenSim.GridInterfaces/Remote/AssemblyInfo.cs b/OpenSim.GridInterfaces/Remote/AssemblyInfo.cs
new file mode 100644
index 0000000..0fa7d6e
--- /dev/null
+++ b/OpenSim.GridInterfaces/Remote/AssemblyInfo.cs
@@ -0,0 +1,31 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Information about this assembly is defined by the following
+// attributes.
+//
+// change them to the information which is associated with the assembly
+// you compile.
+
+[assembly: AssemblyTitle("RemoteGridServers")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RemoteGridServers")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// This sets the default COM visibility of types in the assembly to invisible.
+// If you need to expose a type to COM, use [ComVisible(true)] on that type.
+[assembly: ComVisible(false)]
+
+// The assembly version has following format :
+//
+// Major.Minor.Build.Revision
+//
+// You can specify all values by your own or you can build default build and revision
+// numbers with the '*' character (the default):
+
+[assembly: AssemblyVersion("1.0.*")]
diff --git a/OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.csproj b/OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.csproj
new file mode 100644
index 0000000..37d1d12
--- /dev/null
+++ b/OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.csproj
@@ -0,0 +1,101 @@
+
+
+ Local
+ 8.0.50727
+ 2.0
+ {2AF1E37E-064D-4590-8D7E-B6390F721BAE}
+ Debug
+ AnyCPU
+
+
+
+ OpenSim.GridInterfaces.Remote
+ JScript
+ Grid
+ IE50
+ false
+ Library
+
+ OpenSim.GridInterfaces.Remote
+
+
+
+
+
+ False
+ 285212672
+ False
+
+
+ TRACE;DEBUG
+
+ True
+ 4096
+ False
+ ..\..\bin\
+ False
+ False
+ False
+ 4
+
+
+
+ False
+ 285212672
+ False
+
+
+ TRACE
+
+ False
+ 4096
+ True
+ ..\..\bin\
+ False
+ False
+ False
+ 4
+
+
+
+
+ \System.dll
+
+
+ \System.Xml.dll.dll
+
+
+ \libsecondlife.dll.dll
+
+
+
+
+ OpenSim.Framework
+ {1D2865A9-CF8E-45F7-B96D-91ED128A32CF}
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+
+
+ OpenSim.Framework.Console
+ {C8405E1A-EC19-48B6-9C8C-CA03624B9916}
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+
+
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.dll.build b/OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.dll.build
new file mode 100644
index 0000000..e0d24ff
--- /dev/null
+++ b/OpenSim.GridInterfaces/Remote/OpenSim.GridInterfaces.Remote.dll.build
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
new file mode 100644
index 0000000..528e9fa
--- /dev/null
+++ b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading;
+using System.Net;
+using System.Net.Sockets;
+using System.IO;
+using libsecondlife;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Assets;
+using OpenSim.Framework.Utilities;
+
+namespace OpenSim.GridInterfaces.Remote
+{
+ public class RemoteAssetServer : IAssetServer
+ {
+ private IAssetReceiver _receiver;
+ private BlockingQueue _assetRequests;
+ private Thread _remoteAssetServerThread;
+ private string AssetServerUrl;
+ private string AssetSendKey;
+
+ public RemoteAssetServer()
+ {
+ this._assetRequests = new BlockingQueue();
+ this._remoteAssetServerThread = new Thread(new ThreadStart(RunRequests));
+ this._remoteAssetServerThread.IsBackground = true;
+ this._remoteAssetServerThread.Start();
+ OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Remote Asset Server class created");
+ }
+
+ public void SetReceiver(IAssetReceiver receiver)
+ {
+ this._receiver = receiver;
+ }
+
+ public void RequestAsset(LLUUID assetID, bool isTexture)
+ {
+ ARequest req = new ARequest();
+ req.AssetID = assetID;
+ req.IsTexture = isTexture;
+ this._assetRequests.Enqueue(req);
+ }
+
+ public void UpdateAsset(AssetBase asset)
+ {
+
+ }
+
+ public void UploadNewAsset(AssetBase asset)
+ {
+
+ }
+
+ public void SetServerInfo(string ServerUrl, string ServerKey)
+ {
+ this.AssetServerUrl = ServerUrl;
+ this.AssetSendKey = ServerKey;
+ }
+
+ private void RunRequests()
+ {
+ while (true)
+ {
+ //we need to add support for the asset server not knowing about a requested asset
+ ARequest req = this._assetRequests.Dequeue();
+ LLUUID assetID = req.AssetID;
+ OpenSim.Framework.Console.MainConsole.Instance.WriteLine(" RemoteAssetServer- Got a AssetServer request, processing it");
+ WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "getasset/" + AssetSendKey + "/" + assetID + "/data");
+ WebResponse AssetResponse = AssetLoad.GetResponse();
+ byte[] idata = new byte[(int)AssetResponse.ContentLength];
+ BinaryReader br = new BinaryReader(AssetResponse.GetResponseStream());
+ idata = br.ReadBytes((int)AssetResponse.ContentLength);
+ br.Close();
+
+ AssetBase asset = new AssetBase();
+ asset.FullID = assetID;
+ asset.Data = idata;
+ _receiver.AssetReceived(asset, req.IsTexture);
+ }
+ }
+
+ public void Close()
+ {
+
+ }
+ }
+
+ public class RemoteAssetPlugin : IAssetPlugin
+ {
+ public RemoteAssetPlugin()
+ {
+
+ }
+
+ public IAssetServer GetAssetServer()
+ {
+ return (new RemoteAssetServer());
+ }
+ }
+
+}
diff --git a/OpenSim.GridInterfaces/Remote/RemoteGridServer.cs b/OpenSim.GridInterfaces/Remote/RemoteGridServer.cs
new file mode 100644
index 0000000..5f48916
--- /dev/null
+++ b/OpenSim.GridInterfaces/Remote/RemoteGridServer.cs
@@ -0,0 +1,156 @@
+/*
+* Copyright (c) OpenSim project, http://sim.opensecondlife.org/
+*
+* 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 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 ``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 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.Collections.Generic;
+using System.Threading;
+using System.Net;
+using System.Net.Sockets;
+using System.IO;
+using libsecondlife;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Assets;
+
+namespace OpenSim.GridInterfaces.Remote
+{
+ public class RemoteGridServer : RemoteGridBase
+ {
+ private string GridServerUrl;
+ private string GridSendKey;
+ private string GridRecvKey;
+ private Dictionary AgentCircuits = new Dictionary();
+
+ public override Dictionary agentcircuits
+ {
+ get { return AgentCircuits; }
+ set { AgentCircuits = value; }
+ }
+
+ public RemoteGridServer()
+ {
+ OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Remote Grid Server class created");
+ }
+
+ public override bool RequestConnection()
+ {
+ return true;
+ }
+
+ public override AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
+ {
+ AgentCircuitData validcircuit = null;
+ if (this.AgentCircuits.ContainsKey(circuitcode))
+ {
+ validcircuit = this.AgentCircuits[circuitcode];
+ }
+ AuthenticateResponse user = new AuthenticateResponse();
+ if (validcircuit == null)
+ {
+ //don't have this circuit code in our list
+ user.Authorised = false;
+ return (user);
+ }
+
+ if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID))
+ {
+ // YAY! Valid login
+ user.Authorised = true;
+ user.LoginInfo = new Login();
+ user.LoginInfo.Agent = agentID;
+ user.LoginInfo.Session = sessionID;
+ user.LoginInfo.SecureSession = validcircuit.SecureSessionID;
+ user.LoginInfo.First = validcircuit.firstname;
+ user.LoginInfo.Last = validcircuit.lastname;
+ }
+ else
+ {
+ // Invalid
+ user.Authorised = false;
+ }
+
+ return (user);
+ }
+
+ public override bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
+ {
+ WebRequest DeleteSession = WebRequest.Create(GridServerUrl + "/usersessions/" + sessionID.ToString());
+ DeleteSession.Method = "DELETE";
+ DeleteSession.ContentType = "text/plaintext";
+ DeleteSession.ContentLength = 0;
+
+ StreamWriter stOut = new StreamWriter(DeleteSession.GetRequestStream(), System.Text.Encoding.ASCII);
+ stOut.Write("");
+ stOut.Close();
+
+ StreamReader stIn = new StreamReader(DeleteSession.GetResponse().GetResponseStream());
+ string GridResponse = stIn.ReadToEnd();
+ stIn.Close();
+ return (true);
+ }
+
+ public override UUIDBlock RequestUUIDBlock()
+ {
+ UUIDBlock uuidBlock = new UUIDBlock();
+ return (uuidBlock);
+ }
+
+ public override NeighbourInfo[] RequestNeighbours()
+ {
+ return null;
+ }
+
+ public override void SetServerInfo(string ServerUrl, string SendKey, string RecvKey)
+ {
+ this.GridServerUrl = ServerUrl;
+ this.GridSendKey = SendKey;
+ this.GridRecvKey = RecvKey;
+ }
+
+ public override string GetName()
+ {
+ return "Remote";
+ }
+
+ public override void Close()
+ {
+
+ }
+ }
+
+ public class RemoteGridPlugin : IGridPlugin
+ {
+ public RemoteGridPlugin()
+ {
+
+ }
+
+ public IGridServer GetGridServer()
+ {
+ return (new RemoteGridServer());
+ }
+ }
+
+}
--
cgit v1.1