public ViewerStatsMessage GetBySession(UUID sessionID) { QueryFilter filter = new QueryFilter(); filter.andFilters.Add("session_id", sessionID); List<string> results = GD.Query(new string[1] {"*"}, m_realm, filter, null, null, null); return BuildSession(results, 0); }
public IAgentInfo GetAgent(UUID agentID) { /*object remoteValue = DoRemoteForUser(agentID, agentID); if (remoteValue != null) return (IAgentInfo)remoteValue;*/ IAgentInfo agent = new IAgentInfo(); List<string> query = null; try { QueryFilter filter = new QueryFilter(); filter.andFilters["ID"] = agentID; filter.andFilters["`Key`"] = "AgentInfo"; query = GD.Query(new string[1] { "`Value`" }, "userdata", filter, null, null, null); } catch { } if (query == null || query.Count == 0) { return null; //Couldn't find it, return null then. } OSDMap agentInfo = (OSDMap) OSDParser.DeserializeLLSDXml(query[0]); agent.FromOSD(agentInfo); agent.PrincipalID = agentID; return agent; }
public List<string> FindLSLData(string token, string key) { QueryFilter filter = new QueryFilter(); filter.andFilters["Token"] = token.MySqlEscape(50); filter.andFilters["KeySetting"] = token.MySqlEscape(50); return GD.Query(new string[1] { "*" }, "lslgenericdata", filter, null, null, null); }
public bool AddClassified(Classified classified) { object remoteValue = DoRemote(classified); if (remoteValue != null || m_doRemoteOnly) return remoteValue != null && (bool) remoteValue; if (GetUserProfile(classified.CreatorUUID) == null) return false; string keywords = classified.Description; if (keywords.Length > 512) keywords = keywords.Substring(keywords.Length - 512, 512); //It might be updating, delete the old QueryFilter filter = new QueryFilter(); filter.andFilters["ClassifiedUUID"] = classified.ClassifiedUUID; GD.Delete("userclassifieds", filter); List<object> values = new List<object> { classified.Name, classified.Category, classified.SimName, classified.CreatorUUID, classified.ScopeID, classified.ClassifiedUUID, OSDParser.SerializeJsonString(classified.ToOSD()), classified.PriceForListing, keywords }; return GD.Insert("userclassifieds", values.ToArray()); }
public bool Delete(UUID id, bool ignoreFlags) { try { if (!ignoreFlags) { AssetBase asset = GetAsset(id, false); if (asset == null) return false; if ((int) (asset.Flags & AssetFlags.Maptile) != 0 || //Depriated, use Deletable instead (int) (asset.Flags & AssetFlags.Deletable) != 0) ignoreFlags = true; } if (ignoreFlags) { QueryFilter filter = new QueryFilter(); filter.andFilters["id"] = id; m_Gd.Delete("assets", filter); } } catch (Exception e) { if (MainConsole.Instance != null) MainConsole.Instance.Error("[LocalAssetDatabase] Error while deleting asset " + e); } return true; }
public FriendInfo[] GetFriends(UUID principalID) { List<FriendInfo> infos = new List<FriendInfo>(); QueryTables tables = new QueryTables(); tables.AddTable(m_realm, "my"); tables.AddTable(m_realm, "his", JoinType.Inner, new[,] {{"my.Friend", "his.PrincipalID"}, {"my.PrincipalID", "his.Friend"}}); QueryFilter filter = new QueryFilter(); filter.andFilters["my.PrincipalID"] = principalID; List<string> query = GD.Query(new string[] { "my.Friend", "my.Flags", "his.Flags" }, tables, filter, null, null, null); //These are used to get the other flags below for (int i = 0; i < query.Count; i += 3) { FriendInfo info = new FriendInfo { PrincipalID = principalID, Friend = query[i], MyFlags = int.Parse(query[i + 1]), TheirFlags = int.Parse(query[i + 2]) }; infos.Add(info); } return infos.ToArray(); }
/// <summary> /// Get a user's profile /// </summary> /// <param name = "agentID"></param> /// <returns></returns> public IUserProfileInfo GetUserProfile(UUID agentID) { IUserProfileInfo UserProfile = new IUserProfileInfo(); //Try from the user profile first before getting from the DB if (UserProfilesCache.TryGetValue(agentID, out UserProfile)) return UserProfile; else { QueryFilter filter = new QueryFilter(); filter.andFilters["ID"] = agentID; filter.andFilters["`Key`"] = "LLProfile"; List<string> query = null; //Grab it from the almost generic interface query = GD.Query(new string[] { "Value" }, "userdata", filter, null, null, null); if (query == null || query.Count == 0) return null; //Pull out the OSDmap OSDMap profile = (OSDMap) OSDParser.DeserializeLLSDXml(query[0]); UserProfile = new IUserProfileInfo(); UserProfile.FromOSD(profile); //Add to the cache UserProfilesCache[agentID] = UserProfile; return UserProfile; } }
public bool Delete(UUID ownerID, string friend) { QueryFilter filter = new QueryFilter(); filter.andFilters["PrincipalID"] = ownerID; filter.andFilters["Friend"] = friend; return GD.Delete(m_realm, filter); }
public UserInfo Get(string userID, bool checkOnlineStatus, out bool onlineStatusChanged) { onlineStatusChanged = false; QueryFilter filter = new QueryFilter(); filter.andFilters["UserID"] = userID; List<string> query = GD.Query(new string[1] {"*"}, m_realm, filter, null, null, null); if (query.Count == 0) { return null; } UserInfo user = ParseQuery(query)[0]; //Check LastSeen DateTime timeLastSeen = Util.ToDateTime(int.Parse(query[2])); DateTime timeNow = DateTime.Now.ToUniversalTime(); if (checkOnlineStatus && m_checkLastSeen && user.IsOnline && (timeLastSeen.AddHours(1) < timeNow)) { MainConsole.Instance.Warn("[UserInfoService]: Found a user (" + user.UserID + ") that was not seen within the last hour " + "(since " + timeLastSeen.ToLocalTime().ToString() + ", time elapsed " + (timeNow - timeLastSeen).Days + " days, " + (timeNow - timeLastSeen).Hours + " hours)! Logging them out."); user.IsOnline = false; Set(user); onlineStatusChanged = true; } return user; }
public virtual bool DeleteFolders(string field, string val, bool safe) { QueryFilter filter = new QueryFilter(); filter.andFilters[field] = val; if (safe) { filter.andFilters["type"] = "-1"; } return GD.Delete(m_foldersrealm, filter); }
public AvatarArchive GetAvatarArchive(string Name) { QueryFilter filter = new QueryFilter(); filter.andFilters["Name"] = Name; List<string> RetVal = GD.Query(new string[] { "*" }, "avatararchives", filter, null, null, null); return (RetVal.Count == 0) ? null : new AvatarArchive { Name = RetVal[0], ArchiveXML = RetVal[1] }; }
public List<string> FindLSLData(string token, string key) { object remoteValue = DoRemote(token, key); if (remoteValue != null || m_doRemoteOnly) return (List<string>) remoteValue; QueryFilter filter = new QueryFilter(); filter.andFilters["Token"] = token; filter.andFilters["KeySetting"] = key; return GD.Query(new string[1] {"*"}, "lslgenericdata", filter, null, null, null); }
public SchedulerItem Get(string id) { if (id != "") { QueryFilter filter = new QueryFilter(); filter.andFilters["id"] = id; List<string> results = m_Gd.Query(theFields, "scheduler", filter, null, null, null); return LoadFromList(results); } return null; }
public bool DeleteAccount(UUID userID, bool archiveInformation) { if (archiveInformation) { return GD.Update(m_realm, new Dictionary<string, object> {{"UserLevel", -2}}, null, new QueryFilter {andFilters = new Dictionary<string, object> {{"PrincipalID", userID}}}, null, null); } QueryFilter filter = new QueryFilter(); filter.andFilters.Add("PrincipalID", userID); return GD.Delete(m_realm, filter); }
public bool Store(UUID PrincipalID, string Friend, int Flags, int Offered) { QueryFilter filter = new QueryFilter(); filter.andFilters["PrincipalID"] = PrincipalID; filter.andFilters["Friend"] = Friend; GD.Delete(m_realm, filter); Dictionary<string, object> row = new Dictionary<string, object>(4); row["PrincipalID"] = PrincipalID; row["Friend"] = Friend; row["Flags"] = Flags; row["Offered"] = Offered; return GD.Insert(m_realm, row); }
public bool ExistsAsset(UUID uuid) { try { QueryFilter filter = new QueryFilter(); filter.andFilters["id"] = uuid; return m_Gd.Query(new string[] { "id" }, "assets", filter, null, null, null).Count > 0; } catch (Exception e) { MainConsole.Instance.ErrorFormat("[LocalAssetDatabase]: Failure fetching asset {0}" + Environment.NewLine + e, uuid); } return false; }
public RegionInfo GetRegionInfo(UUID regionID) { QueryFilter filter = new QueryFilter(); filter.andFilters["RegionID"] = regionID; List<string> RetVal = GD.Query(new[] { "RegionInfo" }, "simulator", filter, null, null, null); if (RetVal.Count == 0) { return null; } RegionInfo replyData = new RegionInfo(); replyData.UnpackRegionInfoData((OSDMap)OSDParser.DeserializeJson(RetVal[0])); return replyData; }
public AvatarAppearance Get(UUID PrincipalID) { QueryFilter filter = new QueryFilter(); filter.andFilters["PrincipalID"] = PrincipalID; List<string> data; lock (m_lock) { data = GD.Query(new string[] {"Appearance"}, m_realm, filter, null, null, null); } if (data.Count == 0) return null; AvatarAppearance appearance = new AvatarAppearance(); appearance.FromOSD((OSDMap) OSDParser.DeserializeJson(data[0])); return appearance; }
[CanBeReflected(ThreatLevel = OpenSim.Services.Interfaces.ThreatLevel.Low)] public void UpdateLSLData(string token, string key, string value) { object remoteValue = DoRemote(token, key, value); if (remoteValue != null || m_doRemoteOnly) return; if (FindLSLData(token, key).Count == 0) { GD.Insert("lslgenericdata", new[] {token.MySqlEscape(50), key.MySqlEscape(50), value.MySqlEscape(50)}); } else { Dictionary<string, object> values = new Dictionary<string, object>(1); values["ValueSetting"] = value.MySqlEscape(50); QueryFilter filter = new QueryFilter(); filter.andFilters["KeySetting"] = key.MySqlEscape(50); GD.Update("lslgenericdata", values, null, filter, null, null); } }
public bool Store(UUID PrincipalID, AvatarData data) { QueryFilter filter = new QueryFilter(); filter.andFilters["PrincipalID"] = PrincipalID; GD.Delete(m_realm, filter); List<object[]> insertList = new List<object[]>(); foreach(KeyValuePair<string, string> kvp in data.Data) { insertList.Add(new object[3]{ PrincipalID, kvp.Key.MySqlEscape(32), kvp.Key == "Textures" ? kvp.Value : kvp.Value.MySqlEscape() }); } GD.InsertMultiple(m_realm, insertList); return true; }
public bool CheckToken(UUID principalID, string token, int lifetime) { if (Environment.TickCount - m_LastExpire > 30000) { DoExpire(); } uint now = Utils.DateTimeToUnixTime(DateTime.Now); Dictionary<string, object> values = new Dictionary<string, object>(1); values["validity"] = now + (lifetime*60); QueryFilter filter = new QueryFilter(); filter.andFilters["UUID"] = principalID; filter.andFilters["token"] = token; filter.andLessThanEqFilters["validity"] = (int) now; return GD.Update(m_tokensrealm, values, null, filter, null, null); }
public AuthData Get(UUID principalID, string authType) { QueryFilter filter = new QueryFilter(); filter.andFilters["UUID"] = principalID; filter.andFilters["accountType"] = authType; List<string> query = GD.Query(new string[1] { "*" }, m_realm, filter, null, null, null); AuthData data = null; for (int i = 0; i < query.Count; i += 5) { data = new AuthData { PrincipalID = UUID.Parse(query[i]), PasswordHash = query[i + 1], PasswordSalt = query[i + 2], AccountType = query[i + 3] }; } return data; }
public bool Store(UUID PrincipalID, AvatarData data) { lock (m_locks[PrincipalID]) { QueryFilter filter = new QueryFilter(); filter.andFilters["PrincipalID"] = PrincipalID; GD.Delete(m_realm, filter); List<object[]> insertList = new List<object[]>(); foreach (KeyValuePair<string, string> kvp in data.Data) { insertList.Add(new object[3]{ PrincipalID, kvp.Key, kvp.Value }); } GD.InsertMultiple(m_realm, insertList); } return true; }
public void UpdateLSLData(string token, string key, string value) { object remoteValue = DoRemote(token, key, value); if (remoteValue != null || m_doRemoteOnly) return; if (FindLSLData(token, key).Count == 0) { GD.Insert("lslgenericdata", new[] {token, key, value}); } else { Dictionary<string, object> values = new Dictionary<string, object>(1); values["ValueSetting"] = value; QueryFilter filter = new QueryFilter(); filter.andFilters["KeySetting"] = key; GD.Update("lslgenericdata", values, null, filter, null, null); } }
public FriendInfo[] GetFriends(UUID principalID) { List<FriendInfo> infos = new List<FriendInfo>(); QueryFilter filter = new QueryFilter(); filter.andFilters["PrincipalID"] = principalID; List<string> query = GD.Query(new string[]{ "Friend", "Flags" }, m_realm, filter, null, null, null); //These are used to get the other flags below List<string> keys = new List<string>(); List<object> values = new List<object>(); for (int i = 0; i < query.Count; i += 2) { FriendInfo info = new FriendInfo{ PrincipalID = principalID, Friend = query[i], MyFlags = int.Parse(query[i + 1]) }; infos.Add(info); Dictionary<string, object> where = new Dictionary<string, object>(2); where["PrincipalID"] = info.Friend; where["Friend"] = info.PrincipalID; List<string> query2 = GD.Query(new string[1] { "Flags" }, m_realm, new QueryFilter{ andFilters = where }, null, null, null); if (query2.Count >= 1) { infos[infos.Count - 1].TheirFlags = int.Parse(query2[0]); } keys = new List<string>(); values = new List<object>(); } return infos.ToArray(); }
public void AddAgentGroupInvite(UUID requestingAgentID, UUID inviteID, UUID GroupID, UUID roleID, UUID AgentID, string FromAgentName) { object remoteValue = DoRemote(requestingAgentID, inviteID, GroupID, roleID, AgentID, FromAgentName); if (remoteValue != null || m_doRemoteOnly) return; if (CheckGroupPermissions(requestingAgentID, GroupID, (ulong)GroupPowers.Invite)) { QueryFilter filter = new QueryFilter(); filter.andFilters["AgentID"] = AgentID; filter.andFilters["GroupID"] = GroupID; data.Delete("osgroupinvite", filter); Dictionary<string, object> row = new Dictionary<string, object>(6); row["InviteID"] = inviteID; row["GroupID"] = GroupID; row["RoleID"] = roleID; row["AgentID"] = AgentID; row["TMStamp"] = Util.UnixTimeSinceEpoch(); row["FromAgentName"] = FromAgentName.MySqlEscape(50); data.Insert("osgroupinvite", row); } }
public bool AddClassified(Classified classified) { object remoteValue = DoRemote(classified); if (remoteValue != null || m_doRemoteOnly) return remoteValue != null && (bool)remoteValue; if (GetUserProfile(classified.CreatorUUID) == null) return false; //It might be updating, delete the old QueryFilter filter = new QueryFilter(); filter.andFilters["ClassifiedUUID"] = classified.ClassifiedUUID; GD.Delete("userclassifieds", filter); List<object> values = new List<object>{ classified.Name.MySqlEscape(), classified.Category, classified.SimName.MySqlEscape(), classified.CreatorUUID, classified.ClassifiedUUID, OSDParser.SerializeJsonString(classified.ToOSD()), classified.ScopeID }; return GD.Insert("userclassifieds", values.ToArray()); }
public abstract bool Delete(string table, QueryFilter queryFilter);
public void WriteAuroraVersion(Version version, string MigrationName) { if (!TableExists(VERSION_TABLE_NAME)) { CreateTable(VERSION_TABLE_NAME, new[]{new ColumnDefinition{ Name = COLUMN_VERSION, Type = new ColumnTypeDef{ Type= ColumnType.String, Size = 100 } }}, new IndexDefinition[0]); } //Remove previous versions QueryFilter filter = new QueryFilter(); filter.andFilters[COLUMN_NAME] = MigrationName; Delete(VERSION_TABLE_NAME, filter); //Add the new version Insert(VERSION_TABLE_NAME, new[] {version.ToString(), MigrationName}); }
public abstract List<string> Query(string[] wantedValue, string table, QueryFilter queryFilter, Dictionary<string, bool> sort, uint? start, uint? count);