/// <summary>
        /// Saves the estate settings to an archive.
        /// </summary>
        /// <param name="writer">Writer.</param>
        /// <param name="scene">Scene.</param>
        public void SaveModuleToArchive(TarArchiveWriter writer, IScene scene)
        {
            MainConsole.Instance.Debug("[Archive]: Writing estates to archive");

            EstateSettings settings = scene.RegionInfo.EstateSettings;

            if (settings == null)
            {
                return;
            }
            writer.WriteDir("estatesettings");
            writer.WriteFile("estatesettings/" + scene.RegionInfo.RegionName,
                             OSDParser.SerializeLLSDBinary(settings.ToOSD()));

            MainConsole.Instance.Debug("[Archive]: Finished writing estates to archive");
            MainConsole.Instance.Debug("[Archive]: Writing region info to archive");

            writer.WriteDir("regioninfo");
            RegionInfo regionInfo = scene.RegionInfo;

            writer.WriteFile("regioninfo/" + scene.RegionInfo.RegionName,
                             OSDParser.SerializeLLSDBinary(regionInfo.PackRegionInfoData()));

            MainConsole.Instance.Debug("[Archive]: Finished writing region info to archive");
        }
        public int CreateNewEstate(EstateSettings es)
        {
            if (m_doRemoteOnly)
            {
                object remoteValue = DoRemote(es.ToOSD());
                return(remoteValue != null ? (int)remoteValue : 0);                  // 0 is 'no estate'
            }


            int estateID = GetEstate(es.EstateOwner, es.EstateName);

            if (estateID > 0)
            {
                return(estateID);
            }

            // check for system or user estates
            if ((es.EstateOwner == (UUID)Constants.GovernorUUID))                  // Mainland?
            {
                es.EstateID = Constants.MainlandEstateID;
            }
            else if ((es.EstateOwner == (UUID)Constants.RealEstateOwnerUUID))    // System Estate?
            {
                es.EstateID = Constants.SystemEstateID;
            }
            else                                                                    // must be a new user estate then
            {
                es.EstateID = GetNewEstateID();
            }

            SaveEstateSettings(es, true);
            return((int)es.EstateID);
        }
Exemple #3
0
        public int CreateNewEstate(EstateSettings es, UUID RegionID)
        {
            object remoteValue = DoRemote(es.ToOSD(), RegionID);

            if (remoteValue != null || m_doRemoteOnly)
            {
                return((int)remoteValue);
            }


            int estateID = GetEstate(es.EstateOwner, es.EstateName);

            if (estateID > 0)
            {
                if (LinkRegion(RegionID, estateID))
                {
                    return(estateID);
                }
                return(0);
            }
            es.EstateID = GetNewEstateID();
            SaveEstateSettings(es, true);
            LinkRegion(RegionID, (int)es.EstateID);
            return((int)es.EstateID);
        }
Exemple #4
0
        public int CreateNewEstate(EstateSettings es)
        {
            object remoteValue = DoRemote(es.ToOSD());

            if (remoteValue != null || m_doRemoteOnly)
            {
                return((int)remoteValue);
            }


            int estateID = GetEstate(es.EstateOwner, es.EstateName);

            if (estateID > 0)
            {
                return(estateID);
            }

            // check for system user/estate
            if ((es.EstateOwner == (UUID)Constants.RealEstateOwnerUUID))              // We probably do not need to check both :)
            {
                es.EstateID = (uint)Constants.SystemEstateID;                         // Default Mainland estate  #
            }
            else
            {
                es.EstateID = GetNewEstateID();
            }

            SaveEstateSettings(es, true);
            return((int)es.EstateID);
        }
 protected void SaveEstateSettings(EstateSettings es, bool doInsert)
 {
     string[] keys = new string[5]
     {
         "EstateID",
         "EstateName",
         "EstateOwner",
         "ParentEstateID",
         "Settings"
     };
     object[] values = new object[5]
     {
         es.EstateID,
         es.EstateName,
         es.EstateOwner,
         es.ParentEstateID,
         OSDParser.SerializeJsonString(es.ToOSD())
     };
     if (!doInsert)
     {
         GD.Update(m_estateTable, values, keys, new string[1] {
             "EstateID"
         }, new object[1] {
             es.EstateID
         });
     }
     else
     {
         GD.Insert(m_estateTable, keys, values);
     }
 }
        public void SaveEstateSettings(EstateSettings es)
        {
            if (m_doRemoteOnly)
            {
                DoRemote(es.ToOSD());
                return;
            }

            SaveEstateSettings(es, false);
        }
