aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Server/Handlers/Base/Utils.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Server/Handlers/Base/Utils.cs')
-rw-r--r--OpenSim/Server/Handlers/Base/Utils.cs97
1 files changed, 97 insertions, 0 deletions
diff --git a/OpenSim/Server/Handlers/Base/Utils.cs b/OpenSim/Server/Handlers/Base/Utils.cs
new file mode 100644
index 0000000..48d923f
--- /dev/null
+++ b/OpenSim/Server/Handlers/Base/Utils.cs
@@ -0,0 +1,97 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.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 OpenSimulator 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
28using System;
29using System.Collections;
30using System.Net;
31
32using OpenSim.Framework;
33using OpenSim.Framework.Servers.HttpServer;
34using OpenSim.Services.Interfaces;
35using OpenMetaverse;
36
37namespace OpenSim.Server.Handlers.Base
38{
39 public class RestHandlerUtils
40 {
41 /// <summary>
42 /// Extract the param from an uri.
43 /// </summary>
44 /// <param name="uri">Something like this: /uuid/ or /uuid/handle/release</param>
45 /// <param name="uri">uuid on uuid field</param>
46 /// <param name="action">optional action</param>
47 public static bool GetParams(string path, out UUID uuid, out ulong regionHandle, out string action)
48 {
49 uuid = UUID.Zero;
50 action = "";
51 regionHandle = 0;
52
53 path = path.Trim(new char[] { '/' });
54 string[] parts = path.Split('/');
55 if (parts.Length <= 1)
56 {
57 return false;
58 }
59 else
60 {
61 if (!UUID.TryParse(parts[0], out uuid))
62 return false;
63
64 if (parts.Length >= 2)
65 UInt64.TryParse(parts[1], out regionHandle);
66 if (parts.Length >= 3)
67 action = parts[2];
68
69 return true;
70 }
71 }
72
73 public static bool GetAuthentication(IOSHttpRequest httpRequest, out string authority, out string authKey)
74 {
75 authority = string.Empty;
76 authKey = string.Empty;
77
78 Uri authUri;
79
80 string auth = httpRequest.Headers["authentication"];
81 // Authentication keys look like this:
82 // http://orgrid.org:8002/<uuid>
83 if ((auth != null) && (!string.Empty.Equals(auth)) && auth != "None")
84 {
85 if (Uri.TryCreate(auth, UriKind.Absolute, out authUri))
86 {
87 authority = authUri.Authority;
88 authKey = authUri.PathAndQuery.Trim('/');
89 return true;
90 }
91 }
92
93 return false;
94 }
95
96 }
97}