diff options
27 files changed, 1568 insertions, 809 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLDataStore.cs b/OpenSim/Data/MSSQL/MSSQLDataStore.cs index 46e4107..c7d034f 100644 --- a/OpenSim/Data/MSSQL/MSSQLDataStore.cs +++ b/OpenSim/Data/MSSQL/MSSQLDataStore.cs | |||
@@ -548,9 +548,9 @@ namespace OpenSim.Data.MSSQL | |||
548 | /// </summary> | 548 | /// </summary> |
549 | /// <param name="regionUUID">the region UUID</param> | 549 | /// <param name="regionUUID">the region UUID</param> |
550 | /// <returns>the banlist list</returns> | 550 | /// <returns>the banlist list</returns> |
551 | public List<RegionBanListItem> LoadRegionBanList(LLUUID regionUUID) | 551 | public List<EstateBan> LoadRegionBanList(LLUUID regionUUID) |
552 | { | 552 | { |
553 | List<RegionBanListItem> regionbanlist = new List<RegionBanListItem>(); | 553 | List<EstateBan> regionbanlist = new List<EstateBan>(); |
554 | return regionbanlist; | 554 | return regionbanlist; |
555 | } | 555 | } |
556 | 556 | ||
@@ -558,7 +558,7 @@ namespace OpenSim.Data.MSSQL | |||
558 | /// STUB, add an item into region banlist | 558 | /// STUB, add an item into region banlist |
559 | /// </summary> | 559 | /// </summary> |
560 | /// <param name="item">the item</param> | 560 | /// <param name="item">the item</param> |
561 | public void AddToRegionBanlist(RegionBanListItem item) | 561 | public void AddToRegionBanlist(EstateBan item) |
562 | { | 562 | { |
563 | 563 | ||
564 | } | 564 | } |
@@ -567,7 +567,7 @@ namespace OpenSim.Data.MSSQL | |||
567 | /// STUB, remove an item from region banlist | 567 | /// STUB, remove an item from region banlist |
568 | /// </summary> | 568 | /// </summary> |
569 | /// <param name="item"></param> | 569 | /// <param name="item"></param> |
570 | public void RemoveFromRegionBanlist(RegionBanListItem item) | 570 | public void RemoveFromRegionBanlist(EstateBan item) |
571 | { | 571 | { |
572 | 572 | ||
573 | } | 573 | } |
diff --git a/OpenSim/Data/MySQL/MySQLDataStore.cs b/OpenSim/Data/MySQL/MySQLDataStore.cs index 254e526..25956d5 100644 --- a/OpenSim/Data/MySQL/MySQLDataStore.cs +++ b/OpenSim/Data/MySQL/MySQLDataStore.cs | |||
@@ -53,7 +53,6 @@ namespace OpenSim.Data.MySQL | |||
53 | private const string m_terrainSelect = "select * from terrain limit 1"; | 53 | private const string m_terrainSelect = "select * from terrain limit 1"; |
54 | private const string m_landSelect = "select * from land"; | 54 | private const string m_landSelect = "select * from land"; |
55 | private const string m_landAccessListSelect = "select * from landaccesslist"; | 55 | private const string m_landAccessListSelect = "select * from landaccesslist"; |
56 | private const string m_regionBanListSelect = "select * from regionban"; | ||
57 | private const string m_regionSettingsSelect = "select * from regionsettings"; | 56 | private const string m_regionSettingsSelect = "select * from regionsettings"; |
58 | private const string m_waitTimeoutSelect = "select @@wait_timeout"; | 57 | private const string m_waitTimeoutSelect = "select @@wait_timeout"; |
59 | 58 | ||
@@ -83,7 +82,6 @@ namespace OpenSim.Data.MySQL | |||
83 | private MySqlDataAdapter m_terrainDataAdapter; | 82 | private MySqlDataAdapter m_terrainDataAdapter; |
84 | private MySqlDataAdapter m_landDataAdapter; | 83 | private MySqlDataAdapter m_landDataAdapter; |
85 | private MySqlDataAdapter m_landAccessListDataAdapter; | 84 | private MySqlDataAdapter m_landAccessListDataAdapter; |
86 | private MySqlDataAdapter m_regionBanListDataAdapter; | ||
87 | private MySqlDataAdapter m_regionSettingsDataAdapter; | 85 | private MySqlDataAdapter m_regionSettingsDataAdapter; |
88 | 86 | ||
89 | private DataTable m_primTable; | 87 | private DataTable m_primTable; |
@@ -92,7 +90,6 @@ namespace OpenSim.Data.MySQL | |||
92 | private DataTable m_terrainTable; | 90 | private DataTable m_terrainTable; |
93 | private DataTable m_landTable; | 91 | private DataTable m_landTable; |
94 | private DataTable m_landAccessListTable; | 92 | private DataTable m_landAccessListTable; |
95 | private DataTable m_regionBanListTable; | ||
96 | private DataTable m_regionSettingsTable; | 93 | private DataTable m_regionSettingsTable; |
97 | 94 | ||
98 | /// <value>Temporary attribute while this is experimental</value> | 95 | /// <value>Temporary attribute while this is experimental</value> |
@@ -150,9 +147,6 @@ namespace OpenSim.Data.MySQL | |||
150 | MySqlCommand landAccessListSelectCmd = new MySqlCommand(m_landAccessListSelect, m_connection); | 147 | MySqlCommand landAccessListSelectCmd = new MySqlCommand(m_landAccessListSelect, m_connection); |
151 | m_landAccessListDataAdapter = new MySqlDataAdapter(landAccessListSelectCmd); | 148 | m_landAccessListDataAdapter = new MySqlDataAdapter(landAccessListSelectCmd); |
152 | 149 | ||
153 | MySqlCommand regionBanListSelectCmd = new MySqlCommand(m_regionBanListSelect, m_connection); | ||
154 | m_regionBanListDataAdapter = new MySqlDataAdapter(regionBanListSelectCmd); | ||
155 | |||
156 | MySqlCommand regionSettingsSelectCmd = new MySqlCommand(m_regionSettingsSelect, m_connection); | 150 | MySqlCommand regionSettingsSelectCmd = new MySqlCommand(m_regionSettingsSelect, m_connection); |
157 | m_regionSettingsDataAdapter = new MySqlDataAdapter(regionSettingsSelectCmd); | 151 | m_regionSettingsDataAdapter = new MySqlDataAdapter(regionSettingsSelectCmd); |
158 | 152 | ||
@@ -192,11 +186,6 @@ namespace OpenSim.Data.MySQL | |||
192 | setupLandAccessCommands(m_landAccessListDataAdapter, m_connection); | 186 | setupLandAccessCommands(m_landAccessListDataAdapter, m_connection); |
193 | m_landAccessListDataAdapter.Fill(m_landAccessListTable); | 187 | m_landAccessListDataAdapter.Fill(m_landAccessListTable); |
194 | 188 | ||
195 | m_regionBanListTable = createRegionBanTable(); | ||
196 | m_dataSet.Tables.Add(m_regionBanListTable); | ||
197 | SetupRegionBanCommands(m_regionBanListDataAdapter, m_connection); | ||
198 | m_regionBanListDataAdapter.Fill(m_regionBanListTable); | ||
199 | |||
200 | m_regionSettingsTable = createRegionSettingsTable(); | 189 | m_regionSettingsTable = createRegionSettingsTable(); |
201 | m_dataSet.Tables.Add(m_regionSettingsTable); | 190 | m_dataSet.Tables.Add(m_regionSettingsTable); |
202 | SetupRegionSettingsCommands(m_regionSettingsDataAdapter, m_connection); | 191 | SetupRegionSettingsCommands(m_regionSettingsDataAdapter, m_connection); |
@@ -774,99 +763,6 @@ namespace OpenSim.Data.MySQL | |||
774 | } | 763 | } |
775 | 764 | ||
776 | /// <summary> | 765 | /// <summary> |
777 | /// Load (fetch?) a region banlist | ||
778 | /// </summary> | ||
779 | /// <param name="regionUUID">The region UUID</param> | ||
780 | /// <returns>The Region banlist</returns> | ||
781 | public List<RegionBanListItem> LoadRegionBanList(LLUUID regionUUID) | ||
782 | { | ||
783 | List<RegionBanListItem> regionbanlist = new List<RegionBanListItem>(); | ||
784 | lock (m_dataSet) | ||
785 | { | ||
786 | CheckConnection(); | ||
787 | DataTable regionban = m_regionBanListTable; | ||
788 | string searchExp = "regionUUID = '" + regionUUID.ToString() + "'"; | ||
789 | DataRow[] rawbanlist = regionban.Select(searchExp); | ||
790 | foreach (DataRow rawbanrow in rawbanlist) | ||
791 | { | ||
792 | RegionBanListItem rbli = new RegionBanListItem(); | ||
793 | LLUUID tmpvalue = LLUUID.Zero; | ||
794 | |||
795 | rbli.regionUUID = regionUUID; | ||
796 | |||
797 | if (Helpers.TryParse((string)rawbanrow["bannedUUID"], out tmpvalue)) | ||
798 | rbli.bannedUUID = tmpvalue; | ||
799 | |||
800 | rbli.bannedIP = (string)rawbanrow["bannedIp"]; | ||
801 | rbli.bannedIPHostMask = (string)rawbanrow["bannedIpHostMask"]; | ||
802 | regionbanlist.Add(rbli); | ||
803 | } | ||
804 | return regionbanlist; | ||
805 | } | ||
806 | } | ||
807 | |||
808 | /// <summary> | ||
809 | /// Add an item to region banlist | ||
810 | /// </summary> | ||
811 | /// <param name="item">The item</param> | ||
812 | public void AddToRegionBanlist(RegionBanListItem item) | ||
813 | { | ||
814 | lock (m_dataSet) | ||
815 | { | ||
816 | CheckConnection(); | ||
817 | DataTable regionban = m_regionBanListTable; | ||
818 | string searchExp = "regionUUID = '" + item.regionUUID.ToString() + "' AND bannedUUID = '" + item.bannedUUID.ToString() + "'"; | ||
819 | DataRow[] rawbanlist = regionban.Select(searchExp); | ||
820 | if (rawbanlist.Length == 0) | ||
821 | { | ||
822 | DataRow regionbanrow = regionban.NewRow(); | ||
823 | regionbanrow["regionUUID"] = item.regionUUID.ToString(); | ||
824 | regionbanrow["bannedUUID"] = item.bannedUUID.ToString(); | ||
825 | regionbanrow["bannedIp"] = item.bannedIP.ToString(); | ||
826 | regionbanrow["bannedIpHostMask"] = item.bannedIPHostMask.ToString(); | ||
827 | regionban.Rows.Add(regionbanrow); | ||
828 | } | ||
829 | Commit(); | ||
830 | } | ||
831 | } | ||
832 | |||
833 | /// <summary> | ||
834 | /// Remove an item from region banlist | ||
835 | /// </summary> | ||
836 | /// <param name="item">The item</param> | ||
837 | public void RemoveFromRegionBanlist(RegionBanListItem item) | ||
838 | { | ||
839 | lock (m_dataSet) | ||
840 | { | ||
841 | CheckConnection(); | ||
842 | DataTable regionban = m_regionBanListTable; | ||
843 | string searchExp = "regionUUID = '" + item.regionUUID.ToString() + "' AND bannedUUID = '" + item.bannedUUID.ToString() + "'"; | ||
844 | DataRow[] rawbanlist = regionban.Select(searchExp); | ||
845 | if (rawbanlist.Length > 0) | ||
846 | { | ||
847 | foreach (DataRow rbli in rawbanlist) | ||
848 | { | ||
849 | regionban.Rows.Remove(rbli); | ||
850 | } | ||
851 | } | ||
852 | Commit(); | ||
853 | } | ||
854 | |||
855 | using | ||
856 | ( | ||
857 | MySqlCommand cmd = | ||
858 | new MySqlCommand("delete from regionban where regionUUID = ?regionUUID AND bannedUUID = ?bannedUUID", m_connection) | ||
859 | ) | ||
860 | { | ||
861 | cmd.Parameters.Add(new MySqlParameter("?regionUUID", item.regionUUID.ToString())); | ||
862 | cmd.Parameters.Add(new MySqlParameter("?bannedUUID", item.bannedUUID.ToString())); | ||
863 | CheckConnection(); | ||
864 | cmd.ExecuteNonQuery(); | ||
865 | } | ||
866 | |||
867 | } | ||
868 | |||
869 | /// <summary> | ||
870 | /// | 766 | /// |
871 | /// </summary> | 767 | /// </summary> |
872 | /// <param name="regionUUID"></param> | 768 | /// <param name="regionUUID"></param> |
@@ -918,7 +814,6 @@ namespace OpenSim.Data.MySQL | |||
918 | m_terrainDataAdapter.Update(m_terrainTable); | 814 | m_terrainDataAdapter.Update(m_terrainTable); |
919 | m_landDataAdapter.Update(m_landTable); | 815 | m_landDataAdapter.Update(m_landTable); |
920 | m_landAccessListDataAdapter.Update(m_landAccessListTable); | 816 | m_landAccessListDataAdapter.Update(m_landAccessListTable); |
921 | m_regionBanListDataAdapter.Update(m_regionBanListTable); | ||
922 | m_regionSettingsDataAdapter.Update(m_regionSettingsTable); | 817 | m_regionSettingsDataAdapter.Update(m_regionSettingsTable); |
923 | 818 | ||
924 | m_dataSet.AcceptChanges(); | 819 | m_dataSet.AcceptChanges(); |
@@ -1006,6 +901,7 @@ namespace OpenSim.Data.MySQL | |||
1006 | createCol(regionsettings, "terrain_raise_limit", typeof (Double)); | 901 | createCol(regionsettings, "terrain_raise_limit", typeof (Double)); |
1007 | createCol(regionsettings, "terrain_lower_limit", typeof (Double)); | 902 | createCol(regionsettings, "terrain_lower_limit", typeof (Double)); |
1008 | createCol(regionsettings, "use_estate_sun", typeof (Int32)); | 903 | createCol(regionsettings, "use_estate_sun", typeof (Int32)); |
904 | createCol(regionsettings, "sandbox", typeof (Int32)); | ||
1009 | createCol(regionsettings, "fixed_sun", typeof (Int32)); | 905 | createCol(regionsettings, "fixed_sun", typeof (Int32)); |
1010 | createCol(regionsettings, "sun_position", typeof (Double)); | 906 | createCol(regionsettings, "sun_position", typeof (Double)); |
1011 | createCol(regionsettings, "covenant", typeof(String)); | 907 | createCol(regionsettings, "covenant", typeof(String)); |
@@ -1016,21 +912,6 @@ namespace OpenSim.Data.MySQL | |||
1016 | } | 912 | } |
1017 | 913 | ||
1018 | /// <summary> | 914 | /// <summary> |
1019 | /// Create the "regionban" table | ||
1020 | /// </summary> | ||
1021 | /// <returns></returns> | ||
1022 | private static DataTable createRegionBanTable() | ||
1023 | { | ||
1024 | DataTable regionban = new DataTable("regionban"); | ||
1025 | createCol(regionban, "regionUUID", typeof(String)); | ||
1026 | createCol(regionban, "bannedUUID", typeof(String)); | ||
1027 | createCol(regionban, "bannedIp", typeof(String)); | ||
1028 | createCol(regionban, "bannedIpHostMask", typeof(String)); | ||
1029 | return regionban; | ||
1030 | |||
1031 | } | ||
1032 | |||
1033 | /// <summary> | ||
1034 | /// Create the "prims" table | 915 | /// Create the "prims" table |
1035 | /// </summary> | 916 | /// </summary> |
1036 | /// <returns></returns> | 917 | /// <returns></returns> |
@@ -1417,6 +1298,7 @@ namespace OpenSim.Data.MySQL | |||
1417 | newSettings.TerrainRaiseLimit = Convert.ToDouble(row["terrain_raise_limit"]); | 1298 | newSettings.TerrainRaiseLimit = Convert.ToDouble(row["terrain_raise_limit"]); |
1418 | newSettings.TerrainLowerLimit = Convert.ToDouble(row["terrain_lower_limit"]); | 1299 | newSettings.TerrainLowerLimit = Convert.ToDouble(row["terrain_lower_limit"]); |
1419 | newSettings.UseEstateSun = Convert.ToBoolean(row["use_estate_sun"]); | 1300 | newSettings.UseEstateSun = Convert.ToBoolean(row["use_estate_sun"]); |
1301 | newSettings.Sandbox = Convert.ToBoolean(row["sandbox"]); | ||
1420 | newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]); | 1302 | newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]); |
1421 | newSettings.SunPosition = Convert.ToDouble(row["sun_position"]); | 1303 | newSettings.SunPosition = Convert.ToDouble(row["sun_position"]); |
1422 | newSettings.Covenant = new LLUUID((String) row["covenant"]); | 1304 | newSettings.Covenant = new LLUUID((String) row["covenant"]); |
@@ -1676,6 +1558,7 @@ namespace OpenSim.Data.MySQL | |||
1676 | row["terrain_raise_limit"] = settings.TerrainRaiseLimit; | 1558 | row["terrain_raise_limit"] = settings.TerrainRaiseLimit; |
1677 | row["terrain_lower_limit"] = settings.TerrainLowerLimit; | 1559 | row["terrain_lower_limit"] = settings.TerrainLowerLimit; |
1678 | row["use_estate_sun"] = settings.UseEstateSun; | 1560 | row["use_estate_sun"] = settings.UseEstateSun; |
1561 | row["sandbox"] = settings.Sandbox; | ||
1679 | row["fixed_sun"] = settings.FixedSun; | 1562 | row["fixed_sun"] = settings.FixedSun; |
1680 | row["sun_position"] = settings.SunPosition; | 1563 | row["sun_position"] = settings.SunPosition; |
1681 | row["covenant"] = settings.Covenant.ToString(); | 1564 | row["covenant"] = settings.Covenant.ToString(); |
@@ -2143,26 +2026,6 @@ namespace OpenSim.Data.MySQL | |||
2143 | /// </summary> | 2026 | /// </summary> |
2144 | /// <param name="da"></param> | 2027 | /// <param name="da"></param> |
2145 | /// <param name="conn"></param> | 2028 | /// <param name="conn"></param> |
2146 | private void SetupRegionBanCommands(MySqlDataAdapter da, MySqlConnection conn) | ||
2147 | { | ||
2148 | da.InsertCommand = createInsertCommand("regionban", m_regionBanListTable); | ||
2149 | da.InsertCommand.Connection = conn; | ||
2150 | |||
2151 | da.UpdateCommand = createUpdateCommand("regionban", "regionUUID = ?regionUUID AND bannedUUID = ?bannedUUID", m_regionBanListTable); | ||
2152 | da.UpdateCommand.Connection = conn; | ||
2153 | |||
2154 | MySqlCommand delete = new MySqlCommand("delete from regionban where regionUUID = ?regionUUID AND bannedUUID = ?bannedUUID"); | ||
2155 | delete.Parameters.Add(createMySqlParameter("regionUUID", typeof(String))); | ||
2156 | delete.Parameters.Add(createMySqlParameter("bannedUUID", typeof(String))); | ||
2157 | delete.Connection = conn; | ||
2158 | da.DeleteCommand = delete; | ||
2159 | } | ||
2160 | |||
2161 | /// <summary> | ||
2162 | /// | ||
2163 | /// </summary> | ||
2164 | /// <param name="da"></param> | ||
2165 | /// <param name="conn"></param> | ||
2166 | private void SetupTerrainCommands(MySqlDataAdapter da, MySqlConnection conn) | 2029 | private void SetupTerrainCommands(MySqlDataAdapter da, MySqlConnection conn) |
2167 | { | 2030 | { |
2168 | da.InsertCommand = createInsertCommand("terrain", m_dataSet.Tables["terrain"]); | 2031 | da.InsertCommand = createInsertCommand("terrain", m_dataSet.Tables["terrain"]); |
diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs new file mode 100644 index 0000000..eeff31b --- /dev/null +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs | |||
@@ -0,0 +1,386 @@ | |||
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 OpenSim 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 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Data; | ||
31 | using System.IO; | ||
32 | using System.Reflection; | ||
33 | using System.Threading; | ||
34 | using libsecondlife; | ||
35 | using log4net; | ||
36 | using MySql.Data.MySqlClient; | ||
37 | using OpenSim.Framework; | ||
38 | using OpenSim.Region.Environment.Interfaces; | ||
39 | using OpenSim.Region.Environment.Scenes; | ||
40 | |||
41 | namespace OpenSim.Data.MySQL | ||
42 | { | ||
43 | public class MySQLEstateStore : IEstateDataStore | ||
44 | { | ||
45 | private static readonly ILog m_log = | ||
46 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
47 | |||
48 | private const string m_waitTimeoutSelect = "select @@wait_timeout"; | ||
49 | |||
50 | private MySqlConnection m_connection; | ||
51 | private string m_connectionString; | ||
52 | private long m_waitTimeout; | ||
53 | private long m_waitTimeoutLeeway = 60 * TimeSpan.TicksPerSecond; | ||
54 | private long m_lastConnectionUse; | ||
55 | |||
56 | private FieldInfo[] m_Fields; | ||
57 | private Dictionary<string, FieldInfo> m_FieldMap = | ||
58 | new Dictionary<string, FieldInfo>(); | ||
59 | |||
60 | public void Initialise(string connectionString) | ||
61 | { | ||
62 | m_connectionString = connectionString; | ||
63 | |||
64 | m_log.Info("[ESTATE DB]: MySql - connecting: "+m_connectionString); | ||
65 | |||
66 | m_connection = new MySqlConnection(m_connectionString); | ||
67 | m_connection.Open(); | ||
68 | |||
69 | GetWaitTimeout(); | ||
70 | |||
71 | Assembly assem = GetType().Assembly; | ||
72 | Migration m = new Migration(m_connection, assem, "EstateStore"); | ||
73 | m.Update(); | ||
74 | |||
75 | Type t = typeof(EstateSettings); | ||
76 | m_Fields = t.GetFields(BindingFlags.NonPublic | | ||
77 | BindingFlags.Instance | | ||
78 | BindingFlags.DeclaredOnly); | ||
79 | |||
80 | foreach (FieldInfo f in m_Fields) | ||
81 | if(f.Name.Substring(0, 2) == "m_") | ||
82 | m_FieldMap[f.Name.Substring(2)] = f; | ||
83 | } | ||
84 | |||
85 | private string[] FieldList | ||
86 | { | ||
87 | get { return new List<string>(m_FieldMap.Keys).ToArray(); } | ||
88 | } | ||
89 | |||
90 | protected void GetWaitTimeout() | ||
91 | { | ||
92 | MySqlCommand cmd = new MySqlCommand(m_waitTimeoutSelect, | ||
93 | m_connection); | ||
94 | |||
95 | using (MySqlDataReader dbReader = | ||
96 | cmd.ExecuteReader(CommandBehavior.SingleRow)) | ||
97 | { | ||
98 | if (dbReader.Read()) | ||
99 | { | ||
100 | m_waitTimeout | ||
101 | = Convert.ToInt32(dbReader["@@wait_timeout"]) * | ||
102 | TimeSpan.TicksPerSecond + m_waitTimeoutLeeway; | ||
103 | } | ||
104 | |||
105 | dbReader.Close(); | ||
106 | cmd.Dispose(); | ||
107 | } | ||
108 | |||
109 | m_lastConnectionUse = System.DateTime.Now.Ticks; | ||
110 | |||
111 | m_log.DebugFormat( | ||
112 | "[REGION DB]: Connection wait timeout {0} seconds", | ||
113 | m_waitTimeout / TimeSpan.TicksPerSecond); | ||
114 | } | ||
115 | |||
116 | protected void CheckConnection() | ||
117 | { | ||
118 | long timeNow = System.DateTime.Now.Ticks; | ||
119 | if (timeNow - m_lastConnectionUse > m_waitTimeout || | ||
120 | m_connection.State != ConnectionState.Open) | ||
121 | { | ||
122 | m_log.DebugFormat("[REGION DB]: Database connection has gone away - reconnecting"); | ||
123 | |||
124 | lock (m_connection) | ||
125 | { | ||
126 | m_connection.Close(); | ||
127 | m_connection = new MySqlConnection(m_connectionString); | ||
128 | m_connection.Open(); | ||
129 | } | ||
130 | } | ||
131 | |||
132 | m_lastConnectionUse = timeNow; | ||
133 | } | ||
134 | |||
135 | public EstateSettings LoadEstateSettings(LLUUID regionID) | ||
136 | { | ||
137 | EstateSettings es = new EstateSettings(); | ||
138 | |||
139 | string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = ?RegionID"; | ||
140 | |||
141 | CheckConnection(); | ||
142 | |||
143 | MySqlCommand cmd = m_connection.CreateCommand(); | ||
144 | |||
145 | cmd.CommandText = sql; | ||
146 | cmd.Parameters.Add("?RegionID", regionID.ToString()); | ||
147 | |||
148 | IDataReader r = cmd.ExecuteReader(); | ||
149 | |||
150 | if(r.Read()) | ||
151 | { | ||
152 | foreach (string name in FieldList) | ||
153 | { | ||
154 | if(m_FieldMap[name].GetValue(es) is bool) | ||
155 | { | ||
156 | int v = Convert.ToInt32(r[name]); | ||
157 | if(v != 0) | ||
158 | m_FieldMap[name].SetValue(es, true); | ||
159 | else | ||
160 | m_FieldMap[name].SetValue(es, false); | ||
161 | } | ||
162 | else | ||
163 | { | ||
164 | m_FieldMap[name].SetValue(es, r[name]); | ||
165 | } | ||
166 | } | ||
167 | r.Close(); | ||
168 | } | ||
169 | else | ||
170 | { | ||
171 | // Migration case | ||
172 | // | ||
173 | r.Close(); | ||
174 | |||
175 | List<string> names = new List<string>(FieldList); | ||
176 | |||
177 | names.Remove("EstateID"); | ||
178 | |||
179 | sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( ?"+String.Join(", ?", names.ToArray())+")"; | ||
180 | |||
181 | cmd.CommandText = sql; | ||
182 | cmd.Parameters.Clear(); | ||
183 | |||
184 | foreach (string name in FieldList) | ||
185 | { | ||
186 | if(m_FieldMap[name].GetValue(es) is bool) | ||
187 | { | ||
188 | if((bool)m_FieldMap[name].GetValue(es)) | ||
189 | cmd.Parameters.Add("?"+name, "1"); | ||
190 | else | ||
191 | cmd.Parameters.Add("?"+name, "0"); | ||
192 | } | ||
193 | else | ||
194 | { | ||
195 | cmd.Parameters.Add("?"+name, m_FieldMap[name].GetValue(es).ToString()); | ||
196 | } | ||
197 | } | ||
198 | |||
199 | cmd.ExecuteNonQuery(); | ||
200 | |||
201 | cmd.CommandText = "select LAST_INSERT_ID() as id"; | ||
202 | cmd.Parameters.Clear(); | ||
203 | |||
204 | r = cmd.ExecuteReader(); | ||
205 | |||
206 | r.Read(); | ||
207 | |||
208 | es.EstateID = Convert.ToUInt32(r["id"]); | ||
209 | |||
210 | r.Close(); | ||
211 | |||
212 | cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)"; | ||
213 | cmd.Parameters.Add("?RegionID", regionID.ToString()); | ||
214 | cmd.Parameters.Add("?EstateID", es.EstateID.ToString()); | ||
215 | |||
216 | // This will throw on dupe key | ||
217 | try | ||
218 | { | ||
219 | cmd.ExecuteNonQuery(); | ||
220 | } | ||
221 | catch (Exception) | ||
222 | { | ||
223 | } | ||
224 | |||
225 | // Munge and transfer the ban list | ||
226 | // | ||
227 | cmd.Parameters.Clear(); | ||
228 | cmd.CommandText = "insert into estateban select "+es.EstateID.ToString()+", bannedUUID, bannedIp, bannedIpHostMask, '' from regionban where regionban.regionUUID = ?UUID"; | ||
229 | cmd.Parameters.Add("?UUID", regionID.ToString()); | ||
230 | |||
231 | try | ||
232 | { | ||
233 | cmd.ExecuteNonQuery(); | ||
234 | } | ||
235 | catch (Exception) | ||
236 | { | ||
237 | } | ||
238 | } | ||
239 | |||
240 | LoadBanList(es); | ||
241 | |||
242 | es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); | ||
243 | es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); | ||
244 | es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); | ||
245 | return es; | ||
246 | } | ||
247 | |||
248 | public void StoreEstateSettings(EstateSettings es) | ||
249 | { | ||
250 | string sql = "replace into estate_settings ("+String.Join(",", FieldList)+") values ( ?"+String.Join(", ?", FieldList)+")"; | ||
251 | |||
252 | CheckConnection(); | ||
253 | |||
254 | MySqlCommand cmd = m_connection.CreateCommand(); | ||
255 | |||
256 | cmd.CommandText = sql; | ||
257 | |||
258 | foreach (string name in FieldList) | ||
259 | { | ||
260 | if(m_FieldMap[name].GetValue(es) is bool) | ||
261 | { | ||
262 | if((bool)m_FieldMap[name].GetValue(es)) | ||
263 | cmd.Parameters.Add("?"+name, "1"); | ||
264 | else | ||
265 | cmd.Parameters.Add("?"+name, "0"); | ||
266 | } | ||
267 | else | ||
268 | { | ||
269 | cmd.Parameters.Add("?"+name, m_FieldMap[name].GetValue(es).ToString()); | ||
270 | } | ||
271 | } | ||
272 | |||
273 | cmd.ExecuteNonQuery(); | ||
274 | |||
275 | SaveBanList(es); | ||
276 | SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers); | ||
277 | SaveUUIDList(es.EstateID, "estate_users", es.EstateAccess); | ||
278 | SaveUUIDList(es.EstateID, "estate_groups", es.EstateGroups); | ||
279 | } | ||
280 | |||
281 | private void LoadBanList(EstateSettings es) | ||
282 | { | ||
283 | es.ClearBans(); | ||
284 | |||
285 | CheckConnection(); | ||
286 | |||
287 | MySqlCommand cmd = m_connection.CreateCommand(); | ||
288 | |||
289 | cmd.CommandText = "select bannedUUID from estateban where EstateID = ?EstateID"; | ||
290 | cmd.Parameters.Add("?EstateID", es.EstateID); | ||
291 | |||
292 | IDataReader r = cmd.ExecuteReader(); | ||
293 | |||
294 | while(r.Read()) | ||
295 | { | ||
296 | EstateBan eb = new EstateBan(); | ||
297 | |||
298 | LLUUID uuid = new LLUUID(); | ||
299 | LLUUID.TryParse(r["bannedUUID"].ToString(), out uuid); | ||
300 | |||
301 | eb.bannedUUID = uuid; | ||
302 | eb.bannedIP = "0.0.0.0"; | ||
303 | eb.bannedIPHostMask = "0.0.0.0"; | ||
304 | es.AddBan(eb); | ||
305 | } | ||
306 | r.Close(); | ||
307 | } | ||
308 | |||
309 | private void SaveBanList(EstateSettings es) | ||
310 | { | ||
311 | CheckConnection(); | ||
312 | |||
313 | MySqlCommand cmd = m_connection.CreateCommand(); | ||
314 | |||
315 | cmd.CommandText = "delete from estateban where EstateID = ?EstateID"; | ||
316 | cmd.Parameters.Add("?EstateID", es.EstateID.ToString()); | ||
317 | |||
318 | cmd.ExecuteNonQuery(); | ||
319 | |||
320 | cmd.Parameters.Clear(); | ||
321 | |||
322 | cmd.CommandText = "insert into estateban (EstateID, bannedUUID) values ( ?EstateID, ?bannedUUID )"; | ||
323 | |||
324 | foreach(EstateBan b in es.EstateBans) | ||
325 | { | ||
326 | cmd.Parameters.Add("?EstateID", es.EstateID.ToString()); | ||
327 | cmd.Parameters.Add("?bannedUUID", b.bannedUUID.ToString()); | ||
328 | |||
329 | cmd.ExecuteNonQuery(); | ||
330 | cmd.Parameters.Clear(); | ||
331 | } | ||
332 | } | ||
333 | |||
334 | void SaveUUIDList(uint EstateID, string table, LLUUID[] data) | ||
335 | { | ||
336 | CheckConnection(); | ||
337 | |||
338 | MySqlCommand cmd = m_connection.CreateCommand(); | ||
339 | |||
340 | cmd.CommandText = "delete from "+table+" where EstateID = ?EstateID"; | ||
341 | cmd.Parameters.Add("?EstateID", EstateID.ToString()); | ||
342 | |||
343 | cmd.ExecuteNonQuery(); | ||
344 | |||
345 | cmd.Parameters.Clear(); | ||
346 | |||
347 | cmd.CommandText = "insert into "+table+" (EstateID, uuid) values ( ?EstateID, ?uuid )"; | ||
348 | |||
349 | foreach(LLUUID uuid in data) | ||
350 | { | ||
351 | cmd.Parameters.Add("?EstateID", EstateID.ToString()); | ||
352 | cmd.Parameters.Add("?uuid", uuid.ToString()); | ||
353 | |||
354 | cmd.ExecuteNonQuery(); | ||
355 | cmd.Parameters.Clear(); | ||
356 | } | ||
357 | } | ||
358 | |||
359 | LLUUID[] LoadUUIDList(uint EstateID, string table) | ||
360 | { | ||
361 | List<LLUUID> uuids = new List<LLUUID>(); | ||
362 | |||
363 | CheckConnection(); | ||
364 | |||
365 | MySqlCommand cmd = m_connection.CreateCommand(); | ||
366 | |||
367 | cmd.CommandText = "select uuid from "+table+" where EstateID = ?EstateID"; | ||
368 | cmd.Parameters.Add("?EstateID", EstateID); | ||
369 | |||
370 | IDataReader r = cmd.ExecuteReader(); | ||
371 | |||
372 | while(r.Read()) | ||
373 | { | ||
374 | EstateBan eb = new EstateBan(); | ||
375 | |||
376 | LLUUID uuid = new LLUUID(); | ||
377 | LLUUID.TryParse(r["uuid"].ToString(), out uuid); | ||
378 | |||
379 | uuids.Add(uuid); | ||
380 | } | ||
381 | r.Close(); | ||
382 | |||
383 | return uuids.ToArray(); | ||
384 | } | ||
385 | } | ||
386 | } | ||
diff --git a/OpenSim/Data/MySQL/Resources/013_RegionStore.sql b/OpenSim/Data/MySQL/Resources/013_RegionStore.sql new file mode 100644 index 0000000..a6bd30d --- /dev/null +++ b/OpenSim/Data/MySQL/Resources/013_RegionStore.sql | |||
@@ -0,0 +1,103 @@ | |||
1 | begin; | ||
2 | |||
3 | drop table regionsettings; | ||
4 | |||
5 | CREATE TABLE `regionsettings` ( | ||
6 | `regionUUID` char(36) NOT NULL, | ||
7 | `block_terraform` int(11) NOT NULL, | ||
8 | `block_fly` int(11) NOT NULL, | ||
9 | `allow_damage` int(11) NOT NULL, | ||
10 | `restrict_pushing` int(11) NOT NULL, | ||
11 | `allow_land_resell` int(11) NOT NULL, | ||
12 | `allow_land_join_divide` int(11) NOT NULL, | ||
13 | `block_show_in_search` int(11) NOT NULL, | ||
14 | `agent_limit` int(11) NOT NULL, | ||
15 | `object_bonus` float NOT NULL, | ||
16 | `maturity` int(11) NOT NULL, | ||
17 | `disable_scripts` int(11) NOT NULL, | ||
18 | `disable_collisions` int(11) NOT NULL, | ||
19 | `disable_physics` int(11) NOT NULL, | ||
20 | `terrain_texture_1` char(36) NOT NULL, | ||
21 | `terrain_texture_2` char(36) NOT NULL, | ||
22 | `terrain_texture_3` char(36) NOT NULL, | ||
23 | `terrain_texture_4` char(36) NOT NULL, | ||
24 | `elevation_1_nw` float NOT NULL, | ||
25 | `elevation_2_nw` float NOT NULL, | ||
26 | `elevation_1_ne` float NOT NULL, | ||
27 | `elevation_2_ne` float NOT NULL, | ||
28 | `elevation_1_se` float NOT NULL, | ||
29 | `elevation_2_se` float NOT NULL, | ||
30 | `elevation_1_sw` float NOT NULL, | ||
31 | `elevation_2_sw` float NOT NULL, | ||
32 | `water_height` float NOT NULL, | ||
33 | `terrain_raise_limit` float NOT NULL, | ||
34 | `terrain_lower_limit` float NOT NULL, | ||
35 | `use_estate_sun` int(11) NOT NULL, | ||
36 | `fixed_sun` int(11) NOT NULL, | ||
37 | `sun_position` float NOT NULL, | ||
38 | `covenant` char(36) default NULL, | ||
39 | `Sandbox` tinyint(4) NOT NULL, | ||
40 | PRIMARY KEY (`regionUUID`) | ||
41 | ) ENGINE=InnoDB; | ||
42 | |||
43 | CREATE TABLE `estate_managers` ( | ||
44 | `EstateID` int(10) unsigned NOT NULL, | ||
45 | `uuid` char(36) NOT NULL, | ||
46 | KEY `EstateID` (`EstateID`) | ||
47 | ) ENGINE=InnoDB; | ||
48 | |||
49 | CREATE TABLE `estate_groups` ( | ||
50 | `EstateID` int(10) unsigned NOT NULL, | ||
51 | `uuid` char(36) NOT NULL, | ||
52 | KEY `EstateID` (`EstateID`) | ||
53 | ) ENGINE=InnoDB; | ||
54 | |||
55 | CREATE TABLE `estate_users` ( | ||
56 | `EstateID` int(10) unsigned NOT NULL, | ||
57 | `uuid` char(36) NOT NULL, | ||
58 | KEY `EstateID` (`EstateID`) | ||
59 | ) ENGINE=InnoDB; | ||
60 | |||
61 | CREATE TABLE `estateban` ( | ||
62 | `EstateID` int(10) unsigned NOT NULL, | ||
63 | `bannedUUID` varchar(36) NOT NULL, | ||
64 | `bannedIp` varchar(16) NOT NULL, | ||
65 | `bannedIpHostMask` varchar(16) NOT NULL, | ||
66 | `bannedNameMask` varchar(64) default NULL, | ||
67 | KEY `estateban_EstateID` (`EstateID`) | ||
68 | ) ENGINE=InnoDB; | ||
69 | |||
70 | CREATE TABLE `estate_settings` ( | ||
71 | `EstateID` int(10) unsigned NOT NULL auto_increment, | ||
72 | `EstateName` varchar(64) default NULL, | ||
73 | `AbuseEmailToEstateOwner` tinyint(4) NOT NULL, | ||
74 | `DenyAnonymous` tinyint(4) NOT NULL, | ||
75 | `ResetHomeOnTeleport` tinyint(4) NOT NULL, | ||
76 | `FixedSun` tinyint(4) NOT NULL, | ||
77 | `DenyTransacted` tinyint(4) NOT NULL, | ||
78 | `BlockDwell` tinyint(4) NOT NULL, | ||
79 | `DenyIdentified` tinyint(4) NOT NULL, | ||
80 | `AllowVoice` tinyint(4) NOT NULL, | ||
81 | `UseGlobalTime` tinyint(4) NOT NULL, | ||
82 | `PricePerMeter` int(11) NOT NULL, | ||
83 | `TaxFree` tinyint(4) NOT NULL, | ||
84 | `AllowDirectTeleport` tinyint(4) NOT NULL, | ||
85 | `RedirectGridX` int(11) NOT NULL, | ||
86 | `RedirectGridY` int(11) NOT NULL, | ||
87 | `ParentEstateID` int(10) unsigned NOT NULL, | ||
88 | `SunPosition` double NOT NULL, | ||
89 | `EstateSkipScripts` tinyint(4) NOT NULL, | ||
90 | `BillableFactor` float NOT NULL, | ||
91 | `PublicAccess` tinyint(4) NOT NULL, | ||
92 | PRIMARY KEY (`EstateID`) | ||
93 | ) ENGINE=InnoDB AUTO_INCREMENT=100; | ||
94 | |||
95 | CREATE TABLE `estate_map` ( | ||
96 | `RegionID` char(36) NOT NULL default '00000000-0000-0000-0000-000000000000', | ||
97 | `EstateID` int(11) NOT NULL, | ||
98 | PRIMARY KEY (`RegionID`), | ||
99 | KEY `EstateID` (`EstateID`) | ||
100 | ) ENGINE=InnoDB; | ||
101 | |||
102 | commit; | ||
103 | |||
diff --git a/OpenSim/Data/NHibernate/NHibernateRegionData.cs b/OpenSim/Data/NHibernate/NHibernateRegionData.cs index 9dee95c..2014e24 100644 --- a/OpenSim/Data/NHibernate/NHibernateRegionData.cs +++ b/OpenSim/Data/NHibernate/NHibernateRegionData.cs | |||
@@ -349,9 +349,9 @@ namespace OpenSim.Data.NHibernate | |||
349 | /// </summary> | 349 | /// </summary> |
350 | /// <param name="regionUUID">the region UUID</param> | 350 | /// <param name="regionUUID">the region UUID</param> |
351 | /// <returns>The banlist</returns> | 351 | /// <returns>The banlist</returns> |
352 | public List<RegionBanListItem> LoadRegionBanList(LLUUID regionUUID) | 352 | public List<EstateBan> LoadRegionBanList(LLUUID regionUUID) |
353 | { | 353 | { |
354 | List<RegionBanListItem> regionbanlist = new List<RegionBanListItem>(); | 354 | List<EstateBan> regionbanlist = new List<EstateBan>(); |
355 | 355 | ||
356 | return regionbanlist; | 356 | return regionbanlist; |
357 | } | 357 | } |
@@ -360,7 +360,7 @@ namespace OpenSim.Data.NHibernate | |||
360 | /// Add en entry into region banlist | 360 | /// Add en entry into region banlist |
361 | /// </summary> | 361 | /// </summary> |
362 | /// <param name="item"></param> | 362 | /// <param name="item"></param> |
363 | public void AddToRegionBanlist(RegionBanListItem item) | 363 | public void AddToRegionBanlist(EstateBan item) |
364 | { | 364 | { |
365 | 365 | ||
366 | } | 366 | } |
@@ -369,7 +369,7 @@ namespace OpenSim.Data.NHibernate | |||
369 | /// remove an entry from the region banlist | 369 | /// remove an entry from the region banlist |
370 | /// </summary> | 370 | /// </summary> |
371 | /// <param name="item"></param> | 371 | /// <param name="item"></param> |
372 | public void RemoveFromRegionBanlist(RegionBanListItem item) | 372 | public void RemoveFromRegionBanlist(EstateBan item) |
373 | { | 373 | { |
374 | 374 | ||
375 | } | 375 | } |
diff --git a/OpenSim/Data/Null/NullDataStore.cs b/OpenSim/Data/Null/NullDataStore.cs index 422c0c6..e244a5e 100644 --- a/OpenSim/Data/Null/NullDataStore.cs +++ b/OpenSim/Data/Null/NullDataStore.cs | |||
@@ -92,22 +92,6 @@ namespace OpenSim.Data.Null | |||
92 | return new List<LandData>(); | 92 | return new List<LandData>(); |
93 | } | 93 | } |
94 | 94 | ||
95 | public List<RegionBanListItem> LoadRegionBanList(LLUUID regionUUID) | ||
96 | { | ||
97 | List<RegionBanListItem> regionbanlist = new List<RegionBanListItem>(); | ||
98 | return regionbanlist; | ||
99 | } | ||
100 | |||
101 | public void AddToRegionBanlist(RegionBanListItem item) | ||
102 | { | ||
103 | |||
104 | } | ||
105 | |||
106 | public void RemoveFromRegionBanlist(RegionBanListItem item) | ||
107 | { | ||
108 | |||
109 | } | ||
110 | |||
111 | public void Shutdown() | 95 | public void Shutdown() |
112 | { | 96 | { |
113 | } | 97 | } |
diff --git a/OpenSim/Data/SQLite/Resources/006_RegionStore.sql b/OpenSim/Data/SQLite/Resources/006_RegionStore.sql new file mode 100644 index 0000000..025f1a9 --- /dev/null +++ b/OpenSim/Data/SQLite/Resources/006_RegionStore.sql | |||
@@ -0,0 +1,92 @@ | |||
1 | CREATE TABLE `estate_groups` ( | ||
2 | `EstateID` int(10) NOT NULL, | ||
3 | `uuid` char(36) NOT NULL | ||
4 | ); | ||
5 | CREATE TABLE `estate_managers` ( | ||
6 | `EstateID` int(10) NOT NULL, | ||
7 | `uuid` char(36) NOT NULL | ||
8 | ); | ||
9 | CREATE TABLE `estate_map` ( | ||
10 | `RegionID` char(36) NOT NULL default '00000000-0000-0000-0000-000000000000', | ||
11 | `EstateID` int(11) NOT NULL | ||
12 | ); | ||
13 | CREATE TABLE `estate_settings` ( | ||
14 | `EstateID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, | ||
15 | `EstateName` varchar(64) default NULL, | ||
16 | `AbuseEmailToEstateOwner` tinyint(4) NOT NULL, | ||
17 | `DenyAnonymous` tinyint(4) NOT NULL, | ||
18 | `ResetHomeOnTeleport` tinyint(4) NOT NULL, | ||
19 | `FixedSun` tinyint(4) NOT NULL, | ||
20 | `DenyTransacted` tinyint(4) NOT NULL, | ||
21 | `BlockDwell` tinyint(4) NOT NULL, | ||
22 | `DenyIdentified` tinyint(4) NOT NULL, | ||
23 | `AllowVoice` tinyint(4) NOT NULL, | ||
24 | `UseGlobalTime` tinyint(4) NOT NULL, | ||
25 | `PricePerMeter` int(11) NOT NULL, | ||
26 | `TaxFree` tinyint(4) NOT NULL, | ||
27 | `AllowDirectTeleport` tinyint(4) NOT NULL, | ||
28 | `RedirectGridX` int(11) NOT NULL, | ||
29 | `RedirectGridY` int(11) NOT NULL, | ||
30 | `ParentEstateID` int(10) NOT NULL, | ||
31 | `SunPosition` double NOT NULL, | ||
32 | `EstateSkipScripts` tinyint(4) NOT NULL, | ||
33 | `BillableFactor` float NOT NULL, | ||
34 | `PublicAccess` tinyint(4) NOT NULL | ||
35 | ); | ||
36 | insert into `estate_settings` (`EstateID`,`EstateName`,`AbuseEmailToEstateOwner`,`DenyAnonymous`,`ResetHomeOnTeleport`,`FixedSun`,`DenyTransacted`,`BlockDwell`,`DenyIdentified`,`AllowVoice`,`UseGlobalTime`,`PricePerMeter`,`TaxFree`,`AllowDirectTeleport`,`RedirectGridX`,`RedirectGridY`,`ParentEstateID`,`SunPosition`,`PublicAccess`,`EstateSkipScripts`,`BillableFactor`) values ( 99, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); | ||
37 | delete from `estate_settings`; | ||
38 | CREATE TABLE `estate_users` ( | ||
39 | `EstateID` int(10) NOT NULL, | ||
40 | `uuid` char(36) NOT NULL | ||
41 | ); | ||
42 | CREATE TABLE `estateban` ( | ||
43 | `EstateID` int(10) NOT NULL, | ||
44 | `bannedUUID` varchar(36) NOT NULL, | ||
45 | `bannedIp` varchar(16) NOT NULL, | ||
46 | `bannedIpHostMask` varchar(16) NOT NULL, | ||
47 | `bannedNameMask` varchar(64) default NULL | ||
48 | ); | ||
49 | drop table if exists `regionsettings`; | ||
50 | CREATE TABLE `regionsettings` ( | ||
51 | `regionUUID` char(36) NOT NULL, | ||
52 | `block_terraform` int(11) NOT NULL, | ||
53 | `block_fly` int(11) NOT NULL, | ||
54 | `allow_damage` int(11) NOT NULL, | ||
55 | `restrict_pushing` int(11) NOT NULL, | ||
56 | `allow_land_resell` int(11) NOT NULL, | ||
57 | `allow_land_join_divide` int(11) NOT NULL, | ||
58 | `block_show_in_search` int(11) NOT NULL, | ||
59 | `agent_limit` int(11) NOT NULL, | ||
60 | `object_bonus` float NOT NULL, | ||
61 | `maturity` int(11) NOT NULL, | ||
62 | `disable_scripts` int(11) NOT NULL, | ||
63 | `disable_collisions` int(11) NOT NULL, | ||
64 | `disable_physics` int(11) NOT NULL, | ||
65 | `terrain_texture_1` char(36) NOT NULL, | ||
66 | `terrain_texture_2` char(36) NOT NULL, | ||
67 | `terrain_texture_3` char(36) NOT NULL, | ||
68 | `terrain_texture_4` char(36) NOT NULL, | ||
69 | `elevation_1_nw` float NOT NULL, | ||
70 | `elevation_2_nw` float NOT NULL, | ||
71 | `elevation_1_ne` float NOT NULL, | ||
72 | `elevation_2_ne` float NOT NULL, | ||
73 | `elevation_1_se` float NOT NULL, | ||
74 | `elevation_2_se` float NOT NULL, | ||
75 | `elevation_1_sw` float NOT NULL, | ||
76 | `elevation_2_sw` float NOT NULL, | ||
77 | `water_height` float NOT NULL, | ||
78 | `terrain_raise_limit` float NOT NULL, | ||
79 | `terrain_lower_limit` float NOT NULL, | ||
80 | `use_estate_sun` int(11) NOT NULL, | ||
81 | `fixed_sun` int(11) NOT NULL, | ||
82 | `sun_position` float NOT NULL, | ||
83 | `covenant` char(36) default NULL, | ||
84 | `Sandbox` tinyint(4) NOT NULL, | ||
85 | PRIMARY KEY (`regionUUID`) | ||
86 | ); | ||
87 | CREATE INDEX `estate_ban_estate_id` on `estateban`(`EstateID`); | ||
88 | CREATE INDEX `estate_groups_estate_id` on `estate_groups`(`EstateID`); | ||
89 | CREATE INDEX `estate_managers_estate_id` on `estate_managers`(`EstateID`); | ||
90 | CREATE INDEX `estate_map_estate_id` on `estate_map`(`EstateID`); | ||
91 | CREATE UNIQUE INDEX `estate_map_region)id` on `estate_map`(`RegionID`); | ||
92 | CREATE INDEX `estate_users_estate_id` on `estate_users`(`EstateID`); | ||
diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs new file mode 100644 index 0000000..2d046f2 --- /dev/null +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs | |||
@@ -0,0 +1,333 @@ | |||
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 OpenSim 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 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Data; | ||
31 | using System.IO; | ||
32 | using System.Reflection; | ||
33 | using System.Threading; | ||
34 | using libsecondlife; | ||
35 | using Mono.Data.SqliteClient; | ||
36 | using log4net; | ||
37 | using OpenSim.Framework; | ||
38 | using OpenSim.Region.Environment.Interfaces; | ||
39 | using OpenSim.Region.Environment.Scenes; | ||
40 | |||
41 | namespace OpenSim.Data.MySQL | ||
42 | { | ||
43 | public class MySQLEstateStore : IEstateDataStore | ||
44 | { | ||
45 | private static readonly ILog m_log = | ||
46 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
47 | |||
48 | private SqliteConnection m_connection; | ||
49 | private string m_connectionString; | ||
50 | |||
51 | private FieldInfo[] m_Fields; | ||
52 | private Dictionary<string, FieldInfo> m_FieldMap = | ||
53 | new Dictionary<string, FieldInfo>(); | ||
54 | |||
55 | public void Initialise(string connectionString) | ||
56 | { | ||
57 | m_connectionString = connectionString; | ||
58 | |||
59 | m_log.Info("[ESTATE DB]: Sqlite - connecting: "+m_connectionString); | ||
60 | |||
61 | m_connection = new SqliteConnection(m_connectionString); | ||
62 | m_connection.Open(); | ||
63 | |||
64 | Assembly assem = GetType().Assembly; | ||
65 | Migration m = new Migration(m_connection, assem, "EstateStore"); | ||
66 | m.Update(); | ||
67 | |||
68 | m_connection.Close(); | ||
69 | m_connection.Open(); | ||
70 | |||
71 | Type t = typeof(EstateSettings); | ||
72 | m_Fields = t.GetFields(BindingFlags.NonPublic | | ||
73 | BindingFlags.Instance | | ||
74 | BindingFlags.DeclaredOnly); | ||
75 | |||
76 | foreach (FieldInfo f in m_Fields) | ||
77 | if(f.Name.Substring(0, 2) == "m_") | ||
78 | m_FieldMap[f.Name.Substring(2)] = f; | ||
79 | } | ||
80 | |||
81 | private string[] FieldList | ||
82 | { | ||
83 | get { return new List<string>(m_FieldMap.Keys).ToArray(); } | ||
84 | } | ||
85 | |||
86 | public EstateSettings LoadEstateSettings(LLUUID regionID) | ||
87 | { | ||
88 | EstateSettings es = new EstateSettings(); | ||
89 | |||
90 | string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = @RegionID"; | ||
91 | |||
92 | SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); | ||
93 | |||
94 | cmd.CommandText = sql; | ||
95 | cmd.Parameters.Add("@RegionID", regionID.ToString()); | ||
96 | |||
97 | IDataReader r = cmd.ExecuteReader(); | ||
98 | |||
99 | if(r.Read()) | ||
100 | { | ||
101 | foreach (string name in FieldList) | ||
102 | { | ||
103 | if(m_FieldMap[name].GetValue(es) is bool) | ||
104 | { | ||
105 | int v = Convert.ToInt32(r[name]); | ||
106 | if(v != 0) | ||
107 | m_FieldMap[name].SetValue(es, true); | ||
108 | else | ||
109 | m_FieldMap[name].SetValue(es, false); | ||
110 | } | ||
111 | else | ||
112 | { | ||
113 | m_FieldMap[name].SetValue(es, Convert.ChangeType(r[name], m_FieldMap[name].FieldType)); | ||
114 | } | ||
115 | } | ||
116 | r.Close(); | ||
117 | } | ||
118 | else | ||
119 | { | ||
120 | // Migration case | ||
121 | // | ||
122 | r.Close(); | ||
123 | |||
124 | List<string> names = new List<string>(FieldList); | ||
125 | |||
126 | names.Remove("EstateID"); | ||
127 | |||
128 | sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( @"+String.Join(", @", names.ToArray())+")"; | ||
129 | |||
130 | cmd.CommandText = sql; | ||
131 | cmd.Parameters.Clear(); | ||
132 | |||
133 | foreach (string name in FieldList) | ||
134 | { | ||
135 | if(m_FieldMap[name].GetValue(es) is bool) | ||
136 | { | ||
137 | if((bool)m_FieldMap[name].GetValue(es)) | ||
138 | cmd.Parameters.Add("@"+name, "1"); | ||
139 | else | ||
140 | cmd.Parameters.Add("@"+name, "0"); | ||
141 | } | ||
142 | else | ||
143 | { | ||
144 | cmd.Parameters.Add("@"+name, m_FieldMap[name].GetValue(es).ToString()); | ||
145 | } | ||
146 | } | ||
147 | |||
148 | cmd.ExecuteNonQuery(); | ||
149 | |||
150 | cmd.CommandText = "select LAST_INSERT_ROWID() as id"; | ||
151 | cmd.Parameters.Clear(); | ||
152 | |||
153 | r = cmd.ExecuteReader(); | ||
154 | |||
155 | r.Read(); | ||
156 | |||
157 | es.EstateID = Convert.ToUInt32(r["id"]); | ||
158 | |||
159 | r.Close(); | ||
160 | |||
161 | cmd.CommandText = "insert into estate_map values (@RegionID, @EstateID)"; | ||
162 | cmd.Parameters.Add("@RegionID", regionID.ToString()); | ||
163 | cmd.Parameters.Add("@EstateID", es.EstateID.ToString()); | ||
164 | |||
165 | // This will throw on dupe key | ||
166 | try | ||
167 | { | ||
168 | cmd.ExecuteNonQuery(); | ||
169 | } | ||
170 | catch (Exception) | ||
171 | { | ||
172 | } | ||
173 | |||
174 | // Munge and transfer the ban list | ||
175 | // | ||
176 | cmd.Parameters.Clear(); | ||
177 | cmd.CommandText = "insert into estateban select "+es.EstateID.ToString()+", bannedUUID, bannedIp, bannedIpHostMask, '' from regionban where regionban.regionUUID = @UUID"; | ||
178 | cmd.Parameters.Add("@UUID", regionID.ToString()); | ||
179 | |||
180 | try | ||
181 | { | ||
182 | cmd.ExecuteNonQuery(); | ||
183 | } | ||
184 | catch (Exception) | ||
185 | { | ||
186 | } | ||
187 | } | ||
188 | |||
189 | LoadBanList(es); | ||
190 | |||
191 | es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); | ||
192 | es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); | ||
193 | es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); | ||
194 | return es; | ||
195 | } | ||
196 | |||
197 | public void StoreEstateSettings(EstateSettings es) | ||
198 | { | ||
199 | List<string> fields = new List<string>(FieldList); | ||
200 | fields.Remove("EstateID"); | ||
201 | |||
202 | List<string> terms = new List<string>(); | ||
203 | |||
204 | foreach (string f in fields) | ||
205 | terms.Add(f+" = @"+f); | ||
206 | |||
207 | string sql = "update estate_settings set "+String.Join(", ", terms.ToArray())+" where EstateID = @EstateID"; | ||
208 | |||
209 | SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); | ||
210 | |||
211 | cmd.CommandText = sql; | ||
212 | |||
213 | foreach (string name in FieldList) | ||
214 | { | ||
215 | if(m_FieldMap[name].GetValue(es) is bool) | ||
216 | { | ||
217 | if((bool)m_FieldMap[name].GetValue(es)) | ||
218 | cmd.Parameters.Add("@"+name, "1"); | ||
219 | else | ||
220 | cmd.Parameters.Add("@"+name, "0"); | ||
221 | } | ||
222 | else | ||
223 | { | ||
224 | cmd.Parameters.Add("@"+name, m_FieldMap[name].GetValue(es).ToString()); | ||
225 | } | ||
226 | } | ||
227 | |||
228 | cmd.ExecuteNonQuery(); | ||
229 | |||
230 | SaveBanList(es); | ||
231 | SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers); | ||
232 | SaveUUIDList(es.EstateID, "estate_users", es.EstateAccess); | ||
233 | SaveUUIDList(es.EstateID, "estate_groups", es.EstateGroups); | ||
234 | } | ||
235 | |||
236 | private void LoadBanList(EstateSettings es) | ||
237 | { | ||
238 | es.ClearBans(); | ||
239 | |||
240 | SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); | ||
241 | |||
242 | cmd.CommandText = "select bannedUUID from estateban where EstateID = @EstateID"; | ||
243 | cmd.Parameters.Add("@EstateID", es.EstateID); | ||
244 | |||
245 | IDataReader r = cmd.ExecuteReader(); | ||
246 | |||
247 | while(r.Read()) | ||
248 | { | ||
249 | EstateBan eb = new EstateBan(); | ||
250 | |||
251 | LLUUID uuid = new LLUUID(); | ||
252 | LLUUID.TryParse(r["bannedUUID"].ToString(), out uuid); | ||
253 | |||
254 | eb.bannedUUID = uuid; | ||
255 | eb.bannedIP = "0.0.0.0"; | ||
256 | eb.bannedIPHostMask = "0.0.0.0"; | ||
257 | es.AddBan(eb); | ||
258 | } | ||
259 | r.Close(); | ||
260 | } | ||
261 | |||
262 | private void SaveBanList(EstateSettings es) | ||
263 | { | ||
264 | SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); | ||
265 | |||
266 | cmd.CommandText = "delete from estateban where EstateID = @EstateID"; | ||
267 | cmd.Parameters.Add("@EstateID", es.EstateID.ToString()); | ||
268 | |||
269 | cmd.ExecuteNonQuery(); | ||
270 | |||
271 | cmd.Parameters.Clear(); | ||
272 | |||
273 | cmd.CommandText = "insert into estateban (EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask) values ( @EstateID, @bannedUUID, '', '', '' )"; | ||
274 | |||
275 | foreach(EstateBan b in es.EstateBans) | ||
276 | { | ||
277 | cmd.Parameters.Add("@EstateID", es.EstateID.ToString()); | ||
278 | cmd.Parameters.Add("@bannedUUID", b.bannedUUID.ToString()); | ||
279 | |||
280 | cmd.ExecuteNonQuery(); | ||
281 | cmd.Parameters.Clear(); | ||
282 | } | ||
283 | } | ||
284 | |||
285 | void SaveUUIDList(uint EstateID, string table, LLUUID[] data) | ||
286 | { | ||
287 | SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); | ||
288 | |||
289 | cmd.CommandText = "delete from "+table+" where EstateID = @EstateID"; | ||
290 | cmd.Parameters.Add("@EstateID", EstateID.ToString()); | ||
291 | |||
292 | cmd.ExecuteNonQuery(); | ||
293 | |||
294 | cmd.Parameters.Clear(); | ||
295 | |||
296 | cmd.CommandText = "insert into "+table+" (EstateID, uuid) values ( @EstateID, @uuid )"; | ||
297 | |||
298 | foreach(LLUUID uuid in data) | ||
299 | { | ||
300 | cmd.Parameters.Add("@EstateID", EstateID.ToString()); | ||
301 | cmd.Parameters.Add("@uuid", uuid.ToString()); | ||
302 | |||
303 | cmd.ExecuteNonQuery(); | ||
304 | cmd.Parameters.Clear(); | ||
305 | } | ||
306 | } | ||
307 | |||
308 | LLUUID[] LoadUUIDList(uint EstateID, string table) | ||
309 | { | ||
310 | List<LLUUID> uuids = new List<LLUUID>(); | ||
311 | |||
312 | SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); | ||
313 | |||
314 | cmd.CommandText = "select uuid from "+table+" where EstateID = @EstateID"; | ||
315 | cmd.Parameters.Add("@EstateID", EstateID); | ||
316 | |||
317 | IDataReader r = cmd.ExecuteReader(); | ||
318 | |||
319 | while(r.Read()) | ||
320 | { | ||
321 | EstateBan eb = new EstateBan(); | ||
322 | |||
323 | LLUUID uuid = new LLUUID(); | ||
324 | LLUUID.TryParse(r["uuid"].ToString(), out uuid); | ||
325 | |||
326 | uuids.Add(uuid); | ||
327 | } | ||
328 | r.Close(); | ||
329 | |||
330 | return uuids.ToArray(); | ||
331 | } | ||
332 | } | ||
333 | } | ||
diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs index 0e67fb9..4e87e0d 100644 --- a/OpenSim/Data/SQLite/SQLiteRegionData.cs +++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs | |||
@@ -62,7 +62,6 @@ namespace OpenSim.Data.SQLite | |||
62 | private SqliteDataAdapter terrainDa; | 62 | private SqliteDataAdapter terrainDa; |
63 | private SqliteDataAdapter landDa; | 63 | private SqliteDataAdapter landDa; |
64 | private SqliteDataAdapter landAccessListDa; | 64 | private SqliteDataAdapter landAccessListDa; |
65 | private SqliteDataAdapter regionBanListDa; | ||
66 | 65 | ||
67 | private SqliteConnection m_conn; | 66 | private SqliteConnection m_conn; |
68 | 67 | ||
@@ -119,9 +118,6 @@ namespace OpenSim.Data.SQLite | |||
119 | SqliteCommand landAccessListSelectCmd = new SqliteCommand(landAccessListSelect, m_conn); | 118 | SqliteCommand landAccessListSelectCmd = new SqliteCommand(landAccessListSelect, m_conn); |
120 | landAccessListDa = new SqliteDataAdapter(landAccessListSelectCmd); | 119 | landAccessListDa = new SqliteDataAdapter(landAccessListSelectCmd); |
121 | 120 | ||
122 | SqliteCommand regionBanListSelectCmd = new SqliteCommand(regionbanListSelect, m_conn); | ||
123 | regionBanListDa = new SqliteDataAdapter(regionBanListSelectCmd); | ||
124 | |||
125 | // This actually does the roll forward assembly stuff | 121 | // This actually does the roll forward assembly stuff |
126 | Assembly assem = GetType().Assembly; | 122 | Assembly assem = GetType().Assembly; |
127 | Migration m = new Migration(m_conn, assem, "RegionStore"); | 123 | Migration m = new Migration(m_conn, assem, "RegionStore"); |
@@ -157,10 +153,6 @@ namespace OpenSim.Data.SQLite | |||
157 | ds.Tables.Add(createLandAccessListTable()); | 153 | ds.Tables.Add(createLandAccessListTable()); |
158 | setupLandAccessCommands(landAccessListDa, m_conn); | 154 | setupLandAccessCommands(landAccessListDa, m_conn); |
159 | 155 | ||
160 | ds.Tables.Add(createRegionBanListTable()); | ||
161 | setupRegionBanCommands(regionBanListDa, m_conn); | ||
162 | |||
163 | |||
164 | // WORKAROUND: This is a work around for sqlite on | 156 | // WORKAROUND: This is a work around for sqlite on |
165 | // windows, which gets really unhappy with blob columns | 157 | // windows, which gets really unhappy with blob columns |
166 | // that have no sample data in them. At some point we | 158 | // that have no sample data in them. At some point we |
@@ -201,15 +193,6 @@ namespace OpenSim.Data.SQLite | |||
201 | m_log.Info("[REGION DB]: Caught fill error on landaccesslist table"); | 193 | m_log.Info("[REGION DB]: Caught fill error on landaccesslist table"); |
202 | } | 194 | } |
203 | 195 | ||
204 | try | ||
205 | { | ||
206 | regionBanListDa.Fill(ds.Tables["regionban"]); | ||
207 | } | ||
208 | catch (Exception) | ||
209 | { | ||
210 | m_log.Info("[REGION DB]: Caught fill error on regionban table"); | ||
211 | } | ||
212 | |||
213 | return; | 196 | return; |
214 | } | 197 | } |
215 | } | 198 | } |
@@ -900,21 +883,6 @@ namespace OpenSim.Data.SQLite | |||
900 | return landaccess; | 883 | return landaccess; |
901 | } | 884 | } |
902 | 885 | ||
903 | /// <summary> | ||
904 | /// create "regionban" table | ||
905 | /// </summary> | ||
906 | /// <returns>regionban datatable</returns> | ||
907 | private static DataTable createRegionBanListTable() | ||
908 | { | ||
909 | DataTable regionbanlist = new DataTable("regionban"); | ||
910 | createCol(regionbanlist, "regionUUID", typeof(String)); | ||
911 | createCol(regionbanlist, "bannedUUID", typeof(String)); | ||
912 | createCol(regionbanlist, "bannedIp", typeof(String)); | ||
913 | createCol(regionbanlist, "bannedIpHostMask", typeof(String)); | ||
914 | |||
915 | return regionbanlist; | ||
916 | } | ||
917 | |||
918 | /*********************************************************************** | 886 | /*********************************************************************** |
919 | * | 887 | * |
920 | * Convert between ADO.NET <=> OpenSim Objects | 888 | * Convert between ADO.NET <=> OpenSim Objects |
@@ -1178,74 +1146,6 @@ namespace OpenSim.Data.SQLite | |||
1178 | return entry; | 1146 | return entry; |
1179 | } | 1147 | } |
1180 | 1148 | ||
1181 | |||
1182 | /// <summary> | ||
1183 | /// Load a region banlist | ||
1184 | /// </summary> | ||
1185 | /// <param name="regionUUID">the region UUID</param> | ||
1186 | /// <returns>The banlist</returns> | ||
1187 | public List<RegionBanListItem> LoadRegionBanList(LLUUID regionUUID) | ||
1188 | { | ||
1189 | List<RegionBanListItem> regionbanlist = new List<RegionBanListItem>(); | ||
1190 | lock (ds) | ||
1191 | { | ||
1192 | DataTable regionban = ds.Tables["regionban"]; | ||
1193 | string searchExp = "regionUUID = '" + regionUUID.ToString() + "'"; | ||
1194 | DataRow[] rawbanlist = regionban.Select(searchExp); | ||
1195 | foreach (DataRow rawbanrow in rawbanlist) | ||
1196 | { | ||
1197 | RegionBanListItem rbli = new RegionBanListItem(); | ||
1198 | LLUUID tmpvalue = LLUUID.Zero; | ||
1199 | |||
1200 | rbli.regionUUID = regionUUID; | ||
1201 | |||
1202 | if (Helpers.TryParse((string)rawbanrow["bannedUUID"], out tmpvalue)) | ||
1203 | rbli.bannedUUID = tmpvalue; | ||
1204 | |||
1205 | rbli.bannedIP = (string)rawbanrow["bannedIp"]; | ||
1206 | rbli.bannedIPHostMask = (string)rawbanrow["bannedIpHostMask"]; | ||
1207 | regionbanlist.Add(rbli); | ||
1208 | } | ||
1209 | } | ||
1210 | return regionbanlist; | ||
1211 | } | ||
1212 | |||
1213 | /// <summary> | ||
1214 | /// Add en entry into region banlist | ||
1215 | /// </summary> | ||
1216 | /// <param name="item"></param> | ||
1217 | public void AddToRegionBanlist(RegionBanListItem item) | ||
1218 | { | ||
1219 | lock (ds) | ||
1220 | { | ||
1221 | using (SqliteCommand cmd = new SqliteCommand("insert into regionban (regionUUID, bannedUUID, bannedIp, bannedIpHostMask) values (:regionUUID,:bannedUUID,:bannedIp,:bannedIpHostMask)", m_conn)) | ||
1222 | { | ||
1223 | cmd.Parameters.Add(new SqliteParameter(":regionUUID", item.regionUUID.ToString())); | ||
1224 | cmd.Parameters.Add(new SqliteParameter(":bannedUUID", item.bannedUUID.ToString())); | ||
1225 | cmd.Parameters.Add(new SqliteParameter(":bannedIp", item.bannedIP)); | ||
1226 | cmd.Parameters.Add(new SqliteParameter(":bannedIpHostMask", item.bannedIPHostMask)); | ||
1227 | cmd.ExecuteNonQuery(); | ||
1228 | } | ||
1229 | } | ||
1230 | } | ||
1231 | |||
1232 | /// <summary> | ||
1233 | /// remove an entry from the region banlist | ||
1234 | /// </summary> | ||
1235 | /// <param name="item"></param> | ||
1236 | public void RemoveFromRegionBanlist(RegionBanListItem item) | ||
1237 | { | ||
1238 | lock (ds) | ||
1239 | { | ||
1240 | using (SqliteCommand cmd = new SqliteCommand("delete from regionban where regionUUID=:regionUUID AND bannedUUID=:bannedUUID", m_conn)) | ||
1241 | { | ||
1242 | cmd.Parameters.Add(new SqliteParameter(":regionUUID", item.regionUUID.ToString())); | ||
1243 | cmd.Parameters.Add(new SqliteParameter(":bannedUUID", item.bannedUUID.ToString())); | ||
1244 | cmd.ExecuteNonQuery(); | ||
1245 | } | ||
1246 | } | ||
1247 | } | ||
1248 | |||
1249 | /// <summary> | 1149 | /// <summary> |
1250 | /// | 1150 | /// |
1251 | /// </summary> | 1151 | /// </summary> |
@@ -1827,20 +1727,6 @@ namespace OpenSim.Data.SQLite | |||
1827 | /// </summary> | 1727 | /// </summary> |
1828 | /// <param name="da"></param> | 1728 | /// <param name="da"></param> |
1829 | /// <param name="conn"></param> | 1729 | /// <param name="conn"></param> |
1830 | private void setupRegionBanCommands(SqliteDataAdapter da, SqliteConnection conn) | ||
1831 | { | ||
1832 | da.InsertCommand = createInsertCommand("regionban", ds.Tables["regionban"]); | ||
1833 | da.InsertCommand.Connection = conn; | ||
1834 | |||
1835 | da.UpdateCommand = createUpdateCommand("regionban", "regionUUID=:regionUUID AND bannedUUID=:bannedUUID", ds.Tables["regionban"]); | ||
1836 | da.UpdateCommand.Connection = conn; | ||
1837 | } | ||
1838 | |||
1839 | /// <summary> | ||
1840 | /// | ||
1841 | /// </summary> | ||
1842 | /// <param name="da"></param> | ||
1843 | /// <param name="conn"></param> | ||
1844 | private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn) | 1730 | private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn) |
1845 | { | 1731 | { |
1846 | da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]); | 1732 | da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]); |
diff --git a/OpenSim/Framework/RegionBanListItem.cs b/OpenSim/Framework/EstateBan.cs index edf6a22..c213344 100644 --- a/OpenSim/Framework/RegionBanListItem.cs +++ b/OpenSim/Framework/EstateBan.cs | |||
@@ -32,16 +32,12 @@ using System.Text; | |||
32 | 32 | ||
33 | namespace OpenSim.Framework | 33 | namespace OpenSim.Framework |
34 | { | 34 | { |
35 | public class RegionBanListItem | 35 | public class EstateBan |
36 | { | 36 | { |
37 | public LLUUID regionUUID = LLUUID.Zero; | 37 | public uint estateID = 1; |
38 | public LLUUID bannedUUID = LLUUID.Zero; | 38 | public LLUUID bannedUUID = LLUUID.Zero; |
39 | public string bannedIP = string.Empty; | 39 | public string bannedIP = string.Empty; |
40 | public string bannedIPHostMask = string.Empty; | 40 | public string bannedIPHostMask = string.Empty; |
41 | 41 | public string bannedNameMask = string.Empty; | |
42 | public RegionBanListItem() | ||
43 | { | ||
44 | |||
45 | } | ||
46 | } | 42 | } |
47 | } | 43 | } |
diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs index 2865844..b48a1db 100644 --- a/OpenSim/Framework/EstateSettings.cs +++ b/OpenSim/Framework/EstateSettings.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.IO; | 29 | using System.IO; |
30 | using System.Reflection; | 30 | using System.Reflection; |
31 | using System.Collections.Generic; | ||
31 | using libsecondlife; | 32 | using libsecondlife; |
32 | using log4net; | 33 | using log4net; |
33 | 34 | ||
@@ -38,451 +39,440 @@ namespace OpenSim.Framework | |||
38 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 39 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
39 | private ConfigurationMember configMember; | 40 | private ConfigurationMember configMember; |
40 | 41 | ||
41 | //Settings to this island | 42 | public delegate void SaveDelegate(EstateSettings rs); |
42 | private float m_billableFactor; | ||
43 | |||
44 | private uint m_estateID; | ||
45 | private LLUUID m_estateManager0; | ||
46 | private LLUUID m_estateManager1; | ||
47 | private LLUUID m_estateManager2; | ||
48 | private LLUUID m_estateManager3; | ||
49 | private LLUUID m_estateManager4; | ||
50 | private LLUUID m_estateManager5; | ||
51 | private LLUUID m_estateManager6; | ||
52 | private LLUUID m_estateManager7; | ||
53 | private LLUUID m_estateManager8; | ||
54 | private LLUUID m_estateManager9; | ||
55 | private string m_estateName; | ||
56 | |||
57 | private uint m_parentEstateID; | ||
58 | private int m_pricePerMeter; | ||
59 | private int m_redirectGridX; | ||
60 | private int m_redirectGridY; | ||
61 | 43 | ||
62 | public EstateSettings() | 44 | public event SaveDelegate OnSave; |
45 | |||
46 | // Only the client uses these | ||
47 | // | ||
48 | private uint m_EstateID = 100; | ||
49 | |||
50 | public uint EstateID | ||
63 | { | 51 | { |
64 | // Temporary hack to prevent multiple loadings. | 52 | get { return m_EstateID; } |
65 | if (configMember == null) | 53 | set { m_EstateID = value; } |
66 | { | ||
67 | configMember = | ||
68 | new ConfigurationMember(Path.Combine(Util.configDir(), "estate_settings.xml"), "ESTATE SETTINGS", | ||
69 | loadConfigurationOptions, handleIncomingConfiguration, true); | ||
70 | configMember.performConfigurationRetrieve(); | ||
71 | } | ||
72 | } | 54 | } |
73 | 55 | ||
74 | public float billableFactor | 56 | private string m_EstateName; |
57 | |||
58 | public string EstateName | ||
75 | { | 59 | { |
76 | get { return m_billableFactor; } | 60 | get { return m_EstateName; } |
77 | set | 61 | set { m_EstateName = value; } |
78 | { | ||
79 | m_billableFactor = value; | ||
80 | configMember.forceSetConfigurationOption("billable_factor", m_billableFactor.ToString()); | ||
81 | } | ||
82 | } | 62 | } |
83 | 63 | ||
84 | public uint estateID | 64 | private uint m_ParentEstateID = 100; |
65 | |||
66 | public uint ParentEstateID | ||
85 | { | 67 | { |
86 | get { return m_estateID; } | 68 | get { return m_ParentEstateID; } |
87 | set | 69 | set { m_ParentEstateID = value; } |
88 | { | ||
89 | m_estateID = value; | ||
90 | configMember.forceSetConfigurationOption("estate_id", m_estateID.ToString()); | ||
91 | } | ||
92 | } | 70 | } |
93 | 71 | ||
94 | public uint parentEstateID | 72 | private float m_BillableFactor; |
73 | |||
74 | public float BillableFactor | ||
95 | { | 75 | { |
96 | get { return m_parentEstateID; } | 76 | get { return m_BillableFactor; } |
97 | set | 77 | set { m_BillableFactor = value; } |
98 | { | ||
99 | m_parentEstateID = value; | ||
100 | configMember.forceSetConfigurationOption("parent_estate_id", m_parentEstateID.ToString()); | ||
101 | } | ||
102 | } | 78 | } |
103 | 79 | ||
104 | public int redirectGridX | 80 | private int m_PricePerMeter; |
81 | |||
82 | public int PricePerMeter | ||
105 | { | 83 | { |
106 | get { return m_redirectGridX; } | 84 | get { return m_PricePerMeter; } |
107 | set | 85 | set { m_PricePerMeter = value; } |
108 | { | ||
109 | m_redirectGridX = value; | ||
110 | configMember.forceSetConfigurationOption("redirect_grid_x", m_redirectGridX.ToString()); | ||
111 | } | ||
112 | } | 86 | } |
113 | 87 | ||
114 | public int redirectGridY | 88 | private int m_RedirectGridX; |
89 | |||
90 | public int RedirectGridX | ||
115 | { | 91 | { |
116 | get { return m_redirectGridY; } | 92 | get { return m_RedirectGridX; } |
117 | set | 93 | set { m_RedirectGridX = value; } |
118 | { | ||
119 | m_redirectGridY = value; | ||
120 | configMember.forceSetConfigurationOption("redirect_grid_y", m_redirectGridY.ToString()); | ||
121 | } | ||
122 | } | 94 | } |
123 | 95 | ||
124 | public int pricePerMeter | 96 | private int m_RedirectGridY; |
97 | |||
98 | public int RedirectGridY | ||
125 | { | 99 | { |
126 | get { return m_pricePerMeter; } | 100 | get { return m_RedirectGridY; } |
127 | set | 101 | set { m_RedirectGridY = value; } |
128 | { | ||
129 | m_pricePerMeter = value; | ||
130 | configMember.forceSetConfigurationOption("price_per_meter", m_pricePerMeter.ToString()); | ||
131 | } | ||
132 | } | 102 | } |
133 | 103 | ||
134 | // Estate name | 104 | // Used by the sim |
105 | // | ||
106 | private bool m_UseGlobalTime = true; | ||
135 | 107 | ||
136 | public string estateName | 108 | public bool UseGlobalTime |
137 | { | 109 | { |
138 | get { return m_estateName; } | 110 | get { return m_UseGlobalTime; } |
139 | set | 111 | set { m_UseGlobalTime = value; } |
140 | { | ||
141 | m_estateName = value; | ||
142 | configMember.forceSetConfigurationOption("estate_name", m_estateName.ToString()); | ||
143 | } | ||
144 | } | 112 | } |
145 | 113 | ||
146 | public LLUUID[] estateManagers | 114 | private bool m_FixedSun = false; |
115 | |||
116 | public bool FixedSun | ||
147 | { | 117 | { |
148 | get | 118 | get { return m_FixedSun; } |
149 | { | 119 | set { m_FixedSun = value; } |
150 | // returns a condensed array of LLUUIDs | ||
151 | return GetEstateManagers(); | ||
152 | } | ||
153 | set | ||
154 | { | ||
155 | // Sets a Condensed array of LLUUIDS | ||
156 | int i = 0; | ||
157 | for (i = 0; i < value.Length; i++) | ||
158 | { | ||
159 | switch (i) | ||
160 | { | ||
161 | case 0: | ||
162 | m_estateManager0 = value[i]; | ||
163 | break; | ||
164 | case 1: | ||
165 | m_estateManager1 = value[i]; | ||
166 | break; | ||
167 | case 2: | ||
168 | m_estateManager2 = value[i]; | ||
169 | break; | ||
170 | case 3: | ||
171 | m_estateManager3 = value[i]; | ||
172 | break; | ||
173 | case 4: | ||
174 | m_estateManager4 = value[i]; | ||
175 | break; | ||
176 | case 5: | ||
177 | m_estateManager5 = value[i]; | ||
178 | break; | ||
179 | case 6: | ||
180 | m_estateManager6 = value[i]; | ||
181 | break; | ||
182 | case 7: | ||
183 | m_estateManager7 = value[i]; | ||
184 | break; | ||
185 | case 8: | ||
186 | m_estateManager8 = value[i]; | ||
187 | break; | ||
188 | case 9: | ||
189 | m_estateManager9 = value[i]; | ||
190 | break; | ||
191 | } | ||
192 | } | ||
193 | |||
194 | // Clear the rest of them.. as they're no longer valid | ||
195 | for (int j = i; j < 10; j++) | ||
196 | { | ||
197 | switch (j) | ||
198 | { | ||
199 | case 0: | ||
200 | m_estateManager0 = LLUUID.Zero; | ||
201 | break; | ||
202 | case 1: | ||
203 | m_estateManager1 = LLUUID.Zero; | ||
204 | break; | ||
205 | case 2: | ||
206 | m_estateManager2 = LLUUID.Zero; | ||
207 | break; | ||
208 | case 3: | ||
209 | m_estateManager3 = LLUUID.Zero; | ||
210 | break; | ||
211 | case 4: | ||
212 | m_estateManager4 = LLUUID.Zero; | ||
213 | break; | ||
214 | case 5: | ||
215 | m_estateManager5 = LLUUID.Zero; | ||
216 | break; | ||
217 | case 6: | ||
218 | m_estateManager6 = LLUUID.Zero; | ||
219 | break; | ||
220 | case 7: | ||
221 | m_estateManager7 = LLUUID.Zero; | ||
222 | break; | ||
223 | case 8: | ||
224 | m_estateManager8 = LLUUID.Zero; | ||
225 | break; | ||
226 | case 9: | ||
227 | m_estateManager9 = LLUUID.Zero; | ||
228 | break; | ||
229 | } | ||
230 | } | ||
231 | |||
232 | for (i = 0; i < 10; i++) | ||
233 | { | ||
234 | // Writes out the Estate managers to the XML file. | ||
235 | configMember.forceSetConfigurationOption("estate_manager_" + i, (GetEstateManagerAtPos(i)).ToString()); | ||
236 | } | ||
237 | } | ||
238 | } | 120 | } |
239 | 121 | ||
240 | #region EstateManager Get Methods to sort out skipped spots in the XML (suser error) | 122 | private double m_SunPosition = 0.0; |
241 | 123 | ||
242 | private LLUUID GetEstateManagerAtPos(int pos) | 124 | public double SunPosition |
243 | { | 125 | { |
244 | // This is a helper for writing them out to the xml file | 126 | get { return m_SunPosition; } |
245 | switch (pos) | 127 | set { m_SunPosition = value; } |
246 | { | 128 | } |
247 | case 0: | ||
248 | return m_estateManager0; | ||
249 | 129 | ||
250 | case 1: | 130 | private bool m_AllowVoice = true; |
251 | return m_estateManager1; | ||
252 | 131 | ||
253 | case 2: | 132 | public bool AllowVoice |
254 | return m_estateManager2; | 133 | { |
134 | get { return m_AllowVoice; } | ||
135 | set { m_AllowVoice = value; } | ||
136 | } | ||
255 | 137 | ||
256 | case 3: | 138 | private bool m_AllowDirectTeleport = true; |
257 | return m_estateManager3; | ||
258 | 139 | ||
259 | case 4: | 140 | public bool AllowDirectTeleport |
260 | return m_estateManager4; | 141 | { |
142 | get { return m_AllowDirectTeleport; } | ||
143 | set { m_AllowDirectTeleport = value; } | ||
144 | } | ||
261 | 145 | ||
262 | case 5: | 146 | private bool m_DenyAnonymous = false; |
263 | return m_estateManager5; | ||
264 | 147 | ||
265 | case 6: | 148 | public bool DenyAnonymous |
266 | return m_estateManager6; | 149 | { |
150 | get { return m_DenyAnonymous; } | ||
151 | set { m_DenyAnonymous = value; } | ||
152 | } | ||
267 | 153 | ||
268 | case 7: | 154 | private bool m_DenyIdentified = false; |
269 | return m_estateManager7; | ||
270 | 155 | ||
271 | case 8: | 156 | public bool DenyIdentified |
272 | return m_estateManager8; | 157 | { |
158 | get { return m_DenyIdentified; } | ||
159 | set { m_DenyIdentified = value; } | ||
160 | } | ||
273 | 161 | ||
274 | case 9: | 162 | private bool m_DenyTransacted = false; |
275 | return m_estateManager9; | ||
276 | 163 | ||
277 | default: | 164 | public bool DenyTransacted |
278 | return LLUUID.Zero; | 165 | { |
279 | } | 166 | get { return m_DenyTransacted; } |
167 | set { m_DenyTransacted = value; } | ||
280 | } | 168 | } |
281 | 169 | ||
282 | private LLUUID[] GetEstateManagers() | 170 | private bool m_AbuseEmailToEstateOwner = false; |
171 | |||
172 | public bool AbuseEmailToEstateOwner | ||
283 | { | 173 | { |
284 | int numEstateManagers = GetNumberOfEstateManagers(); | 174 | get { return m_AbuseEmailToEstateOwner; } |
285 | LLUUID[] rEstateManagers = new LLUUID[numEstateManagers]; | 175 | set { m_AbuseEmailToEstateOwner = value; } |
176 | } | ||
286 | 177 | ||
287 | int pos = 0; | 178 | private bool m_BlockDwell = false; |
288 | 179 | ||
289 | for (int i = 0; i < numEstateManagers; i++) | 180 | public bool BlockDwell |
290 | { | 181 | { |
291 | pos = GetNextEstateManager(pos); | 182 | get { return m_BlockDwell; } |
292 | 183 | set { m_BlockDwell = value; } | |
293 | rEstateManagers[i] = GetEstateManagerAtPos(pos); | ||
294 | pos++; | ||
295 | } | ||
296 | return rEstateManagers; | ||
297 | } | 184 | } |
298 | 185 | ||
299 | private int GetNextEstateManager(int startpos) | 186 | private bool m_EstateSkipScripts = false; |
187 | |||
188 | public bool EstateSkipScripts | ||
300 | { | 189 | { |
301 | // This is a utility function that skips over estate managers set to LLUUID.Zero | 190 | get { return m_EstateSkipScripts; } |
302 | int i = startpos; | 191 | set { m_EstateSkipScripts = value; } |
303 | for (i = startpos; i < 10; i++) | ||
304 | { | ||
305 | if (GetEstateManagerAtPos(i) != LLUUID.Zero) return i; | ||
306 | } | ||
307 | return i; | ||
308 | } | 192 | } |
309 | 193 | ||
310 | private int GetNumberOfEstateManagers() | 194 | private bool m_ResetHomeOnTeleport = false; |
195 | |||
196 | public bool ResetHomeOnTeleport | ||
311 | { | 197 | { |
312 | // This function returns the number of estate managers set | 198 | get { return m_ResetHomeOnTeleport; } |
313 | // Regardless of whether there is a skipped spot | 199 | set { m_ResetHomeOnTeleport = value; } |
314 | int numEstateManagers = 0; | 200 | } |
315 | if (m_estateManager0 != LLUUID.Zero) numEstateManagers++; | ||
316 | if (m_estateManager1 != LLUUID.Zero) numEstateManagers++; | ||
317 | if (m_estateManager2 != LLUUID.Zero) numEstateManagers++; | ||
318 | if (m_estateManager3 != LLUUID.Zero) numEstateManagers++; | ||
319 | if (m_estateManager4 != LLUUID.Zero) numEstateManagers++; | ||
320 | if (m_estateManager5 != LLUUID.Zero) numEstateManagers++; | ||
321 | if (m_estateManager6 != LLUUID.Zero) numEstateManagers++; | ||
322 | if (m_estateManager7 != LLUUID.Zero) numEstateManagers++; | ||
323 | if (m_estateManager8 != LLUUID.Zero) numEstateManagers++; | ||
324 | if (m_estateManager9 != LLUUID.Zero) numEstateManagers++; | ||
325 | 201 | ||
326 | return numEstateManagers; | 202 | private bool m_TaxFree = false; |
203 | |||
204 | public bool TaxFree | ||
205 | { | ||
206 | get { return m_TaxFree; } | ||
207 | set { m_TaxFree = value; } | ||
327 | } | 208 | } |
328 | 209 | ||
329 | public void AddEstateManager(LLUUID avatarID) | 210 | private bool m_PublicAccess = true; |
211 | |||
212 | public bool PublicAccess | ||
330 | { | 213 | { |
331 | LLUUID[] testateManagers = GetEstateManagers(); | 214 | get { return m_PublicAccess; } |
332 | LLUUID[] nestateManagers = new LLUUID[testateManagers.Length + 1]; | 215 | set { m_PublicAccess = value; } |
216 | } | ||
333 | 217 | ||
334 | int i = 0; | 218 | // All those lists... |
335 | for (i = 0; i < testateManagers.Length; i++) | 219 | // |
336 | { | 220 | private List<LLUUID> l_EstateManagers = new List<LLUUID>(); |
337 | nestateManagers[i] = testateManagers[i]; | ||
338 | } | ||
339 | 221 | ||
340 | nestateManagers[i] = avatarID; | 222 | public LLUUID[] EstateManagers |
223 | { | ||
224 | get { return l_EstateManagers.ToArray(); } | ||
225 | set { l_EstateManagers = new List<LLUUID>(value); } | ||
226 | } | ||
341 | 227 | ||
342 | //Saves it to the estate settings file | 228 | private List<EstateBan> l_EstateBans = new List<EstateBan>(); |
343 | estateManagers = nestateManagers; | 229 | |
230 | public EstateBan[] EstateBans | ||
231 | { | ||
232 | get { return l_EstateBans.ToArray(); } | ||
233 | set { l_EstateBans = new List<EstateBan>(value); } | ||
344 | } | 234 | } |
345 | 235 | ||
346 | public void RemoveEstateManager(LLUUID avatarID) | 236 | private List<LLUUID> l_EstateAccess = new List<LLUUID>(); |
237 | |||
238 | public LLUUID[] EstateAccess | ||
347 | { | 239 | { |
348 | int notfoundparam = 11; // starting high so the condense routine (max ten) doesn't run if we don't find it. | 240 | get { return l_EstateAccess.ToArray(); } |
349 | LLUUID[] testateManagers = GetEstateManagers(); // temporary estate managers list | 241 | set { l_EstateAccess = new List<LLUUID>(value); } |
242 | } | ||
350 | 243 | ||
244 | private List<LLUUID> l_EstateGroups = new List<LLUUID>(); | ||
351 | 245 | ||
352 | int i = 0; | 246 | public LLUUID[] EstateGroups |
353 | int foundpos = notfoundparam; | 247 | { |
248 | get { return l_EstateGroups.ToArray(); } | ||
249 | set { l_EstateGroups = new List<LLUUID>(value); } | ||
250 | } | ||
354 | 251 | ||
355 | // search for estate manager. | 252 | public EstateSettings() |
356 | for (i = 0; i < testateManagers.Length; i++) | 253 | { |
254 | if (configMember == null) | ||
357 | { | 255 | { |
358 | if (testateManagers[i] == avatarID) | 256 | // Load legacy defaults |
359 | { | 257 | // |
360 | foundpos = i; | 258 | configMember = |
361 | break; | 259 | new ConfigurationMember(Path.Combine(Util.configDir(), |
362 | } | 260 | "estate_settings.xml"), "ESTATE SETTINGS", |
261 | loadConfigurationOptions, | ||
262 | handleIncomingConfiguration, true); | ||
263 | |||
264 | l_EstateManagers.Clear(); | ||
265 | configMember.performConfigurationRetrieve(); | ||
363 | } | 266 | } |
364 | if (foundpos < notfoundparam) | 267 | } |
365 | { | ||
366 | LLUUID[] restateManagers = new LLUUID[testateManagers.Length - 1]; | ||
367 | 268 | ||
368 | // fill new estate managers array up to the found spot | 269 | public void Save() |
369 | for (int j = 0; j < foundpos; j++) | 270 | { |
370 | restateManagers[j] = testateManagers[j]; | 271 | if(OnSave != null) |
272 | OnSave(this); | ||
273 | } | ||
371 | 274 | ||
372 | // skip over the estate manager we're removing and compress | 275 | public void AddEstateManager(LLUUID avatarID) |
373 | for (int j = foundpos + 1; j < testateManagers.Length; j++) | 276 | { |
374 | restateManagers[j - 1] = testateManagers[j]; | 277 | if(avatarID == null || avatarID == LLUUID.Zero) |
278 | return; | ||
279 | if(!l_EstateManagers.Contains(avatarID)) | ||
280 | l_EstateManagers.Add(avatarID); | ||
281 | } | ||
375 | 282 | ||
376 | estateManagers = restateManagers; | 283 | public void RemoveEstateManager(LLUUID avatarID) |
377 | } | 284 | { |
378 | else | 285 | if(l_EstateManagers.Contains(avatarID)) |
379 | { | 286 | l_EstateManagers.Remove(avatarID); |
380 | m_log.Error("[ESTATESETTINGS]: Unable to locate estate manager : " + avatarID.ToString() + " for removal"); | ||
381 | } | ||
382 | } | 287 | } |
383 | 288 | ||
384 | #endregion | 289 | public bool IsEstateManager(LLUUID avatarID) |
290 | { | ||
291 | return l_EstateManagers.Contains(avatarID); | ||
292 | } | ||
293 | |||
294 | public bool IsBanned(LLUUID avatarID) | ||
295 | { | ||
296 | foreach (EstateBan ban in l_EstateBans) | ||
297 | if(ban.bannedUUID == avatarID) | ||
298 | return true; | ||
299 | return false; | ||
300 | } | ||
301 | |||
302 | public void AddBan(EstateBan ban) | ||
303 | { | ||
304 | if(ban == null) | ||
305 | return; | ||
306 | if(!IsBanned(ban.bannedUUID)) | ||
307 | l_EstateBans.Add(ban); | ||
308 | } | ||
309 | |||
310 | public void ClearBans() | ||
311 | { | ||
312 | l_EstateBans.Clear(); | ||
313 | } | ||
314 | |||
315 | public void RemoveBan(LLUUID avatarID) | ||
316 | { | ||
317 | foreach (EstateBan ban in new List<EstateBan>(l_EstateBans)) | ||
318 | if(ban.bannedUUID == avatarID) | ||
319 | l_EstateBans.Remove(ban); | ||
320 | } | ||
385 | 321 | ||
386 | public void loadConfigurationOptions() | 322 | public void loadConfigurationOptions() |
387 | { | 323 | { |
388 | configMember.addConfigurationOption("billable_factor", ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, String.Empty, | 324 | configMember.addConfigurationOption("billable_factor", |
389 | "0.0", true); | 325 | ConfigurationOption.ConfigurationTypes.TYPE_FLOAT, |
390 | configMember.addConfigurationOption("estate_id", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, String.Empty, "100", | 326 | String.Empty, "0.0", true); |
391 | true); | 327 | |
392 | configMember.addConfigurationOption("parent_estate_id", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, | 328 | // configMember.addConfigurationOption("estate_id", |
393 | String.Empty, "1", true); | 329 | // ConfigurationOption.ConfigurationTypes.TYPE_UINT32, |
394 | configMember.addConfigurationOption("max_agents", ConfigurationOption.ConfigurationTypes.TYPE_BYTE, String.Empty, "40", | 330 | // String.Empty, "100", true); |
395 | true); | 331 | |
396 | 332 | // configMember.addConfigurationOption("parent_estate_id", | |
397 | configMember.addConfigurationOption("redirect_grid_x", ConfigurationOption.ConfigurationTypes.TYPE_INT32, String.Empty, | 333 | // ConfigurationOption.ConfigurationTypes.TYPE_UINT32, |
398 | "0", true); | 334 | // String.Empty, "1", true); |
399 | configMember.addConfigurationOption("redirect_grid_y", ConfigurationOption.ConfigurationTypes.TYPE_INT32, String.Empty, | 335 | |
400 | "0", true); | 336 | configMember.addConfigurationOption("redirect_grid_x", |
401 | configMember.addConfigurationOption("price_per_meter", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, | 337 | ConfigurationOption.ConfigurationTypes.TYPE_INT32, |
402 | String.Empty, "1", true); | 338 | String.Empty, "0", true); |
403 | 339 | ||
404 | configMember.addConfigurationOption("water_height", ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, String.Empty, | 340 | configMember.addConfigurationOption("redirect_grid_y", |
405 | "20.0", true); | 341 | ConfigurationOption.ConfigurationTypes.TYPE_INT32, |
406 | 342 | String.Empty, "0", true); | |
407 | configMember.addConfigurationOption("estate_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING, | 343 | |
408 | String.Empty, "TestEstate", true); | 344 | configMember.addConfigurationOption("price_per_meter", |
409 | configMember.addConfigurationOption("estate_manager_0", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 345 | ConfigurationOption.ConfigurationTypes.TYPE_UINT32, |
410 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 346 | String.Empty, "1", true); |
411 | configMember.addConfigurationOption("estate_manager_1", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 347 | |
412 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 348 | configMember.addConfigurationOption("estate_name", |
413 | configMember.addConfigurationOption("estate_manager_2", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 349 | ConfigurationOption.ConfigurationTypes.TYPE_STRING, |
414 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 350 | String.Empty, "My Estate", true); |
415 | configMember.addConfigurationOption("estate_manager_3", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 351 | |
416 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 352 | configMember.addConfigurationOption("estate_manager_0", |
417 | configMember.addConfigurationOption("estate_manager_4", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 353 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, |
418 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 354 | String.Empty, "00000000-0000-0000-0000-000000000000", true); |
419 | configMember.addConfigurationOption("estate_manager_5", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 355 | |
420 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 356 | configMember.addConfigurationOption("estate_manager_1", |
421 | configMember.addConfigurationOption("estate_manager_6", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 357 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, |
422 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 358 | String.Empty, "00000000-0000-0000-0000-000000000000", true); |
423 | configMember.addConfigurationOption("estate_manager_7", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 359 | |
424 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 360 | configMember.addConfigurationOption("estate_manager_2", |
425 | configMember.addConfigurationOption("estate_manager_8", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 361 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, |
426 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 362 | String.Empty, "00000000-0000-0000-0000-000000000000", true); |
427 | configMember.addConfigurationOption("estate_manager_9", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 363 | |
428 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | 364 | configMember.addConfigurationOption("estate_manager_3", |
365 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
366 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | ||
367 | |||
368 | configMember.addConfigurationOption("estate_manager_4", | ||
369 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
370 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | ||
371 | |||
372 | configMember.addConfigurationOption("estate_manager_5", | ||
373 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
374 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | ||
375 | |||
376 | configMember.addConfigurationOption("estate_manager_6", | ||
377 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
378 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | ||
379 | |||
380 | configMember.addConfigurationOption("estate_manager_7", | ||
381 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
382 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | ||
383 | |||
384 | configMember.addConfigurationOption("estate_manager_8", | ||
385 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
386 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | ||
387 | |||
388 | configMember.addConfigurationOption("estate_manager_9", | ||
389 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
390 | String.Empty, "00000000-0000-0000-0000-000000000000", true); | ||
391 | |||
392 | configMember.addConfigurationOption("region_flags", | ||
393 | ConfigurationOption.ConfigurationTypes.TYPE_UINT32, | ||
394 | String.Empty, "336723974", true); | ||
429 | } | 395 | } |
430 | 396 | ||
431 | public bool handleIncomingConfiguration(string configuration_key, object configuration_result) | 397 | public bool handleIncomingConfiguration(string configuration_key, object configuration_result) |
432 | { | 398 | { |
433 | switch (configuration_key) | 399 | switch (configuration_key) |
434 | { | 400 | { |
435 | case "billable_factor": | 401 | case "region_flags": |
436 | m_billableFactor = (float) configuration_result; | 402 | Simulator.RegionFlags flags = (Simulator.RegionFlags)(uint)configuration_result; |
403 | if((flags & (Simulator.RegionFlags)(1<<29)) != 0) | ||
404 | m_AllowVoice = true; | ||
405 | if((flags & Simulator.RegionFlags.AllowDirectTeleport) != 0) | ||
406 | m_AllowDirectTeleport = true; | ||
407 | if((flags & Simulator.RegionFlags.DenyAnonymous) != 0) | ||
408 | m_DenyAnonymous = true; | ||
409 | if((flags & Simulator.RegionFlags.DenyIdentified) != 0) | ||
410 | m_DenyIdentified = true; | ||
411 | if((flags & Simulator.RegionFlags.DenyTransacted) != 0) | ||
412 | m_DenyTransacted = true; | ||
413 | if((flags & Simulator.RegionFlags.AbuseEmailToEstateOwner) != 0) | ||
414 | m_AbuseEmailToEstateOwner = true; | ||
415 | if((flags & Simulator.RegionFlags.BlockDwell) != 0) | ||
416 | m_BlockDwell = true; | ||
417 | if((flags & Simulator.RegionFlags.EstateSkipScripts) != 0) | ||
418 | m_EstateSkipScripts = true; | ||
419 | if((flags & Simulator.RegionFlags.ResetHomeOnTeleport) != 0) | ||
420 | m_ResetHomeOnTeleport = true; | ||
421 | if((flags & Simulator.RegionFlags.TaxFree) != 0) | ||
422 | m_TaxFree = true; | ||
423 | if((flags & Simulator.RegionFlags.PublicAllowed) != 0) | ||
424 | m_PublicAccess = true; | ||
437 | break; | 425 | break; |
438 | case "estate_id": | 426 | case "billable_factor": |
439 | m_estateID = (uint) configuration_result; | 427 | m_BillableFactor = (float) configuration_result; |
440 | break; | ||
441 | case "parent_estate_id": | ||
442 | m_parentEstateID = (uint) configuration_result; | ||
443 | break; | 428 | break; |
429 | // case "estate_id": | ||
430 | // m_EstateID = (uint) configuration_result; | ||
431 | // break; | ||
432 | // case "parent_estate_id": | ||
433 | // m_ParentEstateID = (uint) configuration_result; | ||
434 | // break; | ||
444 | case "redirect_grid_x": | 435 | case "redirect_grid_x": |
445 | m_redirectGridX = (int) configuration_result; | 436 | m_RedirectGridX = (int) configuration_result; |
446 | break; | 437 | break; |
447 | case "redirect_grid_y": | 438 | case "redirect_grid_y": |
448 | m_redirectGridY = (int) configuration_result; | 439 | m_RedirectGridY = (int) configuration_result; |
449 | break; | 440 | break; |
450 | case "price_per_meter": | 441 | case "price_per_meter": |
451 | m_pricePerMeter = Convert.ToInt32(configuration_result); | 442 | m_PricePerMeter = Convert.ToInt32(configuration_result); |
452 | break; | 443 | break; |
453 | |||
454 | case "estate_name": | 444 | case "estate_name": |
455 | m_estateName = (string) configuration_result; | 445 | m_EstateName = (string) configuration_result; |
456 | break; | 446 | break; |
457 | case "estate_manager_0": | 447 | case "estate_manager_0": |
458 | m_estateManager0 = (LLUUID) configuration_result; | 448 | AddEstateManager((LLUUID)configuration_result); |
459 | break; | 449 | break; |
460 | case "estate_manager_1": | 450 | case "estate_manager_1": |
461 | m_estateManager1 = (LLUUID) configuration_result; | 451 | AddEstateManager((LLUUID)configuration_result); |
462 | break; | 452 | break; |
463 | case "estate_manager_2": | 453 | case "estate_manager_2": |
464 | m_estateManager2 = (LLUUID) configuration_result; | 454 | AddEstateManager((LLUUID)configuration_result); |
465 | break; | 455 | break; |
466 | case "estate_manager_3": | 456 | case "estate_manager_3": |
467 | m_estateManager3 = (LLUUID) configuration_result; | 457 | AddEstateManager((LLUUID)configuration_result); |
468 | break; | 458 | break; |
469 | case "estate_manager_4": | 459 | case "estate_manager_4": |
470 | m_estateManager4 = (LLUUID) configuration_result; | 460 | AddEstateManager((LLUUID)configuration_result); |
471 | break; | 461 | break; |
472 | case "estate_manager_5": | 462 | case "estate_manager_5": |
473 | m_estateManager5 = (LLUUID) configuration_result; | 463 | AddEstateManager((LLUUID)configuration_result); |
474 | break; | 464 | break; |
475 | case "estate_manager_6": | 465 | case "estate_manager_6": |
476 | m_estateManager6 = (LLUUID) configuration_result; | 466 | AddEstateManager((LLUUID)configuration_result); |
477 | break; | 467 | break; |
478 | case "estate_manager_7": | 468 | case "estate_manager_7": |
479 | m_estateManager7 = (LLUUID) configuration_result; | 469 | AddEstateManager((LLUUID)configuration_result); |
480 | break; | 470 | break; |
481 | case "estate_manager_8": | 471 | case "estate_manager_8": |
482 | m_estateManager8 = (LLUUID) configuration_result; | 472 | AddEstateManager((LLUUID)configuration_result); |
483 | break; | 473 | break; |
484 | case "estate_manager_9": | 474 | case "estate_manager_9": |
485 | m_estateManager9 = (LLUUID) configuration_result; | 475 | AddEstateManager((LLUUID)configuration_result); |
486 | break; | 476 | break; |
487 | } | 477 | } |
488 | 478 | ||
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index f34b9c4..bb44eb9 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -285,7 +285,8 @@ namespace OpenSim.Framework | |||
285 | public delegate void SetEstateTerrainDetailTexture(IClientAPI remoteClient, int corner, LLUUID side); | 285 | public delegate void SetEstateTerrainDetailTexture(IClientAPI remoteClient, int corner, LLUUID side); |
286 | public delegate void SetEstateTerrainTextureHeights(IClientAPI remoteClient, int corner, float lowVal, float highVal); | 286 | public delegate void SetEstateTerrainTextureHeights(IClientAPI remoteClient, int corner, float lowVal, float highVal); |
287 | public delegate void CommitEstateTerrainTextureRequest(IClientAPI remoteClient); | 287 | public delegate void CommitEstateTerrainTextureRequest(IClientAPI remoteClient); |
288 | public delegate void SetRegionTerrainSettings(float waterHeight, float terrainRaiseLimit, float terrainLowerLimit, bool fixedSun, float sunHour); | 288 | public delegate void SetRegionTerrainSettings(float waterHeight, float terrainRaiseLimit, float terrainLowerLimit, bool estateSun, bool fixedSun, float sunHour, bool globalSun, bool estateFixed, float estateSunHour); |
289 | public delegate void EstateChangeInfo(IClientAPI client, LLUUID invoice, LLUUID senderID, UInt32 param1, UInt32 param2); | ||
289 | public delegate void BakeTerrain(IClientAPI remoteClient ); | 290 | public delegate void BakeTerrain(IClientAPI remoteClient ); |
290 | public delegate void EstateRestartSimRequest(IClientAPI remoteClient, int secondsTilReboot); | 291 | public delegate void EstateRestartSimRequest(IClientAPI remoteClient, int secondsTilReboot); |
291 | public delegate void EstateChangeCovenantRequest(IClientAPI remoteClient, LLUUID newCovenantID); | 292 | public delegate void EstateChangeCovenantRequest(IClientAPI remoteClient, LLUUID newCovenantID); |
@@ -349,6 +350,7 @@ namespace OpenSim.Framework | |||
349 | // [Obsolete("LLClientView Specific - Replace with more suitable arguments.")] | 350 | // [Obsolete("LLClientView Specific - Replace with more suitable arguments.")] |
350 | event ModifyTerrain OnModifyTerrain; | 351 | event ModifyTerrain OnModifyTerrain; |
351 | event BakeTerrain OnBakeTerrain; | 352 | event BakeTerrain OnBakeTerrain; |
353 | event EstateChangeInfo OnEstateChangeInfo; | ||
352 | // [Obsolete("LLClientView Specific.")] | 354 | // [Obsolete("LLClientView Specific.")] |
353 | event SetAppearance OnSetAppearance; | 355 | event SetAppearance OnSetAppearance; |
354 | // [Obsolete("LLClientView Specific - Replace and rename OnAvatarUpdate. Difference from SetAppearance?")] | 356 | // [Obsolete("LLClientView Specific - Replace and rename OnAvatarUpdate. Difference from SetAppearance?")] |
@@ -628,11 +630,11 @@ namespace OpenSim.Framework | |||
628 | 630 | ||
629 | void SendEstateManagersList(LLUUID invoice, LLUUID[] EstateManagers, uint estateID); | 631 | void SendEstateManagersList(LLUUID invoice, LLUUID[] EstateManagers, uint estateID); |
630 | 632 | ||
631 | void SendBannedUserList(LLUUID invoice, List<RegionBanListItem> banlist, uint estateID); | 633 | void SendBannedUserList(LLUUID invoice, EstateBan[] banlist, uint estateID); |
632 | 634 | ||
633 | void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args); | 635 | void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args); |
634 | void SendEstateCovenantInformation(); | 636 | void SendEstateCovenantInformation(LLUUID covenant); |
635 | void SendDetailedEstateData(LLUUID invoice,string estateName, uint estateID); | 637 | void SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, LLUUID covenant); |
636 | 638 | ||
637 | void SendLandProperties(IClientAPI remote_client, int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags); | 639 | void SendLandProperties(IClientAPI remote_client, int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags); |
638 | void SendLandAccessListData(List<LLUUID> avatars, uint accessFlag, int localLandID); | 640 | void SendLandAccessListData(List<LLUUID> avatars, uint accessFlag, int localLandID); |
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index e899947..ee64bf2 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs | |||
@@ -193,7 +193,6 @@ namespace OpenSim.Framework | |||
193 | 193 | ||
194 | public bool commFailTF = false; | 194 | public bool commFailTF = false; |
195 | public ConfigurationMember configMember; | 195 | public ConfigurationMember configMember; |
196 | public LLUUID CovenantID = LLUUID.Zero; | ||
197 | public string DataStore = String.Empty; | 196 | public string DataStore = String.Empty; |
198 | public bool isSandbox = false; | 197 | public bool isSandbox = false; |
199 | private EstateSettings m_estateSettings; | 198 | private EstateSettings m_estateSettings; |
@@ -212,7 +211,6 @@ namespace OpenSim.Framework | |||
212 | 211 | ||
213 | public LLUUID lastMapUUID = LLUUID.Zero; | 212 | public LLUUID lastMapUUID = LLUUID.Zero; |
214 | public string lastMapRefresh = "0"; | 213 | public string lastMapRefresh = "0"; |
215 | public List<RegionBanListItem> regionBanlist = new List<RegionBanListItem>(); | ||
216 | 214 | ||
217 | // Apparently, we're applying the same estatesettings regardless of whether it's local or remote. | 215 | // Apparently, we're applying the same estatesettings regardless of whether it's local or remote. |
218 | 216 | ||
@@ -279,6 +277,8 @@ namespace OpenSim.Framework | |||
279 | 277 | ||
280 | return m_estateSettings; | 278 | return m_estateSettings; |
281 | } | 279 | } |
280 | |||
281 | set { m_estateSettings = value; } | ||
282 | } | 282 | } |
283 | 283 | ||
284 | public RegionSettings RegionSettings | 284 | public RegionSettings RegionSettings |
@@ -364,28 +364,6 @@ namespace OpenSim.Framework | |||
364 | configMember.performConfigurationRetrieve(); | 364 | configMember.performConfigurationRetrieve(); |
365 | } | 365 | } |
366 | 366 | ||
367 | public bool CheckIfUserBanned(LLUUID user) | ||
368 | { | ||
369 | |||
370 | RegionBanListItem[] bl = regionBanlist.ToArray(); | ||
371 | |||
372 | bool banned = false; | ||
373 | |||
374 | for (int i = 0; i < bl.Length; i++) | ||
375 | { | ||
376 | if (bl[i] == null) | ||
377 | continue; | ||
378 | |||
379 | if (bl[i].bannedUUID == user) | ||
380 | { | ||
381 | banned = true; | ||
382 | break; | ||
383 | } | ||
384 | } | ||
385 | |||
386 | return banned; | ||
387 | } | ||
388 | |||
389 | public void loadConfigurationOptionsFromMe() | 367 | public void loadConfigurationOptionsFromMe() |
390 | { | 368 | { |
391 | configMember.addConfigurationOption("sim_UUID", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID_NULL_FREE, | 369 | configMember.addConfigurationOption("sim_UUID", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID_NULL_FREE, |
@@ -415,9 +393,6 @@ namespace OpenSim.Framework | |||
415 | "External Host Name", m_externalHostName, true); | 393 | "External Host Name", m_externalHostName, true); |
416 | configMember.addConfigurationOption("master_avatar_uuid", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 394 | configMember.addConfigurationOption("master_avatar_uuid", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, |
417 | "Master Avatar UUID", MasterAvatarAssignedUUID.ToString(), true); | 395 | "Master Avatar UUID", MasterAvatarAssignedUUID.ToString(), true); |
418 | configMember.addConfigurationOption("estate_covanant_uuid", | ||
419 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, "Estate Covenant", | ||
420 | CovenantID.ToString(), true); | ||
421 | configMember.addConfigurationOption("master_avatar_first", | 396 | configMember.addConfigurationOption("master_avatar_first", |
422 | ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, | 397 | ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, |
423 | "First Name of Master Avatar", MasterAvatarFirstName, true); | 398 | "First Name of Master Avatar", MasterAvatarFirstName, true); |
@@ -461,9 +436,6 @@ namespace OpenSim.Framework | |||
461 | "External Host Name", "127.0.0.1", false); | 436 | "External Host Name", "127.0.0.1", false); |
462 | configMember.addConfigurationOption("master_avatar_uuid", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | 437 | configMember.addConfigurationOption("master_avatar_uuid", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, |
463 | "Master Avatar UUID", LLUUID.Zero.ToString(), true); | 438 | "Master Avatar UUID", LLUUID.Zero.ToString(), true); |
464 | configMember.addConfigurationOption("estate_covanant_uuid", | ||
465 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, "Estate Covenant", | ||
466 | LLUUID.Zero.ToString(), true); | ||
467 | configMember.addConfigurationOption("master_avatar_first", | 439 | configMember.addConfigurationOption("master_avatar_first", |
468 | ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, | 440 | ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, |
469 | "First Name of Master Avatar", "Test", false, | 441 | "First Name of Master Avatar", "Test", false, |
@@ -538,10 +510,6 @@ namespace OpenSim.Framework | |||
538 | case "master_avatar_uuid": | 510 | case "master_avatar_uuid": |
539 | MasterAvatarAssignedUUID = (LLUUID) configuration_result; | 511 | MasterAvatarAssignedUUID = (LLUUID) configuration_result; |
540 | break; | 512 | break; |
541 | case "estate_covanant_uuid": | ||
542 | CovenantID = (LLUUID) configuration_result; | ||
543 | break; | ||
544 | |||
545 | case "master_avatar_first": | 513 | case "master_avatar_first": |
546 | MasterAvatarFirstName = (string) configuration_result; | 514 | MasterAvatarFirstName = (string) configuration_result; |
547 | break; | 515 | break; |
@@ -563,11 +531,6 @@ namespace OpenSim.Framework | |||
563 | return true; | 531 | return true; |
564 | } | 532 | } |
565 | 533 | ||
566 | public void SaveEstatecovenantUUID(LLUUID notecard) | ||
567 | { | ||
568 | if (null == configMember) return; | ||
569 | configMember.forceSetConfigurationOption("estate_covanant_uuid", notecard.ToString()); | ||
570 | } | ||
571 | public void SaveLastMapUUID(LLUUID mapUUID) | 534 | public void SaveLastMapUUID(LLUUID mapUUID) |
572 | { | 535 | { |
573 | if (null == configMember) return; | 536 | if (null == configMember) return; |
diff --git a/OpenSim/Framework/RegionSettings.cs b/OpenSim/Framework/RegionSettings.cs index be57c1b..13fabaf 100644 --- a/OpenSim/Framework/RegionSettings.cs +++ b/OpenSim/Framework/RegionSettings.cs | |||
@@ -162,6 +162,8 @@ namespace OpenSim.Framework | |||
162 | (flags & Simulator.RegionFlags.SkipPhysics) != 0; | 162 | (flags & Simulator.RegionFlags.SkipPhysics) != 0; |
163 | m_FixedSun = | 163 | m_FixedSun = |
164 | (flags & Simulator.RegionFlags.SunFixed) != 0; | 164 | (flags & Simulator.RegionFlags.SunFixed) != 0; |
165 | m_Sandbox = | ||
166 | (flags & Simulator.RegionFlags.Sandbox) != 0; | ||
165 | break; | 167 | break; |
166 | case "max_agents": | 168 | case "max_agents": |
167 | m_AgentLimit = (int)value; | 169 | m_AgentLimit = (int)value; |
@@ -231,7 +233,8 @@ namespace OpenSim.Framework | |||
231 | 233 | ||
232 | public void Save() | 234 | public void Save() |
233 | { | 235 | { |
234 | OnSave(this); | 236 | if(OnSave != null) |
237 | OnSave(this); | ||
235 | } | 238 | } |
236 | 239 | ||
237 | private LLUUID m_RegionUUID = LLUUID.Zero; | 240 | private LLUUID m_RegionUUID = LLUUID.Zero; |
@@ -474,6 +477,14 @@ namespace OpenSim.Framework | |||
474 | set { m_UseEstateSun = value; } | 477 | set { m_UseEstateSun = value; } |
475 | } | 478 | } |
476 | 479 | ||
480 | private bool m_Sandbox = false; | ||
481 | |||
482 | public bool Sandbox | ||
483 | { | ||
484 | get { return m_Sandbox; } | ||
485 | set { m_Sandbox = value; } | ||
486 | } | ||
487 | |||
477 | private LLVector3 m_SunVector; | 488 | private LLVector3 m_SunVector; |
478 | 489 | ||
479 | public LLVector3 SunVector | 490 | public LLVector3 SunVector |
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index c9cc062..380df73 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -520,7 +520,6 @@ namespace OpenSim | |||
520 | //moved these here as the terrain texture has to be created after the modules are initialized | 520 | //moved these here as the terrain texture has to be created after the modules are initialized |
521 | // and has to happen before the region is registered with the grid. | 521 | // and has to happen before the region is registered with the grid. |
522 | scene.CreateTerrainTexture(false); | 522 | scene.CreateTerrainTexture(false); |
523 | scene.LoadRegionBanlist(); | ||
524 | 523 | ||
525 | try | 524 | try |
526 | { | 525 | { |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index b170f28..2c05097 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -166,6 +166,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
166 | private GenericCall4 handlerDeRezObject = null; //OnDeRezObject; | 166 | private GenericCall4 handlerDeRezObject = null; //OnDeRezObject; |
167 | private ModifyTerrain handlerModifyTerrain = null; | 167 | private ModifyTerrain handlerModifyTerrain = null; |
168 | private BakeTerrain handlerBakeTerrain = null; | 168 | private BakeTerrain handlerBakeTerrain = null; |
169 | private EstateChangeInfo handlerEstateChangeInfo = null; | ||
169 | private Action<IClientAPI> handlerRegionHandShakeReply = null; //OnRegionHandShakeReply; | 170 | private Action<IClientAPI> handlerRegionHandShakeReply = null; //OnRegionHandShakeReply; |
170 | private GenericCall2 handlerRequestWearables = null; //OnRequestWearables; | 171 | private GenericCall2 handlerRequestWearables = null; //OnRequestWearables; |
171 | private Action<IClientAPI> handlerRequestAvatarsData = null; //OnRequestAvatarsData; | 172 | private Action<IClientAPI> handlerRequestAvatarsData = null; //OnRequestAvatarsData; |
@@ -920,6 +921,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
920 | public event CommitEstateTerrainTextureRequest OnCommitEstateTerrainTextureRequest; | 921 | public event CommitEstateTerrainTextureRequest OnCommitEstateTerrainTextureRequest; |
921 | public event SetRegionTerrainSettings OnSetRegionTerrainSettings; | 922 | public event SetRegionTerrainSettings OnSetRegionTerrainSettings; |
922 | public event BakeTerrain OnBakeTerrain; | 923 | public event BakeTerrain OnBakeTerrain; |
924 | public event EstateChangeInfo OnEstateChangeInfo; | ||
923 | public event EstateRestartSimRequest OnEstateRestartSimRequest; | 925 | public event EstateRestartSimRequest OnEstateRestartSimRequest; |
924 | public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest; | 926 | public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest; |
925 | public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest; | 927 | public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest; |
@@ -2614,18 +2616,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2614 | this.OutPacket(packet, ThrottleOutPacketType.Task); | 2616 | this.OutPacket(packet, ThrottleOutPacketType.Task); |
2615 | } | 2617 | } |
2616 | 2618 | ||
2617 | public void SendBannedUserList(LLUUID invoice, List<RegionBanListItem> banlist, uint estateID) | 2619 | public void SendBannedUserList(LLUUID invoice, EstateBan[] bl, uint estateID) |
2618 | { | 2620 | { |
2619 | RegionBanListItem[] bl = banlist.ToArray(); | 2621 | List<LLUUID>BannedUsers = new List<LLUUID>(); |
2620 | |||
2621 | LLUUID[] BannedUsers = new LLUUID[bl.Length]; | ||
2622 | |||
2623 | 2622 | ||
2624 | for (int i = 0; i < bl.Length; i++) | 2623 | for (int i = 0; i < bl.Length; i++) |
2625 | { | 2624 | { |
2626 | if (bl[i] == null) | 2625 | if (bl[i] == null) |
2627 | continue; | 2626 | continue; |
2628 | BannedUsers[i] = bl[i].bannedUUID; | 2627 | if (bl[i].bannedUUID == LLUUID.Zero) |
2628 | continue; | ||
2629 | BannedUsers.Add(bl[i].bannedUUID); | ||
2629 | } | 2630 | } |
2630 | 2631 | ||
2631 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); | 2632 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); |
@@ -2635,9 +2636,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2635 | packet.MethodData.Invoice = invoice; | 2636 | packet.MethodData.Invoice = invoice; |
2636 | packet.MethodData.Method = Helpers.StringToField("setaccess"); | 2637 | packet.MethodData.Method = Helpers.StringToField("setaccess"); |
2637 | 2638 | ||
2638 | EstateOwnerMessagePacket.ParamListBlock[] returnblock = new EstateOwnerMessagePacket.ParamListBlock[6 + BannedUsers.Length]; | 2639 | EstateOwnerMessagePacket.ParamListBlock[] returnblock = new EstateOwnerMessagePacket.ParamListBlock[6 + BannedUsers.Count]; |
2639 | 2640 | ||
2640 | for (int i = 0; i < (6 + BannedUsers.Length); i++) | 2641 | for (int i = 0; i < (6 + BannedUsers.Count); i++) |
2641 | { | 2642 | { |
2642 | returnblock[i] = new EstateOwnerMessagePacket.ParamListBlock(); | 2643 | returnblock[i] = new EstateOwnerMessagePacket.ParamListBlock(); |
2643 | } | 2644 | } |
@@ -2647,12 +2648,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2647 | returnblock[j].Parameter = Helpers.StringToField(((int)Constants.EstateAccessCodex.EstateBans).ToString()); j++; | 2648 | returnblock[j].Parameter = Helpers.StringToField(((int)Constants.EstateAccessCodex.EstateBans).ToString()); j++; |
2648 | returnblock[j].Parameter = Helpers.StringToField("0"); j++; | 2649 | returnblock[j].Parameter = Helpers.StringToField("0"); j++; |
2649 | returnblock[j].Parameter = Helpers.StringToField("0"); j++; | 2650 | returnblock[j].Parameter = Helpers.StringToField("0"); j++; |
2650 | returnblock[j].Parameter = Helpers.StringToField(BannedUsers.Length.ToString()); j++; | 2651 | returnblock[j].Parameter = Helpers.StringToField(BannedUsers.Count.ToString()); j++; |
2651 | returnblock[j].Parameter = Helpers.StringToField("0"); j++; | 2652 | returnblock[j].Parameter = Helpers.StringToField("0"); j++; |
2652 | 2653 | ||
2653 | for (int i = 0; i < BannedUsers.Length; i++) | 2654 | foreach (LLUUID banned in BannedUsers) |
2654 | { | 2655 | { |
2655 | returnblock[j].Parameter = BannedUsers[i].GetBytes(); j++; | 2656 | returnblock[j].Parameter = banned.GetBytes(); j++; |
2656 | } | 2657 | } |
2657 | packet.ParamList = returnblock; | 2658 | packet.ParamList = returnblock; |
2658 | packet.Header.Reliable = false; | 2659 | packet.Header.Reliable = false; |
@@ -2687,11 +2688,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2687 | this.OutPacket(rinfopack, ThrottleOutPacketType.Task); | 2688 | this.OutPacket(rinfopack, ThrottleOutPacketType.Task); |
2688 | } | 2689 | } |
2689 | 2690 | ||
2690 | public void SendEstateCovenantInformation() | 2691 | public void SendEstateCovenantInformation(LLUUID covenant) |
2691 | { | 2692 | { |
2692 | EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); | 2693 | EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); |
2693 | EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); | 2694 | EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); |
2694 | edata.CovenantID = m_scene.RegionInfo.CovenantID; | 2695 | edata.CovenantID = covenant; |
2695 | edata.CovenantTimestamp = 0; | 2696 | edata.CovenantTimestamp = 0; |
2696 | edata.EstateOwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; | 2697 | edata.EstateOwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID; |
2697 | edata.EstateName = | 2698 | edata.EstateName = |
@@ -2700,7 +2701,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2700 | this.OutPacket(einfopack, ThrottleOutPacketType.Task); | 2701 | this.OutPacket(einfopack, ThrottleOutPacketType.Task); |
2701 | } | 2702 | } |
2702 | 2703 | ||
2703 | public void SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID) | 2704 | public void SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, LLUUID covenant) |
2704 | { | 2705 | { |
2705 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); | 2706 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); |
2706 | packet.MethodData.Invoice = invoice; | 2707 | packet.MethodData.Invoice = invoice; |
@@ -2718,13 +2719,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2718 | returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarAssignedUUID.ToString()); | 2719 | returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarAssignedUUID.ToString()); |
2719 | returnblock[2].Parameter = Helpers.StringToField(estateID.ToString()); | 2720 | returnblock[2].Parameter = Helpers.StringToField(estateID.ToString()); |
2720 | 2721 | ||
2721 | // TODO: Resolve Magic numbers here | 2722 | returnblock[3].Parameter = Helpers.StringToField(estateFlags.ToString()); |
2722 | returnblock[3].Parameter = Helpers.StringToField("269516800"); | 2723 | returnblock[4].Parameter = Helpers.StringToField(sunPosition.ToString()); |
2723 | returnblock[4].Parameter = Helpers.StringToField("0"); | 2724 | returnblock[5].Parameter = Helpers.StringToField(parentEstate.ToString()); |
2724 | returnblock[5].Parameter = Helpers.StringToField("1"); | 2725 | returnblock[6].Parameter = Helpers.StringToField(covenant.ToString()); |
2725 | returnblock[6].Parameter = Helpers.StringToField(m_scene.RegionInfo.RegionID.ToString()); | 2726 | returnblock[7].Parameter = Helpers.StringToField("1160895077"); // what is this? |
2726 | returnblock[7].Parameter = Helpers.StringToField("1160895077"); | 2727 | returnblock[8].Parameter = Helpers.StringToField("1"); // what is this? |
2727 | returnblock[8].Parameter = Helpers.StringToField("1"); | ||
2728 | 2728 | ||
2729 | packet.ParamList = returnblock; | 2729 | packet.ParamList = returnblock; |
2730 | packet.Header.Reliable = false; | 2730 | packet.Header.Reliable = false; |
@@ -5959,10 +5959,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5959 | tmp = Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter); | 5959 | tmp = Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter); |
5960 | if (!tmp.Contains(".")) tmp += ".00"; | 5960 | if (!tmp.Contains(".")) tmp += ".00"; |
5961 | float TerrainLowerLimit = (float)Convert.ToDecimal(tmp); | 5961 | float TerrainLowerLimit = (float)Convert.ToDecimal(tmp); |
5962 | bool UseEstateSun = convertParamStringToBool(messagePacket.ParamList[3].Parameter); | ||
5962 | bool UseFixedSun = convertParamStringToBool(messagePacket.ParamList[4].Parameter); | 5963 | bool UseFixedSun = convertParamStringToBool(messagePacket.ParamList[4].Parameter); |
5963 | float SunHour = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(messagePacket.ParamList[5].Parameter)); | 5964 | float SunHour = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(messagePacket.ParamList[5].Parameter)); |
5965 | bool UseGlobal = convertParamStringToBool(messagePacket.ParamList[6].Parameter); | ||
5966 | bool EstateFixedSun = convertParamStringToBool(messagePacket.ParamList[7].Parameter); | ||
5967 | float EstateSunHour = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(messagePacket.ParamList[8].Parameter)); | ||
5964 | 5968 | ||
5965 | OnSetRegionTerrainSettings(WaterHeight, TerrainRaiseLimit, TerrainLowerLimit, UseFixedSun, SunHour); | 5969 | OnSetRegionTerrainSettings(WaterHeight, TerrainRaiseLimit, TerrainLowerLimit, UseEstateSun, UseFixedSun, SunHour, UseGlobal, EstateFixedSun, EstateSunHour); |
5966 | 5970 | ||
5967 | } | 5971 | } |
5968 | catch (Exception ex) | 5972 | catch (Exception ex) |
@@ -6076,6 +6080,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6076 | } | 6080 | } |
6077 | break; | 6081 | break; |
6078 | 6082 | ||
6083 | case "estatechangeinfo": | ||
6084 | if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) | ||
6085 | { | ||
6086 | LLUUID invoice = messagePacket.MethodData.Invoice; | ||
6087 | LLUUID SenderID = messagePacket.AgentData.AgentID; | ||
6088 | UInt32 param1 = Convert.ToUInt32(Helpers.FieldToUTF8String(messagePacket.ParamList[1].Parameter)); | ||
6089 | UInt32 param2 = Convert.ToUInt32(Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter)); | ||
6090 | |||
6091 | handlerEstateChangeInfo = OnEstateChangeInfo; | ||
6092 | if (handlerEstateChangeInfo != null) | ||
6093 | { | ||
6094 | handlerEstateChangeInfo(this, invoice, SenderID, param1, param2); | ||
6095 | } | ||
6096 | } | ||
6097 | break; | ||
6098 | |||
6079 | default: | 6099 | default: |
6080 | m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket.ToString()); | 6100 | m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket.ToString()); |
6081 | break; | 6101 | break; |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index 6f4a563..d8a6daf 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | |||
@@ -623,7 +623,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
623 | { | 623 | { |
624 | if (regions[i].RegionHandle == regionHandle) | 624 | if (regions[i].RegionHandle == regionHandle) |
625 | { | 625 | { |
626 | if (regions[i].CheckIfUserBanned(agentData.AgentID)) | 626 | if (regions[i].EstateSettings.IsBanned(agentData.AgentID)) |
627 | { | 627 | { |
628 | banned = true; | 628 | banned = true; |
629 | break; | 629 | break; |
@@ -1158,7 +1158,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
1158 | { | 1158 | { |
1159 | if (regions[i].RegionHandle == regionHandle) | 1159 | if (regions[i].RegionHandle == regionHandle) |
1160 | { | 1160 | { |
1161 | if (regions[i].CheckIfUserBanned(agentID)) | 1161 | if (regions[i].EstateSettings.IsBanned(agentID)) |
1162 | { | 1162 | { |
1163 | banned = true; | 1163 | banned = true; |
1164 | break; | 1164 | break; |
diff --git a/OpenSim/Region/Environment/Interfaces/IEstateDataStore.cs b/OpenSim/Region/Environment/Interfaces/IEstateDataStore.cs new file mode 100644 index 0000000..ecac2ca --- /dev/null +++ b/OpenSim/Region/Environment/Interfaces/IEstateDataStore.cs | |||
@@ -0,0 +1,41 @@ | |||
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 OpenSim 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 | |||
28 | using System; | ||
29 | using OpenSim.Framework; | ||
30 | using libsecondlife; | ||
31 | |||
32 | namespace OpenSim.Region.Environment.Interfaces | ||
33 | { | ||
34 | public interface IEstateDataStore | ||
35 | { | ||
36 | void Initialise(string connectstring); | ||
37 | |||
38 | EstateSettings LoadEstateSettings(LLUUID regionID); | ||
39 | void StoreEstateSettings(EstateSettings es); | ||
40 | } | ||
41 | } | ||
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs index c189f95..0316f20 100644 --- a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs +++ b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs | |||
@@ -72,10 +72,6 @@ namespace OpenSim.Region.Environment.Interfaces | |||
72 | void RemoveLandObject(LLUUID globalID); | 72 | void RemoveLandObject(LLUUID globalID); |
73 | List<LandData> LoadLandObjects(LLUUID regionUUID); | 73 | List<LandData> LoadLandObjects(LLUUID regionUUID); |
74 | 74 | ||
75 | List<RegionBanListItem> LoadRegionBanList(LLUUID regionUUID); | ||
76 | void AddToRegionBanlist(RegionBanListItem item); | ||
77 | void RemoveFromRegionBanlist(RegionBanListItem item); | ||
78 | |||
79 | void StoreRegionSettings(RegionSettings rs); | 75 | void StoreRegionSettings(RegionSettings rs); |
80 | RegionSettings LoadRegionSettings(LLUUID regionUUID); | 76 | RegionSettings LoadRegionSettings(LLUUID regionUUID); |
81 | 77 | ||
diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs index ac6a075..c5c0370 100644 --- a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs | |||
@@ -49,9 +49,26 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
49 | 49 | ||
50 | private void sendDetailedEstateData(IClientAPI remote_client, LLUUID invoice) | 50 | private void sendDetailedEstateData(IClientAPI remote_client, LLUUID invoice) |
51 | { | 51 | { |
52 | remote_client.SendDetailedEstateData(invoice,m_scene.RegionInfo.EstateSettings.estateName,m_scene.RegionInfo.EstateSettings.estateID); | 52 | //SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, LLUUID covenant) |
53 | remote_client.SendEstateManagersList(invoice,m_scene.RegionInfo.EstateSettings.estateManagers,m_scene.RegionInfo.EstateSettings.estateID); | 53 | |
54 | remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.regionBanlist, m_scene.RegionInfo.EstateSettings.estateID); | 54 | uint sun = 0; |
55 | if(!m_scene.RegionInfo.EstateSettings.UseGlobalTime) | ||
56 | sun=(uint)(m_scene.RegionInfo.EstateSettings.SunPosition*1024.0) + 0x1800; | ||
57 | remote_client.SendDetailedEstateData(invoice, | ||
58 | m_scene.RegionInfo.EstateSettings.EstateName, | ||
59 | m_scene.RegionInfo.EstateSettings.EstateID, | ||
60 | m_scene.RegionInfo.EstateSettings.ParentEstateID, | ||
61 | GetEstateFlags(), | ||
62 | sun, | ||
63 | m_scene.RegionInfo.RegionSettings.Covenant); | ||
64 | |||
65 | remote_client.SendEstateManagersList(invoice, | ||
66 | m_scene.RegionInfo.EstateSettings.EstateManagers, | ||
67 | m_scene.RegionInfo.EstateSettings.EstateID); | ||
68 | |||
69 | remote_client.SendBannedUserList(invoice, | ||
70 | m_scene.RegionInfo.EstateSettings.EstateBans, | ||
71 | m_scene.RegionInfo.EstateSettings.EstateID); | ||
55 | } | 72 | } |
56 | 73 | ||
57 | private void estateSetRegionInfoHandler(bool blockTerraform, bool noFly, bool allowDamage, bool blockLandResell, int maxAgents, float objectBonusFactor, | 74 | private void estateSetRegionInfoHandler(bool blockTerraform, bool noFly, bool allowDamage, bool blockLandResell, int maxAgents, float objectBonusFactor, |
@@ -150,8 +167,10 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
150 | sendRegionHandshakeToAll(); | 167 | sendRegionHandshakeToAll(); |
151 | } | 168 | } |
152 | 169 | ||
153 | public void setRegionTerrainSettings(float WaterHeight, float TerrainRaiseLimit, float TerrainLowerLimit, | 170 | public void setRegionTerrainSettings(float WaterHeight, |
154 | bool UseFixedSun, float SunHour) | 171 | float TerrainRaiseLimit, float TerrainLowerLimit, |
172 | bool UseEstateSun, bool UseFixedSun, float SunHour, | ||
173 | bool UseGlobal, bool EstateFixedSun, float EstateSunHour) | ||
155 | { | 174 | { |
156 | // Water Height | 175 | // Water Height |
157 | m_scene.RegionInfo.RegionSettings.WaterHeight = WaterHeight; | 176 | m_scene.RegionInfo.RegionSettings.WaterHeight = WaterHeight; |
@@ -161,10 +180,11 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
161 | m_scene.RegionInfo.RegionSettings.TerrainLowerLimit = TerrainLowerLimit; | 180 | m_scene.RegionInfo.RegionSettings.TerrainLowerLimit = TerrainLowerLimit; |
162 | 181 | ||
163 | // Time of day / fixed sun | 182 | // Time of day / fixed sun |
183 | m_scene.RegionInfo.RegionSettings.UseEstateSun = UseEstateSun; | ||
164 | m_scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun; | 184 | m_scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun; |
165 | m_scene.RegionInfo.RegionSettings.SunPosition = SunHour; | 185 | m_scene.RegionInfo.RegionSettings.SunPosition = SunHour; |
166 | 186 | ||
167 | m_scene.EventManager.TriggerEstateToolsTimeUpdate(m_scene.RegionInfo.RegionHandle, UseFixedSun, UseFixedSun, SunHour); | 187 | m_scene.EventManager.TriggerEstateToolsTimeUpdate(m_scene.RegionInfo.RegionHandle, UseFixedSun, UseEstateSun, SunHour); |
168 | 188 | ||
169 | //m_log.Debug("[ESTATE]: UFS: " + UseFixedSun.ToString()); | 189 | //m_log.Debug("[ESTATE]: UFS: " + UseFixedSun.ToString()); |
170 | //m_log.Debug("[ESTATE]: SunHour: " + SunHour.ToString()); | 190 | //m_log.Debug("[ESTATE]: SunHour: " + SunHour.ToString()); |
@@ -180,20 +200,23 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
180 | 200 | ||
181 | private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, LLUUID estateCovenantID) | 201 | private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, LLUUID estateCovenantID) |
182 | { | 202 | { |
183 | m_scene.RegionInfo.CovenantID = estateCovenantID; | 203 | m_scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; |
184 | m_scene.RegionInfo.SaveEstatecovenantUUID(estateCovenantID); | 204 | m_scene.RegionInfo.RegionSettings.Save(); |
185 | } | 205 | } |
186 | 206 | ||
187 | private void handleEstateAccessDeltaRequest(IClientAPI remote_client, LLUUID invoice, int estateAccessType, LLUUID user) | 207 | private void handleEstateAccessDeltaRequest(IClientAPI remote_client, LLUUID invoice, int estateAccessType, LLUUID user) |
188 | { | 208 | { |
189 | // EstateAccessDelta handles Estate Managers, Sim Access, Sim Banlist, allowed Groups.. etc. | 209 | // EstateAccessDelta handles Estate Managers, Sim Access, Sim Banlist, allowed Groups.. etc. |
190 | 210 | ||
211 | if (user == m_scene.RegionInfo.MasterAvatarAssignedUUID) | ||
212 | return; // never process owner | ||
213 | |||
191 | switch (estateAccessType) | 214 | switch (estateAccessType) |
192 | { | 215 | { |
193 | case 64: | 216 | case 64: |
194 | if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId) || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) | 217 | if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId) || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) |
195 | { | 218 | { |
196 | RegionBanListItem[] banlistcheck = m_scene.RegionInfo.regionBanlist.ToArray(); | 219 | EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; |
197 | 220 | ||
198 | bool alreadyInList = false; | 221 | bool alreadyInList = false; |
199 | 222 | ||
@@ -209,15 +232,15 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
209 | if (!alreadyInList) | 232 | if (!alreadyInList) |
210 | { | 233 | { |
211 | 234 | ||
212 | RegionBanListItem item = new RegionBanListItem(); | 235 | EstateBan item = new EstateBan(); |
213 | 236 | ||
214 | item.bannedUUID = user; | 237 | item.bannedUUID = user; |
215 | item.regionUUID = m_scene.RegionInfo.RegionID; | 238 | item.estateID = m_scene.RegionInfo.EstateSettings.EstateID; |
216 | item.bannedIP = "0.0.0.0"; | 239 | item.bannedIP = "0.0.0.0"; |
217 | item.bannedIPHostMask = "0.0.0.0"; | 240 | item.bannedIPHostMask = "0.0.0.0"; |
218 | 241 | ||
219 | m_scene.RegionInfo.regionBanlist.Add(item); | 242 | m_scene.RegionInfo.EstateSettings.AddBan(item); |
220 | m_scene.AddToRegionBanlist(item); | 243 | m_scene.RegionInfo.EstateSettings.Save(); |
221 | 244 | ||
222 | ScenePresence s = m_scene.GetScenePresence(user); | 245 | ScenePresence s = m_scene.GetScenePresence(user); |
223 | if (s != null) | 246 | if (s != null) |
@@ -231,7 +254,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
231 | remote_client.SendAlertMessage("User is already on the region ban list"); | 254 | remote_client.SendAlertMessage("User is already on the region ban list"); |
232 | } | 255 | } |
233 | //m_scene.RegionInfo.regionBanlist.Add(Manager(user); | 256 | //m_scene.RegionInfo.regionBanlist.Add(Manager(user); |
234 | remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.regionBanlist, m_scene.RegionInfo.EstateSettings.estateID); | 257 | remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); |
235 | } | 258 | } |
236 | else | 259 | else |
237 | { | 260 | { |
@@ -241,10 +264,10 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
241 | case 128: | 264 | case 128: |
242 | if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId) || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) | 265 | if (m_scene.ExternalChecks.ExternalChecksCanIssueEstateCommand(remote_client.AgentId) || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) |
243 | { | 266 | { |
244 | RegionBanListItem[] banlistcheck = m_scene.RegionInfo.regionBanlist.ToArray(); | 267 | EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; |
245 | 268 | ||
246 | bool alreadyInList = false; | 269 | bool alreadyInList = false; |
247 | RegionBanListItem listitem = null; | 270 | EstateBan listitem = null; |
248 | 271 | ||
249 | for (int i = 0; i < banlistcheck.Length; i++) | 272 | for (int i = 0; i < banlistcheck.Length; i++) |
250 | { | 273 | { |
@@ -258,15 +281,15 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
258 | } | 281 | } |
259 | if (alreadyInList && listitem != null) | 282 | if (alreadyInList && listitem != null) |
260 | { | 283 | { |
261 | m_scene.RegionInfo.regionBanlist.Remove(listitem); | 284 | m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.bannedUUID); |
262 | m_scene.RemoveFromRegionBanlist(listitem); | 285 | m_scene.RegionInfo.EstateSettings.Save(); |
263 | } | 286 | } |
264 | else | 287 | else |
265 | { | 288 | { |
266 | remote_client.SendAlertMessage("User is not on the region ban list"); | 289 | remote_client.SendAlertMessage("User is not on the region ban list"); |
267 | } | 290 | } |
268 | //m_scene.RegionInfo.regionBanlist.Add(Manager(user); | 291 | //m_scene.RegionInfo.regionBanlist.Add(Manager(user); |
269 | remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.regionBanlist, m_scene.RegionInfo.EstateSettings.estateID); | 292 | remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); |
270 | } | 293 | } |
271 | else | 294 | else |
272 | { | 295 | { |
@@ -280,7 +303,8 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
280 | if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) | 303 | if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) |
281 | { | 304 | { |
282 | m_scene.RegionInfo.EstateSettings.AddEstateManager(user); | 305 | m_scene.RegionInfo.EstateSettings.AddEstateManager(user); |
283 | remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.estateManagers, m_scene.RegionInfo.EstateSettings.estateID); | 306 | m_scene.RegionInfo.EstateSettings.Save(); |
307 | remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); | ||
284 | } | 308 | } |
285 | else | 309 | else |
286 | { | 310 | { |
@@ -294,7 +318,9 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
294 | if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) | 318 | if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.ExternalChecks.ExternalChecksBypassPermissions()) |
295 | { | 319 | { |
296 | m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); | 320 | m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); |
297 | remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.estateManagers, m_scene.RegionInfo.EstateSettings.estateID); | 321 | m_scene.RegionInfo.EstateSettings.Save(); |
322 | |||
323 | remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); | ||
298 | } | 324 | } |
299 | else | 325 | else |
300 | { | 326 | { |
@@ -358,28 +384,24 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
358 | { | 384 | { |
359 | 385 | ||
360 | RegionInfoForEstateMenuArgs args = new RegionInfoForEstateMenuArgs(); | 386 | RegionInfoForEstateMenuArgs args = new RegionInfoForEstateMenuArgs(); |
361 | args.billableFactor = m_scene.RegionInfo.EstateSettings.billableFactor; | 387 | args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; |
362 | args.estateID = m_scene.RegionInfo.EstateSettings.estateID; | 388 | args.estateID = m_scene.RegionInfo.EstateSettings.EstateID; |
363 | args.maxAgents = (byte)m_scene.RegionInfo.RegionSettings.AgentLimit; | 389 | args.maxAgents = (byte)m_scene.RegionInfo.RegionSettings.AgentLimit; |
364 | args.objectBonusFactor = (float)m_scene.RegionInfo.RegionSettings.ObjectBonus; | 390 | args.objectBonusFactor = (float)m_scene.RegionInfo.RegionSettings.ObjectBonus; |
365 | args.parentEstateID = m_scene.RegionInfo.EstateSettings.parentEstateID; | 391 | args.parentEstateID = m_scene.RegionInfo.EstateSettings.ParentEstateID; |
366 | args.pricePerMeter = m_scene.RegionInfo.EstateSettings.pricePerMeter; | 392 | args.pricePerMeter = m_scene.RegionInfo.EstateSettings.PricePerMeter; |
367 | args.redirectGridX = m_scene.RegionInfo.EstateSettings.redirectGridX; | 393 | args.redirectGridX = m_scene.RegionInfo.EstateSettings.RedirectGridX; |
368 | args.redirectGridY = m_scene.RegionInfo.EstateSettings.redirectGridY; | 394 | args.redirectGridY = m_scene.RegionInfo.EstateSettings.RedirectGridY; |
369 | args.regionFlags = GetRegionFlags(); | 395 | args.regionFlags = GetRegionFlags(); |
370 | byte mature = 13; | 396 | byte mature = 13; |
371 | if(m_scene.RegionInfo.RegionSettings.Maturity == 1) | 397 | if(m_scene.RegionInfo.RegionSettings.Maturity == 1) |
372 | mature = 21; | 398 | mature = 21; |
373 | args.simAccess = mature; | 399 | args.simAccess = mature; |
374 | 400 | ||
375 | if (m_scene.RegionInfo.RegionSettings.FixedSun) | 401 | args.sunHour = (float)m_scene.RegionInfo.RegionSettings.SunPosition; |
376 | args.sunHour = (float)m_scene.RegionInfo.RegionSettings.SunPosition; | ||
377 | else | ||
378 | args.sunHour = m_scene.EventManager.GetSunLindenHour(); | ||
379 | |||
380 | args.terrainLowerLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit; | 402 | args.terrainLowerLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit; |
381 | args.terrainRaiseLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit; | 403 | args.terrainRaiseLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit; |
382 | args.useEstateSun = !m_scene.RegionInfo.RegionSettings.FixedSun; | 404 | args.useEstateSun = m_scene.RegionInfo.RegionSettings.UseEstateSun; |
383 | args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; | 405 | args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; |
384 | args.simName = m_scene.RegionInfo.RegionName; | 406 | args.simName = m_scene.RegionInfo.RegionName; |
385 | 407 | ||
@@ -387,9 +409,9 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
387 | remote_client.SendRegionInfoToEstateMenu(args); | 409 | remote_client.SendRegionInfoToEstateMenu(args); |
388 | } | 410 | } |
389 | 411 | ||
390 | private static void HandleEstateCovenantRequest(IClientAPI remote_client) | 412 | private void HandleEstateCovenantRequest(IClientAPI remote_client) |
391 | { | 413 | { |
392 | remote_client.SendEstateCovenantInformation(); | 414 | remote_client.SendEstateCovenantInformation(m_scene.RegionInfo.RegionSettings.Covenant); |
393 | } | 415 | } |
394 | private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) | 416 | private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) |
395 | { | 417 | { |
@@ -508,7 +530,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
508 | { | 530 | { |
509 | RegionHandshakeArgs args = new RegionHandshakeArgs(); | 531 | RegionHandshakeArgs args = new RegionHandshakeArgs(); |
510 | bool estatemanager = false; | 532 | bool estatemanager = false; |
511 | LLUUID[] EstateManagers = m_scene.RegionInfo.EstateSettings.estateManagers; | 533 | LLUUID[] EstateManagers = m_scene.RegionInfo.EstateSettings.EstateManagers; |
512 | for (int i = 0; i < EstateManagers.Length; i++) | 534 | for (int i = 0; i < EstateManagers.Length; i++) |
513 | { | 535 | { |
514 | if (EstateManagers[i] == remoteClient.AgentId) | 536 | if (EstateManagers[i] == remoteClient.AgentId) |
@@ -517,7 +539,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
517 | 539 | ||
518 | args.isEstateManager = estatemanager; | 540 | args.isEstateManager = estatemanager; |
519 | 541 | ||
520 | args.billableFactor = m_scene.RegionInfo.EstateSettings.billableFactor; | 542 | args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; |
521 | args.terrainStartHeight0 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SW; | 543 | args.terrainStartHeight0 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SW; |
522 | args.terrainHeightRange0 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SW; | 544 | args.terrainHeightRange0 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SW; |
523 | args.terrainStartHeight1 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NW; | 545 | args.terrainStartHeight1 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NW; |
@@ -554,6 +576,73 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
554 | ); | 576 | ); |
555 | } | 577 | } |
556 | 578 | ||
579 | public void handleEstateChangeInfo(IClientAPI remoteClient, LLUUID invoice, LLUUID senderID, UInt32 parms1, UInt32 parms2) | ||
580 | { | ||
581 | if(parms2 == 0) | ||
582 | { | ||
583 | m_scene.RegionInfo.EstateSettings.UseGlobalTime = true; | ||
584 | m_scene.RegionInfo.EstateSettings.SunPosition = 0.0; | ||
585 | } | ||
586 | else | ||
587 | { | ||
588 | m_scene.RegionInfo.EstateSettings.UseGlobalTime = false; | ||
589 | m_scene.RegionInfo.EstateSettings.SunPosition = (double)(parms2 - 0x1800)/1024.0; | ||
590 | } | ||
591 | |||
592 | if((parms1 & 0x00000010) != 0) | ||
593 | m_scene.RegionInfo.EstateSettings.FixedSun = true; | ||
594 | else | ||
595 | m_scene.RegionInfo.EstateSettings.FixedSun = false; | ||
596 | |||
597 | if((parms1 & 0x00008000) != 0) | ||
598 | m_scene.RegionInfo.EstateSettings.PublicAccess = true; | ||
599 | else | ||
600 | m_scene.RegionInfo.EstateSettings.PublicAccess = false; | ||
601 | |||
602 | if((parms1 & 0x10000000) != 0) | ||
603 | m_scene.RegionInfo.EstateSettings.AllowVoice = true; | ||
604 | else | ||
605 | m_scene.RegionInfo.EstateSettings.AllowVoice = false; | ||
606 | |||
607 | if((parms1 & 0x00100000) != 0) | ||
608 | m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = true; | ||
609 | else | ||
610 | m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = false; | ||
611 | |||
612 | if((parms1 & 0x00800000) != 0) | ||
613 | m_scene.RegionInfo.EstateSettings.DenyAnonymous = true; | ||
614 | else | ||
615 | m_scene.RegionInfo.EstateSettings.DenyAnonymous = false; | ||
616 | |||
617 | if((parms1 & 0x01000000) != 0) | ||
618 | m_scene.RegionInfo.EstateSettings.DenyIdentified = true; | ||
619 | else | ||
620 | m_scene.RegionInfo.EstateSettings.DenyIdentified = false; | ||
621 | |||
622 | if((parms1 & 0x02000000) != 0) | ||
623 | m_scene.RegionInfo.EstateSettings.DenyTransacted = true; | ||
624 | else | ||
625 | m_scene.RegionInfo.EstateSettings.DenyTransacted = false; | ||
626 | |||
627 | m_scene.RegionInfo.EstateSettings.Save(); | ||
628 | |||
629 | float sun = (float)m_scene.RegionInfo.RegionSettings.SunPosition; | ||
630 | if(m_scene.RegionInfo.RegionSettings.UseEstateSun) | ||
631 | { | ||
632 | sun = (float)m_scene.RegionInfo.EstateSettings.SunPosition; | ||
633 | if(m_scene.RegionInfo.EstateSettings.UseGlobalTime) | ||
634 | sun = m_scene.EventManager.GetSunLindenHour(); | ||
635 | } | ||
636 | |||
637 | m_scene.EventManager.TriggerEstateToolsTimeUpdate( | ||
638 | m_scene.RegionInfo.RegionHandle, | ||
639 | m_scene.RegionInfo.EstateSettings.FixedSun || | ||
640 | m_scene.RegionInfo.RegionSettings.FixedSun, | ||
641 | m_scene.RegionInfo.RegionSettings.UseEstateSun, sun); | ||
642 | |||
643 | sendDetailedEstateData(remoteClient, invoice); | ||
644 | } | ||
645 | |||
557 | #endregion | 646 | #endregion |
558 | 647 | ||
559 | #region IRegionModule Members | 648 | #region IRegionModule Members |
@@ -594,8 +683,12 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
594 | setRegionTerrainSettings(height, | 683 | setRegionTerrainSettings(height, |
595 | (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit, | 684 | (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit, |
596 | (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit, | 685 | (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit, |
686 | m_scene.RegionInfo.RegionSettings.UseEstateSun, | ||
597 | m_scene.RegionInfo.RegionSettings.FixedSun, | 687 | m_scene.RegionInfo.RegionSettings.FixedSun, |
598 | (float)m_scene.RegionInfo.RegionSettings.SunPosition); | 688 | (float)m_scene.RegionInfo.RegionSettings.SunPosition, |
689 | m_scene.RegionInfo.EstateSettings.UseGlobalTime, | ||
690 | m_scene.RegionInfo.EstateSettings.FixedSun, | ||
691 | (float)m_scene.RegionInfo.EstateSettings.SunPosition); | ||
599 | 692 | ||
600 | sendRegionInfoPacketToAll(); | 693 | sendRegionInfoPacketToAll(); |
601 | } | 694 | } |
@@ -613,6 +706,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
613 | client.OnSetRegionTerrainSettings += setRegionTerrainSettings; | 706 | client.OnSetRegionTerrainSettings += setRegionTerrainSettings; |
614 | client.OnEstateRestartSimRequest += handleEstateRestartSimRequest; | 707 | client.OnEstateRestartSimRequest += handleEstateRestartSimRequest; |
615 | client.OnEstateChangeCovenantRequest += handleChangeEstateCovenantRequest; | 708 | client.OnEstateChangeCovenantRequest += handleChangeEstateCovenantRequest; |
709 | client.OnEstateChangeInfo += handleEstateChangeInfo; | ||
616 | client.OnUpdateEstateAccessDeltaRequest += handleEstateAccessDeltaRequest; | 710 | client.OnUpdateEstateAccessDeltaRequest += handleEstateAccessDeltaRequest; |
617 | client.OnSimulatorBlueBoxMessageRequest += SendSimulatorBlueBoxMessage; | 711 | client.OnSimulatorBlueBoxMessageRequest += SendSimulatorBlueBoxMessage; |
618 | client.OnEstateBlueBoxMessageRequest += SendEstateBlueBoxMessage; | 712 | client.OnEstateBlueBoxMessageRequest += SendEstateBlueBoxMessage; |
@@ -652,41 +746,53 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
652 | if(m_scene.RegionInfo.RegionSettings.BlockShowInSearch) | 746 | if(m_scene.RegionInfo.RegionSettings.BlockShowInSearch) |
653 | flags |= (Simulator.RegionFlags)(1 << 29); | 747 | flags |= (Simulator.RegionFlags)(1 << 29); |
654 | 748 | ||
655 | // Partially implemented | ||
656 | // | ||
657 | if(m_scene.RegionInfo.RegionSettings.FixedSun) | 749 | if(m_scene.RegionInfo.RegionSettings.FixedSun) |
658 | flags |= Simulator.RegionFlags.SunFixed; | 750 | flags |= Simulator.RegionFlags.SunFixed; |
751 | if(m_scene.RegionInfo.RegionSettings.Sandbox) | ||
752 | flags |= Simulator.RegionFlags.Sandbox; | ||
753 | |||
754 | // Handled in LandObject.cs: AllowLandmark | ||
755 | // Handled in LandObject.cs: AllowSetHome | ||
659 | 756 | ||
660 | // Not implemented | ||
661 | // | ||
662 | // TODO: ExternallyVisible | ||
663 | flags |= Simulator.RegionFlags.ExternallyVisible; | ||
664 | // TODO: PublicAllowed | ||
665 | flags |= Simulator.RegionFlags.PublicAllowed; | ||
666 | // TODO: AllowDirectTeleport | ||
667 | flags |= Simulator.RegionFlags.AllowDirectTeleport; | ||
668 | // TODO: AllowVoice | ||
669 | flags |= Simulator.RegionFlags.AllowVoice; | ||
670 | |||
671 | // TDOD: AllowLandmark | ||
672 | // TDOD: AllowSetHome | ||
673 | // TODO: ResetHomeOnTeleport | ||
674 | // TODO: TaxFree ? (Linden-ism) | ||
675 | // TODO: Sandbox ? | ||
676 | // TODO: SkipUpdateInterestList | 757 | // TODO: SkipUpdateInterestList |
677 | // TODO: ExternallyVisible | ||
678 | // TODO: DenyAnonymous | ||
679 | // TODO: DenyIdentified | ||
680 | // TODO: DenyTransacted | ||
681 | // TODO: AbuseEmailToEstateOwner | ||
682 | // TODO: BlockDwell | ||
683 | // TODO: EstateSkipScripts | ||
684 | 758 | ||
685 | // Omitted | 759 | // Omitted |
686 | // | 760 | // |
687 | // Omitted: NullLayer (what is that?) | 761 | // Omitted: NullLayer (what is that?) |
688 | // Omitted: SkipAgentAction (what does it do?) | 762 | // Omitted: SkipAgentAction (what does it do?) |
689 | // Omitted: MainlandVisible (Do we need it) | 763 | |
764 | return (uint)flags; | ||
765 | } | ||
766 | |||
767 | public uint GetEstateFlags() | ||
768 | { | ||
769 | Simulator.RegionFlags flags = Simulator.RegionFlags.None; | ||
770 | |||
771 | if(m_scene.RegionInfo.EstateSettings.FixedSun) | ||
772 | flags |= Simulator.RegionFlags.SunFixed; | ||
773 | if(m_scene.RegionInfo.EstateSettings.PublicAccess) | ||
774 | flags |= (Simulator.RegionFlags.PublicAllowed | | ||
775 | Simulator.RegionFlags.ExternallyVisible); | ||
776 | if(m_scene.RegionInfo.EstateSettings.AllowVoice) | ||
777 | flags |= Simulator.RegionFlags.AllowVoice; | ||
778 | if(m_scene.RegionInfo.EstateSettings.AllowDirectTeleport) | ||
779 | flags |= Simulator.RegionFlags.AllowDirectTeleport; | ||
780 | if(m_scene.RegionInfo.EstateSettings.DenyAnonymous) | ||
781 | flags |= Simulator.RegionFlags.DenyAnonymous; | ||
782 | if(m_scene.RegionInfo.EstateSettings.DenyIdentified) | ||
783 | flags |= Simulator.RegionFlags.DenyIdentified; | ||
784 | if(m_scene.RegionInfo.EstateSettings.DenyTransacted) | ||
785 | flags |= Simulator.RegionFlags.DenyTransacted; | ||
786 | if(m_scene.RegionInfo.EstateSettings.AbuseEmailToEstateOwner) | ||
787 | flags |= Simulator.RegionFlags.AbuseEmailToEstateOwner; | ||
788 | if(m_scene.RegionInfo.EstateSettings.BlockDwell) | ||
789 | flags |= Simulator.RegionFlags.BlockDwell; | ||
790 | if(m_scene.RegionInfo.EstateSettings.EstateSkipScripts) | ||
791 | flags |= Simulator.RegionFlags.EstateSkipScripts; | ||
792 | if(m_scene.RegionInfo.EstateSettings.ResetHomeOnTeleport) | ||
793 | flags |= Simulator.RegionFlags.ResetHomeOnTeleport; | ||
794 | if(m_scene.RegionInfo.EstateSettings.TaxFree) | ||
795 | flags |= Simulator.RegionFlags.TaxFree; | ||
690 | 796 | ||
691 | return (uint)flags; | 797 | return (uint)flags; |
692 | } | 798 | } |
diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs index e52896a..5aed2a7 100644 --- a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs +++ b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs | |||
@@ -162,9 +162,13 @@ namespace OpenSim.Region.Environment.Modules.World.Land | |||
162 | public void sendLandProperties(int sequence_id, bool snap_selection, int request_result, IClientAPI remote_client) | 162 | public void sendLandProperties(int sequence_id, bool snap_selection, int request_result, IClientAPI remote_client) |
163 | { | 163 | { |
164 | IEstateModule estateModule = m_scene.RequestModuleInterface<IEstateModule>(); | 164 | IEstateModule estateModule = m_scene.RequestModuleInterface<IEstateModule>(); |
165 | uint regionFlags = 67108864; | 165 | uint regionFlags = 336723974 & ~((uint)(Simulator.RegionFlags.AllowLandmark | Simulator.RegionFlags.AllowSetHome)); |
166 | if(estateModule != null) | 166 | if(estateModule != null) |
167 | regionFlags = estateModule.GetRegionFlags(); | 167 | regionFlags = estateModule.GetRegionFlags(); |
168 | if((landData.landFlags & (uint)Parcel.ParcelFlags.AllowLandmark) != 0) | ||
169 | regionFlags |= (uint)Simulator.RegionFlags.AllowLandmark; | ||
170 | if(landData.ownerID == remote_client.AgentId) | ||
171 | regionFlags |= (uint)Simulator.RegionFlags.AllowSetHome; | ||
168 | remote_client.SendLandProperties(remote_client, sequence_id, | 172 | remote_client.SendLandProperties(remote_client, sequence_id, |
169 | snap_selection, request_result, landData, | 173 | snap_selection, request_result, landData, |
170 | (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, | 174 | (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, |
diff --git a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs index 10971db..040b9b7 100644 --- a/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/Environment/Modules/World/NPC/NPCAvatar.cs | |||
@@ -291,6 +291,7 @@ namespace OpenSim.Region.Environment.Modules.World.NPC | |||
291 | public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest; | 291 | public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest; |
292 | public event EstateDebugRegionRequest OnEstateDebugRegionRequest; | 292 | public event EstateDebugRegionRequest OnEstateDebugRegionRequest; |
293 | public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; | 293 | public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; |
294 | public event EstateChangeInfo OnEstateChangeInfo; | ||
294 | public event ScriptReset OnScriptReset; | 295 | public event ScriptReset OnScriptReset; |
295 | public event GetScriptRunning OnGetScriptRunning; | 296 | public event GetScriptRunning OnGetScriptRunning; |
296 | public event SetScriptRunning OnSetScriptRunning; | 297 | public event SetScriptRunning OnSetScriptRunning; |
@@ -752,17 +753,17 @@ namespace OpenSim.Region.Environment.Modules.World.NPC | |||
752 | { | 753 | { |
753 | } | 754 | } |
754 | 755 | ||
755 | public void SendBannedUserList(LLUUID invoice, List<RegionBanListItem> banlist, uint estateID) | 756 | public void SendBannedUserList(LLUUID invoice, EstateBan[] banlist, uint estateID) |
756 | { | 757 | { |
757 | } | 758 | } |
758 | 759 | ||
759 | public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) | 760 | public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) |
760 | { | 761 | { |
761 | } | 762 | } |
762 | public void SendEstateCovenantInformation() | 763 | public void SendEstateCovenantInformation(LLUUID covenant) |
763 | { | 764 | { |
764 | } | 765 | } |
765 | public void SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID) | 766 | public void SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, LLUUID covenant) |
766 | { | 767 | { |
767 | } | 768 | } |
768 | 769 | ||
diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs index 41bb610..b0d9a26 100644 --- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs | |||
@@ -246,17 +246,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions | |||
246 | 246 | ||
247 | protected bool IsEstateManager(LLUUID user) | 247 | protected bool IsEstateManager(LLUUID user) |
248 | { | 248 | { |
249 | if (user != LLUUID.Zero) | 249 | return m_scene.RegionInfo.EstateSettings.IsEstateManager(user); |
250 | { | ||
251 | LLUUID[] estatemanagers = m_scene.RegionInfo.EstateSettings.estateManagers; | ||
252 | foreach (LLUUID estatemanager in estatemanagers) | ||
253 | { | ||
254 | if (estatemanager == user) | ||
255 | return true; | ||
256 | } | ||
257 | } | ||
258 | |||
259 | return false; | ||
260 | } | 250 | } |
261 | #endregion | 251 | #endregion |
262 | 252 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index ad9646f..4aa9cf9 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -271,9 +271,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
271 | // Load region settings | 271 | // Load region settings |
272 | // First try database | 272 | // First try database |
273 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); | 273 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); |
274 | |||
275 | // Hook up save event | 274 | // Hook up save event |
276 | m_regInfo.RegionSettings.OnSave += m_storageManager.DataStore.StoreRegionSettings; | 275 | m_regInfo.RegionSettings.OnSave += m_storageManager.DataStore.StoreRegionSettings; |
276 | if(m_storageManager.EstateDataStore != null) | ||
277 | { | ||
278 | m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID); | ||
279 | m_regInfo.EstateSettings.OnSave += m_storageManager.EstateDataStore.StoreEstateSettings; | ||
280 | } | ||
281 | |||
277 | 282 | ||
278 | 283 | ||
279 | //Bind Storage Manager functions to some land manager functions for this scene | 284 | //Bind Storage Manager functions to some land manager functions for this scene |
@@ -1445,20 +1450,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1445 | } | 1450 | } |
1446 | } | 1451 | } |
1447 | 1452 | ||
1448 | public void LoadRegionBanlist() | ||
1449 | { | ||
1450 | List<RegionBanListItem> regionbanlist = m_storageManager.DataStore.LoadRegionBanList(m_regInfo.RegionID); | ||
1451 | m_regInfo.regionBanlist = regionbanlist; | ||
1452 | } | ||
1453 | public void AddToRegionBanlist(RegionBanListItem item) | ||
1454 | { | ||
1455 | m_storageManager.DataStore.AddToRegionBanlist(item); | ||
1456 | } | ||
1457 | |||
1458 | public void RemoveFromRegionBanlist(RegionBanListItem item) | ||
1459 | { | ||
1460 | m_storageManager.DataStore.RemoveFromRegionBanlist(item); | ||
1461 | } | ||
1462 | #endregion | 1453 | #endregion |
1463 | 1454 | ||
1464 | #region Primitives Methods | 1455 | #region Primitives Methods |
@@ -1916,7 +1907,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1916 | SceneObjectPart RootPrim = GetSceneObjectPart(primID); | 1907 | SceneObjectPart RootPrim = GetSceneObjectPart(primID); |
1917 | if (RootPrim != null) | 1908 | if (RootPrim != null) |
1918 | { | 1909 | { |
1919 | if (m_regInfo.CheckIfUserBanned(RootPrim.OwnerID)) | 1910 | if (m_regInfo.EstateSettings.IsBanned(RootPrim.OwnerID)) |
1920 | { | 1911 | { |
1921 | SceneObjectGroup grp = RootPrim.ParentGroup; | 1912 | SceneObjectGroup grp = RootPrim.ParentGroup; |
1922 | if (grp != null) | 1913 | if (grp != null) |
@@ -2410,7 +2401,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2410 | { | 2401 | { |
2411 | if (regionHandle == m_regInfo.RegionHandle) | 2402 | if (regionHandle == m_regInfo.RegionHandle) |
2412 | { | 2403 | { |
2413 | if (m_regInfo.CheckIfUserBanned(agent.AgentID)) | 2404 | if (m_regInfo.EstateSettings.IsBanned(agent.AgentID)) |
2414 | { | 2405 | { |
2415 | m_log.WarnFormat( | 2406 | m_log.WarnFormat( |
2416 | "[CONNECTION DEBUGGING]: Denied access to: {0} [{1}] at {2} because the user is on the region banlist", | 2407 | "[CONNECTION DEBUGGING]: Denied access to: {0} [{1}] at {2} because the user is on the region banlist", |
diff --git a/OpenSim/Region/Environment/StorageManager.cs b/OpenSim/Region/Environment/StorageManager.cs index b9a42a2..768e12c 100644 --- a/OpenSim/Region/Environment/StorageManager.cs +++ b/OpenSim/Region/Environment/StorageManager.cs | |||
@@ -43,6 +43,13 @@ namespace OpenSim.Region.Environment | |||
43 | get { return m_dataStore; } | 43 | get { return m_dataStore; } |
44 | } | 44 | } |
45 | 45 | ||
46 | private IEstateDataStore m_estateDataStore; | ||
47 | |||
48 | public IEstateDataStore EstateDataStore | ||
49 | { | ||
50 | get { return m_estateDataStore; } | ||
51 | } | ||
52 | |||
46 | public StorageManager(IRegionDataStore storage) | 53 | public StorageManager(IRegionDataStore storage) |
47 | { | 54 | { |
48 | m_dataStore = storage; | 55 | m_dataStore = storage; |
@@ -69,6 +76,17 @@ namespace OpenSim.Region.Environment | |||
69 | 76 | ||
70 | m_log.Info("[DATASTORE]: Added IRegionDataStore Interface"); | 77 | m_log.Info("[DATASTORE]: Added IRegionDataStore Interface"); |
71 | } | 78 | } |
79 | |||
80 | typeInterface = pluginType.GetInterface("IEstateDataStore", true); | ||
81 | |||
82 | if(typeInterface != null) | ||
83 | { | ||
84 | IEstateDataStore estPlug = | ||
85 | (IEstateDataStore) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | ||
86 | estPlug.Initialise(connectionstring); | ||
87 | |||
88 | m_estateDataStore = estPlug; | ||
89 | } | ||
72 | } | 90 | } |
73 | } | 91 | } |
74 | 92 | ||
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 94983ee..6179ccf 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | |||
@@ -158,6 +158,7 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
158 | public event ObjectDeselect OnObjectDeselect; | 158 | public event ObjectDeselect OnObjectDeselect; |
159 | public event RegionInfoRequest OnRegionInfoRequest; | 159 | public event RegionInfoRequest OnRegionInfoRequest; |
160 | public event EstateCovenantRequest OnEstateCovenantRequest; | 160 | public event EstateCovenantRequest OnEstateCovenantRequest; |
161 | public event EstateChangeInfo OnEstateChangeInfo; | ||
161 | 162 | ||
162 | public event ObjectDuplicateOnRay OnObjectDuplicateOnRay; | 163 | public event ObjectDuplicateOnRay OnObjectDuplicateOnRay; |
163 | 164 | ||
@@ -741,17 +742,17 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
741 | { | 742 | { |
742 | } | 743 | } |
743 | 744 | ||
744 | public void SendBannedUserList(LLUUID invoice, List<RegionBanListItem> banlist, uint estateID) | 745 | public void SendBannedUserList(LLUUID invoice, EstateBan[] banlist, uint estateID) |
745 | { | 746 | { |
746 | } | 747 | } |
747 | 748 | ||
748 | public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) | 749 | public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) |
749 | { | 750 | { |
750 | } | 751 | } |
751 | public void SendEstateCovenantInformation() | 752 | public void SendEstateCovenantInformation(LLUUID covenant) |
752 | { | 753 | { |
753 | } | 754 | } |
754 | public void SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID) | 755 | public void SendDetailedEstateData(LLUUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, LLUUID covenant) |
755 | { | 756 | { |
756 | } | 757 | } |
757 | 758 | ||
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs index 6dfcb3c..edbb1b7 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MSSQL/MSSQLDataStore.cs | |||
@@ -322,23 +322,6 @@ namespace OpenSim.DataStore.MSSQL | |||
322 | return new List<LandData>(); | 322 | return new List<LandData>(); |
323 | } | 323 | } |
324 | 324 | ||
325 | public List<RegionBanListItem> LoadRegionBanList(LLUUID regionUUID) | ||
326 | { | ||
327 | List<RegionBanListItem> regionbanlist = new List<RegionBanListItem>(); | ||
328 | return regionbanlist; | ||
329 | } | ||
330 | |||
331 | public void AddToRegionBanlist(RegionBanListItem item) | ||
332 | { | ||
333 | |||
334 | } | ||
335 | |||
336 | public void RemoveFromRegionBanlist(RegionBanListItem item) | ||
337 | { | ||
338 | |||
339 | } | ||
340 | |||
341 | |||
342 | public void Commit() | 325 | public void Commit() |
343 | { | 326 | { |
344 | lock (ds) | 327 | lock (ds) |