bool IExperiencePermissionsInterface.TryGetValue(UEI experienceID, UGUI agent, out bool allowed)
        {
            using (var conn = new SqlConnection(m_ConnectionString))
            {
                conn.Open();
                using (var cmd = new SqlCommand("SELECT User,IsAllowed FROM experienceusers WHERE ExperienceID = @experienceid AND User LIKE @user", conn))
                {
                    cmd.Parameters.AddParameter("@experienceid", experienceID.ID);
                    cmd.Parameters.AddParameter("@user", agent.ID.ToString() + "%");
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            UGUI ret = reader.GetUGUI("User");
                            if (ret.EqualsGrid(agent))
                            {
                                allowed = (bool)reader["IsAllowed"];
                                return(true);
                            }
                        }
                    }
                }
            }

            allowed = false;
            return(false);
        }
        bool IExperiencePermissionsInterface.this[UEI experienceID, UGUI agent]
        {
            get
            {
                bool ret;
                if (!Permissions.TryGetValue(experienceID, agent, out ret))
                {
                    throw new KeyNotFoundException();
                }
                return(ret);
            }

            set
            {
                var vals = new Dictionary <string, object>
                {
                    ["ExperienceID"] = experienceID.ID,
                    ["User"]         = agent,
                    ["IsAllowed"]    = value
                };
                using (var conn = new SqlConnection(m_ConnectionString))
                {
                    conn.Open();
                    conn.ReplaceInto("experienceusers", vals, new string[] { "ExperienceID", "User" });
                }
            }
        }
示例#3
0
        bool IExperiencePermissionsInterface.TryGetValue(UEI experienceID, UGUI agent, out bool allowed)
        {
            RwLockedDictionary <UGUI, bool> k;

            allowed = false;
            return(m_Perms.TryGetValue(experienceID, out k) && k.TryGetValue(agent, out allowed));
        }
示例#4
0
 bool IRegionExperienceList.TryGetValue(UUID regionID, UEI experienceID, out RegionExperienceInfo info)
 {
     using (var conn = new SqlConnection(m_ConnectionString))
     {
         conn.Open();
         using (var cmd = new SqlCommand("SELECT TOP(1) * FROM regionexperiences WHERE RegionID = @regionid AND ExperienceID = @experienceid", conn))
         {
             cmd.Parameters.AddParameter("@regionid", regionID);
             cmd.Parameters.AddParameter("@experienceid", experienceID.ID);
             using (SqlDataReader reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
                     info = new RegionExperienceInfo
                     {
                         ExperienceID = new UEI(reader.GetUUID("ExperienceID")),
                         RegionID     = reader.GetUUID("RegionID"),
                         IsAllowed    = (bool)reader["IsAllowed"]
                     };
                     return(true);
                 }
             }
         }
     }
     info = default(RegionExperienceInfo);
     return(false);
 }
 public ParcelExperienceEntry(ParcelExperienceEntry src)
 {
     RegionID     = src.RegionID;
     ParcelID     = src.ParcelID;
     ExperienceID = src.ExperienceID;
     IsAllowed    = src.IsAllowed;
 }
 bool IParcelExperienceList.TryGetValue(UUID regionID, UUID parcelID, UEI experienceID, out ParcelExperienceEntry entry)
 {
     using (var connection = new MySqlConnection(m_ConnectionString))
     {
         connection.Open();
         /* we use a specific implementation to reduce the result set here */
         using (var cmd = new MySqlCommand("SELECT IsAllowed FROM parcelexperiences WHERE RegionID = @regionid AND ParcelID = @parcelid AND ExperienceID LIKE @experienceid LIMIT 1", connection))
         {
             cmd.Parameters.AddParameter("@regionid", regionID);
             cmd.Parameters.AddParameter("@parcelid", parcelID);
             cmd.Parameters.AddParameter("@experienceid", experienceID.ID);
             using (MySqlDataReader reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
                     entry = new ParcelExperienceEntry
                     {
                         RegionID     = regionID,
                         ParcelID     = parcelID,
                         ExperienceID = new UEI(experienceID),
                         IsAllowed    = reader.GetBool("IsAllowed")
                     };
                     return(true);
                 }
             }
         }
         entry = default(ParcelExperienceEntry);
         return(false);
     }
 }
 bool IEstateExperienceServiceInterface.TryGetValue(uint estateID, UEI experienceID, out EstateExperienceInfo info)
 {
     using (var conn = new NpgsqlConnection(m_ConnectionString))
     {
         conn.Open();
         using (var cmd = new NpgsqlCommand("SELECT * FROM estateexperiences WHERE \"EstateID\" = @estateid AND \"ExperienceID\" = @experienceid LIMIT 1", conn))
         {
             cmd.Parameters.AddParameter("@estateid", estateID);
             cmd.Parameters.AddParameter("@experienceid", experienceID.ID);
             using (NpgsqlDataReader reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
                     info = new EstateExperienceInfo
                     {
                         EstateID     = estateID,
                         ExperienceID = new UEI(experienceID),
                         IsAllowed    = (bool)reader["IsAllowed"]
                     };
                     return(true);
                 }
             }
         }
     }
     info = default(EstateExperienceInfo);
     return(false);
 }
        bool IEstateTrustedExperienceServiceInterface.TryGetValue(uint estateID, UEI experienceID, out bool trusted)
        {
            RwLockedDictionary <UUID, bool> exp;

            trusted = m_TrustedExperiences.TryGetValue(estateID, out exp) && exp.ContainsKey(experienceID.ID);
            return(true);
        }
