Пример #1
0
        // Token: 0x06000CB1 RID: 3249 RVA: 0x00034CDC File Offset: 0x00032EDC
        public static bool SetStoreSessionClientIPEndpointsFromXproxy(StoreSession session, string authString, string clientIp, string serverIp, NetworkConnection connection)
        {
            if (!GccUtils.IsGlobalCriminalComplianceEnabled)
            {
                return(false);
            }
            bool      result = true;
            IPAddress address;
            IPAddress address2;

            if (GccUtils.IsValidAuthString(authString))
            {
                if (!IPAddress.TryParse(clientIp, out address))
                {
                    address = connection.RemoteEndPoint.Address;
                    result  = false;
                }
                if (!IPAddress.TryParse(serverIp, out address2))
                {
                    address2 = connection.LocalEndPoint.Address;
                    result   = false;
                }
            }
            else
            {
                result   = false;
                address  = connection.RemoteEndPoint.Address;
                address2 = connection.LocalEndPoint.Address;
            }
            session.SetClientIPEndpoints(address, address2);
            return(result);
        }
Пример #2
0
        // Token: 0x06000CAF RID: 3247 RVA: 0x00034C64 File Offset: 0x00032E64
        public static bool SetStoreSessionClientIPEndpointsFromHttpRequest(StoreSession session, HttpRequest httpRequest, bool useServerToServerHeaders)
        {
            bool        result      = true;
            HttpContext httpContext = null;

            if (session == null)
            {
                throw new ArgumentNullException("session");
            }
            if (httpRequest == null)
            {
                httpContext = HttpContext.Current;
                if (httpContext != null)
                {
                    httpRequest = httpContext.Request;
                }
            }
            IPAddress ipv6None;
            IPAddress ipv6Loopback;

            if (httpRequest != null)
            {
                result = GccUtils.InternalGetClientIPEndpointsFromHttpRequest((httpContext != null) ? new HttpContextWrapper(httpContext) : null, new HttpRequestWrapper(httpRequest), out ipv6None, out ipv6Loopback, useServerToServerHeaders, false);
            }
            else
            {
                ipv6None     = IPAddress.IPv6None;
                ipv6Loopback = IPAddress.IPv6Loopback;
            }
            session.SetClientIPEndpoints(ipv6None, ipv6Loopback);
            return(result);
        }
Пример #3
0
 // Token: 0x06000CB3 RID: 3251 RVA: 0x00034DC0 File Offset: 0x00032FC0
 public static string GetAuthStringForThisServer()
 {
     if (!GccUtils.IsGlobalCriminalComplianceEnabled)
     {
         return(string.Empty);
     }
     GccUtils.EnsureProxyKeysAreLoaded();
     return(GccUtils.DatacenterServerAuth.GetAuthenticationString());
 }
Пример #4
0
 // Token: 0x06000CC5 RID: 3269 RVA: 0x00035430 File Offset: 0x00033630
 private static void EnsureProxyKeysAreLoaded()
 {
     lock (GccUtils.RegistryLock)
     {
         if (GccUtils.DatacenterServerAuth.CurrentSecretKey == null)
         {
             GccUtils.RefreshProxySecretKeys();
         }
     }
 }
Пример #5
0
 // Token: 0x06000CB4 RID: 3252 RVA: 0x00034DDE File Offset: 0x00032FDE
 public static bool IsValidAuthString(string authString)
 {
     if (!GccUtils.IsGlobalCriminalComplianceEnabled)
     {
         return(false);
     }
     if (string.IsNullOrEmpty(authString))
     {
         return(false);
     }
     GccUtils.EnsureProxyKeysAreLoaded();
     return(GccUtils.DatacenterServerAuth.ValidateAuthenticationString(authString));
 }
