From 8ba1441eb146889c8849c5fa522fada191e6c856 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 8 Jan 2023 19:10:50 +0000 Subject: [PATCH] robust: add exclude by id0; pre compile some regex searchs. not that user block by id0 or mac is not very effective and may even block wrong users! --- .../GroupsServiceRemoteConnectorModule.cs | 2 +- .../HypergridService/GatekeeperService.cs | 129 ++++++++++++------ .../HypergridService/UserAgentService.cs | 33 ++--- .../Services/LLLoginService/LLLoginService.cs | 95 +++++++++---- bin/assets/SettingsAssetSet/Midday.dat | 2 +- bin/assets/SettingsAssetSet/Midnight.dat | 2 +- bin/assets/SettingsAssetSet/Sunrise.dat | 2 +- bin/assets/SettingsAssetSet/Sunset.dat | 2 +- 8 files changed, 176 insertions(+), 91 deletions(-) diff --git a/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs b/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs index 1fc3afd1ef..a52a91577e 100644 --- a/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs +++ b/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs @@ -327,7 +327,7 @@ namespace OpenSim.Groups { return m_CacheWrapper.GetAgentGroupRoles(RequestingAgentID, AgentID, GroupID, delegate { - return m_GroupsService.GetAgentGroupRoles(RequestingAgentID, AgentID, GroupID); ; + return m_GroupsService.GetAgentGroupRoles(RequestingAgentID, AgentID, GroupID); }); } diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index 3f14b99c12..4003df909f 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs @@ -60,9 +60,10 @@ namespace OpenSim.Services.HypergridService private static IGridUserService m_GridUserService; private static IBansService m_BansService; - private static string m_AllowedClients = string.Empty; - private static string m_DeniedClients = string.Empty; + private static Regex m_AllowedClientsRegex = null; + private static Regex m_DeniedClientsRegex = null; private static string m_DeniedMacs = string.Empty; + private static string m_DeniedID0s = string.Empty; private static bool m_ForeignAgentsAllowed = true; private static List m_ForeignsAllowedExceptions = new List(); private static List m_ForeignsDisallowedExceptions = new List(); @@ -138,27 +139,52 @@ namespace OpenSim.Services.HypergridService m_GridService = ServerUtils.LoadPlugin(gridService, args); m_PresenceService = ServerUtils.LoadPlugin(presenceService, args); - if (accountService != string.Empty) + if (!string.IsNullOrEmpty(accountService)) m_UserAccountService = ServerUtils.LoadPlugin(accountService, args); - if (homeUsersService != string.Empty) + if (!string.IsNullOrEmpty(homeUsersService)) m_UserAgentService = ServerUtils.LoadPlugin(homeUsersService, args); - if (gridUserService != string.Empty) + if (!string.IsNullOrEmpty(gridUserService)) m_GridUserService = ServerUtils.LoadPlugin(gridUserService, args); - if (bansService != string.Empty) + if (!string.IsNullOrEmpty(bansService)) m_BansService = ServerUtils.LoadPlugin(bansService, args); if (simService != null) m_SimulationService = simService; - else if (simulationService != string.Empty) + else if (!string.IsNullOrEmpty(simulationService)) m_SimulationService = ServerUtils.LoadPlugin(simulationService, args); string[] possibleAccessControlConfigSections = new string[] { "AccessControl", "GatekeeperService" }; - m_AllowedClients = Util.GetConfigVarFromSections( - config, "AllowedClients", possibleAccessControlConfigSections, string.Empty); - m_DeniedClients = Util.GetConfigVarFromSections( - config, "DeniedClients", possibleAccessControlConfigSections, string.Empty); - m_DeniedMacs = Util.GetConfigVarFromSections( - config, "DeniedMacs", possibleAccessControlConfigSections, string.Empty); + string AllowedClients = Util.GetConfigVarFromSections(config, "AllowedClients", possibleAccessControlConfigSections, string.Empty); + if (!string.IsNullOrEmpty(AllowedClients)) + { + try + { + m_AllowedClientsRegex = new Regex(AllowedClients, RegexOptions.Compiled | RegexOptions.IgnoreCase); + } + catch + { + m_AllowedClientsRegex = null; + m_log.Error("[GATEKEEPER SERVICE]: failed to parse AllowedClients"); + } + } + + string DeniedClients = Util.GetConfigVarFromSections(config, "DeniedClients", possibleAccessControlConfigSections, string.Empty); + if (!string.IsNullOrEmpty(DeniedClients)) + { + try + { + m_DeniedClientsRegex = new Regex(DeniedClients, RegexOptions.Compiled | RegexOptions.IgnoreCase); + } + catch + { + m_DeniedClientsRegex = null; + m_log.Error("[GATEKEEPER SERVICE]: failed to parse DeniedClients"); + } + } + + m_DeniedMacs = Util.GetConfigVarFromSections(config, "DeniedMacs", possibleAccessControlConfigSections, string.Empty); + m_DeniedID0s = Util.GetConfigVarFromSections(config, "DeniedID0s", possibleAccessControlConfigSections, string.Empty); + m_ForeignAgentsAllowed = serverConfig.GetBoolean("ForeignAgentsAllowed", true); LoadDomainExceptionsFromConfig(serverConfig, "AllowExcept", m_ForeignsAllowedExceptions); @@ -190,8 +216,13 @@ namespace OpenSim.Services.HypergridService string value = config.GetString(variable, string.Empty); string[] parts = value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - foreach (string s in parts) - exceptions.Add(s.Trim()); + foreach (string ps in parts) + { + string s = ps.Trim(); + if(!s.EndsWith("/")) + s += '/'; + exceptions.Add(s); + } } public bool LinkRegion(string regionName, out UUID regionID, out ulong regionHandle, out string externalName, out string imageURL, out string reason, out int sizeX, out int sizeY) @@ -306,35 +337,39 @@ namespace OpenSim.Services.HypergridService // // Check client // - if (!String.IsNullOrWhiteSpace(m_AllowedClients)) + if (m_AllowedClientsRegex != null) { - Regex arx = new Regex(m_AllowedClients); - Match am = arx.Match(curViewer); - - if (!am.Success) + lock(m_AllowedClientsRegex) { - reason = "Login failed: client " + curViewer + " is not allowed"; - m_log.InfoFormat("[GATEKEEPER SERVICE]: Login failed, reason: client {0} is not allowed", curViewer); - return false; + Match am = m_AllowedClientsRegex.Match(curViewer); + + if (!am.Success) + { + reason = "Login failed: client " + curViewer + " is not allowed"; + m_log.InfoFormat("[GATEKEEPER SERVICE]: Login failed, reason: client {0} is not allowed", curViewer); + return false; + } } } - if (!String.IsNullOrWhiteSpace(m_DeniedClients)) + if (m_DeniedClientsRegex != null) { - Regex drx = new Regex(m_DeniedClients); - Match dm = drx.Match(curViewer); - - if (dm.Success) + lock(m_DeniedClientsRegex) { - reason = "Login failed: client " + curViewer + " is denied"; - m_log.InfoFormat("[GATEKEEPER SERVICE]: Login failed, reason: client {0} is denied", curViewer); - return false; + Match dm = m_DeniedClientsRegex.Match(curViewer); + + if (dm.Success) + { + reason = "Login failed: client " + curViewer + " is denied"; + m_log.InfoFormat("[GATEKEEPER SERVICE]: Login failed, reason: client {0} is denied", curViewer); + return false; + } } } if (!String.IsNullOrWhiteSpace(m_DeniedMacs)) { - m_log.InfoFormat("[GATEKEEPER SERVICE]: Checking users Mac {0} against list of denied macs {1} ...", curMac, m_DeniedMacs); + //m_log.InfoFormat("[GATEKEEPER SERVICE]: Checking users Mac {0} against list of denied macs {1} ...", curMac, m_DeniedMacs); if (m_DeniedMacs.Contains(curMac)) { reason = "Login failed: client with Mac " + curMac + " is denied"; @@ -343,6 +378,17 @@ namespace OpenSim.Services.HypergridService } } + if (!string.IsNullOrWhiteSpace(m_DeniedID0s)) + { + //m_log.InfoFormat("[GATEKEEPER SERVICE]: Checking users Mac {0} against list of denied macs {1} ...", curMac, m_DeniedMacs); + if (m_DeniedID0s.Contains(aCircuit.Id0)) + { + reason = "Login failed: client with id0 " + aCircuit.Id0 + " is denied"; + m_log.InfoFormat("[GATEKEEPER SERVICE]: Login failed, reason: client with mac {0} is denied", aCircuit.Id0); + return false; + } + } + // // Authenticate the user // @@ -624,24 +670,23 @@ namespace OpenSim.Services.HypergridService private bool IsException(AgentCircuitData aCircuit, List exceptions) { - bool exception = false; if (exceptions.Count > 0) // we have exceptions { // Retrieve the visitor's origin - string userURL = aCircuit.ServiceURLs["HomeURI"].ToString(); + string userURL = aCircuit.ServiceURLs["HomeURI"].ToString().Trim(); + if (string.IsNullOrEmpty(userURL)) + return false; + if (!userURL.EndsWith("/")) userURL += "/"; - if (exceptions.Find(delegate(string s) + foreach(string s in exceptions) { - if (!s.EndsWith("/")) - s += "/"; - return s == userURL; - }) != null) - exception = true; + if(userURL.Equals(s)) + return true; + } } - - return exception; + return false; } private bool SendAgentGodKillToRegion(UUID scopeID, UUID agentID , GridUserInfo guinfo) diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index 7ec4b03dc3..f0f30182b8 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs @@ -195,7 +195,12 @@ namespace OpenSim.Services.HypergridService string[] parts = value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string s in parts) - exceptions[level].Add(s.Trim()); + { + string ss = s.Trim(); + if(!ss.EndsWith("/")) + ss += '/'; + exceptions[level].Add(ss); + } } } } @@ -682,26 +687,22 @@ namespace OpenSim.Services.HypergridService private bool IsException(string dest, int level, Dictionary> exceptions) { - if (!exceptions.ContainsKey(level)) + if (string.IsNullOrEmpty(dest)) + return false; + if (!exceptions.TryGetValue(level, out List excep) || excep.Count == 0) return false; - bool exception = false; - if (exceptions[level].Count > 0) // we have exceptions - { - string destination = dest; - if (!destination.EndsWith("/")) - destination += "/"; + string destination = dest; + if (!destination.EndsWith("/")) + destination += "/"; - if (exceptions[level].Find(delegate(string s) - { - if (!s.EndsWith("/")) - s += "/"; - return s == destination; - }) != null) - exception = true; + foreach(string s in excep) + { + if (destination.Equals(s)) + return true; } - return exception; + return false; } private void StoreTravelInfo(TravelingAgentInfo travel) diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 9c4ce1a01a..82632c2b2c 100755 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs @@ -84,9 +84,10 @@ namespace OpenSim.Services.LLLoginService protected int m_MaxAgentGroups = 42; protected string m_DestinationGuide; protected string m_AvatarPicker; - protected string m_AllowedClients; - protected string m_DeniedClients; + protected Regex m_AllowedClientsRegex; + protected Regex m_DeniedClientsRegex; protected string m_DeniedMacs; + protected string m_DeniedID0s; protected string m_MessageUrl; protected string m_DSTZone; protected bool m_allowDuplicatePresences = false; @@ -132,13 +133,37 @@ namespace OpenSim.Services.LLLoginService m_allowLoginFallbackToAnyRegion = m_LoginServerConfig.GetBoolean("AllowLoginFallbackToAnyRegion", m_allowLoginFallbackToAnyRegion); - string[] possibleAccessControlConfigSections = new string[] { "AccessControl", "LoginService" }; - m_AllowedClients = Util.GetConfigVarFromSections( - config, "AllowedClients", possibleAccessControlConfigSections, string.Empty); - m_DeniedClients = Util.GetConfigVarFromSections( - config, "DeniedClients", possibleAccessControlConfigSections, string.Empty); - m_DeniedMacs = Util.GetConfigVarFromSections( - config, "DeniedMacs", possibleAccessControlConfigSections, string.Empty); + string[] accessControlConfigSections = new string[] { "AccessControl", "LoginService" }; + string AllowedClients = Util.GetConfigVarFromSections(config, "AllowedClients", accessControlConfigSections, string.Empty); + if (!string.IsNullOrEmpty(AllowedClients)) + { + try + { + m_AllowedClientsRegex = new Regex(AllowedClients, RegexOptions.Compiled | RegexOptions.IgnoreCase); + } + catch + { + m_AllowedClientsRegex = null; + m_log.Error("[GATEKEEPER SERVICE]: failed to parse AllowedClients"); + } + } + + string DeniedClients = Util.GetConfigVarFromSections(config, "DeniedClients", accessControlConfigSections, string.Empty); + if (!string.IsNullOrEmpty(DeniedClients)) + { + try + { + m_DeniedClientsRegex = new Regex(DeniedClients, RegexOptions.Compiled | RegexOptions.IgnoreCase); + } + catch + { + m_DeniedClientsRegex = null; + m_log.Error("[GATEKEEPER SERVICE]: failed to parse DeniedClients"); + } + } + + m_DeniedMacs = Util.GetConfigVarFromSections(config, "DeniedMacs", accessControlConfigSections, string.Empty); + m_DeniedID0s = Util.GetConfigVarFromSections(config, "DeniedID0s", accessControlConfigSections, string.Empty); m_MessageUrl = m_LoginServerConfig.GetString("MessageUrl", string.Empty); m_DSTZone = m_LoginServerConfig.GetString("DSTZone", "America/Los_Angeles;Pacific Standard Time"); @@ -307,37 +332,41 @@ namespace OpenSim.Services.LLLoginService else clientNameToCheck = channel + " " + clientVersion; - if (!string.IsNullOrWhiteSpace(m_AllowedClients)) + if (m_AllowedClientsRegex != null) { - Regex arx = new Regex(m_AllowedClients); - Match am = arx.Match(clientNameToCheck); - - if (!am.Success) + lock(m_AllowedClientsRegex) { - m_log.InfoFormat( - "[LLOGIN SERVICE]: Login failed for {0} {1}, reason: client {2} is not allowed", - firstName, lastName, clientNameToCheck); - return LLFailedLoginResponse.LoginBlockedProblem; + Match am = m_AllowedClientsRegex.Match(clientNameToCheck); + + if (!am.Success) + { + m_log.InfoFormat( + "[LLOGIN SERVICE]: Login failed for {0} {1}, reason: client {2} is not allowed", + firstName, lastName, clientNameToCheck); + return LLFailedLoginResponse.LoginBlockedProblem; + } } } - if (!string.IsNullOrWhiteSpace(m_DeniedClients)) + if (m_DeniedClientsRegex != null) { - Regex drx = new Regex(m_DeniedClients); - Match dm = drx.Match(clientNameToCheck); - - if (dm.Success) + lock(m_DeniedClientsRegex) { - m_log.InfoFormat( - "[LLOGIN SERVICE]: Login failed for {0} {1}, reason: client {2} is denied", - firstName, lastName, clientNameToCheck); - return LLFailedLoginResponse.LoginBlockedProblem; + Match dm = m_DeniedClientsRegex.Match(clientNameToCheck); + + if (dm.Success) + { + m_log.InfoFormat( + "[LLOGIN SERVICE]: Login failed for {0} {1}, reason: client {2} is denied", + firstName, lastName, clientNameToCheck); + return LLFailedLoginResponse.LoginBlockedProblem; + } } } if (!string.IsNullOrWhiteSpace(m_DeniedMacs)) { - m_log.InfoFormat("[LLOGIN SERVICE]: Checking users Mac {0} against list of denied macs {1} ...", curMac, m_DeniedMacs); + //m_log.InfoFormat("[LLOGIN SERVICE]: Checking users Mac {0} against list of denied macs {1} ...", curMac, m_DeniedMacs); if (m_DeniedMacs.Contains(curMac)) { m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: client with mac {0} is denied", curMac); @@ -345,6 +374,16 @@ namespace OpenSim.Services.LLLoginService } } + if (!string.IsNullOrWhiteSpace(m_DeniedID0s)) + { + //m_log.InfoFormat("[LLOGIN SERVICE]: Checking users Mac {0} against list of denied macs {1} ...", curMac, m_DeniedMacs); + if (m_DeniedID0s.Contains(id0)) + { + m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: client with ido {0} is denied", id0); + return LLFailedLoginResponse.LoginBlockedProblem; + } + } + // // Get the account and check that it exists // diff --git a/bin/assets/SettingsAssetSet/Midday.dat b/bin/assets/SettingsAssetSet/Midday.dat index e937376de9..300673bbc3 100644 --- a/bin/assets/SettingsAssetSet/Midday.dat +++ b/bin/assets/SettingsAssetSet/Midday.dat @@ -1,2 +1,2 @@ - + {'absorption_config':[{'constant_term':r0,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r25000},{'constant_term':r1,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r0}],'bloom_id':u3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3bef,'cloud_color':[r0.41,r0.41,r0.41],'cloud_id':u1dc1368f-e8fe-f02d-a08d-9d9f11c1af6b,'cloud_pos_density1':[r1,r0.526097,r1],'cloud_pos_density2':[r1,r0.526097,r0.125],'cloud_scale':r0.42,'cloud_scroll_rate':[r0.2,r0.0109997],'cloud_shadow':r0.27,'cloud_variance':r0,'dome_offset':r0.96,'dome_radius':r15000,'droplet_radius':r800,'gamma':r1,'glow':[r5,r0.001,r-0.48],'halo_id':u12149143-f599-91a7-77ac-b52a3c0f59cd,'ice_level':r0,'legacy_haze':{'ambient':[r1.05,r1.05,r1.05],'blue_density':[r0.244758,r0.448723,r0.76],'blue_horizon':[r0.495484,r0.495484,r0.64],'density_multiplier':r0.00018,'distance_multiplier':r0.8,'haze_density':r0.7,'haze_horizon':r0.19},'max_y':r1605,'mie_config':[{'anisotropy':r0.8,'constant_term':r0,'exp_scale':r-0.000833333,'exp_term':r1,'linear_term':r0,'width':r0}],'moisture_level':r0,'moon_brightness':r0.5,'moon_id':uec4b9f0b-d008-45c6-96a4-01dd947ac621,'moon_rotation':[r0,r-0.707107,r0,r-0.707107],'moon_scale':r1,'name':'Midday','planet_radius':r6360,'rainbow_id':u11b4c57c-56b3-04ed-1f82-2004363882e4,'rayleigh_config':[{'constant_term':r0,'exp_scale':r-0.000125,'exp_term':r1,'linear_term':r0,'width':r0}],'sky_bottom_radius':r6360,'sky_top_radius':r6420,'star_brightness':r0,'sun_arc_radians':r0.00045,'sun_id':u00000000-0000-0000-0000-000000000000,'sun_rotation':[r0,r-0.707107,r0,r0.707107],'sun_scale':r1,'sunlight_color':[r0.734211,r0.781579,r0.9,r0.3],'type':'sky'} \ No newline at end of file diff --git a/bin/assets/SettingsAssetSet/Midnight.dat b/bin/assets/SettingsAssetSet/Midnight.dat index 3e2859762f..5e72733b1c 100644 --- a/bin/assets/SettingsAssetSet/Midnight.dat +++ b/bin/assets/SettingsAssetSet/Midnight.dat @@ -1,2 +1,2 @@ - + {'absorption_config':[{'constant_term':r0,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r25000},{'constant_term':r1,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r0}],'bloom_id':u3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3bef,'cloud_color':[r0.226154,r0.226154,r0.226154],'cloud_id':u1dc1368f-e8fe-f02d-a08d-9d9f11c1af6b,'cloud_pos_density1':[r1,r0.526097,r0.88],'cloud_pos_density2':[r1,r0.526097,r0.125],'cloud_scale':r0.42,'cloud_scroll_rate':[r0.4994,r0.0109997],'cloud_shadow':r0.27,'cloud_variance':r0,'dome_offset':r0.96,'dome_radius':r15000,'droplet_radius':r800,'gamma':r1,'glow':[r5,r0.001,r-0.48],'halo_id':u12149143-f599-91a7-77ac-b52a3c0f59cd,'ice_level':r0,'legacy_haze':{'ambient':[r0.20405,r0.242467,r0.33],'blue_density':[r0.45,r0.45,r0.45],'blue_horizon':[r0.24,r0.24,r0.24],'density_multiplier':r0.0003,'distance_multiplier':r0.0001,'haze_density':r4,'haze_horizon':r0},'max_y':r906.2,'mie_config':[{'anisotropy':r0.8,'constant_term':r0,'exp_scale':r-0.000833333,'exp_term':r1,'linear_term':r0,'width':r0}],'moisture_level':r0,'moon_brightness':r0.5,'moon_id':uec4b9f0b-d008-45c6-96a4-01dd947ac621,'moon_rotation':[r0,r-0.707107,r0,r0.707107],'moon_scale':r1,'name':'Midnight','planet_radius':r6360,'rainbow_id':u11b4c57c-56b3-04ed-1f82-2004363882e4,'rayleigh_config':[{'constant_term':r0,'exp_scale':r-0.000125,'exp_term':r1,'linear_term':r0,'width':r0}],'sky_bottom_radius':r6360,'sky_top_radius':r6420,'star_brightness':r500,'sun_arc_radians':r0.00045,'sun_id':u00000000-0000-0000-0000-000000000000,'sun_rotation':[r0,r-0.707107,r0,r-0.707107],'sun_scale':r1,'sunlight_color':[r0.348767,r0.355742,r0.66,r0.22],'type':'sky'} \ No newline at end of file diff --git a/bin/assets/SettingsAssetSet/Sunrise.dat b/bin/assets/SettingsAssetSet/Sunrise.dat index 2370a3b893..dbf9d66c7d 100644 --- a/bin/assets/SettingsAssetSet/Sunrise.dat +++ b/bin/assets/SettingsAssetSet/Sunrise.dat @@ -1,2 +1,2 @@ - + {'absorption_config':[{'constant_term':r0,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r25000},{'constant_term':r1,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r0}],'bloom_id':u3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3bef,'cloud_color':[r0.226166,r0.226166,r0.226166],'cloud_id':u1dc1368f-e8fe-f02d-a08d-9d9f11c1af6b,'cloud_pos_density1':[r1,r0.526097,r0.88],'cloud_pos_density2':[r1,r0.526097,r0.125],'cloud_scale':r0.42,'cloud_scroll_rate':[r0.4994,r0.0109997],'cloud_shadow':r0.27,'cloud_variance':r0,'dome_offset':r0.96,'dome_radius':r15000,'droplet_radius':r800,'gamma':r1,'glow':[r5.001,r0.001,r-0.480001],'halo_id':u12149143-f599-91a7-77ac-b52a3c0f59cd,'ice_level':r0,'legacy_haze':{'ambient':[r0.81,r0.462898,r0.63],'blue_density':[r0.157932,r0.434996,r0.87],'blue_horizon':[r0.206732,r0.409883,r0.48],'density_multiplier':r0.00062,'distance_multiplier':r2.69993,'haze_density':r0.54,'haze_horizon':r0.16},'max_y':r563,'mie_config':[{'anisotropy':r0.8,'constant_term':r0,'exp_scale':r-0.000833333,'exp_term':r1,'linear_term':r0,'width':r0}],'moisture_level':r0,'moon_brightness':r0.5,'moon_id':uec4b9f0b-d008-45c6-96a4-01dd947ac621,'moon_rotation':[r0,r0.99889,r-9.23811e-007,r0.0471065],'moon_scale':r1,'name':'Sunrise','planet_radius':r6360,'rainbow_id':u11b4c57c-56b3-04ed-1f82-2004363882e4,'rayleigh_config':[{'constant_term':r0,'exp_scale':r-0.000125,'exp_term':r1,'linear_term':r0,'width':r0}],'sky_bottom_radius':r6360,'sky_top_radius':r6420,'star_brightness':r0,'sun_arc_radians':r0.00045,'sun_id':u00000000-0000-0000-0000-000000000000,'sun_rotation':[r0,r-0.0471064,r0,r0.99889],'sun_scale':r1,'sunlight_color':[r2.37,r2.37,r2.37,r0.79],'type':'sky'} \ No newline at end of file diff --git a/bin/assets/SettingsAssetSet/Sunset.dat b/bin/assets/SettingsAssetSet/Sunset.dat index cf3d607383..381c71e3ea 100644 --- a/bin/assets/SettingsAssetSet/Sunset.dat +++ b/bin/assets/SettingsAssetSet/Sunset.dat @@ -1,2 +1,2 @@ - + {'absorption_config':[{'constant_term':r0,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r25000},{'constant_term':r1,'exp_scale':r0,'exp_term':r0,'linear_term':r0,'width':r0}],'bloom_id':u3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3bef,'cloud_color':[r0.226154,r0.226154,r0.226154],'cloud_id':u1dc1368f-e8fe-f02d-a08d-9d9f11c1af6b,'cloud_pos_density1':[r1,r0.526097,r0.88],'cloud_pos_density2':[r1,r0.526097,r0.125],'cloud_scale':r0.42,'cloud_scroll_rate':[r0.4994,r0.0109997],'cloud_shadow':r0.27,'cloud_variance':r0,'dome_offset':r0.96,'dome_radius':r15000,'droplet_radius':r800,'gamma':r1,'glow':[r5,r0.001,r-0.48],'halo_id':u12149143-f599-91a7-77ac-b52a3c0f59cd,'ice_level':r0,'legacy_haze':{'ambient':[r1.02,r0.81,r0.81],'blue_density':[r0.145225,r0.399997,r0.800002],'blue_horizon':[r0.107676,r0.213487,r0.25],'density_multiplier':r0.00046,'distance_multiplier':r1,'haze_density':r0.7,'haze_horizon':r0.16},'max_y':r562.5,'mie_config':[{'anisotropy':r0.8,'constant_term':r0,'exp_scale':r-0.000833333,'exp_term':r1,'linear_term':r0,'width':r0}],'moisture_level':r0,'moon_brightness':r0.5,'moon_id':uec4b9f0b-d008-45c6-96a4-01dd947ac621,'moon_rotation':[r0,r0.0376899,r4.36181e-008,r0.99929],'moon_scale':r1,'name':'Sunset','planet_radius':r6360,'rainbow_id':u11b4c57c-56b3-04ed-1f82-2004363882e4,'rayleigh_config':[{'constant_term':r0,'exp_scale':r-0.000125,'exp_term':r1,'linear_term':r0,'width':r0}],'sky_bottom_radius':r6360,'sky_top_radius':r6420,'star_brightness':r0,'sun_arc_radians':r0.00045,'sun_id':u00000000-0000-0000-0000-000000000000,'sun_rotation':[r0,r-0.99929,r0,r0.03769],'sun_scale':r1,'sunlight_color':[r2.83857,r2.83857,r2.83857,r1],'type':'sky'} \ No newline at end of file