diff options
-rw-r--r-- | OpenSim/Addons/Groups/Service/GroupsService.cs | 14 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLOfflineIMData.cs | 7 | ||||
-rw-r--r-- | OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs | 2 | ||||
-rw-r--r-- | OpenSim/Server/Base/ServerUtils.cs | 1 | ||||
-rw-r--r-- | OpenSim/Services/HypergridService/GatekeeperService.cs | 25 | ||||
-rw-r--r-- | OpenSim/Services/Interfaces/IBansService.cs | 48 | ||||
-rw-r--r-- | OpenSim/Services/UserAccountService/GridUserService.cs | 2 |
7 files changed, 81 insertions, 18 deletions
diff --git a/OpenSim/Addons/Groups/Service/GroupsService.cs b/OpenSim/Addons/Groups/Service/GroupsService.cs index 0668870..6a4348b 100644 --- a/OpenSim/Addons/Groups/Service/GroupsService.cs +++ b/OpenSim/Addons/Groups/Service/GroupsService.cs | |||
@@ -723,12 +723,12 @@ namespace OpenSim.Groups | |||
723 | 723 | ||
724 | #region Actions without permission checks | 724 | #region Actions without permission checks |
725 | 725 | ||
726 | private void _AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID) | 726 | protected void _AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID) |
727 | { | 727 | { |
728 | _AddAgentToGroup(RequestingAgentID, AgentID, GroupID, RoleID, string.Empty); | 728 | _AddAgentToGroup(RequestingAgentID, AgentID, GroupID, RoleID, string.Empty); |
729 | } | 729 | } |
730 | 730 | ||
731 | public void _RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID) | 731 | protected void _RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID) |
732 | { | 732 | { |
733 | // 1. Delete membership | 733 | // 1. Delete membership |
734 | m_Database.DeleteMember(GroupID, AgentID); | 734 | m_Database.DeleteMember(GroupID, AgentID); |
@@ -780,7 +780,7 @@ namespace OpenSim.Groups | |||
780 | 780 | ||
781 | } | 781 | } |
782 | 782 | ||
783 | private bool _AddOrUpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, bool add) | 783 | protected bool _AddOrUpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, bool add) |
784 | { | 784 | { |
785 | RoleData data = m_Database.RetrieveRole(groupID, roleID); | 785 | RoleData data = m_Database.RetrieveRole(groupID, roleID); |
786 | 786 | ||
@@ -810,12 +810,12 @@ namespace OpenSim.Groups | |||
810 | return m_Database.StoreRole(data); | 810 | return m_Database.StoreRole(data); |
811 | } | 811 | } |
812 | 812 | ||
813 | private void _RemoveGroupRole(UUID groupID, UUID roleID) | 813 | protected void _RemoveGroupRole(UUID groupID, UUID roleID) |
814 | { | 814 | { |
815 | m_Database.DeleteRole(groupID, roleID); | 815 | m_Database.DeleteRole(groupID, roleID); |
816 | } | 816 | } |
817 | 817 | ||
818 | private void _AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID) | 818 | protected void _AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID) |
819 | { | 819 | { |
820 | RoleMembershipData data = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID); | 820 | RoleMembershipData data = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID); |
821 | if (data != null) | 821 | if (data != null) |
@@ -840,7 +840,7 @@ namespace OpenSim.Groups | |||
840 | 840 | ||
841 | } | 841 | } |
842 | 842 | ||
843 | private List<GroupRolesData> _GetGroupRoles(UUID groupID) | 843 | protected List<GroupRolesData> _GetGroupRoles(UUID groupID) |
844 | { | 844 | { |
845 | List<GroupRolesData> roles = new List<GroupRolesData>(); | 845 | List<GroupRolesData> roles = new List<GroupRolesData>(); |
846 | 846 | ||
@@ -865,7 +865,7 @@ namespace OpenSim.Groups | |||
865 | return roles; | 865 | return roles; |
866 | } | 866 | } |
867 | 867 | ||
868 | private List<ExtendedGroupRoleMembersData> _GetGroupRoleMembers(UUID GroupID, bool isInGroup) | 868 | protected List<ExtendedGroupRoleMembersData> _GetGroupRoleMembers(UUID GroupID, bool isInGroup) |
869 | { | 869 | { |
870 | List<ExtendedGroupRoleMembersData> rmembers = new List<ExtendedGroupRoleMembersData>(); | 870 | List<ExtendedGroupRoleMembersData> rmembers = new List<ExtendedGroupRoleMembersData>(); |
871 | 871 | ||
diff --git a/OpenSim/Data/MySQL/MySQLOfflineIMData.cs b/OpenSim/Data/MySQL/MySQLOfflineIMData.cs index 252f358..bafd204 100644 --- a/OpenSim/Data/MySQL/MySQLOfflineIMData.cs +++ b/OpenSim/Data/MySQL/MySQLOfflineIMData.cs | |||
@@ -47,13 +47,10 @@ namespace OpenSim.Data.MySQL | |||
47 | 47 | ||
48 | public void DeleteOld() | 48 | public void DeleteOld() |
49 | { | 49 | { |
50 | uint now = (uint)Util.UnixTimeSinceEpoch(); | ||
51 | |||
52 | using (MySqlCommand cmd = new MySqlCommand()) | 50 | using (MySqlCommand cmd = new MySqlCommand()) |
53 | { | 51 | { |
54 | cmd.CommandText = String.Format("delete from {0} where TMStamp < ?tstamp", m_Realm); | 52 | cmd.CommandText = String.Format("delete from {0} where TMStamp < NOW() - INTERVAL 2 WEEK", m_Realm); |
55 | cmd.Parameters.AddWithValue("?tstamp", now - 14 * 24 * 60 * 60); // > 2 weeks old | 53 | |
56 | |||
57 | ExecuteNonQuery(cmd); | 54 | ExecuteNonQuery(cmd); |
58 | } | 55 | } |
59 | 56 | ||
diff --git a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs index be020e4..17d1591 100644 --- a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs +++ b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs | |||
@@ -690,7 +690,7 @@ namespace OpenSim.Region.OptionalModules.World.MoneyModule | |||
690 | /// <param name="agentId"></param> | 690 | /// <param name="agentId"></param> |
691 | public void EconomyDataRequestHandler(IClientAPI user) | 691 | public void EconomyDataRequestHandler(IClientAPI user) |
692 | { | 692 | { |
693 | Scene s = LocateSceneClientIn(user.AgentId); | 693 | Scene s = (Scene)user.Scene; |
694 | 694 | ||
695 | user.SendEconomyData(EnergyEfficiency, s.RegionInfo.ObjectCapacity, ObjectCount, PriceEnergyUnit, PriceGroupCreate, | 695 | user.SendEconomyData(EnergyEfficiency, s.RegionInfo.ObjectCapacity, ObjectCount, PriceEnergyUnit, PriceGroupCreate, |
696 | PriceObjectClaim, PriceObjectRent, PriceObjectScaleFactor, PriceParcelClaim, PriceParcelClaimFactor, | 696 | PriceObjectClaim, PriceObjectRent, PriceObjectScaleFactor, PriceParcelClaim, PriceParcelClaimFactor, |
diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs index 210a314..25957d3 100644 --- a/OpenSim/Server/Base/ServerUtils.cs +++ b/OpenSim/Server/Base/ServerUtils.cs | |||
@@ -286,6 +286,7 @@ namespace OpenSim.Server.Base | |||
286 | e.InnerException == null ? e.Message : e.InnerException.Message, | 286 | e.InnerException == null ? e.Message : e.InnerException.Message, |
287 | e.StackTrace); | 287 | e.StackTrace); |
288 | } | 288 | } |
289 | m_log.ErrorFormat("[SERVER UTILS]: Error loading plugin {0}: {1}", dllName, e.Message); | ||
289 | return null; | 290 | return null; |
290 | } | 291 | } |
291 | 292 | ||
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index 97a0afc..0cf1c14 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs | |||
@@ -58,6 +58,7 @@ namespace OpenSim.Services.HypergridService | |||
58 | private static IUserAgentService m_UserAgentService; | 58 | private static IUserAgentService m_UserAgentService; |
59 | private static ISimulationService m_SimulationService; | 59 | private static ISimulationService m_SimulationService; |
60 | private static IGridUserService m_GridUserService; | 60 | private static IGridUserService m_GridUserService; |
61 | private static IBansService m_BansService; | ||
61 | 62 | ||
62 | private static string m_AllowedClients = string.Empty; | 63 | private static string m_AllowedClients = string.Empty; |
63 | private static string m_DeniedClients = string.Empty; | 64 | private static string m_DeniedClients = string.Empty; |
@@ -87,6 +88,7 @@ namespace OpenSim.Services.HypergridService | |||
87 | string presenceService = serverConfig.GetString("PresenceService", String.Empty); | 88 | string presenceService = serverConfig.GetString("PresenceService", String.Empty); |
88 | string simulationService = serverConfig.GetString("SimulationService", String.Empty); | 89 | string simulationService = serverConfig.GetString("SimulationService", String.Empty); |
89 | string gridUserService = serverConfig.GetString("GridUserService", String.Empty); | 90 | string gridUserService = serverConfig.GetString("GridUserService", String.Empty); |
91 | string bansService = serverConfig.GetString("BansService", String.Empty); | ||
90 | 92 | ||
91 | // These are mandatory, the others aren't | 93 | // These are mandatory, the others aren't |
92 | if (gridService == string.Empty || presenceService == string.Empty) | 94 | if (gridService == string.Empty || presenceService == string.Empty) |
@@ -121,6 +123,8 @@ namespace OpenSim.Services.HypergridService | |||
121 | m_UserAgentService = ServerUtils.LoadPlugin<IUserAgentService>(homeUsersService, args); | 123 | m_UserAgentService = ServerUtils.LoadPlugin<IUserAgentService>(homeUsersService, args); |
122 | if (gridUserService != string.Empty) | 124 | if (gridUserService != string.Empty) |
123 | m_GridUserService = ServerUtils.LoadPlugin<IGridUserService>(gridUserService, args); | 125 | m_GridUserService = ServerUtils.LoadPlugin<IGridUserService>(gridUserService, args); |
126 | if (bansService != string.Empty) | ||
127 | m_BansService = ServerUtils.LoadPlugin<IBansService>(bansService, args); | ||
124 | 128 | ||
125 | if (simService != null) | 129 | if (simService != null) |
126 | m_SimulationService = simService; | 130 | m_SimulationService = simService; |
@@ -223,7 +227,7 @@ namespace OpenSim.Services.HypergridService | |||
223 | m_log.InfoFormat("[GATEKEEPER SERVICE]: Login request for {0} {1} @ {2} ({3}) at {4} using viewer {5}, channel {6}, IP {7}, Mac {8}, Id0 {9} Teleport Flags {10}", | 227 | m_log.InfoFormat("[GATEKEEPER SERVICE]: Login request for {0} {1} @ {2} ({3}) at {4} using viewer {5}, channel {6}, IP {7}, Mac {8}, Id0 {9} Teleport Flags {10}", |
224 | aCircuit.firstname, aCircuit.lastname, authURL, aCircuit.AgentID, destination.RegionName, | 228 | aCircuit.firstname, aCircuit.lastname, authURL, aCircuit.AgentID, destination.RegionName, |
225 | aCircuit.Viewer, aCircuit.Channel, aCircuit.IPAddress, aCircuit.Mac, aCircuit.Id0, aCircuit.teleportFlags.ToString()); | 229 | aCircuit.Viewer, aCircuit.Channel, aCircuit.IPAddress, aCircuit.Mac, aCircuit.Id0, aCircuit.teleportFlags.ToString()); |
226 | 230 | ||
227 | // | 231 | // |
228 | // Check client | 232 | // Check client |
229 | // | 233 | // |
@@ -287,17 +291,16 @@ namespace OpenSim.Services.HypergridService | |||
287 | } | 291 | } |
288 | } | 292 | } |
289 | } | 293 | } |
290 | m_log.DebugFormat("[GATEKEEPER SERVICE]: User is ok"); | ||
291 | 294 | ||
292 | // | 295 | // |
293 | // Foreign agents allowed? Exceptions? | 296 | // Foreign agents allowed? Exceptions? |
294 | // | 297 | // |
295 | if (account == null) | 298 | if (account == null) |
296 | { | 299 | { |
297 | bool allowed = m_ForeignAgentsAllowed; | 300 | bool allowed = m_ForeignAgentsAllowed; |
298 | 301 | ||
299 | if (m_ForeignAgentsAllowed && IsException(aCircuit, m_ForeignsAllowedExceptions)) | 302 | if (m_ForeignAgentsAllowed && IsException(aCircuit, m_ForeignsAllowedExceptions)) |
300 | allowed = false; | 303 | allowed = false; |
301 | 304 | ||
302 | if (!m_ForeignAgentsAllowed && IsException(aCircuit, m_ForeignsDisallowedExceptions)) | 305 | if (!m_ForeignAgentsAllowed && IsException(aCircuit, m_ForeignsDisallowedExceptions)) |
303 | allowed = true; | 306 | allowed = true; |
@@ -311,6 +314,20 @@ namespace OpenSim.Services.HypergridService | |||
311 | } | 314 | } |
312 | } | 315 | } |
313 | 316 | ||
317 | // | ||
318 | // Is the user banned? | ||
319 | // This uses a Ban service that's more powerful than the configs | ||
320 | // | ||
321 | string uui = (account != null ? aCircuit.AgentID.ToString() : Util.ProduceUserUniversalIdentifier(aCircuit)); | ||
322 | if (m_BansService != null && m_BansService.IsBanned(uui, aCircuit.IPAddress, aCircuit.Id0, authURL)) | ||
323 | { | ||
324 | reason = "You are banned from this world"; | ||
325 | m_log.InfoFormat("[GATEKEEPER SERVICE]: Login failed, reason: user {0} is banned", uui); | ||
326 | return false; | ||
327 | } | ||
328 | |||
329 | m_log.DebugFormat("[GATEKEEPER SERVICE]: User is OK"); | ||
330 | |||
314 | bool isFirstLogin = false; | 331 | bool isFirstLogin = false; |
315 | // | 332 | // |
316 | // Login the presence, if it's not there yet (by the login service) | 333 | // Login the presence, if it's not there yet (by the login service) |
diff --git a/OpenSim/Services/Interfaces/IBansService.cs b/OpenSim/Services/Interfaces/IBansService.cs new file mode 100644 index 0000000..8fd3521 --- /dev/null +++ b/OpenSim/Services/Interfaces/IBansService.cs | |||
@@ -0,0 +1,48 @@ | |||
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 | |||
30 | using OpenSim.Framework; | ||
31 | using OpenMetaverse; | ||
32 | |||
33 | namespace OpenSim.Services.Interfaces | ||
34 | { | ||
35 | public interface IBansService | ||
36 | { | ||
37 | /// <summary> | ||
38 | /// Are any of the given arguments banned from the grid? | ||
39 | /// </summary> | ||
40 | /// <param name="userID"></param> | ||
41 | /// <param name="ip"></param> | ||
42 | /// <param name="id0"></param> | ||
43 | /// <param name="origin"></param> | ||
44 | /// <returns></returns> | ||
45 | bool IsBanned(string userID, string ip, string id0, string origin); | ||
46 | } | ||
47 | |||
48 | } | ||
diff --git a/OpenSim/Services/UserAccountService/GridUserService.cs b/OpenSim/Services/UserAccountService/GridUserService.cs index 43fa04b..8388180 100644 --- a/OpenSim/Services/UserAccountService/GridUserService.cs +++ b/OpenSim/Services/UserAccountService/GridUserService.cs | |||
@@ -73,7 +73,7 @@ namespace OpenSim.Services.UserAccountService | |||
73 | return info; | 73 | return info; |
74 | } | 74 | } |
75 | 75 | ||
76 | public GridUserInfo[] GetGridUserInfo(string[] userIDs) | 76 | public virtual GridUserInfo[] GetGridUserInfo(string[] userIDs) |
77 | { | 77 | { |
78 | List<GridUserInfo> ret = new List<GridUserInfo>(); | 78 | List<GridUserInfo> ret = new List<GridUserInfo>(); |
79 | 79 | ||