示例#9
0
        bool IExperienceKeyValueInterface.GetDatasize(UEI experienceID, out int used, out int quota)
        {
            used  = 0;
            quota = -1;

            return(true);
        }
        bool IExperienceKeyValueInterface.StoreOnlyIfEqualOrig(UEI experienceID, string key, string value, string orig_value)
        {
            using (var conn = new SqlConnection(m_ConnectionString))
            {
                conn.Open();
                return(conn.InsideTransaction <bool>((transaction) =>
                {
                    using (var cmd = new SqlCommand("SELECT TOP(1) [Value] FROM experiencekeyvalues WHERE ExperienceID = @experienceid AND [Key] = @key", conn))
                    {
                        cmd.Transaction = transaction;
                        cmd.Parameters.AddParameter("@experienceid", experienceID.ID);
                        cmd.Parameters.AddParameter("@key", key);
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            if (reader.Read() && (string)reader["Value"] != orig_value)
                            {
                                return false;
                            }
                        }
                    }

                    var vals = new Dictionary <string, object>
                    {
                        ["ExperienceID"] = experienceID.ID,
                        ["Key"] = key,
                        ["Value"] = value
                    };
                    conn.ReplaceInto("experiencekeyvalues", vals, new string[] { "ExperienceID", "Key" }, transaction);

                    return true;
                }));
            }
        }
示例#11
0
        public override bool TryGetValue(UEI experienceID, out ExperienceInfo experienceInfo)
        {
            ExperienceInfoCache info;

            if (m_ExperienceInfoCache.TryGetValue(experienceID.ID, out info) && m_ClockSource.TicksElapsed(m_ClockSource.TickCount, info.ExpiryTickCount) < m_ClockSource.SecsToTicks(ExperienceInfoTimeout))
            {
                experienceInfo = new ExperienceInfo(info.Info);
                return(true);
            }

            ExperienceInfo expInfo;

            if (InnerExperienceService.TryGetValue(experienceID, out expInfo))
            {
                info = new ExperienceInfoCache
                {
                    Info            = expInfo,
                    ExpiryTickCount = m_ClockSource.TickCount
                };
                m_ExperienceInfoCache[experienceID.ID] = info;
                experienceInfo = new ExperienceInfo(expInfo);
                return(true);
            }

            experienceInfo = default(ExperienceInfo);
            return(false);
        }
