diff options
author | Melanie Thielker | 2008-07-18 02:40:47 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-07-18 02:40:47 +0000 |
commit | 263633e274082135b21b8183b92280b768d18883 (patch) | |
tree | f6104eef3633a8b454a4e8ac09d15182970c6bae /OpenSim | |
parent | added region port number to output of "show regions" command (diff) | |
download | opensim-SC-263633e274082135b21b8183b92280b768d18883.zip opensim-SC-263633e274082135b21b8183b92280b768d18883.tar.gz opensim-SC-263633e274082135b21b8183b92280b768d18883.tar.bz2 opensim-SC-263633e274082135b21b8183b92280b768d18883.tar.xz |
Patch #9151
Makes the estate dialog fully functional. Implements all client facing functionality. Moves estate data from estate_settings.xml, which is used to provide defaults, to the region data store. Creates one estate for each region, and places the region in it. Converts all region bans to estate bans.
Diffstat (limited to '')
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) |