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.0.7.6-extended
							parent
							
								
									8b7bcc8346
								
							
						
					
					
						commit
						49228f9855
					
				|  | @ -130,7 +130,7 @@ namespace OpenSim.Framework | |||
|         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. | ||||
|         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(); | ||||
| 
 | ||||
|         private static readonly string rawUUIDPattern | ||||
|  | @ -521,19 +521,19 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|         public static int ToUnixTime(DateTime stamp) | ||||
|         { | ||||
|             TimeSpan t = stamp.ToUniversalTime() - unixEpoch; | ||||
|             TimeSpan t = stamp.ToUniversalTime() - UnixEpoch; | ||||
|             return (int) t.TotalSeconds; | ||||
|         } | ||||
| 
 | ||||
|         public static DateTime ToDateTime(ulong seconds) | ||||
|         { | ||||
|             DateTime epoch = unixEpoch; | ||||
|             DateTime epoch = UnixEpoch; | ||||
|             return epoch.AddSeconds(seconds); | ||||
|         } | ||||
| 
 | ||||
|         public static DateTime ToDateTime(int seconds) | ||||
|         { | ||||
|             DateTime epoch = unixEpoch; | ||||
|             DateTime epoch = UnixEpoch; | ||||
|             return epoch.AddSeconds(seconds); | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -47,6 +47,45 @@ namespace OpenSim.Services.UserAccountService | |||
|         public GridUserService(IConfigSource config) : base(config)  | ||||
|         { | ||||
|             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) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)