示例#12
0
        bool IExperienceKeyValueInterface.TryGetValue(UEI experienceID, string key, out string val)
        {
            RwLockedDictionary <string, string> exp;

            val = string.Empty;
            return(m_KeyValues.TryGetValue(experienceID, out exp) && exp.TryGetValue(key, out val));
        }
示例#13
0
        bool IExperiencePermissionsInterface.TryGetValue(UEI experienceID, UGUI agent, out bool allowed)
        {
            ExperienceServiceInterface experienceService;

            allowed = false;
            return(TryGetExperienceService(experienceID, out experienceService) && experienceService.Permissions.TryGetValue(experienceID, agent, out allowed));
        }
        bool IExperienceKeyValueInterface.TryGetValue(UEI experienceID, string key, out string val)
        {
            ExperienceServiceInterface experienceService;

            val = default(string);
            return(TryGetExperienceService(experienceID, out experienceService) && experienceService.KeyValueStore.TryGetValue(experienceID, key, out val));
        }
示例#15
0
        bool IEstateTrustedExperienceServiceInterface.this[uint estateID, UEI experienceID]
        {
            get
            {
                bool trusted;
                TrustedExperiences.TryGetValue(estateID, experienceID, out trusted);
                return(trusted);
            }

            set
            {
                if (value)
                {
                    var vals = new Dictionary <string, object>
                    {
                        ["EstateID"]     = estateID,
                        ["ExperienceID"] = experienceID.ID
                    };
                    using (var conn = new NpgsqlConnection(m_ConnectionString))
                    {
                        conn.Open();
                        conn.ReplaceInto("estatetrustedexperiences", vals, EstateTrustedExperienceKeys, m_EnableOnConflict);
                    }
                }
                else
                {
                    TrustedExperiences.Remove(estateID, experienceID);
                }
            }
        }
        bool IExperienceKeyValueInterface.GetDatasize(UEI experienceID, out int used, out int quota)
        {
            ExperienceServiceInterface experienceService;

            used  = 0;
            quota = 0;
            return(TryGetExperienceService(experienceID, out experienceService) && experienceService.KeyValueStore.GetDatasize(experienceID, out used, out quota));
        }
        public void Startup(ConfigurationLoader loader)
        {
            IConfig config = loader.Config.Configs[GetType().FullName];

            m_ExperienceServiceName = config.GetString("ExperienceService", "ExperienceService");

            m_ExperienceService = loader.GetService <ExperienceServiceInterface>(m_ExperienceServiceName);
            m_UEI = new UEI(m_ExperienceID, "Name", new Uri("http://example.com/"));
        }
示例#18
0
        void IExperienceKeyValueInterface.Store(UEI experienceID, string key, string value)
        {
            RwLockedDictionary <string, string> exp = m_KeyValues[experienceID];

            lock (m_UpdateLock)
            {
                exp[key] = value;
            }
        }
        private ExperienceServiceInterface GetExperienceService(UEI experience)
        {
            ExperienceServiceInterface experienceService;

            if (!TryGetExperienceService(experience, out experienceService))
            {
                throw new ExperienceServiceNotFoundException();
            }
            return(experienceService);
        }
        public override bool TryRequestAuthorization(UGUI requestingAgent, UEI uei)
        {
            ExperienceServiceInterface experienceService;

            if (TryGetExperienceService(requestingAgent, out experienceService) && experienceService.TryRequestAuthorization(requestingAgent, uei))
            {
                m_ExperienceNameService.Store(uei);
                return(true);
            }
            return(false);
        }
        bool IRegionTrustedExperienceList.TryGetValue(UUID regionID, UEI experienceID, out bool trusted)
        {
            trusted = false;
            RwLockedDictionary <UUID, bool> exp;

            if (m_TrustedExperiences.TryGetValue(regionID, out exp))
            {
                exp.TryGetValue(experienceID.ID, out trusted);
            }
            return(true);
        }