Пример #6
0
        // Token: 0x06000CBC RID: 3260 RVA: 0x00034EF4 File Offset: 0x000330F4
        public static bool TryGetGccProxyInfo(HttpContext httpContext, out string gccProxyInfo)
        {
            gccProxyInfo = null;
            bool   flag;
            string text;
            string text2;

            if (!GccUtils.InternalTryGetGccProxyInfo(new HttpContextWrapper(httpContext), null, out gccProxyInfo, out flag, out text, out text2) || !flag)
            {
                gccProxyInfo = null;
                return(false);
            }
            return(true);
        }
Пример #7
0
        // Token: 0x06000CC3 RID: 3267 RVA: 0x00035288 File Offset: 0x00033488
        private static bool InternalTryGetGccProxyInfo(HttpContextBase httpContext, HttpRequestBase httpRequest, out string gccProxyInfo, out bool trustedProxy, out string clientIpRaw, out string serverIpRaw)
        {
            trustedProxy = false;
            clientIpRaw  = string.Empty;
            serverIpRaw  = string.Empty;
            gccProxyInfo = GccUtils.InternalExecuteWorkerRequest <string>(httpContext, httpRequest, delegate(HttpWorkerRequest request)
            {
                if (GccUtils.gccKnownRequestHeaderIndex == null)
                {
                    GccUtils.gccKnownRequestHeaderIndex = new int?(HttpWorkerRequest.GetKnownRequestHeaderIndex("X-GCC-PROXYINFO"));
                }
                if (GccUtils.gccKnownRequestHeaderIndex.Value != -1)
                {
                    return(request.GetKnownRequestHeader(GccUtils.gccKnownRequestHeaderIndex.Value));
                }
                return(request.GetUnknownRequestHeader("X-GCC-PROXYINFO"));
            }, (HttpRequestBase request) => request.Headers["X-GCC-PROXYINFO"]);
            if (string.IsNullOrEmpty(gccProxyInfo))
            {
                gccProxyInfo = null;
                return(false);
            }
            int num = gccProxyInfo.IndexOf(',');

            if (num > 0 && num < gccProxyInfo.Length - 1)
            {
                string authString = gccProxyInfo.Substring(0, num);
                bool   flag       = false;
                try
                {
                    flag = GccUtils.IsValidAuthString(authString);
                }
                catch (InvalidDatacenterProxyKeyException)
                {
                }
                if (flag)
                {
                    clientIpRaw = gccProxyInfo.Substring(num + 1);
                    num         = clientIpRaw.IndexOf(',');
                    if (num > 0 && num < clientIpRaw.Length - 1)
                    {
                        serverIpRaw  = clientIpRaw.Substring(num + 1);
                        clientIpRaw  = clientIpRaw.Substring(0, num);
                        trustedProxy = true;
                    }
                }
            }
            return(true);
        }
Пример #8
0
        // Token: 0x06000CB2 RID: 3250 RVA: 0x00034D58 File Offset: 0x00032F58
        public static void CopyClientIPEndpointsForServerToServerProxy(HttpContext originalContext, HttpWebRequest targetRequest)
        {
            if (originalContext == null)
            {
                throw new ArgumentNullException("originalContext");
            }
            if (targetRequest == null)
            {
                throw new ArgumentNullException("targetRequest");
            }
            IPAddress ipaddress;
            IPAddress ipaddress2;

            GccUtils.InternalGetClientIPEndpointsFromHttpRequest(new HttpContextWrapper(originalContext), null, out ipaddress, out ipaddress2, false, false);
            targetRequest.Headers["x-ServerToServer-OriginalClient"] = ipaddress.ToString();
            targetRequest.Headers["x-ServerToServer-OriginalServer"] = ipaddress2.ToString();
        }
Пример #9
0
        // Token: 0x06000CAE RID: 3246 RVA: 0x00034C2C File Offset: 0x00032E2C
        public static bool AreStoredSecretKeysValid()
        {
            if (!GccUtils.IsGlobalCriminalComplianceEnabled)
            {
                return(false);
            }
            bool result;

            try
            {
                GccUtils.RefreshProxySecretKeys();
                result = true;
            }
            catch (InvalidDatacenterProxyKeyException)
            {
                result = false;
            }
            return(result);
        }