Exemple #7
0
        public void SaveEstateSettings(EstateSettings es)
        {
            object remoteValue = DoRemote(es.ToOSD());

            if (remoteValue != null || m_doRemoteOnly)
            {
                return;
            }

            SaveEstateSettings(es, false);
        }
Exemple #8
0
        public List <EstateSettings> GetEstates(UUID OwnerID, Dictionary <string, bool> boolFields)
        {
            object remoteValue = DoRemote(OwnerID, boolFields);

            if (remoteValue != null || m_doRemoteOnly)
            {
                return((List <EstateSettings>)remoteValue);
            }

            List <EstateSettings> settings = new List <EstateSettings>();

            QueryFilter filter = new QueryFilter();

            filter.andFilters["EstateOwner"] = OwnerID;
            List <int> retVal =
                GD.Query(new string[1] {
                "EstateID"
            }, m_estateTable, filter, null, null, null)
                .ConvertAll(x => int.Parse(x));

            foreach (int estateID in retVal)
            {
                bool           Add = true;
                EstateSettings es  = GetEstate(estateID);

                if (boolFields.Count > 0)
                {
                    OSDMap esmap = es.ToOSD();
                    foreach (KeyValuePair <string, bool> field in boolFields)
                    {
                        if (esmap.ContainsKey(field.Key) && esmap[field.Key].AsBoolean() != field.Value)
                        {
                            Add = false;
                            break;
                        }
                    }
                }

                if (Add)
                {
                    settings.Add(ReturnEstateSettings(es));
                }
            }
            return(settings);
        }
        public int CreateNewEstate(EstateSettings es, UUID RegionID)
        {
            object remoteValue = DoRemote(es.ToOSD(), RegionID);
            if (remoteValue != null || m_doRemoteOnly)
                return (int) remoteValue;

            int estateID = GetEstate(es.EstateOwner, es.EstateName);
            if (estateID > 0)
            {
                if (LinkRegion(RegionID, estateID))
                    return estateID;
                return 0;
            }
            es.EstateID = GetNewEstateID();
            SaveEstateSettings(es, true);
            LinkRegion(RegionID, (int) es.EstateID);
            return (int) es.EstateID;
        }
        protected void SaveEstateSettings(EstateSettings es, bool doInsert)
        {
            Dictionary <string, object> values = new Dictionary <string, object> (5);

            values ["EstateID"]       = es.EstateID;
            values ["EstateName"]     = es.EstateName;
            values ["EstateOwner"]    = es.EstateOwner;
            values ["ParentEstateID"] = es.ParentEstateID;
            values ["Settings"]       = OSDParser.SerializeJsonString(es.ToOSD());

            if (!doInsert)
            {
                QueryFilter filter = new QueryFilter();
                filter.andFilters ["EstateID"] = es.EstateID;
                GD.Update(m_estateSettingsTable, values, null, filter, null, null);
            }
            else
            {
                GD.Insert(m_estateSettingsTable, values);
            }
        }