示例#22
0
        bool IExperienceAdminInterface.TryGetValue(UEI experienceID, UGUI agent, out bool allowed)
        {
            RwLockedDictionary <UGUI, bool> k;

            if (m_Admins.TryGetValue(experienceID, out k))
            {
                allowed = k.ContainsKey(agent);
                return(true);
            }
            allowed = false;
            return(false);
        }
        bool IEstateExperienceServiceInterface.TryGetValue(uint estateID, UEI experienceID, out EstateExperienceInfo info)
        {
            RwLockedDictionary <UUID, EstateExperienceInfo> experiences;

            if (m_Experiences.TryGetValue(estateID, out experiences) && experiences.TryGetValue(experienceID.ID, out info))
            {
                info = new EstateExperienceInfo(info);
                return(true);
            }
            info = default(EstateExperienceInfo);
            return(false);
        }
        public override bool TryGetValue(UEI experienceID, out ExperienceInfo experienceInfo)
        {
            ExperienceInfo res;

            if (m_Experiences.TryGetValue(experienceID.ID, out res))
            {
                experienceInfo = new ExperienceInfo(res);
                return(true);
            }
            experienceInfo = null;
            return(false);
        }
示例#25
0
        bool IExperiencePermissionsInterface.this[UEI experienceID, UGUI agent]
        {
            get
            {
                return(GetExperienceService(experienceID).Permissions[experienceID, agent]);
            }

            set
            {
                GetExperienceService(experienceID).Permissions[experienceID, agent] = value;
            }
        }
示例#26
0
        public override bool TryGetValue(UUID experienceID, out UEI uei)
        {
            ExperienceInfo info;

            if (TryGetValue(new UEI(experienceID), out info))
            {
                uei = info.ID;
                return(true);
            }
            uei = default(UEI);
            return(false);
        }
 public ExperienceInfo this[UEI experienceID]
 {
     get
     {
         ExperienceInfo info;
         if (!TryGetValue(experienceID, out info))
         {
             throw new KeyNotFoundException();
         }
         return(info);
     }
 }
示例#28
0
 RegionExperienceInfo IRegionExperienceList.this[UUID regionID, UEI experienceID]
 {
     get
     {
         RegionExperienceInfo info;
         if (!RegionExperiences.TryGetValue(regionID, experienceID, out info))
         {
             throw new KeyNotFoundException();
         }
         return(info);
     }
 }
示例#29
0
        bool IExperienceAdminInterface.this[UEI experienceID, UGUI agent]
        {
            get
            {
                return(GetExperienceService(agent).Admins[experienceID, agent]);
            }

            set
            {
                GetExperienceService(agent).Admins[experienceID, agent] = value;
            }
        }
        public override bool TryGetValue(UUID id, out UEI uei)
        {
            ExperienceInfo res;

            if (m_Experiences.TryGetValue(id, out res))
            {
                uei = new UEI(res.ID);
                return(true);
            }
            uei = null;
            return(false);
        }
示例#31
0
 private void FirmwareVersionResult(UEI.HidIf.CommandType retVal,
                                    string                version)
 {
     if(this.InvokeRequired)
     {
         this.Invoke(new GetFirmwareVersion.GetFirmwareVersionResult_delegate(FirmwareVersionResult),
                     new object[] {retVal,version});
     }
     else
     {
         lbl_FirmwareVersion.Text = version;
         lbl_RetVal.Text = String.Format("{0}", retVal);
     }
 }
示例#32
0
 private void SerialNumberResult(UEI.HidIf.CommandType retVal,
                                 string                serialnumber)
 {
     if(this.InvokeRequired)
     {
         this.Invoke(new GetSerialNumber.GetSerialNumberResult_delegate(SerialNumberResult),
                     new object[] {retVal,serialnumber});
     }
     else
     {
         lbl_SerialNumber.Text = serialnumber;
         lbl_RetVal.Text = String.Format("{0}", retVal);
     }
 }