diff options
Diffstat (limited to 'OpenGridServices.GridServer/SimProfiles.cs')
-rw-r--r-- | OpenGridServices.GridServer/SimProfiles.cs | 128 |
1 files changed, 57 insertions, 71 deletions
diff --git a/OpenGridServices.GridServer/SimProfiles.cs b/OpenGridServices.GridServer/SimProfiles.cs index fd4ba99..9e93db0 100644 --- a/OpenGridServices.GridServer/SimProfiles.cs +++ b/OpenGridServices.GridServer/SimProfiles.cs | |||
@@ -186,85 +186,71 @@ namespace OpenGridServices.GridServer | |||
186 | 186 | ||
187 | public string RestSetSimMethod(string request, string path, string param) | 187 | public string RestSetSimMethod(string request, string path, string param) |
188 | { | 188 | { |
189 | string respstring = String.Empty; | 189 | Console.WriteLine("SimProfiles.cs:RestSetSimMethod() - processing request......"); |
190 | |||
191 | SimProfileBase TheSim; | 190 | SimProfileBase TheSim; |
192 | LLUUID UUID = new LLUUID(param); | 191 | LLUUID UUID = new LLUUID(param); |
193 | TheSim = GetProfileByLLUUID(UUID); | 192 | TheSim = GetProfileByLLUUID(UUID); |
194 | 193 | if ((TheSim) == null) TheSim = new SimProfileBase(); | |
195 | if (!(TheSim == null)) | 194 | |
196 | { | 195 | XmlDocument doc = new XmlDocument(); |
197 | Console.WriteLine("Updating sim details....."); | 196 | doc.LoadXml(request); |
198 | XmlDocument doc = new XmlDocument(); | 197 | XmlNode authkeynode = doc.FirstChild; |
199 | doc.LoadXml(request); | 198 | if (authkeynode.Name != "authkey") |
200 | XmlNode authkeynode = doc.FirstChild; | ||
201 | if (authkeynode.Name != "authkey") | ||
202 | { | 199 | { |
203 | respstring = "ERROR! bad XML - expected authkey tag"; | 200 | return "ERROR! bad XML - expected authkey tag"; |
204 | } | 201 | } |
205 | else | ||
206 | { | ||
207 | XmlNode simnode = doc.ChildNodes[1]; | ||
208 | if (simnode.Name != "sim") | ||
209 | { | ||
210 | respstring = "ERROR! bad XML - expected sim tag"; | ||
211 | } | ||
212 | else | ||
213 | { | ||
214 | if (authkeynode.Name != m_gridManager.SimRecvKey) | ||
215 | { | ||
216 | respstring = "ERROR! invalid key"; | ||
217 | } | ||
218 | else | ||
219 | { | ||
220 | if (TheSim == null) | ||
221 | { | ||
222 | respstring = "ERROR! sim not found"; | ||
223 | } | ||
224 | else | ||
225 | { | ||
226 | for (int i = 0; i <= simnode.ChildNodes.Count; i++) | ||
227 | { | ||
228 | switch (simnode.ChildNodes[i].Name) | ||
229 | { | ||
230 | case "uuid": | ||
231 | // should a sim be able to update it's own UUID? To be decided | ||
232 | // watch next week for the exciting conclusion in "the adventures of OpenGridServices.GridServer/GridHttp.cs:ParseREST() at line 190! | ||
233 | break; // and line 190's arch-enemy - THE BREAK STATEMENT! OH NOES!!!!! (this code written at 6:57AM, no sleep, lots of caffeine) | ||
234 | |||
235 | case "regionname": | ||
236 | TheSim.regionname = simnode.ChildNodes[i].InnerText; | ||
237 | break; | ||
238 | 202 | ||
239 | case "sim_ip": | 203 | XmlNode simnode = doc.ChildNodes[1]; |
240 | TheSim.sim_ip = simnode.ChildNodes[i].InnerText; | 204 | if (simnode.Name != "sim") |
241 | break; | 205 | { |
242 | 206 | return "ERROR! bad XML - expected sim tag"; | |
243 | case "sim_port": | ||
244 | TheSim.sim_port = Convert.ToUInt32(simnode.ChildNodes[i].InnerText); | ||
245 | break; | ||
246 | |||
247 | case "region_locx": | ||
248 | TheSim.RegionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText); | ||
249 | TheSim.regionhandle = Helpers.UIntsToLong((TheSim.RegionLocX * 256), (TheSim.RegionLocY * 256)); | ||
250 | break; | ||
251 | |||
252 | case "region_locy": | ||
253 | TheSim.RegionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText); | ||
254 | TheSim.regionhandle = Helpers.UIntsToLong((TheSim.RegionLocX * 256), (TheSim.RegionLocY * 256)); | ||
255 | break; | ||
256 | } | ||
257 | } | ||
258 | respstring = "OK"; | ||
259 | } | ||
260 | } | ||
261 | } | ||
262 | } | 207 | } |
263 | } | 208 | |
264 | 209 | if (authkeynode.InnerText != m_gridManager.SimRecvKey) | |
265 | return respstring; | 210 | { |
211 | return "ERROR! invalid key"; | ||
212 | } | ||
213 | |||
214 | for (int i = 0; i <= simnode.ChildNodes.Count; i++) { | ||
215 | switch (simnode.ChildNodes[i].Name) { | ||
216 | case "regionname": | ||
217 | TheSim.regionname = simnode.ChildNodes[i].InnerText; | ||
218 | break; | ||
219 | |||
220 | case "sim_ip": | ||
221 | TheSim.sim_ip = simnode.ChildNodes[i].InnerText; | ||
222 | break; | ||
223 | |||
224 | case "sim_port": | ||
225 | TheSim.sim_port = Convert.ToUInt32(simnode.ChildNodes[i].InnerText); | ||
226 | break; | ||
227 | |||
228 | case "region_locx": | ||
229 | TheSim.RegionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText); | ||
230 | TheSim.regionhandle = Helpers.UIntsToLong((TheSim.RegionLocX * 256), (TheSim.RegionLocY * 256)); | ||
231 | break; | ||
232 | |||
233 | case "region_locy": | ||
234 | TheSim.RegionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText); | ||
235 | TheSim.regionhandle = Helpers.UIntsToLong((TheSim.RegionLocX * 256), (TheSim.RegionLocY * 256)); | ||
236 | break; | ||
237 | } | ||
238 | } | ||
239 | return "OK"; | ||
266 | } | 240 | } |
267 | 241 | ||
242 | public string RestGetRegionMethod(string request, string path, string param ) | ||
243 | { | ||
244 | SimProfileBase TheSim = GetProfileByHandle((ulong)Convert.ToUInt64(param)); | ||
245 | return RestGetSimMethod("", "/sims/", param); | ||
246 | } | ||
247 | |||
248 | public string RestSetRegionMethod(string request, string path, string param ) | ||
249 | { | ||
250 | SimProfileBase TheSim = GetProfileByHandle((ulong)Convert.ToUInt64(param)); | ||
251 | return RestSetSimMethod("", "/sims/", param); | ||
252 | } | ||
253 | |||
268 | public string RestGetSimMethod(string request, string path, string param ) | 254 | public string RestGetSimMethod(string request, string path, string param ) |
269 | { | 255 | { |
270 | string respstring = String.Empty; | 256 | string respstring = String.Empty; |