From 2c4a60c5d686168e54d71b0582b8d78eafec00a1 Mon Sep 17 00:00:00 2001 From: onefang Date: Thu, 22 Aug 2019 15:47:24 +1000 Subject: More stats, and an actual stats web page. --- OpenSim/Server/Handlers/Web/WebServerConnector.cs | 37 +++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'OpenSim/Server/Handlers/Web/WebServerConnector.cs') diff --git a/OpenSim/Server/Handlers/Web/WebServerConnector.cs b/OpenSim/Server/Handlers/Web/WebServerConnector.cs index 0f328d9..f06d4d8 100644 --- a/OpenSim/Server/Handlers/Web/WebServerConnector.cs +++ b/OpenSim/Server/Handlers/Web/WebServerConnector.cs @@ -242,14 +242,45 @@ namespace OpenSim.Server.Handlers.Web return reply; } - long locIn = m_database.Count("Presence", "RegionID != '00000000-0000-0000-0000-000000000000'"); // Locals online but not HGing, and HGers in world. - long HGin = m_database.Count("Presence", "UserID NOT IN (SELECT PrincipalID FROM UserAccounts)"); // HGers in world. + long locIn = m_database.Count("Presence", "RegionID != '00000000-0000-0000-0000-000000000000'"); // Locals online but not HGing, and HGers in world. + long HGin = m_database.Count("Presence", "UserID NOT IN (SELECT PrincipalID FROM UserAccounts)"); // HGers in world. ssi["hgers"] = HGin.ToString(); ssi["inworld"] = (locIn - HGin).ToString(); ssi["outworld"] = m_database.Count("hg_traveling_data", "GridExternalName != '" + ssi["uri"] + "'").ToString(); // Locals that are HGing. ssi["members"] = m_database.Count("UserAccounts").ToString(); - ssi["month"] = m_database.Count("GridUser", "Login > UNIX_TIMESTAMP(FROM_UNIXTIME(UNIX_TIMESTAMP(now()) - 2419200))").ToString(); ssi["sims"] = m_database.Count("regions").ToString(); + ssi["onlineSims"] = m_database.Count("regions", "sizeX != 0").ToString(); + ssi["varRegions"] = m_database.Count("regions", "sizeX > 256 or sizeY > 256").ToString(); + ssi["singleSims"] = m_database.Count("regions", "sizeX = 256 and sizeY = 256").ToString(); + ssi["offlineSims"] = m_database.Count("regions", "sizeX = 0").ToString(); + + // Calculate grid area. + long simSize = 0; + List< Hashtable > rows = m_database.Select("regions", "sizeX,sizeY", "sizeX != 0", ""); + foreach (Hashtable row in rows) + { + simSize = simSize + Convert.ToInt32(row["sizeX"]) * Convert.ToInt32(row["sizeY"]); + } + ssi["simsSize"] = simSize.ToString(); + + // Count local and HG visitors for the last 30 and 60 days. + HGin = m_database.Count("GridUser", "Login > UNIX_TIMESTAMP(FROM_UNIXTIME(UNIX_TIMESTAMP(now()) - 2419200))"); + rows = m_database.Join("GridUser", "GridUser.UserID", "INNER JOIN UserAccounts ON GridUser.UserID = UserAccounts.PrincipalID", + "Login > UNIX_TIMESTAMP(FROM_UNIXTIME(UNIX_TIMESTAMP(now()) - 2419200))", ""); + locIn = rows.Count; + ssi["locDay30"] = locIn.ToString(); + ssi["day30"] = HGin.ToString(); + HGin = HGin - locIn; + ssi["HGday30"] = HGin.ToString(); + + HGin = m_database.Count("GridUser", "Login > UNIX_TIMESTAMP(FROM_UNIXTIME(UNIX_TIMESTAMP(now()) - 4838400))"); + rows = m_database.Join("GridUser", "GridUser.UserID", "INNER JOIN UserAccounts ON GridUser.UserID = UserAccounts.PrincipalID", + "Login > UNIX_TIMESTAMP(FROM_UNIXTIME(UNIX_TIMESTAMP(now()) - 4838400))", ""); + locIn = rows.Count; + ssi["locDay60"] = locIn.ToString(); + ssi["day60"] = HGin.ToString(); + HGin = HGin - locIn; + ssi["HGday60"] = HGin.ToString(); foreach (DictionaryEntry h in headers) { -- cgit v1.1