From 1cadad9ec62c54fe8ebde8a895817bd980fed975 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Sat, 21 Feb 2009 09:39:33 +0000 Subject: * Applied a patch that: Added estate ban table to migration scripts and nhibernate mapping. Refactored property getters and setters for estate ban object to support NHibernate. * Added estate ban table to migration scripts of all supported databases. * Added nhibernate mapping for EstateBans property of EstateSettings * Refactored property accessors for EstateBan object. * Added comments for EstateBan properties. * Ensured that NHibernate tests pass with NUnitGUI. * Ensured that nant test target passes. This fixes mantis #3210. Thank you, tlaukkan! --- OpenSim/Data/MSSQL/MSSQLEstateData.cs | 8 +- OpenSim/Data/MySQL/MySQLEstateData.cs | 8 +- .../NHibernate/Resources/EstateSettings.hbm.xml | 11 +++ .../Resources/MsSql2005Dialect/001_EstateStore.sql | 10 +++ .../Resources/MySQLDialect/001_EstateStore.sql | 9 +++ .../PostgreSQLDialect/001_EstateStore.sql | 10 +++ .../Resources/SQLiteDialect/001_EstateStore.sql | 10 +++ OpenSim/Data/SQLite/SQLiteEstateData.cs | 8 +- OpenSim/Data/Tests/BasicEstateTest.cs | 8 +- OpenSim/Framework/EstateBan.cs | 85 ++++++++++++++++++++-- OpenSim/Framework/EstateSettings.cs | 6 +- .../Region/ClientStack/LindenUDP/LLClientView.cs | 4 +- .../World/Estate/EstateManagementModule.cs | 14 ++-- 13 files changed, 158 insertions(+), 33 deletions(-) diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs index 4d5c116..3002fe3 100644 --- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs +++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs @@ -332,9 +332,9 @@ namespace OpenSim.Data.MSSQL // UUID uuid; // UUID.TryParse(reader["bannedUUID"].ToString(), out uuid); - eb.bannedUUID = new UUID((Guid)reader["bannedUUID"]); //uuid; - eb.bannedIP = "0.0.0.0"; - eb.bannedIPHostMask = "0.0.0.0"; + eb.BannedUserID = new UUID((Guid)reader["bannedUUID"]); //uuid; + eb.BannedHostAddress = "0.0.0.0"; + eb.BannedHostIPMask = "0.0.0.0"; es.AddBan(eb); } } @@ -386,7 +386,7 @@ namespace OpenSim.Data.MSSQL { cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID)); - cmd.Parameters.Add(_Database.CreateParameter("@bannedUUID", b.bannedUUID)); + cmd.Parameters.Add(_Database.CreateParameter("@bannedUUID", b.BannedUserID)); cmd.ExecuteNonQuery(); diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs index 0db624d..133ee7a 100644 --- a/OpenSim/Data/MySQL/MySQLEstateData.cs +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs @@ -314,9 +314,9 @@ namespace OpenSim.Data.MySQL UUID uuid = new UUID(); UUID.TryParse(r["bannedUUID"].ToString(), out uuid); - eb.bannedUUID = uuid; - eb.bannedIP = "0.0.0.0"; - eb.bannedIPHostMask = "0.0.0.0"; + eb.BannedUserID = uuid; + eb.BannedHostAddress = "0.0.0.0"; + eb.BannedHostIPMask = "0.0.0.0"; es.AddBan(eb); } r.Close(); @@ -340,7 +340,7 @@ namespace OpenSim.Data.MySQL foreach (EstateBan b in es.EstateBans) { cmd.Parameters.AddWithValue("?EstateID", es.EstateID.ToString()); - cmd.Parameters.AddWithValue("?bannedUUID", b.bannedUUID.ToString()); + cmd.Parameters.AddWithValue("?bannedUUID", b.BannedUserID.ToString()); cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); diff --git a/OpenSim/Data/NHibernate/Resources/EstateSettings.hbm.xml b/OpenSim/Data/NHibernate/Resources/EstateSettings.hbm.xml index d8c8975..d300b93 100644 --- a/OpenSim/Data/NHibernate/Resources/EstateSettings.hbm.xml +++ b/OpenSim/Data/NHibernate/Resources/EstateSettings.hbm.xml @@ -52,6 +52,17 @@ + + + + + + + + + + + diff --git a/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_EstateStore.sql b/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_EstateStore.sql index b852cbc..dd579f9 100644 --- a/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_EstateStore.sql +++ b/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_EstateStore.sql @@ -59,4 +59,14 @@ CREATE TABLE EstateGroups ( GroupID NVARCHAR(36) NOT NULL, ArrayIndex INT NOT NULL, PRIMARY KEY (EstateID,ArrayIndex) +); + +CREATE TABLE EstateBans ( + EstateID INT NOT NULL, + ArrayIndex INT NOT NULL, + BannedUserID NVARCHAR(36) NOT NULL, + BannedHostAddress NVARCHAR(16) NOT NULL, + BannedHostIPMask NVARCHAR(16) NOT NULL, + BannedHostNameMask NVARCHAR(16) NOT NULL, + PRIMARY KEY (EstateID,ArrayIndex) ); \ No newline at end of file diff --git a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_EstateStore.sql b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_EstateStore.sql index 69635d8..e9ae07e 100644 --- a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_EstateStore.sql +++ b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_EstateStore.sql @@ -60,3 +60,12 @@ CREATE TABLE EstateGroups ( PRIMARY KEY (EstateID,ArrayIndex) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Rev. 1'; +CREATE TABLE EstateBans ( + EstateID INT NOT NULL, + ArrayIndex INT NOT NULL, + BannedUserID VARCHAR(36) NOT NULL, + BannedHostAddress VARCHAR(16) NOT NULL, + BannedHostIPMask VARCHAR(16) NOT NULL, + BannedHostNameMask VARCHAR(16) NOT NULL, + PRIMARY KEY (EstateID,ArrayIndex) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Rev. 1'; diff --git a/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_EstateStore.sql b/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_EstateStore.sql index d13a4d3..3f47930 100644 --- a/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_EstateStore.sql +++ b/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_EstateStore.sql @@ -59,4 +59,14 @@ CREATE TABLE EstateGroups ( GroupID VARCHAR(36) NOT NULL, ArrayIndex INT NOT NULL, PRIMARY KEY (EstateID,ArrayIndex) +); + +CREATE TABLE EstateBans ( + EstateID INT NOT NULL, + ArrayIndex INT NOT NULL, + BannedUserID VARCHAR(36) NOT NULL, + BannedHostAddress VARCHAR(16) NOT NULL, + BannedHostIPMask VARCHAR(16) NOT NULL, + BannedHostNameMask VARCHAR(16) NOT NULL, + PRIMARY KEY (EstateID,ArrayIndex) ); \ No newline at end of file diff --git a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_EstateStore.sql b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_EstateStore.sql index 6e67630..afe702f 100644 --- a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_EstateStore.sql +++ b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_EstateStore.sql @@ -59,3 +59,13 @@ CREATE TABLE EstateGroups ( ArrayIndex INT NOT NULL, PRIMARY KEY (EstateID,ArrayIndex) ); + +CREATE TABLE EstateBans ( + EstateID INT NOT NULL, + ArrayIndex INT NOT NULL, + BannedUserID VARCHAR(36) NOT NULL, + BannedHostAddress VARCHAR(16) NOT NULL, + BannedHostIPMask VARCHAR(16) NOT NULL, + BannedHostNameMask VARCHAR(16) NOT NULL, + PRIMARY KEY (EstateID,ArrayIndex) +); diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs index 3fb33c2..dea5624 100644 --- a/OpenSim/Data/SQLite/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs @@ -258,9 +258,9 @@ namespace OpenSim.Data.SQLite UUID uuid = new UUID(); UUID.TryParse(r["bannedUUID"].ToString(), out uuid); - eb.bannedUUID = uuid; - eb.bannedIP = "0.0.0.0"; - eb.bannedIPHostMask = "0.0.0.0"; + eb.BannedUserID = uuid; + eb.BannedHostAddress = "0.0.0.0"; + eb.BannedHostIPMask = "0.0.0.0"; es.AddBan(eb); } r.Close(); @@ -282,7 +282,7 @@ namespace OpenSim.Data.SQLite foreach (EstateBan b in es.EstateBans) { cmd.Parameters.Add(":EstateID", es.EstateID.ToString()); - cmd.Parameters.Add(":bannedUUID", b.bannedUUID.ToString()); + cmd.Parameters.Add(":bannedUUID", b.BannedUserID.ToString()); cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); diff --git a/OpenSim/Data/Tests/BasicEstateTest.cs b/OpenSim/Data/Tests/BasicEstateTest.cs index b37a392..f94ac46 100644 --- a/OpenSim/Data/Tests/BasicEstateTest.cs +++ b/OpenSim/Data/Tests/BasicEstateTest.cs @@ -223,10 +223,10 @@ namespace OpenSim.Data.Tests EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID); EstateBan estateBan1 = new EstateBan(); - estateBan1.bannedUUID = DataTestUtil.UUID_MIN; + estateBan1.BannedUserID = DataTestUtil.UUID_MIN; EstateBan estateBan2 = new EstateBan(); - estateBan2.bannedUUID = DataTestUtil.UUID_MAX; + estateBan2.BannedUserID = DataTestUtil.UUID_MAX; originalSettings.EstateBans = new EstateBan[] { estateBan1, estateBan2 }; @@ -237,9 +237,9 @@ namespace OpenSim.Data.Tests EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID); Assert.AreEqual(2, loadedSettings.EstateBans.Length); - Assert.AreEqual(DataTestUtil.UUID_MIN, loadedSettings.EstateBans[0].bannedUUID); + Assert.AreEqual(DataTestUtil.UUID_MIN, loadedSettings.EstateBans[0].BannedUserID); - Assert.AreEqual(DataTestUtil.UUID_MAX, loadedSettings.EstateBans[1].bannedUUID); + Assert.AreEqual(DataTestUtil.UUID_MAX, loadedSettings.EstateBans[1].BannedUserID); } diff --git a/OpenSim/Framework/EstateBan.cs b/OpenSim/Framework/EstateBan.cs index 5c3aa42..64d32e8 100644 --- a/OpenSim/Framework/EstateBan.cs +++ b/OpenSim/Framework/EstateBan.cs @@ -31,10 +31,85 @@ namespace OpenSim.Framework { public class EstateBan { - public uint estateID = 1; - public UUID bannedUUID = UUID.Zero; - public string bannedIP = string.Empty; - public string bannedIPHostMask = string.Empty; - public string bannedNameMask = string.Empty; + private uint m_estateID = 1; + /// + /// ID of the estate this ban limits access to. + /// + public uint EstateID + { + get + { + return m_estateID; + } + set + { + m_estateID = value; + } + } + + private UUID m_bannedUserID = UUID.Zero; + /// + /// ID of the banned user. + /// + public UUID BannedUserID + { + get + { + return m_bannedUserID; + } + set + { + m_bannedUserID = value; + } + } + + private string m_bannedHostAddress = string.Empty; + /// + /// IP address or domain name of the banned client. + /// + public string BannedHostAddress + { + get + { + return m_bannedHostAddress; + } + set + { + m_bannedHostAddress = value; + } + } + + private string m_bannedHostIPMask = string.Empty; + /// + /// IP address mask for banning group of client hosts. + /// + public string BannedHostIPMask + { + get + { + return m_bannedHostIPMask; + } + set + { + m_bannedHostIPMask = value; + } + } + + private string m_bannedHostNameMask = string.Empty; + /// + /// Domain name mask for banning group of client hosts. + /// + public string BannedHostNameMask + { + get + { + return m_bannedHostNameMask; + } + set + { + m_bannedHostNameMask = value; + } + } + } } diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs index 81f85cd..b84d1d7 100644 --- a/OpenSim/Framework/EstateSettings.cs +++ b/OpenSim/Framework/EstateSettings.cs @@ -333,7 +333,7 @@ namespace OpenSim.Framework public bool IsBanned(UUID avatarID) { foreach (EstateBan ban in l_EstateBans) - if (ban.bannedUUID == avatarID) + if (ban.BannedUserID == avatarID) return true; return false; } @@ -342,7 +342,7 @@ namespace OpenSim.Framework { if (ban == null) return; - if (!IsBanned(ban.bannedUUID)) + if (!IsBanned(ban.BannedUserID)) l_EstateBans.Add(ban); } @@ -354,7 +354,7 @@ namespace OpenSim.Framework public void RemoveBan(UUID avatarID) { foreach (EstateBan ban in new List(l_EstateBans)) - if (ban.bannedUUID == avatarID) + if (ban.BannedUserID == avatarID) l_EstateBans.Remove(ban); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 34ad0f1..c715949 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -2992,9 +2992,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if (bl[i] == null) continue; - if (bl[i].bannedUUID == UUID.Zero) + if (bl[i].BannedUserID == UUID.Zero) continue; - BannedUsers.Add(bl[i].bannedUUID); + BannedUsers.Add(bl[i].BannedUserID); } EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index b567047..7a200d4 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -241,7 +241,7 @@ namespace OpenSim.Region.CoreModules.World.Estate for (int i = 0; i < banlistcheck.Length; i++) { - if (user == banlistcheck[i].bannedUUID) + if (user == banlistcheck[i].BannedUserID) { alreadyInList = true; break; @@ -253,10 +253,10 @@ namespace OpenSim.Region.CoreModules.World.Estate EstateBan item = new EstateBan(); - item.bannedUUID = user; - item.estateID = m_scene.RegionInfo.EstateSettings.EstateID; - item.bannedIP = "0.0.0.0"; - item.bannedIPHostMask = "0.0.0.0"; + item.BannedUserID = user; + item.EstateID = m_scene.RegionInfo.EstateSettings.EstateID; + item.BannedHostAddress = "0.0.0.0"; + item.BannedHostIPMask = "0.0.0.0"; m_scene.RegionInfo.EstateSettings.AddBan(item); m_scene.RegionInfo.EstateSettings.Save(); @@ -294,7 +294,7 @@ namespace OpenSim.Region.CoreModules.World.Estate for (int i = 0; i < banlistcheck.Length; i++) { - if (user == banlistcheck[i].bannedUUID) + if (user == banlistcheck[i].BannedUserID) { alreadyInList = true; listitem = banlistcheck[i]; @@ -304,7 +304,7 @@ namespace OpenSim.Region.CoreModules.World.Estate } if (alreadyInList && listitem != null) { - m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.bannedUUID); + m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); m_scene.RegionInfo.EstateSettings.Save(); } else -- cgit v1.1