diff options
Diffstat (limited to 'OpenSim/Services/LLLoginService')
-rw-r--r-- | OpenSim/Services/LLLoginService/LLLoginResponse.cs | 69 | ||||
-rw-r--r-- | OpenSim/Services/LLLoginService/LLLoginService.cs | 17 |
2 files changed, 80 insertions, 6 deletions
diff --git a/OpenSim/Services/LLLoginService/LLLoginResponse.cs b/OpenSim/Services/LLLoginService/LLLoginResponse.cs index 079bcb1..a4b3cbd 100644 --- a/OpenSim/Services/LLLoginService/LLLoginResponse.cs +++ b/OpenSim/Services/LLLoginService/LLLoginResponse.cs | |||
@@ -231,7 +231,8 @@ namespace OpenSim.Services.LLLoginService | |||
231 | public LLLoginResponse(UserAccount account, AgentCircuitData aCircuit, GridUserInfo pinfo, | 231 | public LLLoginResponse(UserAccount account, AgentCircuitData aCircuit, GridUserInfo pinfo, |
232 | GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService, | 232 | GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService, |
233 | string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message, | 233 | string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message, |
234 | GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency) | 234 | GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency, |
235 | string DSTZone) | ||
235 | : this() | 236 | : this() |
236 | { | 237 | { |
237 | FillOutInventoryData(invSkel, libService); | 238 | FillOutInventoryData(invSkel, libService); |
@@ -260,7 +261,45 @@ namespace OpenSim.Services.LLLoginService | |||
260 | FillOutRegionData(destination); | 261 | FillOutRegionData(destination); |
261 | 262 | ||
262 | FillOutSeedCap(aCircuit, destination, clientIP); | 263 | FillOutSeedCap(aCircuit, destination, clientIP); |
263 | 264 | ||
265 | switch (DSTZone) | ||
266 | { | ||
267 | case "none": | ||
268 | DST = "N"; | ||
269 | break; | ||
270 | case "local": | ||
271 | DST = TimeZone.CurrentTimeZone.IsDaylightSavingTime(DateTime.Now) ? "Y" : "N"; | ||
272 | break; | ||
273 | default: | ||
274 | TimeZoneInfo dstTimeZone = null; | ||
275 | string[] tzList = DSTZone.Split(';'); | ||
276 | |||
277 | foreach (string tzName in tzList) | ||
278 | { | ||
279 | try | ||
280 | { | ||
281 | dstTimeZone = TimeZoneInfo.FindSystemTimeZoneById(tzName); | ||
282 | } | ||
283 | catch | ||
284 | { | ||
285 | continue; | ||
286 | } | ||
287 | break; | ||
288 | } | ||
289 | |||
290 | if (dstTimeZone == null) | ||
291 | { | ||
292 | m_log.WarnFormat( | ||
293 | "[LLOGIN RESPONSE]: No valid timezone found for DST in {0}, falling back to system time.", tzList); | ||
294 | DST = TimeZone.CurrentTimeZone.IsDaylightSavingTime(DateTime.Now) ? "Y" : "N"; | ||
295 | } | ||
296 | else | ||
297 | { | ||
298 | DST = dstTimeZone.IsDaylightSavingTime(DateTime.Now) ? "Y" : "N"; | ||
299 | } | ||
300 | |||
301 | break; | ||
302 | } | ||
264 | } | 303 | } |
265 | 304 | ||
266 | private void FillOutInventoryData(List<InventoryFolderBase> invSkel, ILibraryService libService) | 305 | private void FillOutInventoryData(List<InventoryFolderBase> invSkel, ILibraryService libService) |
@@ -355,7 +394,31 @@ namespace OpenSim.Services.LLLoginService | |||
355 | 394 | ||
356 | private void SetDefaultValues() | 395 | private void SetDefaultValues() |
357 | { | 396 | { |
358 | DST = TimeZone.CurrentTimeZone.IsDaylightSavingTime(DateTime.Now) ? "Y" : "N"; | 397 | TimeZoneInfo gridTimeZone; |
398 | |||
399 | // Disabled for now pending making timezone a config value, which can at some point have a default of | ||
400 | // a ; separated list of possible timezones. | ||
401 | // The problem here is that US/Pacific (or even the Olsen America/Los_Angeles) is not universal across | ||
402 | // windows, mac and various distributions of linux, introducing another element of consistency. | ||
403 | // The server operator needs to be able to control this setting | ||
404 | // try | ||
405 | // { | ||
406 | // // First try to fetch DST from Pacific Standard Time, because this is | ||
407 | // // the one expected by the viewer. "US/Pacific" is the string to search | ||
408 | // // on linux and mac, and should work also on Windows (to confirm) | ||
409 | // gridTimeZone = TimeZoneInfo.FindSystemTimeZoneById("US/Pacific"); | ||
410 | // } | ||
411 | // catch (Exception e) | ||
412 | // { | ||
413 | // m_log.WarnFormat( | ||
414 | // "[TIMEZONE]: {0} Falling back to system time. System time should be set to Pacific Standard Time to provide the expected time", | ||
415 | // e.Message); | ||
416 | |||
417 | gridTimeZone = TimeZoneInfo.Local; | ||
418 | // } | ||
419 | |||
420 | DST = gridTimeZone.IsDaylightSavingTime(DateTime.Now) ? "Y" : "N"; | ||
421 | |||
359 | StipendSinceLogin = "N"; | 422 | StipendSinceLogin = "N"; |
360 | Gendered = "Y"; | 423 | Gendered = "Y"; |
361 | EverLoggedIn = "Y"; | 424 | EverLoggedIn = "Y"; |
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 891c452..06e05a9 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs | |||
@@ -82,6 +82,8 @@ namespace OpenSim.Services.LLLoginService | |||
82 | protected string m_AllowedClients; | 82 | protected string m_AllowedClients; |
83 | protected string m_DeniedClients; | 83 | protected string m_DeniedClients; |
84 | 84 | ||
85 | protected string m_DSTZone; | ||
86 | |||
85 | IConfig m_LoginServerConfig; | 87 | IConfig m_LoginServerConfig; |
86 | // IConfig m_ClientsConfig; | 88 | // IConfig m_ClientsConfig; |
87 | 89 | ||
@@ -118,6 +120,8 @@ namespace OpenSim.Services.LLLoginService | |||
118 | m_AllowedClients = m_LoginServerConfig.GetString("AllowedClients", string.Empty); | 120 | m_AllowedClients = m_LoginServerConfig.GetString("AllowedClients", string.Empty); |
119 | m_DeniedClients = m_LoginServerConfig.GetString("DeniedClients", string.Empty); | 121 | m_DeniedClients = m_LoginServerConfig.GetString("DeniedClients", string.Empty); |
120 | 122 | ||
123 | m_DSTZone = m_LoginServerConfig.GetString("DSTZone", "America/Los_Angeles;Pacific Standard Time"); | ||
124 | |||
121 | // Clean up some of these vars | 125 | // Clean up some of these vars |
122 | if (m_MapTileURL != String.Empty) | 126 | if (m_MapTileURL != String.Empty) |
123 | { | 127 | { |
@@ -241,6 +245,7 @@ namespace OpenSim.Services.LLLoginService | |||
241 | 245 | ||
242 | m_log.InfoFormat("[LLOGIN SERVICE]: Login request for {0} {1} at {2} using viewer {3}, channel {4}, IP {5}, Mac {6}, Id0 {7}", | 246 | m_log.InfoFormat("[LLOGIN SERVICE]: Login request for {0} {1} at {2} using viewer {3}, channel {4}, IP {5}, Mac {6}, Id0 {7}", |
243 | firstName, lastName, startLocation, clientVersion, channel, clientIP.Address.ToString(), mac, id0); | 247 | firstName, lastName, startLocation, clientVersion, channel, clientIP.Address.ToString(), mac, id0); |
248 | |||
244 | try | 249 | try |
245 | { | 250 | { |
246 | // | 251 | // |
@@ -423,8 +428,11 @@ namespace OpenSim.Services.LLLoginService | |||
423 | // | 428 | // |
424 | // Finally, fill out the response and return it | 429 | // Finally, fill out the response and return it |
425 | // | 430 | // |
426 | LLLoginResponse response = new LLLoginResponse(account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService, | 431 | LLLoginResponse response |
427 | where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP, m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency); | 432 | = new LLLoginResponse( |
433 | account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService, | ||
434 | where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP, | ||
435 | m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency, m_DSTZone); | ||
428 | 436 | ||
429 | m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to client."); | 437 | m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to client."); |
430 | return response; | 438 | return response; |
@@ -438,7 +446,10 @@ namespace OpenSim.Services.LLLoginService | |||
438 | } | 446 | } |
439 | } | 447 | } |
440 | 448 | ||
441 | protected GridRegion FindDestination(UserAccount account, UUID scopeID, GridUserInfo pinfo, UUID sessionID, string startLocation, GridRegion home, out GridRegion gatekeeper, out string where, out Vector3 position, out Vector3 lookAt, out TeleportFlags flags) | 449 | protected GridRegion FindDestination( |
450 | UserAccount account, UUID scopeID, GridUserInfo pinfo, UUID sessionID, string startLocation, | ||
451 | GridRegion home, out GridRegion gatekeeper, | ||
452 | out string where, out Vector3 position, out Vector3 lookAt, out TeleportFlags flags) | ||
442 | { | 453 | { |
443 | flags = TeleportFlags.ViaLogin; | 454 | flags = TeleportFlags.ViaLogin; |
444 | 455 | ||