예제 #1
0
        // Token: 0x0600086D RID: 2157 RVA: 0x0003E794 File Offset: 0x0003C994
        public static CultureInfo GetDefaultCulture(OwaContext owaContext)
        {
            int num = 0;

            if (owaContext.SessionContext != null)
            {
                num = owaContext.SessionContext.LogonAndErrorLanguage;
            }
            else if (OwaConfigurationManager.Configuration != null)
            {
                num = OwaConfigurationManager.Configuration.LogonAndErrorLanguage;
            }
            if (num > 0)
            {
                if (Culture.IsSupportedCulture(num))
                {
                    return(Culture.GetCultureInfoInstance(num));
                }
                ExTraceGlobals.CoreTracer.TraceDebug <int>(0L, "LogonAndErrorLanguage is unsupported culture (LCID: {0})", num);
            }
            CultureInfo browserDefaultCulture = Culture.GetBrowserDefaultCulture(owaContext);

            if (browserDefaultCulture != null)
            {
                return(browserDefaultCulture);
            }
            return(Globals.ServerCulture);
        }
        private void ReadServerCulture()
        {
            ExTraceGlobals.CoreCallTracer.TraceDebug(0L, "Globals.ReadServerCulture");
            int  num  = 0;
            bool flag = false;

            using (RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\ExchangeServer\\v15\\Language"))
            {
                if (registryKey != null)
                {
                    object value = registryKey.GetValue("ENU", 1033);
                    if (value is int)
                    {
                        num  = (int)value;
                        flag = true;
                    }
                }
            }
            if (!flag)
            {
                ExTraceGlobals.CoreTracer.TraceDebug <int>(0L, "Failed to read server language from the registry, defaulting to {0}", 1033);
                this.serverCulture = Culture.GetCultureInfoInstance(1033);
                return;
            }
            ExTraceGlobals.CoreTracer.TraceDebug <int>(0L, "Succesfully read server language from registry = {0}", num);
            if (Culture.IsSupportedCulture(num))
            {
                this.serverCulture = Culture.GetCultureInfoInstance(num);
                return;
            }
            ExTraceGlobals.CoreTracer.TraceDebug <int, int>(0L, "The server culture read from the registry ({0}) is unsupported, defaulting to {1}", num, 1033);
            this.serverCulture = Culture.GetCultureInfoInstance(1033);
        }
예제 #3
0
        // Token: 0x06000861 RID: 2145 RVA: 0x0003E4C4 File Offset: 0x0003C6C4
        private static CultureInfo GetPreferredCulture(IEnumerable <CultureInfo> cultures, UserContext userContext)
        {
            IEnumerator <CultureInfo> enumerator = cultures.GetEnumerator();

            while (enumerator.MoveNext())
            {
                if (Culture.IsSupportedCulture(enumerator.Current))
                {
                    return(Culture.GetCultureInfoInstance(enumerator.Current.LCID));
                }
            }
            int defaultClientLanguage;

            if (userContext != null)
            {
                defaultClientLanguage = userContext.DefaultClientLanguage;
            }
            else
            {
                defaultClientLanguage = OwaConfigurationManager.Configuration.DefaultClientLanguage;
            }
            if (defaultClientLanguage > 0)
            {
                if (Culture.IsSupportedCulture(defaultClientLanguage))
                {
                    return(Culture.GetCultureInfoInstance(defaultClientLanguage));
                }
                ExTraceGlobals.CoreTracer.TraceDebug <int>(0L, "DefaultClientLanguage is unsupported culture (LCID: {0})", defaultClientLanguage);
            }
            return(null);
        }
예제 #4
0
 public static bool IsSupportedCulture(int lcid)
 {
     return(lcid > 0 && Culture.IsSupportedCulture(CultureInfo.GetCultureInfo(lcid)));
 }
        internal static void ParseProxyLanguagePostBody(Stream bodyStream, out CultureInfo culture, out string timeZoneKeyName, out bool isOptimized, out string destination, out SerializedClientSecurityContext serializedContext)
        {
            ExTraceGlobals.ProxyCallTracer.TraceDebug(0L, "ProxyLanguagePostRequest.ParseProxyLanguagePostBody");
            culture           = null;
            timeZoneKeyName   = string.Empty;
            isOptimized       = false;
            destination       = string.Empty;
            serializedContext = null;
            XmlTextReader xmlTextReader = null;

            try
            {
                xmlTextReader = SafeXmlFactory.CreateSafeXmlTextReader(bodyStream);
                xmlTextReader.WhitespaceHandling = WhitespaceHandling.All;
                if (!xmlTextReader.Read() || XmlNodeType.Element != xmlTextReader.NodeType || StringComparer.OrdinalIgnoreCase.Compare(xmlTextReader.Name, ProxyLanguagePostRequest.rootElementName) != 0)
                {
                    ProxyLanguagePostRequest.ThrowParserException(xmlTextReader, "Missing or invalid root node");
                }
                if (xmlTextReader.MoveToFirstAttribute())
                {
                    do
                    {
                        if (StringComparer.OrdinalIgnoreCase.Compare(xmlTextReader.Name, ProxyLanguagePostRequest.timeZoneKeyNameAttributeName) == 0)
                        {
                            if (DateTimeUtilities.IsValidTimeZoneKeyName(xmlTextReader.Value))
                            {
                                timeZoneKeyName = xmlTextReader.Value;
                                ExTraceGlobals.ProxyDataTracer.TraceDebug <string>(0L, "Found timeZoneKeyName={0}", timeZoneKeyName);
                            }
                            else
                            {
                                ProxyLanguagePostRequest.ThrowParserException(xmlTextReader, "Invalid time zone id");
                            }
                        }
                        else if (StringComparer.OrdinalIgnoreCase.Compare(xmlTextReader.Name, ProxyLanguagePostRequest.localeIdAttributeName) == 0)
                        {
                            int num = -1;
                            if (int.TryParse(xmlTextReader.Value, out num) && Culture.IsSupportedCulture(num))
                            {
                                culture = Culture.GetCultureInfoInstance(num);
                                ExTraceGlobals.ProxyDataTracer.TraceDebug <int>(0L, "Found localeId={0}", num);
                            }
                            else
                            {
                                ProxyLanguagePostRequest.ThrowParserException(xmlTextReader, "Invalid locale id");
                            }
                        }
                        else if (StringComparer.OrdinalIgnoreCase.Compare(xmlTextReader.Name, ProxyLanguagePostRequest.isOptimizedAttributeName) == 0)
                        {
                            int num2 = -1;
                            if (int.TryParse(xmlTextReader.Value, out num2))
                            {
                                isOptimized = (num2 == 1);
                                ExTraceGlobals.ProxyDataTracer.TraceDebug <bool>(0L, "Found isOptimized={0}", isOptimized);
                            }
                            else
                            {
                                ProxyLanguagePostRequest.ThrowParserException(xmlTextReader, "Invalid is-optimized value");
                            }
                        }
                        else if (StringComparer.OrdinalIgnoreCase.Compare(xmlTextReader.Name, ProxyLanguagePostRequest.destinationAttributeName) == 0)
                        {
                            destination = xmlTextReader.Value;
                        }
                        else
                        {
                            ExTraceGlobals.ProxyTracer.TraceDebug(0L, "ProxyLanguagePostRequest.ParseProxyLanguagePostBody - Found invalid attribute, ignoring it.");
                        }
                    }while (xmlTextReader.MoveToNextAttribute());
                }
                ExTraceGlobals.ProxyTracer.TraceDebug(0L, "Deserializing client context...");
                serializedContext = SerializedClientSecurityContext.Deserialize(xmlTextReader);
                if (!xmlTextReader.Read() || XmlNodeType.EndElement != xmlTextReader.NodeType || StringComparer.OrdinalIgnoreCase.Compare(xmlTextReader.Name, ProxyLanguagePostRequest.rootElementName) != 0)
                {
                    ProxyLanguagePostRequest.ThrowParserException(xmlTextReader, "Missing or invalid root node");
                }
            }
            catch (XmlException ex)
            {
                ProxyLanguagePostRequest.ThrowParserException(xmlTextReader, string.Format("Parser threw an XML exception: {0}", ex.Message));
            }
            finally
            {
                xmlTextReader.Close();
            }
        }