diff options
author | MW | 2007-06-27 15:28:52 +0000 |
---|---|---|
committer | MW | 2007-06-27 15:28:52 +0000 |
commit | 646bbbc84b8010e0dacbeed5342cdb045f46cc49 (patch) | |
tree | 770b34d19855363c3c113ab9a0af9a56d821d887 /OpenSim/Framework | |
download | opensim-SC-646bbbc84b8010e0dacbeed5342cdb045f46cc49.zip opensim-SC-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.gz opensim-SC-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.bz2 opensim-SC-646bbbc84b8010e0dacbeed5342cdb045f46cc49.tar.xz |
Some work on restructuring the namespaces / project names. Note this doesn't compile yet as not all the code has been changed to use the new namespaces. Am committing it now for feedback on the namespaces.
Diffstat (limited to 'OpenSim/Framework')
110 files changed, 12378 insertions, 0 deletions
diff --git a/OpenSim/Framework/Communications.OGS1/GridCommsManager.cs b/OpenSim/Framework/Communications.OGS1/GridCommsManager.cs new file mode 100644 index 0000000..6687380 --- /dev/null +++ b/OpenSim/Framework/Communications.OGS1/GridCommsManager.cs | |||
@@ -0,0 +1,18 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using OpenSim.Framework.Types; | ||
5 | using OpenSim.Framework.Communications; | ||
6 | namespace OpenSim.Framework.Communications.OGS1 | ||
7 | { | ||
8 | public class GridCommsManager : CommunicationsManager | ||
9 | { | ||
10 | private OGS1GridServices gridInterComms = new OGS1GridServices(); | ||
11 | public GridCommsManager(NetworkServersInfo serversInfo) :base(serversInfo) | ||
12 | { | ||
13 | GridServer = gridInterComms; | ||
14 | InterRegion = gridInterComms; | ||
15 | UserServer = new OGSUserServices(); | ||
16 | } | ||
17 | } | ||
18 | } | ||
diff --git a/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs b/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs new file mode 100644 index 0000000..408643f --- /dev/null +++ b/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs | |||
@@ -0,0 +1,248 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Collections; | ||
4 | using System.Text; | ||
5 | using System.Runtime.Remoting; | ||
6 | using System.Runtime.Remoting.Channels; | ||
7 | using System.Runtime.Remoting.Channels.Tcp; | ||
8 | |||
9 | using OpenSim.Servers; | ||
10 | using OpenSim.Framework; | ||
11 | using OpenSim.Framework.Types; | ||
12 | using OpenSim.Framework.Communications; | ||
13 | |||
14 | using Nwc.XmlRpc; | ||
15 | using libsecondlife; | ||
16 | |||
17 | namespace OpenSim.Framework.Communications.OGS1 | ||
18 | { | ||
19 | public class OGS1GridServices : IGridServices, IInterRegionCommunications | ||
20 | { | ||
21 | public Dictionary<ulong, RegionCommsListener> listeners = new Dictionary<ulong, RegionCommsListener>(); | ||
22 | public GridInfo grid; | ||
23 | public BaseHttpServer httpListener; | ||
24 | private bool initialised = false; | ||
25 | |||
26 | public RegionCommsListener RegisterRegion(RegionInfo regionInfo, GridInfo gridInfo) | ||
27 | { | ||
28 | Hashtable GridParams = new Hashtable(); | ||
29 | |||
30 | grid = gridInfo; | ||
31 | |||
32 | // Login / Authentication | ||
33 | GridParams["authkey"] = gridInfo.GridServerSendKey; | ||
34 | GridParams["UUID"] = regionInfo.SimUUID.ToStringHyphenated(); | ||
35 | GridParams["sim_ip"] = regionInfo.CommsExternalAddress; | ||
36 | GridParams["sim_port"] = regionInfo.CommsIPListenPort.ToString(); | ||
37 | |||
38 | // Package into an XMLRPC Request | ||
39 | ArrayList SendParams = new ArrayList(); | ||
40 | SendParams.Add(GridParams); | ||
41 | |||
42 | // Send Request | ||
43 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); | ||
44 | XmlRpcResponse GridResp = GridReq.Send(gridInfo.GridServerURI, 3000); | ||
45 | Hashtable GridRespData = (Hashtable)GridResp.Value; | ||
46 | Hashtable griddatahash = GridRespData; | ||
47 | |||
48 | // Process Response | ||
49 | if (GridRespData.ContainsKey("error")) | ||
50 | { | ||
51 | string errorstring = (string)GridRespData["error"]; | ||
52 | OpenSim.Framework.Console.MainLog.Instance.Error("Unable to connect to grid: " + errorstring); | ||
53 | return null; | ||
54 | } | ||
55 | |||
56 | if (!this.listeners.ContainsKey(regionInfo.RegionHandle)) | ||
57 | { | ||
58 | // initialised = true; | ||
59 | httpListener = new BaseHttpServer(regionInfo.CommsIPListenPort); | ||
60 | httpListener.AddXmlRPCHandler("expect_user", this.ExpectUser); | ||
61 | httpListener.Start(); | ||
62 | } | ||
63 | |||
64 | // Initialise the background listeners | ||
65 | listeners[regionInfo.RegionHandle] = new RegionCommsListener(); | ||
66 | |||
67 | return listeners[regionInfo.RegionHandle]; | ||
68 | } | ||
69 | |||
70 | public List<RegionInfo> RequestNeighbours(RegionInfo regionInfo) | ||
71 | { | ||
72 | Hashtable respData = MapBlockQuery((int)regionInfo.RegionLocX - 1, (int)regionInfo.RegionLocY - 1, (int)regionInfo.RegionLocX + 1, (int)regionInfo.RegionLocY + 1); | ||
73 | |||
74 | List<RegionInfo> neighbours = new List<RegionInfo>(); | ||
75 | |||
76 | foreach (Hashtable n in (Hashtable)respData.Values) | ||
77 | { | ||
78 | RegionInfo neighbour = new RegionInfo(); | ||
79 | |||
80 | //OGS1 | ||
81 | neighbour.RegionHandle = (ulong)n["regionhandle"]; | ||
82 | neighbour.RegionLocX = (uint)n["x"]; | ||
83 | neighbour.RegionLocY = (uint)n["y"]; | ||
84 | neighbour.RegionName = (string)n["name"]; | ||
85 | |||
86 | //OGS1+ | ||
87 | neighbour.CommsIPListenAddr = (string)n["sim_ip"]; | ||
88 | neighbour.CommsIPListenPort = (int)n["sim_port"]; | ||
89 | neighbour.CommsExternalAddress = (string)n["sim_uri"]; | ||
90 | neighbour.SimUUID = (string)n["uuid"]; | ||
91 | |||
92 | neighbours.Add(neighbour); | ||
93 | } | ||
94 | |||
95 | return neighbours; | ||
96 | } | ||
97 | |||
98 | public RegionInfo RequestNeighbourInfo(ulong regionHandle) | ||
99 | { | ||
100 | OpenSim.Framework.Console.MainLog.Instance.Warn("Unimplemented - RequestNeighbourInfo()"); | ||
101 | return null; | ||
102 | } | ||
103 | |||
104 | public List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY) | ||
105 | { | ||
106 | Hashtable respData = MapBlockQuery(minX, minY, maxX, maxY); | ||
107 | |||
108 | List<MapBlockData> neighbours = new List<MapBlockData>(); | ||
109 | |||
110 | foreach (Hashtable n in (Hashtable)respData.Values) | ||
111 | { | ||
112 | MapBlockData neighbour = new MapBlockData(); | ||
113 | |||
114 | neighbour.X = (ushort)n["x"]; | ||
115 | neighbour.Y = (ushort)n["y"]; | ||
116 | |||
117 | neighbour.Name = (string)n["name"]; | ||
118 | neighbour.Access = (byte)n["access"]; | ||
119 | neighbour.RegionFlags = (uint)n["region-flags"]; | ||
120 | neighbour.WaterHeight = (byte)n["water-height"]; | ||
121 | neighbour.MapImageId = (string)n["map-image-id"]; | ||
122 | |||
123 | neighbours.Add(neighbour); | ||
124 | } | ||
125 | |||
126 | return neighbours; | ||
127 | } | ||
128 | |||
129 | /// <summary> | ||
130 | /// Performs a XML-RPC query against the grid server returning mapblock information in the specified coordinates | ||
131 | /// </summary> | ||
132 | /// <remarks>REDUNDANT - OGS1 is to be phased out in favour of OGS2</remarks> | ||
133 | /// <param name="minX">Minimum X value</param> | ||
134 | /// <param name="minY">Minimum Y value</param> | ||
135 | /// <param name="maxX">Maximum X value</param> | ||
136 | /// <param name="maxY">Maximum Y value</param> | ||
137 | /// <returns>Hashtable of hashtables containing map data elements</returns> | ||
138 | private Hashtable MapBlockQuery(int minX, int minY, int maxX, int maxY) | ||
139 | { | ||
140 | Hashtable param = new Hashtable(); | ||
141 | param["xmin"] = minX; | ||
142 | param["ymin"] = minY; | ||
143 | param["xmax"] = maxX; | ||
144 | param["ymax"] = maxY; | ||
145 | IList parameters = new ArrayList(); | ||
146 | parameters.Add(param); | ||
147 | XmlRpcRequest req = new XmlRpcRequest("map_block", parameters); | ||
148 | XmlRpcResponse resp = req.Send(grid.GridServerURI, 3000); | ||
149 | Hashtable respData = (Hashtable)resp.Value; | ||
150 | return respData; | ||
151 | } | ||
152 | |||
153 | // Grid Request Processing | ||
154 | public XmlRpcResponse ExpectUser(XmlRpcRequest request) | ||
155 | { | ||
156 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
157 | AgentCircuitData agentData = new AgentCircuitData(); | ||
158 | agentData.SessionID = new LLUUID((string)requestData["session_id"]); | ||
159 | agentData.SecureSessionID = new LLUUID((string)requestData["secure_session_id"]); | ||
160 | agentData.firstname = (string)requestData["firstname"]; | ||
161 | agentData.lastname = (string)requestData["lastname"]; | ||
162 | agentData.AgentID = new LLUUID((string)requestData["agent_id"]); | ||
163 | agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]); | ||
164 | if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1")) | ||
165 | { | ||
166 | agentData.child = true; | ||
167 | } | ||
168 | else | ||
169 | { | ||
170 | agentData.startpos = new LLVector3(Convert.ToUInt32(requestData["startpos_x"]), Convert.ToUInt32(requestData["startpos_y"]), Convert.ToUInt32(requestData["startpos_z"])); | ||
171 | agentData.child = false; | ||
172 | |||
173 | } | ||
174 | |||
175 | if (listeners.ContainsKey((ulong)requestData["regionhandle"])) | ||
176 | { | ||
177 | this.listeners[(ulong)requestData["regionhandle"]].TriggerExpectUser((ulong)requestData["regionhandle"], agentData); | ||
178 | } | ||
179 | else | ||
180 | { | ||
181 | OpenSim.Framework.Console.MainLog.Instance.Error("ExpectUser() - Unknown region " + ((ulong)requestData["regionhandle"]).ToString()); | ||
182 | } | ||
183 | |||
184 | return new XmlRpcResponse(); | ||
185 | } | ||
186 | |||
187 | #region InterRegion Comms | ||
188 | private void StartRemoting() | ||
189 | { | ||
190 | TcpChannel ch = new TcpChannel(8895); | ||
191 | ChannelServices.RegisterChannel(ch); | ||
192 | |||
193 | WellKnownServiceTypeEntry wellType = new WellKnownServiceTypeEntry( Type.GetType("OGS1InterRegionRemoting"), "InterRegions", WellKnownObjectMode.Singleton); | ||
194 | RemotingConfiguration.RegisterWellKnownServiceType(wellType); | ||
195 | InterRegionSingleton.Instance.OnArrival += this.IncomingArrival; | ||
196 | InterRegionSingleton.Instance.OnChildAgent += this.IncomingChildAgent; | ||
197 | } | ||
198 | |||
199 | #region Methods called by regions in this instance | ||
200 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) | ||
201 | { | ||
202 | if (this.listeners.ContainsKey(regionHandle)) | ||
203 | { | ||
204 | this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData); | ||
205 | return true; | ||
206 | } | ||
207 | //TODO need to see if we know about where this region is and use .net remoting | ||
208 | // to inform it. | ||
209 | return false; | ||
210 | } | ||
211 | |||
212 | public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position) | ||
213 | { | ||
214 | if (this.listeners.ContainsKey(regionHandle)) | ||
215 | { | ||
216 | this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); | ||
217 | return true; | ||
218 | } | ||
219 | //TODO need to see if we know about where this region is and use .net remoting | ||
220 | // to inform it. | ||
221 | return false; | ||
222 | } | ||
223 | #endregion | ||
224 | |||
225 | #region Methods triggered by calls from external instances | ||
226 | public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) | ||
227 | { | ||
228 | if (this.listeners.ContainsKey(regionHandle)) | ||
229 | { | ||
230 | this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData); | ||
231 | return true; | ||
232 | } | ||
233 | return false; | ||
234 | } | ||
235 | |||
236 | public bool IncomingArrival(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position) | ||
237 | { | ||
238 | if (this.listeners.ContainsKey(regionHandle)) | ||
239 | { | ||
240 | this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); | ||
241 | return true; | ||
242 | } | ||
243 | return false; | ||
244 | } | ||
245 | #endregion | ||
246 | #endregion | ||
247 | } | ||
248 | } | ||
diff --git a/OpenSim/Framework/Communications.OGS1/OGSInterSimComms.cs b/OpenSim/Framework/Communications.OGS1/OGSInterSimComms.cs new file mode 100644 index 0000000..8ba257e --- /dev/null +++ b/OpenSim/Framework/Communications.OGS1/OGSInterSimComms.cs | |||
@@ -0,0 +1,70 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using OpenSim.Framework.Types; | ||
5 | using OpenSim.Framework.Communications; | ||
6 | namespace OpenSim.Framework.Communications.OGS1 | ||
7 | { | ||
8 | public delegate bool InformRegionChild(ulong regionHandle, AgentCircuitData agentData); | ||
9 | public delegate bool ExpectArrival(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position); | ||
10 | |||
11 | public sealed class InterRegionSingleton | ||
12 | { | ||
13 | static readonly InterRegionSingleton instance = new InterRegionSingleton(); | ||
14 | |||
15 | public event InformRegionChild OnChildAgent; | ||
16 | public event ExpectArrival OnArrival; | ||
17 | |||
18 | static InterRegionSingleton() | ||
19 | { | ||
20 | } | ||
21 | |||
22 | InterRegionSingleton() | ||
23 | { | ||
24 | } | ||
25 | |||
26 | public static InterRegionSingleton Instance | ||
27 | { | ||
28 | get | ||
29 | { | ||
30 | return instance; | ||
31 | } | ||
32 | } | ||
33 | |||
34 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) | ||
35 | { | ||
36 | if (OnChildAgent != null) | ||
37 | { | ||
38 | return OnChildAgent(regionHandle, agentData); | ||
39 | } | ||
40 | return false; | ||
41 | } | ||
42 | |||
43 | public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position) | ||
44 | { | ||
45 | if (OnArrival != null) | ||
46 | { | ||
47 | return OnArrival(regionHandle, agentID, position); | ||
48 | } | ||
49 | return false; | ||
50 | } | ||
51 | } | ||
52 | |||
53 | public class OGS1InterRegionRemoting : MarshalByRefObject | ||
54 | { | ||
55 | |||
56 | public OGS1InterRegionRemoting() | ||
57 | { | ||
58 | } | ||
59 | |||
60 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) | ||
61 | { | ||
62 | return InterRegionSingleton.Instance.InformRegionOfChildAgent(regionHandle, agentData); | ||
63 | } | ||
64 | |||
65 | public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position) | ||
66 | { | ||
67 | return InterRegionSingleton.Instance.ExpectAvatarCrossing(regionHandle, agentID, position); | ||
68 | } | ||
69 | } | ||
70 | } | ||
diff --git a/OpenSim/Framework/Communications.OGS1/OGSUserServices.cs b/OpenSim/Framework/Communications.OGS1/OGSUserServices.cs new file mode 100644 index 0000000..ff5fbbb --- /dev/null +++ b/OpenSim/Framework/Communications.OGS1/OGSUserServices.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using OpenSim.Framework.Communications; | ||
5 | using OpenSim.Framework.Data; | ||
6 | using libsecondlife; | ||
7 | |||
8 | namespace OpenSim.Framework.Communications.OGS1 | ||
9 | { | ||
10 | public class OGSUserServices :IUserServices | ||
11 | { | ||
12 | public UserProfileData GetUserProfile(string firstName, string lastName) | ||
13 | { | ||
14 | return null; | ||
15 | } | ||
16 | public UserProfileData GetUserProfile(string name) | ||
17 | { | ||
18 | return null; | ||
19 | } | ||
20 | public UserProfileData GetUserProfile(LLUUID avatarID) | ||
21 | { | ||
22 | return null; | ||
23 | } | ||
24 | } | ||
25 | } | ||
diff --git a/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj new file mode 100644 index 0000000..3985ee5 --- /dev/null +++ b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj | |||
@@ -0,0 +1,142 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{6109024D-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Communications.OGS1</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Communications.OGS1</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="libsecondlife.dll" > | ||
62 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="System" > | ||
66 | <HintPath>System.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System.Data" > | ||
70 | <HintPath>System.Data.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="System.Runtime.Remoting" > | ||
74 | <HintPath>System.Runtime.Remoting.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | <Reference Include="System.Xml" > | ||
78 | <HintPath>System.Xml.dll</HintPath> | ||
79 | <Private>False</Private> | ||
80 | </Reference> | ||
81 | <Reference Include="XMLRPC.dll" > | ||
82 | <HintPath>..\..\..\bin\XMLRPC.dll</HintPath> | ||
83 | <Private>False</Private> | ||
84 | </Reference> | ||
85 | </ItemGroup> | ||
86 | <ItemGroup> | ||
87 | <ProjectReference Include="..\General\OpenSim.Framework.csproj"> | ||
88 | <Name>OpenSim.Framework</Name> | ||
89 | <Project>{8ACA2445-0000-0000-0000-000000000000}</Project> | ||
90 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
91 | <Private>False</Private> | ||
92 | </ProjectReference> | ||
93 | <ProjectReference Include="..\Communications\OpenSim.Framework.Communications.csproj"> | ||
94 | <Name>OpenSim.Framework.Communications</Name> | ||
95 | <Project>{CB52B7E7-0000-0000-0000-000000000000}</Project> | ||
96 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
97 | <Private>False</Private> | ||
98 | </ProjectReference> | ||
99 | <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj"> | ||
100 | <Name>OpenSim.Framework.Console</Name> | ||
101 | <Project>{A7CD0630-0000-0000-0000-000000000000}</Project> | ||
102 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
103 | <Private>False</Private> | ||
104 | </ProjectReference> | ||
105 | <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj"> | ||
106 | <Name>OpenSim.Framework.Data</Name> | ||
107 | <Project>{36B72A9B-0000-0000-0000-000000000000}</Project> | ||
108 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
109 | <Private>False</Private> | ||
110 | </ProjectReference> | ||
111 | <ProjectReference Include="..\Servers\OpenSim.Framework.Servers.csproj"> | ||
112 | <Name>OpenSim.Framework.Servers</Name> | ||
113 | <Project>{2CC71860-0000-0000-0000-000000000000}</Project> | ||
114 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
115 | <Private>False</Private> | ||
116 | </ProjectReference> | ||
117 | </ItemGroup> | ||
118 | <ItemGroup> | ||
119 | <Compile Include="GridCommsManager.cs"> | ||
120 | <SubType>Code</SubType> | ||
121 | </Compile> | ||
122 | <Compile Include="OGS1GridServices.cs"> | ||
123 | <SubType>Code</SubType> | ||
124 | </Compile> | ||
125 | <Compile Include="OGSInterSimComms.cs"> | ||
126 | <SubType>Code</SubType> | ||
127 | </Compile> | ||
128 | <Compile Include="OGSUserServices.cs"> | ||
129 | <SubType>Code</SubType> | ||
130 | </Compile> | ||
131 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
132 | <SubType>Code</SubType> | ||
133 | </Compile> | ||
134 | </ItemGroup> | ||
135 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
136 | <PropertyGroup> | ||
137 | <PreBuildEvent> | ||
138 | </PreBuildEvent> | ||
139 | <PostBuildEvent> | ||
140 | </PostBuildEvent> | ||
141 | </PropertyGroup> | ||
142 | </Project> | ||
diff --git a/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj.user b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Communications.OGS1/OpenSim.Framework.Communications.OGS1.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Communications.OGS1/Properties/AssemblyInfo.cs b/OpenSim/Framework/Communications.OGS1/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0c6f965 --- /dev/null +++ b/OpenSim/Framework/Communications.OGS1/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenGrid.Framework.Communications.OGS1")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenGrid.Framework.Communications.OGS1")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("a8b2b39b-c83b-41e2-b0b5-7ccfc1fddae7")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | // You can specify all the values or you can default the Revision and Build Numbers | ||
33 | // by using the '*' as shown below: | ||
34 | [assembly: AssemblyVersion("1.0.0.0")] | ||
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs new file mode 100644 index 0000000..74d12d2 --- /dev/null +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Framework; | ||
33 | using OpenSim.Framework.Interfaces; | ||
34 | using OpenSim.Framework.Types; | ||
35 | using libsecondlife; | ||
36 | |||
37 | namespace OpenSim.Framework.Communications | ||
38 | { | ||
39 | |||
40 | public class CommunicationsManager | ||
41 | { | ||
42 | public IUserServices UserServer; | ||
43 | public IGridServices GridServer; | ||
44 | public IInterRegionCommunications InterRegion; | ||
45 | |||
46 | public CommunicationsManager(NetworkServersInfo serversInfo) | ||
47 | { | ||
48 | |||
49 | } | ||
50 | } | ||
51 | } | ||
diff --git a/OpenSim/Framework/Communications/IGridServices.cs b/OpenSim/Framework/Communications/IGridServices.cs new file mode 100644 index 0000000..a4812fb --- /dev/null +++ b/OpenSim/Framework/Communications/IGridServices.cs | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Framework.Types; | ||
33 | using OpenSim.Framework; | ||
34 | |||
35 | namespace OpenSim.Framework.Communications | ||
36 | { | ||
37 | public class GridInfo | ||
38 | { | ||
39 | public string GridServerURI = "http://grid.deepgrid.com:8001/"; // Temporarily hardcoded. | ||
40 | public string GridServerSendKey = "badger"; | ||
41 | public string GridServerRecvKey = "badger"; | ||
42 | } | ||
43 | |||
44 | public interface IGridServices | ||
45 | { | ||
46 | RegionCommsListener RegisterRegion(RegionInfo regionInfo, GridInfo gridInfo); | ||
47 | List<RegionInfo> RequestNeighbours(RegionInfo regionInfo); | ||
48 | RegionInfo RequestNeighbourInfo(ulong regionHandle); | ||
49 | List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY); | ||
50 | } | ||
51 | } | ||
diff --git a/OpenSim/Framework/Communications/IInterRegionCommunications.cs b/OpenSim/Framework/Communications/IInterRegionCommunications.cs new file mode 100644 index 0000000..7b0d340 --- /dev/null +++ b/OpenSim/Framework/Communications/IInterRegionCommunications.cs | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Types; | ||
32 | using OpenSim.Framework; | ||
33 | |||
34 | namespace OpenSim.Framework.Communications | ||
35 | { | ||
36 | public interface IInterRegionCommunications | ||
37 | { | ||
38 | bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData); | ||
39 | bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position); | ||
40 | } | ||
41 | } | ||
diff --git a/OpenSim/Framework/Communications/IUserServices.cs b/OpenSim/Framework/Communications/IUserServices.cs new file mode 100644 index 0000000..6790651 --- /dev/null +++ b/OpenSim/Framework/Communications/IUserServices.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | using OpenSim.Framework.Data; | ||
34 | |||
35 | namespace OpenSim.Framework.Communications | ||
36 | { | ||
37 | public interface IUserServices | ||
38 | { | ||
39 | UserProfileData GetUserProfile(string firstName, string lastName); | ||
40 | UserProfileData GetUserProfile(string name); | ||
41 | UserProfileData GetUserProfile(LLUUID avatarID); | ||
42 | |||
43 | } | ||
44 | } | ||
diff --git a/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj new file mode 100644 index 0000000..31ab172 --- /dev/null +++ b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj | |||
@@ -0,0 +1,112 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{CB52B7E7-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Communications</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Communications</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="libsecondlife.dll" > | ||
62 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="System" > | ||
66 | <HintPath>System.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System.Xml" > | ||
70 | <HintPath>System.Xml.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | </ItemGroup> | ||
74 | <ItemGroup> | ||
75 | <ProjectReference Include="..\General\OpenSim.Framework.csproj"> | ||
76 | <Name>OpenSim.Framework</Name> | ||
77 | <Project>{8ACA2445-0000-0000-0000-000000000000}</Project> | ||
78 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
79 | <Private>False</Private> | ||
80 | </ProjectReference> | ||
81 | <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj"> | ||
82 | <Name>OpenSim.Framework.Data</Name> | ||
83 | <Project>{36B72A9B-0000-0000-0000-000000000000}</Project> | ||
84 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
85 | <Private>False</Private> | ||
86 | </ProjectReference> | ||
87 | </ItemGroup> | ||
88 | <ItemGroup> | ||
89 | <Compile Include="CommunicationsManager.cs"> | ||
90 | <SubType>Code</SubType> | ||
91 | </Compile> | ||
92 | <Compile Include="IGridServices.cs"> | ||
93 | <SubType>Code</SubType> | ||
94 | </Compile> | ||
95 | <Compile Include="IInterRegionCommunications.cs"> | ||
96 | <SubType>Code</SubType> | ||
97 | </Compile> | ||
98 | <Compile Include="IUserServices.cs"> | ||
99 | <SubType>Code</SubType> | ||
100 | </Compile> | ||
101 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
102 | <SubType>Code</SubType> | ||
103 | </Compile> | ||
104 | </ItemGroup> | ||
105 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
106 | <PropertyGroup> | ||
107 | <PreBuildEvent> | ||
108 | </PreBuildEvent> | ||
109 | <PostBuildEvent> | ||
110 | </PostBuildEvent> | ||
111 | </PropertyGroup> | ||
112 | </Project> | ||
diff --git a/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj.user b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Communications/OpenSim.Framework.Communications.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs b/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..83e7dd4 --- /dev/null +++ b/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,62 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System.Reflection; | ||
29 | using System.Runtime.CompilerServices; | ||
30 | using System.Runtime.InteropServices; | ||
31 | |||
32 | // General Information about an assembly is controlled through the following | ||
33 | // set of attributes. Change these attribute values to modify the information | ||
34 | // associated with an assembly. | ||
35 | [assembly: AssemblyTitle("OpenGrid.Framework.Communications")] | ||
36 | [assembly: AssemblyDescription("")] | ||
37 | [assembly: AssemblyConfiguration("")] | ||
38 | [assembly: AssemblyCompany("")] | ||
39 | [assembly: AssemblyProduct("OpenGrid.Framework.Communications")] | ||
40 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
41 | [assembly: AssemblyTrademark("")] | ||
42 | [assembly: AssemblyCulture("")] | ||
43 | |||
44 | // Setting ComVisible to false makes the types in this assembly not visible | ||
45 | // to COM components. If you need to access a type in this assembly from | ||
46 | // COM, set the ComVisible attribute to true on that type. | ||
47 | [assembly: ComVisible(false)] | ||
48 | |||
49 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
50 | [assembly: Guid("13e7c396-78a9-4a5c-baf2-6f980ea75d95")] | ||
51 | |||
52 | // Version information for an assembly consists of the following four values: | ||
53 | // | ||
54 | // Major Version | ||
55 | // Minor Version | ||
56 | // Build Number | ||
57 | // Revision | ||
58 | // | ||
59 | // You can specify all the values or you can default the Revision and Build Numbers | ||
60 | // by using the '*' as shown below: | ||
61 | [assembly: AssemblyVersion("1.0.0.0")] | ||
62 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/Console/AssemblyInfo.cs b/OpenSim/Framework/Console/AssemblyInfo.cs new file mode 100644 index 0000000..8f715d2 --- /dev/null +++ b/OpenSim/Framework/Console/AssemblyInfo.cs | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System.Reflection; | ||
29 | using System.Runtime.CompilerServices; | ||
30 | using System.Runtime.InteropServices; | ||
31 | |||
32 | // Information about this assembly is defined by the following | ||
33 | // attributes. | ||
34 | // | ||
35 | // change them to the information which is associated with the assembly | ||
36 | // you compile. | ||
37 | |||
38 | [assembly: AssemblyTitle("ServerConsole")] | ||
39 | [assembly: AssemblyDescription("")] | ||
40 | [assembly: AssemblyConfiguration("")] | ||
41 | [assembly: AssemblyCompany("")] | ||
42 | [assembly: AssemblyProduct("ServerConsole")] | ||
43 | [assembly: AssemblyCopyright("")] | ||
44 | [assembly: AssemblyTrademark("")] | ||
45 | [assembly: AssemblyCulture("")] | ||
46 | |||
47 | // This sets the default COM visibility of types in the assembly to invisible. | ||
48 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. | ||
49 | [assembly: ComVisible(false)] | ||
50 | |||
51 | // The assembly version has following format : | ||
52 | // | ||
53 | // Major.Minor.Build.Revision | ||
54 | // | ||
55 | // You can specify all values by your own or you can build default build and revision | ||
56 | // numbers with the '*' character (the default): | ||
57 | |||
58 | [assembly: AssemblyVersion("1.0.*")] | ||
diff --git a/OpenSim/Framework/Console/ConsoleCallbacksBase.cs b/OpenSim/Framework/Console/ConsoleCallbacksBase.cs new file mode 100644 index 0000000..e3847be --- /dev/null +++ b/OpenSim/Framework/Console/ConsoleCallbacksBase.cs | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Framework.Console | ||
33 | { | ||
34 | public interface conscmd_callback | ||
35 | { | ||
36 | void RunCmd(string cmd, string[] cmdparams); | ||
37 | void Show(string ShowWhat); | ||
38 | } | ||
39 | } | ||
diff --git a/OpenSim/Framework/Console/LogBase.cs b/OpenSim/Framework/Console/LogBase.cs new file mode 100644 index 0000000..1a92d8e --- /dev/null +++ b/OpenSim/Framework/Console/LogBase.cs | |||
@@ -0,0 +1,238 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.IO; | ||
30 | |||
31 | namespace OpenSim.Framework.Console | ||
32 | { | ||
33 | public enum LogPriority : int | ||
34 | { | ||
35 | CRITICAL, | ||
36 | HIGH, | ||
37 | MEDIUM, | ||
38 | NORMAL, | ||
39 | LOW, | ||
40 | VERBOSE, | ||
41 | EXTRAVERBOSE | ||
42 | } | ||
43 | |||
44 | public class LogBase | ||
45 | { | ||
46 | StreamWriter Log; | ||
47 | public conscmd_callback cmdparser; | ||
48 | public string componentname; | ||
49 | private bool m_silent; | ||
50 | |||
51 | public LogBase(string LogFile, string componentname, conscmd_callback cmdparser, bool silent ) | ||
52 | { | ||
53 | this.componentname = componentname; | ||
54 | this.cmdparser = cmdparser; | ||
55 | this.m_silent = silent; | ||
56 | System.Console.WriteLine("ServerConsole.cs - creating new local console"); | ||
57 | |||
58 | if( String.IsNullOrEmpty( LogFile ) ) | ||
59 | { | ||
60 | LogFile = componentname + ".log"; | ||
61 | } | ||
62 | |||
63 | System.Console.WriteLine("Logs will be saved to current directory in " + LogFile); | ||
64 | Log = File.AppendText(LogFile); | ||
65 | Log.WriteLine("========================================================================"); | ||
66 | Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString()); | ||
67 | } | ||
68 | |||
69 | public void Close() | ||
70 | { | ||
71 | Log.WriteLine("Shutdown at " + DateTime.Now.ToString()); | ||
72 | Log.Close(); | ||
73 | } | ||
74 | |||
75 | public void Write(string format, params object[] args) | ||
76 | { | ||
77 | Notice(format,args); | ||
78 | return; | ||
79 | } | ||
80 | |||
81 | public void WriteLine(LogPriority importance, string format, params object[] args) | ||
82 | { | ||
83 | Log.WriteLine(format, args); | ||
84 | Log.Flush(); | ||
85 | if (!m_silent) | ||
86 | { | ||
87 | System.Console.WriteLine(format, args); | ||
88 | } | ||
89 | return; | ||
90 | } | ||
91 | |||
92 | public void Warn(string format, params object[] args) | ||
93 | { | ||
94 | WriteNewLine(ConsoleColor.Yellow, format, args); | ||
95 | return; | ||
96 | } | ||
97 | |||
98 | public void Notice(string format, params object[] args) | ||
99 | { | ||
100 | WriteNewLine(ConsoleColor.White, format, args); | ||
101 | return; | ||
102 | } | ||
103 | |||
104 | public void Error(string format, params object[] args) | ||
105 | { | ||
106 | WriteNewLine(ConsoleColor.Red, format, args); | ||
107 | return; | ||
108 | } | ||
109 | |||
110 | public void Verbose(string format, params object[] args) | ||
111 | { | ||
112 | WriteNewLine(ConsoleColor.Gray, format, args); | ||
113 | return; | ||
114 | } | ||
115 | |||
116 | public void Status(string format, params object[] args) | ||
117 | { | ||
118 | WriteNewLine(ConsoleColor.Blue, format, args); | ||
119 | return; | ||
120 | } | ||
121 | |||
122 | private void WriteNewLine(System.ConsoleColor color, string format, params object[] args) | ||
123 | { | ||
124 | Log.WriteLine(format, args); | ||
125 | Log.Flush(); | ||
126 | if (!m_silent) | ||
127 | { | ||
128 | try | ||
129 | { | ||
130 | System.Console.ForegroundColor = color; | ||
131 | System.Console.WriteLine(format, args); | ||
132 | System.Console.ResetColor(); | ||
133 | } | ||
134 | catch (System.ArgumentNullException) | ||
135 | { | ||
136 | // Some older systems dont support coloured text. | ||
137 | System.Console.WriteLine(format, args); | ||
138 | } | ||
139 | } | ||
140 | return; | ||
141 | } | ||
142 | |||
143 | public string ReadLine() | ||
144 | { | ||
145 | string TempStr = System.Console.ReadLine(); | ||
146 | Log.WriteLine(TempStr); | ||
147 | return TempStr; | ||
148 | } | ||
149 | |||
150 | public int Read() | ||
151 | { | ||
152 | int TempInt = System.Console.Read(); | ||
153 | Log.Write((char)TempInt); | ||
154 | return TempInt; | ||
155 | } | ||
156 | |||
157 | // Displays a prompt and waits for the user to enter a string, then returns that string | ||
158 | // Done with no echo and suitable for passwords | ||
159 | public string PasswdPrompt(string prompt) | ||
160 | { | ||
161 | // FIXME: Needs to be better abstracted | ||
162 | Log.WriteLine(prompt); | ||
163 | this.Write(prompt); | ||
164 | ConsoleColor oldfg = System.Console.ForegroundColor; | ||
165 | System.Console.ForegroundColor = System.Console.BackgroundColor; | ||
166 | string temp = System.Console.ReadLine(); | ||
167 | System.Console.ForegroundColor = oldfg; | ||
168 | return temp; | ||
169 | } | ||
170 | |||
171 | // Displays a command prompt and waits for the user to enter a string, then returns that string | ||
172 | public string CmdPrompt(string prompt) | ||
173 | { | ||
174 | this.Write(String.Format("{0}: ", prompt)); | ||
175 | return this.ReadLine(); | ||
176 | } | ||
177 | |||
178 | // Displays a command prompt and returns a default value if the user simply presses enter | ||
179 | public string CmdPrompt(string prompt, string defaultresponse) | ||
180 | { | ||
181 | string temp = CmdPrompt(String.Format( "{0} [{1}]", prompt, defaultresponse )); | ||
182 | if (temp == "") | ||
183 | { | ||
184 | return defaultresponse; | ||
185 | } | ||
186 | else | ||
187 | { | ||
188 | return temp; | ||
189 | } | ||
190 | } | ||
191 | |||
192 | // Displays a command prompt and returns a default value, user may only enter 1 of 2 options | ||
193 | public string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB) | ||
194 | { | ||
195 | bool itisdone = false; | ||
196 | string temp = CmdPrompt(prompt, defaultresponse); | ||
197 | while (itisdone == false) | ||
198 | { | ||
199 | if ((temp == OptionA) || (temp == OptionB)) | ||
200 | { | ||
201 | itisdone = true; | ||
202 | } | ||
203 | else | ||
204 | { | ||
205 | Notice("Valid options are " + OptionA + " or " + OptionB); | ||
206 | temp = CmdPrompt(prompt, defaultresponse); | ||
207 | } | ||
208 | } | ||
209 | return temp; | ||
210 | } | ||
211 | |||
212 | // Runs a command with a number of parameters | ||
213 | public Object RunCmd(string Cmd, string[] cmdparams) | ||
214 | { | ||
215 | cmdparser.RunCmd(Cmd, cmdparams); | ||
216 | return null; | ||
217 | } | ||
218 | |||
219 | // Shows data about something | ||
220 | public void ShowCommands(string ShowWhat) | ||
221 | { | ||
222 | cmdparser.Show(ShowWhat); | ||
223 | } | ||
224 | |||
225 | public void MainLogPrompt() | ||
226 | { | ||
227 | string[] tempstrarray; | ||
228 | string tempstr = this.CmdPrompt(this.componentname + "# "); | ||
229 | tempstrarray = tempstr.Split(' '); | ||
230 | string cmd = tempstrarray[0]; | ||
231 | Array.Reverse(tempstrarray); | ||
232 | Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1); | ||
233 | Array.Reverse(tempstrarray); | ||
234 | string[] cmdparams = (string[])tempstrarray; | ||
235 | RunCmd(cmd, cmdparams); | ||
236 | } | ||
237 | } | ||
238 | } | ||
diff --git a/OpenSim/Framework/Console/MainLog.cs b/OpenSim/Framework/Console/MainLog.cs new file mode 100644 index 0000000..d7f945e --- /dev/null +++ b/OpenSim/Framework/Console/MainLog.cs | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | |||
30 | namespace OpenSim.Framework.Console | ||
31 | { | ||
32 | public class MainLog { | ||
33 | |||
34 | private static LogBase instance; | ||
35 | |||
36 | public static LogBase Instance | ||
37 | { | ||
38 | get | ||
39 | { | ||
40 | return instance; | ||
41 | } | ||
42 | set | ||
43 | { | ||
44 | instance = value; | ||
45 | } | ||
46 | } | ||
47 | } | ||
48 | |||
49 | } | ||
diff --git a/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj new file mode 100644 index 0000000..f3dcec5 --- /dev/null +++ b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj | |||
@@ -0,0 +1,89 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{A7CD0630-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Console</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Console</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="System" > | ||
62 | <HintPath>System.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | </ItemGroup> | ||
66 | <ItemGroup> | ||
67 | </ItemGroup> | ||
68 | <ItemGroup> | ||
69 | <Compile Include="AssemblyInfo.cs"> | ||
70 | <SubType>Code</SubType> | ||
71 | </Compile> | ||
72 | <Compile Include="ConsoleCallbacksBase.cs"> | ||
73 | <SubType>Code</SubType> | ||
74 | </Compile> | ||
75 | <Compile Include="LogBase.cs"> | ||
76 | <SubType>Code</SubType> | ||
77 | </Compile> | ||
78 | <Compile Include="MainLog.cs"> | ||
79 | <SubType>Code</SubType> | ||
80 | </Compile> | ||
81 | </ItemGroup> | ||
82 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
83 | <PropertyGroup> | ||
84 | <PreBuildEvent> | ||
85 | </PreBuildEvent> | ||
86 | <PostBuildEvent> | ||
87 | </PostBuildEvent> | ||
88 | </PropertyGroup> | ||
89 | </Project> | ||
diff --git a/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj.user b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Console/OpenSim.Framework.Console.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Data.DB4o/DB4oGridData.cs b/OpenSim/Framework/Data.DB4o/DB4oGridData.cs new file mode 100644 index 0000000..dc8488e --- /dev/null +++ b/OpenSim/Framework/Data.DB4o/DB4oGridData.cs | |||
@@ -0,0 +1,166 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Framework.Data; | ||
33 | using libsecondlife; | ||
34 | |||
35 | |||
36 | namespace OpenSim.Framework.Data.DB4o | ||
37 | { | ||
38 | /// <summary> | ||
39 | /// A grid server storage mechanism employing the DB4o database system | ||
40 | /// </summary> | ||
41 | class DB4oGridData : IGridData | ||
42 | { | ||
43 | /// <summary> | ||
44 | /// The database manager object | ||
45 | /// </summary> | ||
46 | DB4oGridManager manager; | ||
47 | |||
48 | /// <summary> | ||
49 | /// Called when the plugin is first loaded (as constructors are not called) | ||
50 | /// </summary> | ||
51 | public void Initialise() { | ||
52 | manager = new DB4oGridManager("gridserver.yap"); | ||
53 | } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Returns a list of regions within the specified ranges | ||
57 | /// </summary> | ||
58 | /// <param name="a">minimum X coordinate</param> | ||
59 | /// <param name="b">minimum Y coordinate</param> | ||
60 | /// <param name="c">maximum X coordinate</param> | ||
61 | /// <param name="d">maximum Y coordinate</param> | ||
62 | /// <returns>An array of region profiles</returns> | ||
63 | public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) | ||
64 | { | ||
65 | return null; | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Returns a region located at the specified regionHandle (warning multiple regions may occupy the one spot, first found is returned) | ||
70 | /// </summary> | ||
71 | /// <param name="handle">The handle to search for</param> | ||
72 | /// <returns>A region profile</returns> | ||
73 | public SimProfileData GetProfileByHandle(ulong handle) { | ||
74 | lock (manager.simProfiles) | ||
75 | { | ||
76 | foreach (LLUUID UUID in manager.simProfiles.Keys) | ||
77 | { | ||
78 | if (manager.simProfiles[UUID].regionHandle == handle) | ||
79 | { | ||
80 | return manager.simProfiles[UUID]; | ||
81 | } | ||
82 | } | ||
83 | } | ||
84 | throw new Exception("Unable to find profile with handle (" + handle.ToString() + ")"); | ||
85 | } | ||
86 | |||
87 | /// <summary> | ||
88 | /// Returns a specific region | ||
89 | /// </summary> | ||
90 | /// <param name="uuid">The region ID code</param> | ||
91 | /// <returns>A region profile</returns> | ||
92 | public SimProfileData GetProfileByLLUUID(LLUUID uuid) | ||
93 | { | ||
94 | lock (manager.simProfiles) | ||
95 | { | ||
96 | if (manager.simProfiles.ContainsKey(uuid)) | ||
97 | return manager.simProfiles[uuid]; | ||
98 | } | ||
99 | throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + ")"); | ||
100 | } | ||
101 | |||
102 | /// <summary> | ||
103 | /// Adds a new specified region to the database | ||
104 | /// </summary> | ||
105 | /// <param name="profile">The profile to add</param> | ||
106 | /// <returns>A dataresponse enum indicating success</returns> | ||
107 | public DataResponse AddProfile(SimProfileData profile) | ||
108 | { | ||
109 | lock (manager.simProfiles) | ||
110 | { | ||
111 | if (manager.AddRow(profile)) | ||
112 | { | ||
113 | return DataResponse.RESPONSE_OK; | ||
114 | } | ||
115 | else | ||
116 | { | ||
117 | return DataResponse.RESPONSE_ERROR; | ||
118 | } | ||
119 | } | ||
120 | } | ||
121 | |||
122 | /// <summary> | ||
123 | /// Authenticates a new region using the shared secrets. NOT SECURE. | ||
124 | /// </summary> | ||
125 | /// <param name="uuid">The UUID the region is authenticating with</param> | ||
126 | /// <param name="handle">The location the region is logging into (unused in Db4o)</param> | ||
127 | /// <param name="key">The shared secret</param> | ||
128 | /// <returns>Authenticated?</returns> | ||
129 | public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) { | ||
130 | if (manager.simProfiles[uuid].regionRecvKey == key) | ||
131 | return true; | ||
132 | return false; | ||
133 | } | ||
134 | |||
135 | /// <summary> | ||
136 | /// Shuts down the database | ||
137 | /// </summary> | ||
138 | public void Close() | ||
139 | { | ||
140 | manager = null; | ||
141 | } | ||
142 | |||
143 | /// <summary> | ||
144 | /// Returns the providers name | ||
145 | /// </summary> | ||
146 | /// <returns>The name of the storage system</returns> | ||
147 | public string getName() | ||
148 | { | ||
149 | return "DB4o Grid Provider"; | ||
150 | } | ||
151 | |||
152 | /// <summary> | ||
153 | /// Returns the providers version | ||
154 | /// </summary> | ||
155 | /// <returns>The version of the storage system</returns> | ||
156 | public string getVersion() | ||
157 | { | ||
158 | return "0.1"; | ||
159 | } | ||
160 | |||
161 | public ReservationData GetReservationAtPoint(uint x, uint y) | ||
162 | { | ||
163 | return null; | ||
164 | } | ||
165 | } | ||
166 | } | ||
diff --git a/OpenSim/Framework/Data.DB4o/DB4oManager.cs b/OpenSim/Framework/Data.DB4o/DB4oManager.cs new file mode 100644 index 0000000..3870a8c --- /dev/null +++ b/OpenSim/Framework/Data.DB4o/DB4oManager.cs | |||
@@ -0,0 +1,165 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using Db4objects.Db4o; | ||
32 | using OpenSim.Framework.Data; | ||
33 | using libsecondlife; | ||
34 | |||
35 | namespace OpenSim.Framework.Data.DB4o | ||
36 | { | ||
37 | /// <summary> | ||
38 | /// A Database manager for Db4o | ||
39 | /// </summary> | ||
40 | class DB4oGridManager | ||
41 | { | ||
42 | /// <summary> | ||
43 | /// A list of the current regions connected (in-memory cache) | ||
44 | /// </summary> | ||
45 | public Dictionary<LLUUID, SimProfileData> simProfiles = new Dictionary<LLUUID, SimProfileData>(); | ||
46 | /// <summary> | ||
47 | /// Database File Name | ||
48 | /// </summary> | ||
49 | string dbfl; | ||
50 | |||
51 | /// <summary> | ||
52 | /// Creates a new grid storage manager | ||
53 | /// </summary> | ||
54 | /// <param name="db4odb">Filename to the database file</param> | ||
55 | public DB4oGridManager(string db4odb) | ||
56 | { | ||
57 | dbfl = db4odb; | ||
58 | IObjectContainer database; | ||
59 | database = Db4oFactory.OpenFile(dbfl); | ||
60 | IObjectSet result = database.Get(typeof(SimProfileData)); | ||
61 | // Loads the file into the in-memory cache | ||
62 | foreach(SimProfileData row in result) { | ||
63 | simProfiles.Add(row.UUID, row); | ||
64 | } | ||
65 | database.Close(); | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Adds a new profile to the database (Warning: Probably slow.) | ||
70 | /// </summary> | ||
71 | /// <param name="row">The profile to add</param> | ||
72 | /// <returns>Successful?</returns> | ||
73 | public bool AddRow(SimProfileData row) | ||
74 | { | ||
75 | if (simProfiles.ContainsKey(row.UUID)) | ||
76 | { | ||
77 | simProfiles[row.UUID] = row; | ||
78 | } | ||
79 | else | ||
80 | { | ||
81 | simProfiles.Add(row.UUID, row); | ||
82 | } | ||
83 | |||
84 | try | ||
85 | { | ||
86 | IObjectContainer database; | ||
87 | database = Db4oFactory.OpenFile(dbfl); | ||
88 | database.Set(row); | ||
89 | database.Close(); | ||
90 | return true; | ||
91 | } | ||
92 | catch (Exception e) | ||
93 | { | ||
94 | return false; | ||
95 | } | ||
96 | } | ||
97 | |||
98 | |||
99 | } | ||
100 | |||
101 | /// <summary> | ||
102 | /// A manager for the DB4o database (user profiles) | ||
103 | /// </summary> | ||
104 | class DB4oUserManager | ||
105 | { | ||
106 | /// <summary> | ||
107 | /// A list of the user profiles (in memory cache) | ||
108 | /// </summary> | ||
109 | public Dictionary<LLUUID, UserProfileData> userProfiles = new Dictionary<LLUUID, UserProfileData>(); | ||
110 | /// <summary> | ||
111 | /// Database filename | ||
112 | /// </summary> | ||
113 | string dbfl; | ||
114 | |||
115 | /// <summary> | ||
116 | /// Initialises a new DB manager | ||
117 | /// </summary> | ||
118 | /// <param name="db4odb">The filename to the database</param> | ||
119 | public DB4oUserManager(string db4odb) | ||
120 | { | ||
121 | dbfl = db4odb; | ||
122 | IObjectContainer database; | ||
123 | database = Db4oFactory.OpenFile(dbfl); | ||
124 | // Load to cache | ||
125 | IObjectSet result = database.Get(typeof(UserProfileData)); | ||
126 | foreach (UserProfileData row in result) | ||
127 | { | ||
128 | userProfiles.Add(row.UUID, row); | ||
129 | } | ||
130 | database.Close(); | ||
131 | } | ||
132 | |||
133 | /// <summary> | ||
134 | /// Adds a new profile to the database (Warning: Probably slow.) | ||
135 | /// </summary> | ||
136 | /// <param name="row">The profile to add</param> | ||
137 | /// <returns>Successful?</returns> | ||
138 | public bool AddRow(UserProfileData row) | ||
139 | { | ||
140 | if (userProfiles.ContainsKey(row.UUID)) | ||
141 | { | ||
142 | userProfiles[row.UUID] = row; | ||
143 | } | ||
144 | else | ||
145 | { | ||
146 | userProfiles.Add(row.UUID, row); | ||
147 | } | ||
148 | |||
149 | try | ||
150 | { | ||
151 | IObjectContainer database; | ||
152 | database = Db4oFactory.OpenFile(dbfl); | ||
153 | database.Set(row); | ||
154 | database.Close(); | ||
155 | return true; | ||
156 | } | ||
157 | catch (Exception e) | ||
158 | { | ||
159 | return false; | ||
160 | } | ||
161 | } | ||
162 | |||
163 | |||
164 | } | ||
165 | } | ||
diff --git a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs new file mode 100644 index 0000000..8caa75d --- /dev/null +++ b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs | |||
@@ -0,0 +1,205 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Data; | ||
32 | using libsecondlife; | ||
33 | |||
34 | namespace OpenSim.Framework.Data.DB4o | ||
35 | { | ||
36 | /// <summary> | ||
37 | /// A User storage interface for the DB4o database system | ||
38 | /// </summary> | ||
39 | public class DB4oUserData : IUserData | ||
40 | { | ||
41 | /// <summary> | ||
42 | /// The database manager | ||
43 | /// </summary> | ||
44 | DB4oUserManager manager; | ||
45 | |||
46 | /// <summary> | ||
47 | /// Artificial constructor called upon plugin load | ||
48 | /// </summary> | ||
49 | public void Initialise() | ||
50 | { | ||
51 | manager = new DB4oUserManager("userprofiles.yap"); | ||
52 | } | ||
53 | |||
54 | /// <summary> | ||
55 | /// Loads a specified user profile from a UUID | ||
56 | /// </summary> | ||
57 | /// <param name="uuid">The users UUID</param> | ||
58 | /// <returns>A user profile</returns> | ||
59 | public UserProfileData getUserByUUID(LLUUID uuid) | ||
60 | { | ||
61 | if(manager.userProfiles.ContainsKey(uuid)) | ||
62 | return manager.userProfiles[uuid]; | ||
63 | return null; | ||
64 | } | ||
65 | |||
66 | /// <summary> | ||
67 | /// Returns a user by searching for its name | ||
68 | /// </summary> | ||
69 | /// <param name="name">The users account name</param> | ||
70 | /// <returns>A matching users profile</returns> | ||
71 | public UserProfileData getUserByName(string name) | ||
72 | { | ||
73 | return getUserByName(name.Split(' ')[0], name.Split(' ')[1]); | ||
74 | } | ||
75 | |||
76 | /// <summary> | ||
77 | /// Returns a user by searching for its name | ||
78 | /// </summary> | ||
79 | /// <param name="fname">The first part of the users account name</param> | ||
80 | /// <param name="lname">The second part of the users account name</param> | ||
81 | /// <returns>A matching users profile</returns> | ||
82 | public UserProfileData getUserByName(string fname, string lname) | ||
83 | { | ||
84 | foreach (UserProfileData profile in manager.userProfiles.Values) | ||
85 | { | ||
86 | if (profile.username == fname && profile.surname == lname) | ||
87 | return profile; | ||
88 | } | ||
89 | return null; | ||
90 | } | ||
91 | |||
92 | /// <summary> | ||
93 | /// Returns a user by UUID direct | ||
94 | /// </summary> | ||
95 | /// <param name="uuid">The users account ID</param> | ||
96 | /// <returns>A matching users profile</returns> | ||
97 | public UserAgentData getAgentByUUID(LLUUID uuid) | ||
98 | { | ||
99 | try | ||
100 | { | ||
101 | return getUserByUUID(uuid).currentAgent; | ||
102 | } | ||
103 | catch (Exception e) | ||
104 | { | ||
105 | return null; | ||
106 | } | ||
107 | } | ||
108 | |||
109 | /// <summary> | ||
110 | /// Returns a session by account name | ||
111 | /// </summary> | ||
112 | /// <param name="name">The account name</param> | ||
113 | /// <returns>The users session agent</returns> | ||
114 | public UserAgentData getAgentByName(string name) | ||
115 | { | ||
116 | return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]); | ||
117 | } | ||
118 | |||
119 | /// <summary> | ||
120 | /// Returns a session by account name | ||
121 | /// </summary> | ||
122 | /// <param name="fname">The first part of the users account name</param> | ||
123 | /// <param name="lname">The second part of the users account name</param> | ||
124 | /// <returns>A user agent</returns> | ||
125 | public UserAgentData getAgentByName(string fname, string lname) | ||
126 | { | ||
127 | try | ||
128 | { | ||
129 | return getUserByName(fname,lname).currentAgent; | ||
130 | } | ||
131 | catch (Exception e) | ||
132 | { | ||
133 | return null; | ||
134 | } | ||
135 | } | ||
136 | |||
137 | /// <summary> | ||
138 | /// Creates a new user profile | ||
139 | /// </summary> | ||
140 | /// <param name="user">The profile to add to the database</param> | ||
141 | public void addNewUserProfile(UserProfileData user) | ||
142 | { | ||
143 | try | ||
144 | { | ||
145 | manager.AddRow(user); | ||
146 | } | ||
147 | catch (Exception e) | ||
148 | { | ||
149 | Console.WriteLine(e.ToString()); | ||
150 | } | ||
151 | } | ||
152 | |||
153 | /// <summary> | ||
154 | /// Creates a new user agent | ||
155 | /// </summary> | ||
156 | /// <param name="agent">The agent to add to the database</param> | ||
157 | public void addNewUserAgent(UserAgentData agent) | ||
158 | { | ||
159 | // Do nothing. yet. | ||
160 | } | ||
161 | |||
162 | /// <summary> | ||
163 | /// Transfers money between two user accounts | ||
164 | /// </summary> | ||
165 | /// <param name="from">Starting account</param> | ||
166 | /// <param name="to">End account</param> | ||
167 | /// <param name="amount">The amount to move</param> | ||
168 | /// <returns>Success?</returns> | ||
169 | public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount) | ||
170 | { | ||
171 | return true; | ||
172 | } | ||
173 | |||
174 | /// <summary> | ||
175 | /// Transfers inventory between two accounts | ||
176 | /// </summary> | ||
177 | /// <remarks>Move to inventory server</remarks> | ||
178 | /// <param name="from">Senders account</param> | ||
179 | /// <param name="to">Recievers account</param> | ||
180 | /// <param name="item">Inventory item</param> | ||
181 | /// <returns>Success?</returns> | ||
182 | public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item) | ||
183 | { | ||
184 | return true; | ||
185 | } | ||
186 | |||
187 | /// <summary> | ||
188 | /// Returns the name of the storage provider | ||
189 | /// </summary> | ||
190 | /// <returns>Storage provider name</returns> | ||
191 | public string getName() | ||
192 | { | ||
193 | return "DB4o Userdata"; | ||
194 | } | ||
195 | |||
196 | /// <summary> | ||
197 | /// Returns the version of the storage provider | ||
198 | /// </summary> | ||
199 | /// <returns>Storage provider version</returns> | ||
200 | public string getVersion() | ||
201 | { | ||
202 | return "0.1"; | ||
203 | } | ||
204 | } | ||
205 | } | ||
diff --git a/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj new file mode 100644 index 0000000..b09cecf --- /dev/null +++ b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj | |||
@@ -0,0 +1,111 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{FD2D303D-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Data.DB4o</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Data.DB4o</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="Db4objects.Db4o.dll" > | ||
62 | <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="libsecondlife.dll" > | ||
66 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System" > | ||
70 | <HintPath>System.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="System.Data" > | ||
74 | <HintPath>System.Data.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | <Reference Include="System.Xml" > | ||
78 | <HintPath>System.Xml.dll</HintPath> | ||
79 | <Private>False</Private> | ||
80 | </Reference> | ||
81 | </ItemGroup> | ||
82 | <ItemGroup> | ||
83 | <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj"> | ||
84 | <Name>OpenSim.Framework.Data</Name> | ||
85 | <Project>{36B72A9B-0000-0000-0000-000000000000}</Project> | ||
86 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
87 | <Private>False</Private> | ||
88 | </ProjectReference> | ||
89 | </ItemGroup> | ||
90 | <ItemGroup> | ||
91 | <Compile Include="DB4oGridData.cs"> | ||
92 | <SubType>Code</SubType> | ||
93 | </Compile> | ||
94 | <Compile Include="DB4oManager.cs"> | ||
95 | <SubType>Code</SubType> | ||
96 | </Compile> | ||
97 | <Compile Include="DB4oUserData.cs"> | ||
98 | <SubType>Code</SubType> | ||
99 | </Compile> | ||
100 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
101 | <SubType>Code</SubType> | ||
102 | </Compile> | ||
103 | </ItemGroup> | ||
104 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
105 | <PropertyGroup> | ||
106 | <PreBuildEvent> | ||
107 | </PreBuildEvent> | ||
108 | <PostBuildEvent> | ||
109 | </PostBuildEvent> | ||
110 | </PropertyGroup> | ||
111 | </Project> | ||
diff --git a/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj.user b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Data.DB4o/OpenSim.Framework.Data.DB4o.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..dc4a9a1 --- /dev/null +++ b/OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenGrid.Framework.Data.DB4o")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenGrid.Framework.Data.DB4o")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("57991e15-79da-41b7-aa06-2e6b49165a63")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | // You can specify all the values or you can default the Revision and Build Numbers | ||
33 | // by using the '*' as shown below: | ||
34 | [assembly: AssemblyVersion("1.0.0.0")] | ||
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs new file mode 100644 index 0000000..1dac4bd --- /dev/null +++ b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs | |||
@@ -0,0 +1,192 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenGrid.Framework.Data; | ||
32 | |||
33 | namespace OpenGrid.Framework.Data.MSSQL | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// A grid data interface for Microsoft SQL Server | ||
37 | /// </summary> | ||
38 | public class SqlGridData : IGridData | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// Database manager | ||
42 | /// </summary> | ||
43 | private MSSqlManager database; | ||
44 | |||
45 | /// <summary> | ||
46 | /// Initialises the Grid Interface | ||
47 | /// </summary> | ||
48 | public void Initialise() | ||
49 | { | ||
50 | database = new MSSqlManager("localhost", "db", "user", "password", "false"); | ||
51 | } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Shuts down the grid interface | ||
55 | /// </summary> | ||
56 | public void Close() | ||
57 | { | ||
58 | database.Close(); | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Returns the storage system name | ||
63 | /// </summary> | ||
64 | /// <returns>A string containing the storage system name</returns> | ||
65 | public string getName() | ||
66 | { | ||
67 | return "Sql OpenGridData"; | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Returns the storage system version | ||
72 | /// </summary> | ||
73 | /// <returns>A string containing the storage system version</returns> | ||
74 | public string getVersion() | ||
75 | { | ||
76 | return "0.1"; | ||
77 | } | ||
78 | |||
79 | /// <summary> | ||
80 | /// Returns a list of regions within the specified ranges | ||
81 | /// </summary> | ||
82 | /// <param name="a">minimum X coordinate</param> | ||
83 | /// <param name="b">minimum Y coordinate</param> | ||
84 | /// <param name="c">maximum X coordinate</param> | ||
85 | /// <param name="d">maximum Y coordinate</param> | ||
86 | /// <returns>An array of region profiles</returns> | ||
87 | public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) | ||
88 | { | ||
89 | return null; | ||
90 | } | ||
91 | |||
92 | /// <summary> | ||
93 | /// Returns a sim profile from it's location | ||
94 | /// </summary> | ||
95 | /// <param name="handle">Region location handle</param> | ||
96 | /// <returns>Sim profile</returns> | ||
97 | public SimProfileData GetProfileByHandle(ulong handle) | ||
98 | { | ||
99 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
100 | param["handle"] = handle.ToString(); | ||
101 | |||
102 | System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param); | ||
103 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
104 | |||
105 | SimProfileData row = database.getRow(reader); | ||
106 | reader.Close(); | ||
107 | result.Dispose(); | ||
108 | |||
109 | return row; | ||
110 | } | ||
111 | |||
112 | /// <summary> | ||
113 | /// Returns a sim profile from it's UUID | ||
114 | /// </summary> | ||
115 | /// <param name="uuid">The region UUID</param> | ||
116 | /// <returns>The sim profile</returns> | ||
117 | public SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID uuid) | ||
118 | { | ||
119 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
120 | param["uuid"] = uuid.ToStringHyphenated(); | ||
121 | |||
122 | System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); | ||
123 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
124 | |||
125 | SimProfileData row = database.getRow(reader); | ||
126 | reader.Close(); | ||
127 | result.Dispose(); | ||
128 | |||
129 | return row; | ||
130 | } | ||
131 | |||
132 | /// <summary> | ||
133 | /// Adds a new specified region to the database | ||
134 | /// </summary> | ||
135 | /// <param name="profile">The profile to add</param> | ||
136 | /// <returns>A dataresponse enum indicating success</returns> | ||
137 | public DataResponse AddProfile(SimProfileData profile) | ||
138 | { | ||
139 | if (database.insertRow(profile)) | ||
140 | { | ||
141 | return DataResponse.RESPONSE_OK; | ||
142 | } | ||
143 | else | ||
144 | { | ||
145 | return DataResponse.RESPONSE_ERROR; | ||
146 | } | ||
147 | } | ||
148 | |||
149 | /// <summary> | ||
150 | /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret. | ||
151 | /// </summary> | ||
152 | /// <param name="uuid">The UUID of the challenger</param> | ||
153 | /// <param name="handle">The attempted regionHandle of the challenger</param> | ||
154 | /// <param name="authkey">The secret</param> | ||
155 | /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns> | ||
156 | public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authkey) | ||
157 | { | ||
158 | bool throwHissyFit = false; // Should be true by 1.0 | ||
159 | |||
160 | if (throwHissyFit) | ||
161 | throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); | ||
162 | |||
163 | SimProfileData data = GetProfileByLLUUID(uuid); | ||
164 | |||
165 | return (handle == data.regionHandle && authkey == data.regionSecret); | ||
166 | } | ||
167 | |||
168 | /// <summary> | ||
169 | /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region | ||
170 | /// </summary> | ||
171 | /// <remarks>This requires a security audit.</remarks> | ||
172 | /// <param name="uuid"></param> | ||
173 | /// <param name="handle"></param> | ||
174 | /// <param name="authhash"></param> | ||
175 | /// <param name="challenge"></param> | ||
176 | /// <returns></returns> | ||
177 | public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authhash, string challenge) | ||
178 | { | ||
179 | System.Security.Cryptography.SHA512Managed HashProvider = new System.Security.Cryptography.SHA512Managed(); | ||
180 | System.Text.ASCIIEncoding TextProvider = new ASCIIEncoding(); | ||
181 | |||
182 | byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge); | ||
183 | byte[] hash = HashProvider.ComputeHash(stream); | ||
184 | return false; | ||
185 | } | ||
186 | public ReservationData GetReservationAtPoint(uint x, uint y) | ||
187 | { | ||
188 | return null; | ||
189 | } | ||
190 | } | ||
191 | |||
192 | } | ||
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs new file mode 100644 index 0000000..475a3e7 --- /dev/null +++ b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs | |||
@@ -0,0 +1,214 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.Data; | ||
32 | |||
33 | using System.Data.SqlClient; | ||
34 | |||
35 | using OpenGrid.Framework.Data; | ||
36 | |||
37 | namespace OpenGrid.Framework.Data.MSSQL | ||
38 | { | ||
39 | /// <summary> | ||
40 | /// A management class for the MS SQL Storage Engine | ||
41 | /// </summary> | ||
42 | class MSSqlManager | ||
43 | { | ||
44 | /// <summary> | ||
45 | /// The database connection object | ||
46 | /// </summary> | ||
47 | IDbConnection dbcon; | ||
48 | |||
49 | /// <summary> | ||
50 | /// Initialises and creates a new Sql connection and maintains it. | ||
51 | /// </summary> | ||
52 | /// <param name="hostname">The Sql server being connected to</param> | ||
53 | /// <param name="database">The name of the Sql database being used</param> | ||
54 | /// <param name="username">The username logging into the database</param> | ||
55 | /// <param name="password">The password for the user logging in</param> | ||
56 | /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> | ||
57 | public MSSqlManager(string hostname, string database, string username, string password, string cpooling) | ||
58 | { | ||
59 | try | ||
60 | { | ||
61 | string connectionString = "Server=" + hostname + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";"; | ||
62 | dbcon = new SqlConnection(connectionString); | ||
63 | |||
64 | dbcon.Open(); | ||
65 | } | ||
66 | catch (Exception e) | ||
67 | { | ||
68 | throw new Exception("Error initialising Sql Database: " + e.ToString()); | ||
69 | } | ||
70 | } | ||
71 | |||
72 | /// <summary> | ||
73 | /// Shuts down the database connection | ||
74 | /// </summary> | ||
75 | public void Close() | ||
76 | { | ||
77 | dbcon.Close(); | ||
78 | dbcon = null; | ||
79 | } | ||
80 | |||
81 | /// <summary> | ||
82 | /// Runs a query with protection against SQL Injection by using parameterised input. | ||
83 | /// </summary> | ||
84 | /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> | ||
85 | /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param> | ||
86 | /// <returns>A Sql DB Command</returns> | ||
87 | public IDbCommand Query(string sql, Dictionary<string, string> parameters) | ||
88 | { | ||
89 | SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand(); | ||
90 | dbcommand.CommandText = sql; | ||
91 | foreach (KeyValuePair<string, string> param in parameters) | ||
92 | { | ||
93 | dbcommand.Parameters.AddWithValue(param.Key, param.Value); | ||
94 | } | ||
95 | |||
96 | return (IDbCommand)dbcommand; | ||
97 | } | ||
98 | |||
99 | /// <summary> | ||
100 | /// Runs a database reader object and returns a region row | ||
101 | /// </summary> | ||
102 | /// <param name="reader">An active database reader</param> | ||
103 | /// <returns>A region row</returns> | ||
104 | public SimProfileData getRow(IDataReader reader) | ||
105 | { | ||
106 | SimProfileData regionprofile = new SimProfileData(); | ||
107 | |||
108 | if (reader.Read()) | ||
109 | { | ||
110 | // Region Main | ||
111 | regionprofile.regionHandle = (ulong)reader["regionHandle"]; | ||
112 | regionprofile.regionName = (string)reader["regionName"]; | ||
113 | regionprofile.UUID = new libsecondlife.LLUUID((string)reader["uuid"]); | ||
114 | |||
115 | // Secrets | ||
116 | regionprofile.regionRecvKey = (string)reader["regionRecvKey"]; | ||
117 | regionprofile.regionSecret = (string)reader["regionSecret"]; | ||
118 | regionprofile.regionSendKey = (string)reader["regionSendKey"]; | ||
119 | |||
120 | // Region Server | ||
121 | regionprofile.regionDataURI = (string)reader["regionDataURI"]; | ||
122 | regionprofile.regionOnline = false; // Needs to be pinged before this can be set. | ||
123 | regionprofile.serverIP = (string)reader["serverIP"]; | ||
124 | regionprofile.serverPort = (uint)reader["serverPort"]; | ||
125 | regionprofile.serverURI = (string)reader["serverURI"]; | ||
126 | |||
127 | // Location | ||
128 | regionprofile.regionLocX = (uint)((int)reader["locX"]); | ||
129 | regionprofile.regionLocY = (uint)((int)reader["locY"]); | ||
130 | regionprofile.regionLocZ = (uint)((int)reader["locZ"]); | ||
131 | |||
132 | // Neighbours - 0 = No Override | ||
133 | regionprofile.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"]; | ||
134 | regionprofile.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"]; | ||
135 | regionprofile.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"]; | ||
136 | regionprofile.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"]; | ||
137 | |||
138 | // Assets | ||
139 | regionprofile.regionAssetURI = (string)reader["regionAssetURI"]; | ||
140 | regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"]; | ||
141 | regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"]; | ||
142 | |||
143 | // Userserver | ||
144 | regionprofile.regionUserURI = (string)reader["regionUserURI"]; | ||
145 | regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"]; | ||
146 | regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"]; | ||
147 | } | ||
148 | else | ||
149 | { | ||
150 | throw new Exception("No rows to return"); | ||
151 | } | ||
152 | return regionprofile; | ||
153 | } | ||
154 | |||
155 | /// <summary> | ||
156 | /// Creates a new region in the database | ||
157 | /// </summary> | ||
158 | /// <param name="profile">The region profile to insert</param> | ||
159 | /// <returns>Successful?</returns> | ||
160 | public bool insertRow(SimProfileData profile) | ||
161 | { | ||
162 | string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; | ||
163 | sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; | ||
164 | sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES "; | ||
165 | |||
166 | sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, "; | ||
167 | sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, "; | ||
168 | sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);"; | ||
169 | |||
170 | Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||
171 | |||
172 | parameters["regionHandle"] = profile.regionHandle.ToString(); | ||
173 | parameters["regionName"] = profile.regionName; | ||
174 | parameters["uuid"] = profile.UUID.ToString(); | ||
175 | parameters["regionRecvKey"] = profile.regionRecvKey; | ||
176 | parameters["regionSendKey"] = profile.regionSendKey; | ||
177 | parameters["regionDataURI"] = profile.regionDataURI; | ||
178 | parameters["serverIP"] = profile.serverIP; | ||
179 | parameters["serverPort"] = profile.serverPort.ToString(); | ||
180 | parameters["serverURI"] = profile.serverURI; | ||
181 | parameters["locX"] = profile.regionLocX.ToString(); | ||
182 | parameters["locY"] = profile.regionLocY.ToString(); | ||
183 | parameters["locZ"] = profile.regionLocZ.ToString(); | ||
184 | parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString(); | ||
185 | parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString(); | ||
186 | parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString(); | ||
187 | parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString(); | ||
188 | parameters["regionAssetURI"] = profile.regionAssetURI; | ||
189 | parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey; | ||
190 | parameters["regionAssetSendKey"] = profile.regionAssetSendKey; | ||
191 | parameters["regionUserURI"] = profile.regionUserURI; | ||
192 | parameters["regionUserRecvKey"] = profile.regionUserRecvKey; | ||
193 | parameters["regionUserSendKey"] = profile.regionUserSendKey; | ||
194 | |||
195 | bool returnval = false; | ||
196 | |||
197 | try | ||
198 | { | ||
199 | IDbCommand result = Query(sql, parameters); | ||
200 | |||
201 | if (result.ExecuteNonQuery() == 1) | ||
202 | returnval = true; | ||
203 | |||
204 | result.Dispose(); | ||
205 | } | ||
206 | catch (Exception e) | ||
207 | { | ||
208 | return false; | ||
209 | } | ||
210 | |||
211 | return returnval; | ||
212 | } | ||
213 | } | ||
214 | } | ||
diff --git a/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj new file mode 100644 index 0000000..4c41a4f --- /dev/null +++ b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj | |||
@@ -0,0 +1,104 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{17F7F694-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Data.MSSQL</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Data.MSSQL</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="libsecondlife.dll" > | ||
62 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="System" > | ||
66 | <HintPath>System.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System.Data" > | ||
70 | <HintPath>System.Data.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="System.Xml" > | ||
74 | <HintPath>System.Xml.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | </ItemGroup> | ||
78 | <ItemGroup> | ||
79 | <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj"> | ||
80 | <Name>OpenSim.Framework.Data</Name> | ||
81 | <Project>{36B72A9B-0000-0000-0000-000000000000}</Project> | ||
82 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
83 | <Private>False</Private> | ||
84 | </ProjectReference> | ||
85 | </ItemGroup> | ||
86 | <ItemGroup> | ||
87 | <Compile Include="MSSQLGridData.cs"> | ||
88 | <SubType>Code</SubType> | ||
89 | </Compile> | ||
90 | <Compile Include="MSSQLManager.cs"> | ||
91 | <SubType>Code</SubType> | ||
92 | </Compile> | ||
93 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
94 | <SubType>Code</SubType> | ||
95 | </Compile> | ||
96 | </ItemGroup> | ||
97 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
98 | <PropertyGroup> | ||
99 | <PreBuildEvent> | ||
100 | </PreBuildEvent> | ||
101 | <PostBuildEvent> | ||
102 | </PostBuildEvent> | ||
103 | </PropertyGroup> | ||
104 | </Project> | ||
diff --git a/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj.user b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Data.MSSQL/OpenSim.Framework.Data.MSSQL.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bbe3cdf --- /dev/null +++ b/OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenGrid.Framework.Data.MSSQL")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenGrid.Framework.Data.MSSQL")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("0e1c1ca4-2cf2-4315-b0e7-432c02feea8a")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | // You can specify all the values or you can default the Revision and Build Numbers | ||
33 | // by using the '*' as shown below: | ||
34 | [assembly: AssemblyVersion("1.0.0.0")] | ||
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs new file mode 100644 index 0000000..4d6cf63 --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs | |||
@@ -0,0 +1,285 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenGrid.Framework.Data; | ||
32 | |||
33 | namespace OpenGrid.Framework.Data.MySQL | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// A MySQL Interface for the Grid Server | ||
37 | /// </summary> | ||
38 | public class MySQLGridData : IGridData | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// MySQL Database Manager | ||
42 | /// </summary> | ||
43 | private MySQLManager database; | ||
44 | |||
45 | /// <summary> | ||
46 | /// Initialises the Grid Interface | ||
47 | /// </summary> | ||
48 | public void Initialise() | ||
49 | { | ||
50 | IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||
51 | string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||
52 | string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||
53 | string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||
54 | string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||
55 | string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||
56 | string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||
57 | |||
58 | database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Shuts down the grid interface | ||
63 | /// </summary> | ||
64 | public void Close() | ||
65 | { | ||
66 | database.Close(); | ||
67 | } | ||
68 | |||
69 | /// <summary> | ||
70 | /// Returns the plugin name | ||
71 | /// </summary> | ||
72 | /// <returns>Plugin name</returns> | ||
73 | public string getName() | ||
74 | { | ||
75 | return "MySql OpenGridData"; | ||
76 | } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Returns the plugin version | ||
80 | /// </summary> | ||
81 | /// <returns>Plugin version</returns> | ||
82 | public string getVersion() | ||
83 | { | ||
84 | return "0.1"; | ||
85 | } | ||
86 | |||
87 | /// <summary> | ||
88 | /// Returns all the specified region profiles within coordates -- coordinates are inclusive | ||
89 | /// </summary> | ||
90 | /// <param name="xmin">Minimum X coordinate</param> | ||
91 | /// <param name="ymin">Minimum Y coordinate</param> | ||
92 | /// <param name="xmax">Maximum X coordinate</param> | ||
93 | /// <param name="ymax">Maximum Y coordinate</param> | ||
94 | /// <returns></returns> | ||
95 | public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax) | ||
96 | { | ||
97 | try | ||
98 | { | ||
99 | lock (database) | ||
100 | { | ||
101 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
102 | param["?xmin"] = xmin.ToString(); | ||
103 | param["?ymin"] = ymin.ToString(); | ||
104 | param["?xmax"] = xmax.ToString(); | ||
105 | param["?ymax"] = ymax.ToString(); | ||
106 | |||
107 | System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", param); | ||
108 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
109 | |||
110 | SimProfileData row; | ||
111 | |||
112 | List<SimProfileData> rows = new List<SimProfileData>(); | ||
113 | |||
114 | while ((row = database.readSimRow(reader)) != null) | ||
115 | { | ||
116 | rows.Add(row); | ||
117 | } | ||
118 | reader.Close(); | ||
119 | result.Dispose(); | ||
120 | |||
121 | return rows.ToArray(); | ||
122 | |||
123 | } | ||
124 | } | ||
125 | catch (Exception e) | ||
126 | { | ||
127 | database.Reconnect(); | ||
128 | Console.WriteLine(e.ToString()); | ||
129 | return null; | ||
130 | } | ||
131 | } | ||
132 | |||
133 | /// <summary> | ||
134 | /// Returns a sim profile from it's location | ||
135 | /// </summary> | ||
136 | /// <param name="handle">Region location handle</param> | ||
137 | /// <returns>Sim profile</returns> | ||
138 | public SimProfileData GetProfileByHandle(ulong handle) | ||
139 | { | ||
140 | try | ||
141 | { | ||
142 | lock (database) | ||
143 | { | ||
144 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
145 | param["?handle"] = handle.ToString(); | ||
146 | |||
147 | System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param); | ||
148 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
149 | |||
150 | SimProfileData row = database.readSimRow(reader); | ||
151 | reader.Close(); | ||
152 | result.Dispose(); | ||
153 | |||
154 | return row; | ||
155 | } | ||
156 | } | ||
157 | catch (Exception e) | ||
158 | { | ||
159 | database.Reconnect(); | ||
160 | Console.WriteLine(e.ToString()); | ||
161 | return null; | ||
162 | } | ||
163 | } | ||
164 | |||
165 | /// <summary> | ||
166 | /// Returns a sim profile from it's UUID | ||
167 | /// </summary> | ||
168 | /// <param name="uuid">The region UUID</param> | ||
169 | /// <returns>The sim profile</returns> | ||
170 | public SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID uuid) | ||
171 | { | ||
172 | try | ||
173 | { | ||
174 | lock (database) | ||
175 | { | ||
176 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
177 | param["?uuid"] = uuid.ToStringHyphenated(); | ||
178 | |||
179 | System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param); | ||
180 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
181 | |||
182 | SimProfileData row = database.readSimRow(reader); | ||
183 | reader.Close(); | ||
184 | result.Dispose(); | ||
185 | |||
186 | return row; | ||
187 | } | ||
188 | } | ||
189 | catch (Exception e) | ||
190 | { | ||
191 | database.Reconnect(); | ||
192 | Console.WriteLine(e.ToString()); | ||
193 | return null; | ||
194 | } | ||
195 | } | ||
196 | |||
197 | /// <summary> | ||
198 | /// Adds a new profile to the database | ||
199 | /// </summary> | ||
200 | /// <param name="profile">The profile to add</param> | ||
201 | /// <returns>Successful?</returns> | ||
202 | public DataResponse AddProfile(SimProfileData profile) | ||
203 | { | ||
204 | lock (database) | ||
205 | { | ||
206 | if (database.insertRegion(profile)) | ||
207 | { | ||
208 | return DataResponse.RESPONSE_OK; | ||
209 | } | ||
210 | else | ||
211 | { | ||
212 | return DataResponse.RESPONSE_ERROR; | ||
213 | } | ||
214 | } | ||
215 | } | ||
216 | |||
217 | /// <summary> | ||
218 | /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret. | ||
219 | /// </summary> | ||
220 | /// <param name="uuid">The UUID of the challenger</param> | ||
221 | /// <param name="handle">The attempted regionHandle of the challenger</param> | ||
222 | /// <param name="authkey">The secret</param> | ||
223 | /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns> | ||
224 | public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authkey) | ||
225 | { | ||
226 | bool throwHissyFit = false; // Should be true by 1.0 | ||
227 | |||
228 | if (throwHissyFit) | ||
229 | throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); | ||
230 | |||
231 | SimProfileData data = GetProfileByLLUUID(uuid); | ||
232 | |||
233 | return (handle == data.regionHandle && authkey == data.regionSecret); | ||
234 | } | ||
235 | |||
236 | /// <summary> | ||
237 | /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region | ||
238 | /// </summary> | ||
239 | /// <remarks>This requires a security audit.</remarks> | ||
240 | /// <param name="uuid"></param> | ||
241 | /// <param name="handle"></param> | ||
242 | /// <param name="authhash"></param> | ||
243 | /// <param name="challenge"></param> | ||
244 | /// <returns></returns> | ||
245 | public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authhash, string challenge) | ||
246 | { | ||
247 | System.Security.Cryptography.SHA512Managed HashProvider = new System.Security.Cryptography.SHA512Managed(); | ||
248 | System.Text.ASCIIEncoding TextProvider = new ASCIIEncoding(); | ||
249 | |||
250 | byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge); | ||
251 | byte[] hash = HashProvider.ComputeHash(stream); | ||
252 | |||
253 | return false; | ||
254 | } | ||
255 | |||
256 | public ReservationData GetReservationAtPoint(uint x, uint y) | ||
257 | { | ||
258 | try | ||
259 | { | ||
260 | lock (database) | ||
261 | { | ||
262 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
263 | param["?x"] = x.ToString(); | ||
264 | param["?y"] = y.ToString(); | ||
265 | System.Data.IDbCommand result = database.Query("SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", param); | ||
266 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
267 | |||
268 | ReservationData row = database.readReservationRow(reader); | ||
269 | reader.Close(); | ||
270 | result.Dispose(); | ||
271 | |||
272 | return row; | ||
273 | } | ||
274 | } | ||
275 | catch (Exception e) | ||
276 | { | ||
277 | database.Reconnect(); | ||
278 | Console.WriteLine(e.ToString()); | ||
279 | return null; | ||
280 | } | ||
281 | } | ||
282 | } | ||
283 | |||
284 | |||
285 | } | ||
diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs new file mode 100644 index 0000000..fb429e4 --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs | |||
@@ -0,0 +1,309 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenGrid.Framework.Data.MySQL | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// A MySQL interface for the inventory server | ||
37 | /// </summary> | ||
38 | class MySQLInventoryData : IInventoryData | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// The database manager | ||
42 | /// </summary> | ||
43 | public MySQLManager database; | ||
44 | |||
45 | /// <summary> | ||
46 | /// Loads and initialises this database plugin | ||
47 | /// </summary> | ||
48 | public void Initialise() | ||
49 | { | ||
50 | IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||
51 | string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||
52 | string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||
53 | string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||
54 | string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||
55 | string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||
56 | string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||
57 | |||
58 | database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// The name of this DB provider | ||
63 | /// </summary> | ||
64 | /// <returns>Name of DB provider</returns> | ||
65 | public string getName() | ||
66 | { | ||
67 | return "MySQL Inventory Data Interface"; | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Closes this DB provider | ||
72 | /// </summary> | ||
73 | public void Close() | ||
74 | { | ||
75 | // Do nothing. | ||
76 | } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Returns the version of this DB provider | ||
80 | /// </summary> | ||
81 | /// <returns>A string containing the DB provider</returns> | ||
82 | public string getVersion() | ||
83 | { | ||
84 | return "0.1"; | ||
85 | } | ||
86 | |||
87 | /// <summary> | ||
88 | /// Returns a list of items in a specified folder | ||
89 | /// </summary> | ||
90 | /// <param name="folderID">The folder to search</param> | ||
91 | /// <returns>A list containing inventory items</returns> | ||
92 | public List<InventoryItemBase> getInventoryInFolder(LLUUID folderID) | ||
93 | { | ||
94 | try | ||
95 | { | ||
96 | lock (database) | ||
97 | { | ||
98 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
99 | param["?uuid"] = folderID.ToStringHyphenated(); | ||
100 | |||
101 | System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = ?uuid", param); | ||
102 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
103 | |||
104 | List<InventoryItemBase> items = database.readInventoryItems(reader); | ||
105 | |||
106 | reader.Close(); | ||
107 | result.Dispose(); | ||
108 | |||
109 | return items; | ||
110 | } | ||
111 | } | ||
112 | catch (Exception e) | ||
113 | { | ||
114 | database.Reconnect(); | ||
115 | Console.WriteLine(e.ToString()); | ||
116 | return null; | ||
117 | } | ||
118 | } | ||
119 | |||
120 | /// <summary> | ||
121 | /// Returns a list of the root folders within a users inventory | ||
122 | /// </summary> | ||
123 | /// <param name="user">The user whos inventory is to be searched</param> | ||
124 | /// <returns>A list of folder objects</returns> | ||
125 | public List<InventoryFolderBase> getUserRootFolders(LLUUID user) | ||
126 | { | ||
127 | try | ||
128 | { | ||
129 | lock (database) | ||
130 | { | ||
131 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
132 | param["?uuid"] = user.ToStringHyphenated(); | ||
133 | param["?zero"] = LLUUID.Zero.ToStringHyphenated(); | ||
134 | |||
135 | System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param); | ||
136 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
137 | |||
138 | List<InventoryFolderBase> items = database.readInventoryFolders(reader); | ||
139 | |||
140 | reader.Close(); | ||
141 | result.Dispose(); | ||
142 | |||
143 | return items; | ||
144 | } | ||
145 | } | ||
146 | catch (Exception e) | ||
147 | { | ||
148 | database.Reconnect(); | ||
149 | Console.WriteLine(e.ToString()); | ||
150 | return null; | ||
151 | } | ||
152 | } | ||
153 | |||
154 | /// <summary> | ||
155 | /// Returns a list of folders in a users inventory contained within the specified folder | ||
156 | /// </summary> | ||
157 | /// <param name="parentID">The folder to search</param> | ||
158 | /// <returns>A list of inventory folders</returns> | ||
159 | public List<InventoryFolderBase> getInventoryFolders(LLUUID parentID) | ||
160 | { | ||
161 | try | ||
162 | { | ||
163 | lock (database) | ||
164 | { | ||
165 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
166 | param["?uuid"] = parentID.ToStringHyphenated(); | ||
167 | |||
168 | System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?uuid", param); | ||
169 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
170 | |||
171 | List<InventoryFolderBase> items = database.readInventoryFolders(reader); | ||
172 | |||
173 | reader.Close(); | ||
174 | result.Dispose(); | ||
175 | |||
176 | return items; | ||
177 | } | ||
178 | } | ||
179 | catch (Exception e) | ||
180 | { | ||
181 | database.Reconnect(); | ||
182 | Console.WriteLine(e.ToString()); | ||
183 | return null; | ||
184 | } | ||
185 | } | ||
186 | |||
187 | /// <summary> | ||
188 | /// Returns a specified inventory item | ||
189 | /// </summary> | ||
190 | /// <param name="item">The item to return</param> | ||
191 | /// <returns>An inventory item</returns> | ||
192 | public InventoryItemBase getInventoryItem(LLUUID item) | ||
193 | { | ||
194 | try | ||
195 | { | ||
196 | lock (database) | ||
197 | { | ||
198 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
199 | param["?uuid"] = item.ToStringHyphenated(); | ||
200 | |||
201 | System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = ?uuid", param); | ||
202 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
203 | |||
204 | List<InventoryItemBase> items = database.readInventoryItems(reader); | ||
205 | |||
206 | reader.Close(); | ||
207 | result.Dispose(); | ||
208 | |||
209 | if (items.Count > 0) | ||
210 | { | ||
211 | return items[0]; | ||
212 | } | ||
213 | else | ||
214 | { | ||
215 | return null; | ||
216 | } | ||
217 | } | ||
218 | } | ||
219 | catch (Exception e) | ||
220 | { | ||
221 | database.Reconnect(); | ||
222 | Console.WriteLine(e.ToString()); | ||
223 | return null; | ||
224 | } | ||
225 | } | ||
226 | |||
227 | /// <summary> | ||
228 | /// Returns a specified inventory folder | ||
229 | /// </summary> | ||
230 | /// <param name="folder">The folder to return</param> | ||
231 | /// <returns>A folder class</returns> | ||
232 | public InventoryFolderBase getInventoryFolder(LLUUID folder) | ||
233 | { | ||
234 | try | ||
235 | { | ||
236 | lock (database) | ||
237 | { | ||
238 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
239 | param["?uuid"] = folder.ToStringHyphenated(); | ||
240 | |||
241 | System.Data.IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = ?uuid", param); | ||
242 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
243 | |||
244 | List<InventoryFolderBase> items = database.readInventoryFolders(reader); | ||
245 | |||
246 | reader.Close(); | ||
247 | result.Dispose(); | ||
248 | |||
249 | if (items.Count > 0) | ||
250 | { | ||
251 | return items[0]; | ||
252 | } | ||
253 | else | ||
254 | { | ||
255 | return null; | ||
256 | } | ||
257 | } | ||
258 | } | ||
259 | catch (Exception e) | ||
260 | { | ||
261 | database.Reconnect(); | ||
262 | Console.WriteLine(e.ToString()); | ||
263 | return null; | ||
264 | } | ||
265 | } | ||
266 | |||
267 | /// <summary> | ||
268 | /// Adds a specified item to the database | ||
269 | /// </summary> | ||
270 | /// <param name="item">The inventory item</param> | ||
271 | public void addInventoryItem(InventoryItemBase item) | ||
272 | { | ||
273 | lock (database) | ||
274 | { | ||
275 | database.insertItem(item); | ||
276 | } | ||
277 | } | ||
278 | |||
279 | /// <summary> | ||
280 | /// Updates the specified inventory item | ||
281 | /// </summary> | ||
282 | /// <param name="item">Inventory item to update</param> | ||
283 | public void updateInventoryItem(InventoryItemBase item) | ||
284 | { | ||
285 | addInventoryItem(item); | ||
286 | } | ||
287 | |||
288 | /// <summary> | ||
289 | /// Creates a new inventory folder | ||
290 | /// </summary> | ||
291 | /// <param name="folder">Folder to create</param> | ||
292 | public void addInventoryFolder(InventoryFolderBase folder) | ||
293 | { | ||
294 | lock (database) | ||
295 | { | ||
296 | database.insertFolder(folder); | ||
297 | } | ||
298 | } | ||
299 | |||
300 | /// <summary> | ||
301 | /// Updates an inventory folder | ||
302 | /// </summary> | ||
303 | /// <param name="folder">Folder to update</param> | ||
304 | public void updateInventoryFolder(InventoryFolderBase folder) | ||
305 | { | ||
306 | addInventoryFolder(folder); | ||
307 | } | ||
308 | } | ||
309 | } | ||
diff --git a/OpenSim/Framework/Data.MySQL/MySQLLogData.cs b/OpenSim/Framework/Data.MySQL/MySQLLogData.cs new file mode 100644 index 0000000..c88b39f --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/MySQLLogData.cs | |||
@@ -0,0 +1,107 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenGrid.Framework.Data.MySQL | ||
33 | { | ||
34 | /// <summary> | ||
35 | /// An interface to the log database for MySQL | ||
36 | /// </summary> | ||
37 | class MySQLLogData : ILogData | ||
38 | { | ||
39 | /// <summary> | ||
40 | /// The database manager | ||
41 | /// </summary> | ||
42 | public MySQLManager database; | ||
43 | |||
44 | /// <summary> | ||
45 | /// Artificial constructor called when the plugin is loaded | ||
46 | /// </summary> | ||
47 | public void Initialise() | ||
48 | { | ||
49 | IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||
50 | string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||
51 | string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||
52 | string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||
53 | string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||
54 | string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||
55 | string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||
56 | |||
57 | database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||
58 | } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Saves a log item to the database | ||
62 | /// </summary> | ||
63 | /// <param name="serverDaemon">The daemon triggering the event</param> | ||
64 | /// <param name="target">The target of the action (region / agent UUID, etc)</param> | ||
65 | /// <param name="methodCall">The method call where the problem occured</param> | ||
66 | /// <param name="arguments">The arguments passed to the method</param> | ||
67 | /// <param name="priority">How critical is this?</param> | ||
68 | /// <param name="logMessage">The message to log</param> | ||
69 | public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage) | ||
70 | { | ||
71 | try | ||
72 | { | ||
73 | database.insertLogRow(serverDaemon, target, methodCall, arguments, priority, logMessage); | ||
74 | } | ||
75 | catch (Exception e) | ||
76 | { | ||
77 | database.Reconnect(); | ||
78 | } | ||
79 | } | ||
80 | |||
81 | /// <summary> | ||
82 | /// Returns the name of this DB provider | ||
83 | /// </summary> | ||
84 | /// <returns>A string containing the DB provider name</returns> | ||
85 | public string getName() | ||
86 | { | ||
87 | return "MySQL Logdata Interface"; | ||
88 | } | ||
89 | |||
90 | /// <summary> | ||
91 | /// Closes the database provider | ||
92 | /// </summary> | ||
93 | public void Close() | ||
94 | { | ||
95 | // Do nothing. | ||
96 | } | ||
97 | |||
98 | /// <summary> | ||
99 | /// Returns the version of this DB provider | ||
100 | /// </summary> | ||
101 | /// <returns>A string containing the provider version</returns> | ||
102 | public string getVersion() | ||
103 | { | ||
104 | return "0.1"; | ||
105 | } | ||
106 | } | ||
107 | } | ||
diff --git a/OpenSim/Framework/Data.MySQL/MySQLManager.cs b/OpenSim/Framework/Data.MySQL/MySQLManager.cs new file mode 100644 index 0000000..53b3bdd --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/MySQLManager.cs | |||
@@ -0,0 +1,609 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.Data; | ||
32 | |||
33 | // MySQL Native | ||
34 | using MySql; | ||
35 | using MySql.Data; | ||
36 | using MySql.Data.Types; | ||
37 | using MySql.Data.MySqlClient; | ||
38 | |||
39 | using OpenGrid.Framework.Data; | ||
40 | |||
41 | namespace OpenGrid.Framework.Data.MySQL | ||
42 | { | ||
43 | /// <summary> | ||
44 | /// A MySQL Database manager | ||
45 | /// </summary> | ||
46 | class MySQLManager | ||
47 | { | ||
48 | /// <summary> | ||
49 | /// The database connection object | ||
50 | /// </summary> | ||
51 | IDbConnection dbcon; | ||
52 | /// <summary> | ||
53 | /// Connection string for ADO.net | ||
54 | /// </summary> | ||
55 | string connectionString; | ||
56 | |||
57 | /// <summary> | ||
58 | /// Initialises and creates a new MySQL connection and maintains it. | ||
59 | /// </summary> | ||
60 | /// <param name="hostname">The MySQL server being connected to</param> | ||
61 | /// <param name="database">The name of the MySQL database being used</param> | ||
62 | /// <param name="username">The username logging into the database</param> | ||
63 | /// <param name="password">The password for the user logging in</param> | ||
64 | /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> | ||
65 | public MySQLManager(string hostname, string database, string username, string password, string cpooling, string port) | ||
66 | { | ||
67 | try | ||
68 | { | ||
69 | connectionString = "Server=" + hostname + ";Port=" + port + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";"; | ||
70 | dbcon = new MySqlConnection(connectionString); | ||
71 | |||
72 | dbcon.Open(); | ||
73 | |||
74 | System.Console.WriteLine("MySQL connection established"); | ||
75 | } | ||
76 | catch (Exception e) | ||
77 | { | ||
78 | throw new Exception("Error initialising MySql Database: " + e.ToString()); | ||
79 | } | ||
80 | } | ||
81 | |||
82 | /// <summary> | ||
83 | /// Shuts down the database connection | ||
84 | /// </summary> | ||
85 | public void Close() | ||
86 | { | ||
87 | dbcon.Close(); | ||
88 | dbcon = null; | ||
89 | } | ||
90 | |||
91 | /// <summary> | ||
92 | /// Reconnects to the database | ||
93 | /// </summary> | ||
94 | public void Reconnect() | ||
95 | { | ||
96 | lock (dbcon) | ||
97 | { | ||
98 | try | ||
99 | { | ||
100 | // Close the DB connection | ||
101 | dbcon.Close(); | ||
102 | // Try reopen it | ||
103 | dbcon = new MySqlConnection(connectionString); | ||
104 | dbcon.Open(); | ||
105 | } | ||
106 | catch (Exception e) | ||
107 | { | ||
108 | Console.WriteLine("Unable to reconnect to database " + e.ToString()); | ||
109 | } | ||
110 | } | ||
111 | } | ||
112 | |||
113 | /// <summary> | ||
114 | /// Runs a query with protection against SQL Injection by using parameterised input. | ||
115 | /// </summary> | ||
116 | /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> | ||
117 | /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param> | ||
118 | /// <returns>A MySQL DB Command</returns> | ||
119 | public IDbCommand Query(string sql, Dictionary<string, string> parameters) | ||
120 | { | ||
121 | try | ||
122 | { | ||
123 | MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); | ||
124 | dbcommand.CommandText = sql; | ||
125 | foreach (KeyValuePair<string, string> param in parameters) | ||
126 | { | ||
127 | dbcommand.Parameters.Add(param.Key, param.Value); | ||
128 | } | ||
129 | |||
130 | return (IDbCommand)dbcommand; | ||
131 | } | ||
132 | catch | ||
133 | { | ||
134 | lock (dbcon) | ||
135 | { | ||
136 | // Close the DB connection | ||
137 | try | ||
138 | { | ||
139 | dbcon.Close(); | ||
140 | } | ||
141 | catch { } | ||
142 | |||
143 | // Try reopen it | ||
144 | try | ||
145 | { | ||
146 | dbcon = new MySqlConnection(connectionString); | ||
147 | dbcon.Open(); | ||
148 | } | ||
149 | catch (Exception e) | ||
150 | { | ||
151 | Console.WriteLine("Unable to reconnect to database " + e.ToString()); | ||
152 | } | ||
153 | |||
154 | // Run the query again | ||
155 | try | ||
156 | { | ||
157 | MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); | ||
158 | dbcommand.CommandText = sql; | ||
159 | foreach (KeyValuePair<string, string> param in parameters) | ||
160 | { | ||
161 | dbcommand.Parameters.Add(param.Key, param.Value); | ||
162 | } | ||
163 | |||
164 | return (IDbCommand)dbcommand; | ||
165 | } | ||
166 | catch (Exception e) | ||
167 | { | ||
168 | // Return null if it fails. | ||
169 | Console.WriteLine("Failed during Query generation: " + e.ToString()); | ||
170 | return null; | ||
171 | } | ||
172 | } | ||
173 | } | ||
174 | } | ||
175 | |||
176 | /// <summary> | ||
177 | /// Reads a region row from a database reader | ||
178 | /// </summary> | ||
179 | /// <param name="reader">An active database reader</param> | ||
180 | /// <returns>A region profile</returns> | ||
181 | public SimProfileData readSimRow(IDataReader reader) | ||
182 | { | ||
183 | SimProfileData retval = new SimProfileData(); | ||
184 | |||
185 | if (reader.Read()) | ||
186 | { | ||
187 | // Region Main | ||
188 | retval.regionHandle = Convert.ToUInt64(reader["regionHandle"].ToString()); | ||
189 | retval.regionName = (string)reader["regionName"]; | ||
190 | retval.UUID = new libsecondlife.LLUUID((string)reader["uuid"]); | ||
191 | |||
192 | // Secrets | ||
193 | retval.regionRecvKey = (string)reader["regionRecvKey"]; | ||
194 | retval.regionSecret = (string)reader["regionSecret"]; | ||
195 | retval.regionSendKey = (string)reader["regionSendKey"]; | ||
196 | |||
197 | // Region Server | ||
198 | retval.regionDataURI = (string)reader["regionDataURI"]; | ||
199 | retval.regionOnline = false; // Needs to be pinged before this can be set. | ||
200 | retval.serverIP = (string)reader["serverIP"]; | ||
201 | retval.serverPort = (uint)reader["serverPort"]; | ||
202 | retval.serverURI = (string)reader["serverURI"]; | ||
203 | |||
204 | // Location | ||
205 | retval.regionLocX = Convert.ToUInt32(reader["locX"].ToString()); | ||
206 | retval.regionLocY = Convert.ToUInt32(reader["locY"].ToString()); | ||
207 | retval.regionLocZ = Convert.ToUInt32(reader["locZ"].ToString()); | ||
208 | |||
209 | // Neighbours - 0 = No Override | ||
210 | retval.regionEastOverrideHandle = Convert.ToUInt64(reader["eastOverrideHandle"].ToString()); | ||
211 | retval.regionWestOverrideHandle = Convert.ToUInt64(reader["westOverrideHandle"].ToString()); | ||
212 | retval.regionSouthOverrideHandle = Convert.ToUInt64(reader["southOverrideHandle"].ToString()); | ||
213 | retval.regionNorthOverrideHandle = Convert.ToUInt64(reader["northOverrideHandle"].ToString()); | ||
214 | |||
215 | // Assets | ||
216 | retval.regionAssetURI = (string)reader["regionAssetURI"]; | ||
217 | retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"]; | ||
218 | retval.regionAssetSendKey = (string)reader["regionAssetSendKey"]; | ||
219 | |||
220 | // Userserver | ||
221 | retval.regionUserURI = (string)reader["regionUserURI"]; | ||
222 | retval.regionUserRecvKey = (string)reader["regionUserRecvKey"]; | ||
223 | retval.regionUserSendKey = (string)reader["regionUserSendKey"]; | ||
224 | |||
225 | // World Map Addition | ||
226 | string tempRegionMap = reader["regionMapTexture"].ToString(); | ||
227 | if (tempRegionMap != "") | ||
228 | { | ||
229 | retval.regionMapTextureID = new libsecondlife.LLUUID(tempRegionMap); | ||
230 | } | ||
231 | else | ||
232 | { | ||
233 | retval.regionMapTextureID = new libsecondlife.LLUUID(); | ||
234 | } | ||
235 | } | ||
236 | else | ||
237 | { | ||
238 | return null; | ||
239 | } | ||
240 | return retval; | ||
241 | } | ||
242 | |||
243 | /// <summary> | ||
244 | /// Reads a reservation row from a database reader | ||
245 | /// </summary> | ||
246 | /// <param name="reader">An active database reader</param> | ||
247 | /// <returns>A reservation data object</returns> | ||
248 | public ReservationData readReservationRow(IDataReader reader) | ||
249 | { | ||
250 | ReservationData retval = new ReservationData(); | ||
251 | if (reader.Read()) | ||
252 | { | ||
253 | retval.gridRecvKey = (string)reader["gridRecvKey"]; | ||
254 | retval.gridSendKey = (string)reader["gridSendKey"]; | ||
255 | retval.reservationCompany = (string)reader["resCompany"]; | ||
256 | retval.reservationMaxX = (int)reader["resXMax"]; | ||
257 | retval.reservationMaxY = (int)reader["resYMax"]; | ||
258 | retval.reservationMinX = (int)reader["resXMin"]; | ||
259 | retval.reservationMinY = (int)reader["resYMin"]; | ||
260 | retval.reservationName = (string)reader["resName"]; | ||
261 | retval.status = (bool)reader["status"]; | ||
262 | retval.userUUID = new libsecondlife.LLUUID((string)reader["userUUID"]); | ||
263 | |||
264 | } | ||
265 | else | ||
266 | { | ||
267 | return null; | ||
268 | } | ||
269 | return retval; | ||
270 | } | ||
271 | /// <summary> | ||
272 | /// Reads an agent row from a database reader | ||
273 | /// </summary> | ||
274 | /// <param name="reader">An active database reader</param> | ||
275 | /// <returns>A user session agent</returns> | ||
276 | public UserAgentData readAgentRow(IDataReader reader) | ||
277 | { | ||
278 | UserAgentData retval = new UserAgentData(); | ||
279 | |||
280 | if (reader.Read()) | ||
281 | { | ||
282 | // Agent IDs | ||
283 | retval.UUID = new libsecondlife.LLUUID((string)reader["UUID"]); | ||
284 | retval.sessionID = new libsecondlife.LLUUID((string)reader["sessionID"]); | ||
285 | retval.secureSessionID = new libsecondlife.LLUUID((string)reader["secureSessionID"]); | ||
286 | |||
287 | // Agent Who? | ||
288 | retval.agentIP = (string)reader["agentIP"]; | ||
289 | retval.agentPort = Convert.ToUInt32(reader["agentPort"].ToString()); | ||
290 | retval.agentOnline = Convert.ToBoolean(reader["agentOnline"].ToString()); | ||
291 | |||
292 | // Login/Logout times (UNIX Epoch) | ||
293 | retval.loginTime = Convert.ToInt32(reader["loginTime"].ToString()); | ||
294 | retval.logoutTime = Convert.ToInt32(reader["logoutTime"].ToString()); | ||
295 | |||
296 | // Current position | ||
297 | retval.currentRegion = (string)reader["currentRegion"]; | ||
298 | retval.currentHandle = Convert.ToUInt64(reader["currentHandle"].ToString()); | ||
299 | libsecondlife.LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos); | ||
300 | } | ||
301 | else | ||
302 | { | ||
303 | return null; | ||
304 | } | ||
305 | return retval; | ||
306 | } | ||
307 | |||
308 | /// <summary> | ||
309 | /// Reads a user profile from an active data reader | ||
310 | /// </summary> | ||
311 | /// <param name="reader">An active database reader</param> | ||
312 | /// <returns>A user profile</returns> | ||
313 | public UserProfileData readUserRow(IDataReader reader) | ||
314 | { | ||
315 | UserProfileData retval = new UserProfileData(); | ||
316 | |||
317 | if (reader.Read()) | ||
318 | { | ||
319 | retval.UUID = new libsecondlife.LLUUID((string)reader["UUID"]); | ||
320 | retval.username = (string)reader["username"]; | ||
321 | retval.surname = (string)reader["lastname"]; | ||
322 | |||
323 | retval.passwordHash = (string)reader["passwordHash"]; | ||
324 | retval.passwordSalt = (string)reader["passwordSalt"]; | ||
325 | |||
326 | retval.homeRegion = Convert.ToUInt64(reader["homeRegion"].ToString()); | ||
327 | retval.homeLocation = new libsecondlife.LLVector3( | ||
328 | Convert.ToSingle(reader["homeLocationX"].ToString()), | ||
329 | Convert.ToSingle(reader["homeLocationY"].ToString()), | ||
330 | Convert.ToSingle(reader["homeLocationZ"].ToString())); | ||
331 | retval.homeLookAt = new libsecondlife.LLVector3( | ||
332 | Convert.ToSingle(reader["homeLookAtX"].ToString()), | ||
333 | Convert.ToSingle(reader["homeLookAtY"].ToString()), | ||
334 | Convert.ToSingle(reader["homeLookAtZ"].ToString())); | ||
335 | |||
336 | retval.created = Convert.ToInt32(reader["created"].ToString()); | ||
337 | retval.lastLogin = Convert.ToInt32(reader["lastLogin"].ToString()); | ||
338 | |||
339 | retval.userInventoryURI = (string)reader["userInventoryURI"]; | ||
340 | retval.userAssetURI = (string)reader["userAssetURI"]; | ||
341 | |||
342 | retval.profileCanDoMask = Convert.ToUInt32(reader["profileCanDoMask"].ToString()); | ||
343 | retval.profileWantDoMask = Convert.ToUInt32(reader["profileWantDoMask"].ToString()); | ||
344 | |||
345 | retval.profileAboutText = (string)reader["profileAboutText"]; | ||
346 | retval.profileFirstText = (string)reader["profileFirstText"]; | ||
347 | |||
348 | retval.profileImage = new libsecondlife.LLUUID((string)reader["profileImage"]); | ||
349 | retval.profileFirstImage = new libsecondlife.LLUUID((string)reader["profileFirstImage"]); | ||
350 | |||
351 | } | ||
352 | else | ||
353 | { | ||
354 | return null; | ||
355 | } | ||
356 | return retval; | ||
357 | } | ||
358 | |||
359 | /// <summary> | ||
360 | /// Reads a list of inventory folders returned by a query. | ||
361 | /// </summary> | ||
362 | /// <param name="reader">A MySQL Data Reader</param> | ||
363 | /// <returns>A List containing inventory folders</returns> | ||
364 | public List<InventoryFolderBase> readInventoryFolders(IDataReader reader) | ||
365 | { | ||
366 | List<InventoryFolderBase> rows = new List<InventoryFolderBase>(); | ||
367 | |||
368 | while(reader.Read()) | ||
369 | { | ||
370 | try | ||
371 | { | ||
372 | InventoryFolderBase folder = new InventoryFolderBase(); | ||
373 | |||
374 | folder.agentID = new libsecondlife.LLUUID((string)reader["agentID"]); | ||
375 | folder.parentID = new libsecondlife.LLUUID((string)reader["parentFolderID"]); | ||
376 | folder.folderID = new libsecondlife.LLUUID((string)reader["folderID"]); | ||
377 | folder.name = (string)reader["folderName"]; | ||
378 | |||
379 | rows.Add(folder); | ||
380 | } | ||
381 | catch (Exception e) | ||
382 | { | ||
383 | Console.WriteLine(e.ToString()); | ||
384 | } | ||
385 | } | ||
386 | |||
387 | return rows; | ||
388 | } | ||
389 | |||
390 | /// <summary> | ||
391 | /// Reads a collection of items from an SQL result | ||
392 | /// </summary> | ||
393 | /// <param name="reader">The SQL Result</param> | ||
394 | /// <returns>A List containing Inventory Items</returns> | ||
395 | public List<InventoryItemBase> readInventoryItems(IDataReader reader) | ||
396 | { | ||
397 | List<InventoryItemBase> rows = new List<InventoryItemBase>(); | ||
398 | |||
399 | while (reader.Read()) | ||
400 | { | ||
401 | try | ||
402 | { | ||
403 | InventoryItemBase item = new InventoryItemBase(); | ||
404 | |||
405 | item.assetID = new libsecondlife.LLUUID((string)reader["assetID"]); | ||
406 | item.avatarID = new libsecondlife.LLUUID((string)reader["avatarID"]); | ||
407 | item.inventoryCurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"].ToString()); | ||
408 | item.inventoryDescription = (string)reader["inventoryDescription"]; | ||
409 | item.inventoryID = new libsecondlife.LLUUID((string)reader["inventoryID"]); | ||
410 | item.inventoryName = (string)reader["inventoryName"]; | ||
411 | item.inventoryNextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"].ToString()); | ||
412 | item.parentFolderID = new libsecondlife.LLUUID((string)reader["parentFolderID"]); | ||
413 | item.type = Convert.ToInt32(reader["type"].ToString()); | ||
414 | |||
415 | rows.Add(item); | ||
416 | } | ||
417 | catch (Exception e) | ||
418 | { | ||
419 | Console.WriteLine(e.ToString()); | ||
420 | } | ||
421 | } | ||
422 | |||
423 | return rows; | ||
424 | } | ||
425 | |||
426 | /// <summary> | ||
427 | /// Inserts a new row into the log database | ||
428 | /// </summary> | ||
429 | /// <param name="serverDaemon">The daemon which triggered this event</param> | ||
430 | /// <param name="target">Who were we operating on when this occured (region UUID, user UUID, etc)</param> | ||
431 | /// <param name="methodCall">The method call where the problem occured</param> | ||
432 | /// <param name="arguments">The arguments passed to the method</param> | ||
433 | /// <param name="priority">How critical is this?</param> | ||
434 | /// <param name="logMessage">Extra message info</param> | ||
435 | /// <returns>Saved successfully?</returns> | ||
436 | public bool insertLogRow(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage) | ||
437 | { | ||
438 | string sql = "INSERT INTO logs (`target`, `server`, `method`, `arguments`, `priority`, `message`) VALUES "; | ||
439 | sql += "(?target, ?server, ?method, ?arguments, ?priority, ?message)"; | ||
440 | |||
441 | Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||
442 | parameters["?server"] = serverDaemon; | ||
443 | parameters["?target"] = target; | ||
444 | parameters["?method"] = methodCall; | ||
445 | parameters["?arguments"] = arguments; | ||
446 | parameters["?priority"] = priority.ToString(); | ||
447 | parameters["?message"] = logMessage; | ||
448 | |||
449 | bool returnval = false; | ||
450 | |||
451 | try | ||
452 | { | ||
453 | IDbCommand result = Query(sql, parameters); | ||
454 | |||
455 | if (result.ExecuteNonQuery() == 1) | ||
456 | returnval = true; | ||
457 | |||
458 | result.Dispose(); | ||
459 | } | ||
460 | catch (Exception e) | ||
461 | { | ||
462 | Console.WriteLine(e.ToString()); | ||
463 | return false; | ||
464 | } | ||
465 | |||
466 | return returnval; | ||
467 | } | ||
468 | |||
469 | /// <summary> | ||
470 | /// Inserts a new item into the database | ||
471 | /// </summary> | ||
472 | /// <param name="item">The item</param> | ||
473 | /// <returns>Success?</returns> | ||
474 | public bool insertItem(InventoryItemBase item) | ||
475 | { | ||
476 | string sql = "REPLACE INTO inventoryitems (inventoryID, assetID, type, parentFolderID, avatarID, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions) VALUES "; | ||
477 | sql += "(?inventoryID, ?assetID, ?type, ?parentFolderID, ?avatarID, ?inventoryName, ?inventoryDescription, ?inventoryNextPermissions, ?inventoryCurrentPermissions)"; | ||
478 | |||
479 | Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||
480 | parameters["?inventoryID"] = item.inventoryID.ToStringHyphenated(); | ||
481 | parameters["?assetID"] = item.assetID.ToStringHyphenated(); | ||
482 | parameters["?type"] = item.type.ToString(); | ||
483 | parameters["?parentFolderID"] = item.parentFolderID.ToStringHyphenated(); | ||
484 | parameters["?avatarID"] = item.avatarID.ToStringHyphenated(); | ||
485 | parameters["?inventoryName"] = item.inventoryName; | ||
486 | parameters["?inventoryDescription"] = item.inventoryDescription; | ||
487 | parameters["?inventoryNextPermissions"] = item.inventoryNextPermissions.ToString(); | ||
488 | parameters["?inventoryCurrentPermissions"] = item.inventoryCurrentPermissions.ToString(); | ||
489 | |||
490 | bool returnval = false; | ||
491 | |||
492 | try | ||
493 | { | ||
494 | IDbCommand result = Query(sql, parameters); | ||
495 | |||
496 | if (result.ExecuteNonQuery() == 1) | ||
497 | returnval = true; | ||
498 | |||
499 | result.Dispose(); | ||
500 | } | ||
501 | catch (Exception e) | ||
502 | { | ||
503 | Console.WriteLine(e.ToString()); | ||
504 | return false; | ||
505 | } | ||
506 | |||
507 | return returnval; | ||
508 | } | ||
509 | |||
510 | /// <summary> | ||
511 | /// Inserts a new folder into the database | ||
512 | /// </summary> | ||
513 | /// <param name="folder">The folder</param> | ||
514 | /// <returns>Success?</returns> | ||
515 | public bool insertFolder(InventoryFolderBase folder) | ||
516 | { | ||
517 | string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName) VALUES "; | ||
518 | sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName)"; | ||
519 | |||
520 | Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||
521 | parameters["?folderID"] = folder.folderID.ToStringHyphenated(); | ||
522 | parameters["?agentID"] = folder.agentID.ToStringHyphenated(); | ||
523 | parameters["?parentFolderID"] = folder.parentID.ToStringHyphenated(); | ||
524 | parameters["?folderName"] = folder.name; | ||
525 | |||
526 | bool returnval = false; | ||
527 | try | ||
528 | { | ||
529 | IDbCommand result = Query(sql, parameters); | ||
530 | |||
531 | if (result.ExecuteNonQuery() == 1) | ||
532 | returnval = true; | ||
533 | |||
534 | result.Dispose(); | ||
535 | } | ||
536 | catch (Exception e) | ||
537 | { | ||
538 | Console.WriteLine(e.ToString()); | ||
539 | return false; | ||
540 | } | ||
541 | return returnval; | ||
542 | } | ||
543 | |||
544 | /// <summary> | ||
545 | /// Inserts a new region into the database | ||
546 | /// </summary> | ||
547 | /// <param name="profile">The region to insert</param> | ||
548 | /// <returns>Success?</returns> | ||
549 | public bool insertRegion(SimProfileData regiondata) | ||
550 | { | ||
551 | string sql = "REPLACE INTO regions (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; | ||
552 | sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; | ||
553 | sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture) VALUES "; | ||
554 | |||
555 | sql += "(?regionHandle, ?regionName, ?uuid, ?regionRecvKey, ?regionSecret, ?regionSendKey, ?regionDataURI, "; | ||
556 | sql += "?serverIP, ?serverPort, ?serverURI, ?locX, ?locY, ?locZ, ?eastOverrideHandle, ?westOverrideHandle, ?southOverrideHandle, ?northOverrideHandle, ?regionAssetURI, ?regionAssetRecvKey, "; | ||
557 | sql += "?regionAssetSendKey, ?regionUserURI, ?regionUserRecvKey, ?regionUserSendKey, ?regionMapTexture);"; | ||
558 | |||
559 | Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||
560 | |||
561 | parameters["?regionHandle"] = regiondata.regionHandle.ToString(); | ||
562 | parameters["?regionName"] = regiondata.regionName.ToString(); | ||
563 | parameters["?uuid"] = regiondata.UUID.ToStringHyphenated(); | ||
564 | parameters["?regionRecvKey"] = regiondata.regionRecvKey.ToString(); | ||
565 | parameters["?regionSecret"] = regiondata.regionSecret.ToString(); | ||
566 | parameters["?regionSendKey"] = regiondata.regionSendKey.ToString(); | ||
567 | parameters["?regionDataURI"] = regiondata.regionDataURI.ToString(); | ||
568 | parameters["?serverIP"] = regiondata.serverIP.ToString(); | ||
569 | parameters["?serverPort"] = regiondata.serverPort.ToString(); | ||
570 | parameters["?serverURI"] = regiondata.serverURI.ToString(); | ||
571 | parameters["?locX"] = regiondata.regionLocX.ToString(); | ||
572 | parameters["?locY"] = regiondata.regionLocY.ToString(); | ||
573 | parameters["?locZ"] = regiondata.regionLocZ.ToString(); | ||
574 | parameters["?eastOverrideHandle"] = regiondata.regionEastOverrideHandle.ToString(); | ||
575 | parameters["?westOverrideHandle"] = regiondata.regionWestOverrideHandle.ToString(); | ||
576 | parameters["?northOverrideHandle"] = regiondata.regionNorthOverrideHandle.ToString(); | ||
577 | parameters["?southOverrideHandle"] = regiondata.regionSouthOverrideHandle.ToString(); | ||
578 | parameters["?regionAssetURI"] = regiondata.regionAssetURI.ToString(); | ||
579 | parameters["?regionAssetRecvKey"] = regiondata.regionAssetRecvKey.ToString(); | ||
580 | parameters["?regionAssetSendKey"] = regiondata.regionAssetSendKey.ToString(); | ||
581 | parameters["?regionUserURI"] = regiondata.regionUserURI.ToString(); | ||
582 | parameters["?regionUserRecvKey"] = regiondata.regionUserRecvKey.ToString(); | ||
583 | parameters["?regionUserSendKey"] = regiondata.regionUserSendKey.ToString(); | ||
584 | parameters["?regionMapTexture"] = regiondata.regionMapTextureID.ToStringHyphenated(); | ||
585 | |||
586 | bool returnval = false; | ||
587 | |||
588 | try | ||
589 | { | ||
590 | |||
591 | IDbCommand result = Query(sql, parameters); | ||
592 | |||
593 | //Console.WriteLine(result.CommandText); | ||
594 | |||
595 | if (result.ExecuteNonQuery() == 1) | ||
596 | returnval = true; | ||
597 | |||
598 | result.Dispose(); | ||
599 | } | ||
600 | catch (Exception e) | ||
601 | { | ||
602 | Console.WriteLine(e.ToString()); | ||
603 | return false; | ||
604 | } | ||
605 | |||
606 | return returnval; | ||
607 | } | ||
608 | } | ||
609 | } | ||
diff --git a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs new file mode 100644 index 0000000..032a0e6 --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs | |||
@@ -0,0 +1,257 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenGrid.Framework.Data; | ||
32 | using libsecondlife; | ||
33 | |||
34 | namespace OpenGrid.Framework.Data.MySQL | ||
35 | { | ||
36 | /// <summary> | ||
37 | /// A database interface class to a user profile storage system | ||
38 | /// </summary> | ||
39 | class MySQLUserData : IUserData | ||
40 | { | ||
41 | /// <summary> | ||
42 | /// Database manager for MySQL | ||
43 | /// </summary> | ||
44 | public MySQLManager database; | ||
45 | |||
46 | /// <summary> | ||
47 | /// Loads and initialises the MySQL storage plugin | ||
48 | /// </summary> | ||
49 | public void Initialise() | ||
50 | { | ||
51 | // Load from an INI file connection details | ||
52 | // TODO: move this to XML? | ||
53 | IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); | ||
54 | string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); | ||
55 | string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); | ||
56 | string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); | ||
57 | string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | ||
58 | string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | ||
59 | string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | ||
60 | |||
61 | database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort); | ||
62 | } | ||
63 | |||
64 | /// <summary> | ||
65 | /// Searches the database for a specified user profile | ||
66 | /// </summary> | ||
67 | /// <param name="name">The account name of the user</param> | ||
68 | /// <returns>A user profile</returns> | ||
69 | public UserProfileData getUserByName(string name) | ||
70 | { | ||
71 | return getUserByName(name.Split(' ')[0], name.Split(' ')[1]); | ||
72 | } | ||
73 | |||
74 | /// <summary> | ||
75 | /// Searches the database for a specified user profile by name components | ||
76 | /// </summary> | ||
77 | /// <param name="user">The first part of the account name</param> | ||
78 | /// <param name="last">The second part of the account name</param> | ||
79 | /// <returns>A user profile</returns> | ||
80 | public UserProfileData getUserByName(string user, string last) | ||
81 | { | ||
82 | try | ||
83 | { | ||
84 | lock (database) | ||
85 | { | ||
86 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
87 | param["?first"] = user; | ||
88 | param["?second"] = last; | ||
89 | |||
90 | System.Data.IDbCommand result = database.Query("SELECT * FROM users WHERE username = ?first AND lastname = ?second", param); | ||
91 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
92 | |||
93 | UserProfileData row = database.readUserRow(reader); | ||
94 | |||
95 | reader.Close(); | ||
96 | result.Dispose(); | ||
97 | |||
98 | return row; | ||
99 | } | ||
100 | } | ||
101 | catch (Exception e) | ||
102 | { | ||
103 | database.Reconnect(); | ||
104 | Console.WriteLine(e.ToString()); | ||
105 | return null; | ||
106 | } | ||
107 | } | ||
108 | |||
109 | /// <summary> | ||
110 | /// Searches the database for a specified user profile by UUID | ||
111 | /// </summary> | ||
112 | /// <param name="uuid">The account ID</param> | ||
113 | /// <returns>The users profile</returns> | ||
114 | public UserProfileData getUserByUUID(LLUUID uuid) | ||
115 | { | ||
116 | try | ||
117 | { | ||
118 | lock (database) | ||
119 | { | ||
120 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
121 | param["?uuid"] = uuid.ToStringHyphenated(); | ||
122 | |||
123 | System.Data.IDbCommand result = database.Query("SELECT * FROM users WHERE UUID = ?uuid", param); | ||
124 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
125 | |||
126 | UserProfileData row = database.readUserRow(reader); | ||
127 | |||
128 | reader.Close(); | ||
129 | result.Dispose(); | ||
130 | |||
131 | return row; | ||
132 | } | ||
133 | } | ||
134 | catch (Exception e) | ||
135 | { | ||
136 | database.Reconnect(); | ||
137 | Console.WriteLine(e.ToString()); | ||
138 | return null; | ||
139 | } | ||
140 | } | ||
141 | |||
142 | /// <summary> | ||
143 | /// Returns a user session searching by name | ||
144 | /// </summary> | ||
145 | /// <param name="name">The account name</param> | ||
146 | /// <returns>The users session</returns> | ||
147 | public UserAgentData getAgentByName(string name) | ||
148 | { | ||
149 | return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]); | ||
150 | } | ||
151 | |||
152 | /// <summary> | ||
153 | /// Returns a user session by account name | ||
154 | /// </summary> | ||
155 | /// <param name="user">First part of the users account name</param> | ||
156 | /// <param name="last">Second part of the users account name</param> | ||
157 | /// <returns>The users session</returns> | ||
158 | public UserAgentData getAgentByName(string user, string last) | ||
159 | { | ||
160 | UserProfileData profile = getUserByName(user, last); | ||
161 | return getAgentByUUID(profile.UUID); | ||
162 | } | ||
163 | |||
164 | /// <summary> | ||
165 | /// Returns an agent session by account UUID | ||
166 | /// </summary> | ||
167 | /// <param name="uuid">The accounts UUID</param> | ||
168 | /// <returns>The users session</returns> | ||
169 | public UserAgentData getAgentByUUID(LLUUID uuid) | ||
170 | { | ||
171 | try | ||
172 | { | ||
173 | lock (database) | ||
174 | { | ||
175 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
176 | param["?uuid"] = uuid.ToStringHyphenated(); | ||
177 | |||
178 | System.Data.IDbCommand result = database.Query("SELECT * FROM agents WHERE UUID = ?uuid", param); | ||
179 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
180 | |||
181 | UserAgentData row = database.readAgentRow(reader); | ||
182 | |||
183 | reader.Close(); | ||
184 | result.Dispose(); | ||
185 | |||
186 | return row; | ||
187 | } | ||
188 | } | ||
189 | catch (Exception e) | ||
190 | { | ||
191 | database.Reconnect(); | ||
192 | Console.WriteLine(e.ToString()); | ||
193 | return null; | ||
194 | } | ||
195 | } | ||
196 | |||
197 | /// <summary> | ||
198 | /// Creates a new users profile | ||
199 | /// </summary> | ||
200 | /// <param name="user">The user profile to create</param> | ||
201 | public void addNewUserProfile(UserProfileData user) | ||
202 | { | ||
203 | } | ||
204 | |||
205 | /// <summary> | ||
206 | /// Creates a new agent | ||
207 | /// </summary> | ||
208 | /// <param name="agent">The agent to create</param> | ||
209 | public void addNewUserAgent(UserAgentData agent) | ||
210 | { | ||
211 | // Do nothing. | ||
212 | } | ||
213 | |||
214 | /// <summary> | ||
215 | /// Performs a money transfer request between two accounts | ||
216 | /// </summary> | ||
217 | /// <param name="from">The senders account ID</param> | ||
218 | /// <param name="to">The recievers account ID</param> | ||
219 | /// <param name="amount">The amount to transfer</param> | ||
220 | /// <returns>Success?</returns> | ||
221 | public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount) | ||
222 | { | ||
223 | return false; | ||
224 | } | ||
225 | |||
226 | /// <summary> | ||
227 | /// Performs an inventory transfer request between two accounts | ||
228 | /// </summary> | ||
229 | /// <remarks>TODO: Move to inventory server</remarks> | ||
230 | /// <param name="from">The senders account ID</param> | ||
231 | /// <param name="to">The recievers account ID</param> | ||
232 | /// <param name="item">The item to transfer</param> | ||
233 | /// <returns>Success?</returns> | ||
234 | public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item) | ||
235 | { | ||
236 | return false; | ||
237 | } | ||
238 | |||
239 | /// <summary> | ||
240 | /// Database provider name | ||
241 | /// </summary> | ||
242 | /// <returns>Provider name</returns> | ||
243 | public string getName() | ||
244 | { | ||
245 | return "MySQL Userdata Interface"; | ||
246 | } | ||
247 | |||
248 | /// <summary> | ||
249 | /// Database provider version | ||
250 | /// </summary> | ||
251 | /// <returns>provider version</returns> | ||
252 | public string getVersion() | ||
253 | { | ||
254 | return "0.1"; | ||
255 | } | ||
256 | } | ||
257 | } | ||
diff --git a/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj new file mode 100644 index 0000000..62e3887 --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj | |||
@@ -0,0 +1,117 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{17F7F6BE-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Data.MySQL</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Data.MySQL</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="libsecondlife.dll" > | ||
62 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="MySql.Data.dll" > | ||
66 | <HintPath>..\..\..\bin\MySql.Data.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System" > | ||
70 | <HintPath>System.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="System.Data" > | ||
74 | <HintPath>System.Data.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | <Reference Include="System.Xml" > | ||
78 | <HintPath>System.Xml.dll</HintPath> | ||
79 | <Private>False</Private> | ||
80 | </Reference> | ||
81 | </ItemGroup> | ||
82 | <ItemGroup> | ||
83 | <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj"> | ||
84 | <Name>OpenSim.Framework.Data</Name> | ||
85 | <Project>{36B72A9B-0000-0000-0000-000000000000}</Project> | ||
86 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
87 | <Private>False</Private> | ||
88 | </ProjectReference> | ||
89 | </ItemGroup> | ||
90 | <ItemGroup> | ||
91 | <Compile Include="MySQLGridData.cs"> | ||
92 | <SubType>Code</SubType> | ||
93 | </Compile> | ||
94 | <Compile Include="MySQLInventoryData.cs"> | ||
95 | <SubType>Code</SubType> | ||
96 | </Compile> | ||
97 | <Compile Include="MySQLLogData.cs"> | ||
98 | <SubType>Code</SubType> | ||
99 | </Compile> | ||
100 | <Compile Include="MySQLManager.cs"> | ||
101 | <SubType>Code</SubType> | ||
102 | </Compile> | ||
103 | <Compile Include="MySQLUserData.cs"> | ||
104 | <SubType>Code</SubType> | ||
105 | </Compile> | ||
106 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
107 | <SubType>Code</SubType> | ||
108 | </Compile> | ||
109 | </ItemGroup> | ||
110 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
111 | <PropertyGroup> | ||
112 | <PreBuildEvent> | ||
113 | </PreBuildEvent> | ||
114 | <PostBuildEvent> | ||
115 | </PostBuildEvent> | ||
116 | </PropertyGroup> | ||
117 | </Project> | ||
diff --git a/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj.user b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/OpenSim.Framework.Data.MySQL.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0bfd1d6 --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenGrid.Framework.Data.MySQL")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenGrid.Framework.Data.MySQL")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("e49826b2-dcef-41be-a5bd-596733fa3304")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | // You can specify all the values or you can default the Revision and Build Numbers | ||
33 | // by using the '*' as shown below: | ||
34 | [assembly: AssemblyVersion("1.0.0.0")] | ||
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj new file mode 100644 index 0000000..4ba24f1 --- /dev/null +++ b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj | |||
@@ -0,0 +1,108 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{6ECC56A9-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Data.SQLite</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Data.SQLite</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="libsecondlife.dll" > | ||
62 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="System" > | ||
66 | <HintPath>System.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System.Data" > | ||
70 | <HintPath>System.Data.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="System.Data.SQLite.dll" > | ||
74 | <HintPath>..\..\..\bin\System.Data.SQLite.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | <Reference Include="System.Xml" > | ||
78 | <HintPath>System.Xml.dll</HintPath> | ||
79 | <Private>False</Private> | ||
80 | </Reference> | ||
81 | </ItemGroup> | ||
82 | <ItemGroup> | ||
83 | <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj"> | ||
84 | <Name>OpenSim.Framework.Data</Name> | ||
85 | <Project>{36B72A9B-0000-0000-0000-000000000000}</Project> | ||
86 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
87 | <Private>False</Private> | ||
88 | </ProjectReference> | ||
89 | </ItemGroup> | ||
90 | <ItemGroup> | ||
91 | <Compile Include="SQLiteGridData.cs"> | ||
92 | <SubType>Code</SubType> | ||
93 | </Compile> | ||
94 | <Compile Include="SQLiteManager.cs"> | ||
95 | <SubType>Code</SubType> | ||
96 | </Compile> | ||
97 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
98 | <SubType>Code</SubType> | ||
99 | </Compile> | ||
100 | </ItemGroup> | ||
101 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
102 | <PropertyGroup> | ||
103 | <PreBuildEvent> | ||
104 | </PreBuildEvent> | ||
105 | <PostBuildEvent> | ||
106 | </PostBuildEvent> | ||
107 | </PropertyGroup> | ||
108 | </Project> | ||
diff --git a/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj.user b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Data.SQLite/OpenSim.Framework.Data.SQLite.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..57c4bae --- /dev/null +++ b/OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenGrid.Framework.Data.SQLite")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenGrid.Framework.Data.SQLite")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | // You can specify all the values or you can default the Revision and Build Numbers | ||
33 | // by using the '*' as shown below: | ||
34 | [assembly: AssemblyVersion("1.0.0.0")] | ||
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs b/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs new file mode 100644 index 0000000..d7a5a69 --- /dev/null +++ b/OpenSim/Framework/Data.SQLite/SQLiteGridData.cs | |||
@@ -0,0 +1,195 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenGrid.Framework.Data; | ||
32 | |||
33 | namespace OpenGrid.Framework.Data.SQLite | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// A Grid Interface to the SQLite database | ||
37 | /// </summary> | ||
38 | public class SQLiteGridData : IGridData | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// A database manager | ||
42 | /// </summary> | ||
43 | private SQLiteManager database; | ||
44 | |||
45 | /// <summary> | ||
46 | /// Initialises the Grid Interface | ||
47 | /// </summary> | ||
48 | public void Initialise() | ||
49 | { | ||
50 | database = new SQLiteManager("localhost", "db", "user", "password", "false"); | ||
51 | } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Shuts down the grid interface | ||
55 | /// </summary> | ||
56 | public void Close() | ||
57 | { | ||
58 | database.Close(); | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Returns the name of this grid interface | ||
63 | /// </summary> | ||
64 | /// <returns>A string containing the grid interface</returns> | ||
65 | public string getName() | ||
66 | { | ||
67 | return "SQLite OpenGridData"; | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Returns the version of this grid interface | ||
72 | /// </summary> | ||
73 | /// <returns>A string containing the version</returns> | ||
74 | public string getVersion() | ||
75 | { | ||
76 | return "0.1"; | ||
77 | } | ||
78 | |||
79 | /// <summary> | ||
80 | /// Returns a list of regions within the specified ranges | ||
81 | /// </summary> | ||
82 | /// <param name="a">minimum X coordinate</param> | ||
83 | /// <param name="b">minimum Y coordinate</param> | ||
84 | /// <param name="c">maximum X coordinate</param> | ||
85 | /// <param name="d">maximum Y coordinate</param> | ||
86 | /// <returns>An array of region profiles</returns> | ||
87 | public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d) | ||
88 | { | ||
89 | return null; | ||
90 | } | ||
91 | |||
92 | /// <summary> | ||
93 | /// Returns a sim profile from it's location | ||
94 | /// </summary> | ||
95 | /// <param name="handle">Region location handle</param> | ||
96 | /// <returns>Sim profile</returns> | ||
97 | public SimProfileData GetProfileByHandle(ulong handle) | ||
98 | { | ||
99 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
100 | param["handle"] = handle.ToString(); | ||
101 | |||
102 | System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param); | ||
103 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
104 | |||
105 | SimProfileData row = database.getRow(reader); | ||
106 | reader.Close(); | ||
107 | result.Dispose(); | ||
108 | |||
109 | return row; | ||
110 | } | ||
111 | |||
112 | /// <summary> | ||
113 | /// Returns a sim profile from it's UUID | ||
114 | /// </summary> | ||
115 | /// <param name="uuid">The region UUID</param> | ||
116 | /// <returns>The sim profile</returns> | ||
117 | public SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID uuid) | ||
118 | { | ||
119 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
120 | param["uuid"] = uuid.ToStringHyphenated(); | ||
121 | |||
122 | System.Data.IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); | ||
123 | System.Data.IDataReader reader = result.ExecuteReader(); | ||
124 | |||
125 | SimProfileData row = database.getRow(reader); | ||
126 | reader.Close(); | ||
127 | result.Dispose(); | ||
128 | |||
129 | return row; | ||
130 | } | ||
131 | |||
132 | /// <summary> | ||
133 | /// Adds a new specified region to the database | ||
134 | /// </summary> | ||
135 | /// <param name="profile">The profile to add</param> | ||
136 | /// <returns>A dataresponse enum indicating success</returns> | ||
137 | public DataResponse AddProfile(SimProfileData profile) | ||
138 | { | ||
139 | if (database.insertRow(profile)) | ||
140 | { | ||
141 | return DataResponse.RESPONSE_OK; | ||
142 | } | ||
143 | else | ||
144 | { | ||
145 | return DataResponse.RESPONSE_ERROR; | ||
146 | } | ||
147 | } | ||
148 | |||
149 | /// <summary> | ||
150 | /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret. | ||
151 | /// </summary> | ||
152 | /// <param name="uuid">The UUID of the challenger</param> | ||
153 | /// <param name="handle">The attempted regionHandle of the challenger</param> | ||
154 | /// <param name="authkey">The secret</param> | ||
155 | /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns> | ||
156 | public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authkey) | ||
157 | { | ||
158 | bool throwHissyFit = false; // Should be true by 1.0 | ||
159 | |||
160 | if (throwHissyFit) | ||
161 | throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential."); | ||
162 | |||
163 | SimProfileData data = GetProfileByLLUUID(uuid); | ||
164 | |||
165 | return (handle == data.regionHandle && authkey == data.regionSecret); | ||
166 | } | ||
167 | |||
168 | /// <summary> | ||
169 | /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region | ||
170 | /// </summary> | ||
171 | /// <remarks>This requires a security audit.</remarks> | ||
172 | /// <param name="uuid"></param> | ||
173 | /// <param name="handle"></param> | ||
174 | /// <param name="authhash"></param> | ||
175 | /// <param name="challenge"></param> | ||
176 | /// <returns></returns> | ||
177 | public bool AuthenticateSim(libsecondlife.LLUUID uuid, ulong handle, string authhash, string challenge) | ||
178 | { | ||
179 | System.Security.Cryptography.SHA512Managed HashProvider = new System.Security.Cryptography.SHA512Managed(); | ||
180 | System.Text.ASCIIEncoding TextProvider = new ASCIIEncoding(); | ||
181 | |||
182 | byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge); | ||
183 | byte[] hash = HashProvider.ComputeHash(stream); | ||
184 | |||
185 | return false; | ||
186 | } | ||
187 | |||
188 | public ReservationData GetReservationAtPoint(uint x, uint y) | ||
189 | { | ||
190 | return null; | ||
191 | } | ||
192 | } | ||
193 | |||
194 | |||
195 | } | ||
diff --git a/OpenSim/Framework/Data.SQLite/SQLiteManager.cs b/OpenSim/Framework/Data.SQLite/SQLiteManager.cs new file mode 100644 index 0000000..9689356 --- /dev/null +++ b/OpenSim/Framework/Data.SQLite/SQLiteManager.cs | |||
@@ -0,0 +1,209 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.Data; | ||
32 | |||
33 | using System.Data.SQLite; | ||
34 | |||
35 | using OpenGrid.Framework.Data; | ||
36 | |||
37 | namespace OpenGrid.Framework.Data.SQLite | ||
38 | { | ||
39 | class SQLiteManager | ||
40 | { | ||
41 | IDbConnection dbcon; | ||
42 | |||
43 | /// <summary> | ||
44 | /// Initialises and creates a new SQLite connection and maintains it. | ||
45 | /// </summary> | ||
46 | /// <param name="hostname">The SQLite server being connected to</param> | ||
47 | /// <param name="database">The name of the SQLite database being used</param> | ||
48 | /// <param name="username">The username logging into the database</param> | ||
49 | /// <param name="password">The password for the user logging in</param> | ||
50 | /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> | ||
51 | public SQLiteManager(string hostname, string database, string username, string password, string cpooling) | ||
52 | { | ||
53 | try | ||
54 | { | ||
55 | string connectionString = "URI=file:GridServerSqlite.db;"; | ||
56 | dbcon = new SQLiteConnection(connectionString); | ||
57 | |||
58 | dbcon.Open(); | ||
59 | } | ||
60 | catch (Exception e) | ||
61 | { | ||
62 | throw new Exception("Error initialising SQLite Database: " + e.ToString()); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | /// <summary> | ||
67 | /// Shuts down the database connection | ||
68 | /// </summary> | ||
69 | public void Close() | ||
70 | { | ||
71 | dbcon.Close(); | ||
72 | dbcon = null; | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Runs a query with protection against SQL Injection by using parameterised input. | ||
77 | /// </summary> | ||
78 | /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> | ||
79 | /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param> | ||
80 | /// <returns>A SQLite DB Command</returns> | ||
81 | public IDbCommand Query(string sql, Dictionary<string, string> parameters) | ||
82 | { | ||
83 | SQLiteCommand dbcommand = (SQLiteCommand)dbcon.CreateCommand(); | ||
84 | dbcommand.CommandText = sql; | ||
85 | foreach (KeyValuePair<string, string> param in parameters) | ||
86 | { | ||
87 | SQLiteParameter paramx = new SQLiteParameter(param.Key,param.Value); | ||
88 | dbcommand.Parameters.Add(paramx); | ||
89 | } | ||
90 | |||
91 | return (IDbCommand)dbcommand; | ||
92 | } | ||
93 | |||
94 | /// <summary> | ||
95 | /// Reads a region row from a database reader | ||
96 | /// </summary> | ||
97 | /// <param name="reader">An active database reader</param> | ||
98 | /// <returns>A region profile</returns> | ||
99 | public SimProfileData getRow(IDataReader reader) | ||
100 | { | ||
101 | SimProfileData retval = new SimProfileData(); | ||
102 | |||
103 | if (reader.Read()) | ||
104 | { | ||
105 | // Region Main | ||
106 | retval.regionHandle = (ulong)reader["regionHandle"]; | ||
107 | retval.regionName = (string)reader["regionName"]; | ||
108 | retval.UUID = new libsecondlife.LLUUID((string)reader["uuid"]); | ||
109 | |||
110 | // Secrets | ||
111 | retval.regionRecvKey = (string)reader["regionRecvKey"]; | ||
112 | retval.regionSecret = (string)reader["regionSecret"]; | ||
113 | retval.regionSendKey = (string)reader["regionSendKey"]; | ||
114 | |||
115 | // Region Server | ||
116 | retval.regionDataURI = (string)reader["regionDataURI"]; | ||
117 | retval.regionOnline = false; // Needs to be pinged before this can be set. | ||
118 | retval.serverIP = (string)reader["serverIP"]; | ||
119 | retval.serverPort = (uint)reader["serverPort"]; | ||
120 | retval.serverURI = (string)reader["serverURI"]; | ||
121 | |||
122 | // Location | ||
123 | retval.regionLocX = (uint)((int)reader["locX"]); | ||
124 | retval.regionLocY = (uint)((int)reader["locY"]); | ||
125 | retval.regionLocZ = (uint)((int)reader["locZ"]); | ||
126 | |||
127 | // Neighbours - 0 = No Override | ||
128 | retval.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"]; | ||
129 | retval.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"]; | ||
130 | retval.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"]; | ||
131 | retval.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"]; | ||
132 | |||
133 | // Assets | ||
134 | retval.regionAssetURI = (string)reader["regionAssetURI"]; | ||
135 | retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"]; | ||
136 | retval.regionAssetSendKey = (string)reader["regionAssetSendKey"]; | ||
137 | |||
138 | // Userserver | ||
139 | retval.regionUserURI = (string)reader["regionUserURI"]; | ||
140 | retval.regionUserRecvKey = (string)reader["regionUserRecvKey"]; | ||
141 | retval.regionUserSendKey = (string)reader["regionUserSendKey"]; | ||
142 | } | ||
143 | else | ||
144 | { | ||
145 | throw new Exception("No rows to return"); | ||
146 | } | ||
147 | return retval; | ||
148 | } | ||
149 | |||
150 | /// <summary> | ||
151 | /// Inserts a new region into the database | ||
152 | /// </summary> | ||
153 | /// <param name="profile">The region to insert</param> | ||
154 | /// <returns>Success?</returns> | ||
155 | public bool insertRow(SimProfileData profile) | ||
156 | { | ||
157 | string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, "; | ||
158 | sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, "; | ||
159 | sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES "; | ||
160 | |||
161 | sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, "; | ||
162 | sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, "; | ||
163 | sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);"; | ||
164 | |||
165 | Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||
166 | |||
167 | parameters["regionHandle"] = profile.regionHandle.ToString(); | ||
168 | parameters["regionName"] = profile.regionName; | ||
169 | parameters["uuid"] = profile.UUID.ToString(); | ||
170 | parameters["regionRecvKey"] = profile.regionRecvKey; | ||
171 | parameters["regionSendKey"] = profile.regionSendKey; | ||
172 | parameters["regionDataURI"] = profile.regionDataURI; | ||
173 | parameters["serverIP"] = profile.serverIP; | ||
174 | parameters["serverPort"] = profile.serverPort.ToString(); | ||
175 | parameters["serverURI"] = profile.serverURI; | ||
176 | parameters["locX"] = profile.regionLocX.ToString(); | ||
177 | parameters["locY"] = profile.regionLocY.ToString(); | ||
178 | parameters["locZ"] = profile.regionLocZ.ToString(); | ||
179 | parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString(); | ||
180 | parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString(); | ||
181 | parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString(); | ||
182 | parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString(); | ||
183 | parameters["regionAssetURI"] = profile.regionAssetURI; | ||
184 | parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey; | ||
185 | parameters["regionAssetSendKey"] = profile.regionAssetSendKey; | ||
186 | parameters["regionUserURI"] = profile.regionUserURI; | ||
187 | parameters["regionUserRecvKey"] = profile.regionUserRecvKey; | ||
188 | parameters["regionUserSendKey"] = profile.regionUserSendKey; | ||
189 | |||
190 | bool returnval = false; | ||
191 | |||
192 | try | ||
193 | { | ||
194 | IDbCommand result = Query(sql, parameters); | ||
195 | |||
196 | if (result.ExecuteNonQuery() == 1) | ||
197 | returnval = true; | ||
198 | |||
199 | result.Dispose(); | ||
200 | } | ||
201 | catch (Exception e) | ||
202 | { | ||
203 | return false; | ||
204 | } | ||
205 | |||
206 | return returnval; | ||
207 | } | ||
208 | } | ||
209 | } | ||
diff --git a/OpenSim/Framework/Data/GridData.cs b/OpenSim/Framework/Data/GridData.cs new file mode 100644 index 0000000..7f8fdaf --- /dev/null +++ b/OpenSim/Framework/Data/GridData.cs | |||
@@ -0,0 +1,113 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Framework.Data | ||
33 | { | ||
34 | public enum DataResponse | ||
35 | { | ||
36 | RESPONSE_OK, | ||
37 | RESPONSE_AUTHREQUIRED, | ||
38 | RESPONSE_INVALIDCREDENTIALS, | ||
39 | RESPONSE_ERROR | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// A standard grid interface | ||
44 | /// </summary> | ||
45 | public interface IGridData | ||
46 | { | ||
47 | /// <summary> | ||
48 | /// Returns a sim profile from a regionHandle | ||
49 | /// </summary> | ||
50 | /// <param name="regionHandle">A 64bit Region Handle</param> | ||
51 | /// <returns>A simprofile</returns> | ||
52 | SimProfileData GetProfileByHandle(ulong regionHandle); | ||
53 | |||
54 | /// <summary> | ||
55 | /// Returns a sim profile from a UUID | ||
56 | /// </summary> | ||
57 | /// <param name="UUID">A 128bit UUID</param> | ||
58 | /// <returns>A sim profile</returns> | ||
59 | SimProfileData GetProfileByLLUUID(libsecondlife.LLUUID UUID); | ||
60 | |||
61 | /// <summary> | ||
62 | /// Returns all profiles within the specified range | ||
63 | /// </summary> | ||
64 | /// <param name="Xmin">Minimum sim coordinate (X)</param> | ||
65 | /// <param name="Ymin">Minimum sim coordinate (Y)</param> | ||
66 | /// <param name="Xmax">Maximum sim coordinate (X)</param> | ||
67 | /// <param name="Ymin">Maximum sim coordinate (Y)</param> | ||
68 | /// <returns>An array containing all the sim profiles in the specified range</returns> | ||
69 | SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); | ||
70 | |||
71 | /// <summary> | ||
72 | /// Authenticates a sim by use of it's recv key. | ||
73 | /// WARNING: Insecure | ||
74 | /// </summary> | ||
75 | /// <param name="UUID">The UUID sent by the sim</param> | ||
76 | /// <param name="regionHandle">The regionhandle sent by the sim</param> | ||
77 | /// <param name="simrecvkey">The recieving key sent by the sim</param> | ||
78 | /// <returns>Whether the sim has been authenticated</returns> | ||
79 | bool AuthenticateSim(libsecondlife.LLUUID UUID, ulong regionHandle, string simrecvkey); | ||
80 | |||
81 | /// <summary> | ||
82 | /// Initialises the interface | ||
83 | /// </summary> | ||
84 | void Initialise(); | ||
85 | |||
86 | /// <summary> | ||
87 | /// Closes the interface | ||
88 | /// </summary> | ||
89 | void Close(); | ||
90 | |||
91 | /// <summary> | ||
92 | /// The plugin being loaded | ||
93 | /// </summary> | ||
94 | /// <returns>A string containing the plugin name</returns> | ||
95 | string getName(); | ||
96 | |||
97 | /// <summary> | ||
98 | /// The plugins version | ||
99 | /// </summary> | ||
100 | /// <returns>A string containing the plugin version</returns> | ||
101 | string getVersion(); | ||
102 | |||
103 | /// <summary> | ||
104 | /// Adds a new profile to the database | ||
105 | /// </summary> | ||
106 | /// <param name="profile">The profile to add</param> | ||
107 | /// <returns>RESPONSE_OK if successful, error if not.</returns> | ||
108 | DataResponse AddProfile(SimProfileData profile); | ||
109 | |||
110 | ReservationData GetReservationAtPoint(uint x, uint y); | ||
111 | |||
112 | } | ||
113 | } | ||
diff --git a/OpenSim/Framework/Data/ILogData.cs b/OpenSim/Framework/Data/ILogData.cs new file mode 100644 index 0000000..ccb3b84 --- /dev/null +++ b/OpenSim/Framework/Data/ILogData.cs | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Framework.Data | ||
33 | { | ||
34 | /// <summary> | ||
35 | /// The severity of an individual log message | ||
36 | /// </summary> | ||
37 | public enum LogSeverity : int | ||
38 | { | ||
39 | /// <summary> | ||
40 | /// Critical: systems failure | ||
41 | /// </summary> | ||
42 | CRITICAL = 1, | ||
43 | /// <summary> | ||
44 | /// Major: warning prior to systems failure | ||
45 | /// </summary> | ||
46 | MAJOR = 2, | ||
47 | /// <summary> | ||
48 | /// Medium: an individual non-critical task failed | ||
49 | /// </summary> | ||
50 | MEDIUM = 3, | ||
51 | /// <summary> | ||
52 | /// Low: Informational warning | ||
53 | /// </summary> | ||
54 | LOW = 4, | ||
55 | /// <summary> | ||
56 | /// Info: Information | ||
57 | /// </summary> | ||
58 | INFO = 5, | ||
59 | /// <summary> | ||
60 | /// Verbose: Debug Information | ||
61 | /// </summary> | ||
62 | VERBOSE = 6 | ||
63 | } | ||
64 | |||
65 | /// <summary> | ||
66 | /// An interface to a LogData storage system | ||
67 | /// </summary> | ||
68 | public interface ILogData | ||
69 | { | ||
70 | void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,string logMessage); | ||
71 | /// <summary> | ||
72 | /// Initialises the interface | ||
73 | /// </summary> | ||
74 | void Initialise(); | ||
75 | |||
76 | /// <summary> | ||
77 | /// Closes the interface | ||
78 | /// </summary> | ||
79 | void Close(); | ||
80 | |||
81 | /// <summary> | ||
82 | /// The plugin being loaded | ||
83 | /// </summary> | ||
84 | /// <returns>A string containing the plugin name</returns> | ||
85 | string getName(); | ||
86 | |||
87 | /// <summary> | ||
88 | /// The plugins version | ||
89 | /// </summary> | ||
90 | /// <returns>A string containing the plugin version</returns> | ||
91 | string getVersion(); | ||
92 | } | ||
93 | |||
94 | } | ||
diff --git a/OpenSim/Framework/Data/IniConfig.cs b/OpenSim/Framework/Data/IniConfig.cs new file mode 100644 index 0000000..2f002c1 --- /dev/null +++ b/OpenSim/Framework/Data/IniConfig.cs | |||
@@ -0,0 +1,100 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.IO; | ||
32 | using System.Text.RegularExpressions; | ||
33 | |||
34 | /* | ||
35 | Taken from public code listing at by Alex Pinsker | ||
36 | http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html | ||
37 | */ | ||
38 | |||
39 | namespace OpenSim.Framework.Data | ||
40 | { | ||
41 | /// <summary> | ||
42 | /// Parse settings from ini-like files | ||
43 | /// </summary> | ||
44 | public class IniFile | ||
45 | { | ||
46 | static IniFile() | ||
47 | { | ||
48 | _iniKeyValuePatternRegex = new Regex( | ||
49 | @"((\s)*(?<Key>([^\=^\s^\n]+))[\s^\n]* | ||
50 | # key part (surrounding whitespace stripped) | ||
51 | \= | ||
52 | (\s)*(?<Value>([^\n^\s]+(\n){0,1}))) | ||
53 | # value part (surrounding whitespace stripped) | ||
54 | ", | ||
55 | RegexOptions.IgnorePatternWhitespace | | ||
56 | RegexOptions.Compiled | | ||
57 | RegexOptions.CultureInvariant); | ||
58 | } | ||
59 | static private Regex _iniKeyValuePatternRegex; | ||
60 | |||
61 | public IniFile(string iniFileName) | ||
62 | { | ||
63 | _iniFileName = iniFileName; | ||
64 | } | ||
65 | |||
66 | public string ParseFileReadValue(string key) | ||
67 | { | ||
68 | using (StreamReader reader = | ||
69 | new StreamReader(_iniFileName)) | ||
70 | { | ||
71 | do | ||
72 | { | ||
73 | string line = reader.ReadLine(); | ||
74 | Match match = | ||
75 | _iniKeyValuePatternRegex.Match(line); | ||
76 | if (match.Success) | ||
77 | { | ||
78 | string currentKey = | ||
79 | match.Groups["Key"].Value as string; | ||
80 | if (currentKey != null && | ||
81 | currentKey.Trim().CompareTo(key) == 0) | ||
82 | { | ||
83 | string value = | ||
84 | match.Groups["Value"].Value as string; | ||
85 | return value; | ||
86 | } | ||
87 | } | ||
88 | |||
89 | } | ||
90 | while (reader.Peek() != -1); | ||
91 | } | ||
92 | return null; | ||
93 | } | ||
94 | |||
95 | public string IniFileName | ||
96 | { | ||
97 | get { return _iniFileName; } | ||
98 | } private string _iniFileName; | ||
99 | } | ||
100 | } | ||
diff --git a/OpenSim/Framework/Data/InventoryData.cs b/OpenSim/Framework/Data/InventoryData.cs new file mode 100644 index 0000000..8a3a664 --- /dev/null +++ b/OpenSim/Framework/Data/InventoryData.cs | |||
@@ -0,0 +1,187 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Data | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// Inventory Item - contains all the properties associated with an individual inventory piece. | ||
37 | /// </summary> | ||
38 | public class InventoryItemBase | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// A UUID containing the ID for the inventory item itself | ||
42 | /// </summary> | ||
43 | public LLUUID inventoryID; | ||
44 | /// <summary> | ||
45 | /// The UUID of the associated asset on the asset server | ||
46 | /// </summary> | ||
47 | public LLUUID assetID; | ||
48 | /// <summary> | ||
49 | /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc) | ||
50 | /// </summary> | ||
51 | public int type; | ||
52 | /// <summary> | ||
53 | /// The folder this item is contained in (NULL_KEY = Inventory Root) | ||
54 | /// </summary> | ||
55 | public LLUUID parentFolderID; | ||
56 | /// <summary> | ||
57 | /// The owner of this inventory item | ||
58 | /// </summary> | ||
59 | public LLUUID avatarID; | ||
60 | /// <summary> | ||
61 | /// The name of the inventory item (must be less than 64 characters) | ||
62 | /// </summary> | ||
63 | public string inventoryName; | ||
64 | /// <summary> | ||
65 | /// The description of the inventory item (must be less than 64 characters) | ||
66 | /// </summary> | ||
67 | public string inventoryDescription; | ||
68 | /// <summary> | ||
69 | /// A mask containing the permissions for the next owner (cannot be enforced) | ||
70 | /// </summary> | ||
71 | public uint inventoryNextPermissions; | ||
72 | /// <summary> | ||
73 | /// A mask containing permissions for the current owner (cannot be enforced) | ||
74 | /// </summary> | ||
75 | public uint inventoryCurrentPermissions; | ||
76 | } | ||
77 | |||
78 | /// <summary> | ||
79 | /// A Class for folders which contain users inventory | ||
80 | /// </summary> | ||
81 | public class InventoryFolderBase | ||
82 | { | ||
83 | /// <summary> | ||
84 | /// The name of the folder (64 characters or less) | ||
85 | /// </summary> | ||
86 | public string name; | ||
87 | /// <summary> | ||
88 | /// The agent who's inventory this is contained by | ||
89 | /// </summary> | ||
90 | public LLUUID agentID; | ||
91 | /// <summary> | ||
92 | /// The folder this folder is contained in (NULL_KEY for root) | ||
93 | /// </summary> | ||
94 | public LLUUID parentID; | ||
95 | /// <summary> | ||
96 | /// The UUID for this folder | ||
97 | /// </summary> | ||
98 | public LLUUID folderID; | ||
99 | } | ||
100 | |||
101 | /// <summary> | ||
102 | /// An interface for accessing inventory data from a storage server | ||
103 | /// </summary> | ||
104 | public interface IInventoryData | ||
105 | { | ||
106 | /// <summary> | ||
107 | /// Initialises the interface | ||
108 | /// </summary> | ||
109 | void Initialise(); | ||
110 | |||
111 | /// <summary> | ||
112 | /// Closes the interface | ||
113 | /// </summary> | ||
114 | void Close(); | ||
115 | |||
116 | /// <summary> | ||
117 | /// The plugin being loaded | ||
118 | /// </summary> | ||
119 | /// <returns>A string containing the plugin name</returns> | ||
120 | string getName(); | ||
121 | |||
122 | /// <summary> | ||
123 | /// The plugins version | ||
124 | /// </summary> | ||
125 | /// <returns>A string containing the plugin version</returns> | ||
126 | string getVersion(); | ||
127 | |||
128 | /// <summary> | ||
129 | /// Returns a list of inventory items contained within the specified folder | ||
130 | /// </summary> | ||
131 | /// <param name="folderID">The UUID of the target folder</param> | ||
132 | /// <returns>A List of InventoryItemBase items</returns> | ||
133 | List<InventoryItemBase> getInventoryInFolder(LLUUID folderID); | ||
134 | |||
135 | /// <summary> | ||
136 | /// Returns a list of folders in the users inventory root. | ||
137 | /// </summary> | ||
138 | /// <param name="user">The UUID of the user who is having inventory being returned</param> | ||
139 | /// <returns>A list of folders</returns> | ||
140 | List<InventoryFolderBase> getUserRootFolders(LLUUID user); | ||
141 | |||
142 | /// <summary> | ||
143 | /// Returns a list of inventory folders contained in the folder 'parentID' | ||
144 | /// </summary> | ||
145 | /// <param name="parentID">The folder to get subfolders for</param> | ||
146 | /// <returns>A list of inventory folders</returns> | ||
147 | List<InventoryFolderBase> getInventoryFolders(LLUUID parentID); | ||
148 | |||
149 | /// <summary> | ||
150 | /// Returns an inventory item by its UUID | ||
151 | /// </summary> | ||
152 | /// <param name="item">The UUID of the item to be returned</param> | ||
153 | /// <returns>A class containing item information</returns> | ||
154 | InventoryItemBase getInventoryItem(LLUUID item); | ||
155 | |||
156 | /// <summary> | ||
157 | /// Returns a specified inventory folder by its UUID | ||
158 | /// </summary> | ||
159 | /// <param name="folder">The UUID of the folder to be returned</param> | ||
160 | /// <returns>A class containing folder information</returns> | ||
161 | InventoryFolderBase getInventoryFolder(LLUUID folder); | ||
162 | |||
163 | /// <summary> | ||
164 | /// Creates a new inventory item based on item | ||
165 | /// </summary> | ||
166 | /// <param name="item">The item to be created</param> | ||
167 | void addInventoryItem(InventoryItemBase item); | ||
168 | |||
169 | /// <summary> | ||
170 | /// Updates an inventory item with item (updates based on ID) | ||
171 | /// </summary> | ||
172 | /// <param name="item">The updated item</param> | ||
173 | void updateInventoryItem(InventoryItemBase item); | ||
174 | |||
175 | /// <summary> | ||
176 | /// Adds a new folder specified by folder | ||
177 | /// </summary> | ||
178 | /// <param name="folder">The inventory folder</param> | ||
179 | void addInventoryFolder(InventoryFolderBase folder); | ||
180 | |||
181 | /// <summary> | ||
182 | /// Updates a folder based on its ID with folder | ||
183 | /// </summary> | ||
184 | /// <param name="folder">The inventory folder</param> | ||
185 | void updateInventoryFolder(InventoryFolderBase folder); | ||
186 | } | ||
187 | } | ||
diff --git a/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj new file mode 100644 index 0000000..dcafbcd --- /dev/null +++ b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj | |||
@@ -0,0 +1,116 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{36B72A9B-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Data</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Data</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="libsecondlife.dll" > | ||
62 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="System" > | ||
66 | <HintPath>System.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System.Data" > | ||
70 | <HintPath>System.Data.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="System.Xml" > | ||
74 | <HintPath>System.Xml.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | </ItemGroup> | ||
78 | <ItemGroup> | ||
79 | </ItemGroup> | ||
80 | <ItemGroup> | ||
81 | <Compile Include="GridData.cs"> | ||
82 | <SubType>Code</SubType> | ||
83 | </Compile> | ||
84 | <Compile Include="ILogData.cs"> | ||
85 | <SubType>Code</SubType> | ||
86 | </Compile> | ||
87 | <Compile Include="IniConfig.cs"> | ||
88 | <SubType>Code</SubType> | ||
89 | </Compile> | ||
90 | <Compile Include="InventoryData.cs"> | ||
91 | <SubType>Code</SubType> | ||
92 | </Compile> | ||
93 | <Compile Include="ReservationData.cs"> | ||
94 | <SubType>Code</SubType> | ||
95 | </Compile> | ||
96 | <Compile Include="SimProfileData.cs"> | ||
97 | <SubType>Code</SubType> | ||
98 | </Compile> | ||
99 | <Compile Include="UserData.cs"> | ||
100 | <SubType>Code</SubType> | ||
101 | </Compile> | ||
102 | <Compile Include="UserProfileData.cs"> | ||
103 | <SubType>Code</SubType> | ||
104 | </Compile> | ||
105 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
106 | <SubType>Code</SubType> | ||
107 | </Compile> | ||
108 | </ItemGroup> | ||
109 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
110 | <PropertyGroup> | ||
111 | <PreBuildEvent> | ||
112 | </PreBuildEvent> | ||
113 | <PostBuildEvent> | ||
114 | </PostBuildEvent> | ||
115 | </PropertyGroup> | ||
116 | </Project> | ||
diff --git a/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj.user b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Data/OpenSim.Framework.Data.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Data/Properties/AssemblyInfo.cs b/OpenSim/Framework/Data/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1446673 --- /dev/null +++ b/OpenSim/Framework/Data/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenGrid.Framework.Data")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenGrid.Framework.Data")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | // You can specify all the values or you can default the Revision and Build Numbers | ||
33 | // by using the '*' as shown below: | ||
34 | [assembly: AssemblyVersion("1.0.0.0")] | ||
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/Data/ReservationData.cs b/OpenSim/Framework/Data/ReservationData.cs new file mode 100644 index 0000000..f404ebd --- /dev/null +++ b/OpenSim/Framework/Data/ReservationData.cs | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | using libsecondlife; | ||
33 | |||
34 | namespace OpenSim.Framework.Data | ||
35 | { | ||
36 | public class ReservationData | ||
37 | { | ||
38 | public LLUUID userUUID = new LLUUID(); | ||
39 | public int reservationMinX = 0; | ||
40 | public int reservationMinY = 0; | ||
41 | public int reservationMaxX = 65536; | ||
42 | public int reservationMaxY = 65536; | ||
43 | |||
44 | public string reservationName = ""; | ||
45 | public string reservationCompany = ""; | ||
46 | public bool status = true; | ||
47 | |||
48 | public string gridSendKey = ""; | ||
49 | public string gridRecvKey = ""; | ||
50 | } | ||
51 | } | ||
diff --git a/OpenSim/Framework/Data/SimProfileData.cs b/OpenSim/Framework/Data/SimProfileData.cs new file mode 100644 index 0000000..201aa01 --- /dev/null +++ b/OpenSim/Framework/Data/SimProfileData.cs | |||
@@ -0,0 +1,114 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Framework.Data | ||
33 | { | ||
34 | /// <summary> | ||
35 | /// A class which contains information known to the grid server about a region | ||
36 | /// </summary> | ||
37 | public class SimProfileData | ||
38 | { | ||
39 | /// <summary> | ||
40 | /// The name of the region | ||
41 | /// </summary> | ||
42 | public string regionName = ""; | ||
43 | |||
44 | /// <summary> | ||
45 | /// A 64-bit number combining map position into a (mostly) unique ID | ||
46 | /// </summary> | ||
47 | public ulong regionHandle; | ||
48 | |||
49 | /// <summary> | ||
50 | /// OGS/OpenSim Specific ID for a region | ||
51 | /// </summary> | ||
52 | public libsecondlife.LLUUID UUID; | ||
53 | |||
54 | /// <summary> | ||
55 | /// Coordinates of the region | ||
56 | /// </summary> | ||
57 | public uint regionLocX; | ||
58 | public uint regionLocY; | ||
59 | public uint regionLocZ; // Reserved (round-robin, layers, etc) | ||
60 | |||
61 | /// <summary> | ||
62 | /// Authentication secrets | ||
63 | /// </summary> | ||
64 | /// <remarks>Not very secure, needs improvement.</remarks> | ||
65 | public string regionSendKey = ""; | ||
66 | public string regionRecvKey = ""; | ||
67 | public string regionSecret = ""; | ||
68 | |||
69 | /// <summary> | ||
70 | /// Whether the region is online | ||
71 | /// </summary> | ||
72 | public bool regionOnline; | ||
73 | |||
74 | /// <summary> | ||
75 | /// Information about the server that the region is currently hosted on | ||
76 | /// </summary> | ||
77 | public string serverIP = ""; | ||
78 | public uint serverPort; | ||
79 | public string serverURI = ""; | ||
80 | |||
81 | /// <summary> | ||
82 | /// Set of optional overrides. Can be used to create non-eulicidean spaces. | ||
83 | /// </summary> | ||
84 | public ulong regionNorthOverrideHandle; | ||
85 | public ulong regionSouthOverrideHandle; | ||
86 | public ulong regionEastOverrideHandle; | ||
87 | public ulong regionWestOverrideHandle; | ||
88 | |||
89 | /// <summary> | ||
90 | /// Optional: URI Location of the region database | ||
91 | /// </summary> | ||
92 | /// <remarks>Used for floating sim pools where the region data is not nessecarily coupled to a specific server</remarks> | ||
93 | public string regionDataURI = ""; | ||
94 | |||
95 | /// <summary> | ||
96 | /// Region Asset Details | ||
97 | /// </summary> | ||
98 | public string regionAssetURI = ""; | ||
99 | public string regionAssetSendKey = ""; | ||
100 | public string regionAssetRecvKey = ""; | ||
101 | |||
102 | /// <summary> | ||
103 | /// Region Userserver Details | ||
104 | /// </summary> | ||
105 | public string regionUserURI = ""; | ||
106 | public string regionUserSendKey = ""; | ||
107 | public string regionUserRecvKey = ""; | ||
108 | |||
109 | /// <summary> | ||
110 | /// Region Map Texture Asset | ||
111 | /// </summary> | ||
112 | public libsecondlife.LLUUID regionMapTextureID = new libsecondlife.LLUUID("00000000-0000-0000-9999-000000000006"); | ||
113 | } | ||
114 | } | ||
diff --git a/OpenSim/Framework/Data/UserData.cs b/OpenSim/Framework/Data/UserData.cs new file mode 100644 index 0000000..2e15b47 --- /dev/null +++ b/OpenSim/Framework/Data/UserData.cs | |||
@@ -0,0 +1,131 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Data | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// An interface for connecting to user storage servers. | ||
37 | /// </summary> | ||
38 | public interface IUserData | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// Returns a user profile from a database via their UUID | ||
42 | /// </summary> | ||
43 | /// <param name="user">The accounts UUID</param> | ||
44 | /// <returns>The user data profile</returns> | ||
45 | UserProfileData getUserByUUID(LLUUID user); | ||
46 | |||
47 | /// <summary> | ||
48 | /// Returns a users profile by searching their username | ||
49 | /// </summary> | ||
50 | /// <param name="name">The users username</param> | ||
51 | /// <returns>The user data profile</returns> | ||
52 | UserProfileData getUserByName(string name); | ||
53 | |||
54 | /// <summary> | ||
55 | /// Returns a users profile by searching their username parts | ||
56 | /// </summary> | ||
57 | /// <param name="fname">Account firstname</param> | ||
58 | /// <param name="lname">Account lastname</param> | ||
59 | /// <returns>The user data profile</returns> | ||
60 | UserProfileData getUserByName(string fname, string lname); | ||
61 | |||
62 | /// <summary> | ||
63 | /// Returns the current agent for a user searching by it's UUID | ||
64 | /// </summary> | ||
65 | /// <param name="user">The users UUID</param> | ||
66 | /// <returns>The current agent session</returns> | ||
67 | UserAgentData getAgentByUUID(LLUUID user); | ||
68 | |||
69 | /// <summary> | ||
70 | /// Returns the current session agent for a user searching by username | ||
71 | /// </summary> | ||
72 | /// <param name="name">The users account name</param> | ||
73 | /// <returns>The current agent session</returns> | ||
74 | UserAgentData getAgentByName(string name); | ||
75 | |||
76 | /// <summary> | ||
77 | /// Returns the current session agent for a user searching by username parts | ||
78 | /// </summary> | ||
79 | /// <param name="fname">The users first account name</param> | ||
80 | /// <param name="lname">The users account surname</param> | ||
81 | /// <returns>The current agent session</returns> | ||
82 | UserAgentData getAgentByName(string fname, string lname); | ||
83 | |||
84 | /// <summary> | ||
85 | /// Adds a new User profile to the database | ||
86 | /// </summary> | ||
87 | /// <param name="user">UserProfile to add</param> | ||
88 | void addNewUserProfile(UserProfileData user); | ||
89 | |||
90 | /// <summary> | ||
91 | /// Adds a new agent to the database | ||
92 | /// </summary> | ||
93 | /// <param name="agent">The agent to add</param> | ||
94 | void addNewUserAgent(UserAgentData agent); | ||
95 | |||
96 | /// <summary> | ||
97 | /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES) | ||
98 | /// </summary> | ||
99 | /// <param name="from">The account to transfer from</param> | ||
100 | /// <param name="to">The account to transfer to</param> | ||
101 | /// <param name="amount">The amount to transfer</param> | ||
102 | /// <returns>Successful?</returns> | ||
103 | bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount); | ||
104 | |||
105 | /// <summary> | ||
106 | /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account. | ||
107 | /// </summary> | ||
108 | /// <param name="from">User to transfer from</param> | ||
109 | /// <param name="to">User to transfer to</param> | ||
110 | /// <param name="inventory">Specified inventory item</param> | ||
111 | /// <returns>Successful?</returns> | ||
112 | bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory); | ||
113 | |||
114 | /// <summary> | ||
115 | /// Returns the plugin version | ||
116 | /// </summary> | ||
117 | /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns> | ||
118 | string getVersion(); | ||
119 | |||
120 | /// <summary> | ||
121 | /// Returns the plugin name | ||
122 | /// </summary> | ||
123 | /// <returns>Plugin name, eg MySQL User Provider</returns> | ||
124 | string getName(); | ||
125 | |||
126 | /// <summary> | ||
127 | /// Initialises the plugin (artificial constructor) | ||
128 | /// </summary> | ||
129 | void Initialise(); | ||
130 | } | ||
131 | } | ||
diff --git a/OpenSim/Framework/Data/UserProfileData.cs b/OpenSim/Framework/Data/UserProfileData.cs new file mode 100644 index 0000000..00d422d --- /dev/null +++ b/OpenSim/Framework/Data/UserProfileData.cs | |||
@@ -0,0 +1,182 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Data | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// Information about a particular user known to the userserver | ||
37 | /// </summary> | ||
38 | public class UserProfileData | ||
39 | { | ||
40 | /// <summary> | ||
41 | /// The ID value for this user | ||
42 | /// </summary> | ||
43 | public LLUUID UUID; | ||
44 | |||
45 | /// <summary> | ||
46 | /// The first component of a users account name | ||
47 | /// </summary> | ||
48 | public string username; | ||
49 | /// <summary> | ||
50 | /// The second component of a users account name | ||
51 | /// </summary> | ||
52 | public string surname; | ||
53 | |||
54 | /// <summary> | ||
55 | /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt) | ||
56 | /// </summary> | ||
57 | /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks> | ||
58 | public string passwordHash; | ||
59 | /// <summary> | ||
60 | /// The salt used for the users hash, should be 32 bytes or longer | ||
61 | /// </summary> | ||
62 | public string passwordSalt; | ||
63 | |||
64 | /// <summary> | ||
65 | /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into | ||
66 | /// </summary> | ||
67 | public ulong homeRegion; | ||
68 | /// <summary> | ||
69 | /// The coordinates inside the region of the home location | ||
70 | /// </summary> | ||
71 | public LLVector3 homeLocation; | ||
72 | /// <summary> | ||
73 | /// Where the user will be looking when they rez. | ||
74 | /// </summary> | ||
75 | public LLVector3 homeLookAt; | ||
76 | |||
77 | /// <summary> | ||
78 | /// A UNIX Timestamp (seconds since epoch) for the users creation | ||
79 | /// </summary> | ||
80 | public int created; | ||
81 | /// <summary> | ||
82 | /// A UNIX Timestamp for the users last login date / time | ||
83 | /// </summary> | ||
84 | public int lastLogin; | ||
85 | |||
86 | /// <summary> | ||
87 | /// A URI to the users inventory server, used for foreigners and large grids | ||
88 | /// </summary> | ||
89 | public string userInventoryURI; | ||
90 | /// <summary> | ||
91 | /// A URI to the users asset server, used for foreigners and large grids. | ||
92 | /// </summary> | ||
93 | public string userAssetURI; | ||
94 | |||
95 | /// <summary> | ||
96 | /// A uint mask containing the "I can do" fields of the users profile | ||
97 | /// </summary> | ||
98 | public uint profileCanDoMask; | ||
99 | /// <summary> | ||
100 | /// A uint mask containing the "I want to do" part of the users profile | ||
101 | /// </summary> | ||
102 | public uint profileWantDoMask; // Profile window "I want to" mask | ||
103 | |||
104 | /// <summary> | ||
105 | /// The about text listed in a users profile. | ||
106 | /// </summary> | ||
107 | public string profileAboutText; | ||
108 | /// <summary> | ||
109 | /// The first life about text listed in a users profile | ||
110 | /// </summary> | ||
111 | public string profileFirstText; | ||
112 | |||
113 | /// <summary> | ||
114 | /// The profile image for an avatar stored on the asset server | ||
115 | /// </summary> | ||
116 | public LLUUID profileImage; | ||
117 | /// <summary> | ||
118 | /// The profile image for the users first life tab | ||
119 | /// </summary> | ||
120 | public LLUUID profileFirstImage; | ||
121 | /// <summary> | ||
122 | /// The users last registered agent (filled in on the user server) | ||
123 | /// </summary> | ||
124 | public UserAgentData currentAgent; | ||
125 | } | ||
126 | |||
127 | /// <summary> | ||
128 | /// Information about a users session | ||
129 | /// </summary> | ||
130 | public class UserAgentData | ||
131 | { | ||
132 | /// <summary> | ||
133 | /// The UUID of the users avatar (not the agent!) | ||
134 | /// </summary> | ||
135 | public LLUUID UUID; | ||
136 | /// <summary> | ||
137 | /// The IP address of the user | ||
138 | /// </summary> | ||
139 | public string agentIP; | ||
140 | /// <summary> | ||
141 | /// The port of the user | ||
142 | /// </summary> | ||
143 | public uint agentPort; | ||
144 | /// <summary> | ||
145 | /// Is the user online? | ||
146 | /// </summary> | ||
147 | public bool agentOnline; | ||
148 | /// <summary> | ||
149 | /// The session ID for the user (also the agent ID) | ||
150 | /// </summary> | ||
151 | public LLUUID sessionID; | ||
152 | /// <summary> | ||
153 | /// The "secure" session ID for the user | ||
154 | /// </summary> | ||
155 | /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks> | ||
156 | public LLUUID secureSessionID; | ||
157 | /// <summary> | ||
158 | /// The region the user logged into initially | ||
159 | /// </summary> | ||
160 | public LLUUID regionID; | ||
161 | /// <summary> | ||
162 | /// A unix timestamp from when the user logged in | ||
163 | /// </summary> | ||
164 | public int loginTime; | ||
165 | /// <summary> | ||
166 | /// When this agent expired and logged out, 0 if still online | ||
167 | /// </summary> | ||
168 | public int logoutTime; | ||
169 | /// <summary> | ||
170 | /// Current region the user is logged into | ||
171 | /// </summary> | ||
172 | public LLUUID currentRegion; | ||
173 | /// <summary> | ||
174 | /// Region handle of the current region the user is in | ||
175 | /// </summary> | ||
176 | public ulong currentHandle; | ||
177 | /// <summary> | ||
178 | /// The position of the user within the region | ||
179 | /// </summary> | ||
180 | public LLVector3 currentPos; | ||
181 | } | ||
182 | } | ||
diff --git a/OpenSim/Framework/General/AgentInventory.cs b/OpenSim/Framework/General/AgentInventory.cs new file mode 100644 index 0000000..fbf4d23 --- /dev/null +++ b/OpenSim/Framework/General/AgentInventory.cs | |||
@@ -0,0 +1,267 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | using libsecondlife.Packets; | ||
33 | using OpenSim.Framework.Types; | ||
34 | using OpenSim.Framework.Utilities; | ||
35 | |||
36 | namespace OpenSim.Framework.Inventory | ||
37 | { | ||
38 | public class AgentInventory | ||
39 | { | ||
40 | //Holds the local copy of Inventory info for a agent | ||
41 | public Dictionary<LLUUID, InventoryFolder> InventoryFolders; | ||
42 | public Dictionary<LLUUID, InventoryItem> InventoryItems; | ||
43 | public InventoryFolder InventoryRoot; | ||
44 | public int LastCached; //maybe used by opensim app, time this was last stored/compared to user server | ||
45 | public LLUUID AgentID; | ||
46 | public AvatarWearable[] Wearables; | ||
47 | |||
48 | public AgentInventory() | ||
49 | { | ||
50 | InventoryFolders = new Dictionary<LLUUID, InventoryFolder>(); | ||
51 | InventoryItems = new Dictionary<LLUUID, InventoryItem>(); | ||
52 | this.Initialise(); | ||
53 | } | ||
54 | |||
55 | public virtual void Initialise() | ||
56 | { | ||
57 | Wearables = new AvatarWearable[13]; //should be 12 of these | ||
58 | for (int i = 0; i < 13; i++) | ||
59 | { | ||
60 | Wearables[i] = new AvatarWearable(); | ||
61 | } | ||
62 | |||
63 | } | ||
64 | |||
65 | public bool CreateNewFolder(LLUUID folderID, ushort type) | ||
66 | { | ||
67 | InventoryFolder Folder = new InventoryFolder(); | ||
68 | Folder.FolderID = folderID; | ||
69 | Folder.OwnerID = this.AgentID; | ||
70 | Folder.DefaultType = type; | ||
71 | this.InventoryFolders.Add(Folder.FolderID, Folder); | ||
72 | return (true); | ||
73 | } | ||
74 | |||
75 | public void CreateRootFolder(LLUUID newAgentID, bool createTextures) | ||
76 | { | ||
77 | this.AgentID = newAgentID; | ||
78 | InventoryRoot = new InventoryFolder(); | ||
79 | InventoryRoot.FolderID = LLUUID.Random(); | ||
80 | InventoryRoot.ParentID = new LLUUID(); | ||
81 | InventoryRoot.Version = 1; | ||
82 | InventoryRoot.DefaultType = 8; | ||
83 | InventoryRoot.OwnerID = this.AgentID; | ||
84 | InventoryRoot.FolderName = "My Inventory"; | ||
85 | InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot); | ||
86 | InventoryRoot.OwnerID = this.AgentID; | ||
87 | if (createTextures) | ||
88 | { | ||
89 | this.CreateNewFolder(LLUUID.Random(), 0, "Textures", InventoryRoot.FolderID); | ||
90 | } | ||
91 | } | ||
92 | |||
93 | public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName) | ||
94 | { | ||
95 | InventoryFolder Folder = new InventoryFolder(); | ||
96 | Folder.FolderID = folderID; | ||
97 | Folder.OwnerID = this.AgentID; | ||
98 | Folder.DefaultType = type; | ||
99 | Folder.FolderName = folderName; | ||
100 | this.InventoryFolders.Add(Folder.FolderID, Folder); | ||
101 | |||
102 | return (true); | ||
103 | } | ||
104 | |||
105 | public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName, LLUUID parent) | ||
106 | { | ||
107 | if (!this.InventoryFolders.ContainsKey(folderID)) | ||
108 | { | ||
109 | System.Console.WriteLine("creating new folder called " + folderName + " in agents inventory"); | ||
110 | InventoryFolder Folder = new InventoryFolder(); | ||
111 | Folder.FolderID = folderID; | ||
112 | Folder.OwnerID = this.AgentID; | ||
113 | Folder.DefaultType = type; | ||
114 | Folder.FolderName = folderName; | ||
115 | Folder.ParentID = parent; | ||
116 | this.InventoryFolders.Add(Folder.FolderID, Folder); | ||
117 | } | ||
118 | |||
119 | return (true); | ||
120 | } | ||
121 | |||
122 | public bool HasFolder(LLUUID folderID) | ||
123 | { | ||
124 | if (this.InventoryFolders.ContainsKey(folderID)) | ||
125 | { | ||
126 | return true; | ||
127 | } | ||
128 | return false; | ||
129 | } | ||
130 | |||
131 | public LLUUID GetFolderID(string folderName) | ||
132 | { | ||
133 | foreach (InventoryFolder inv in this.InventoryFolders.Values) | ||
134 | { | ||
135 | if (inv.FolderName == folderName) | ||
136 | { | ||
137 | return inv.FolderID; | ||
138 | } | ||
139 | } | ||
140 | |||
141 | return LLUUID.Zero; | ||
142 | } | ||
143 | |||
144 | public bool UpdateItemAsset(LLUUID itemID, AssetBase asset) | ||
145 | { | ||
146 | if(this.InventoryItems.ContainsKey(itemID)) | ||
147 | { | ||
148 | InventoryItem Item = this.InventoryItems[itemID]; | ||
149 | Item.AssetID = asset.FullID; | ||
150 | System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated() + " so it now is set to asset " + asset.FullID.ToStringHyphenated()); | ||
151 | //TODO need to update the rest of the info | ||
152 | } | ||
153 | return true; | ||
154 | } | ||
155 | |||
156 | public bool UpdateItemDetails(LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet) | ||
157 | { | ||
158 | System.Console.WriteLine("updating inventory item details"); | ||
159 | if (this.InventoryItems.ContainsKey(itemID)) | ||
160 | { | ||
161 | System.Console.WriteLine("changing name to "+ Util.FieldToString(packet.Name)); | ||
162 | InventoryItem Item = this.InventoryItems[itemID]; | ||
163 | Item.Name = Util.FieldToString(packet.Name); | ||
164 | System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated()); | ||
165 | //TODO need to update the rest of the info | ||
166 | } | ||
167 | return true; | ||
168 | } | ||
169 | |||
170 | public LLUUID AddToInventory(LLUUID folderID, AssetBase asset) | ||
171 | { | ||
172 | if (this.InventoryFolders.ContainsKey(folderID)) | ||
173 | { | ||
174 | LLUUID NewItemID = LLUUID.Random(); | ||
175 | |||
176 | InventoryItem Item = new InventoryItem(); | ||
177 | Item.FolderID = folderID; | ||
178 | Item.OwnerID = AgentID; | ||
179 | Item.AssetID = asset.FullID; | ||
180 | Item.ItemID = NewItemID; | ||
181 | Item.Type = asset.Type; | ||
182 | Item.Name = asset.Name; | ||
183 | Item.Description = asset.Description; | ||
184 | Item.InvType = asset.InvType; | ||
185 | this.InventoryItems.Add(Item.ItemID, Item); | ||
186 | InventoryFolder Folder = InventoryFolders[Item.FolderID]; | ||
187 | Folder.Items.Add(Item); | ||
188 | return (Item.ItemID); | ||
189 | } | ||
190 | else | ||
191 | { | ||
192 | return (null); | ||
193 | } | ||
194 | } | ||
195 | |||
196 | public bool DeleteFromInventory(LLUUID itemID) | ||
197 | { | ||
198 | bool res = false; | ||
199 | if (this.InventoryItems.ContainsKey(itemID)) | ||
200 | { | ||
201 | InventoryItem item = this.InventoryItems[itemID]; | ||
202 | this.InventoryItems.Remove(itemID); | ||
203 | foreach (InventoryFolder fold in InventoryFolders.Values) | ||
204 | { | ||
205 | if (fold.Items.Contains(item)) | ||
206 | { | ||
207 | fold.Items.Remove(item); | ||
208 | break; | ||
209 | } | ||
210 | } | ||
211 | res = true; | ||
212 | |||
213 | } | ||
214 | return res; | ||
215 | } | ||
216 | } | ||
217 | |||
218 | public class InventoryFolder | ||
219 | { | ||
220 | public List<InventoryItem> Items; | ||
221 | //public List<InventoryFolder> Subfolders; | ||
222 | public LLUUID FolderID; | ||
223 | public LLUUID OwnerID; | ||
224 | public LLUUID ParentID = LLUUID.Zero; | ||
225 | public string FolderName; | ||
226 | public ushort DefaultType; | ||
227 | public ushort Version; | ||
228 | |||
229 | public InventoryFolder() | ||
230 | { | ||
231 | Items = new List<InventoryItem>(); | ||
232 | //Subfolders = new List<InventoryFolder>(); | ||
233 | } | ||
234 | |||
235 | } | ||
236 | |||
237 | public class InventoryItem | ||
238 | { | ||
239 | public LLUUID FolderID; | ||
240 | public LLUUID OwnerID; | ||
241 | public LLUUID ItemID; | ||
242 | public LLUUID AssetID; | ||
243 | public LLUUID CreatorID; | ||
244 | public sbyte InvType; | ||
245 | public sbyte Type; | ||
246 | public string Name =""; | ||
247 | public string Description; | ||
248 | |||
249 | public InventoryItem() | ||
250 | { | ||
251 | this.CreatorID = LLUUID.Zero; | ||
252 | } | ||
253 | |||
254 | public string ExportString() | ||
255 | { | ||
256 | string typ = "notecard"; | ||
257 | string result = ""; | ||
258 | result += "\tinv_object\t0\n\t{\n"; | ||
259 | result += "\t\tobj_id\t%s\n"; | ||
260 | result += "\t\tparent_id\t"+ ItemID.ToString() +"\n"; | ||
261 | result += "\t\ttype\t"+ typ +"\n"; | ||
262 | result += "\t\tname\t" + Name+"|\n"; | ||
263 | result += "\t}\n"; | ||
264 | return result; | ||
265 | } | ||
266 | } | ||
267 | } | ||
diff --git a/OpenSim/Framework/General/AuthenticateSessionBase.cs b/OpenSim/Framework/General/AuthenticateSessionBase.cs new file mode 100644 index 0000000..73dd3e2 --- /dev/null +++ b/OpenSim/Framework/General/AuthenticateSessionBase.cs | |||
@@ -0,0 +1,132 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | using OpenSim.Framework.Interfaces; | ||
33 | using OpenSim.Framework.Types; | ||
34 | |||
35 | namespace OpenSim.Framework | ||
36 | { | ||
37 | public class AuthenticateSessionsBase | ||
38 | { | ||
39 | public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>(); | ||
40 | |||
41 | public AuthenticateSessionsBase() | ||
42 | { | ||
43 | |||
44 | } | ||
45 | |||
46 | public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode) | ||
47 | { | ||
48 | AgentCircuitData validcircuit = null; | ||
49 | if (this.AgentCircuits.ContainsKey(circuitcode)) | ||
50 | { | ||
51 | validcircuit = this.AgentCircuits[circuitcode]; | ||
52 | } | ||
53 | AuthenticateResponse user = new AuthenticateResponse(); | ||
54 | if (validcircuit == null) | ||
55 | { | ||
56 | //don't have this circuit code in our list | ||
57 | user.Authorised = false; | ||
58 | return (user); | ||
59 | } | ||
60 | |||
61 | if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID)) | ||
62 | { | ||
63 | user.Authorised = true; | ||
64 | user.LoginInfo = new Login(); | ||
65 | user.LoginInfo.Agent = agentID; | ||
66 | user.LoginInfo.Session = sessionID; | ||
67 | user.LoginInfo.SecureSession = validcircuit.SecureSessionID; | ||
68 | user.LoginInfo.First = validcircuit.firstname; | ||
69 | user.LoginInfo.Last = validcircuit.lastname; | ||
70 | user.LoginInfo.InventoryFolder = validcircuit.InventoryFolder; | ||
71 | user.LoginInfo.BaseFolder = validcircuit.BaseFolder; | ||
72 | } | ||
73 | else | ||
74 | { | ||
75 | // Invalid | ||
76 | user.Authorised = false; | ||
77 | } | ||
78 | |||
79 | return (user); | ||
80 | } | ||
81 | |||
82 | public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData) | ||
83 | { | ||
84 | if (this.AgentCircuits.ContainsKey(circuitCode)) | ||
85 | { | ||
86 | this.AgentCircuits[circuitCode] = agentData; | ||
87 | } | ||
88 | else | ||
89 | { | ||
90 | this.AgentCircuits.Add(circuitCode, agentData); | ||
91 | } | ||
92 | } | ||
93 | |||
94 | public LLVector3 GetPosition(uint circuitCode) | ||
95 | { | ||
96 | LLVector3 vec = new LLVector3(); | ||
97 | if (this.AgentCircuits.ContainsKey(circuitCode)) | ||
98 | { | ||
99 | vec = this.AgentCircuits[circuitCode].startpos; | ||
100 | } | ||
101 | return vec; | ||
102 | } | ||
103 | |||
104 | public void UpdateAgentData(AgentCircuitData agentData) | ||
105 | { | ||
106 | if (this.AgentCircuits.ContainsKey((uint)agentData.circuitcode)) | ||
107 | { | ||
108 | this.AgentCircuits[(uint)agentData.circuitcode].firstname = agentData.firstname; | ||
109 | this.AgentCircuits[(uint)agentData.circuitcode].lastname = agentData.lastname; | ||
110 | this.AgentCircuits[(uint)agentData.circuitcode].startpos = agentData.startpos; | ||
111 | // Console.WriteLine("update user start pos is " + agentData.startpos.X + " , " + agentData.startpos.Y + " , " + agentData.startpos.Z); | ||
112 | } | ||
113 | } | ||
114 | |||
115 | public void UpdateAgentChildStatus(uint circuitcode, bool childstatus) | ||
116 | { | ||
117 | if (this.AgentCircuits.ContainsKey(circuitcode)) | ||
118 | { | ||
119 | this.AgentCircuits[circuitcode].child = childstatus; | ||
120 | } | ||
121 | } | ||
122 | |||
123 | public bool GetAgentChildStatus(uint circuitcode) | ||
124 | { | ||
125 | if (this.AgentCircuits.ContainsKey(circuitcode)) | ||
126 | { | ||
127 | return this.AgentCircuits[circuitcode].child; | ||
128 | } | ||
129 | return false; | ||
130 | } | ||
131 | } | ||
132 | } \ No newline at end of file | ||
diff --git a/OpenSim/Framework/General/BlockingQueue.cs b/OpenSim/Framework/General/BlockingQueue.cs new file mode 100644 index 0000000..667b8d8 --- /dev/null +++ b/OpenSim/Framework/General/BlockingQueue.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Threading; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace OpenSim.Framework.Utilities | ||
34 | { | ||
35 | public class BlockingQueue<T> | ||
36 | { | ||
37 | private Queue<T> _queue = new Queue<T>(); | ||
38 | private object _queueSync = new object(); | ||
39 | |||
40 | public void Enqueue(T value) | ||
41 | { | ||
42 | lock (_queueSync) | ||
43 | { | ||
44 | _queue.Enqueue(value); | ||
45 | Monitor.Pulse(_queueSync); | ||
46 | } | ||
47 | } | ||
48 | |||
49 | public T Dequeue() | ||
50 | { | ||
51 | lock (_queueSync) | ||
52 | { | ||
53 | if (_queue.Count < 1) | ||
54 | Monitor.Wait(_queueSync); | ||
55 | |||
56 | return _queue.Dequeue(); | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | } | ||
diff --git a/OpenSim/Framework/General/IRegionCommsListener.cs b/OpenSim/Framework/General/IRegionCommsListener.cs new file mode 100644 index 0000000..0e80941 --- /dev/null +++ b/OpenSim/Framework/General/IRegionCommsListener.cs | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Interfaces; | ||
32 | using OpenSim.Framework.Types; | ||
33 | |||
34 | namespace OpenSim.Framework | ||
35 | { | ||
36 | public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent); | ||
37 | public delegate void UpdateNeighbours(List<RegionInfo> neighbours); | ||
38 | public delegate void AgentCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position); | ||
39 | |||
40 | public interface IRegionCommsListener | ||
41 | { | ||
42 | event ExpectUserDelegate OnExpectUser; | ||
43 | event GenericCall2 OnExpectChildAgent; | ||
44 | event AgentCrossing OnAvatarCrossingIntoRegion; | ||
45 | event UpdateNeighbours OnNeighboursUpdate; | ||
46 | } | ||
47 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs b/OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs new file mode 100644 index 0000000..462e2c5 --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Net; | ||
32 | using System.Net.Sockets; | ||
33 | using System.IO; | ||
34 | using libsecondlife; | ||
35 | using OpenSim; | ||
36 | using OpenSim.Framework.Types; | ||
37 | |||
38 | namespace OpenSim.Framework.Interfaces | ||
39 | { | ||
40 | public class AuthenticateResponse | ||
41 | { | ||
42 | public bool Authorised; | ||
43 | public Login LoginInfo; | ||
44 | |||
45 | public AuthenticateResponse() | ||
46 | { | ||
47 | |||
48 | } | ||
49 | |||
50 | } | ||
51 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs b/OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs new file mode 100644 index 0000000..13980fe --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Framework.Interfaces | ||
33 | { | ||
34 | public interface IGenericConfig | ||
35 | { | ||
36 | void LoadData(); | ||
37 | string GetAttribute(string attributeName); | ||
38 | bool SetAttribute(string attributeName, string attributeValue); | ||
39 | void Commit(); | ||
40 | void Close(); | ||
41 | } | ||
42 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs b/OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs new file mode 100644 index 0000000..0fafe1a --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.IO; | ||
32 | using libsecondlife; | ||
33 | //using OpenSim.world; | ||
34 | |||
35 | namespace OpenSim.Framework.Interfaces | ||
36 | { | ||
37 | /// <summary> | ||
38 | /// </summary> | ||
39 | |||
40 | |||
41 | public abstract class GridConfig | ||
42 | { | ||
43 | public string GridOwner; | ||
44 | public string DefaultStartupMsg; | ||
45 | public string DefaultAssetServer; | ||
46 | public string AssetSendKey; | ||
47 | public string AssetRecvKey; | ||
48 | public string DefaultUserServer; | ||
49 | public string UserSendKey; | ||
50 | public string UserRecvKey; | ||
51 | public string SimSendKey; | ||
52 | public string SimRecvKey; | ||
53 | |||
54 | |||
55 | public abstract void InitConfig(); | ||
56 | |||
57 | } | ||
58 | |||
59 | public interface IGridConfig | ||
60 | { | ||
61 | GridConfig GetConfigObject(); | ||
62 | } | ||
63 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs b/OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs new file mode 100644 index 0000000..2f4b340 --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs | |||
@@ -0,0 +1,57 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.IO; | ||
32 | using libsecondlife; | ||
33 | //using OpenSim.world; | ||
34 | |||
35 | namespace OpenSim.Framework.Interfaces | ||
36 | { | ||
37 | /// <summary> | ||
38 | /// </summary> | ||
39 | |||
40 | |||
41 | public abstract class UserConfig | ||
42 | { | ||
43 | public string DefaultStartupMsg; | ||
44 | public string GridServerURL; | ||
45 | public string GridSendKey; | ||
46 | public string GridRecvKey; | ||
47 | |||
48 | |||
49 | public abstract void InitConfig(); | ||
50 | |||
51 | } | ||
52 | |||
53 | public interface IUserConfig | ||
54 | { | ||
55 | UserConfig GetConfigObject(); | ||
56 | } | ||
57 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/IAssetServer.cs b/OpenSim/Framework/General/Interfaces/IAssetServer.cs new file mode 100644 index 0000000..826392d --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/IAssetServer.cs | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Net; | ||
30 | using System.Net.Sockets; | ||
31 | using System.IO; | ||
32 | using System.Threading; | ||
33 | using libsecondlife; | ||
34 | using OpenSim.Framework.Types; | ||
35 | |||
36 | namespace OpenSim.Framework.Interfaces | ||
37 | { | ||
38 | /// <summary> | ||
39 | /// Description of IAssetServer. | ||
40 | /// </summary> | ||
41 | |||
42 | public interface IAssetServer | ||
43 | { | ||
44 | void SetReceiver(IAssetReceiver receiver); | ||
45 | void RequestAsset(LLUUID assetID, bool isTexture); | ||
46 | void UpdateAsset(AssetBase asset); | ||
47 | void UploadNewAsset(AssetBase asset); | ||
48 | void SetServerInfo(string ServerUrl, string ServerKey); | ||
49 | void Close(); | ||
50 | } | ||
51 | |||
52 | // could change to delegate? | ||
53 | public interface IAssetReceiver | ||
54 | { | ||
55 | void AssetReceived(AssetBase asset, bool IsTexture); | ||
56 | void AssetNotFound(AssetBase asset); | ||
57 | } | ||
58 | |||
59 | public interface IAssetPlugin | ||
60 | { | ||
61 | IAssetServer GetAssetServer(); | ||
62 | } | ||
63 | |||
64 | public struct ARequest | ||
65 | { | ||
66 | public LLUUID AssetID; | ||
67 | public bool IsTexture; | ||
68 | } | ||
69 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs new file mode 100644 index 0000000..009648c --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs | |||
@@ -0,0 +1,160 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Inventory; | ||
32 | using libsecondlife; | ||
33 | using libsecondlife.Packets; | ||
34 | using OpenSim.Framework.Types; | ||
35 | |||
36 | namespace OpenSim.Framework.Interfaces | ||
37 | { | ||
38 | public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||
39 | public delegate void RezObject(AssetBase primAsset, LLVector3 pos); | ||
40 | public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west); | ||
41 | public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam); | ||
42 | public delegate void StartAnim(LLUUID animID, int seq); | ||
43 | public delegate void LinkObjects(uint parent, List<uint> children); | ||
44 | public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY); | ||
45 | public delegate void TeleportLocationRequest(IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags); | ||
46 | |||
47 | public delegate void GenericCall(IClientAPI remoteClient); | ||
48 | public delegate void GenericCall2(); | ||
49 | public delegate void GenericCall3(Packet packet); // really don't want to be passing packets in these events, so this is very temporary. | ||
50 | public delegate void GenericCall4(Packet packet, IClientAPI remoteClient); | ||
51 | public delegate void GenericCall5(IClientAPI remoteClient, bool status); | ||
52 | public delegate void GenericCall6(LLUUID uid); | ||
53 | |||
54 | public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock); | ||
55 | public delegate void ObjectSelect(uint localID, IClientAPI remoteClient); | ||
56 | public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient); | ||
57 | public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient); | ||
58 | public delegate void UpdateVector(uint localID, LLVector3 pos, IClientAPI remoteClient); | ||
59 | public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient); | ||
60 | public delegate void StatusChange(bool status); | ||
61 | public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status); | ||
62 | public delegate void UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation); | ||
63 | public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient); | ||
64 | |||
65 | public delegate void ParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client); | ||
66 | public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client); | ||
67 | public delegate void ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client); | ||
68 | public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client); // NOTETOSELFremove the packet part | ||
69 | |||
70 | public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client); | ||
71 | |||
72 | public interface IClientAPI | ||
73 | { | ||
74 | event ChatFromViewer OnChatFromViewer; | ||
75 | event RezObject OnRezObject; | ||
76 | event ModifyTerrain OnModifyTerrain; | ||
77 | event SetAppearance OnSetAppearance; | ||
78 | event StartAnim OnStartAnim; | ||
79 | event LinkObjects OnLinkObjects; | ||
80 | event RequestMapBlocks OnRequestMapBlocks; | ||
81 | event TeleportLocationRequest OnTeleportLocationRequest; | ||
82 | |||
83 | event GenericCall4 OnDeRezObject; | ||
84 | event GenericCall OnRegionHandShakeReply; | ||
85 | event GenericCall OnRequestWearables; | ||
86 | event GenericCall2 OnCompleteMovementToRegion; | ||
87 | event UpdateAgent OnAgentUpdate; | ||
88 | event GenericCall OnRequestAvatarsData; | ||
89 | event GenericCall4 OnAddPrim; | ||
90 | event UpdateVector OnGrapObject; | ||
91 | event ObjectSelect OnDeGrapObject; | ||
92 | event MoveObject OnGrapUpdate; | ||
93 | |||
94 | event UpdateShape OnUpdatePrimShape; | ||
95 | event ObjectSelect OnObjectSelect; | ||
96 | event UpdatePrimFlags OnUpdatePrimFlags; | ||
97 | event UpdatePrimTexture OnUpdatePrimTexture; | ||
98 | event UpdateVector OnUpdatePrimPosition; | ||
99 | event UpdatePrimRotation OnUpdatePrimRotation; | ||
100 | event UpdateVector OnUpdatePrimScale; | ||
101 | event StatusChange OnChildAgentStatus; | ||
102 | event GenericCall2 OnStopMovement; | ||
103 | event NewAvatar OnNewAvatar; | ||
104 | event GenericCall6 OnRemoveAvatar; | ||
105 | |||
106 | event ParcelPropertiesRequest OnParcelPropertiesRequest; | ||
107 | event ParcelDivideRequest OnParcelDivideRequest; | ||
108 | event ParcelJoinRequest OnParcelJoinRequest; | ||
109 | event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest; | ||
110 | |||
111 | event EstateOwnerMessageRequest OnEstateOwnerMessage; | ||
112 | |||
113 | LLVector3 StartPos | ||
114 | { | ||
115 | get; | ||
116 | set; | ||
117 | } | ||
118 | |||
119 | LLUUID AgentId | ||
120 | { | ||
121 | get; | ||
122 | } | ||
123 | |||
124 | string FirstName | ||
125 | { | ||
126 | get; | ||
127 | } | ||
128 | |||
129 | string LastName | ||
130 | { | ||
131 | get; | ||
132 | } | ||
133 | |||
134 | void OutPacket(Packet newPack); | ||
135 | void SendWearables(AvatarWearable[] wearables); | ||
136 | void SendRegionHandshake(RegionInfo regionInfo); | ||
137 | void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||
138 | void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||
139 | void SendLayerData(float[] map); | ||
140 | void SendLayerData(int px, int py, float[] map); | ||
141 | void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look); | ||
142 | void InformClientOfNeighbour(ulong neighbourHandle, System.Net.IPAddress neighbourIP, ushort neighbourPort); | ||
143 | AgentCircuitData RequestClientInfo(); | ||
144 | void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, System.Net.IPAddress newRegionIP, ushort newRegionPort); | ||
145 | void SendMapBlock(List<MapBlockData> mapBlocks); | ||
146 | void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags); | ||
147 | void SendRegionTeleport(ulong regionHandle, byte simAccess, string ipAddress, ushort ipPort, uint locationID, uint flags); | ||
148 | void SendTeleportCancel(); | ||
149 | void SendTeleportLocationStart(); | ||
150 | void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance); | ||
151 | |||
152 | void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry); | ||
153 | void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity); | ||
154 | |||
155 | void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); | ||
156 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags); | ||
157 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags); | ||
158 | void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation); | ||
159 | } | ||
160 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/ILocalStorage.cs b/OpenSim/Framework/General/Interfaces/ILocalStorage.cs new file mode 100644 index 0000000..4987d10 --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/ILocalStorage.cs | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | using System; | ||
30 | using libsecondlife; | ||
31 | using OpenSim.Framework.Types; | ||
32 | |||
33 | namespace OpenSim.Framework.Interfaces | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// ILocalStorage. Really hacked together right now needs cleaning up | ||
37 | /// </summary> | ||
38 | public interface ILocalStorage | ||
39 | { | ||
40 | void Initialise(string datastore); | ||
41 | |||
42 | void StorePrim(PrimData prim); | ||
43 | void RemovePrim(LLUUID primID); | ||
44 | void LoadPrimitives(ILocalStorageReceiver receiver); | ||
45 | |||
46 | float[] LoadWorld(); | ||
47 | void SaveMap(float[] heightmap); | ||
48 | |||
49 | void SaveParcels(ParcelData[] parcels); | ||
50 | void SaveParcel(ParcelData parcel); | ||
51 | void RemoveParcel(ParcelData parcel); | ||
52 | void RemoveAllParcels(); | ||
53 | void LoadParcels(ILocalStorageParcelReceiver recv); | ||
54 | |||
55 | void ShutDown(); | ||
56 | } | ||
57 | |||
58 | public interface ILocalStorageReceiver | ||
59 | { | ||
60 | void PrimFromStorage(PrimData prim); | ||
61 | } | ||
62 | |||
63 | public interface ILocalStorageParcelReceiver | ||
64 | { | ||
65 | void ParcelFromStorage(ParcelData data); | ||
66 | void NoParcelDataFromStorage(); | ||
67 | } | ||
68 | } | ||
69 | |||
diff --git a/OpenSim/Framework/General/Interfaces/IUserServer.cs b/OpenSim/Framework/General/Interfaces/IUserServer.cs new file mode 100644 index 0000000..c6e2223 --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/IUserServer.cs | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Inventory; | ||
32 | using libsecondlife; | ||
33 | |||
34 | namespace OpenSim.Framework.Interfaces | ||
35 | { | ||
36 | public interface IUserServer | ||
37 | { | ||
38 | AgentInventory RequestAgentsInventory(LLUUID agentID); | ||
39 | void SetServerInfo(string ServerUrl, string SendKey, string RecvKey); | ||
40 | bool UpdateAgentsInventory(LLUUID agentID, AgentInventory inventory); | ||
41 | } | ||
42 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/IWorld.cs b/OpenSim/Framework/General/Interfaces/IWorld.cs new file mode 100644 index 0000000..4857417 --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/IWorld.cs | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | using OpenSim.Framework.Types; | ||
33 | |||
34 | namespace OpenSim.Framework.Interfaces | ||
35 | { | ||
36 | public interface IWorld | ||
37 | { | ||
38 | void AddNewClient(IClientAPI remoteClient, LLUUID agentID, bool child); | ||
39 | void RemoveClient(LLUUID agentID); | ||
40 | |||
41 | RegionInfo RegionInfo { get; } | ||
42 | object SyncRoot { get; } | ||
43 | uint NextLocalId { get; } | ||
44 | } | ||
45 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs b/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs new file mode 100644 index 0000000..0c1627b --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/Scripting/IScriptAPI.cs | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Types; | ||
32 | |||
33 | using libsecondlife; | ||
34 | namespace OpenSim.Framework.Interfaces | ||
35 | { | ||
36 | public interface IScriptAPI | ||
37 | { | ||
38 | LLVector3 GetEntityPosition(uint localID); | ||
39 | void SetEntityPosition(uint localID, float x, float y, float z); | ||
40 | uint GetRandomAvatarID(); | ||
41 | } | ||
42 | } | ||
diff --git a/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs b/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs new file mode 100644 index 0000000..ca50be0 --- /dev/null +++ b/OpenSim/Framework/General/Interfaces/Scripting/IScriptEngine.cs | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Framework.Interfaces | ||
33 | { | ||
34 | public interface IScriptEngine | ||
35 | { | ||
36 | bool Init(IScriptAPI api); | ||
37 | string GetName(); | ||
38 | void LoadScript(string script, string scriptName, uint entityID); | ||
39 | void OnFrame(); | ||
40 | } | ||
41 | } | ||
diff --git a/OpenSim/Framework/General/LLSDHelpers.cs b/OpenSim/Framework/General/LLSDHelpers.cs new file mode 100644 index 0000000..051520c --- /dev/null +++ b/OpenSim/Framework/General/LLSDHelpers.cs | |||
@@ -0,0 +1,246 @@ | |||
1 | using System; | ||
2 | using System.Collections; | ||
3 | using System.Collections.Generic; | ||
4 | using System.Text; | ||
5 | using System.IO; | ||
6 | using System.Xml; | ||
7 | using libsecondlife; | ||
8 | |||
9 | namespace OpenSim.Framework | ||
10 | { | ||
11 | public class LLSDHelpers | ||
12 | { | ||
13 | public static string SerialiseLLSDReply(object obj) | ||
14 | { | ||
15 | StringWriter sw = new StringWriter(); | ||
16 | XmlTextWriter writer = new XmlTextWriter(sw); | ||
17 | writer.Formatting = Formatting.None; | ||
18 | writer.WriteStartElement(String.Empty, "llsd", String.Empty); | ||
19 | LLSDHelpers.SerializeLLSDType(writer, obj); | ||
20 | writer.WriteEndElement(); | ||
21 | writer.Close(); | ||
22 | return sw.ToString(); | ||
23 | } | ||
24 | |||
25 | public static void SerializeLLSDType(XmlTextWriter writer, object obj) | ||
26 | { | ||
27 | Type myType = obj.GetType(); | ||
28 | LLSDType[] llsdattributes = (LLSDType[])myType.GetCustomAttributes(typeof(LLSDType), false); | ||
29 | if (llsdattributes.Length > 0) | ||
30 | { | ||
31 | switch (llsdattributes[0].ObjectType) | ||
32 | { | ||
33 | case "MAP": | ||
34 | writer.WriteStartElement(String.Empty, "map", String.Empty); | ||
35 | System.Reflection.FieldInfo[] fields = myType.GetFields(); | ||
36 | for (int i = 0; i < fields.Length; i++) | ||
37 | { | ||
38 | object fieldValue = fields[i].GetValue(obj); | ||
39 | LLSDType[] fieldAttributes = (LLSDType[])fieldValue.GetType().GetCustomAttributes(typeof(LLSDType), false); | ||
40 | if (fieldAttributes.Length > 0) | ||
41 | { | ||
42 | writer.WriteStartElement(String.Empty, "key", String.Empty); | ||
43 | writer.WriteString(fields[i].Name); | ||
44 | writer.WriteEndElement(); | ||
45 | SerializeLLSDType(writer, fieldValue); | ||
46 | } | ||
47 | else | ||
48 | { | ||
49 | //Console.WriteLine("LLSD field name" + fields[i].Name + " , " + fields[i].GetValue(obj).GetType()); | ||
50 | writer.WriteStartElement(String.Empty, "key", String.Empty); | ||
51 | writer.WriteString(fields[i].Name); | ||
52 | writer.WriteEndElement(); | ||
53 | LLSD.LLSDWriteOne(writer, fieldValue); | ||
54 | } | ||
55 | } | ||
56 | writer.WriteEndElement(); | ||
57 | break; | ||
58 | case "ARRAY": | ||
59 | // LLSDArray arrayObject = obj as LLSDArray; | ||
60 | // ArrayList a = arrayObject.Array; | ||
61 | ArrayList a = (ArrayList)obj.GetType().GetField("Array").GetValue(obj); | ||
62 | writer.WriteStartElement(String.Empty, "array", String.Empty); | ||
63 | foreach (object item in a) | ||
64 | { | ||
65 | SerializeLLSDType(writer, item); | ||
66 | } | ||
67 | writer.WriteEndElement(); | ||
68 | break; | ||
69 | } | ||
70 | } | ||
71 | else | ||
72 | { | ||
73 | LLSD.LLSDWriteOne(writer, obj); | ||
74 | } | ||
75 | } | ||
76 | |||
77 | public static object DeserialiseLLSDMap(Hashtable llsd, object obj) | ||
78 | { | ||
79 | Type myType = obj.GetType(); | ||
80 | LLSDType[] llsdattributes = (LLSDType[])myType.GetCustomAttributes(typeof(LLSDType), false); | ||
81 | if (llsdattributes.Length > 0) | ||
82 | { | ||
83 | switch (llsdattributes[0].ObjectType) | ||
84 | { | ||
85 | case "MAP": | ||
86 | IDictionaryEnumerator enumerator = llsd.GetEnumerator(); | ||
87 | while (enumerator.MoveNext()) | ||
88 | { | ||
89 | System.Reflection.FieldInfo field = myType.GetField((string)enumerator.Key); | ||
90 | if (field != null) | ||
91 | { | ||
92 | if (enumerator.Value is Hashtable) | ||
93 | { | ||
94 | object fieldValue = field.GetValue(obj); | ||
95 | DeserialiseLLSDMap((Hashtable) enumerator.Value, fieldValue); | ||
96 | } | ||
97 | else if (enumerator.Value is ArrayList) | ||
98 | { | ||
99 | object fieldValue = field.GetValue(obj); | ||
100 | fieldValue.GetType().GetField("Array").SetValue(fieldValue, enumerator.Value); | ||
101 | //TODO | ||
102 | // the LLSD map/array types in the array need to be deserialised | ||
103 | // but first we need to know the right class to deserialise them into. | ||
104 | } | ||
105 | else | ||
106 | { | ||
107 | field.SetValue(obj, enumerator.Value); | ||
108 | } | ||
109 | } | ||
110 | } | ||
111 | break; | ||
112 | } | ||
113 | } | ||
114 | return obj; | ||
115 | } | ||
116 | } | ||
117 | |||
118 | [LLSDType("MAP")] | ||
119 | public class LLSDMapLayerResponse | ||
120 | { | ||
121 | public LLSDMapRequest AgentData = new LLSDMapRequest(); | ||
122 | public LLSDArray LayerData = new LLSDArray(); | ||
123 | |||
124 | public LLSDMapLayerResponse() | ||
125 | { | ||
126 | |||
127 | } | ||
128 | } | ||
129 | |||
130 | [LLSDType("MAP")] | ||
131 | public class LLSDCapsDetails | ||
132 | { | ||
133 | public string MapLayer = ""; | ||
134 | public string NewFileAgentInventory = ""; | ||
135 | //public string EventQueueGet = ""; | ||
136 | |||
137 | public LLSDCapsDetails() | ||
138 | { | ||
139 | |||
140 | } | ||
141 | } | ||
142 | |||
143 | [LLSDType("MAP")] | ||
144 | public class LLSDMapLayer | ||
145 | { | ||
146 | public int Left = 0; | ||
147 | public int Right = 0; | ||
148 | public int Top = 0; | ||
149 | public int Bottom = 0; | ||
150 | public LLUUID ImageID = LLUUID.Zero; | ||
151 | |||
152 | public LLSDMapLayer() | ||
153 | { | ||
154 | |||
155 | } | ||
156 | } | ||
157 | |||
158 | [LLSDType("ARRAY")] | ||
159 | public class LLSDArray | ||
160 | { | ||
161 | public ArrayList Array = new ArrayList(); | ||
162 | |||
163 | public LLSDArray() | ||
164 | { | ||
165 | |||
166 | } | ||
167 | } | ||
168 | |||
169 | [LLSDType("MAP")] | ||
170 | public class LLSDMapRequest | ||
171 | { | ||
172 | public int Flags = 0; | ||
173 | |||
174 | public LLSDMapRequest() | ||
175 | { | ||
176 | |||
177 | } | ||
178 | } | ||
179 | |||
180 | [LLSDType("MAP")] | ||
181 | public class LLSDUploadReply | ||
182 | { | ||
183 | public string new_asset = ""; | ||
184 | public LLUUID new_inventory_item = LLUUID.Zero; | ||
185 | public string state = ""; | ||
186 | |||
187 | public LLSDUploadReply() | ||
188 | { | ||
189 | |||
190 | } | ||
191 | } | ||
192 | |||
193 | [LLSDType("MAP")] | ||
194 | public class LLSDCapEvent | ||
195 | { | ||
196 | public int id = 0; | ||
197 | public LLSDArray events = new LLSDArray(); | ||
198 | |||
199 | public LLSDCapEvent() | ||
200 | { | ||
201 | |||
202 | } | ||
203 | } | ||
204 | |||
205 | [LLSDType("MAP")] | ||
206 | public class LLSDEmpty | ||
207 | { | ||
208 | public LLSDEmpty() | ||
209 | { | ||
210 | |||
211 | } | ||
212 | } | ||
213 | |||
214 | [LLSDType("MAP")] | ||
215 | public class LLSDTest | ||
216 | { | ||
217 | public int Test1 = 20; | ||
218 | public int Test2 = 10; | ||
219 | |||
220 | public LLSDTest() | ||
221 | { | ||
222 | |||
223 | } | ||
224 | } | ||
225 | |||
226 | |||
227 | [AttributeUsage(AttributeTargets.Class)] | ||
228 | public class LLSDType : Attribute | ||
229 | { | ||
230 | private string myType; | ||
231 | |||
232 | public LLSDType(string type) | ||
233 | { | ||
234 | myType = type; | ||
235 | |||
236 | } | ||
237 | |||
238 | public string ObjectType | ||
239 | { | ||
240 | get | ||
241 | { | ||
242 | return myType; | ||
243 | } | ||
244 | } | ||
245 | } | ||
246 | } | ||
diff --git a/OpenSim/Framework/General/Logger.cs b/OpenSim/Framework/General/Logger.cs new file mode 100644 index 0000000..e7eaa03 --- /dev/null +++ b/OpenSim/Framework/General/Logger.cs | |||
@@ -0,0 +1,85 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | |||
5 | namespace OpenSim.Framework | ||
6 | { | ||
7 | public class Logger | ||
8 | { | ||
9 | public static Logger Instance = new Logger( false ); | ||
10 | |||
11 | public delegate void LoggerMethodDelegate(); | ||
12 | private delegate bool LoggerDelegate( LoggerMethodDelegate whatToDo ); | ||
13 | |||
14 | |||
15 | private LoggerDelegate m_delegate; | ||
16 | |||
17 | public Logger( bool log ) | ||
18 | { | ||
19 | if( log ) | ||
20 | { | ||
21 | m_delegate = CatchAndLog; | ||
22 | } | ||
23 | else | ||
24 | { | ||
25 | m_delegate = DontCatch; | ||
26 | } | ||
27 | } | ||
28 | |||
29 | public bool Wrap( LoggerMethodDelegate whatToDo ) | ||
30 | { | ||
31 | return m_delegate( whatToDo ); | ||
32 | } | ||
33 | |||
34 | |||
35 | private bool CatchAndLog(LoggerMethodDelegate whatToDo) | ||
36 | { | ||
37 | try | ||
38 | { | ||
39 | whatToDo(); | ||
40 | return true; | ||
41 | } | ||
42 | catch(Exception e) | ||
43 | { | ||
44 | System.Console.WriteLine( "Exception logged!!! Woah!!!!" ); | ||
45 | return false; | ||
46 | } | ||
47 | } | ||
48 | |||
49 | private bool DontCatch(LoggerMethodDelegate whatToDo) | ||
50 | { | ||
51 | whatToDo(); | ||
52 | return true; | ||
53 | } | ||
54 | |||
55 | public class LoggerExample | ||
56 | { | ||
57 | public void TryWrap() | ||
58 | { | ||
59 | // This will log and ignore | ||
60 | Logger log = new Logger(true); | ||
61 | |||
62 | log.Wrap(delegate() | ||
63 | { | ||
64 | Int16.Parse("waa!"); | ||
65 | }); | ||
66 | |||
67 | // This will throw; | ||
68 | try | ||
69 | { | ||
70 | |||
71 | log = new Logger(false); | ||
72 | |||
73 | log.Wrap(delegate() | ||
74 | { | ||
75 | Int16.Parse("waa!"); | ||
76 | }); | ||
77 | } | ||
78 | catch | ||
79 | { | ||
80 | System.Console.WriteLine("Example barfed!"); | ||
81 | } | ||
82 | } | ||
83 | } | ||
84 | } | ||
85 | } | ||
diff --git a/OpenSim/Framework/General/LoginService.cs b/OpenSim/Framework/General/LoginService.cs new file mode 100644 index 0000000..f14754f --- /dev/null +++ b/OpenSim/Framework/General/LoginService.cs | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using Nwc.XmlRpc; | ||
33 | using libsecondlife; | ||
34 | |||
35 | namespace OpenSim.Framework.Grid | ||
36 | { | ||
37 | public abstract class LoginService | ||
38 | { | ||
39 | |||
40 | } | ||
41 | } \ No newline at end of file | ||
diff --git a/OpenSim/Framework/General/OpenSim.Framework.csproj b/OpenSim/Framework/General/OpenSim.Framework.csproj new file mode 100644 index 0000000..e164d5a --- /dev/null +++ b/OpenSim/Framework/General/OpenSim.Framework.csproj | |||
@@ -0,0 +1,213 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{8ACA2445-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="Db4objects.Db4o.dll" > | ||
62 | <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="libsecondlife.dll" > | ||
66 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System" > | ||
70 | <HintPath>System.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="System.Xml" > | ||
74 | <HintPath>System.Xml.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | <Reference Include="XMLRPC.dll" > | ||
78 | <HintPath>..\..\..\bin\XMLRPC.dll</HintPath> | ||
79 | <Private>False</Private> | ||
80 | </Reference> | ||
81 | </ItemGroup> | ||
82 | <ItemGroup> | ||
83 | <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj"> | ||
84 | <Name>OpenSim.Framework.Console</Name> | ||
85 | <Project>{A7CD0630-0000-0000-0000-000000000000}</Project> | ||
86 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
87 | <Private>False</Private> | ||
88 | </ProjectReference> | ||
89 | </ItemGroup> | ||
90 | <ItemGroup> | ||
91 | <Compile Include="AgentInventory.cs"> | ||
92 | <SubType>Code</SubType> | ||
93 | </Compile> | ||
94 | <Compile Include="AuthenticateSessionBase.cs"> | ||
95 | <SubType>Code</SubType> | ||
96 | </Compile> | ||
97 | <Compile Include="BlockingQueue.cs"> | ||
98 | <SubType>Code</SubType> | ||
99 | </Compile> | ||
100 | <Compile Include="IRegionCommsListener.cs"> | ||
101 | <SubType>Code</SubType> | ||
102 | </Compile> | ||
103 | <Compile Include="LLSDHelpers.cs"> | ||
104 | <SubType>Code</SubType> | ||
105 | </Compile> | ||
106 | <Compile Include="Logger.cs"> | ||
107 | <SubType>Code</SubType> | ||
108 | </Compile> | ||
109 | <Compile Include="LoginService.cs"> | ||
110 | <SubType>Code</SubType> | ||
111 | </Compile> | ||
112 | <Compile Include="RegionCommsListener.cs"> | ||
113 | <SubType>Code</SubType> | ||
114 | </Compile> | ||
115 | <Compile Include="Remoting.cs"> | ||
116 | <SubType>Code</SubType> | ||
117 | </Compile> | ||
118 | <Compile Include="SimProfile.cs"> | ||
119 | <SubType>Code</SubType> | ||
120 | </Compile> | ||
121 | <Compile Include="UserProfile.cs"> | ||
122 | <SubType>Code</SubType> | ||
123 | </Compile> | ||
124 | <Compile Include="Util.cs"> | ||
125 | <SubType>Code</SubType> | ||
126 | </Compile> | ||
127 | <Compile Include="Interfaces\AuthenticateResponse.cs"> | ||
128 | <SubType>Code</SubType> | ||
129 | </Compile> | ||
130 | <Compile Include="Interfaces\IAssetServer.cs"> | ||
131 | <SubType>Code</SubType> | ||
132 | </Compile> | ||
133 | <Compile Include="Interfaces\IClientAPI.cs"> | ||
134 | <SubType>Code</SubType> | ||
135 | </Compile> | ||
136 | <Compile Include="Interfaces\ILocalStorage.cs"> | ||
137 | <SubType>Code</SubType> | ||
138 | </Compile> | ||
139 | <Compile Include="Interfaces\IUserServer.cs"> | ||
140 | <SubType>Code</SubType> | ||
141 | </Compile> | ||
142 | <Compile Include="Interfaces\IWorld.cs"> | ||
143 | <SubType>Code</SubType> | ||
144 | </Compile> | ||
145 | <Compile Include="Interfaces\Config\IGenericConfig.cs"> | ||
146 | <SubType>Code</SubType> | ||
147 | </Compile> | ||
148 | <Compile Include="Interfaces\Config\IGridConfig.cs"> | ||
149 | <SubType>Code</SubType> | ||
150 | </Compile> | ||
151 | <Compile Include="Interfaces\Config\IUserConfig.cs"> | ||
152 | <SubType>Code</SubType> | ||
153 | </Compile> | ||
154 | <Compile Include="Interfaces\Scripting\IScriptAPI.cs"> | ||
155 | <SubType>Code</SubType> | ||
156 | </Compile> | ||
157 | <Compile Include="Interfaces\Scripting\IScriptEngine.cs"> | ||
158 | <SubType>Code</SubType> | ||
159 | </Compile> | ||
160 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
161 | <SubType>Code</SubType> | ||
162 | </Compile> | ||
163 | <Compile Include="Types\AgentCiruitData.cs"> | ||
164 | <SubType>Code</SubType> | ||
165 | </Compile> | ||
166 | <Compile Include="Types\AgentWearable.cs"> | ||
167 | <SubType>Code</SubType> | ||
168 | </Compile> | ||
169 | <Compile Include="Types\AssetBase.cs"> | ||
170 | <SubType>Code</SubType> | ||
171 | </Compile> | ||
172 | <Compile Include="Types\AssetLandmark.cs"> | ||
173 | <SubType>Code</SubType> | ||
174 | </Compile> | ||
175 | <Compile Include="Types\AssetStorage.cs"> | ||
176 | <SubType>Code</SubType> | ||
177 | </Compile> | ||
178 | <Compile Include="Types\EstateSettings.cs"> | ||
179 | <SubType>Code</SubType> | ||
180 | </Compile> | ||
181 | <Compile Include="Types\Login.cs"> | ||
182 | <SubType>Code</SubType> | ||
183 | </Compile> | ||
184 | <Compile Include="Types\MapBlockData.cs"> | ||
185 | <SubType>Code</SubType> | ||
186 | </Compile> | ||
187 | <Compile Include="Types\NeighbourInfo.cs"> | ||
188 | <SubType>Code</SubType> | ||
189 | </Compile> | ||
190 | <Compile Include="Types\NetworkServersInfo.cs"> | ||
191 | <SubType>Code</SubType> | ||
192 | </Compile> | ||
193 | <Compile Include="Types\ParcelData.cs"> | ||
194 | <SubType>Code</SubType> | ||
195 | </Compile> | ||
196 | <Compile Include="Types\PrimData.cs"> | ||
197 | <SubType>Code</SubType> | ||
198 | </Compile> | ||
199 | <Compile Include="Types\RegionHandle.cs"> | ||
200 | <SubType>Code</SubType> | ||
201 | </Compile> | ||
202 | <Compile Include="Types\RegionInfo.cs"> | ||
203 | <SubType>Code</SubType> | ||
204 | </Compile> | ||
205 | </ItemGroup> | ||
206 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
207 | <PropertyGroup> | ||
208 | <PreBuildEvent> | ||
209 | </PreBuildEvent> | ||
210 | <PostBuildEvent> | ||
211 | </PostBuildEvent> | ||
212 | </PropertyGroup> | ||
213 | </Project> | ||
diff --git a/OpenSim/Framework/General/OpenSim.Framework.csproj.user b/OpenSim/Framework/General/OpenSim.Framework.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/General/OpenSim.Framework.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/General/Properties/AssemblyInfo.cs b/OpenSim/Framework/General/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..86f5cdb --- /dev/null +++ b/OpenSim/Framework/General/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,33 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenSim.FrameWork")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenSim.FrameWork")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("a08e20c7-f191-4137-b1f0-9291408fa521")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | [assembly: AssemblyVersion("1.0.0.0")] | ||
33 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/General/RegionCommsListener.cs b/OpenSim/Framework/General/RegionCommsListener.cs new file mode 100644 index 0000000..bba928f --- /dev/null +++ b/OpenSim/Framework/General/RegionCommsListener.cs | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Interfaces; | ||
32 | using OpenSim.Framework.Types; | ||
33 | |||
34 | namespace OpenSim.Framework | ||
35 | { | ||
36 | public class RegionCommsListener :IRegionCommsListener | ||
37 | { | ||
38 | public event ExpectUserDelegate OnExpectUser; | ||
39 | public event GenericCall2 OnExpectChildAgent; | ||
40 | public event AgentCrossing OnAvatarCrossingIntoRegion; | ||
41 | public event UpdateNeighbours OnNeighboursUpdate; | ||
42 | |||
43 | /// <summary> | ||
44 | /// | ||
45 | /// </summary> | ||
46 | /// <param name="agent"></param> | ||
47 | /// <returns></returns> | ||
48 | public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData agent) | ||
49 | { | ||
50 | if(OnExpectUser != null) | ||
51 | { | ||
52 | OnExpectUser(regionHandle, agent); | ||
53 | return true; | ||
54 | } | ||
55 | |||
56 | return false; | ||
57 | } | ||
58 | |||
59 | public virtual bool TriggerExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position) | ||
60 | { | ||
61 | if (OnAvatarCrossingIntoRegion != null) | ||
62 | { | ||
63 | OnAvatarCrossingIntoRegion(regionHandle, agentID, position); | ||
64 | return true; | ||
65 | } | ||
66 | return false; | ||
67 | } | ||
68 | } | ||
69 | } | ||
diff --git a/OpenSim/Framework/General/Remoting.cs b/OpenSim/Framework/General/Remoting.cs new file mode 100644 index 0000000..e6fdf70 --- /dev/null +++ b/OpenSim/Framework/General/Remoting.cs | |||
@@ -0,0 +1,136 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.Security.Cryptography; | ||
32 | |||
33 | namespace OpenSim.Framework | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// NEEDS AUDIT. | ||
37 | /// </summary> | ||
38 | /// <remarks> | ||
39 | /// Suggested implementation | ||
40 | /// <para>Store two digests for each foreign host. A local copy of the local hash using the local challenge (when issued), and a local copy of the remote hash using the remote challenge.</para> | ||
41 | /// <para>When sending data to the foreign host - run 'Sign' on the data and affix the returned byte[] to the message.</para> | ||
42 | /// <para>When recieving data from the foreign host - run 'Authenticate' against the data and the attached byte[].</para> | ||
43 | /// <para>Both hosts should be performing these operations for this to be effective.</para> | ||
44 | /// </remarks> | ||
45 | class RemoteDigest | ||
46 | { | ||
47 | private byte[] currentHash; | ||
48 | private byte[] secret; | ||
49 | |||
50 | private SHA512Managed SHA512; | ||
51 | |||
52 | /// <summary> | ||
53 | /// Initialises a new RemoteDigest authentication mechanism | ||
54 | /// </summary> | ||
55 | /// <remarks>Needs an audit by a cryptographic professional - was not "roll your own"'d by choice but rather a serious lack of decent authentication mechanisms in .NET remoting</remarks> | ||
56 | /// <param name="sharedSecret">The shared secret between systems (for inter-sim, this is provided in encrypted form during connection, for grid this is input manually in setup)</param> | ||
57 | /// <param name="salt">Binary salt - some common value - to be decided what</param> | ||
58 | /// <param name="challenge">The challenge key provided by the third party</param> | ||
59 | public RemoteDigest(string sharedSecret, byte[] salt, string challenge) | ||
60 | { | ||
61 | SHA512 = new SHA512Managed(); | ||
62 | Rfc2898DeriveBytes RFC2898 = new Rfc2898DeriveBytes(sharedSecret,salt); | ||
63 | secret = RFC2898.GetBytes(512); | ||
64 | ASCIIEncoding ASCII = new ASCIIEncoding(); | ||
65 | |||
66 | currentHash = SHA512.ComputeHash(AppendArrays(secret, ASCII.GetBytes(challenge))); | ||
67 | } | ||
68 | |||
69 | /// <summary> | ||
70 | /// Authenticates a piece of incoming data against the local digest. Upon successful authentication, digest string is incremented. | ||
71 | /// </summary> | ||
72 | /// <param name="data">The incoming data</param> | ||
73 | /// <param name="digest">The remote digest</param> | ||
74 | /// <returns></returns> | ||
75 | public bool Authenticate(byte[] data, byte[] digest) | ||
76 | { | ||
77 | byte[] newHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data)); | ||
78 | if (digest == newHash) | ||
79 | { | ||
80 | currentHash = newHash; | ||
81 | return true; | ||
82 | } | ||
83 | else | ||
84 | { | ||
85 | throw new Exception("Hash comparison failed. Key resync required."); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | /// <summary> | ||
90 | /// Signs a new bit of data with the current hash. Returns a byte array which should be affixed to the message. | ||
91 | /// Signing a piece of data will automatically increment the hash - if you sign data and do not send it, the | ||
92 | /// hashes will get out of sync and throw an exception when validation is attempted. | ||
93 | /// </summary> | ||
94 | /// <param name="data">The outgoing data</param> | ||
95 | /// <returns>The local digest</returns> | ||
96 | public byte[] Sign(byte[] data) | ||
97 | { | ||
98 | currentHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data)); | ||
99 | return currentHash; | ||
100 | } | ||
101 | |||
102 | /// <summary> | ||
103 | /// Generates a new challenge string to be issued to a foreign host. Challenges are 1024-bit (effective strength of less than 512-bits) messages generated using the Crytographic Random Number Generator. | ||
104 | /// </summary> | ||
105 | /// <returns>A 128-character hexadecimal string containing the challenge.</returns> | ||
106 | public static string GenerateChallenge() | ||
107 | { | ||
108 | RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider(); | ||
109 | byte[] bytes = new byte[64]; | ||
110 | RNG.GetBytes(bytes); | ||
111 | |||
112 | StringBuilder sb = new StringBuilder(bytes.Length * 2); | ||
113 | foreach (byte b in bytes) | ||
114 | { | ||
115 | sb.AppendFormat("{0:x2}", b); | ||
116 | } | ||
117 | return sb.ToString(); | ||
118 | } | ||
119 | |||
120 | /// <summary> | ||
121 | /// Helper function, merges two byte arrays | ||
122 | /// </summary> | ||
123 | /// <remarks>Sourced from MSDN Forum</remarks> | ||
124 | /// <param name="a">A</param> | ||
125 | /// <param name="b">B</param> | ||
126 | /// <returns>C</returns> | ||
127 | private byte[] AppendArrays(byte[] a, byte[] b) | ||
128 | { | ||
129 | byte[] c = new byte[a.Length + b.Length]; | ||
130 | Buffer.BlockCopy(a, 0, c, 0, a.Length); | ||
131 | Buffer.BlockCopy(b, 0, c, a.Length, b.Length); | ||
132 | return c; | ||
133 | } | ||
134 | |||
135 | } | ||
136 | } | ||
diff --git a/OpenSim/Framework/General/SimProfile.cs b/OpenSim/Framework/General/SimProfile.cs new file mode 100644 index 0000000..cfa5e50 --- /dev/null +++ b/OpenSim/Framework/General/SimProfile.cs | |||
@@ -0,0 +1,122 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Collections; | ||
31 | using System.Xml; | ||
32 | using System.Text; | ||
33 | using libsecondlife; | ||
34 | using Nwc.XmlRpc; | ||
35 | |||
36 | namespace OpenSim.Framework.Sims | ||
37 | { | ||
38 | public class SimProfile | ||
39 | { | ||
40 | public LLUUID UUID; | ||
41 | public ulong regionhandle; | ||
42 | public string regionname; | ||
43 | public string sim_ip; | ||
44 | public uint sim_port; | ||
45 | public string caps_url; | ||
46 | public uint RegionLocX; | ||
47 | public uint RegionLocY; | ||
48 | public string sendkey; | ||
49 | public string recvkey; | ||
50 | public bool online; | ||
51 | |||
52 | public SimProfile LoadFromGrid(ulong region_handle, string GridURL, string SendKey, string RecvKey) | ||
53 | { | ||
54 | try | ||
55 | { | ||
56 | Hashtable GridReqParams = new Hashtable(); | ||
57 | GridReqParams["region_handle"] = region_handle.ToString(); | ||
58 | GridReqParams["authkey"] = SendKey; | ||
59 | ArrayList SendParams = new ArrayList(); | ||
60 | SendParams.Add(GridReqParams); | ||
61 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); | ||
62 | |||
63 | XmlRpcResponse GridResp = GridReq.Send(GridURL, 3000); | ||
64 | |||
65 | Hashtable RespData = (Hashtable)GridResp.Value; | ||
66 | this.UUID = new LLUUID((string)RespData["UUID"]); | ||
67 | this.regionhandle = Helpers.UIntsToLong(((uint)Convert.ToUInt32(RespData["region_locx"]) * 256), ((uint)Convert.ToUInt32(RespData["region_locy"]) * 256)); | ||
68 | this.regionname = (string)RespData["regionname"]; | ||
69 | this.sim_ip = (string)RespData["sim_ip"]; | ||
70 | this.sim_port = (uint)Convert.ToUInt16(RespData["sim_port"]); | ||
71 | this.caps_url = "http://" + ((string)RespData["sim_ip"]) + ":" + (string)RespData["sim_port"] + "/"; | ||
72 | this.RegionLocX = (uint)Convert.ToUInt32(RespData["region_locx"]); | ||
73 | this.RegionLocY = (uint)Convert.ToUInt32(RespData["region_locy"]); | ||
74 | this.sendkey = SendKey; | ||
75 | this.recvkey = RecvKey; | ||
76 | } | ||
77 | catch (Exception e) | ||
78 | { | ||
79 | System.Console.WriteLine(e.ToString()); | ||
80 | } | ||
81 | return this; | ||
82 | } | ||
83 | |||
84 | public SimProfile LoadFromGrid(LLUUID UUID, string GridURL, string SendKey, string RecvKey) | ||
85 | { | ||
86 | try | ||
87 | { | ||
88 | Hashtable GridReqParams = new Hashtable(); | ||
89 | GridReqParams["UUID"] = UUID.ToString(); | ||
90 | GridReqParams["authkey"] = SendKey; | ||
91 | ArrayList SendParams = new ArrayList(); | ||
92 | SendParams.Add(GridReqParams); | ||
93 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); | ||
94 | |||
95 | XmlRpcResponse GridResp = GridReq.Send(GridURL, 3000); | ||
96 | |||
97 | Hashtable RespData = (Hashtable)GridResp.Value; | ||
98 | this.UUID = new LLUUID((string)RespData["UUID"]); | ||
99 | this.regionhandle = Helpers.UIntsToLong(((uint)Convert.ToUInt32(RespData["region_locx"]) * 256), ((uint)Convert.ToUInt32(RespData["region_locy"]) * 256)); | ||
100 | this.regionname = (string)RespData["regionname"]; | ||
101 | this.sim_ip = (string)RespData["sim_ip"]; | ||
102 | this.sim_port = (uint)Convert.ToUInt16(RespData["sim_port"]); | ||
103 | this.caps_url = "http://" + ((string)RespData["sim_ip"]) + ":" + (string)RespData["sim_port"] + "/"; | ||
104 | this.RegionLocX = (uint)Convert.ToUInt32(RespData["region_locx"]); | ||
105 | this.RegionLocY = (uint)Convert.ToUInt32(RespData["region_locy"]); | ||
106 | this.sendkey = SendKey; | ||
107 | this.recvkey = RecvKey; | ||
108 | } | ||
109 | catch (Exception e) | ||
110 | { | ||
111 | System.Console.WriteLine(e.ToString()); | ||
112 | } | ||
113 | return this; | ||
114 | } | ||
115 | |||
116 | |||
117 | public SimProfile() | ||
118 | { | ||
119 | } | ||
120 | } | ||
121 | |||
122 | } | ||
diff --git a/OpenSim/Framework/General/Types/AgentCiruitData.cs b/OpenSim/Framework/General/Types/AgentCiruitData.cs new file mode 100644 index 0000000..a650343 --- /dev/null +++ b/OpenSim/Framework/General/Types/AgentCiruitData.cs | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class AgentCircuitData | ||
36 | { | ||
37 | public AgentCircuitData() { } | ||
38 | public LLUUID AgentID; | ||
39 | public LLUUID SessionID; | ||
40 | public LLUUID SecureSessionID; | ||
41 | public LLVector3 startpos; | ||
42 | public string firstname; | ||
43 | public string lastname; | ||
44 | public uint circuitcode; | ||
45 | public bool child; | ||
46 | public LLUUID InventoryFolder; | ||
47 | public LLUUID BaseFolder; | ||
48 | public string CapsPath = ""; | ||
49 | } | ||
50 | } | ||
diff --git a/OpenSim/Framework/General/Types/AgentWearable.cs b/OpenSim/Framework/General/Types/AgentWearable.cs new file mode 100644 index 0000000..4c93da7 --- /dev/null +++ b/OpenSim/Framework/General/Types/AgentWearable.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class AvatarWearable | ||
36 | { | ||
37 | public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
38 | public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
39 | |||
40 | public AvatarWearable() | ||
41 | { | ||
42 | |||
43 | } | ||
44 | |||
45 | public static AvatarWearable[] DefaultWearables | ||
46 | { | ||
47 | get | ||
48 | { | ||
49 | AvatarWearable[] defaultWearables = new AvatarWearable[13]; //should be 13 of these | ||
50 | for (int i = 0; i < 13; i++) | ||
51 | { | ||
52 | defaultWearables[i] = new AvatarWearable(); | ||
53 | } | ||
54 | defaultWearables[0].AssetID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); | ||
55 | defaultWearables[0].ItemID = LLUUID.Random(); | ||
56 | return defaultWearables; | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | } | ||
diff --git a/OpenSim/Framework/General/Types/AssetBase.cs b/OpenSim/Framework/General/Types/AssetBase.cs new file mode 100644 index 0000000..86586a6 --- /dev/null +++ b/OpenSim/Framework/General/Types/AssetBase.cs | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class AssetBase | ||
36 | { | ||
37 | public byte[] Data; | ||
38 | public LLUUID FullID; | ||
39 | public sbyte Type; | ||
40 | public sbyte InvType; | ||
41 | public string Name; | ||
42 | public string Description; | ||
43 | |||
44 | public AssetBase() | ||
45 | { | ||
46 | |||
47 | } | ||
48 | } | ||
49 | } | ||
diff --git a/OpenSim/Framework/General/Types/AssetLandmark.cs b/OpenSim/Framework/General/Types/AssetLandmark.cs new file mode 100644 index 0000000..8a10b70 --- /dev/null +++ b/OpenSim/Framework/General/Types/AssetLandmark.cs | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class AssetLandmark : AssetBase | ||
36 | { | ||
37 | public int Version; | ||
38 | public LLVector3 Position; | ||
39 | public LLUUID RegionID; | ||
40 | |||
41 | public AssetLandmark(AssetBase a) | ||
42 | { | ||
43 | this.Data = a.Data; | ||
44 | this.FullID = a.FullID; | ||
45 | this.Type = a.Type; | ||
46 | this.InvType = a.InvType; | ||
47 | this.Name = a.Name; | ||
48 | this.Description = a.Description; | ||
49 | InternData(); | ||
50 | } | ||
51 | |||
52 | private void InternData() | ||
53 | { | ||
54 | string temp = System.Text.Encoding.UTF8.GetString(Data).Trim(); | ||
55 | string[] parts = temp.Split('\n'); | ||
56 | int.TryParse(parts[0].Substring(17, 1), out Version); | ||
57 | LLUUID.TryParse(parts[1].Substring(10, 36), out RegionID); | ||
58 | LLVector3.TryParse(parts[2].Substring(11, parts[2].Length - 11), out Position); | ||
59 | } | ||
60 | } | ||
61 | } | ||
diff --git a/OpenSim/Framework/General/Types/AssetStorage.cs b/OpenSim/Framework/General/Types/AssetStorage.cs new file mode 100644 index 0000000..8cac23a --- /dev/null +++ b/OpenSim/Framework/General/Types/AssetStorage.cs | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class AssetStorage | ||
36 | { | ||
37 | |||
38 | public AssetStorage() { | ||
39 | } | ||
40 | |||
41 | public AssetStorage(LLUUID assetUUID) { | ||
42 | UUID=assetUUID; | ||
43 | } | ||
44 | |||
45 | public byte[] Data; | ||
46 | public sbyte Type; | ||
47 | public string Name; | ||
48 | public LLUUID UUID; | ||
49 | } | ||
50 | } | ||
diff --git a/OpenSim/Framework/General/Types/EstateSettings.cs b/OpenSim/Framework/General/Types/EstateSettings.cs new file mode 100644 index 0000000..778c893 --- /dev/null +++ b/OpenSim/Framework/General/Types/EstateSettings.cs | |||
@@ -0,0 +1,97 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | using libsecondlife; | ||
34 | |||
35 | namespace OpenSim.Framework.Types | ||
36 | { | ||
37 | public class EstateSettings | ||
38 | { | ||
39 | //Settings to this island | ||
40 | public float billableFactor = (float)0.0; | ||
41 | public uint estateID = 0; | ||
42 | public uint parentEstateID = 0; | ||
43 | |||
44 | public byte maxAgents = 40; | ||
45 | public float objectBonusFactor = (float)1.0; | ||
46 | |||
47 | public int redirectGridX = 0; //?? | ||
48 | public int redirectGridY = 0; //?? | ||
49 | public libsecondlife.Simulator.RegionFlags regionFlags = libsecondlife.Simulator.RegionFlags.None; //Booleam values of various region settings | ||
50 | public libsecondlife.Simulator.SimAccess simAccess = libsecondlife.Simulator.SimAccess.Mature; //Is sim PG, Mature, etc? Mature by default. | ||
51 | public float sunHour = 0; | ||
52 | |||
53 | public float terrainRaiseLimit = 0; | ||
54 | public float terrainLowerLimit = 0; | ||
55 | |||
56 | public bool useFixedSun = false; | ||
57 | public int pricePerMeter = 1; | ||
58 | |||
59 | public ushort regionWaterHeight = 20; | ||
60 | public bool regionAllowTerraform = true; | ||
61 | |||
62 | // Region Information | ||
63 | // Low resolution 'base' textures. No longer used. | ||
64 | public LLUUID terrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); // Default | ||
65 | public LLUUID terrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); // Default | ||
66 | public LLUUID terrainBase2 = new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f"); // Default | ||
67 | public LLUUID terrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); // Default | ||
68 | |||
69 | // Higher resolution terrain textures | ||
70 | public LLUUID terrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
71 | public LLUUID terrainDetail1 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
72 | public LLUUID terrainDetail2 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
73 | public LLUUID terrainDetail3 = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
74 | |||
75 | // First quad - each point is bilinearly interpolated at each meter of terrain | ||
76 | public float terrainStartHeight0 = 10.0f; | ||
77 | public float terrainStartHeight1 = 10.0f; | ||
78 | public float terrainStartHeight2 = 10.0f; | ||
79 | public float terrainStartHeight3 = 10.0f; | ||
80 | |||
81 | // Second quad - also bilinearly interpolated. | ||
82 | // Terrain texturing is done that: | ||
83 | // 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y] | ||
84 | public float terrainHeightRange0 = 60.0f; //00 | ||
85 | public float terrainHeightRange1 = 60.0f; //01 | ||
86 | public float terrainHeightRange2 = 60.0f; //10 | ||
87 | public float terrainHeightRange3 = 60.0f; //11 | ||
88 | |||
89 | // Terrain Default (Must be in F32 Format!) | ||
90 | public string terrainFile = "default.r32"; | ||
91 | public double terrainMultiplier = 60.0; | ||
92 | public float waterHeight = (float)20.0; | ||
93 | |||
94 | public LLUUID terrainImageID = LLUUID.Zero; // the assetID that is the current Map image for this region | ||
95 | |||
96 | } | ||
97 | } | ||
diff --git a/OpenSim/Framework/General/Types/Login.cs b/OpenSim/Framework/General/Types/Login.cs new file mode 100644 index 0000000..3180a16 --- /dev/null +++ b/OpenSim/Framework/General/Types/Login.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class Login | ||
36 | { | ||
37 | public string First = "Test"; | ||
38 | public string Last = "User"; | ||
39 | public LLUUID Agent; | ||
40 | public LLUUID Session; | ||
41 | public LLUUID SecureSession = LLUUID.Zero; | ||
42 | public LLUUID InventoryFolder; | ||
43 | public LLUUID BaseFolder; | ||
44 | public uint CircuitCode; | ||
45 | public string CapsPath =""; | ||
46 | |||
47 | public Login() | ||
48 | { | ||
49 | |||
50 | } | ||
51 | } | ||
52 | } | ||
diff --git a/OpenSim/Framework/General/Types/MapBlockData.cs b/OpenSim/Framework/General/Types/MapBlockData.cs new file mode 100644 index 0000000..2e6f56e --- /dev/null +++ b/OpenSim/Framework/General/Types/MapBlockData.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using libsecondlife; | ||
5 | |||
6 | namespace OpenSim.Framework.Types | ||
7 | { | ||
8 | public class MapBlockData | ||
9 | { | ||
10 | public uint Flags; | ||
11 | public ushort X; | ||
12 | public ushort Y; | ||
13 | public byte Agents; | ||
14 | public byte Access; | ||
15 | public byte WaterHeight; | ||
16 | public LLUUID MapImageId; | ||
17 | public String Name; | ||
18 | public uint RegionFlags; | ||
19 | |||
20 | public MapBlockData() | ||
21 | { | ||
22 | |||
23 | } | ||
24 | } | ||
25 | } | ||
diff --git a/OpenSim/Framework/General/Types/NeighbourInfo.cs b/OpenSim/Framework/General/Types/NeighbourInfo.cs new file mode 100644 index 0000000..310fd1c --- /dev/null +++ b/OpenSim/Framework/General/Types/NeighbourInfo.cs | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Interfaces; | ||
32 | using OpenSim.Framework.Utilities; | ||
33 | using OpenSim.Framework.Console; | ||
34 | using libsecondlife; | ||
35 | |||
36 | namespace OpenSim.Framework.Types | ||
37 | { | ||
38 | public class NeighbourInfo | ||
39 | { | ||
40 | public NeighbourInfo() | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public ulong regionhandle; | ||
45 | public uint RegionLocX; | ||
46 | public uint RegionLocY; | ||
47 | public string sim_ip; | ||
48 | public uint sim_port; | ||
49 | } | ||
50 | } | ||
diff --git a/OpenSim/Framework/General/Types/NetworkServersInfo.cs b/OpenSim/Framework/General/Types/NetworkServersInfo.cs new file mode 100644 index 0000000..73d7811 --- /dev/null +++ b/OpenSim/Framework/General/Types/NetworkServersInfo.cs | |||
@@ -0,0 +1,181 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Interfaces; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class NetworkServersInfo | ||
36 | { | ||
37 | public string AssetURL = "http://127.0.0.1:8003/"; | ||
38 | public string AssetSendKey = ""; | ||
39 | |||
40 | public string GridURL = ""; | ||
41 | public string GridSendKey = ""; | ||
42 | public string GridRecvKey = ""; | ||
43 | public string UserURL = ""; | ||
44 | public string UserSendKey = ""; | ||
45 | public string UserRecvKey = ""; | ||
46 | public bool isSandbox; | ||
47 | |||
48 | public uint DefaultHomeLocX = 0; | ||
49 | public uint DefaultHomeLocY = 0; | ||
50 | |||
51 | public int HttpListenerPort = 9000; | ||
52 | public int RemotingListenerPort = 8895; | ||
53 | |||
54 | public void InitConfig(bool sandboxMode, IGenericConfig configData) | ||
55 | { | ||
56 | this.isSandbox = sandboxMode; | ||
57 | |||
58 | try | ||
59 | { | ||
60 | string attri = ""; | ||
61 | |||
62 | attri = ""; | ||
63 | attri = configData.GetAttribute("HttpListenerPort"); | ||
64 | if (attri == "") | ||
65 | { | ||
66 | string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Http Listener Port", "9000"); | ||
67 | configData.SetAttribute("HttpListenerPort", location); | ||
68 | this.HttpListenerPort = Convert.ToInt32(location); | ||
69 | } | ||
70 | else | ||
71 | { | ||
72 | this.HttpListenerPort = Convert.ToInt32(attri); | ||
73 | } | ||
74 | |||
75 | attri = ""; | ||
76 | attri = configData.GetAttribute("RemotingListenerPort"); | ||
77 | if (attri == "") | ||
78 | { | ||
79 | string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Remoting Listener Port", "8895"); | ||
80 | configData.SetAttribute("RemotingListenerPort", location); | ||
81 | this.RemotingListenerPort = Convert.ToInt32(location); | ||
82 | } | ||
83 | else | ||
84 | { | ||
85 | this.RemotingListenerPort = Convert.ToInt32(attri); | ||
86 | } | ||
87 | |||
88 | if (sandboxMode) | ||
89 | { | ||
90 | // default home location X | ||
91 | attri = ""; | ||
92 | attri = configData.GetAttribute("DefaultLocationX"); | ||
93 | if (attri == "") | ||
94 | { | ||
95 | string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default Home Location X", "1000"); | ||
96 | configData.SetAttribute("DefaultLocationX", location); | ||
97 | this.DefaultHomeLocX = (uint)Convert.ToUInt32(location); | ||
98 | } | ||
99 | else | ||
100 | { | ||
101 | this.DefaultHomeLocX = (uint)Convert.ToUInt32(attri); | ||
102 | } | ||
103 | |||
104 | // default home location Y | ||
105 | attri = ""; | ||
106 | attri = configData.GetAttribute("DefaultLocationY"); | ||
107 | if (attri == "") | ||
108 | { | ||
109 | string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Default Home Location Y", "1000"); | ||
110 | configData.SetAttribute("DefaultLocationY", location); | ||
111 | this.DefaultHomeLocY = (uint)Convert.ToUInt32(location); | ||
112 | } | ||
113 | else | ||
114 | { | ||
115 | this.DefaultHomeLocY = (uint)Convert.ToUInt32(attri); | ||
116 | } | ||
117 | } | ||
118 | if (!isSandbox) | ||
119 | { | ||
120 | //Grid Server | ||
121 | attri = ""; | ||
122 | attri = configData.GetAttribute("GridServerURL"); | ||
123 | if (attri == "") | ||
124 | { | ||
125 | this.GridURL = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/"); | ||
126 | configData.SetAttribute("GridServerURL", this.GridURL); | ||
127 | } | ||
128 | else | ||
129 | { | ||
130 | this.GridURL = attri; | ||
131 | } | ||
132 | |||
133 | //Grid Send Key | ||
134 | attri = ""; | ||
135 | attri = configData.GetAttribute("GridSendKey"); | ||
136 | if (attri == "") | ||
137 | { | ||
138 | this.GridSendKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to send to grid server", "null"); | ||
139 | configData.SetAttribute("GridSendKey", this.GridSendKey); | ||
140 | } | ||
141 | else | ||
142 | { | ||
143 | this.GridSendKey = attri; | ||
144 | } | ||
145 | |||
146 | //Grid Receive Key | ||
147 | attri = ""; | ||
148 | attri = configData.GetAttribute("GridRecvKey"); | ||
149 | if (attri == "") | ||
150 | { | ||
151 | this.GridRecvKey = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Key to expect from grid server", "null"); | ||
152 | configData.SetAttribute("GridRecvKey", this.GridRecvKey); | ||
153 | } | ||
154 | else | ||
155 | { | ||
156 | this.GridRecvKey = attri; | ||
157 | } | ||
158 | |||
159 | attri = ""; | ||
160 | attri = configData.GetAttribute("AssetServerURL"); | ||
161 | if (attri == "") | ||
162 | { | ||
163 | this.AssetURL = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/"); | ||
164 | configData.SetAttribute("AssetServerURL", this.GridURL); | ||
165 | } | ||
166 | else | ||
167 | { | ||
168 | this.AssetURL = attri; | ||
169 | } | ||
170 | |||
171 | } | ||
172 | configData.Commit(); | ||
173 | } | ||
174 | catch (Exception e) | ||
175 | { | ||
176 | OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured"); | ||
177 | OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString()); | ||
178 | } | ||
179 | } | ||
180 | } | ||
181 | } | ||
diff --git a/OpenSim/Framework/General/Types/ParcelData.cs b/OpenSim/Framework/General/Types/ParcelData.cs new file mode 100644 index 0000000..40f128a --- /dev/null +++ b/OpenSim/Framework/General/Types/ParcelData.cs | |||
@@ -0,0 +1,115 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | |||
36 | public class ParcelData | ||
37 | { | ||
38 | public byte[] parcelBitmapByteArray = new byte[512]; | ||
39 | public string parcelName = ""; | ||
40 | public string parcelDesc = ""; | ||
41 | public LLUUID ownerID = new LLUUID(); | ||
42 | public bool isGroupOwned = false; | ||
43 | public LLVector3 AABBMin = new LLVector3(); | ||
44 | public LLVector3 AABBMax = new LLVector3(); | ||
45 | public int area = 0; | ||
46 | public uint auctionID = 0; //Unemplemented. If set to 0, not being auctioned | ||
47 | public LLUUID authBuyerID = new LLUUID(); //Unemplemented. Authorized Buyer's UUID | ||
48 | public libsecondlife.Parcel.ParcelCategory category = new libsecondlife.Parcel.ParcelCategory(); //Unemplemented. Parcel's chosen category | ||
49 | public int claimDate = 0; //Unemplemented | ||
50 | public int claimPrice = 0; //Unemplemented | ||
51 | public LLUUID groupID = new LLUUID(); //Unemplemented | ||
52 | public int groupPrims = 0; //Unemplemented | ||
53 | public int salePrice = 0; //Unemeplemented. Parcels price. | ||
54 | public libsecondlife.Parcel.ParcelStatus parcelStatus = libsecondlife.Parcel.ParcelStatus.None; | ||
55 | public libsecondlife.Parcel.ParcelFlags parcelFlags = libsecondlife.Parcel.ParcelFlags.None; | ||
56 | public byte landingType = 0; | ||
57 | public byte mediaAutoScale = 0; | ||
58 | public LLUUID mediaID = LLUUID.Zero; | ||
59 | public int localID = 0; | ||
60 | public LLUUID globalID = new LLUUID(); | ||
61 | |||
62 | public string mediaURL = ""; | ||
63 | public string musicURL = ""; | ||
64 | public float passHours = 0; | ||
65 | public int passPrice = 0; | ||
66 | public LLUUID snapshotID = LLUUID.Zero; | ||
67 | public LLVector3 userLocation = new LLVector3(); | ||
68 | public LLVector3 userLookAt = new LLVector3(); | ||
69 | |||
70 | public ParcelData() | ||
71 | { | ||
72 | globalID = LLUUID.Random(); | ||
73 | } | ||
74 | |||
75 | public ParcelData Copy() | ||
76 | { | ||
77 | ParcelData parcelData = new ParcelData(); | ||
78 | |||
79 | parcelData.AABBMax = this.AABBMax; | ||
80 | parcelData.AABBMin = this.AABBMin; | ||
81 | parcelData.area = this.area; | ||
82 | parcelData.auctionID = this.auctionID; | ||
83 | parcelData.authBuyerID = this.authBuyerID; | ||
84 | parcelData.category = this.category; | ||
85 | parcelData.claimDate = this.claimDate; | ||
86 | parcelData.claimPrice = this.claimPrice; | ||
87 | parcelData.globalID = this.globalID; | ||
88 | parcelData.groupID = this.groupID; | ||
89 | parcelData.groupPrims = this.groupPrims; | ||
90 | parcelData.isGroupOwned = this.isGroupOwned; | ||
91 | parcelData.localID = this.localID; | ||
92 | parcelData.landingType = this.landingType; | ||
93 | parcelData.mediaAutoScale = this.mediaAutoScale; | ||
94 | parcelData.mediaID = this.mediaID; | ||
95 | parcelData.mediaURL = this.mediaURL; | ||
96 | parcelData.musicURL = this.musicURL; | ||
97 | parcelData.ownerID = this.ownerID; | ||
98 | parcelData.parcelBitmapByteArray = (byte[])this.parcelBitmapByteArray.Clone(); | ||
99 | parcelData.parcelDesc = this.parcelDesc; | ||
100 | parcelData.parcelFlags = this.parcelFlags; | ||
101 | parcelData.parcelName = this.parcelName; | ||
102 | parcelData.parcelStatus = this.parcelStatus; | ||
103 | parcelData.passHours = this.passHours; | ||
104 | parcelData.passPrice = this.passPrice; | ||
105 | parcelData.salePrice = this.salePrice; | ||
106 | parcelData.snapshotID = this.snapshotID; | ||
107 | parcelData.userLocation = this.userLocation; | ||
108 | parcelData.userLookAt = this.userLookAt; | ||
109 | |||
110 | return parcelData; | ||
111 | |||
112 | } | ||
113 | } | ||
114 | |||
115 | } | ||
diff --git a/OpenSim/Framework/General/Types/PrimData.cs b/OpenSim/Framework/General/Types/PrimData.cs new file mode 100644 index 0000000..f84ae3e --- /dev/null +++ b/OpenSim/Framework/General/Types/PrimData.cs | |||
@@ -0,0 +1,230 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | |||
33 | namespace OpenSim.Framework.Types | ||
34 | { | ||
35 | public class PrimData | ||
36 | { | ||
37 | private const uint FULL_MASK_PERMISSIONS = 2147483647; | ||
38 | |||
39 | public LLUUID OwnerID; | ||
40 | public byte PCode; | ||
41 | public ushort PathBegin; | ||
42 | public ushort PathEnd; | ||
43 | public byte PathScaleX; | ||
44 | public byte PathScaleY; | ||
45 | public byte PathShearX; | ||
46 | public byte PathShearY; | ||
47 | public sbyte PathSkew; | ||
48 | public ushort ProfileBegin; | ||
49 | public ushort ProfileEnd; | ||
50 | public LLVector3 Scale; | ||
51 | public byte PathCurve; | ||
52 | public byte ProfileCurve; | ||
53 | public uint ParentID = 0; | ||
54 | public ushort ProfileHollow; | ||
55 | public sbyte PathRadiusOffset; | ||
56 | public byte PathRevolutions; | ||
57 | public sbyte PathTaperX; | ||
58 | public sbyte PathTaperY; | ||
59 | public sbyte PathTwist; | ||
60 | public sbyte PathTwistBegin; | ||
61 | public byte[] TextureEntry; // a LL textureEntry in byte[] format | ||
62 | |||
63 | public Int32 CreationDate; | ||
64 | public uint OwnerMask = FULL_MASK_PERMISSIONS; | ||
65 | public uint NextOwnerMask = FULL_MASK_PERMISSIONS; | ||
66 | public uint GroupMask = FULL_MASK_PERMISSIONS; | ||
67 | public uint EveryoneMask = FULL_MASK_PERMISSIONS; | ||
68 | public uint BaseMask = FULL_MASK_PERMISSIONS; | ||
69 | |||
70 | //following only used during prim storage | ||
71 | public LLVector3 Position; | ||
72 | public LLQuaternion Rotation = new LLQuaternion(0, 1, 0, 0); | ||
73 | public uint LocalID; | ||
74 | public LLUUID FullID; | ||
75 | |||
76 | public PrimData() | ||
77 | { | ||
78 | |||
79 | } | ||
80 | |||
81 | public PrimData(byte[] data) | ||
82 | { | ||
83 | int i = 0; | ||
84 | |||
85 | this.OwnerID = new LLUUID(data, i); i += 16; | ||
86 | this.PCode = data[i++]; | ||
87 | this.PathBegin = (ushort)(data[i++] + (data[i++] << 8)); | ||
88 | this.PathEnd = (ushort)(data[i++] + (data[i++] << 8)); | ||
89 | this.PathScaleX = data[i++]; | ||
90 | this.PathScaleY = data[i++]; | ||
91 | this.PathShearX = data[i++]; | ||
92 | this.PathShearY = data[i++]; | ||
93 | this.PathSkew = (sbyte)data[i++]; | ||
94 | this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8)); | ||
95 | this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8)); | ||
96 | this.Scale = new LLVector3(data, i); i += 12; | ||
97 | this.PathCurve = data[i++]; | ||
98 | this.ProfileCurve = data[i++]; | ||
99 | this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
100 | this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8)); | ||
101 | this.PathRadiusOffset = (sbyte)data[i++]; | ||
102 | this.PathRevolutions = data[i++]; | ||
103 | this.PathTaperX = (sbyte)data[i++]; | ||
104 | this.PathTaperY = (sbyte)data[i++]; | ||
105 | this.PathTwist = (sbyte)data[i++]; | ||
106 | this.PathTwistBegin = (sbyte)data[i++]; | ||
107 | ushort length = (ushort)(data[i++] + (data[i++] << 8)); | ||
108 | this.TextureEntry = new byte[length]; | ||
109 | Array.Copy(data, i, TextureEntry, 0, length); i += length; | ||
110 | this.CreationDate = (Int32)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
111 | this.OwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
112 | this.NextOwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
113 | this.GroupMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
114 | this.EveryoneMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
115 | this.BaseMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
116 | this.Position = new LLVector3(data, i); i += 12; | ||
117 | this.Rotation = new LLQuaternion(data, i, true); i += 12; | ||
118 | this.LocalID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24)); | ||
119 | this.FullID = new LLUUID(data, i); i += 16; | ||
120 | |||
121 | } | ||
122 | |||
123 | public byte[] ToBytes() | ||
124 | { | ||
125 | int i = 0; | ||
126 | byte[] bytes = new byte[126 + TextureEntry.Length]; | ||
127 | Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16; | ||
128 | bytes[i++] = this.PCode; | ||
129 | bytes[i++] = (byte)(this.PathBegin % 256); | ||
130 | bytes[i++] = (byte)((this.PathBegin >> 8) % 256); | ||
131 | bytes[i++] = (byte)(this.PathEnd % 256); | ||
132 | bytes[i++] = (byte)((this.PathEnd >> 8) % 256); | ||
133 | bytes[i++] = this.PathScaleX; | ||
134 | bytes[i++] = this.PathScaleY; | ||
135 | bytes[i++] = this.PathShearX; | ||
136 | bytes[i++] = this.PathShearY; | ||
137 | bytes[i++] = (byte)this.PathSkew; | ||
138 | bytes[i++] = (byte)(this.ProfileBegin % 256); | ||
139 | bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256); | ||
140 | bytes[i++] = (byte)(this.ProfileEnd % 256); | ||
141 | bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256); | ||
142 | Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12; | ||
143 | bytes[i++] = this.PathCurve; | ||
144 | bytes[i++] = this.ProfileCurve; | ||
145 | bytes[i++] = (byte)(ParentID % 256); | ||
146 | bytes[i++] = (byte)((ParentID >> 8) % 256); | ||
147 | bytes[i++] = (byte)((ParentID >> 16) % 256); | ||
148 | bytes[i++] = (byte)((ParentID >> 24) % 256); | ||
149 | bytes[i++] = (byte)(this.ProfileHollow % 256); | ||
150 | bytes[i++] = (byte)((this.ProfileHollow >> 8) % 256); | ||
151 | bytes[i++] = ((byte)this.PathRadiusOffset); | ||
152 | bytes[i++] = this.PathRevolutions; | ||
153 | bytes[i++] = ((byte)this.PathTaperX); | ||
154 | bytes[i++] = ((byte)this.PathTaperY); | ||
155 | bytes[i++] = ((byte)this.PathTwist); | ||
156 | bytes[i++] = ((byte)this.PathTwistBegin); | ||
157 | bytes[i++] = (byte)(TextureEntry.Length % 256); | ||
158 | bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256); | ||
159 | Array.Copy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length; | ||
160 | bytes[i++] = (byte)(this.CreationDate % 256); | ||
161 | bytes[i++] = (byte)((this.CreationDate >> 8) % 256); | ||
162 | bytes[i++] = (byte)((this.CreationDate >> 16) % 256); | ||
163 | bytes[i++] = (byte)((this.CreationDate >> 24) % 256); | ||
164 | bytes[i++] = (byte)(this.OwnerMask % 256); | ||
165 | bytes[i++] = (byte)((this.OwnerMask >> 8) % 256); | ||
166 | bytes[i++] = (byte)((this.OwnerMask >> 16) % 256); | ||
167 | bytes[i++] = (byte)((this.OwnerMask >> 24) % 256); | ||
168 | bytes[i++] = (byte)(this.NextOwnerMask % 256); | ||
169 | bytes[i++] = (byte)((this.NextOwnerMask >> 8) % 256); | ||
170 | bytes[i++] = (byte)((this.NextOwnerMask >> 16) % 256); | ||
171 | bytes[i++] = (byte)((this.NextOwnerMask >> 24) % 256); | ||
172 | bytes[i++] = (byte)(this.GroupMask % 256); | ||
173 | bytes[i++] = (byte)((this.GroupMask >> 8) % 256); | ||
174 | bytes[i++] = (byte)((this.GroupMask >> 16) % 256); | ||
175 | bytes[i++] = (byte)((this.GroupMask >> 24) % 256); | ||
176 | bytes[i++] = (byte)(this.EveryoneMask % 256); | ||
177 | bytes[i++] = (byte)((this.EveryoneMask >> 8) % 256); | ||
178 | bytes[i++] = (byte)((this.EveryoneMask >> 16) % 256); | ||
179 | bytes[i++] = (byte)((this.EveryoneMask >> 24) % 256); | ||
180 | bytes[i++] = (byte)(this.BaseMask % 256); | ||
181 | bytes[i++] = (byte)((this.BaseMask >> 8) % 256); | ||
182 | bytes[i++] = (byte)((this.BaseMask >> 16) % 256); | ||
183 | bytes[i++] = (byte)((this.BaseMask >> 24) % 256); | ||
184 | Array.Copy(this.Position.GetBytes(), 0, bytes, i, 12); i += 12; | ||
185 | if (this.Rotation == new LLQuaternion(0, 0, 0, 0)) | ||
186 | { | ||
187 | this.Rotation = new LLQuaternion(0, 1, 0, 0); | ||
188 | } | ||
189 | Array.Copy(this.Rotation.GetBytes(), 0, bytes, i, 12); i += 12; | ||
190 | bytes[i++] = (byte)(this.LocalID % 256); | ||
191 | bytes[i++] = (byte)((this.LocalID >> 8) % 256); | ||
192 | bytes[i++] = (byte)((this.LocalID >> 16) % 256); | ||
193 | bytes[i++] = (byte)((this.LocalID >> 24) % 256); | ||
194 | Array.Copy(FullID.GetBytes(), 0, bytes, i, 16); i += 16; | ||
195 | |||
196 | return bytes; | ||
197 | } | ||
198 | |||
199 | public static PrimData DefaultCube() | ||
200 | { | ||
201 | PrimData primData = new PrimData(); | ||
202 | primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||
203 | primData.FullID = LLUUID.Random(); | ||
204 | primData.Scale = new LLVector3(0.5f, 0.5f, 0.5f); | ||
205 | primData.Rotation = new LLQuaternion(0, 0, 0, 1); | ||
206 | primData.PCode = 9; | ||
207 | primData.ParentID = 0; | ||
208 | primData.PathBegin = 0; | ||
209 | primData.PathEnd = 0; | ||
210 | primData.PathScaleX = 0; | ||
211 | primData.PathScaleY = 0; | ||
212 | primData.PathShearX = 0; | ||
213 | primData.PathShearY = 0; | ||
214 | primData.PathSkew = 0; | ||
215 | primData.ProfileBegin = 0; | ||
216 | primData.ProfileEnd = 0; | ||
217 | primData.PathCurve = 16; | ||
218 | primData.ProfileCurve = 1; | ||
219 | primData.ProfileHollow = 0; | ||
220 | primData.PathRadiusOffset = 0; | ||
221 | primData.PathRevolutions = 0; | ||
222 | primData.PathTaperX = 0; | ||
223 | primData.PathTaperY = 0; | ||
224 | primData.PathTwist = 0; | ||
225 | primData.PathTwistBegin = 0; | ||
226 | |||
227 | return primData; | ||
228 | } | ||
229 | } | ||
230 | } | ||
diff --git a/OpenSim/Framework/General/Types/RegionHandle.cs b/OpenSim/Framework/General/Types/RegionHandle.cs new file mode 100644 index 0000000..1271d04 --- /dev/null +++ b/OpenSim/Framework/General/Types/RegionHandle.cs | |||
@@ -0,0 +1,120 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using System.Net; | ||
5 | |||
6 | namespace OpenSim.Framework.Types | ||
7 | { | ||
8 | /// <summary> | ||
9 | /// A class for manipulating RegionHandle coordinates | ||
10 | /// </summary> | ||
11 | class RegionHandle | ||
12 | { | ||
13 | private UInt64 handle; | ||
14 | |||
15 | /// <summary> | ||
16 | /// Initialises a new grid-aware RegionHandle | ||
17 | /// </summary> | ||
18 | /// <param name="ip">IP Address of the Grid Server for this region</param> | ||
19 | /// <param name="x">Grid X Coordinate</param> | ||
20 | /// <param name="y">Grid Y Coordinate</param> | ||
21 | public RegionHandle(string ip, short x, short y) | ||
22 | { | ||
23 | IPAddress addr = IPAddress.Parse(ip); | ||
24 | |||
25 | long baseHandle = addr.Address; | ||
26 | |||
27 | // Split the IP address in half | ||
28 | short a = (short)((baseHandle << 16) & 0xFFFF); | ||
29 | short b = (short)((baseHandle << 0) & 0xFFFF); | ||
30 | |||
31 | // Raise the bounds a little | ||
32 | uint nx = (uint)x; | ||
33 | uint ny = (uint)y; | ||
34 | |||
35 | // Multiply grid coords to get region coords | ||
36 | nx *= 256; | ||
37 | ny *= 256; | ||
38 | |||
39 | // Stuff the IP address in too | ||
40 | nx = (uint)a << 16; | ||
41 | ny = (uint)b << 16; | ||
42 | |||
43 | handle = ((UInt64)nx << 32) | (uint)ny; | ||
44 | } | ||
45 | |||
46 | /// <summary> | ||
47 | /// Initialises a new RegionHandle that is not inter-grid aware | ||
48 | /// </summary> | ||
49 | /// <param name="x">Grid X Coordinate</param> | ||
50 | /// <param name="y">Grid Y Coordinate</param> | ||
51 | public RegionHandle(uint x, uint y) | ||
52 | { | ||
53 | handle = ((x * 256) << 32) | (y * 256); | ||
54 | } | ||
55 | |||
56 | /// <summary> | ||
57 | /// Initialises a new RegionHandle from an existing value | ||
58 | /// </summary> | ||
59 | /// <param name="Region">A U64 RegionHandle</param> | ||
60 | public RegionHandle(UInt64 Region) | ||
61 | { | ||
62 | handle = Region; | ||
63 | } | ||
64 | |||
65 | /// <summary> | ||
66 | /// Returns the Grid Masked RegionHandle - For use in Teleport packets and other packets where sending the grid IP address may be handy. | ||
67 | /// </summary> | ||
68 | /// <remarks>Do not use for SimulatorEnable packets. The client will choke.</remarks> | ||
69 | /// <returns>Region Handle including IP Address encoding</returns> | ||
70 | public UInt64 getTeleportHandle() | ||
71 | { | ||
72 | return handle; | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Returns a RegionHandle which may be used for SimulatorEnable packets. Removes the IP address encoding and returns the lower bounds. | ||
77 | /// </summary> | ||
78 | /// <returns>A U64 RegionHandle for use in SimulatorEnable packets.</returns> | ||
79 | public UInt64 getNeighbourHandle() | ||
80 | { | ||
81 | UInt64 mask = 0x0000FFFF0000FFFF; | ||
82 | |||
83 | return handle | mask; | ||
84 | } | ||
85 | |||
86 | /// <summary> | ||
87 | /// Returns the IP Address of the GridServer from a Grid-Encoded RegionHandle | ||
88 | /// </summary> | ||
89 | /// <returns>Grid Server IP Address</returns> | ||
90 | public IPAddress getGridIP() | ||
91 | { | ||
92 | uint a = (uint)((handle >> 16) & 0xFFFF); | ||
93 | uint b = (uint)((handle >> 48) & 0xFFFF); | ||
94 | |||
95 | return new IPAddress((long)(a << 16) | (long)b); | ||
96 | } | ||
97 | |||
98 | /// <summary> | ||
99 | /// Returns the X Coordinate from a Grid-Encoded RegionHandle | ||
100 | /// </summary> | ||
101 | /// <returns>X Coordinate</returns> | ||
102 | public uint getGridX() | ||
103 | { | ||
104 | uint x = (uint)((handle >> 32) & 0xFFFF); | ||
105 | |||
106 | return x; | ||
107 | } | ||
108 | |||
109 | /// <summary> | ||
110 | /// Returns the Y Coordinate from a Grid-Encoded RegionHandle | ||
111 | /// </summary> | ||
112 | /// <returns>Y Coordinate</returns> | ||
113 | public uint getGridY() | ||
114 | { | ||
115 | uint y = (uint)((handle >> 0) & 0xFFFF); | ||
116 | |||
117 | return y; | ||
118 | } | ||
119 | } | ||
120 | } | ||
diff --git a/OpenSim/Framework/General/Types/RegionInfo.cs b/OpenSim/Framework/General/Types/RegionInfo.cs new file mode 100644 index 0000000..48e6922 --- /dev/null +++ b/OpenSim/Framework/General/Types/RegionInfo.cs | |||
@@ -0,0 +1,304 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.Globalization; | ||
32 | using OpenSim.Framework.Interfaces; | ||
33 | using OpenSim.Framework.Utilities; | ||
34 | using OpenSim.Framework.Console; | ||
35 | using libsecondlife; | ||
36 | |||
37 | namespace OpenSim.Framework.Types | ||
38 | { | ||
39 | public class RegionInfo | ||
40 | { | ||
41 | public LLUUID SimUUID = new LLUUID(); | ||
42 | public string RegionName = ""; | ||
43 | public uint RegionLocX = 0; | ||
44 | public uint RegionLocY = 0; | ||
45 | public ulong RegionHandle = 0; | ||
46 | |||
47 | public string DataStore = ""; | ||
48 | public bool isSandbox = false; | ||
49 | |||
50 | public LLUUID MasterAvatarAssignedUUID = new LLUUID(); | ||
51 | public string MasterAvatarFirstName = ""; | ||
52 | public string MasterAvatarLastName = ""; | ||
53 | public string MasterAvatarSandboxPassword = ""; | ||
54 | |||
55 | /// <summary> | ||
56 | /// Port used for listening (TCP and UDP) | ||
57 | /// </summary> | ||
58 | /// <remarks>Seperate TCP and UDP</remarks> | ||
59 | public int CommsIPListenPort = 0; | ||
60 | /// <summary> | ||
61 | /// Address used for internal listening (default: 0.0.0.0?) | ||
62 | /// </summary> | ||
63 | public string CommsIPListenAddr = ""; | ||
64 | /// <summary> | ||
65 | /// Address used for external addressing (DNS or IP) | ||
66 | /// </summary> | ||
67 | public string CommsExternalAddress = ""; | ||
68 | |||
69 | |||
70 | public EstateSettings estateSettings; | ||
71 | |||
72 | public RegionInfo() | ||
73 | { | ||
74 | estateSettings = new EstateSettings(); | ||
75 | } | ||
76 | |||
77 | |||
78 | public void InitConfig(bool sandboxMode, IGenericConfig configData) | ||
79 | { | ||
80 | this.isSandbox = sandboxMode; | ||
81 | try | ||
82 | { | ||
83 | // Sim UUID | ||
84 | string attri = ""; | ||
85 | attri = configData.GetAttribute("SimUUID"); | ||
86 | if (attri == "") | ||
87 | { | ||
88 | this.SimUUID = LLUUID.Random(); | ||
89 | configData.SetAttribute("SimUUID", this.SimUUID.ToString()); | ||
90 | } | ||
91 | else | ||
92 | { | ||
93 | this.SimUUID = new LLUUID(attri); | ||
94 | } | ||
95 | |||
96 | // Sim name | ||
97 | attri = ""; | ||
98 | attri = configData.GetAttribute("SimName"); | ||
99 | if (attri == "") | ||
100 | { | ||
101 | this.RegionName = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Name", "OpenSim test"); | ||
102 | configData.SetAttribute("SimName", this.RegionName); | ||
103 | } | ||
104 | else | ||
105 | { | ||
106 | this.RegionName = attri; | ||
107 | } | ||
108 | // Sim/Grid location X | ||
109 | attri = ""; | ||
110 | attri = configData.GetAttribute("SimLocationX"); | ||
111 | if (attri == "") | ||
112 | { | ||
113 | string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid Location X", "997"); | ||
114 | configData.SetAttribute("SimLocationX", location); | ||
115 | this.RegionLocX = (uint)Convert.ToUInt32(location); | ||
116 | } | ||
117 | else | ||
118 | { | ||
119 | this.RegionLocX = (uint)Convert.ToUInt32(attri); | ||
120 | } | ||
121 | // Sim/Grid location Y | ||
122 | attri = ""; | ||
123 | attri = configData.GetAttribute("SimLocationY"); | ||
124 | if (attri == "") | ||
125 | { | ||
126 | string location = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Grid Location Y", "996"); | ||
127 | configData.SetAttribute("SimLocationY", location); | ||
128 | this.RegionLocY = (uint)Convert.ToUInt32(location); | ||
129 | } | ||
130 | else | ||
131 | { | ||
132 | this.RegionLocY = (uint)Convert.ToUInt32(attri); | ||
133 | } | ||
134 | |||
135 | // Local storage datastore | ||
136 | attri = ""; | ||
137 | attri = configData.GetAttribute("Datastore"); | ||
138 | if (attri == "") | ||
139 | { | ||
140 | string datastore = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Filename for local storage", "localworld.yap"); | ||
141 | configData.SetAttribute("Datastore", datastore); | ||
142 | this.DataStore = datastore; | ||
143 | } | ||
144 | else | ||
145 | { | ||
146 | this.DataStore = attri; | ||
147 | } | ||
148 | |||
149 | //Sim Listen Port | ||
150 | attri = ""; | ||
151 | attri = configData.GetAttribute("SimListenPort"); | ||
152 | if (attri == "") | ||
153 | { | ||
154 | string port = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("UDP port for client connections", "9000"); | ||
155 | configData.SetAttribute("SimListenPort", port); | ||
156 | this.CommsIPListenPort = Convert.ToInt32(port); | ||
157 | } | ||
158 | else | ||
159 | { | ||
160 | this.CommsIPListenPort = Convert.ToInt32(attri); | ||
161 | } | ||
162 | |||
163 | //Sim Listen Address | ||
164 | attri = ""; | ||
165 | attri = configData.GetAttribute("SimListenAddress"); | ||
166 | if (attri == "") | ||
167 | { | ||
168 | this.CommsIPListenAddr = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("IP Address to listen on for client connections", "0.0.0.0"); | ||
169 | configData.SetAttribute("SimListenAddress", this.CommsIPListenAddr); | ||
170 | } | ||
171 | else | ||
172 | { | ||
173 | // Probably belongs elsewhere, but oh well. | ||
174 | if (attri.Trim().StartsWith("SYSTEMIP")) | ||
175 | { | ||
176 | string localhostname = System.Net.Dns.GetHostName(); | ||
177 | System.Net.IPAddress[] ips = System.Net.Dns.GetHostAddresses(localhostname); | ||
178 | try | ||
179 | { | ||
180 | this.CommsIPListenAddr = "0.0.0.0"; // Incase a IPv4 address isnt found | ||
181 | |||
182 | foreach (System.Net.IPAddress ip in ips) | ||
183 | { | ||
184 | if (ip.AddressFamily.ToString() == System.Net.Sockets.ProtocolFamily.InterNetwork.ToString()) | ||
185 | { | ||
186 | this.CommsIPListenAddr = ip.ToString(); | ||
187 | break; | ||
188 | } | ||
189 | } | ||
190 | } | ||
191 | catch (Exception e) | ||
192 | { | ||
193 | e.ToString(); | ||
194 | this.CommsIPListenAddr = "0.0.0.0"; // Use the default if we fail | ||
195 | } | ||
196 | } | ||
197 | else | ||
198 | { | ||
199 | this.CommsIPListenAddr = attri; | ||
200 | } | ||
201 | } | ||
202 | |||
203 | // Sim External Address | ||
204 | attri = ""; | ||
205 | attri = configData.GetAttribute("SimExternalAddress"); | ||
206 | if (attri == "") | ||
207 | { | ||
208 | this.CommsExternalAddress = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("IP or DNS address to send external clients to", "localhost"); | ||
209 | configData.SetAttribute("SimExternalAddress", this.CommsExternalAddress); | ||
210 | } | ||
211 | else | ||
212 | { | ||
213 | this.CommsExternalAddress = attri; | ||
214 | } | ||
215 | |||
216 | attri = ""; | ||
217 | attri = configData.GetAttribute("TerrainFile"); | ||
218 | if (attri == "") | ||
219 | { | ||
220 | this.estateSettings.terrainFile = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("GENERAL SETTING: Default Terrain File", "default.r32"); | ||
221 | configData.SetAttribute("TerrainFile", this.estateSettings.terrainFile); | ||
222 | } | ||
223 | else | ||
224 | { | ||
225 | this.estateSettings.terrainFile = attri; | ||
226 | } | ||
227 | |||
228 | attri = ""; | ||
229 | attri = configData.GetAttribute("TerrainMultiplier"); | ||
230 | if (attri == "") | ||
231 | { | ||
232 | string re = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0"); | ||
233 | this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture); | ||
234 | configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString()); | ||
235 | } | ||
236 | else | ||
237 | { | ||
238 | this.estateSettings.terrainMultiplier = Convert.ToDouble(attri); | ||
239 | } | ||
240 | |||
241 | attri = ""; | ||
242 | attri = configData.GetAttribute("MasterAvatarFirstName"); | ||
243 | if (attri == "") | ||
244 | { | ||
245 | this.MasterAvatarFirstName = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test"); | ||
246 | |||
247 | configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName); | ||
248 | } | ||
249 | else | ||
250 | { | ||
251 | this.MasterAvatarFirstName = attri; | ||
252 | } | ||
253 | |||
254 | attri = ""; | ||
255 | attri = configData.GetAttribute("MasterAvatarLastName"); | ||
256 | if (attri == "") | ||
257 | { | ||
258 | this.MasterAvatarLastName = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User"); | ||
259 | |||
260 | configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName); | ||
261 | } | ||
262 | else | ||
263 | { | ||
264 | this.MasterAvatarLastName = attri; | ||
265 | } | ||
266 | |||
267 | if (isSandbox) //Sandbox Mode Specific Settings | ||
268 | { | ||
269 | attri = ""; | ||
270 | attri = configData.GetAttribute("MasterAvatarSandboxPassword"); | ||
271 | if (attri == "") | ||
272 | { | ||
273 | this.MasterAvatarSandboxPassword = OpenSim.Framework.Console.MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test"); | ||
274 | |||
275 | //Should I store this? | ||
276 | configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword); | ||
277 | } | ||
278 | else | ||
279 | { | ||
280 | this.MasterAvatarSandboxPassword = attri; | ||
281 | } | ||
282 | } | ||
283 | |||
284 | this.RegionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256)); | ||
285 | |||
286 | configData.Commit(); | ||
287 | } | ||
288 | catch (Exception e) | ||
289 | { | ||
290 | OpenSim.Framework.Console.MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured"); | ||
291 | OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString()); | ||
292 | } | ||
293 | |||
294 | OpenSim.Framework.Console.MainLog.Instance.Verbose("Sim settings loaded:"); | ||
295 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "UUID: " + this.SimUUID.ToStringHyphenated()); | ||
296 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Name: " + this.RegionName); | ||
297 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]"); | ||
298 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Region Handle: " + this.RegionHandle.ToString()); | ||
299 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Listening on IP: " + this.CommsIPListenAddr + ":" + this.CommsIPListenPort); | ||
300 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Sandbox Mode? " + isSandbox.ToString()); | ||
301 | |||
302 | } | ||
303 | } | ||
304 | } | ||
diff --git a/OpenSim/Framework/General/UserProfile.cs b/OpenSim/Framework/General/UserProfile.cs new file mode 100644 index 0000000..04ff20b --- /dev/null +++ b/OpenSim/Framework/General/UserProfile.cs | |||
@@ -0,0 +1,89 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using libsecondlife; | ||
32 | using OpenSim.Framework.Inventory; | ||
33 | using System.Security.Cryptography; | ||
34 | |||
35 | namespace OpenSim.Framework.User | ||
36 | { | ||
37 | public class UserProfile | ||
38 | { | ||
39 | |||
40 | public string firstname; | ||
41 | public string lastname; | ||
42 | public ulong homeregionhandle; | ||
43 | public LLVector3 homepos; | ||
44 | public LLVector3 homelookat; | ||
45 | |||
46 | public bool IsGridGod = false; | ||
47 | public bool IsLocal = true; // will be used in future for visitors from foreign grids | ||
48 | public string AssetURL; | ||
49 | public string MD5passwd; | ||
50 | |||
51 | public LLUUID CurrentSessionID; | ||
52 | public LLUUID CurrentSecureSessionID; | ||
53 | public LLUUID UUID; | ||
54 | public Dictionary<LLUUID, uint> Circuits = new Dictionary<LLUUID, uint>(); // tracks circuit codes | ||
55 | |||
56 | public AgentInventory Inventory; | ||
57 | |||
58 | public UserProfile() | ||
59 | { | ||
60 | Circuits = new Dictionary<LLUUID, uint>(); | ||
61 | Inventory = new AgentInventory(); | ||
62 | homeregionhandle = Helpers.UIntsToLong((997 * 256), (996 * 256)); | ||
63 | homepos = new LLVector3(); | ||
64 | homelookat = new LLVector3(); | ||
65 | } | ||
66 | |||
67 | public void InitSessionData() | ||
68 | { | ||
69 | RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider(); | ||
70 | |||
71 | byte[] randDataS = new byte[16]; | ||
72 | byte[] randDataSS = new byte[16]; | ||
73 | |||
74 | rand.GetBytes(randDataS); | ||
75 | rand.GetBytes(randDataSS); | ||
76 | |||
77 | CurrentSecureSessionID = new LLUUID(randDataSS,0); | ||
78 | CurrentSessionID = new LLUUID(randDataS,0); | ||
79 | |||
80 | } | ||
81 | |||
82 | public void AddSimCircuit(uint circuitCode, LLUUID regionUUID) | ||
83 | { | ||
84 | if (this.Circuits.ContainsKey(regionUUID) == false) | ||
85 | this.Circuits.Add(regionUUID, circuitCode); | ||
86 | } | ||
87 | |||
88 | } | ||
89 | } | ||
diff --git a/OpenSim/Framework/General/Util.cs b/OpenSim/Framework/General/Util.cs new file mode 100644 index 0000000..8c34c9b --- /dev/null +++ b/OpenSim/Framework/General/Util.cs | |||
@@ -0,0 +1,186 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Security.Cryptography; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using libsecondlife; | ||
33 | using libsecondlife.Packets; | ||
34 | |||
35 | namespace OpenSim.Framework.Utilities | ||
36 | { | ||
37 | public class Util | ||
38 | { | ||
39 | private static Random randomClass = new Random(); | ||
40 | private static uint nextXferID = 5000; | ||
41 | private static object XferLock = new object(); | ||
42 | |||
43 | public static ulong UIntsToLong(uint X, uint Y) | ||
44 | { | ||
45 | return Helpers.UIntsToLong(X, Y); | ||
46 | } | ||
47 | |||
48 | public static Random RandomClass | ||
49 | { | ||
50 | get | ||
51 | { | ||
52 | return randomClass; | ||
53 | } | ||
54 | } | ||
55 | |||
56 | public static uint GetNextXferID() | ||
57 | { | ||
58 | uint id = 0; | ||
59 | lock(XferLock) | ||
60 | { | ||
61 | id = nextXferID; | ||
62 | nextXferID++; | ||
63 | } | ||
64 | return id; | ||
65 | } | ||
66 | |||
67 | public static int UnixTimeSinceEpoch() | ||
68 | { | ||
69 | TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1)); | ||
70 | int timestamp = (int)t.TotalSeconds; | ||
71 | return timestamp; | ||
72 | } | ||
73 | |||
74 | public static string Md5Hash(string pass) | ||
75 | { | ||
76 | MD5 md5 = MD5CryptoServiceProvider.Create(); | ||
77 | byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass)); | ||
78 | StringBuilder sb = new StringBuilder(); | ||
79 | for (int i = 0; i < dataMd5.Length; i++) | ||
80 | sb.AppendFormat("{0:x2}", dataMd5[i]); | ||
81 | return sb.ToString(); | ||
82 | } | ||
83 | |||
84 | public static string GetRandomCapsPath() | ||
85 | { | ||
86 | LLUUID caps = LLUUID.Random(); | ||
87 | string capsPath = caps.ToStringHyphenated(); | ||
88 | capsPath = capsPath.Remove(capsPath.Length - 4, 4); | ||
89 | return capsPath; | ||
90 | } | ||
91 | |||
92 | //public static int fast_distance2d(int x, int y) | ||
93 | //{ | ||
94 | // x = System.Math.Abs(x); | ||
95 | // y = System.Math.Abs(y); | ||
96 | |||
97 | // int min = System.Math.Min(x, y); | ||
98 | |||
99 | // return (x + y - (min >> 1) - (min >> 2) + (min >> 4)); | ||
100 | //} | ||
101 | |||
102 | public static string FieldToString(byte[] bytes) | ||
103 | { | ||
104 | return FieldToString(bytes, String.Empty); | ||
105 | } | ||
106 | |||
107 | /// <summary> | ||
108 | /// Convert a variable length field (byte array) to a string, with a | ||
109 | /// field name prepended to each line of the output | ||
110 | /// </summary> | ||
111 | /// <remarks>If the byte array has unprintable characters in it, a | ||
112 | /// hex dump will be put in the string instead</remarks> | ||
113 | /// <param name="bytes">The byte array to convert to a string</param> | ||
114 | /// <param name="fieldName">A field name to prepend to each line of output</param> | ||
115 | /// <returns>An ASCII string or a string containing a hex dump, minus | ||
116 | /// the null terminator</returns> | ||
117 | public static string FieldToString(byte[] bytes, string fieldName) | ||
118 | { | ||
119 | // Check for a common case | ||
120 | if (bytes.Length == 0) return String.Empty; | ||
121 | |||
122 | StringBuilder output = new StringBuilder(); | ||
123 | bool printable = true; | ||
124 | |||
125 | for (int i = 0; i < bytes.Length; ++i) | ||
126 | { | ||
127 | // Check if there are any unprintable characters in the array | ||
128 | if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09 | ||
129 | && bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00) | ||
130 | { | ||
131 | printable = false; | ||
132 | break; | ||
133 | } | ||
134 | } | ||
135 | |||
136 | if (printable) | ||
137 | { | ||
138 | if (fieldName.Length > 0) | ||
139 | { | ||
140 | output.Append(fieldName); | ||
141 | output.Append(": "); | ||
142 | } | ||
143 | |||
144 | if (bytes[bytes.Length - 1] == 0x00) | ||
145 | output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1)); | ||
146 | else | ||
147 | output.Append(UTF8Encoding.UTF8.GetString(bytes)); | ||
148 | } | ||
149 | else | ||
150 | { | ||
151 | for (int i = 0; i < bytes.Length; i += 16) | ||
152 | { | ||
153 | if (i != 0) | ||
154 | output.Append(Environment.NewLine); | ||
155 | if (fieldName.Length > 0) | ||
156 | { | ||
157 | output.Append(fieldName); | ||
158 | output.Append(": "); | ||
159 | } | ||
160 | |||
161 | for (int j = 0; j < 16; j++) | ||
162 | { | ||
163 | if ((i + j) < bytes.Length) | ||
164 | output.Append(String.Format("{0:X2} ", bytes[i + j])); | ||
165 | else | ||
166 | output.Append(" "); | ||
167 | } | ||
168 | |||
169 | for (int j = 0; j < 16 && (i + j) < bytes.Length; j++) | ||
170 | { | ||
171 | if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E) | ||
172 | output.Append((char)bytes[i + j]); | ||
173 | else | ||
174 | output.Append("."); | ||
175 | } | ||
176 | } | ||
177 | } | ||
178 | |||
179 | return output.ToString(); | ||
180 | } | ||
181 | public Util() | ||
182 | { | ||
183 | |||
184 | } | ||
185 | } | ||
186 | } | ||
diff --git a/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj new file mode 100644 index 0000000..aae8cd2 --- /dev/null +++ b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj | |||
@@ -0,0 +1,93 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{C74E4A30-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.GenericConfig.Xml</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.GenericConfig.Xml</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="System" > | ||
62 | <HintPath>System.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="System.Xml" > | ||
66 | <HintPath>System.Xml.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | </ItemGroup> | ||
70 | <ItemGroup> | ||
71 | <ProjectReference Include="..\..\General\OpenSim.Framework.csproj"> | ||
72 | <Name>OpenSim.Framework</Name> | ||
73 | <Project>{8ACA2445-0000-0000-0000-000000000000}</Project> | ||
74 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
75 | <Private>False</Private> | ||
76 | </ProjectReference> | ||
77 | </ItemGroup> | ||
78 | <ItemGroup> | ||
79 | <Compile Include="XmlConfig.cs"> | ||
80 | <SubType>Code</SubType> | ||
81 | </Compile> | ||
82 | <Compile Include="Properties\AssemblyInfo.cs"> | ||
83 | <SubType>Code</SubType> | ||
84 | </Compile> | ||
85 | </ItemGroup> | ||
86 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
87 | <PropertyGroup> | ||
88 | <PreBuildEvent> | ||
89 | </PreBuildEvent> | ||
90 | <PostBuildEvent> | ||
91 | </PostBuildEvent> | ||
92 | </PropertyGroup> | ||
93 | </Project> | ||
diff --git a/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj.user b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/GenericConfig/Xml/OpenSim.Framework.GenericConfig.Xml.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs b/OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..de5f48d --- /dev/null +++ b/OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | using System.Reflection; | ||
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | ||
4 | |||
5 | // General Information about an assembly is controlled through the following | ||
6 | // set of attributes. Change these attribute values to modify the information | ||
7 | // associated with an assembly. | ||
8 | [assembly: AssemblyTitle("OpenSim.GenericConfig")] | ||
9 | [assembly: AssemblyDescription("")] | ||
10 | [assembly: AssemblyConfiguration("")] | ||
11 | [assembly: AssemblyCompany("")] | ||
12 | [assembly: AssemblyProduct("OpenSim.GenericConfig")] | ||
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | ||
14 | [assembly: AssemblyTrademark("")] | ||
15 | [assembly: AssemblyCulture("")] | ||
16 | |||
17 | // Setting ComVisible to false makes the types in this assembly not visible | ||
18 | // to COM components. If you need to access a type in this assembly from | ||
19 | // COM, set the ComVisible attribute to true on that type. | ||
20 | [assembly: ComVisible(false)] | ||
21 | |||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||
23 | [assembly: Guid("285a3047-f165-46c8-8767-b51428738a09")] | ||
24 | |||
25 | // Version information for an assembly consists of the following four values: | ||
26 | // | ||
27 | // Major Version | ||
28 | // Minor Version | ||
29 | // Build Number | ||
30 | // Revision | ||
31 | // | ||
32 | // You can specify all the values or you can default the Revision and Build Numbers | ||
33 | // by using the '*' as shown below: | ||
34 | [assembly: AssemblyVersion("1.0.0.0")] | ||
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | ||
diff --git a/OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs b/OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs new file mode 100644 index 0000000..c526aec --- /dev/null +++ b/OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs | |||
@@ -0,0 +1,123 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using System.Xml; | ||
32 | using OpenSim.Framework.Interfaces; | ||
33 | |||
34 | namespace OpenSim.GenericConfig | ||
35 | { | ||
36 | public class XmlConfig : IGenericConfig | ||
37 | { | ||
38 | private XmlDocument doc; | ||
39 | private XmlNode rootNode; | ||
40 | private XmlNode configNode; | ||
41 | private string fileName; | ||
42 | private bool createdFile = false; | ||
43 | |||
44 | public XmlConfig(string filename) | ||
45 | { | ||
46 | fileName = filename; | ||
47 | } | ||
48 | |||
49 | public void LoadData() | ||
50 | { | ||
51 | doc = new XmlDocument(); | ||
52 | |||
53 | if (System.IO.File.Exists(fileName)) | ||
54 | { | ||
55 | XmlTextReader reader = new XmlTextReader(fileName); | ||
56 | reader.WhitespaceHandling = WhitespaceHandling.None; | ||
57 | doc.Load(reader); | ||
58 | reader.Close(); | ||
59 | } | ||
60 | else | ||
61 | { | ||
62 | createdFile = true; | ||
63 | rootNode = doc.CreateNode(XmlNodeType.Element, "Root", ""); | ||
64 | doc.AppendChild(rootNode); | ||
65 | configNode = doc.CreateNode(XmlNodeType.Element, "Config", ""); | ||
66 | rootNode.AppendChild(configNode); | ||
67 | } | ||
68 | |||
69 | |||
70 | rootNode = doc.FirstChild; | ||
71 | if (rootNode.Name != "Root") | ||
72 | throw new Exception("Error: Invalid .xml File. Missing <Root>"); | ||
73 | |||
74 | configNode = rootNode.FirstChild; | ||
75 | if (configNode.Name != "Config") | ||
76 | throw new Exception("Error: Invalid .xml File. <Root> first child should be <Config>"); | ||
77 | |||
78 | if (createdFile) | ||
79 | { | ||
80 | this.Commit(); | ||
81 | } | ||
82 | } | ||
83 | |||
84 | public string GetAttribute(string attributeName) | ||
85 | { | ||
86 | string result = ""; | ||
87 | if (configNode.Attributes[attributeName] != null) | ||
88 | { | ||
89 | result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value; | ||
90 | } | ||
91 | return result; | ||
92 | } | ||
93 | |||
94 | public bool SetAttribute(string attributeName, string attributeValue) | ||
95 | { | ||
96 | if (configNode.Attributes[attributeName] != null) | ||
97 | { | ||
98 | ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue; | ||
99 | } | ||
100 | else | ||
101 | { | ||
102 | XmlAttribute attri; | ||
103 | attri = doc.CreateAttribute(attributeName); | ||
104 | attri.Value = attributeValue; | ||
105 | configNode.Attributes.Append(attri); | ||
106 | } | ||
107 | return true; | ||
108 | } | ||
109 | |||
110 | public void Commit() | ||
111 | { | ||
112 | doc.Save(fileName); | ||
113 | } | ||
114 | |||
115 | public void Close() | ||
116 | { | ||
117 | configNode = null; | ||
118 | rootNode = null; | ||
119 | doc = null; | ||
120 | } | ||
121 | |||
122 | } | ||
123 | } | ||
diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs new file mode 100644 index 0000000..e55e33c --- /dev/null +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs | |||
@@ -0,0 +1,312 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Net; | ||
31 | using System.Text; | ||
32 | using System.Text.RegularExpressions; | ||
33 | using System.Threading; | ||
34 | //using OpenSim.CAPS; | ||
35 | using Nwc.XmlRpc; | ||
36 | using System.Collections; | ||
37 | using OpenSim.Framework.Console; | ||
38 | |||
39 | namespace OpenSim.Servers | ||
40 | { | ||
41 | public class BaseHttpServer | ||
42 | { | ||
43 | protected class RestMethodEntry | ||
44 | { | ||
45 | private string m_path; | ||
46 | public string Path | ||
47 | { | ||
48 | get { return m_path; } | ||
49 | } | ||
50 | |||
51 | private RestMethod m_restMethod; | ||
52 | public RestMethod RestMethod | ||
53 | { | ||
54 | get { return m_restMethod; } | ||
55 | } | ||
56 | |||
57 | public RestMethodEntry(string path, RestMethod restMethod) | ||
58 | { | ||
59 | m_path = path; | ||
60 | m_restMethod = restMethod; | ||
61 | } | ||
62 | } | ||
63 | |||
64 | protected Thread m_workerThread; | ||
65 | protected HttpListener m_httpListener; | ||
66 | protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>(); | ||
67 | protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>(); | ||
68 | protected int m_port; | ||
69 | protected bool firstcaps = true; | ||
70 | |||
71 | public BaseHttpServer(int port) | ||
72 | { | ||
73 | m_port = port; | ||
74 | } | ||
75 | |||
76 | public bool AddRestHandler(string method, string path, RestMethod handler) | ||
77 | { | ||
78 | //Console.WriteLine("adding new REST handler for path " + path); | ||
79 | string methodKey = String.Format("{0}: {1}", method, path); | ||
80 | |||
81 | if (!this.m_restHandlers.ContainsKey(methodKey)) | ||
82 | { | ||
83 | this.m_restHandlers.Add(methodKey, new RestMethodEntry(path, handler)); | ||
84 | return true; | ||
85 | } | ||
86 | |||
87 | //must already have a handler for that path so return false | ||
88 | return false; | ||
89 | } | ||
90 | |||
91 | public bool RemoveRestHandler(string method, string path) | ||
92 | { | ||
93 | string methodKey = String.Format("{0}: {1}", method, path); | ||
94 | if (this.m_restHandlers.ContainsKey(methodKey)) | ||
95 | { | ||
96 | this.m_restHandlers.Remove(methodKey); | ||
97 | return true; | ||
98 | } | ||
99 | return false; | ||
100 | } | ||
101 | |||
102 | public bool AddXmlRPCHandler(string method, XmlRpcMethod handler) | ||
103 | { | ||
104 | if (!this.m_rpcHandlers.ContainsKey(method)) | ||
105 | { | ||
106 | this.m_rpcHandlers.Add(method, handler); | ||
107 | return true; | ||
108 | } | ||
109 | |||
110 | //must already have a handler for that path so return false | ||
111 | return false; | ||
112 | } | ||
113 | |||
114 | protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request) | ||
115 | { | ||
116 | XmlRpcResponse response; | ||
117 | |||
118 | XmlRpcMethod method; | ||
119 | if (this.m_rpcHandlers.TryGetValue(methodName, out method)) | ||
120 | { | ||
121 | response = method(request); | ||
122 | } | ||
123 | else | ||
124 | { | ||
125 | response = new XmlRpcResponse(); | ||
126 | Hashtable unknownMethodError = new Hashtable(); | ||
127 | unknownMethodError["reason"] = "XmlRequest"; ; | ||
128 | unknownMethodError["message"] = "Unknown Rpc request"; | ||
129 | unknownMethodError["login"] = "false"; | ||
130 | response.Value = unknownMethodError; | ||
131 | } | ||
132 | |||
133 | return XmlRpcResponseSerializer.Singleton.Serialize(response); | ||
134 | } | ||
135 | |||
136 | protected virtual string ParseREST(string request, string path, string method) | ||
137 | { | ||
138 | string response; | ||
139 | |||
140 | string requestKey = String.Format("{0}: {1}", method, path); | ||
141 | |||
142 | string bestMatch = String.Empty; | ||
143 | foreach (string currentKey in m_restHandlers.Keys) | ||
144 | { | ||
145 | if (requestKey.StartsWith(currentKey)) | ||
146 | { | ||
147 | if (currentKey.Length > bestMatch.Length) | ||
148 | { | ||
149 | bestMatch = currentKey; | ||
150 | } | ||
151 | } | ||
152 | } | ||
153 | |||
154 | RestMethodEntry restMethodEntry; | ||
155 | if (m_restHandlers.TryGetValue(bestMatch, out restMethodEntry)) | ||
156 | { | ||
157 | RestMethod restMethod = restMethodEntry.RestMethod; | ||
158 | |||
159 | string param = path.Substring(restMethodEntry.Path.Length); | ||
160 | response = restMethod(request, path, param); | ||
161 | |||
162 | } | ||
163 | else | ||
164 | { | ||
165 | response = String.Empty; | ||
166 | } | ||
167 | |||
168 | return response; | ||
169 | } | ||
170 | |||
171 | protected virtual string ParseLLSDXML(string requestBody) | ||
172 | { | ||
173 | // dummy function for now - IMPLEMENT ME! | ||
174 | Console.WriteLine("LLSD request "+requestBody); | ||
175 | string resp = ""; | ||
176 | if (firstcaps) | ||
177 | { | ||
178 | resp = "<llsd><map><key>MapLayer</key><string>http://127.0.0.1:9000/CAPS/</string></map></llsd>"; | ||
179 | firstcaps = false; | ||
180 | } | ||
181 | return resp; | ||
182 | } | ||
183 | |||
184 | protected virtual string ParseXMLRPC(string requestBody) | ||
185 | { | ||
186 | string responseString = String.Empty; | ||
187 | |||
188 | try | ||
189 | { | ||
190 | XmlRpcRequest request = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody); | ||
191 | |||
192 | string methodName = request.MethodName; | ||
193 | |||
194 | responseString = ProcessXMLRPCMethod(methodName, request); | ||
195 | } | ||
196 | catch (Exception e) | ||
197 | { | ||
198 | Console.WriteLine(e.ToString()); | ||
199 | } | ||
200 | return responseString; | ||
201 | } | ||
202 | |||
203 | public virtual void HandleRequest(Object stateinfo) | ||
204 | { | ||
205 | try | ||
206 | { | ||
207 | HttpListenerContext context = (HttpListenerContext)stateinfo; | ||
208 | |||
209 | HttpListenerRequest request = context.Request; | ||
210 | HttpListenerResponse response = context.Response; | ||
211 | |||
212 | response.KeepAlive = false; | ||
213 | response.SendChunked = false; | ||
214 | |||
215 | System.IO.Stream body = request.InputStream; | ||
216 | System.Text.Encoding encoding = System.Text.Encoding.UTF8; | ||
217 | System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding); | ||
218 | |||
219 | string requestBody = reader.ReadToEnd(); | ||
220 | body.Close(); | ||
221 | reader.Close(); | ||
222 | |||
223 | //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType); | ||
224 | //Console.WriteLine(requestBody); | ||
225 | |||
226 | string responseString = ""; | ||
227 | // Console.WriteLine("new request " + request.ContentType +" at "+ request.RawUrl); | ||
228 | switch (request.ContentType) | ||
229 | { | ||
230 | case "text/xml": | ||
231 | // must be XML-RPC, so pass to the XML-RPC parser | ||
232 | |||
233 | responseString = ParseXMLRPC(requestBody); | ||
234 | responseString = Regex.Replace(responseString, "utf-16", "utf-8"); | ||
235 | |||
236 | response.AddHeader("Content-type", "text/xml"); | ||
237 | break; | ||
238 | |||
239 | case "application/xml": | ||
240 | // probably LLSD we hope, otherwise it should be ignored by the parser | ||
241 | // responseString = ParseLLSDXML(requestBody); | ||
242 | responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); | ||
243 | response.AddHeader("Content-type", "application/xml"); | ||
244 | break; | ||
245 | |||
246 | case "application/octet-stream": | ||
247 | // probably LLSD we hope, otherwise it should be ignored by the parser | ||
248 | // responseString = ParseLLSDXML(requestBody); | ||
249 | responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); | ||
250 | response.AddHeader("Content-type", "application/xml"); | ||
251 | break; | ||
252 | |||
253 | case "application/x-www-form-urlencoded": | ||
254 | // a form data POST so send to the REST parser | ||
255 | responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); | ||
256 | response.AddHeader("Content-type", "text/html"); | ||
257 | break; | ||
258 | |||
259 | case null: | ||
260 | // must be REST or invalid crap, so pass to the REST parser | ||
261 | responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); | ||
262 | response.AddHeader("Content-type", "text/html"); | ||
263 | break; | ||
264 | |||
265 | } | ||
266 | |||
267 | byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); | ||
268 | System.IO.Stream output = response.OutputStream; | ||
269 | response.SendChunked = false; | ||
270 | response.ContentLength64 = buffer.Length; | ||
271 | output.Write(buffer, 0, buffer.Length); | ||
272 | output.Close(); | ||
273 | } | ||
274 | catch (Exception e) | ||
275 | { | ||
276 | Console.WriteLine(e.ToString()); | ||
277 | } | ||
278 | } | ||
279 | |||
280 | public void Start() | ||
281 | { | ||
282 | OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server"); | ||
283 | |||
284 | m_workerThread = new Thread(new ThreadStart(StartHTTP)); | ||
285 | m_workerThread.IsBackground = true; | ||
286 | m_workerThread.Start(); | ||
287 | } | ||
288 | |||
289 | private void StartHTTP() | ||
290 | { | ||
291 | try | ||
292 | { | ||
293 | OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK"); | ||
294 | m_httpListener = new HttpListener(); | ||
295 | |||
296 | m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); | ||
297 | m_httpListener.Start(); | ||
298 | |||
299 | HttpListenerContext context; | ||
300 | while (true) | ||
301 | { | ||
302 | context = m_httpListener.GetContext(); | ||
303 | ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context); | ||
304 | } | ||
305 | } | ||
306 | catch (Exception e) | ||
307 | { | ||
308 | OpenSim.Framework.Console.MainLog.Instance.WriteLine(LogPriority.MEDIUM, e.Message); | ||
309 | } | ||
310 | } | ||
311 | } | ||
312 | } | ||
diff --git a/OpenSim/Framework/Servers/CheckSumServer.cs b/OpenSim/Framework/Servers/CheckSumServer.cs new file mode 100644 index 0000000..a359205 --- /dev/null +++ b/OpenSim/Framework/Servers/CheckSumServer.cs | |||
@@ -0,0 +1,141 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Text; | ||
30 | using System.IO; | ||
31 | using System.Threading; | ||
32 | using System.Net; | ||
33 | using System.Net.Sockets; | ||
34 | using System.Timers; | ||
35 | using System.Reflection; | ||
36 | using System.Collections; | ||
37 | using System.Collections.Generic; | ||
38 | using libsecondlife; | ||
39 | using libsecondlife.Packets; | ||
40 | using OpenSim.Framework.Console; | ||
41 | |||
42 | |||
43 | namespace OpenSim.Servers | ||
44 | { | ||
45 | /* public class CheckSumServer : UDPServerBase | ||
46 | { | ||
47 | //protected ConsoleBase m_log; | ||
48 | |||
49 | public CheckSumServer(int port) | ||
50 | : base(port) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | protected override void OnReceivedData(IAsyncResult result) | ||
55 | { | ||
56 | ipeSender = new IPEndPoint(IPAddress.Any, 0); | ||
57 | epSender = (EndPoint)ipeSender; | ||
58 | Packet packet = null; | ||
59 | int numBytes = Server.EndReceiveFrom(result, ref epSender); | ||
60 | int packetEnd = numBytes - 1; | ||
61 | |||
62 | packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer); | ||
63 | |||
64 | if (packet.Type == PacketType.SecuredTemplateChecksumRequest) | ||
65 | { | ||
66 | SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet; | ||
67 | TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket(); | ||
68 | checkreply.DataBlock.Checksum = 3220703154;//180572585; | ||
69 | checkreply.DataBlock.Flags = 0; | ||
70 | checkreply.DataBlock.MajorVersion = 1; | ||
71 | checkreply.DataBlock.MinorVersion = 15; | ||
72 | checkreply.DataBlock.PatchVersion = 0; | ||
73 | checkreply.DataBlock.ServerVersion = 0; | ||
74 | checkreply.TokenBlock.Token = checksum.TokenBlock.Token; | ||
75 | this.SendPacket(checkreply, epSender); | ||
76 | |||
77 | /* | ||
78 | //if we wanted to echo the the checksum/ version from the client (so that any client worked) | ||
79 | SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket(); | ||
80 | checkrequest.TokenBlock.Token = checksum.TokenBlock.Token; | ||
81 | this.SendPacket(checkrequest, epSender); | ||
82 | |||
83 | } | ||
84 | else if (packet.Type == PacketType.TemplateChecksumReply) | ||
85 | { | ||
86 | //echo back the client checksum reply (Hegemon's method) | ||
87 | TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet; | ||
88 | TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket(); | ||
89 | checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum; | ||
90 | checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags; | ||
91 | checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion; | ||
92 | checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion; | ||
93 | checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion; | ||
94 | checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion; | ||
95 | checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token; | ||
96 | this.SendPacket(checkreply2, epSender); | ||
97 | } | ||
98 | else | ||
99 | { | ||
100 | } | ||
101 | |||
102 | Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | ||
103 | } | ||
104 | |||
105 | private void SendPacket(Packet Pack, EndPoint endp) | ||
106 | { | ||
107 | if (!Pack.Header.Resent) | ||
108 | { | ||
109 | Pack.Header.Sequence = 1; | ||
110 | } | ||
111 | |||
112 | byte[] ZeroOutBuffer = new byte[4096]; | ||
113 | byte[] sendbuffer; | ||
114 | sendbuffer = Pack.ToBytes(); | ||
115 | |||
116 | try | ||
117 | { | ||
118 | if (Pack.Header.Zerocoded) | ||
119 | { | ||
120 | int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); | ||
121 | this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp); | ||
122 | } | ||
123 | else | ||
124 | { | ||
125 | this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp); | ||
126 | } | ||
127 | } | ||
128 | catch (Exception) | ||
129 | { | ||
130 | OpenSim.Framework.Console.MainLog.Instance.Warn("OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection "); | ||
131 | |||
132 | } | ||
133 | } | ||
134 | |||
135 | private void SendPackTo(byte[] buffer, int size, SocketFlags flags, EndPoint endp) | ||
136 | { | ||
137 | this.Server.SendTo(buffer, size, flags, endp); | ||
138 | } | ||
139 | * | ||
140 | }*/ | ||
141 | } \ No newline at end of file | ||
diff --git a/OpenSim/Framework/Servers/IRestHandler.cs b/OpenSim/Framework/Servers/IRestHandler.cs new file mode 100644 index 0000000..3aa508c --- /dev/null +++ b/OpenSim/Framework/Servers/IRestHandler.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Servers | ||
33 | { | ||
34 | public delegate string RestMethod( string request, string path, string param ); | ||
35 | } | ||
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj new file mode 100644 index 0000000..399f456 --- /dev/null +++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj | |||
@@ -0,0 +1,116 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{2CC71860-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.Servers</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.Servers</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="libsecondlife.dll" > | ||
62 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="System" > | ||
66 | <HintPath>System.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="System.Xml" > | ||
70 | <HintPath>System.Xml.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="XMLRPC.dll" > | ||
74 | <HintPath>..\..\..\bin\XMLRPC.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | </ItemGroup> | ||
78 | <ItemGroup> | ||
79 | <ProjectReference Include="..\General\OpenSim.Framework.csproj"> | ||
80 | <Name>OpenSim.Framework</Name> | ||
81 | <Project>{8ACA2445-0000-0000-0000-000000000000}</Project> | ||
82 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
83 | <Private>False</Private> | ||
84 | </ProjectReference> | ||
85 | <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj"> | ||
86 | <Name>OpenSim.Framework.Console</Name> | ||
87 | <Project>{A7CD0630-0000-0000-0000-000000000000}</Project> | ||
88 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
89 | <Private>False</Private> | ||
90 | </ProjectReference> | ||
91 | </ItemGroup> | ||
92 | <ItemGroup> | ||
93 | <Compile Include="BaseHttpServer.cs"> | ||
94 | <SubType>Code</SubType> | ||
95 | </Compile> | ||
96 | <Compile Include="CheckSumServer.cs"> | ||
97 | <SubType>Code</SubType> | ||
98 | </Compile> | ||
99 | <Compile Include="IRestHandler.cs"> | ||
100 | <SubType>Code</SubType> | ||
101 | </Compile> | ||
102 | <Compile Include="UDPServerBase.cs"> | ||
103 | <SubType>Code</SubType> | ||
104 | </Compile> | ||
105 | <Compile Include="XmlRpcMethod.cs"> | ||
106 | <SubType>Code</SubType> | ||
107 | </Compile> | ||
108 | </ItemGroup> | ||
109 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
110 | <PropertyGroup> | ||
111 | <PreBuildEvent> | ||
112 | </PreBuildEvent> | ||
113 | <PostBuildEvent> | ||
114 | </PostBuildEvent> | ||
115 | </PropertyGroup> | ||
116 | </Project> | ||
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj.user b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/Servers/UDPServerBase.cs b/OpenSim/Framework/Servers/UDPServerBase.cs new file mode 100644 index 0000000..b472c97 --- /dev/null +++ b/OpenSim/Framework/Servers/UDPServerBase.cs | |||
@@ -0,0 +1,95 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Text; | ||
30 | using System.IO; | ||
31 | using System.Threading; | ||
32 | using System.Net; | ||
33 | using System.Net.Sockets; | ||
34 | using System.Timers; | ||
35 | using System.Reflection; | ||
36 | using System.Collections; | ||
37 | using System.Collections.Generic; | ||
38 | using libsecondlife; | ||
39 | using libsecondlife.Packets; | ||
40 | |||
41 | namespace OpenSim.Servers | ||
42 | { | ||
43 | public class UDPServerBase | ||
44 | { | ||
45 | public Socket Server; | ||
46 | protected IPEndPoint ServerIncoming; | ||
47 | protected byte[] RecvBuffer = new byte[4096]; | ||
48 | protected byte[] ZeroBuffer = new byte[8192]; | ||
49 | protected IPEndPoint ipeSender; | ||
50 | protected EndPoint epSender; | ||
51 | protected AsyncCallback ReceivedData; | ||
52 | protected int listenPort; | ||
53 | |||
54 | public UDPServerBase(int port) | ||
55 | { | ||
56 | listenPort = port; | ||
57 | } | ||
58 | |||
59 | protected virtual void OnReceivedData(IAsyncResult result) | ||
60 | { | ||
61 | ipeSender = new IPEndPoint(IPAddress.Any, 0); | ||
62 | epSender = (EndPoint)ipeSender; | ||
63 | Packet packet = null; | ||
64 | int numBytes = Server.EndReceiveFrom(result, ref epSender); | ||
65 | int packetEnd = numBytes - 1; | ||
66 | |||
67 | packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer); | ||
68 | |||
69 | Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | ||
70 | } | ||
71 | |||
72 | protected virtual void AddNewClient(Packet packet) | ||
73 | { | ||
74 | } | ||
75 | |||
76 | public virtual void ServerListener() | ||
77 | { | ||
78 | |||
79 | ServerIncoming = new IPEndPoint(IPAddress.Any, listenPort); | ||
80 | Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); | ||
81 | Server.Bind(ServerIncoming); | ||
82 | |||
83 | ipeSender = new IPEndPoint(IPAddress.Any, 0); | ||
84 | epSender = (EndPoint)ipeSender; | ||
85 | ReceivedData = new AsyncCallback(this.OnReceivedData); | ||
86 | Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | ||
87 | } | ||
88 | |||
89 | public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) | ||
90 | { | ||
91 | |||
92 | } | ||
93 | } | ||
94 | } | ||
95 | |||
diff --git a/OpenSim/Framework/Servers/XmlRpcMethod.cs b/OpenSim/Framework/Servers/XmlRpcMethod.cs new file mode 100644 index 0000000..05cbf2e --- /dev/null +++ b/OpenSim/Framework/Servers/XmlRpcMethod.cs | |||
@@ -0,0 +1,34 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using Nwc.XmlRpc; | ||
30 | |||
31 | namespace OpenSim.Servers | ||
32 | { | ||
33 | public delegate XmlRpcResponse XmlRpcMethod( XmlRpcRequest request ); | ||
34 | } | ||
diff --git a/OpenSim/Framework/UserManager/LoginResponse.cs b/OpenSim/Framework/UserManager/LoginResponse.cs new file mode 100644 index 0000000..5ca223f --- /dev/null +++ b/OpenSim/Framework/UserManager/LoginResponse.cs | |||
@@ -0,0 +1,645 @@ | |||
1 | using System; | ||
2 | using System.Text; | ||
3 | using System.Text.RegularExpressions; | ||
4 | using System.Threading; | ||
5 | using System.Collections; | ||
6 | using System.Xml; | ||
7 | using libsecondlife; | ||
8 | using OpenSim.Framework.Utilities; | ||
9 | using OpenSim.Framework.Interfaces; | ||
10 | using Nwc.XmlRpc; | ||
11 | |||
12 | namespace OpenSim.Framework.UserManagement | ||
13 | { | ||
14 | |||
15 | /// <summary> | ||
16 | /// A temp class to handle login response. | ||
17 | /// Should make use of UserProfileManager where possible. | ||
18 | /// </summary> | ||
19 | |||
20 | public class LoginResponse | ||
21 | { | ||
22 | private Hashtable loginFlagsHash; | ||
23 | private Hashtable globalTexturesHash; | ||
24 | private Hashtable loginError; | ||
25 | private Hashtable eventCategoriesHash; | ||
26 | private Hashtable uiConfigHash; | ||
27 | private Hashtable classifiedCategoriesHash; | ||
28 | |||
29 | private ArrayList loginFlags; | ||
30 | private ArrayList globalTextures; | ||
31 | private ArrayList eventCategories; | ||
32 | private ArrayList uiConfig; | ||
33 | private ArrayList classifiedCategories; | ||
34 | private ArrayList inventoryRoot; | ||
35 | private ArrayList initialOutfit; | ||
36 | private ArrayList agentInventory; | ||
37 | |||
38 | private UserInfo userProfile; | ||
39 | |||
40 | private LLUUID agentID; | ||
41 | private LLUUID sessionID; | ||
42 | private LLUUID secureSessionID; | ||
43 | |||
44 | // Login Flags | ||
45 | private string dst; | ||
46 | private string stipendSinceLogin; | ||
47 | private string gendered; | ||
48 | private string everLoggedIn; | ||
49 | private string login; | ||
50 | private int simPort; | ||
51 | private string simAddress; | ||
52 | private string agentAccess; | ||
53 | private Int32 circuitCode; | ||
54 | private uint regionX; | ||
55 | private uint regionY; | ||
56 | |||
57 | // Login | ||
58 | private string firstname; | ||
59 | private string lastname; | ||
60 | |||
61 | // Global Textures | ||
62 | private string sunTexture; | ||
63 | private string cloudTexture; | ||
64 | private string moonTexture; | ||
65 | |||
66 | // Error Flags | ||
67 | private string errorReason; | ||
68 | private string errorMessage; | ||
69 | |||
70 | // Response | ||
71 | private XmlRpcResponse xmlRpcResponse; | ||
72 | private XmlRpcResponse defaultXmlRpcResponse; | ||
73 | |||
74 | private string welcomeMessage; | ||
75 | private string startLocation; | ||
76 | private string allowFirstLife; | ||
77 | private string home; | ||
78 | private string seedCapability; | ||
79 | private string lookAt; | ||
80 | |||
81 | public LoginResponse() | ||
82 | { | ||
83 | this.loginFlags = new ArrayList(); | ||
84 | this.globalTextures = new ArrayList(); | ||
85 | this.eventCategories = new ArrayList(); | ||
86 | this.uiConfig = new ArrayList(); | ||
87 | this.classifiedCategories = new ArrayList(); | ||
88 | |||
89 | this.loginError = new Hashtable(); | ||
90 | this.eventCategoriesHash = new Hashtable(); | ||
91 | this.classifiedCategoriesHash = new Hashtable(); | ||
92 | this.uiConfigHash = new Hashtable(); | ||
93 | |||
94 | this.defaultXmlRpcResponse = new XmlRpcResponse(); | ||
95 | this.userProfile = new UserInfo(); | ||
96 | this.inventoryRoot = new ArrayList(); | ||
97 | this.initialOutfit = new ArrayList(); | ||
98 | this.agentInventory = new ArrayList(); | ||
99 | |||
100 | this.xmlRpcResponse = new XmlRpcResponse(); | ||
101 | this.defaultXmlRpcResponse = new XmlRpcResponse(); | ||
102 | |||
103 | this.SetDefaultValues(); | ||
104 | } // LoginServer | ||
105 | |||
106 | public void SetDefaultValues() | ||
107 | { | ||
108 | this.DST = "N"; | ||
109 | this.StipendSinceLogin = "N"; | ||
110 | this.Gendered = "Y"; | ||
111 | this.EverLoggedIn = "Y"; | ||
112 | this.login = "false"; | ||
113 | this.firstname = "Test"; | ||
114 | this.lastname = "User"; | ||
115 | this.agentAccess = "M"; | ||
116 | this.startLocation = "last"; | ||
117 | this.allowFirstLife = "Y"; | ||
118 | |||
119 | this.SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271"; | ||
120 | this.CloudTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | ||
121 | this.MoonTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | ||
122 | |||
123 | this.ErrorMessage = "You have entered an invalid name/password combination. Check Caps/lock."; | ||
124 | this.ErrorReason = "key"; | ||
125 | this.welcomeMessage = "Welcome to OpenSim!"; | ||
126 | this.seedCapability = ""; | ||
127 | this.home = "{'region_handle':[r" + (997 * 256).ToString() + ",r" + (996 * 256).ToString() + "], 'position':[r" + this.userProfile.homepos.X.ToString() + ",r" + this.userProfile.homepos.Y.ToString() + ",r" + this.userProfile.homepos.Z.ToString() + "], 'look_at':[r" + this.userProfile.homelookat.X.ToString() + ",r" + this.userProfile.homelookat.Y.ToString() + ",r" + this.userProfile.homelookat.Z.ToString() + "]}"; | ||
128 | this.lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]"; | ||
129 | this.RegionX = (uint)255232; | ||
130 | this.RegionY = (uint)254976; | ||
131 | |||
132 | // Classifieds; | ||
133 | this.AddClassifiedCategory((Int32)1, "Shopping"); | ||
134 | this.AddClassifiedCategory((Int32)2, "Land Rental"); | ||
135 | this.AddClassifiedCategory((Int32)3, "Property Rental"); | ||
136 | this.AddClassifiedCategory((Int32)4, "Special Attraction"); | ||
137 | this.AddClassifiedCategory((Int32)5, "New Products"); | ||
138 | this.AddClassifiedCategory((Int32)6, "Employment"); | ||
139 | this.AddClassifiedCategory((Int32)7, "Wanted"); | ||
140 | this.AddClassifiedCategory((Int32)8, "Service"); | ||
141 | this.AddClassifiedCategory((Int32)9, "Personal"); | ||
142 | |||
143 | |||
144 | this.SessionID = LLUUID.Random(); | ||
145 | this.SecureSessionID = LLUUID.Random(); | ||
146 | this.AgentID = LLUUID.Random(); | ||
147 | |||
148 | Hashtable InitialOutfitHash = new Hashtable(); | ||
149 | InitialOutfitHash["folder_name"] = "Nightclub Female"; | ||
150 | InitialOutfitHash["gender"] = "female"; | ||
151 | this.initialOutfit.Add(InitialOutfitHash); | ||
152 | |||
153 | |||
154 | } // SetDefaultValues | ||
155 | |||
156 | #region Login Failure Methods | ||
157 | public XmlRpcResponse GenerateFailureResponse(string reason, string message, string login) | ||
158 | { | ||
159 | // Overwrite any default values; | ||
160 | this.xmlRpcResponse = new XmlRpcResponse(); | ||
161 | |||
162 | // Ensure Login Failed message/reason; | ||
163 | this.ErrorMessage = message; | ||
164 | this.ErrorReason = reason; | ||
165 | |||
166 | this.loginError["reason"] = this.ErrorReason; | ||
167 | this.loginError["message"] = this.ErrorMessage; | ||
168 | this.loginError["login"] = login; | ||
169 | this.xmlRpcResponse.Value = this.loginError; | ||
170 | return (this.xmlRpcResponse); | ||
171 | } // GenerateResponse | ||
172 | |||
173 | public XmlRpcResponse CreateFailedResponse() | ||
174 | { | ||
175 | return (this.CreateLoginFailedResponse()); | ||
176 | } // CreateErrorConnectingToGridResponse() | ||
177 | |||
178 | public XmlRpcResponse CreateLoginFailedResponse() | ||
179 | { | ||
180 | return (this.GenerateFailureResponse("key", "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", "false")); | ||
181 | } // LoginFailedResponse | ||
182 | |||
183 | public XmlRpcResponse CreateAlreadyLoggedInResponse() | ||
184 | { | ||
185 | return (this.GenerateFailureResponse("presence", "You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner", "false")); | ||
186 | } // CreateAlreadyLoggedInResponse() | ||
187 | |||
188 | public XmlRpcResponse CreateDeadRegionResponse() | ||
189 | { | ||
190 | return (this.GenerateFailureResponse("key", "The region you are attempting to log into is not responding. Please select another region and try again.", "false")); | ||
191 | } | ||
192 | |||
193 | public XmlRpcResponse CreateGridErrorResponse() | ||
194 | { | ||
195 | return (this.GenerateFailureResponse("key", "Error connecting to grid. Could not percieve credentials from login XML.", "false")); | ||
196 | } | ||
197 | |||
198 | #endregion | ||
199 | |||
200 | public XmlRpcResponse ToXmlRpcResponse() | ||
201 | { | ||
202 | try | ||
203 | { | ||
204 | |||
205 | Hashtable responseData = new Hashtable(); | ||
206 | |||
207 | this.loginFlagsHash = new Hashtable(); | ||
208 | this.loginFlagsHash["daylight_savings"] = this.DST; | ||
209 | this.loginFlagsHash["stipend_since_login"] = this.StipendSinceLogin; | ||
210 | this.loginFlagsHash["gendered"] = this.Gendered; | ||
211 | this.loginFlagsHash["ever_logged_in"] = this.EverLoggedIn; | ||
212 | this.loginFlags.Add(this.loginFlagsHash); | ||
213 | |||
214 | responseData["first_name"] = this.Firstname; | ||
215 | responseData["last_name"] = this.Lastname; | ||
216 | responseData["agent_access"] = this.agentAccess; | ||
217 | |||
218 | this.globalTexturesHash = new Hashtable(); | ||
219 | this.globalTexturesHash["sun_texture_id"] = this.SunTexture; | ||
220 | this.globalTexturesHash["cloud_texture_id"] = this.CloudTexture; | ||
221 | this.globalTexturesHash["moon_texture_id"] = this.MoonTexture; | ||
222 | this.globalTextures.Add(this.globalTexturesHash); | ||
223 | this.eventCategories.Add(this.eventCategoriesHash); | ||
224 | |||
225 | this.AddToUIConfig("allow_first_life", this.allowFirstLife); | ||
226 | this.uiConfig.Add(this.uiConfigHash); | ||
227 | |||
228 | responseData["sim_port"] =(Int32) this.SimPort; | ||
229 | responseData["sim_ip"] = this.SimAddress; | ||
230 | responseData["agent_id"] = this.AgentID.ToStringHyphenated(); | ||
231 | responseData["session_id"] = this.SessionID.ToStringHyphenated(); | ||
232 | responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated(); | ||
233 | responseData["circuit_code"] = this.CircuitCode; | ||
234 | responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||
235 | responseData["login-flags"] = this.loginFlags; | ||
236 | responseData["global-textures"] = this.globalTextures; | ||
237 | responseData["seed_capability"] = this.seedCapability; | ||
238 | |||
239 | responseData["event_categories"] = this.eventCategories; | ||
240 | responseData["event_notifications"] = new ArrayList(); // todo | ||
241 | responseData["classified_categories"] = this.classifiedCategories; | ||
242 | responseData["ui-config"] = this.uiConfig; | ||
243 | |||
244 | responseData["inventory-skeleton"] = this.agentInventory; | ||
245 | responseData["inventory-skel-lib"] = new ArrayList(); // todo | ||
246 | responseData["inventory-root"] = this.inventoryRoot; | ||
247 | responseData["gestures"] = new ArrayList(); // todo | ||
248 | responseData["inventory-lib-owner"] = new ArrayList(); // todo | ||
249 | responseData["initial-outfit"] = this.initialOutfit; | ||
250 | responseData["start_location"] = this.startLocation; | ||
251 | responseData["seed_capability"] = this.seedCapability; | ||
252 | responseData["home"] = this.home; | ||
253 | responseData["look_at"] = this.lookAt; | ||
254 | responseData["message"] = this.welcomeMessage; | ||
255 | responseData["region_x"] = (Int32)this.RegionX * 256; | ||
256 | responseData["region_y"] = (Int32)this.RegionY * 256; | ||
257 | |||
258 | //responseData["inventory-lib-root"] = new ArrayList(); // todo | ||
259 | //responseData["buddy-list"] = new ArrayList(); // todo | ||
260 | |||
261 | responseData["login"] = "true"; | ||
262 | this.xmlRpcResponse.Value = responseData; | ||
263 | |||
264 | return (this.xmlRpcResponse); | ||
265 | } | ||
266 | catch (Exception e) | ||
267 | { | ||
268 | OpenSim.Framework.Console.MainLog.Instance.WriteLine( | ||
269 | OpenSim.Framework.Console.LogPriority.LOW, | ||
270 | "LoginResponse: Error creating XML-RPC Response: " + e.Message | ||
271 | ); | ||
272 | return (this.GenerateFailureResponse("Internal Error", "Error generating Login Response", "false")); | ||
273 | |||
274 | } | ||
275 | |||
276 | } // ToXmlRpcResponse | ||
277 | |||
278 | public void SetEventCategories(string category, string value) | ||
279 | { | ||
280 | this.eventCategoriesHash[category] = value; | ||
281 | } // SetEventCategories | ||
282 | |||
283 | public void AddToUIConfig(string itemName, string item) | ||
284 | { | ||
285 | this.uiConfigHash[itemName] = item; | ||
286 | } // SetUIConfig | ||
287 | |||
288 | public void AddClassifiedCategory(Int32 ID, string categoryName) | ||
289 | { | ||
290 | this.classifiedCategoriesHash["category_name"] = categoryName; | ||
291 | this.classifiedCategoriesHash["category_id"] = ID; | ||
292 | this.classifiedCategories.Add(this.classifiedCategoriesHash); | ||
293 | // this.classifiedCategoriesHash.Clear(); | ||
294 | } // SetClassifiedCategory | ||
295 | |||
296 | #region Properties | ||
297 | public string Login | ||
298 | { | ||
299 | get | ||
300 | { | ||
301 | return this.login; | ||
302 | } | ||
303 | set | ||
304 | { | ||
305 | this.login = value; | ||
306 | } | ||
307 | } // Login | ||
308 | |||
309 | public string DST | ||
310 | { | ||
311 | get | ||
312 | { | ||
313 | return this.dst; | ||
314 | } | ||
315 | set | ||
316 | { | ||
317 | this.dst = value; | ||
318 | } | ||
319 | } // DST | ||
320 | |||
321 | public string StipendSinceLogin | ||
322 | { | ||
323 | get | ||
324 | { | ||
325 | return this.stipendSinceLogin; | ||
326 | } | ||
327 | set | ||
328 | { | ||
329 | this.stipendSinceLogin = value; | ||
330 | } | ||
331 | } // StipendSinceLogin | ||
332 | |||
333 | public string Gendered | ||
334 | { | ||
335 | get | ||
336 | { | ||
337 | return this.gendered; | ||
338 | } | ||
339 | set | ||
340 | { | ||
341 | this.gendered = value; | ||
342 | } | ||
343 | } // Gendered | ||
344 | |||
345 | public string EverLoggedIn | ||
346 | { | ||
347 | get | ||
348 | { | ||
349 | return this.everLoggedIn; | ||
350 | } | ||
351 | set | ||
352 | { | ||
353 | this.everLoggedIn = value; | ||
354 | } | ||
355 | } // EverLoggedIn | ||
356 | |||
357 | public int SimPort | ||
358 | { | ||
359 | get | ||
360 | { | ||
361 | return this.simPort; | ||
362 | } | ||
363 | set | ||
364 | { | ||
365 | this.simPort = value; | ||
366 | } | ||
367 | } // SimPort | ||
368 | |||
369 | public string SimAddress | ||
370 | { | ||
371 | get | ||
372 | { | ||
373 | return this.simAddress; | ||
374 | } | ||
375 | set | ||
376 | { | ||
377 | this.simAddress = value; | ||
378 | } | ||
379 | } // SimAddress | ||
380 | |||
381 | public LLUUID AgentID | ||
382 | { | ||
383 | get | ||
384 | { | ||
385 | return this.agentID; | ||
386 | } | ||
387 | set | ||
388 | { | ||
389 | this.agentID = value; | ||
390 | } | ||
391 | } // AgentID | ||
392 | |||
393 | public LLUUID SessionID | ||
394 | { | ||
395 | get | ||
396 | { | ||
397 | return this.sessionID; | ||
398 | } | ||
399 | set | ||
400 | { | ||
401 | this.sessionID = value; | ||
402 | } | ||
403 | } // SessionID | ||
404 | |||
405 | public LLUUID SecureSessionID | ||
406 | { | ||
407 | get | ||
408 | { | ||
409 | return this.secureSessionID; | ||
410 | } | ||
411 | set | ||
412 | { | ||
413 | this.secureSessionID = value; | ||
414 | } | ||
415 | } // SecureSessionID | ||
416 | |||
417 | public Int32 CircuitCode | ||
418 | { | ||
419 | get | ||
420 | { | ||
421 | return this.circuitCode; | ||
422 | } | ||
423 | set | ||
424 | { | ||
425 | this.circuitCode = value; | ||
426 | } | ||
427 | } // CircuitCode | ||
428 | |||
429 | public uint RegionX | ||
430 | { | ||
431 | get | ||
432 | { | ||
433 | return this.regionX; | ||
434 | } | ||
435 | set | ||
436 | { | ||
437 | this.regionX = value; | ||
438 | } | ||
439 | } // RegionX | ||
440 | |||
441 | public uint RegionY | ||
442 | { | ||
443 | get | ||
444 | { | ||
445 | return this.regionY; | ||
446 | } | ||
447 | set | ||
448 | { | ||
449 | this.regionY = value; | ||
450 | } | ||
451 | } // RegionY | ||
452 | |||
453 | public string SunTexture | ||
454 | { | ||
455 | get | ||
456 | { | ||
457 | return this.sunTexture; | ||
458 | } | ||
459 | set | ||
460 | { | ||
461 | this.sunTexture = value; | ||
462 | } | ||
463 | } // SunTexture | ||
464 | |||
465 | public string CloudTexture | ||
466 | { | ||
467 | get | ||
468 | { | ||
469 | return this.cloudTexture; | ||
470 | } | ||
471 | set | ||
472 | { | ||
473 | this.cloudTexture = value; | ||
474 | } | ||
475 | } // CloudTexture | ||
476 | |||
477 | public string MoonTexture | ||
478 | { | ||
479 | get | ||
480 | { | ||
481 | return this.moonTexture; | ||
482 | } | ||
483 | set | ||
484 | { | ||
485 | this.moonTexture = value; | ||
486 | } | ||
487 | } // MoonTexture | ||
488 | |||
489 | public string Firstname | ||
490 | { | ||
491 | get | ||
492 | { | ||
493 | return this.firstname; | ||
494 | } | ||
495 | set | ||
496 | { | ||
497 | this.firstname = value; | ||
498 | } | ||
499 | } // Firstname | ||
500 | |||
501 | public string Lastname | ||
502 | { | ||
503 | get | ||
504 | { | ||
505 | return this.lastname; | ||
506 | } | ||
507 | set | ||
508 | { | ||
509 | this.lastname = value; | ||
510 | } | ||
511 | } // Lastname | ||
512 | |||
513 | public string AgentAccess | ||
514 | { | ||
515 | get | ||
516 | { | ||
517 | return this.agentAccess; | ||
518 | } | ||
519 | set | ||
520 | { | ||
521 | this.agentAccess = value; | ||
522 | } | ||
523 | } | ||
524 | |||
525 | public string StartLocation | ||
526 | { | ||
527 | get | ||
528 | { | ||
529 | return this.startLocation; | ||
530 | } | ||
531 | set | ||
532 | { | ||
533 | this.startLocation = value; | ||
534 | } | ||
535 | } // StartLocation | ||
536 | |||
537 | public string LookAt | ||
538 | { | ||
539 | get | ||
540 | { | ||
541 | return this.lookAt; | ||
542 | } | ||
543 | set | ||
544 | { | ||
545 | this.lookAt = value; | ||
546 | } | ||
547 | } | ||
548 | |||
549 | public string SeedCapability | ||
550 | { | ||
551 | get | ||
552 | { | ||
553 | return this.seedCapability; | ||
554 | } | ||
555 | set | ||
556 | { | ||
557 | this.seedCapability = value; | ||
558 | } | ||
559 | } // SeedCapability | ||
560 | |||
561 | public string ErrorReason | ||
562 | { | ||
563 | get | ||
564 | { | ||
565 | return this.errorReason; | ||
566 | } | ||
567 | set | ||
568 | { | ||
569 | this.errorReason = value; | ||
570 | } | ||
571 | } // ErrorReason | ||
572 | |||
573 | public string ErrorMessage | ||
574 | { | ||
575 | get | ||
576 | { | ||
577 | return this.errorMessage; | ||
578 | } | ||
579 | set | ||
580 | { | ||
581 | this.errorMessage = value; | ||
582 | } | ||
583 | } // ErrorMessage | ||
584 | |||
585 | public ArrayList InventoryRoot | ||
586 | { | ||
587 | get | ||
588 | { | ||
589 | return this.inventoryRoot; | ||
590 | } | ||
591 | set | ||
592 | { | ||
593 | this.inventoryRoot = value; | ||
594 | } | ||
595 | } | ||
596 | |||
597 | public ArrayList InventorySkeleton | ||
598 | { | ||
599 | get | ||
600 | { | ||
601 | return this.agentInventory; | ||
602 | } | ||
603 | set | ||
604 | { | ||
605 | this.agentInventory = value; | ||
606 | } | ||
607 | } | ||
608 | |||
609 | public string Home | ||
610 | { | ||
611 | get | ||
612 | { | ||
613 | return this.home; | ||
614 | } | ||
615 | set | ||
616 | { | ||
617 | this.home = value; | ||
618 | } | ||
619 | } | ||
620 | |||
621 | public string Message | ||
622 | { | ||
623 | get | ||
624 | { | ||
625 | return this.welcomeMessage; | ||
626 | } | ||
627 | set | ||
628 | { | ||
629 | this.welcomeMessage = value; | ||
630 | } | ||
631 | } | ||
632 | #endregion | ||
633 | |||
634 | |||
635 | public class UserInfo | ||
636 | { | ||
637 | public string firstname; | ||
638 | public string lastname; | ||
639 | public ulong homeregionhandle; | ||
640 | public LLVector3 homepos; | ||
641 | public LLVector3 homelookat; | ||
642 | } | ||
643 | } | ||
644 | } | ||
645 | |||
diff --git a/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj new file mode 100644 index 0000000..02aa3f3 --- /dev/null +++ b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj | |||
@@ -0,0 +1,125 @@ | |||
1 | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <ProjectType>Local</ProjectType> | ||
4 | <ProductVersion>8.0.50727</ProductVersion> | ||
5 | <SchemaVersion>2.0</SchemaVersion> | ||
6 | <ProjectGuid>{586E2916-0000-0000-0000-000000000000}</ProjectGuid> | ||
7 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
8 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
9 | <ApplicationIcon></ApplicationIcon> | ||
10 | <AssemblyKeyContainerName> | ||
11 | </AssemblyKeyContainerName> | ||
12 | <AssemblyName>OpenSim.Framework.UserManagement</AssemblyName> | ||
13 | <DefaultClientScript>JScript</DefaultClientScript> | ||
14 | <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> | ||
15 | <DefaultTargetSchema>IE50</DefaultTargetSchema> | ||
16 | <DelaySign>false</DelaySign> | ||
17 | <OutputType>Library</OutputType> | ||
18 | <AppDesignerFolder></AppDesignerFolder> | ||
19 | <RootNamespace>OpenSim.Framework.UserManagement</RootNamespace> | ||
20 | <StartupObject></StartupObject> | ||
21 | <FileUpgradeFlags> | ||
22 | </FileUpgradeFlags> | ||
23 | </PropertyGroup> | ||
24 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
25 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
26 | <BaseAddress>285212672</BaseAddress> | ||
27 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
28 | <ConfigurationOverrideFile> | ||
29 | </ConfigurationOverrideFile> | ||
30 | <DefineConstants>TRACE;DEBUG</DefineConstants> | ||
31 | <DocumentationFile></DocumentationFile> | ||
32 | <DebugSymbols>True</DebugSymbols> | ||
33 | <FileAlignment>4096</FileAlignment> | ||
34 | <Optimize>False</Optimize> | ||
35 | <OutputPath>..\..\..\bin\</OutputPath> | ||
36 | <RegisterForComInterop>False</RegisterForComInterop> | ||
37 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
38 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
39 | <WarningLevel>4</WarningLevel> | ||
40 | <NoWarn></NoWarn> | ||
41 | </PropertyGroup> | ||
42 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
43 | <AllowUnsafeBlocks>False</AllowUnsafeBlocks> | ||
44 | <BaseAddress>285212672</BaseAddress> | ||
45 | <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> | ||
46 | <ConfigurationOverrideFile> | ||
47 | </ConfigurationOverrideFile> | ||
48 | <DefineConstants>TRACE</DefineConstants> | ||
49 | <DocumentationFile></DocumentationFile> | ||
50 | <DebugSymbols>False</DebugSymbols> | ||
51 | <FileAlignment>4096</FileAlignment> | ||
52 | <Optimize>True</Optimize> | ||
53 | <OutputPath>..\..\..\bin\</OutputPath> | ||
54 | <RegisterForComInterop>False</RegisterForComInterop> | ||
55 | <RemoveIntegerChecks>False</RemoveIntegerChecks> | ||
56 | <TreatWarningsAsErrors>False</TreatWarningsAsErrors> | ||
57 | <WarningLevel>4</WarningLevel> | ||
58 | <NoWarn></NoWarn> | ||
59 | </PropertyGroup> | ||
60 | <ItemGroup> | ||
61 | <Reference Include="Db4objects.Db4o.dll" > | ||
62 | <HintPath>..\..\..\bin\Db4objects.Db4o.dll</HintPath> | ||
63 | <Private>False</Private> | ||
64 | </Reference> | ||
65 | <Reference Include="libsecondlife.dll" > | ||
66 | <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> | ||
67 | <Private>False</Private> | ||
68 | </Reference> | ||
69 | <Reference Include="OpenSim.Framework" > | ||
70 | <HintPath>OpenSim.Framework.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
73 | <Reference Include="OpenSim.Framework.Console" > | ||
74 | <HintPath>OpenSim.Framework.Console.dll</HintPath> | ||
75 | <Private>False</Private> | ||
76 | </Reference> | ||
77 | <Reference Include="OpenSim.Framework.GenericConfig.Xml" > | ||
78 | <HintPath>OpenSim.Framework.GenericConfig.Xml.dll</HintPath> | ||
79 | <Private>False</Private> | ||
80 | </Reference> | ||
81 | <Reference Include="OpenSim.Framework.Servers" > | ||
82 | <HintPath>OpenSim.Framework.Servers.dll</HintPath> | ||
83 | <Private>False</Private> | ||
84 | </Reference> | ||
85 | <Reference Include="System" > | ||
86 | <HintPath>System.dll</HintPath> | ||
87 | <Private>False</Private> | ||
88 | </Reference> | ||
89 | <Reference Include="System.Data" > | ||
90 | <HintPath>System.Data.dll</HintPath> | ||
91 | <Private>False</Private> | ||
92 | </Reference> | ||
93 | <Reference Include="System.Xml" > | ||
94 | <HintPath>System.Xml.dll</HintPath> | ||
95 | <Private>False</Private> | ||
96 | </Reference> | ||
97 | <Reference Include="XMLRPC.dll" > | ||
98 | <HintPath>..\..\..\bin\XMLRPC.dll</HintPath> | ||
99 | <Private>False</Private> | ||
100 | </Reference> | ||
101 | </ItemGroup> | ||
102 | <ItemGroup> | ||
103 | <ProjectReference Include="..\Data\OpenSim.Framework.Data.csproj"> | ||
104 | <Name>OpenSim.Framework.Data</Name> | ||
105 | <Project>{36B72A9B-0000-0000-0000-000000000000}</Project> | ||
106 | <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> | ||
107 | <Private>False</Private> | ||
108 | </ProjectReference> | ||
109 | </ItemGroup> | ||
110 | <ItemGroup> | ||
111 | <Compile Include="LoginResponse.cs"> | ||
112 | <SubType>Code</SubType> | ||
113 | </Compile> | ||
114 | <Compile Include="UserManagerBase.cs"> | ||
115 | <SubType>Code</SubType> | ||
116 | </Compile> | ||
117 | </ItemGroup> | ||
118 | <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||
119 | <PropertyGroup> | ||
120 | <PreBuildEvent> | ||
121 | </PreBuildEvent> | ||
122 | <PostBuildEvent> | ||
123 | </PostBuildEvent> | ||
124 | </PropertyGroup> | ||
125 | </Project> | ||
diff --git a/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj.user b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj.user new file mode 100644 index 0000000..6841907 --- /dev/null +++ b/OpenSim/Framework/UserManager/OpenSim.Framework.UserManagement.csproj.user | |||
@@ -0,0 +1,12 @@ | |||
1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
2 | <PropertyGroup> | ||
3 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
4 | <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
5 | <ReferencePath>C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\</ReferencePath> | ||
6 | <LastOpenVersion>8.0.50727</LastOpenVersion> | ||
7 | <ProjectView>ProjectFiles</ProjectView> | ||
8 | <ProjectTrust>0</ProjectTrust> | ||
9 | </PropertyGroup> | ||
10 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> | ||
11 | <PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> | ||
12 | </Project> | ||
diff --git a/OpenSim/Framework/UserManager/UserManagerBase.cs b/OpenSim/Framework/UserManager/UserManagerBase.cs new file mode 100644 index 0000000..eb46c14 --- /dev/null +++ b/OpenSim/Framework/UserManager/UserManagerBase.cs | |||
@@ -0,0 +1,641 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | using System; | ||
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Framework.Data; | ||
33 | using libsecondlife; | ||
34 | using System.Reflection; | ||
35 | |||
36 | using System.Xml; | ||
37 | using Nwc.XmlRpc; | ||
38 | using OpenSim.Framework.Sims; | ||
39 | using OpenSim.Framework.Inventory; | ||
40 | using OpenSim.Framework.Utilities; | ||
41 | |||
42 | using System.Security.Cryptography; | ||
43 | |||
44 | namespace OpenSim.Framework.UserManagement | ||
45 | { | ||
46 | public class UserManagerBase | ||
47 | { | ||
48 | public OpenSim.Framework.Interfaces.UserConfig _config; | ||
49 | Dictionary<string, IUserData> _plugins = new Dictionary<string, IUserData>(); | ||
50 | |||
51 | /// <summary> | ||
52 | /// Adds a new user server plugin - user servers will be requested in the order they were loaded. | ||
53 | /// </summary> | ||
54 | /// <param name="FileName">The filename to the user server plugin DLL</param> | ||
55 | public void AddPlugin(string FileName) | ||
56 | { | ||
57 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Userstorage: Attempting to load " + FileName); | ||
58 | Assembly pluginAssembly = Assembly.LoadFrom(FileName); | ||
59 | |||
60 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces."); | ||
61 | foreach (Type pluginType in pluginAssembly.GetTypes()) | ||
62 | { | ||
63 | if (!pluginType.IsAbstract) | ||
64 | { | ||
65 | Type typeInterface = pluginType.GetInterface("IUserData", true); | ||
66 | |||
67 | if (typeInterface != null) | ||
68 | { | ||
69 | IUserData plug = (IUserData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||
70 | plug.Initialise(); | ||
71 | this._plugins.Add(plug.getName(), plug); | ||
72 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface"); | ||
73 | } | ||
74 | |||
75 | typeInterface = null; | ||
76 | } | ||
77 | } | ||
78 | |||
79 | pluginAssembly = null; | ||
80 | } | ||
81 | |||
82 | #region Get UserProfile | ||
83 | /// <summary> | ||
84 | /// Loads a user profile from a database by UUID | ||
85 | /// </summary> | ||
86 | /// <param name="uuid">The target UUID</param> | ||
87 | /// <returns>A user profile</returns> | ||
88 | public UserProfileData getUserProfile(LLUUID uuid) | ||
89 | { | ||
90 | foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||
91 | { | ||
92 | try | ||
93 | { | ||
94 | UserProfileData profile = plugin.Value.getUserByUUID(uuid); | ||
95 | profile.currentAgent = getUserAgent(profile.UUID); | ||
96 | return profile; | ||
97 | } | ||
98 | catch (Exception e) | ||
99 | { | ||
100 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||
101 | } | ||
102 | } | ||
103 | |||
104 | return null; | ||
105 | } | ||
106 | |||
107 | |||
108 | /// <summary> | ||
109 | /// Loads a user profile by name | ||
110 | /// </summary> | ||
111 | /// <param name="name">The target name</param> | ||
112 | /// <returns>A user profile</returns> | ||
113 | public UserProfileData getUserProfile(string name) | ||
114 | { | ||
115 | foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||
116 | { | ||
117 | try | ||
118 | { | ||
119 | UserProfileData profile = plugin.Value.getUserByName(name); | ||
120 | profile.currentAgent = getUserAgent(profile.UUID); | ||
121 | return profile; | ||
122 | } | ||
123 | catch (Exception e) | ||
124 | { | ||
125 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||
126 | } | ||
127 | } | ||
128 | |||
129 | return null; | ||
130 | } | ||
131 | |||
132 | /// <summary> | ||
133 | /// Loads a user profile by name | ||
134 | /// </summary> | ||
135 | /// <param name="fname">First name</param> | ||
136 | /// <param name="lname">Last name</param> | ||
137 | /// <returns>A user profile</returns> | ||
138 | public UserProfileData getUserProfile(string fname, string lname) | ||
139 | { | ||
140 | foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||
141 | { | ||
142 | try | ||
143 | { | ||
144 | UserProfileData profile = plugin.Value.getUserByName(fname,lname); | ||
145 | try | ||
146 | { | ||
147 | profile.currentAgent = getUserAgent(profile.UUID); | ||
148 | } | ||
149 | catch (Exception e) | ||
150 | { | ||
151 | // Ignore | ||
152 | } | ||
153 | return profile; | ||
154 | } | ||
155 | catch (Exception e) | ||
156 | { | ||
157 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||
158 | } | ||
159 | } | ||
160 | |||
161 | return null; | ||
162 | } | ||
163 | #endregion | ||
164 | |||
165 | #region Get UserAgent | ||
166 | /// <summary> | ||
167 | /// Loads a user agent by uuid (not called directly) | ||
168 | /// </summary> | ||
169 | /// <param name="uuid">The agents UUID</param> | ||
170 | /// <returns>Agent profiles</returns> | ||
171 | public UserAgentData getUserAgent(LLUUID uuid) | ||
172 | { | ||
173 | foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||
174 | { | ||
175 | try | ||
176 | { | ||
177 | return plugin.Value.getAgentByUUID(uuid); | ||
178 | } | ||
179 | catch (Exception e) | ||
180 | { | ||
181 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||
182 | } | ||
183 | } | ||
184 | |||
185 | return null; | ||
186 | } | ||
187 | |||
188 | /// <summary> | ||
189 | /// Loads a user agent by name (not called directly) | ||
190 | /// </summary> | ||
191 | /// <param name="name">The agents name</param> | ||
192 | /// <returns>A user agent</returns> | ||
193 | public UserAgentData getUserAgent(string name) | ||
194 | { | ||
195 | foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||
196 | { | ||
197 | try | ||
198 | { | ||
199 | return plugin.Value.getAgentByName(name); | ||
200 | } | ||
201 | catch (Exception e) | ||
202 | { | ||
203 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||
204 | } | ||
205 | } | ||
206 | |||
207 | return null; | ||
208 | } | ||
209 | |||
210 | /// <summary> | ||
211 | /// Loads a user agent by name (not called directly) | ||
212 | /// </summary> | ||
213 | /// <param name="fname">The agents firstname</param> | ||
214 | /// <param name="lname">The agents lastname</param> | ||
215 | /// <returns>A user agent</returns> | ||
216 | public UserAgentData getUserAgent(string fname, string lname) | ||
217 | { | ||
218 | foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||
219 | { | ||
220 | try | ||
221 | { | ||
222 | return plugin.Value.getAgentByName(fname,lname); | ||
223 | } | ||
224 | catch (Exception e) | ||
225 | { | ||
226 | OpenSim.Framework.Console.MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")"); | ||
227 | } | ||
228 | } | ||
229 | |||
230 | return null; | ||
231 | } | ||
232 | |||
233 | #endregion | ||
234 | |||
235 | #region CreateAgent | ||
236 | /// <summary> | ||
237 | /// Creates and initialises a new user agent - make sure to use CommitAgent when done to submit to the DB | ||
238 | /// </summary> | ||
239 | /// <param name="profile">The users profile</param> | ||
240 | /// <param name="request">The users loginrequest</param> | ||
241 | public void CreateAgent(ref UserProfileData profile, XmlRpcRequest request) | ||
242 | { | ||
243 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
244 | |||
245 | UserAgentData agent = new UserAgentData(); | ||
246 | |||
247 | // User connection | ||
248 | agent.agentIP = ""; | ||
249 | agent.agentOnline = true; | ||
250 | agent.agentPort = 0; | ||
251 | |||
252 | // Generate sessions | ||
253 | RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider(); | ||
254 | byte[] randDataS = new byte[16]; | ||
255 | byte[] randDataSS = new byte[16]; | ||
256 | rand.GetBytes(randDataS); | ||
257 | rand.GetBytes(randDataSS); | ||
258 | |||
259 | agent.secureSessionID = new LLUUID(randDataSS, 0); | ||
260 | agent.sessionID = new LLUUID(randDataS, 0); | ||
261 | |||
262 | // Profile UUID | ||
263 | agent.UUID = profile.UUID; | ||
264 | |||
265 | // Current position (from Home) | ||
266 | agent.currentHandle = profile.homeRegion; | ||
267 | agent.currentPos = profile.homeLocation; | ||
268 | |||
269 | // If user specified additional start, use that | ||
270 | if (requestData.ContainsKey("start")) | ||
271 | { | ||
272 | string startLoc = ((string)requestData["start"]).Trim(); | ||
273 | if (!(startLoc == "last" || startLoc == "home")) | ||
274 | { | ||
275 | // Format: uri:Ahern&162&213&34 | ||
276 | try | ||
277 | { | ||
278 | string[] parts = startLoc.Remove(0, 4).Split('&'); | ||
279 | string region = parts[0]; | ||
280 | |||
281 | //////////////////////////////////////////////////// | ||
282 | //SimProfile SimInfo = new SimProfile(); | ||
283 | //SimInfo = SimInfo.LoadFromGrid(theUser.currentAgent.currentHandle, _config.GridServerURL, _config.GridSendKey, _config.GridRecvKey); | ||
284 | } | ||
285 | catch (Exception e) | ||
286 | { | ||
287 | |||
288 | } | ||
289 | } | ||
290 | } | ||
291 | |||
292 | // What time did the user login? | ||
293 | agent.loginTime = Util.UnixTimeSinceEpoch(); | ||
294 | agent.logoutTime = 0; | ||
295 | |||
296 | // Current location | ||
297 | agent.regionID = new LLUUID(); // Fill in later | ||
298 | agent.currentRegion = new LLUUID(); // Fill in later | ||
299 | |||
300 | profile.currentAgent = agent; | ||
301 | } | ||
302 | |||
303 | /// <summary> | ||
304 | /// Saves a target agent to the database | ||
305 | /// </summary> | ||
306 | /// <param name="profile">The users profile</param> | ||
307 | /// <returns>Successful?</returns> | ||
308 | public bool CommitAgent(ref UserProfileData profile) | ||
309 | { | ||
310 | // Saves the agent to database | ||
311 | return true; | ||
312 | } | ||
313 | |||
314 | #endregion | ||
315 | |||
316 | /// <summary> | ||
317 | /// Checks a user against it's password hash | ||
318 | /// </summary> | ||
319 | /// <param name="profile">The users profile</param> | ||
320 | /// <param name="password">The supplied password</param> | ||
321 | /// <returns>Authenticated?</returns> | ||
322 | public virtual bool AuthenticateUser(ref UserProfileData profile, string password) | ||
323 | { | ||
324 | OpenSim.Framework.Console.MainLog.Instance.Verbose( | ||
325 | "Authenticating " + profile.username + " " + profile.surname); | ||
326 | |||
327 | password = password.Remove(0, 3); //remove $1$ | ||
328 | |||
329 | string s = Util.Md5Hash(password + ":" + profile.passwordSalt); | ||
330 | |||
331 | return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase); | ||
332 | } | ||
333 | |||
334 | #region Xml Response | ||
335 | |||
336 | /// <summary> | ||
337 | /// | ||
338 | /// </summary> | ||
339 | /// <param name="firstname"></param> | ||
340 | /// <param name="lastname"></param> | ||
341 | /// <returns></returns> | ||
342 | public virtual UserProfileData GetTheUser(string firstname, string lastname) | ||
343 | { | ||
344 | return getUserProfile(firstname, lastname); | ||
345 | } | ||
346 | |||
347 | /// <summary> | ||
348 | /// | ||
349 | /// </summary> | ||
350 | /// <returns></returns> | ||
351 | public virtual string GetMessage() | ||
352 | { | ||
353 | return _config.DefaultStartupMsg; | ||
354 | } | ||
355 | |||
356 | /// <summary> | ||
357 | /// Customises the login response and fills in missing values. | ||
358 | /// </summary> | ||
359 | /// <param name="response">The existing response</param> | ||
360 | /// <param name="theUser">The user profile</param> | ||
361 | public virtual void CustomiseResponse(ref LoginResponse response, ref UserProfileData theUser) | ||
362 | { | ||
363 | |||
364 | } | ||
365 | |||
366 | /// <summary> | ||
367 | /// Main user login function | ||
368 | /// </summary> | ||
369 | /// <param name="request">The XMLRPC request</param> | ||
370 | /// <returns>The response to send</returns> | ||
371 | public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) | ||
372 | { | ||
373 | XmlRpcResponse response = new XmlRpcResponse(); | ||
374 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
375 | |||
376 | bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd")); | ||
377 | bool GoodLogin = false; | ||
378 | string firstname = ""; | ||
379 | string lastname = ""; | ||
380 | string passwd = ""; | ||
381 | |||
382 | UserProfileData TheUser; | ||
383 | LoginResponse logResponse = new LoginResponse(); | ||
384 | |||
385 | if (GoodXML) | ||
386 | { | ||
387 | firstname = (string)requestData["first"]; | ||
388 | lastname = (string)requestData["last"]; | ||
389 | passwd = (string)requestData["passwd"]; | ||
390 | |||
391 | TheUser = GetTheUser(firstname, lastname); | ||
392 | if (TheUser == null) | ||
393 | return logResponse.CreateLoginFailedResponse(); | ||
394 | |||
395 | GoodLogin = AuthenticateUser(ref TheUser, passwd); | ||
396 | } | ||
397 | else | ||
398 | { | ||
399 | return logResponse.CreateGridErrorResponse(); | ||
400 | } | ||
401 | |||
402 | if (!GoodLogin) | ||
403 | { | ||
404 | return logResponse.CreateLoginFailedResponse(); | ||
405 | } | ||
406 | else | ||
407 | { | ||
408 | // If we already have a session... | ||
409 | if (TheUser.currentAgent != null && TheUser.currentAgent.agentOnline) | ||
410 | { | ||
411 | // Reject the login | ||
412 | return logResponse.CreateAlreadyLoggedInResponse(); | ||
413 | } | ||
414 | // Otherwise... | ||
415 | // Create a new agent session | ||
416 | CreateAgent(ref TheUser, request); | ||
417 | |||
418 | try | ||
419 | { | ||
420 | |||
421 | LLUUID AgentID = TheUser.UUID; | ||
422 | |||
423 | // Inventory Library Section | ||
424 | ArrayList AgentInventoryArray = new ArrayList(); | ||
425 | Hashtable TempHash; | ||
426 | |||
427 | AgentInventory Library = new AgentInventory(); | ||
428 | Library.CreateRootFolder(AgentID, true); | ||
429 | |||
430 | foreach (InventoryFolder InvFolder in Library.InventoryFolders.Values) | ||
431 | { | ||
432 | TempHash = new Hashtable(); | ||
433 | TempHash["name"] = InvFolder.FolderName; | ||
434 | TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); | ||
435 | TempHash["version"] = (Int32)InvFolder.Version; | ||
436 | TempHash["type_default"] = (Int32)InvFolder.DefaultType; | ||
437 | TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); | ||
438 | AgentInventoryArray.Add(TempHash); | ||
439 | } | ||
440 | |||
441 | Hashtable InventoryRootHash = new Hashtable(); | ||
442 | InventoryRootHash["folder_id"] = Library.InventoryRoot.FolderID.ToStringHyphenated(); | ||
443 | ArrayList InventoryRoot = new ArrayList(); | ||
444 | InventoryRoot.Add(InventoryRootHash); | ||
445 | |||
446 | // Circuit Code | ||
447 | uint circode = (uint)(Util.RandomClass.Next()); | ||
448 | |||
449 | logResponse.Lastname = TheUser.surname; | ||
450 | logResponse.Firstname = TheUser.username; | ||
451 | logResponse.AgentID = AgentID.ToStringHyphenated(); | ||
452 | logResponse.SessionID = TheUser.currentAgent.sessionID.ToStringHyphenated(); | ||
453 | logResponse.SecureSessionID = TheUser.currentAgent.secureSessionID.ToStringHyphenated(); | ||
454 | logResponse.InventoryRoot = InventoryRoot; | ||
455 | logResponse.InventorySkeleton = AgentInventoryArray; | ||
456 | logResponse.CircuitCode = (Int32)circode; | ||
457 | logResponse.RegionX = 0; //overwritten | ||
458 | logResponse.RegionY = 0; //overwritten | ||
459 | logResponse.Home = "!!null temporary value {home}!!"; // Overwritten | ||
460 | //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n"; | ||
461 | logResponse.SimAddress = "127.0.0.1"; //overwritten | ||
462 | logResponse.SimPort = 0; //overwritten | ||
463 | logResponse.Message = this.GetMessage(); | ||
464 | |||
465 | try | ||
466 | { | ||
467 | this.CustomiseResponse(ref logResponse, ref TheUser); | ||
468 | } | ||
469 | catch (Exception e) | ||
470 | { | ||
471 | System.Console.WriteLine(e.ToString()); | ||
472 | return logResponse.CreateDeadRegionResponse(); | ||
473 | } | ||
474 | CommitAgent(ref TheUser); | ||
475 | |||
476 | return logResponse.ToXmlRpcResponse(); | ||
477 | |||
478 | } | ||
479 | catch (Exception E) | ||
480 | { | ||
481 | System.Console.WriteLine(E.ToString()); | ||
482 | } | ||
483 | //} | ||
484 | } | ||
485 | return response; | ||
486 | |||
487 | } | ||
488 | |||
489 | #endregion | ||
490 | |||
491 | /// <summary> | ||
492 | /// Deletes an active agent session | ||
493 | /// </summary> | ||
494 | /// <param name="request">The request</param> | ||
495 | /// <param name="path">The path (eg /bork/narf/test)</param> | ||
496 | /// <param name="param">Parameters sent</param> | ||
497 | /// <returns>Success "OK" else error</returns> | ||
498 | public string RestDeleteUserSessionMethod(string request, string path, string param) | ||
499 | { | ||
500 | // TODO! Important! | ||
501 | |||
502 | return "OK"; | ||
503 | } | ||
504 | |||
505 | /// <summary> | ||
506 | /// | ||
507 | /// </summary> | ||
508 | /// <param name="user"></param> | ||
509 | public void AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY) | ||
510 | { | ||
511 | UserProfileData user = new UserProfileData(); | ||
512 | user.homeLocation = new LLVector3(128, 128, 100); | ||
513 | user.UUID = LLUUID.Random(); | ||
514 | user.username = firstName; | ||
515 | user.surname = lastName; | ||
516 | user.passwordHash = pass; | ||
517 | user.passwordSalt = ""; | ||
518 | user.created = Util.UnixTimeSinceEpoch(); | ||
519 | user.homeLookAt = new LLVector3(100, 100, 100); | ||
520 | user.homeRegion = Util.UIntsToLong((regX * 256), (regY * 256)); | ||
521 | |||
522 | foreach (KeyValuePair<string, IUserData> plugin in _plugins) | ||
523 | { | ||
524 | try | ||
525 | { | ||
526 | plugin.Value.addNewUserProfile(user); | ||
527 | |||
528 | } | ||
529 | catch (Exception e) | ||
530 | { | ||
531 | OpenSim.Framework.Console.MainLog.Instance.Verbose("Unable to add user via " + plugin.Key + "(" + e.ToString() + ")"); | ||
532 | } | ||
533 | } | ||
534 | } | ||
535 | |||
536 | /// <summary> | ||
537 | /// Returns an error message that the user could not be found in the database | ||
538 | /// </summary> | ||
539 | /// <returns>XML string consisting of a error element containing individual error(s)</returns> | ||
540 | public string CreateUnknownUserErrorResponse() | ||
541 | { | ||
542 | System.IO.StringWriter sw = new System.IO.StringWriter(); | ||
543 | XmlTextWriter xw = new XmlTextWriter(sw); | ||
544 | |||
545 | // Header | ||
546 | xw.Formatting = Formatting.Indented; | ||
547 | xw.WriteStartDocument(); | ||
548 | xw.WriteDocType("error", null, null, null); | ||
549 | xw.WriteComment("An error occured"); | ||
550 | xw.WriteStartElement("error"); | ||
551 | |||
552 | // User | ||
553 | xw.WriteElementString("unknownuser", "Unable to find a user with that name"); | ||
554 | |||
555 | // Footer | ||
556 | xw.WriteEndElement(); | ||
557 | xw.Flush(); | ||
558 | xw.Close(); | ||
559 | |||
560 | return sw.ToString(); | ||
561 | } | ||
562 | |||
563 | /// <summary> | ||
564 | /// Converts a user profile to an XML element which can be returned | ||
565 | /// </summary> | ||
566 | /// <param name="profile">The user profile</param> | ||
567 | /// <returns>A string containing an XML Document of the user profile</returns> | ||
568 | public string ProfileToXml(UserProfileData profile) | ||
569 | { | ||
570 | System.IO.StringWriter sw = new System.IO.StringWriter(); | ||
571 | XmlTextWriter xw = new XmlTextWriter(sw); | ||
572 | |||
573 | // Header | ||
574 | xw.Formatting = Formatting.Indented; | ||
575 | xw.WriteStartDocument(); | ||
576 | xw.WriteDocType("userprofile", null, null, null); | ||
577 | xw.WriteComment("Found user profiles matching the request"); | ||
578 | xw.WriteStartElement("users"); | ||
579 | |||
580 | // User | ||
581 | xw.WriteStartElement("user"); | ||
582 | // Account information | ||
583 | xw.WriteAttributeString("firstname", profile.username); | ||
584 | xw.WriteAttributeString("lastname", profile.surname); | ||
585 | xw.WriteAttributeString("uuid", profile.UUID.ToStringHyphenated()); | ||
586 | // Server Information | ||
587 | xw.WriteAttributeString("server_inventory", profile.userInventoryURI); | ||
588 | xw.WriteAttributeString("server_asset", profile.userAssetURI); | ||
589 | // Profile Information | ||
590 | xw.WriteAttributeString("profile_about", profile.profileAboutText); | ||
591 | xw.WriteAttributeString("profile_firstlife_about", profile.profileFirstText); | ||
592 | xw.WriteAttributeString("profile_firstlife_image", profile.profileFirstImage.ToStringHyphenated()); | ||
593 | xw.WriteAttributeString("profile_can_do", profile.profileCanDoMask.ToString()); | ||
594 | xw.WriteAttributeString("profile_want_do", profile.profileWantDoMask.ToString()); | ||
595 | xw.WriteAttributeString("profile_image", profile.profileImage.ToStringHyphenated()); | ||
596 | xw.WriteAttributeString("profile_created",profile.created.ToString()); | ||
597 | xw.WriteAttributeString("profile_lastlogin",profile.lastLogin.ToString()); | ||
598 | // Home region information | ||
599 | xw.WriteAttributeString("home_coordinates", profile.homeLocation.ToString()); | ||
600 | xw.WriteAttributeString("home_region", profile.homeRegion.ToString()); | ||
601 | xw.WriteAttributeString("home_look", profile.homeLookAt.ToString()); | ||
602 | |||
603 | xw.WriteEndElement(); | ||
604 | |||
605 | // Footer | ||
606 | xw.WriteEndElement(); | ||
607 | xw.Flush(); | ||
608 | xw.Close(); | ||
609 | |||
610 | return sw.ToString(); | ||
611 | } | ||
612 | |||
613 | #region REST Methods | ||
614 | //should most likely move out of here and into the grid's userserver sub class | ||
615 | public string RestGetUserMethodName(string request, string path, string param) | ||
616 | { | ||
617 | UserProfileData userProfile = getUserProfile(param.Trim()); | ||
618 | |||
619 | if (userProfile == null) | ||
620 | { | ||
621 | return CreateUnknownUserErrorResponse(); | ||
622 | } | ||
623 | |||
624 | return ProfileToXml(userProfile); | ||
625 | } | ||
626 | |||
627 | public string RestGetUserMethodUUID(string request, string path, string param) | ||
628 | { | ||
629 | UserProfileData userProfile = getUserProfile(new LLUUID(param)); | ||
630 | |||
631 | if (userProfile == null) | ||
632 | { | ||
633 | return CreateUnknownUserErrorResponse(); | ||
634 | } | ||
635 | |||
636 | return ProfileToXml(userProfile); | ||
637 | } | ||
638 | #endregion | ||
639 | |||
640 | } | ||
641 | } | ||