Add experimental "show grid users online" console command to show grid users online from a standalone/robust instance.
This is not guaranteed to be accurate since users may be left "online" in certain situations. For example, if a simulator crashes and they never login/logout again. To counter this somewhat, only users continuously online for less than 5 days are shown.varregion
parent
857f24a5e2
commit
4035badd20
|
@ -130,7 +130,7 @@ namespace OpenSim.Framework
|
||||||
private static SmartThreadPool m_ThreadPool;
|
private static SmartThreadPool m_ThreadPool;
|
||||||
|
|
||||||
// Unix-epoch starts at January 1st 1970, 00:00:00 UTC. And all our times in the server are (or at least should be) in UTC.
|
// Unix-epoch starts at January 1st 1970, 00:00:00 UTC. And all our times in the server are (or at least should be) in UTC.
|
||||||
private static readonly DateTime unixEpoch =
|
public static readonly DateTime UnixEpoch =
|
||||||
DateTime.ParseExact("1970-01-01 00:00:00 +0", "yyyy-MM-dd hh:mm:ss z", DateTimeFormatInfo.InvariantInfo).ToUniversalTime();
|
DateTime.ParseExact("1970-01-01 00:00:00 +0", "yyyy-MM-dd hh:mm:ss z", DateTimeFormatInfo.InvariantInfo).ToUniversalTime();
|
||||||
|
|
||||||
private static readonly string rawUUIDPattern
|
private static readonly string rawUUIDPattern
|
||||||
|
@ -521,19 +521,19 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
public static int ToUnixTime(DateTime stamp)
|
public static int ToUnixTime(DateTime stamp)
|
||||||
{
|
{
|
||||||
TimeSpan t = stamp.ToUniversalTime() - unixEpoch;
|
TimeSpan t = stamp.ToUniversalTime() - UnixEpoch;
|
||||||
return (int) t.TotalSeconds;
|
return (int) t.TotalSeconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DateTime ToDateTime(ulong seconds)
|
public static DateTime ToDateTime(ulong seconds)
|
||||||
{
|
{
|
||||||
DateTime epoch = unixEpoch;
|
DateTime epoch = UnixEpoch;
|
||||||
return epoch.AddSeconds(seconds);
|
return epoch.AddSeconds(seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DateTime ToDateTime(int seconds)
|
public static DateTime ToDateTime(int seconds)
|
||||||
{
|
{
|
||||||
DateTime epoch = unixEpoch;
|
DateTime epoch = UnixEpoch;
|
||||||
return epoch.AddSeconds(seconds);
|
return epoch.AddSeconds(seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,45 @@ namespace OpenSim.Services.UserAccountService
|
||||||
public GridUserService(IConfigSource config) : base(config)
|
public GridUserService(IConfigSource config) : base(config)
|
||||||
{
|
{
|
||||||
m_log.Debug("[GRID USER SERVICE]: Starting user grid service");
|
m_log.Debug("[GRID USER SERVICE]: Starting user grid service");
|
||||||
|
|
||||||
|
MainConsole.Instance.Commands.AddCommand(
|
||||||
|
"Users", false,
|
||||||
|
"show grid users online",
|
||||||
|
"show grid users online",
|
||||||
|
"Show number of grid users registered as online.",
|
||||||
|
"This number may not be accurate as a region may crash or not be cleanly shutdown and leave grid users shown as online\n."
|
||||||
|
+ "For this reason, users online for more than 5 days are not currently counted",
|
||||||
|
HandleShowGridUsersOnline);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void HandleShowGridUsersOnline(string module, string[] cmdparams)
|
||||||
|
{
|
||||||
|
// if (cmdparams.Length != 4)
|
||||||
|
// {
|
||||||
|
// MainConsole.Instance.Output("Usage: show grid users online");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// int onlineCount;
|
||||||
|
int onlineRecentlyCount = 0;
|
||||||
|
|
||||||
|
DateTime now = DateTime.UtcNow;
|
||||||
|
|
||||||
|
foreach (GridUserData gu in m_Database.GetAll(""))
|
||||||
|
{
|
||||||
|
if (bool.Parse(gu.Data["Online"]))
|
||||||
|
{
|
||||||
|
// onlineCount++;
|
||||||
|
|
||||||
|
int unixLoginTime = int.Parse(gu.Data["Login"]);
|
||||||
|
DateTime loginDateTime = Util.UnixEpoch.AddSeconds(unixLoginTime);
|
||||||
|
|
||||||
|
if ((loginDateTime - now).Days < 5)
|
||||||
|
onlineRecentlyCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MainConsole.Instance.OutputFormat("Users online within last 5 days: {0}", onlineRecentlyCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual GridUserInfo GetGridUserInfo(string userID)
|
public virtual GridUserInfo GetGridUserInfo(string userID)
|
||||||
|
|
Loading…
Reference in New Issue