diff options
Diffstat (limited to 'OpenSim/ApplicationPlugins')
5 files changed, 221 insertions, 37 deletions
diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index fcb6991..1d63d26 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs | |||
@@ -115,6 +115,8 @@ namespace OpenSim.ApplicationPlugins.LoadRegions | |||
115 | Environment.Exit(1); | 115 | Environment.Exit(1); |
116 | } | 116 | } |
117 | 117 | ||
118 | List<IScene> createdScenes = new List<IScene>(); | ||
119 | |||
118 | for (int i = 0; i < regionsToLoad.Length; i++) | 120 | for (int i = 0; i < regionsToLoad.Length; i++) |
119 | { | 121 | { |
120 | IScene scene; | 122 | IScene scene; |
@@ -123,17 +125,22 @@ namespace OpenSim.ApplicationPlugins.LoadRegions | |||
123 | ")"); | 125 | ")"); |
124 | 126 | ||
125 | bool changed = m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]); | 127 | bool changed = m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]); |
128 | |||
126 | m_openSim.CreateRegion(regionsToLoad[i], true, out scene); | 129 | m_openSim.CreateRegion(regionsToLoad[i], true, out scene); |
130 | createdScenes.Add(scene); | ||
131 | |||
127 | if (changed) | 132 | if (changed) |
128 | regionsToLoad[i].EstateSettings.Save(); | 133 | regionsToLoad[i].EstateSettings.Save(); |
129 | 134 | } | |
130 | if (scene != null) | 135 | |
136 | foreach (IScene scene in createdScenes) | ||
137 | { | ||
138 | scene.Start(); | ||
139 | |||
140 | m_newRegionCreatedHandler = OnNewRegionCreated; | ||
141 | if (m_newRegionCreatedHandler != null) | ||
131 | { | 142 | { |
132 | m_newRegionCreatedHandler = OnNewRegionCreated; | 143 | m_newRegionCreatedHandler(scene); |
133 | if (m_newRegionCreatedHandler != null) | ||
134 | { | ||
135 | m_newRegionCreatedHandler(scene); | ||
136 | } | ||
137 | } | 144 | } |
138 | } | 145 | } |
139 | } | 146 | } |
diff --git a/OpenSim/ApplicationPlugins/LoadRegions/Properties/AssemblyInfo.cs b/OpenSim/ApplicationPlugins/LoadRegions/Properties/AssemblyInfo.cs index 1b6a3e1..4968e7b 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/Properties/AssemblyInfo.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/Properties/AssemblyInfo.cs | |||
@@ -62,4 +62,4 @@ using System.Runtime.InteropServices; | |||
62 | // by using the '*' as shown below: | 62 | // by using the '*' as shown below: |
63 | // [assembly: AssemblyVersion("0.7.6.*")] | 63 | // [assembly: AssemblyVersion("0.7.6.*")] |
64 | 64 | ||
65 | [assembly : AssemblyVersion("0.7.6.*")] | 65 | [assembly : AssemblyVersion("0.8.0.*")] |
diff --git a/OpenSim/ApplicationPlugins/RegionModulesController/Properties/AssemblyInfo.cs b/OpenSim/ApplicationPlugins/RegionModulesController/Properties/AssemblyInfo.cs index 5683a72..ddef158 100644 --- a/OpenSim/ApplicationPlugins/RegionModulesController/Properties/AssemblyInfo.cs +++ b/OpenSim/ApplicationPlugins/RegionModulesController/Properties/AssemblyInfo.cs | |||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices; | |||
29 | // Build Number | 29 | // Build Number |
30 | // Revision | 30 | // Revision |
31 | // | 31 | // |
32 | [assembly: AssemblyVersion("0.7.6.*")] | 32 | [assembly: AssemblyVersion("0.8.0.*")] |
33 | 33 | ||
diff --git a/OpenSim/ApplicationPlugins/RemoteController/Properties/AssemblyInfo.cs b/OpenSim/ApplicationPlugins/RemoteController/Properties/AssemblyInfo.cs index a9d3f74..dd34cc8 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/Properties/AssemblyInfo.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/Properties/AssemblyInfo.cs | |||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices; | |||
29 | // Build Number | 29 | // Build Number |
30 | // Revision | 30 | // Revision |
31 | // | 31 | // |
32 | [assembly: AssemblyVersion("0.7.6.*")] | 32 | [assembly: AssemblyVersion("0.8.0.*")] |
33 | 33 | ||
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index d2a5c43..4c05ec8 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections; | 29 | using System.Collections; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Globalization; | ||
31 | using System.IO; | 32 | using System.IO; |
32 | using System.Xml; | 33 | using System.Xml; |
33 | using System.Net; | 34 | using System.Net; |
@@ -51,6 +52,7 @@ using OpenSim.Services.Interfaces; | |||
51 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; | 52 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; |
52 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 53 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
53 | using PermissionMask = OpenSim.Framework.PermissionMask; | 54 | using PermissionMask = OpenSim.Framework.PermissionMask; |
55 | using RegionInfo = OpenSim.Framework.RegionInfo; | ||
54 | 56 | ||
55 | namespace OpenSim.ApplicationPlugins.RemoteController | 57 | namespace OpenSim.ApplicationPlugins.RemoteController |
56 | { | 58 | { |
@@ -149,6 +151,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
149 | availableMethods["admin_create_user_email"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcCreateUserMethod); | 151 | availableMethods["admin_create_user_email"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcCreateUserMethod); |
150 | availableMethods["admin_exists_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcUserExistsMethod); | 152 | availableMethods["admin_exists_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcUserExistsMethod); |
151 | availableMethods["admin_update_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcUpdateUserAccountMethod); | 153 | availableMethods["admin_update_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcUpdateUserAccountMethod); |
154 | availableMethods["admin_authenticate_user"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAuthenticateUserMethod); | ||
152 | 155 | ||
153 | // Region state management | 156 | // Region state management |
154 | availableMethods["admin_load_xml"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcLoadXMLMethod); | 157 | availableMethods["admin_load_xml"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcLoadXMLMethod); |
@@ -161,6 +164,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
161 | availableMethods["admin_acl_add"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListAdd); | 164 | availableMethods["admin_acl_add"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListAdd); |
162 | availableMethods["admin_acl_remove"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListRemove); | 165 | availableMethods["admin_acl_remove"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListRemove); |
163 | availableMethods["admin_acl_list"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListList); | 166 | availableMethods["admin_acl_list"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcAccessListList); |
167 | availableMethods["admin_estate_reload"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcEstateReload); | ||
164 | 168 | ||
165 | // Misc | 169 | // Misc |
166 | availableMethods["admin_refresh_search"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRefreshSearch); | 170 | availableMethods["admin_refresh_search"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcRefreshSearch); |
@@ -439,18 +443,26 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
439 | // k, (string)requestData[k], ((string)requestData[k]).Length); | 443 | // k, (string)requestData[k], ((string)requestData[k]).Length); |
440 | // } | 444 | // } |
441 | 445 | ||
442 | CheckStringParameters(requestData, responseData, new string[] {"filename", "regionid"}); | 446 | CheckStringParameters(requestData, responseData, new string[] { "filename" }); |
443 | CheckRegionParams(requestData, responseData); | 447 | CheckRegionParams(requestData, responseData); |
444 | 448 | ||
445 | Scene scene = null; | 449 | Scene scene = null; |
446 | GetSceneFromRegionParams(requestData, responseData, out scene); | 450 | GetSceneFromRegionParams(requestData, responseData, out scene); |
447 | string file = (string)requestData["filename"]; | ||
448 | 451 | ||
449 | responseData["accepted"] = true; | 452 | if (scene != null) |
453 | { | ||
454 | string file = (string)requestData["filename"]; | ||
450 | 455 | ||
451 | LoadHeightmap(file, scene.RegionInfo.RegionID); | 456 | responseData["accepted"] = true; |
452 | 457 | ||
453 | responseData["success"] = true; | 458 | LoadHeightmap(file, scene.RegionInfo.RegionID); |
459 | |||
460 | responseData["success"] = true; | ||
461 | } | ||
462 | else | ||
463 | { | ||
464 | responseData["success"] = false; | ||
465 | } | ||
454 | 466 | ||
455 | m_log.Info("[RADMIN]: Load height maps request complete"); | 467 | m_log.Info("[RADMIN]: Load height maps request complete"); |
456 | } | 468 | } |
@@ -464,23 +476,30 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
464 | 476 | ||
465 | // m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString()); | 477 | // m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString()); |
466 | 478 | ||
467 | CheckStringParameters(requestData, responseData, new string[] { "filename", "regionid" }); | 479 | CheckStringParameters(requestData, responseData, new string[] { "filename" }); |
468 | CheckRegionParams(requestData, responseData); | 480 | CheckRegionParams(requestData, responseData); |
469 | 481 | ||
470 | Scene region = null; | 482 | Scene scene = null; |
471 | GetSceneFromRegionParams(requestData, responseData, out region); | 483 | GetSceneFromRegionParams(requestData, responseData, out scene); |
472 | 484 | ||
473 | string file = (string)requestData["filename"]; | 485 | if (scene != null) |
474 | m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file); | 486 | { |
487 | string file = (string)requestData["filename"]; | ||
488 | m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file); | ||
475 | 489 | ||
476 | responseData["accepted"] = true; | 490 | responseData["accepted"] = true; |
477 | 491 | ||
478 | ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>(); | 492 | ITerrainModule terrainModule = scene.RequestModuleInterface<ITerrainModule>(); |
479 | if (null == terrainModule) throw new Exception("terrain module not available"); | 493 | if (null == terrainModule) throw new Exception("terrain module not available"); |
480 | 494 | ||
481 | terrainModule.SaveToFile(file); | 495 | terrainModule.SaveToFile(file); |
482 | 496 | ||
483 | responseData["success"] = true; | 497 | responseData["success"] = true; |
498 | } | ||
499 | else | ||
500 | { | ||
501 | responseData["success"] = false; | ||
502 | } | ||
484 | 503 | ||
485 | m_log.Info("[RADMIN]: Save height maps request complete"); | 504 | m_log.Info("[RADMIN]: Save height maps request complete"); |
486 | } | 505 | } |
@@ -832,6 +851,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
832 | 851 | ||
833 | IScene newScene; | 852 | IScene newScene; |
834 | m_application.CreateRegion(region, out newScene); | 853 | m_application.CreateRegion(region, out newScene); |
854 | newScene.Start(); | ||
835 | 855 | ||
836 | // If an access specification was provided, use it. | 856 | // If an access specification was provided, use it. |
837 | // Otherwise accept the default. | 857 | // Otherwise accept the default. |
@@ -1226,7 +1246,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1226 | { | 1246 | { |
1227 | GridUserInfo userInfo = m_application.SceneManager.CurrentOrFirstScene.GridUserService.GetGridUserInfo(account.PrincipalID.ToString()); | 1247 | GridUserInfo userInfo = m_application.SceneManager.CurrentOrFirstScene.GridUserService.GetGridUserInfo(account.PrincipalID.ToString()); |
1228 | if (userInfo != null) | 1248 | if (userInfo != null) |
1229 | responseData["lastlogin"] = userInfo.Login; | 1249 | responseData["lastlogin"] = Util.ToUnixTime(userInfo.Login); |
1230 | else | 1250 | else |
1231 | responseData["lastlogin"] = 0; | 1251 | responseData["lastlogin"] = 0; |
1232 | 1252 | ||
@@ -1396,6 +1416,139 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1396 | } | 1416 | } |
1397 | 1417 | ||
1398 | /// <summary> | 1418 | /// <summary> |
1419 | /// Authenticate an user. | ||
1420 | /// <summary> | ||
1421 | /// <param name="request">incoming XML RPC request</param> | ||
1422 | /// <remarks> | ||
1423 | /// XmlRpcAuthenticateUserMethod takes the following XMLRPC | ||
1424 | /// parameters | ||
1425 | /// <list type="table"> | ||
1426 | /// <listheader><term>parameter name</term><description>description</description></listheader> | ||
1427 | /// <item><term>password</term> | ||
1428 | /// <description>admin password as set in OpenSim.ini</description></item> | ||
1429 | /// <item><term>user_firstname</term> | ||
1430 | /// <description>avatar's first name</description></item> | ||
1431 | /// <item><term>user_lastname</term> | ||
1432 | /// <description>avatar's last name</description></item> | ||
1433 | /// <item><term>user_password</term> | ||
1434 | /// <description>MD5 hash of avatar's password</description></item> | ||
1435 | /// <item><term>token_lifetime</term> | ||
1436 | /// <description>the lifetime of the returned token (upper bounded to 30s)</description></item> | ||
1437 | /// </list> | ||
1438 | /// | ||
1439 | /// XmlRpcAuthenticateUserMethod returns | ||
1440 | /// <list type="table"> | ||
1441 | /// <listheader><term>name</term><description>description</description></listheader> | ||
1442 | /// <item><term>success</term> | ||
1443 | /// <description>true or false</description></item> | ||
1444 | /// <item><term>token</term> | ||
1445 | /// <description>the authentication token sent by OpenSim</description></item> | ||
1446 | /// <item><term>error</term> | ||
1447 | /// <description>error message if success is false</description></item> | ||
1448 | /// </list> | ||
1449 | /// </remarks> | ||
1450 | private void XmlRpcAuthenticateUserMethod(XmlRpcRequest request, XmlRpcResponse response, | ||
1451 | IPEndPoint remoteClient) | ||
1452 | { | ||
1453 | m_log.Info("[RADMIN]: AuthenticateUser: new request"); | ||
1454 | |||
1455 | var responseData = (Hashtable)response.Value; | ||
1456 | var requestData = (Hashtable)request.Params[0]; | ||
1457 | |||
1458 | lock (m_requestLock) | ||
1459 | { | ||
1460 | try | ||
1461 | { | ||
1462 | CheckStringParameters(requestData, responseData, new[] | ||
1463 | { | ||
1464 | "user_firstname", | ||
1465 | "user_lastname", | ||
1466 | "user_password", | ||
1467 | "token_lifetime" | ||
1468 | }); | ||
1469 | |||
1470 | var firstName = (string)requestData["user_firstname"]; | ||
1471 | var lastName = (string)requestData["user_lastname"]; | ||
1472 | var password = (string)requestData["user_password"]; | ||
1473 | |||
1474 | var scene = m_application.SceneManager.CurrentOrFirstScene; | ||
1475 | |||
1476 | if (scene.Equals(null)) | ||
1477 | { | ||
1478 | m_log.Debug("scene does not exist"); | ||
1479 | throw new Exception("Scene does not exist."); | ||
1480 | } | ||
1481 | |||
1482 | var scopeID = scene.RegionInfo.ScopeID; | ||
1483 | var account = scene.UserAccountService.GetUserAccount(scopeID, firstName, lastName); | ||
1484 | |||
1485 | if (account.Equals(null) || account.PrincipalID.Equals(UUID.Zero)) | ||
1486 | { | ||
1487 | m_log.DebugFormat("avatar {0} {1} does not exist", firstName, lastName); | ||
1488 | throw new Exception(String.Format("avatar {0} {1} does not exist", firstName, lastName)); | ||
1489 | } | ||
1490 | |||
1491 | if (String.IsNullOrEmpty(password)) | ||
1492 | { | ||
1493 | m_log.DebugFormat("[RADMIN]: AuthenticateUser: no password provided for {0} {1}", firstName, | ||
1494 | lastName); | ||
1495 | throw new Exception(String.Format("no password provided for {0} {1}", firstName, | ||
1496 | lastName)); | ||
1497 | } | ||
1498 | |||
1499 | int lifetime; | ||
1500 | if (int.TryParse((string)requestData["token_lifetime"], NumberStyles.Integer, CultureInfo.InvariantCulture, out lifetime) == false) | ||
1501 | { | ||
1502 | m_log.DebugFormat("[RADMIN]: AuthenticateUser: no token lifetime provided for {0} {1}", firstName, | ||
1503 | lastName); | ||
1504 | throw new Exception(String.Format("no token lifetime provided for {0} {1}", firstName, | ||
1505 | lastName)); | ||
1506 | } | ||
1507 | |||
1508 | // Upper bound on lifetime set to 30s. | ||
1509 | if (lifetime > 30) | ||
1510 | { | ||
1511 | m_log.DebugFormat("[RADMIN]: AuthenticateUser: token lifetime longer than 30s for {0} {1}", firstName, | ||
1512 | lastName); | ||
1513 | throw new Exception(String.Format("token lifetime longer than 30s for {0} {1}", firstName, | ||
1514 | lastName)); | ||
1515 | } | ||
1516 | |||
1517 | var authModule = scene.RequestModuleInterface<IAuthenticationService>(); | ||
1518 | if (authModule == null) | ||
1519 | { | ||
1520 | m_log.Debug("[RADMIN]: AuthenticateUser: no authentication module loded"); | ||
1521 | throw new Exception("no authentication module loaded"); | ||
1522 | } | ||
1523 | |||
1524 | var token = authModule.Authenticate(account.PrincipalID, password, lifetime); | ||
1525 | if (String.IsNullOrEmpty(token)) | ||
1526 | { | ||
1527 | m_log.DebugFormat("[RADMIN]: AuthenticateUser: authentication failed for {0} {1}", firstName, | ||
1528 | lastName); | ||
1529 | throw new Exception(String.Format("authentication failed for {0} {1}", firstName, | ||
1530 | lastName)); | ||
1531 | } | ||
1532 | |||
1533 | m_log.DebugFormat("[RADMIN]: AuthenticateUser: account for user {0} {1} identified with token {2}", | ||
1534 | firstName, lastName, token); | ||
1535 | |||
1536 | responseData["token"] = token; | ||
1537 | responseData["success"] = true; | ||
1538 | |||
1539 | } | ||
1540 | catch (Exception e) | ||
1541 | { | ||
1542 | responseData["success"] = false; | ||
1543 | responseData["error"] = e.Message; | ||
1544 | throw e; | ||
1545 | } | ||
1546 | |||
1547 | m_log.Info("[RADMIN]: AuthenticateUser: request complete"); | ||
1548 | } | ||
1549 | } | ||
1550 | |||
1551 | /// <summary> | ||
1399 | /// Load an OAR file into a region.. | 1552 | /// Load an OAR file into a region.. |
1400 | /// <summary> | 1553 | /// <summary> |
1401 | /// <param name="request">incoming XML RPC request</param> | 1554 | /// <param name="request">incoming XML RPC request</param> |
@@ -1523,7 +1676,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1523 | /// </remarks> | 1676 | /// </remarks> |
1524 | private void XmlRpcSaveOARMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | 1677 | private void XmlRpcSaveOARMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
1525 | { | 1678 | { |
1526 | m_log.Info("[RADMIN]: Received Save OAR Administrator Request"); | 1679 | m_log.Info("[RADMIN]: Received Save OAR Request"); |
1527 | 1680 | ||
1528 | Hashtable responseData = (Hashtable)response.Value; | 1681 | Hashtable responseData = (Hashtable)response.Value; |
1529 | Hashtable requestData = (Hashtable)request.Params[0]; | 1682 | Hashtable requestData = (Hashtable)request.Params[0]; |
@@ -1569,8 +1722,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1569 | 1722 | ||
1570 | if (archiver != null) | 1723 | if (archiver != null) |
1571 | { | 1724 | { |
1725 | Guid requestId = Guid.NewGuid(); | ||
1572 | scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted; | 1726 | scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted; |
1573 | archiver.ArchiveRegion(filename, options); | 1727 | |
1728 | m_log.InfoFormat( | ||
1729 | "[RADMIN]: Submitting save OAR request for {0} to file {1}, request ID {2}", | ||
1730 | scene.Name, filename, requestId); | ||
1731 | |||
1732 | archiver.ArchiveRegion(filename, requestId, options); | ||
1574 | 1733 | ||
1575 | lock (m_saveOarLock) | 1734 | lock (m_saveOarLock) |
1576 | Monitor.Wait(m_saveOarLock,5000); | 1735 | Monitor.Wait(m_saveOarLock,5000); |
@@ -1591,12 +1750,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1591 | throw e; | 1750 | throw e; |
1592 | } | 1751 | } |
1593 | 1752 | ||
1594 | m_log.Info("[RADMIN]: Save OAR Administrator Request complete"); | 1753 | m_log.Info("[RADMIN]: Save OAR Request complete"); |
1595 | } | 1754 | } |
1596 | 1755 | ||
1597 | private void RemoteAdminOarSaveCompleted(Guid uuid, string name) | 1756 | private void RemoteAdminOarSaveCompleted(Guid uuid, string name) |
1598 | { | 1757 | { |
1599 | m_log.DebugFormat("[RADMIN]: File processing complete for {0}", name); | 1758 | if (name != "") |
1759 | m_log.ErrorFormat("[RADMIN]: Saving of OAR file with request ID {0} failed with message {1}", uuid, name); | ||
1760 | else | ||
1761 | m_log.DebugFormat("[RADMIN]: Saved OAR file for request {0}", uuid); | ||
1762 | |||
1600 | lock (m_saveOarLock) | 1763 | lock (m_saveOarLock) |
1601 | Monitor.Pulse(m_saveOarLock); | 1764 | Monitor.Pulse(m_saveOarLock); |
1602 | } | 1765 | } |
@@ -1903,6 +2066,22 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1903 | m_log.Info("[RADMIN]: Access List List Request complete"); | 2066 | m_log.Info("[RADMIN]: Access List List Request complete"); |
1904 | } | 2067 | } |
1905 | 2068 | ||
2069 | private void XmlRpcEstateReload(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | ||
2070 | { | ||
2071 | m_log.Info("[RADMIN]: Received Estate Reload Request"); | ||
2072 | |||
2073 | Hashtable responseData = (Hashtable)response.Value; | ||
2074 | // Hashtable requestData = (Hashtable)request.Params[0]; | ||
2075 | |||
2076 | m_application.SceneManager.ForEachScene(s => | ||
2077 | s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false) | ||
2078 | ); | ||
2079 | |||
2080 | responseData["success"] = true; | ||
2081 | |||
2082 | m_log.Info("[RADMIN]: Estate Reload Request complete"); | ||
2083 | } | ||
2084 | |||
1906 | private void XmlRpcGetAgentsMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | 2085 | private void XmlRpcGetAgentsMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
1907 | { | 2086 | { |
1908 | Hashtable responseData = (Hashtable)response.Value; | 2087 | Hashtable responseData = (Hashtable)response.Value; |
@@ -2792,13 +2971,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2792 | { | 2971 | { |
2793 | if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) | 2972 | if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) |
2794 | { | 2973 | { |
2795 | if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) | 2974 | uint perms = item.CurrentPermissions; |
2796 | item.CurrentPermissions &= ~(uint)PermissionMask.Copy; | 2975 | PermissionsUtil.ApplyFoldedPermissions(item.CurrentPermissions, ref perms); |
2797 | if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0) | 2976 | item.CurrentPermissions = perms; |
2798 | item.CurrentPermissions &= ~(uint)PermissionMask.Transfer; | ||
2799 | if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0) | ||
2800 | item.CurrentPermissions &= ~(uint)PermissionMask.Modify; | ||
2801 | } | 2977 | } |
2978 | |||
2802 | item.CurrentPermissions &= item.NextPermissions; | 2979 | item.CurrentPermissions &= item.NextPermissions; |
2803 | item.BasePermissions &= item.NextPermissions; | 2980 | item.BasePermissions &= item.NextPermissions; |
2804 | item.EveryOnePermissions &= item.NextPermissions; | 2981 | item.EveryOnePermissions &= item.NextPermissions; |