diff options
author | Diva Canto | 2015-01-06 21:24:44 -0800 |
---|---|---|
committer | Diva Canto | 2015-01-06 21:24:44 -0800 |
commit | 8e562f04d1576bd51138ac656f796ba18965fdcf (patch) | |
tree | c06dce809cb04c971ac545e9793d885ea555e611 | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC-8e562f04d1576bd51138ac656f796ba18965fdcf.zip opensim-SC-8e562f04d1576bd51138ac656f796ba18965fdcf.tar.gz opensim-SC-8e562f04d1576bd51138ac656f796ba18965fdcf.tar.bz2 opensim-SC-8e562f04d1576bd51138ac656f796ba18965fdcf.tar.xz |
Donation of robust network connectors for estate service, as promised. This allows to have one central database for estates without having to open the MySql port. This is off by default, so not to disturb everyone's existing installations. To use it, see GridCommon.ini.example [EstateDataStore] section and Robust*.ini.example's new additions.
Note that I also made things consistent by removing both the EstateDataService and the SimulationService into their own dlls, just like all other services. They really didn't belong in Services.Connectors, since everything in that component is about network connectors to robust backends. We may have too many dlls, and at some point it might not be a bad idea to merge all services into one single dll, since they all have more or less the same dependencies.
-rw-r--r-- | OpenSim/Server/Handlers/Estate/EstateDataRobustConnector.cs | 345 | ||||
-rw-r--r-- | OpenSim/Services/Connectors/Estate/EstateDataConnector.cs | 340 | ||||
-rw-r--r-- | OpenSim/Services/EstateService/EstateDataService.cs (renamed from OpenSim/Services/Connectors/Simulation/EstateDataService.cs) | 5 | ||||
-rw-r--r-- | OpenSim/Services/SimulationService/SimulationDataService.cs (renamed from OpenSim/Services/Connectors/Simulation/SimulationDataService.cs) | 3 | ||||
-rw-r--r-- | bin/Robust.HG.ini.example | 4 | ||||
-rw-r--r-- | bin/Robust.ini.example | 5 | ||||
-rw-r--r-- | bin/config-include/Grid.ini | 4 | ||||
-rw-r--r-- | bin/config-include/GridCommon.ini.example | 10 | ||||
-rw-r--r-- | bin/config-include/GridHypergrid.ini | 4 | ||||
-rw-r--r-- | bin/config-include/SimianGrid.ini | 4 | ||||
-rw-r--r-- | bin/config-include/Standalone.ini | 4 | ||||
-rw-r--r-- | bin/config-include/StandaloneHypergrid.ini | 4 | ||||
-rw-r--r-- | prebuild.xml | 63 |
13 files changed, 779 insertions, 16 deletions
diff --git a/OpenSim/Server/Handlers/Estate/EstateDataRobustConnector.cs b/OpenSim/Server/Handlers/Estate/EstateDataRobustConnector.cs new file mode 100644 index 0000000..4fe74f9 --- /dev/null +++ b/OpenSim/Server/Handlers/Estate/EstateDataRobustConnector.cs | |||
@@ -0,0 +1,345 @@ | |||
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 | using System; | ||
28 | using System.Collections.Generic; | ||
29 | using System.IO; | ||
30 | using System.Reflection; | ||
31 | using System.Net; | ||
32 | |||
33 | using Nini.Config; | ||
34 | using log4net; | ||
35 | using OpenMetaverse; | ||
36 | |||
37 | using OpenSim.Server.Base; | ||
38 | using OpenSim.Services.Interfaces; | ||
39 | using OpenSim.Framework; | ||
40 | using OpenSim.Framework.ServiceAuth; | ||
41 | using OpenSim.Framework.Servers.HttpServer; | ||
42 | using OpenSim.Server.Handlers.Base; | ||
43 | |||
44 | namespace OpenSim.Server.Handlers | ||
45 | { | ||
46 | public class EstateDataRobustConnector : ServiceConnector | ||
47 | { | ||
48 | private string m_ConfigName = "EstateService"; | ||
49 | |||
50 | public EstateDataRobustConnector(IConfigSource config, IHttpServer server, string configName) : | ||
51 | base(config, server, configName) | ||
52 | { | ||
53 | IConfig serverConfig = config.Configs[m_ConfigName]; | ||
54 | if (serverConfig == null) | ||
55 | throw new Exception(String.Format("No section {0} in config file", m_ConfigName)); | ||
56 | |||
57 | string service = serverConfig.GetString("LocalServiceModule", | ||
58 | String.Empty); | ||
59 | |||
60 | if (service == String.Empty) | ||
61 | throw new Exception("No LocalServiceModule in config file"); | ||
62 | |||
63 | Object[] args = new Object[] { config }; | ||
64 | IEstateDataService e_service = ServerUtils.LoadPlugin<IEstateDataService>(service, args); | ||
65 | |||
66 | IServiceAuth auth = ServiceAuth.Create(config, m_ConfigName); ; | ||
67 | |||
68 | server.AddStreamHandler(new EstateServerGetHandler(e_service, auth)); | ||
69 | server.AddStreamHandler(new EstateServerPostHandler(e_service, auth)); | ||
70 | } | ||
71 | } | ||
72 | |||
73 | |||
74 | public class EstateServerGetHandler : BaseStreamHandler | ||
75 | { | ||
76 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
77 | |||
78 | IEstateDataService m_EstateService; | ||
79 | |||
80 | // Possibilities | ||
81 | // /estates/estate/?region=uuid&create=[t|f] | ||
82 | // /estates/estate/?eid=int | ||
83 | // /estates/?name=string | ||
84 | // /estates/?owner=uuid | ||
85 | // /estates/ (all) | ||
86 | // /estates/regions/?eid=int | ||
87 | |||
88 | public EstateServerGetHandler(IEstateDataService service, IServiceAuth auth) : | ||
89 | base("GET", "/estates", auth) | ||
90 | { | ||
91 | m_EstateService = service; | ||
92 | } | ||
93 | |||
94 | protected override byte[] ProcessRequest(string path, Stream request, | ||
95 | IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||
96 | { | ||
97 | byte[] result = new byte[0]; | ||
98 | Dictionary<string, object> data = null; | ||
99 | |||
100 | string[] p = SplitParams(path); | ||
101 | |||
102 | // /estates/ (all) | ||
103 | // /estates/?name=string | ||
104 | // /estates/?owner=uuid | ||
105 | if (p.Length == 0) | ||
106 | data = GetEstates(httpRequest, httpResponse); | ||
107 | else | ||
108 | { | ||
109 | string resource = p[0]; | ||
110 | |||
111 | // /estates/estate/?region=uuid&create=[t|f] | ||
112 | // /estates/estate/?eid=int | ||
113 | if ("estate".Equals(resource)) | ||
114 | data = GetEstate(httpRequest, httpResponse); | ||
115 | // /estates/regions/?eid=int | ||
116 | else if ("regions".Equals(resource)) | ||
117 | data = GetRegions(httpRequest, httpResponse); | ||
118 | } | ||
119 | |||
120 | if (data == null) | ||
121 | data = new Dictionary<string, object>(); | ||
122 | |||
123 | string xmlString = ServerUtils.BuildXmlResponse(data); | ||
124 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); | ||
125 | |||
126 | } | ||
127 | |||
128 | private Dictionary<string, object> GetEstates(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||
129 | { | ||
130 | // /estates/ (all) | ||
131 | // /estates/?name=string | ||
132 | // /estates/?owner=uuid | ||
133 | |||
134 | Dictionary<string, object> data = null; | ||
135 | string name = (string)httpRequest.Query["name"]; | ||
136 | string owner = (string)httpRequest.Query["owner"]; | ||
137 | |||
138 | if (!string.IsNullOrEmpty(name) || !string.IsNullOrEmpty(owner)) | ||
139 | { | ||
140 | List<int> estateIDs = null; | ||
141 | if (!string.IsNullOrEmpty(name)) | ||
142 | { | ||
143 | estateIDs = m_EstateService.GetEstates(name); | ||
144 | } | ||
145 | else if (!string.IsNullOrEmpty(owner)) | ||
146 | { | ||
147 | UUID ownerID = UUID.Zero; | ||
148 | if (UUID.TryParse(owner, out ownerID)) | ||
149 | estateIDs = m_EstateService.GetEstatesByOwner(ownerID); | ||
150 | } | ||
151 | |||
152 | if (estateIDs == null || (estateIDs != null && estateIDs.Count == 0)) | ||
153 | httpResponse.StatusCode = (int)HttpStatusCode.NotFound; | ||
154 | else | ||
155 | { | ||
156 | httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||
157 | httpResponse.ContentType = "text/xml"; | ||
158 | data = new Dictionary<string, object>(); | ||
159 | int i = 0; | ||
160 | foreach (int id in estateIDs) | ||
161 | data["estate" + i++] = id; | ||
162 | } | ||
163 | } | ||
164 | else | ||
165 | { | ||
166 | List<EstateSettings> estates = m_EstateService.LoadEstateSettingsAll(); | ||
167 | if (estates == null || estates.Count == 0) | ||
168 | { | ||
169 | httpResponse.StatusCode = (int)HttpStatusCode.NotFound; | ||
170 | } | ||
171 | else | ||
172 | { | ||
173 | httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||
174 | httpResponse.ContentType = "text/xml"; | ||
175 | data = new Dictionary<string, object>(); | ||
176 | int i = 0; | ||
177 | foreach (EstateSettings es in estates) | ||
178 | data["estate" + i++] = es.ToMap(); | ||
179 | |||
180 | } | ||
181 | } | ||
182 | |||
183 | return data; | ||
184 | } | ||
185 | |||
186 | private Dictionary<string, object> GetEstate(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||
187 | { | ||
188 | // /estates/estate/?region=uuid&create=[t|f] | ||
189 | // /estates/estate/?eid=int | ||
190 | Dictionary<string, object> data = null; | ||
191 | string region = (string)httpRequest.Query["region"]; | ||
192 | string eid = (string)httpRequest.Query["eid"]; | ||
193 | |||
194 | EstateSettings estate = null; | ||
195 | |||
196 | if (!string.IsNullOrEmpty(region)) | ||
197 | { | ||
198 | UUID regionID = UUID.Zero; | ||
199 | if (UUID.TryParse(region, out regionID)) | ||
200 | { | ||
201 | string create = (string)httpRequest.Query["create"]; | ||
202 | bool createYN = false; | ||
203 | Boolean.TryParse(create, out createYN); | ||
204 | estate = m_EstateService.LoadEstateSettings(regionID, createYN); | ||
205 | } | ||
206 | } | ||
207 | else if (!string.IsNullOrEmpty(eid)) | ||
208 | { | ||
209 | int id = 0; | ||
210 | if (Int32.TryParse(eid, out id)) | ||
211 | estate = m_EstateService.LoadEstateSettings(id); | ||
212 | } | ||
213 | |||
214 | if (estate != null) | ||
215 | { | ||
216 | httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||
217 | httpResponse.ContentType = "text/xml"; | ||
218 | data = estate.ToMap(); | ||
219 | } | ||
220 | else | ||
221 | httpResponse.StatusCode = (int)HttpStatusCode.NotFound; | ||
222 | |||
223 | return data; | ||
224 | } | ||
225 | |||
226 | private Dictionary<string, object> GetRegions(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||
227 | { | ||
228 | // /estates/regions/?eid=int | ||
229 | Dictionary<string, object> data = null; | ||
230 | string eid = (string)httpRequest.Query["eid"]; | ||
231 | |||
232 | httpResponse.StatusCode = (int)HttpStatusCode.NotFound; | ||
233 | if (!string.IsNullOrEmpty(eid)) | ||
234 | { | ||
235 | int id = 0; | ||
236 | if (Int32.TryParse(eid, out id)) | ||
237 | { | ||
238 | List<UUID> regions = m_EstateService.GetRegions(id); | ||
239 | if (regions != null && regions.Count > 0) | ||
240 | { | ||
241 | data = new Dictionary<string, object>(); | ||
242 | int i = 0; | ||
243 | foreach (UUID uuid in regions) | ||
244 | data["region" + i++] = uuid.ToString(); | ||
245 | httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||
246 | httpResponse.ContentType = "text/xml"; | ||
247 | } | ||
248 | } | ||
249 | } | ||
250 | |||
251 | return data; | ||
252 | } | ||
253 | } | ||
254 | |||
255 | public class EstateServerPostHandler : BaseStreamHandler | ||
256 | { | ||
257 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
258 | |||
259 | IEstateDataService m_EstateService; | ||
260 | |||
261 | // Possibilities | ||
262 | // /estates/estate/ (post an estate) | ||
263 | // /estates/estate/?eid=int®ion=uuid (link a region to an estate) | ||
264 | |||
265 | public EstateServerPostHandler(IEstateDataService service, IServiceAuth auth) : | ||
266 | base("POST", "/estates", auth) | ||
267 | { | ||
268 | m_EstateService = service; | ||
269 | } | ||
270 | |||
271 | protected override byte[] ProcessRequest(string path, Stream request, | ||
272 | IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||
273 | { | ||
274 | byte[] result = new byte[0]; | ||
275 | Dictionary<string, object> data = null; | ||
276 | |||
277 | string[] p = SplitParams(path); | ||
278 | |||
279 | if (p.Length > 0) | ||
280 | { | ||
281 | string resource = p[0]; | ||
282 | |||
283 | // /estates/estate/ | ||
284 | // /estates/estate/?eid=int®ion=uuid | ||
285 | if ("estate".Equals(resource)) | ||
286 | { | ||
287 | StreamReader sr = new StreamReader(request); | ||
288 | string body = sr.ReadToEnd(); | ||
289 | sr.Close(); | ||
290 | body = body.Trim(); | ||
291 | |||
292 | Dictionary<string, object> requestData = ServerUtils.ParseQueryString(body); | ||
293 | |||
294 | data = UpdateEstate(requestData, httpRequest, httpResponse); | ||
295 | } | ||
296 | } | ||
297 | |||
298 | if (data == null) | ||
299 | data = new Dictionary<string, object>(); | ||
300 | |||
301 | string xmlString = ServerUtils.BuildXmlResponse(data); | ||
302 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); | ||
303 | |||
304 | } | ||
305 | |||
306 | private Dictionary<string, object> UpdateEstate(Dictionary<string, object> requestData, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) | ||
307 | { | ||
308 | // /estates/estate/ | ||
309 | // /estates/estate/?eid=int®ion=uuid | ||
310 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
311 | string eid = (string)httpRequest.Query["eid"]; | ||
312 | string region = (string)httpRequest.Query["region"]; | ||
313 | |||
314 | httpResponse.StatusCode = (int)HttpStatusCode.NotFound; | ||
315 | |||
316 | if (string.IsNullOrEmpty(eid) && string.IsNullOrEmpty(region) && | ||
317 | requestData.ContainsKey("OP") && requestData["OP"] != null && "STORE".Equals(requestData["OP"])) | ||
318 | { | ||
319 | // /estates/estate/ | ||
320 | EstateSettings es = new EstateSettings(requestData); | ||
321 | m_EstateService.StoreEstateSettings(es); | ||
322 | //m_log.DebugFormat("[EstateServerPostHandler]: Store estate {0}", es.ToString()); | ||
323 | httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||
324 | result["Result"] = true; | ||
325 | } | ||
326 | else if (!string.IsNullOrEmpty(region) && !string.IsNullOrEmpty(eid) && | ||
327 | requestData.ContainsKey("OP") && requestData["OP"] != null && "LINK".Equals(requestData["OP"])) | ||
328 | { | ||
329 | int id = 0; | ||
330 | UUID regionID = UUID.Zero; | ||
331 | if (UUID.TryParse(region, out regionID) && Int32.TryParse(eid, out id)) | ||
332 | { | ||
333 | m_log.DebugFormat("[EstateServerPostHandler]: Link region {0} to estate {1}", regionID, id); | ||
334 | httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||
335 | result["Result"] = m_EstateService.LinkRegion(regionID, id); | ||
336 | } | ||
337 | } | ||
338 | else | ||
339 | m_log.WarnFormat("[EstateServerPostHandler]: something wrong with POST request {0}", httpRequest.RawUrl); | ||
340 | |||
341 | return result; | ||
342 | } | ||
343 | |||
344 | } | ||
345 | } | ||
diff --git a/OpenSim/Services/Connectors/Estate/EstateDataConnector.cs b/OpenSim/Services/Connectors/Estate/EstateDataConnector.cs new file mode 100644 index 0000000..9d01b47 --- /dev/null +++ b/OpenSim/Services/Connectors/Estate/EstateDataConnector.cs | |||
@@ -0,0 +1,340 @@ | |||
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 | using System; | ||
28 | using System.Collections.Generic; | ||
29 | using System.Net; | ||
30 | using System.Reflection; | ||
31 | |||
32 | using log4net; | ||
33 | |||
34 | using OpenMetaverse; | ||
35 | using Nini.Config; | ||
36 | |||
37 | using OpenSim.Framework; | ||
38 | using OpenSim.Framework.ServiceAuth; | ||
39 | using OpenSim.Services.Connectors; | ||
40 | using OpenSim.Services.Interfaces; | ||
41 | using OpenSim.Server.Base; | ||
42 | |||
43 | namespace OpenSim.Service.Connectors | ||
44 | { | ||
45 | public class EstateDataRemoteConnector : BaseServiceConnector, IEstateDataService | ||
46 | { | ||
47 | private static readonly ILog m_log = | ||
48 | LogManager.GetLogger( | ||
49 | MethodBase.GetCurrentMethod().DeclaringType); | ||
50 | |||
51 | private string m_ServerURI = String.Empty; | ||
52 | private ExpiringCache<string, List<EstateSettings>> m_EstateCache = new ExpiringCache<string, List<EstateSettings>>(); | ||
53 | private const int EXPIRATION = 5 * 60; // 5 minutes in secs | ||
54 | |||
55 | public EstateDataRemoteConnector(IConfigSource source) | ||
56 | { | ||
57 | Initialise(source); | ||
58 | } | ||
59 | |||
60 | public virtual void Initialise(IConfigSource source) | ||
61 | { | ||
62 | IConfig gridConfig = source.Configs["EstateService"]; | ||
63 | if (gridConfig == null) | ||
64 | { | ||
65 | m_log.Error("[ESTATE CONNECTOR]: EstateService missing from OpenSim.ini"); | ||
66 | throw new Exception("Estate connector init error"); | ||
67 | } | ||
68 | |||
69 | string serviceURI = gridConfig.GetString("EstateServerURI", | ||
70 | String.Empty); | ||
71 | |||
72 | if (serviceURI == String.Empty) | ||
73 | { | ||
74 | m_log.Error("[ESTATE CONNECTOR]: No Server URI named in section EstateService"); | ||
75 | throw new Exception("Estate connector init error"); | ||
76 | } | ||
77 | m_ServerURI = serviceURI; | ||
78 | |||
79 | base.Initialise(source, "EstateService"); | ||
80 | } | ||
81 | |||
82 | #region IEstateDataService | ||
83 | |||
84 | public List<EstateSettings> LoadEstateSettingsAll() | ||
85 | { | ||
86 | string reply = string.Empty; | ||
87 | string uri = m_ServerURI + "/estates"; | ||
88 | |||
89 | reply = MakeRequest("GET", uri, string.Empty); | ||
90 | if (String.IsNullOrEmpty(reply)) | ||
91 | return new List<EstateSettings>(); | ||
92 | |||
93 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
94 | |||
95 | List<EstateSettings> estates = new List<EstateSettings>(); | ||
96 | if (replyData != null && replyData.Count > 0) | ||
97 | { | ||
98 | m_log.DebugFormat("[ESTATE CONNECTOR]: LoadEstateSettingsAll returned {0} elements", replyData.Count); | ||
99 | Dictionary<string, object>.ValueCollection estateData = replyData.Values; | ||
100 | foreach (object r in estateData) | ||
101 | { | ||
102 | if (r is Dictionary<string, object>) | ||
103 | { | ||
104 | EstateSettings es = new EstateSettings((Dictionary<string, object>)r); | ||
105 | estates.Add(es); | ||
106 | } | ||
107 | } | ||
108 | m_EstateCache.AddOrUpdate("estates", estates, EXPIRATION); | ||
109 | } | ||
110 | else | ||
111 | m_log.DebugFormat("[ESTATE CONNECTOR]: LoadEstateSettingsAll from {0} received null or zero response", uri); | ||
112 | |||
113 | return estates; | ||
114 | |||
115 | } | ||
116 | |||
117 | public List<int> GetEstatesAll() | ||
118 | { | ||
119 | List<int> eids = new List<int>(); | ||
120 | // If we don't have them, load them from the server | ||
121 | List<EstateSettings> estates = null; | ||
122 | if (!m_EstateCache.TryGetValue("estates", out estates)) | ||
123 | LoadEstateSettingsAll(); | ||
124 | |||
125 | foreach (EstateSettings es in estates) | ||
126 | eids.Add((int)es.EstateID); | ||
127 | |||
128 | return eids; | ||
129 | } | ||
130 | |||
131 | public List<int> GetEstates(string search) | ||
132 | { | ||
133 | // If we don't have them, load them from the server | ||
134 | List<EstateSettings> estates = null; | ||
135 | if (!m_EstateCache.TryGetValue("estates", out estates)) | ||
136 | LoadEstateSettingsAll(); | ||
137 | |||
138 | List<int> eids = new List<int>(); | ||
139 | foreach (EstateSettings es in estates) | ||
140 | if (es.EstateName == search) | ||
141 | eids.Add((int)es.EstateID); | ||
142 | |||
143 | return eids; | ||
144 | } | ||
145 | |||
146 | public List<int> GetEstatesByOwner(UUID ownerID) | ||
147 | { | ||
148 | // If we don't have them, load them from the server | ||
149 | List<EstateSettings> estates = null; | ||
150 | if (!m_EstateCache.TryGetValue("estates", out estates)) | ||
151 | LoadEstateSettingsAll(); | ||
152 | |||
153 | List<int> eids = new List<int>(); | ||
154 | foreach (EstateSettings es in estates) | ||
155 | if (es.EstateOwner == ownerID) | ||
156 | eids.Add((int)es.EstateID); | ||
157 | |||
158 | return eids; | ||
159 | } | ||
160 | |||
161 | public List<UUID> GetRegions(int estateID) | ||
162 | { | ||
163 | string reply = string.Empty; | ||
164 | // /estates/regions/?eid=int | ||
165 | string uri = m_ServerURI + "/estates/regions/?eid=" + estateID.ToString(); | ||
166 | |||
167 | reply = MakeRequest("GET", uri, string.Empty); | ||
168 | if (String.IsNullOrEmpty(reply)) | ||
169 | return new List<UUID>(); | ||
170 | |||
171 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
172 | |||
173 | List<UUID> regions = new List<UUID>(); | ||
174 | if (replyData != null && replyData.Count > 0) | ||
175 | { | ||
176 | m_log.DebugFormat("[ESTATE CONNECTOR]: GetRegions for estate {0} returned {1} elements", estateID, replyData.Count); | ||
177 | Dictionary<string, object>.ValueCollection data = replyData.Values; | ||
178 | foreach (object r in data) | ||
179 | { | ||
180 | UUID uuid = UUID.Zero; | ||
181 | if (UUID.TryParse(r.ToString(), out uuid)) | ||
182 | regions.Add(uuid); | ||
183 | } | ||
184 | } | ||
185 | else | ||
186 | m_log.DebugFormat("[ESTATE CONNECTOR]: GetRegions from {0} received null or zero response", uri); | ||
187 | |||
188 | return regions; | ||
189 | } | ||
190 | |||
191 | public EstateSettings LoadEstateSettings(UUID regionID, bool create) | ||
192 | { | ||
193 | string reply = string.Empty; | ||
194 | // /estates/estate/?region=uuid&create=[t|f] | ||
195 | string uri = m_ServerURI + string.Format("/estates/estate/?region={0}&create={1}", regionID, create); | ||
196 | |||
197 | reply = MakeRequest("GET", uri, string.Empty); | ||
198 | if (String.IsNullOrEmpty(reply)) | ||
199 | return null; | ||
200 | |||
201 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
202 | |||
203 | if (replyData != null && replyData.Count > 0) | ||
204 | { | ||
205 | m_log.DebugFormat("[ESTATE CONNECTOR]: LoadEstateSettings({0}) returned {1} elements", regionID, replyData.Count); | ||
206 | EstateSettings es = new EstateSettings(replyData); | ||
207 | return es; | ||
208 | } | ||
209 | else | ||
210 | m_log.DebugFormat("[ESTATE CONNECTOR]: LoadEstateSettings(regionID) from {0} received null or zero response", uri); | ||
211 | |||
212 | return null; | ||
213 | } | ||
214 | |||
215 | public EstateSettings LoadEstateSettings(int estateID) | ||
216 | { | ||
217 | string reply = string.Empty; | ||
218 | // /estates/estate/?eid=int | ||
219 | string uri = m_ServerURI + string.Format("/estates/estate/?eid={0}", estateID); | ||
220 | |||
221 | reply = MakeRequest("GET", uri, string.Empty); | ||
222 | if (String.IsNullOrEmpty(reply)) | ||
223 | return null; | ||
224 | |||
225 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
226 | |||
227 | if (replyData != null && replyData.Count > 0) | ||
228 | { | ||
229 | m_log.DebugFormat("[ESTATE CONNECTOR]: LoadEstateSettings({0}) returned {1} elements", estateID, replyData.Count); | ||
230 | EstateSettings es = new EstateSettings(replyData); | ||
231 | return es; | ||
232 | } | ||
233 | else | ||
234 | m_log.DebugFormat("[ESTATE CONNECTOR]: LoadEstateSettings(estateID) from {0} received null or zero response", uri); | ||
235 | |||
236 | return null; | ||
237 | } | ||
238 | |||
239 | /// <summary> | ||
240 | /// Forbidden operation | ||
241 | /// </summary> | ||
242 | /// <returns></returns> | ||
243 | public EstateSettings CreateNewEstate() | ||
244 | { | ||
245 | // No can do | ||
246 | return null; | ||
247 | } | ||
248 | |||
249 | public void StoreEstateSettings(EstateSettings es) | ||
250 | { | ||
251 | string reply = string.Empty; | ||
252 | // /estates/estate/ | ||
253 | string uri = m_ServerURI + ("/estates/estate"); | ||
254 | |||
255 | Dictionary<string, object> formdata = es.ToMap(); | ||
256 | formdata["OP"] = "STORE"; | ||
257 | |||
258 | PostRequest(uri, formdata); | ||
259 | } | ||
260 | |||
261 | public bool LinkRegion(UUID regionID, int estateID) | ||
262 | { | ||
263 | string reply = string.Empty; | ||
264 | // /estates/estate/?eid=int®ion=uuid | ||
265 | string uri = m_ServerURI + String.Format("/estates/estate/?eid={0}®ion={1}", estateID, regionID); | ||
266 | |||
267 | Dictionary<string, object> formdata = new Dictionary<string, object>(); | ||
268 | formdata["OP"] = "LINK"; | ||
269 | return PostRequest(uri, formdata); | ||
270 | } | ||
271 | |||
272 | private bool PostRequest(string uri, Dictionary<string, object> sendData) | ||
273 | { | ||
274 | string reqString = ServerUtils.BuildQueryString(sendData); | ||
275 | |||
276 | string reply = MakeRequest("POST", uri, reqString); | ||
277 | if (String.IsNullOrEmpty(reply)) | ||
278 | return false; | ||
279 | |||
280 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
281 | |||
282 | bool result = false; | ||
283 | if (replyData != null && replyData.Count > 0) | ||
284 | { | ||
285 | if (replyData.ContainsKey("Result")) | ||
286 | { | ||
287 | if (Boolean.TryParse(replyData["Result"].ToString(), out result)) | ||
288 | m_log.DebugFormat("[ESTATE CONNECTOR]: PostRequest {0} returned {1}", uri, result); | ||
289 | } | ||
290 | } | ||
291 | else | ||
292 | m_log.DebugFormat("[ESTATE CONNECTOR]: PostRequest {0} received null or zero response", uri); | ||
293 | |||
294 | return result; | ||
295 | } | ||
296 | |||
297 | /// <summary> | ||
298 | /// Forbidden operation | ||
299 | /// </summary> | ||
300 | /// <returns></returns> | ||
301 | public bool DeleteEstate(int estateID) | ||
302 | { | ||
303 | return false; | ||
304 | } | ||
305 | |||
306 | #endregion | ||
307 | |||
308 | private string MakeRequest(string verb, string uri, string formdata) | ||
309 | { | ||
310 | string reply = string.Empty; | ||
311 | try | ||
312 | { | ||
313 | reply = SynchronousRestFormsRequester.MakeRequest(verb, uri, formdata, m_Auth); | ||
314 | } | ||
315 | catch (WebException e) | ||
316 | { | ||
317 | using (HttpWebResponse hwr = (HttpWebResponse)e.Response) | ||
318 | { | ||
319 | if (hwr != null) | ||
320 | { | ||
321 | if (hwr.StatusCode == HttpStatusCode.NotFound) | ||
322 | m_log.Error(string.Format("[ESTATE CONNECTOR]: Resource {0} not found ", uri)); | ||
323 | if (hwr.StatusCode == HttpStatusCode.Unauthorized) | ||
324 | m_log.Error(string.Format("[ESTATE CONNECTOR]: Web request {0} requires authentication ", uri)); | ||
325 | } | ||
326 | else | ||
327 | m_log.Error(string.Format( | ||
328 | "[ESTATE CONNECTOR]: WebException for {0} {1} {2} ", | ||
329 | verb, uri, formdata, e)); | ||
330 | } | ||
331 | } | ||
332 | catch (Exception e) | ||
333 | { | ||
334 | m_log.DebugFormat("[ESTATE CONNECTOR]: Exception when contacting estate server at {0}: {1}", uri, e.Message); | ||
335 | } | ||
336 | |||
337 | return reply; | ||
338 | } | ||
339 | } | ||
340 | } | ||
diff --git a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs b/OpenSim/Services/EstateService/EstateDataService.cs index 5962b99..f6a8654 100644 --- a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs +++ b/OpenSim/Services/EstateService/EstateDataService.cs | |||
@@ -29,17 +29,14 @@ using System; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using OpenMetaverse; | 30 | using OpenMetaverse; |
31 | using log4net; | 31 | using log4net; |
32 | using Mono.Addins; | ||
33 | using Nini.Config; | 32 | using Nini.Config; |
34 | using System.Reflection; | 33 | using System.Reflection; |
35 | using OpenSim.Services.Base; | 34 | using OpenSim.Services.Base; |
36 | using OpenSim.Services.Interfaces; | 35 | using OpenSim.Services.Interfaces; |
37 | using OpenSim.Data; | 36 | using OpenSim.Data; |
38 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
39 | //using OpenSim.Region.Framework.Interfaces; | ||
40 | //using OpenSim.Region.Framework.Scenes; | ||
41 | 38 | ||
42 | namespace OpenSim.Services.Connectors | 39 | namespace OpenSim.Services.EstateService |
43 | { | 40 | { |
44 | public class EstateDataService : ServiceBase, IEstateDataService | 41 | public class EstateDataService : ServiceBase, IEstateDataService |
45 | { | 42 | { |
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs b/OpenSim/Services/SimulationService/SimulationDataService.cs index 2cbf967..d9684c4 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs +++ b/OpenSim/Services/SimulationService/SimulationDataService.cs | |||
@@ -29,7 +29,6 @@ using System; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using OpenMetaverse; | 30 | using OpenMetaverse; |
31 | using log4net; | 31 | using log4net; |
32 | using Mono.Addins; | ||
33 | using Nini.Config; | 32 | using Nini.Config; |
34 | using System.Reflection; | 33 | using System.Reflection; |
35 | using OpenSim.Services.Base; | 34 | using OpenSim.Services.Base; |
@@ -39,7 +38,7 @@ using OpenSim.Framework; | |||
39 | using OpenSim.Region.Framework.Interfaces; | 38 | using OpenSim.Region.Framework.Interfaces; |
40 | using OpenSim.Region.Framework.Scenes; | 39 | using OpenSim.Region.Framework.Scenes; |
41 | 40 | ||
42 | namespace OpenSim.Services.Connectors | 41 | namespace OpenSim.Services.SimulationService |
43 | { | 42 | { |
44 | public class SimulationDataService : ServiceBase, ISimulationDataService | 43 | public class SimulationDataService : ServiceBase, ISimulationDataService |
45 | { | 44 | { |
diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 71ce6ad..46dbc17 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example | |||
@@ -110,6 +110,8 @@ | |||
110 | ;; Uncomment for UserProfiles see [UserProfilesService] to configure... | 110 | ;; Uncomment for UserProfiles see [UserProfilesService] to configure... |
111 | ; UserProfilesServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserProfilesConnector" | 111 | ; UserProfilesServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserProfilesConnector" |
112 | 112 | ||
113 | ;; Uncomment if you want to have centralized estate data | ||
114 | ; EstateDataService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:EstateDataRobustConnector" | ||
113 | 115 | ||
114 | ; * This is common for all services, it's the network setup for the entire | 116 | ; * This is common for all services, it's the network setup for the entire |
115 | ; * server instance, if none is specified above | 117 | ; * server instance, if none is specified above |
@@ -379,6 +381,8 @@ | |||
379 | ; for the server connector | 381 | ; for the server connector |
380 | LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService" | 382 | LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService" |
381 | 383 | ||
384 | [EstateService] | ||
385 | LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService" | ||
382 | 386 | ||
383 | [LibraryService] | 387 | [LibraryService] |
384 | LibraryName = "OpenSim Library" | 388 | LibraryName = "OpenSim Library" |
diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example index a7b39a3..687bb2e 100644 --- a/bin/Robust.ini.example +++ b/bin/Robust.ini.example | |||
@@ -89,6 +89,9 @@ | |||
89 | ;; Uncomment for UserProfiles see [UserProfilesService] to configure... | 89 | ;; Uncomment for UserProfiles see [UserProfilesService] to configure... |
90 | ; UserProfilesServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserProfilesConnector" | 90 | ; UserProfilesServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserProfilesConnector" |
91 | 91 | ||
92 | ;; Uncomment if you want to have centralized estate data | ||
93 | ; EstateDataService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:EstateDataRobustConnector" | ||
94 | |||
92 | ; * This is common for all services, it's the network setup for the entire | 95 | ; * This is common for all services, it's the network setup for the entire |
93 | ; * server instance, if none is specified above | 96 | ; * server instance, if none is specified above |
94 | ; * | 97 | ; * |
@@ -339,6 +342,8 @@ | |||
339 | ; for the server connector | 342 | ; for the server connector |
340 | LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService" | 343 | LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService" |
341 | 344 | ||
345 | [EstateService] | ||
346 | LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService" | ||
342 | 347 | ||
343 | [LibraryService] | 348 | [LibraryService] |
344 | LibraryName = "OpenSim Library" | 349 | LibraryName = "OpenSim Library" |
diff --git a/bin/config-include/Grid.ini b/bin/config-include/Grid.ini index e9eaee3..42ecec2 100644 --- a/bin/config-include/Grid.ini +++ b/bin/config-include/Grid.ini | |||
@@ -46,10 +46,10 @@ | |||
46 | ConnectorProtocolVersion = "SIMULATION/0.3" | 46 | ConnectorProtocolVersion = "SIMULATION/0.3" |
47 | 47 | ||
48 | [SimulationDataStore] | 48 | [SimulationDataStore] |
49 | LocalServiceModule = "OpenSim.Services.Connectors.dll:SimulationDataService" | 49 | LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" |
50 | 50 | ||
51 | [EstateDataStore] | 51 | [EstateDataStore] |
52 | LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataService" | 52 | LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService" |
53 | 53 | ||
54 | [GridService] | 54 | [GridService] |
55 | LocalServiceModule = "OpenSim.Services.GridService.dll:GridService" | 55 | LocalServiceModule = "OpenSim.Services.GridService.dll:GridService" |
diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index 903641e..bffc504 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example | |||
@@ -108,6 +108,16 @@ | |||
108 | ;; Robust server in port ${Const|PublicPort}, but not always) | 108 | ;; Robust server in port ${Const|PublicPort}, but not always) |
109 | Gatekeeper="${Const|BaseURL}:${Const|PublicPort}" | 109 | Gatekeeper="${Const|BaseURL}:${Const|PublicPort}" |
110 | 110 | ||
111 | [EstateDataStore] | ||
112 | ; | ||
113 | ; Uncomment if you want centralized estate data at robust server, | ||
114 | ; in which case the URL in [EstateService] will be used | ||
115 | ; | ||
116 | ;LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataConnector" | ||
117 | |||
118 | [EstateService] | ||
119 | EstateServerURI = "${Const|BaseURL}:${Const|PrivatePort}" | ||
120 | |||
111 | [Messaging] | 121 | [Messaging] |
112 | ; === HG ONLY === | 122 | ; === HG ONLY === |
113 | ;; Change this to the address of your Gatekeeper service | 123 | ;; Change this to the address of your Gatekeeper service |
diff --git a/bin/config-include/GridHypergrid.ini b/bin/config-include/GridHypergrid.ini index 8dadd76..8b47ede 100644 --- a/bin/config-include/GridHypergrid.ini +++ b/bin/config-include/GridHypergrid.ini | |||
@@ -54,10 +54,10 @@ | |||
54 | Module = "BasicProfileModule" | 54 | Module = "BasicProfileModule" |
55 | 55 | ||
56 | [SimulationDataStore] | 56 | [SimulationDataStore] |
57 | LocalServiceModule = "OpenSim.Services.Connectors.dll:SimulationDataService" | 57 | LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" |
58 | 58 | ||
59 | [EstateDataStore] | 59 | [EstateDataStore] |
60 | LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataService" | 60 | LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService" |
61 | 61 | ||
62 | [AssetService] | 62 | [AssetService] |
63 | LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector" | 63 | LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector" |
diff --git a/bin/config-include/SimianGrid.ini b/bin/config-include/SimianGrid.ini index 311a55b..8e42fab 100644 --- a/bin/config-include/SimianGrid.ini +++ b/bin/config-include/SimianGrid.ini | |||
@@ -42,10 +42,10 @@ | |||
42 | AssetCaching = "FlotsamAssetCache" | 42 | AssetCaching = "FlotsamAssetCache" |
43 | 43 | ||
44 | [SimulationDataStore] | 44 | [SimulationDataStore] |
45 | LocalServiceModule = "OpenSim.Services.Connectors.dll:SimulationDataService" | 45 | LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" |
46 | 46 | ||
47 | [EstateDataStore] | 47 | [EstateDataStore] |
48 | LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataService" | 48 | LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService" |
49 | 49 | ||
50 | [Friends] | 50 | [Friends] |
51 | Connector = "OpenSim.Services.Connectors.dll:SimianFriendsServiceConnector" | 51 | Connector = "OpenSim.Services.Connectors.dll:SimianFriendsServiceConnector" |
diff --git a/bin/config-include/Standalone.ini b/bin/config-include/Standalone.ini index 887f4d8..398a76c 100644 --- a/bin/config-include/Standalone.ini +++ b/bin/config-include/Standalone.ini | |||
@@ -43,10 +43,10 @@ | |||
43 | ConnectorProtocolVersion = "SIMULATION/0.3" | 43 | ConnectorProtocolVersion = "SIMULATION/0.3" |
44 | 44 | ||
45 | [SimulationDataStore] | 45 | [SimulationDataStore] |
46 | LocalServiceModule = "OpenSim.Services.Connectors.dll:SimulationDataService" | 46 | LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" |
47 | 47 | ||
48 | [EstateDataStore] | 48 | [EstateDataStore] |
49 | LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataService" | 49 | LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService" |
50 | 50 | ||
51 | [AssetService] | 51 | [AssetService] |
52 | LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" | 52 | LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" |
diff --git a/bin/config-include/StandaloneHypergrid.ini b/bin/config-include/StandaloneHypergrid.ini index a3c7fa6..102947a 100644 --- a/bin/config-include/StandaloneHypergrid.ini +++ b/bin/config-include/StandaloneHypergrid.ini | |||
@@ -58,10 +58,10 @@ | |||
58 | LureModule = HGLureModule | 58 | LureModule = HGLureModule |
59 | 59 | ||
60 | [SimulationDataStore] | 60 | [SimulationDataStore] |
61 | LocalServiceModule = "OpenSim.Services.Connectors.dll:SimulationDataService" | 61 | LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService" |
62 | 62 | ||
63 | [EstateDataStore] | 63 | [EstateDataStore] |
64 | LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataService" | 64 | LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService" |
65 | 65 | ||
66 | [AssetService] | 66 | [AssetService] |
67 | LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" | 67 | LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" |
diff --git a/prebuild.xml b/prebuild.xml index 663d4da..771b7c7 100644 --- a/prebuild.xml +++ b/prebuild.xml | |||
@@ -839,6 +839,40 @@ | |||
839 | </Files> | 839 | </Files> |
840 | </Project> | 840 | </Project> |
841 | 841 | ||
842 | <Project frameworkVersion="v4_0" name="OpenSim.Services.SimulationService" path="OpenSim/Services/SimulationService" type="Library"> | ||
843 | <Configuration name="Debug"> | ||
844 | <Options> | ||
845 | <OutputPath>../../../bin/</OutputPath> | ||
846 | </Options> | ||
847 | </Configuration> | ||
848 | <Configuration name="Release"> | ||
849 | <Options> | ||
850 | <OutputPath>../../../bin/</OutputPath> | ||
851 | </Options> | ||
852 | </Configuration> | ||
853 | |||
854 | <ReferencePath>../../../bin/</ReferencePath> | ||
855 | <Reference name="System"/> | ||
856 | <Reference name="System.Core"/> | ||
857 | <Reference name="System.Web"/> | ||
858 | <Reference name="System.Xml"/> | ||
859 | <Reference name="System.Drawing"/> | ||
860 | <Reference name="OpenMetaverseTypes" path="../../../bin/"/> | ||
861 | <Reference name="OpenMetaverse" path="../../../bin/"/> | ||
862 | <Reference name="OpenSim.Data"/> | ||
863 | <Reference name="OpenSim.Framework"/> | ||
864 | <Reference name="OpenSim.Region.Framework"/> | ||
865 | <Reference name="OpenSim.Services.Base"/> | ||
866 | <Reference name="OpenSim.Services.Interfaces"/> | ||
867 | <Reference name="Nini" path="../../../bin/"/> | ||
868 | <Reference name="log4net" path="../../../bin/"/> | ||
869 | <Reference name="XMLRPC" path="../../../bin/"/> | ||
870 | |||
871 | <Files> | ||
872 | <Match pattern="*.cs" recurse="true"/> | ||
873 | </Files> | ||
874 | </Project> | ||
875 | |||
842 | <Project frameworkVersion="v4_0" name="OpenSim.Services.AssetService" path="OpenSim/Services/AssetService" type="Library"> | 876 | <Project frameworkVersion="v4_0" name="OpenSim.Services.AssetService" path="OpenSim/Services/AssetService" type="Library"> |
843 | <Configuration name="Debug"> | 877 | <Configuration name="Debug"> |
844 | <Options> | 878 | <Options> |
@@ -1000,6 +1034,35 @@ | |||
1000 | </Files> | 1034 | </Files> |
1001 | </Project> | 1035 | </Project> |
1002 | 1036 | ||
1037 | <Project frameworkVersion="v4_0" name="OpenSim.Services.EstateService" path="OpenSim/Services/EstateService" type="Library"> | ||
1038 | <Configuration name="Debug"> | ||
1039 | <Options> | ||
1040 | <OutputPath>../../../bin/</OutputPath> | ||
1041 | </Options> | ||
1042 | </Configuration> | ||
1043 | <Configuration name="Release"> | ||
1044 | <Options> | ||
1045 | <OutputPath>../../../bin/</OutputPath> | ||
1046 | </Options> | ||
1047 | </Configuration> | ||
1048 | |||
1049 | <ReferencePath>../../../bin/</ReferencePath> | ||
1050 | <Reference name="System"/> | ||
1051 | <Reference name="System.Core"/> | ||
1052 | <Reference name="OpenMetaverseTypes" path="../../../bin/"/> | ||
1053 | <Reference name="OpenMetaverse" path="../../../bin/"/> | ||
1054 | <Reference name="OpenSim.Framework"/> | ||
1055 | <Reference name="OpenSim.Services.Interfaces"/> | ||
1056 | <Reference name="OpenSim.Services.Base"/> | ||
1057 | <Reference name="OpenSim.Data"/> | ||
1058 | <Reference name="Nini" path="../../../bin/"/> | ||
1059 | <Reference name="log4net" path="../../../bin/"/> | ||
1060 | |||
1061 | <Files> | ||
1062 | <Match pattern="*.cs" recurse="true"/> | ||
1063 | </Files> | ||
1064 | </Project> | ||
1065 | |||
1003 | <Project frameworkVersion="v4_0" name="OpenSim.Services.PresenceService" path="OpenSim/Services/PresenceService" type="Library"> | 1066 | <Project frameworkVersion="v4_0" name="OpenSim.Services.PresenceService" path="OpenSim/Services/PresenceService" type="Library"> |
1004 | <Configuration name="Debug"> | 1067 | <Configuration name="Debug"> |
1005 | <Options> | 1068 | <Options> |