Пример #10
0
        // Token: 0x06000CC4 RID: 3268 RVA: 0x00035388 File Offset: 0x00033588
        private static bool InternalTryCreateGccProxyInfo(HttpContextBase httpContext, HttpRequestBase httpRequest, out string gccProxyInfo)
        {
            gccProxyInfo = null;
            string    text  = GccUtils.InternalGetClientAddress(httpContext, httpRequest);
            string    text2 = GccUtils.InternalGetServerAddress(httpContext, httpRequest);
            IPAddress ipv6None;

            if (string.IsNullOrEmpty(text) || !IPAddress.TryParse(text, out ipv6None))
            {
                ipv6None = IPAddress.IPv6None;
            }
            IPAddress ipv6Loopback;

            if (string.IsNullOrEmpty(text2) || !IPAddress.TryParse(text2, out ipv6Loopback))
            {
                ipv6Loopback = IPAddress.IPv6Loopback;
            }
            string text3 = null;

            try
            {
                text3 = GccUtils.GetAuthStringForThisServer();
            }
            catch (InvalidDatacenterProxyKeyException)
            {
            }
            if (!string.IsNullOrEmpty(text3))
            {
                gccProxyInfo = string.Format(CultureInfo.InvariantCulture, "{0},{1},{2}", new object[]
                {
                    text3,
                    ipv6None,
                    ipv6Loopback
                });
                return(true);
            }
            return(false);
        }
Пример #11
0
 // Token: 0x06000CC2 RID: 3266 RVA: 0x000351D0 File Offset: 0x000333D0
 private static string InternalGetClientPort(HttpContextBase httpContext, HttpRequestBase httpRequest)
 {
     return(GccUtils.InternalExecuteWorkerRequest <string>(httpContext, httpRequest, (HttpWorkerRequest x) => x.GetRemotePort().ToString(), (HttpRequestBase x) => x.ServerVariables["REMOTE_PORT"]));
 }
Пример #12
0
 // Token: 0x06000CC1 RID: 3265 RVA: 0x00035150 File Offset: 0x00033350
 private static string InternalGetClientAddress(HttpContextBase httpContext, HttpRequestBase httpRequest)
 {
     return(GccUtils.InternalExecuteWorkerRequest <string>(httpContext, httpRequest, (HttpWorkerRequest x) => x.GetRemoteAddress(), (HttpRequestBase x) => x.ServerVariables["REMOTE_ADDR"]));
 }
Пример #13
0
 // Token: 0x06000CC0 RID: 3264 RVA: 0x000350E8 File Offset: 0x000332E8
 private static string InternalGetServerAddress(HttpContextBase httpContext, HttpRequestBase httpRequest)
 {
     return(GccUtils.InternalExecuteWorkerRequest <string>(httpContext, httpRequest, (HttpWorkerRequest x) => x.GetLocalAddress(), (HttpRequestBase x) => x.ServerVariables["LOCAL_ADDR"]));
 }
