aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Grid/GridServer/GridManager.cs166
1 files changed, 82 insertions, 84 deletions
diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs
index 5ea2a3a..3597792 100644
--- a/OpenSim/Grid/GridServer/GridManager.cs
+++ b/OpenSim/Grid/GridServer/GridManager.cs
@@ -234,17 +234,15 @@ namespace OpenSim.Grid.GridServer
234 Hashtable responseData = new Hashtable(); 234 Hashtable responseData = new Hashtable();
235 response.Value = responseData; 235 response.Value = responseData;
236 236
237 RegionProfileData TheSim = null; 237 RegionProfileData sim;
238 RegionProfileData OldSim = null; 238 RegionProfileData existingSim;
239 239
240 Hashtable requestData = (Hashtable)request.Params[0]; 240 Hashtable requestData = (Hashtable)request.Params[0];
241 string myword; 241 string myword;
242 LLUUID uuid; 242 LLUUID uuid;
243 if (requestData.ContainsKey("UUID") && LLUUID.TryParse((string)requestData["UUID"], out uuid)) 243 if (requestData.ContainsKey("UUID") && LLUUID.TryParse((string)requestData["UUID"], out uuid))
244 { 244 {
245 TheSim = getRegion(uuid); 245 sim = getRegion(uuid);
246
247 // logToDB((new LLUUID((string)requestData["UUID"])).ToString(),"XmlRpcSimulatorLoginMethod",String.Empty, 5,"Region attempting login with UUID.");
248 } 246 }
249 else 247 else
250 { 248 {
@@ -253,7 +251,7 @@ namespace OpenSim.Grid.GridServer
253 return response; 251 return response;
254 } 252 }
255 253
256 if (TheSim == null) // Shouldnt this be in the REST Simulator Set method? 254 if (sim == null) // Shouldnt this be in the REST Simulator Set method?
257 { 255 {
258 m_log.Info("[GRID]: New region connecting"); 256 m_log.Info("[GRID]: New region connecting");
259 myword = "creation"; 257 myword = "creation";
@@ -263,28 +261,28 @@ namespace OpenSim.Grid.GridServer
263 myword = "connection"; 261 myword = "connection";
264 } 262 }
265 263
266 TheSim = new RegionProfileData(); 264 sim = new RegionProfileData();
267 265
268 TheSim.regionRecvKey = String.Empty; 266 sim.regionRecvKey = String.Empty;
269 TheSim.regionSendKey = String.Empty; 267 sim.regionSendKey = String.Empty;
270 TheSim.regionSecret = config.SimRecvKey; 268 sim.regionSecret = config.SimRecvKey;
271 TheSim.regionDataURI = String.Empty; 269 sim.regionDataURI = String.Empty;
272 TheSim.regionAssetURI = config.DefaultAssetServer; 270 sim.regionAssetURI = config.DefaultAssetServer;
273 TheSim.regionAssetRecvKey = config.AssetRecvKey; 271 sim.regionAssetRecvKey = config.AssetRecvKey;
274 TheSim.regionAssetSendKey = config.AssetSendKey; 272 sim.regionAssetSendKey = config.AssetSendKey;
275 TheSim.regionUserURI = config.DefaultUserServer; 273 sim.regionUserURI = config.DefaultUserServer;
276 TheSim.regionUserSendKey = config.UserSendKey; 274 sim.regionUserSendKey = config.UserSendKey;
277 TheSim.regionUserRecvKey = config.UserRecvKey; 275 sim.regionUserRecvKey = config.UserRecvKey;
278 276
279 try 277 try
280 { 278 {
281 TheSim.serverIP = (string)requestData["sim_ip"]; 279 sim.serverIP = (string)requestData["sim_ip"];
282 TheSim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]); 280 sim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]);
283 TheSim.httpPort = Convert.ToUInt32((string)requestData["http_port"]); 281 sim.httpPort = Convert.ToUInt32((string)requestData["http_port"]);
284 TheSim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]); 282 sim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]);
285 TheSim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]); 283 sim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]);
286 TheSim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]); 284 sim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]);
287 TheSim.regionLocZ = 0; 285 sim.regionLocZ = 0;
288 } 286 }
289 catch (FormatException) 287 catch (FormatException)
290 { 288 {
@@ -294,7 +292,7 @@ namespace OpenSim.Grid.GridServer
294 } 292 }
295 LLUUID textureID = LLUUID.Zero; 293 LLUUID textureID = LLUUID.Zero;
296 if (LLUUID.TryParse((string)requestData["map-image-id"], out textureID)) 294 if (LLUUID.TryParse((string)requestData["map-image-id"], out textureID))
297 TheSim.regionMapTextureID = textureID; 295 sim.regionMapTextureID = textureID;
298 296
299 // part of an initial brutish effort to provide accurate information (as per the xml region spec) 297 // part of an initial brutish effort to provide accurate information (as per the xml region spec)
300 // wrt the ownership of a given region 298 // wrt the ownership of a given region
@@ -304,48 +302,48 @@ namespace OpenSim.Grid.GridServer
304 // 302 //
305 // this particular section of the mod attempts to receive a value from the region's xml file by way of 303 // this particular section of the mod attempts to receive a value from the region's xml file by way of
306 // OSG1GridServices for the region's owner 304 // OSG1GridServices for the region's owner
307 TheSim.owner_uuid = (string)requestData["master_avatar_uuid"]; 305 sim.owner_uuid = (string)requestData["master_avatar_uuid"];
308 306
309 try 307 try
310 { 308 {
311 TheSim.regionRecvKey = (string)requestData["recvkey"]; 309 sim.regionRecvKey = (string)requestData["recvkey"];
312 TheSim.regionSendKey = (string)requestData["authkey"]; 310 sim.regionSendKey = (string)requestData["authkey"];
313 } 311 }
314 catch (KeyNotFoundException) { } 312 catch (KeyNotFoundException) { }
315 313
316 TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * Constants.RegionSize), (TheSim.regionLocY * Constants.RegionSize)); 314 sim.regionHandle = Helpers.UIntsToLong((sim.regionLocX * Constants.RegionSize), (sim.regionLocY * Constants.RegionSize));
317 TheSim.serverURI = (string)requestData["server_uri"]; 315 sim.serverURI = (string)requestData["server_uri"];
318 Console.WriteLine("adding region " + TheSim.regionLocX + " , " + TheSim.regionLocY + " , " + 316 Console.WriteLine("adding region " + sim.regionLocX + " , " + sim.regionLocY + " , " +
319 TheSim.serverURI); 317 sim.serverURI);
320 318
321 TheSim.httpServerURI = "http://" + TheSim.serverIP + ":" + TheSim.httpPort + "/"; 319 sim.httpServerURI = "http://" + sim.serverIP + ":" + sim.httpPort + "/";
322 320
323 TheSim.regionName = (string)requestData["sim_name"]; 321 sim.regionName = (string)requestData["sim_name"];
324 TheSim.UUID = new LLUUID((string)requestData["UUID"]); 322 sim.UUID = new LLUUID((string)requestData["UUID"]);
325 TheSim.originUUID = new LLUUID((string) requestData["originUUID"]); 323 sim.originUUID = new LLUUID((string) requestData["originUUID"]);
326 324
327 //make sure there is not an existing region at this location 325 //make sure there is not an existing region at this location
328 OldSim = getRegion(TheSim.regionHandle); 326 existingSim = getRegion(sim.regionHandle);
329 //if (OldSim == null || OldSim.UUID == TheSim.UUID) 327 //if (OldSim == null || OldSim.UUID == TheSim.UUID)
330 if (OldSim == null || OldSim.UUID == TheSim.UUID || TheSim.UUID != TheSim.originUUID) 328 if (existingSim == null || existingSim.UUID == sim.UUID || sim.UUID != sim.originUUID)
331 { 329 {
332 bool brandNew = ( OldSim == null && TheSim.regionRecvKey == config.SimSendKey && 330 bool brandNew = ( existingSim == null && sim.regionRecvKey == config.SimSendKey &&
333 TheSim.regionSendKey == config.SimRecvKey); 331 sim.regionSendKey == config.SimRecvKey);
334 332
335 bool overwritingOldOne = ( OldSim != null && OldSim.regionRecvKey == TheSim.regionRecvKey && 333 bool overwritingOldOne = ( existingSim != null && existingSim.regionRecvKey == sim.regionRecvKey &&
336 OldSim.regionSendKey == TheSim.regionSendKey ); 334 existingSim.regionSendKey == sim.regionSendKey );
337 335
338 if (brandNew) 336 if (brandNew)
339 { 337 {
340 m_log.Info("[GRID]: Adding region " + TheSim.regionLocX + " , " + TheSim.regionLocY + " , " + 338 m_log.Info("[GRID]: Adding region " + sim.regionLocX + " , " + sim.regionLocY + " , " +
341 TheSim.serverURI); 339 sim.serverURI);
342 } 340 }
343 341
344 if (overwritingOldOne) 342 if (overwritingOldOne)
345 { 343 {
346 m_log.Info("[GRID]: Overwriting region " + OldSim.regionLocX + " , " + OldSim.regionLocY + " , " + 344 m_log.Info("[GRID]: Overwriting region " + existingSim.regionLocX + " , " + existingSim.regionLocY + " , " +
347 OldSim.serverURI + " with " + TheSim.regionLocX + " , " + TheSim.regionLocY + " , " + 345 existingSim.serverURI + " with " + sim.regionLocX + " , " + sim.regionLocY + " , " +
348 TheSim.serverURI); 346 sim.serverURI);
349 } 347 }
350 348
351 if (brandNew || 349 if (brandNew ||
@@ -356,35 +354,35 @@ namespace OpenSim.Grid.GridServer
356 { 354 {
357 try 355 try
358 { 356 {
359 DataResponse insertResponse = kvp.Value.AddProfile(TheSim); 357 DataResponse insertResponse = kvp.Value.AddProfile(sim);
360 switch (insertResponse) 358 switch (insertResponse)
361 { 359 {
362 case DataResponse.RESPONSE_OK: 360 case DataResponse.RESPONSE_OK:
363 m_log.Info("[grid]: New sim " + myword + " successful: " + TheSim.regionName); 361 m_log.Info("[grid]: New sim " + myword + " successful: " + sim.regionName);
364 break; 362 break;
365 case DataResponse.RESPONSE_ERROR: 363 case DataResponse.RESPONSE_ERROR:
366 m_log.Warn("[storage]: New sim creation failed (Error): " + TheSim.regionName); 364 m_log.Warn("[storage]: New sim creation failed (Error): " + sim.regionName);
367 break; 365 break;
368 case DataResponse.RESPONSE_INVALIDCREDENTIALS: 366 case DataResponse.RESPONSE_INVALIDCREDENTIALS:
369 m_log.Warn("[storage]: " + 367 m_log.Warn("[storage]: " +
370 "New sim creation failed (Invalid Credentials): " + TheSim.regionName); 368 "New sim creation failed (Invalid Credentials): " + sim.regionName);
371 break; 369 break;
372 case DataResponse.RESPONSE_AUTHREQUIRED: 370 case DataResponse.RESPONSE_AUTHREQUIRED:
373 m_log.Warn("[storage]: " + 371 m_log.Warn("[storage]: " +
374 "New sim creation failed (Authentication Required): " + 372 "New sim creation failed (Authentication Required): " +
375 TheSim.regionName); 373 sim.regionName);
376 break; 374 break;
377 } 375 }
378 } 376 }
379 catch (Exception e) 377 catch (Exception e)
380 { 378 {
381 m_log.Warn("[storage]: " + 379 m_log.Warn("[storage]: " +
382 "Unable to add region " + TheSim.UUID.ToString() + " via " + kvp.Key); 380 "Unable to add region " + sim.UUID.ToString() + " via " + kvp.Key);
383 m_log.Warn("[storage]: " + e.ToString()); 381 m_log.Warn("[storage]: " + e.ToString());
384 } 382 }
385 383
386 384
387 if (getRegion(TheSim.regionHandle) == null) 385 if (getRegion(sim.regionHandle) == null)
388 { 386 {
389 responseData["error"] = "Unable to add new region"; 387 responseData["error"] = "Unable to add new region";
390 return response; 388 return response;
@@ -403,8 +401,8 @@ namespace OpenSim.Grid.GridServer
403 if (fastMode) 401 if (fastMode)
404 { 402 {
405 Dictionary<ulong, RegionProfileData> neighbours = 403 Dictionary<ulong, RegionProfileData> neighbours =
406 getRegions(TheSim.regionLocX - 1, TheSim.regionLocY - 1, TheSim.regionLocX + 1, 404 getRegions(sim.regionLocX - 1, sim.regionLocY - 1, sim.regionLocX + 1,
407 TheSim.regionLocY + 1); 405 sim.regionLocY + 1);
408 406
409 foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours) 407 foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours)
410 { 408 {
@@ -416,7 +414,7 @@ namespace OpenSim.Grid.GridServer
416 NeighbourBlock["UUID"] = aSim.Value.UUID.ToString(); 414 NeighbourBlock["UUID"] = aSim.Value.UUID.ToString();
417 NeighbourBlock["regionHandle"] = aSim.Value.regionHandle.ToString(); 415 NeighbourBlock["regionHandle"] = aSim.Value.regionHandle.ToString();
418 416
419 if (aSim.Value.UUID != TheSim.UUID) 417 if (aSim.Value.UUID != sim.UUID)
420 { 418 {
421 SimNeighboursData.Add(NeighbourBlock); 419 SimNeighboursData.Add(NeighbourBlock);
422 } 420 }
@@ -429,13 +427,13 @@ namespace OpenSim.Grid.GridServer
429 { 427 {
430 if ( 428 if (
431 getRegion( 429 getRegion(
432 Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * Constants.RegionSize), 430 Helpers.UIntsToLong((uint)((sim.regionLocX + x) * Constants.RegionSize),
433 (uint)(TheSim.regionLocY + y) * Constants.RegionSize)) != null) 431 (uint)(sim.regionLocY + y) * Constants.RegionSize)) != null)
434 { 432 {
435 neighbour = 433 neighbour =
436 getRegion( 434 getRegion(
437 Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * Constants.RegionSize), 435 Helpers.UIntsToLong((uint)((sim.regionLocX + x) * Constants.RegionSize),
438 (uint)(TheSim.regionLocY + y) * Constants.RegionSize)); 436 (uint)(sim.regionLocY + y) * Constants.RegionSize));
439 437
440 NeighbourBlock = new Hashtable(); 438 NeighbourBlock = new Hashtable();
441 NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(neighbour.serverIP).ToString(); 439 NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(neighbour.serverIP).ToString();
@@ -445,30 +443,30 @@ namespace OpenSim.Grid.GridServer
445 NeighbourBlock["UUID"] = neighbour.UUID.ToString(); 443 NeighbourBlock["UUID"] = neighbour.UUID.ToString();
446 NeighbourBlock["regionHandle"] = neighbour.regionHandle.ToString(); 444 NeighbourBlock["regionHandle"] = neighbour.regionHandle.ToString();
447 445
448 if (neighbour.UUID != TheSim.UUID) SimNeighboursData.Add(NeighbourBlock); 446 if (neighbour.UUID != sim.UUID) SimNeighboursData.Add(NeighbourBlock);
449 } 447 }
450 } 448 }
451 } 449 }
452 450
453 responseData["UUID"] = TheSim.UUID.ToString(); 451 responseData["UUID"] = sim.UUID.ToString();
454 responseData["region_locx"] = TheSim.regionLocX.ToString(); 452 responseData["region_locx"] = sim.regionLocX.ToString();
455 responseData["region_locy"] = TheSim.regionLocY.ToString(); 453 responseData["region_locy"] = sim.regionLocY.ToString();
456 responseData["regionname"] = TheSim.regionName; 454 responseData["regionname"] = sim.regionName;
457 responseData["estate_id"] = "1"; 455 responseData["estate_id"] = "1";
458 responseData["neighbours"] = SimNeighboursData; 456 responseData["neighbours"] = SimNeighboursData;
459 457
460 responseData["sim_ip"] = TheSim.serverIP; 458 responseData["sim_ip"] = sim.serverIP;
461 responseData["sim_port"] = TheSim.serverPort.ToString(); 459 responseData["sim_port"] = sim.serverPort.ToString();
462 responseData["asset_url"] = TheSim.regionAssetURI; 460 responseData["asset_url"] = sim.regionAssetURI;
463 responseData["asset_sendkey"] = TheSim.regionAssetSendKey; 461 responseData["asset_sendkey"] = sim.regionAssetSendKey;
464 responseData["asset_recvkey"] = TheSim.regionAssetRecvKey; 462 responseData["asset_recvkey"] = sim.regionAssetRecvKey;
465 responseData["user_url"] = TheSim.regionUserURI; 463 responseData["user_url"] = sim.regionUserURI;
466 responseData["user_sendkey"] = TheSim.regionUserSendKey; 464 responseData["user_sendkey"] = sim.regionUserSendKey;
467 responseData["user_recvkey"] = TheSim.regionUserRecvKey; 465 responseData["user_recvkey"] = sim.regionUserRecvKey;
468 responseData["authkey"] = TheSim.regionSecret; 466 responseData["authkey"] = sim.regionSecret;
469 467
470 // New! If set, use as URL to local sim storage (ie http://remotehost/region.yap) 468 // New! If set, use as URL to local sim storage (ie http://remotehost/region.yap)
471 responseData["data_uri"] = TheSim.regionDataURI; 469 responseData["data_uri"] = sim.regionDataURI;
472 470
473 responseData["allow_forceful_banlines"] = config.AllowForcefulBanlines; 471 responseData["allow_forceful_banlines"] = config.AllowForcefulBanlines;
474 472
@@ -490,17 +488,17 @@ namespace OpenSim.Grid.GridServer
490 } 488 }
491 else 489 else
492 { 490 {
493 if (OldSim == null) 491 if (existingSim == null)
494 { 492 {
495 m_log.Warn("[grid]: Authentication failed when trying to add new region " + TheSim.regionName + 493 m_log.Warn("[grid]: Authentication failed when trying to add new region " + sim.regionName +
496 " at location " + TheSim.regionLocX + 494 " at location " + sim.regionLocX +
497 " " + TheSim.regionLocY + " with TheSim.regionRecvKey " + TheSim.regionRecvKey + "(" + config.SimSendKey + ") and TheSim.regionRecvKey " + TheSim.regionSendKey + "(" + config.SimRecvKey + ") "); 495 " " + sim.regionLocY + " with TheSim.regionRecvKey " + sim.regionRecvKey + "(" + config.SimSendKey + ") and TheSim.regionRecvKey " + sim.regionSendKey + "(" + config.SimRecvKey + ") ");
498 } 496 }
499 else 497 else
500 { 498 {
501 m_log.Warn("[grid]: Authentication failed when trying to add new region " + TheSim.regionName + 499 m_log.Warn("[grid]: Authentication failed when trying to add new region " + sim.regionName +
502 " at location " + TheSim.regionLocX + 500 " at location " + sim.regionLocX +
503 " " + TheSim.regionLocY + " currently occupied by " + OldSim.regionName); 501 " " + sim.regionLocY + " currently occupied by " + existingSim.regionName);
504 } 502 }
505 503
506 responseData["error"] = 504 responseData["error"] =
@@ -510,7 +508,7 @@ namespace OpenSim.Grid.GridServer
510 } 508 }
511 else 509 else
512 { 510 {
513 m_log.Warn("[grid]: Failed to add new region " + TheSim.regionName + " at location " + TheSim.regionLocX + " " + TheSim.regionLocY + " currently occupied by " + OldSim.regionName); 511 m_log.Warn("[grid]: Failed to add new region " + sim.regionName + " at location " + sim.regionLocX + " " + sim.regionLocY + " currently occupied by " + existingSim.regionName);
514 responseData["error"] = "Another region already exists at that location. Try another"; 512 responseData["error"] = "Another region already exists at that location. Try another";
515 return response; 513 return response;
516 } 514 }