Exemple #11
0
        public override void FinishedMigration(IDataConnector genericData)
        {
            if (!genericData.TableExists("estates"))
            {
                return;
            }
            DataReaderConnection dr = genericData.QueryData("WHERE `Key` = 'EstateID'", "estates",
                                                            "`ID`, `Key`, `Value`");

            if (dr != null)
            {
                try
                {
                    while (dr.DataReader.Read())
                    {
                        try
                        {
                            UUID        ID     = UUID.Parse(dr.DataReader["ID"].ToString());
                            string      value  = dr.DataReader["Value"].ToString();
                            QueryFilter filter = new QueryFilter();
                            filter.andFilters["`ID`"]  = value;
                            filter.andFilters["`Key`"] = "EstateSettings";
                            List <string> results = genericData.Query(new string[1] {
                                "`Value`"
                            }, "estates", filter, null,
                                                                      null, null);
                            if ((results != null) && (results.Count >= 1))
                            {
                                EstateSettings es = new EstateSettings();
                                es.FromOSD((OSDMap)OSDParser.DeserializeLLSDXml(results[0]));
                                genericData.Insert("estateregions", new object[] { ID, value });

                                filter = new QueryFilter();
                                filter.andFilters["`EstateID`"] = value;

                                List <string> exist = genericData.Query(new string[1] {
                                    "`EstateID`"
                                }, "estatesettings",
                                                                        filter, null, null, null);
                                if (exist == null || exist.Count == 0)
                                {
                                    genericData.Insert("estatesettings",
                                                       new object[]
                                    {
                                        value, es.EstateName, es.EstateOwner, es.ParentEstateID,
                                        es.ToOSD()
                                    });
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                }
                catch
                {
                }
                finally
                {
                    dr.DataReader.Close();
                    genericData.CloseDatabase(dr);
                }
            }
        }
        protected void SaveEstateSettings(EstateSettings es, bool doInsert)
        {
            Dictionary<string, object> values = new Dictionary<string, object>(5);
            values["EstateID"] = es.EstateID;
            values["EstateName"] = es.EstateName;
            values["EstateOwner"] = es.EstateOwner;
            values["ParentEstateID"] = es.ParentEstateID;
            values["Settings"] = OSDParser.SerializeJsonString(es.ToOSD());

            if (!doInsert)
            {
                QueryFilter filter = new QueryFilter();
                filter.andFilters["EstateID"] = es.EstateID;
                GD.Update(m_estateTable, values, null, filter, null, null);
            }
            else
            {
                GD.Insert(m_estateTable, values);
            }
        }
        public void SaveEstateSettings(EstateSettings es)
        {
            object remoteValue = DoRemote(es.ToOSD());
            if (remoteValue != null || m_doRemoteOnly)
                return;

            SaveEstateSettings(es, false);
        }
        public EstateSettings CreateEstate(EstateSettings es, UUID RegionID)
		{
            int EstateID = 0;
            List<string> QueryResults = GD.Query("`Key`", "EstateID", "estates", "`Value`", " ORDER BY `Value` DESC");
            if (QueryResults.Count == 0)
                EstateID = 99;
            else
                EstateID = int.Parse(QueryResults[0]);

            if (EstateID == 0)
                EstateID = 99;

            //Check for other estates with the same name
            List<int> Estates = GetEstates(es.EstateName);
            if (Estates != null)
            {
                foreach (int otherEstateID in Estates)
                {
                    EstateSettings otherEstate = this.LoadEstateSettings(otherEstateID);
                    if (otherEstate.EstateName == es.EstateName)
                    { //Cant have two estates with the same name.
                        //We set the estate name so that the region can get the error and so we don't have to spit out more junk to find it.
                        return new EstateSettings()
                        {
                            EstateID = 0,
                            EstateName = "Duplicate Estate Name. Please Change."
                        };
                    }
                }
            }

            EstateID++;
            es.EstateID = (uint)EstateID;

            List<object> Values = new List<object>();
            Values.Add(es.EstateID);
            Values.Add("EstateSettings");
            OSD map = es.ToOSD(true);
            Values.Add(OSDParser.SerializeLLSDXmlString(map));
            GD.Insert("estates", Values.ToArray());

            GD.Insert("estates", new object[] {
					RegionID,
                    "EstateID",
					EstateID
				});

            es.OnSave += SaveEstateSettings;
            return es;
		}
        public void SaveEstateSettings(EstateSettings es)
        {
            List<string> query = null;
            try
            {
                query = GD.Query(new[] {"ID", "`Key`"}, new object[] {es.EstateID, "EstateSettings"}, "estates",
                                 "`Value`");
            }
            catch
            {
            }
            if (query == null || query.Count == 0)
                return; //Couldn't find it, return default then.

            OSDMap estateInfo = (OSDMap) OSDParser.DeserializeLLSDXml(query[0]);

            if (estateInfo["EstatePass"].AsString() != es.EstatePass)
            {
                MainConsole.Instance.Warn("[ESTATE SERVICE]: Wrong estate password in updating of estate " + es.EstateName +
                           "! Possible attempt to hack this estate!");
                return;
            }

            List<string> Keys = new List<string> {"Value"};
            List<object> Values = new List<object> {OSDParser.SerializeLLSDXmlString(es.ToOSD(true))};

            GD.Update("estates", Values.ToArray(), Keys.ToArray(), new[] {"ID", "`Key`"},
                      new object[] {es.EstateID, "EstateSettings"});

            SaveBanList(es);
            SaveUUIDList(es.EstateID, "EstateManagers", es.EstateManagers);
            SaveUUIDList(es.EstateID, "EstateAccess", es.EstateAccess);
            SaveUUIDList(es.EstateID, "EstateGroups", es.EstateGroups);

            m_registry.RequestModuleInterface<ISimulationBase>().EventManager.FireGenericEventHandler("EstateUpdated",
                                                                                                      es);
        }