Пример #14
0
        // Token: 0x06000CBE RID: 3262 RVA: 0x00034F34 File Offset: 0x00033134
        private static bool InternalGetClientIPEndpointsFromHttpRequest(HttpContextBase httpContext, HttpRequestBase httpRequest, out IPAddress clientIPAddress, out IPAddress serverIPAddress, bool useServerToServerHeaders, bool trustEntireForwardedForHeader)
        {
            if (httpContext != null)
            {
                if (httpRequest == null)
                {
                    httpRequest = httpContext.Request;
                }
            }
            else if (httpRequest == null)
            {
                throw new ArgumentException("HttpContext and HttpRequest cannot both be null");
            }
            bool   flag  = false;
            bool   flag2 = true;
            string text  = string.Empty;
            string text2 = string.Empty;
            string text3 = null;

            if (useServerToServerHeaders)
            {
                text  = httpRequest.Headers["x-ServerToServer-OriginalClient"];
                text2 = httpRequest.Headers["x-ServerToServer-OriginalServer"];
            }
            if (string.IsNullOrEmpty(text) && string.IsNullOrEmpty(text2))
            {
                string text4;
                if (GccUtils.InternalTryGetGccProxyInfo(httpContext, httpRequest, out text4, out flag, out text, out text2))
                {
                    flag2 = false;
                }
                else
                {
                    text = httpRequest.Headers["X-Forwarded-For"];
                    if (!string.IsNullOrEmpty(text))
                    {
                        text3 = GccUtils.InternalGetServerAddress(httpContext, httpRequest);
                        text2 = text3;
                        if (trustEntireForwardedForHeader)
                        {
                            int num = text.IndexOf(',');
                            if (num > -1)
                            {
                                text = text.Substring(0, num);
                            }
                        }
                        else
                        {
                            int num2 = text.LastIndexOf(',');
                            if (num2 > -1)
                            {
                                text = text.Substring(num2 + 1);
                            }
                        }
                        flag2 = false;
                        flag  = true;
                    }
                }
                if (flag2 || !flag)
                {
                    text  = GccUtils.InternalGetClientAddress(httpContext, httpRequest);
                    text2 = (text3 ?? GccUtils.InternalGetServerAddress(httpContext, httpRequest));
                }
            }
            if (string.IsNullOrEmpty(text) || !IPAddress.TryParse(text, out clientIPAddress))
            {
                clientIPAddress = IPAddress.IPv6None;
            }
            if (string.IsNullOrEmpty(text2) || !IPAddress.TryParse(text2, out serverIPAddress))
            {
                serverIPAddress = IPAddress.IPv6Loopback;
            }
            return(flag2 || flag);
        }
Пример #15
0
 // Token: 0x06000CBB RID: 3259 RVA: 0x00034EE6 File Offset: 0x000330E6
 public static string GetClientPort(HttpContext httpContext)
 {
     return(GccUtils.InternalGetClientPort(new HttpContextWrapper(httpContext), null));
 }
Пример #16
0
 // Token: 0x06000CBA RID: 3258 RVA: 0x00034EDD File Offset: 0x000330DD
 public static string GetClientAddress(HttpContextBase httpContext)
 {
     return(GccUtils.InternalGetClientAddress(httpContext, null));
 }
Пример #17
0
 // Token: 0x06000CB8 RID: 3256 RVA: 0x00034EC1 File Offset: 0x000330C1
 public static string GetServerAddress(HttpContext httpContext)
 {
     return(GccUtils.InternalGetServerAddress(new HttpContextWrapper(httpContext), null));
 }
Пример #18
0
 // Token: 0x06000CB7 RID: 3255 RVA: 0x00034EB3 File Offset: 0x000330B3
 public static bool GetClientIPEndpointsFromHttpRequest(HttpContextBase httpContext, out IPAddress clientIPAddress, out IPAddress serverIPAddress, bool useServerToServerHeaders, bool trustEntireForwardedForHeader)
 {
     return(GccUtils.InternalGetClientIPEndpointsFromHttpRequest(httpContext, null, out clientIPAddress, out serverIPAddress, useServerToServerHeaders, trustEntireForwardedForHeader));
 }
Пример #19
0
 // Token: 0x06000CBD RID: 3261 RVA: 0x00034F22 File Offset: 0x00033122
 public static bool TryCreateGccProxyInfo(HttpContext httpContext, out string gccProxyInfo)
 {
     return(GccUtils.InternalTryCreateGccProxyInfo(new HttpContextWrapper(httpContext), null, out gccProxyInfo));
 }
Пример #20
0
 // Token: 0x06000CB0 RID: 3248 RVA: 0x00034CCF File Offset: 0x00032ECF
 public static bool SetStoreSessionClientIPEndpointsFromHttpRequest(StoreSession session, HttpRequest httpRequest)
 {
     return(GccUtils.SetStoreSessionClientIPEndpointsFromHttpRequest(session, httpRequest, false));
 }