Exemplo n.º 1
0
        public override async Task <AuthenticateResult> DoAuthenticateAsync()
        {
            try
            {
                Authenticate authenticate = new Authenticate(Credentials);
                if (CheckMd5)
                {
                    string modsDir = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, ".minecraft", "mods");
                    Util.AntiCheat.Md5Reader md5Reader = new Util.AntiCheat.Md5Reader(modsDir);
                    string modsMd5 = md5Reader.GetDirectoryMd5(".jar");
                    authenticate.Md5List = modsMd5;
                }
                if (ProxyAuthServerAddress != null)
                {
                    authenticate.Address = new Uri(ProxyAuthServerAddress + "/authenticate");
                }
                if (AuthArgs != null && AuthArgs.Count != 0)
                {
                    authenticate.Arguments = AuthArgs;
                }
                var result = await authenticate.PerformRequestAsync();

                if (result.IsSuccess)
                {
                    return(new AuthenticateResult(AuthState.SUCCESS)
                    {
                        AccessToken = result.AccessToken,
                        SelectedProfileUUID = result.SelectedProfile,
                        UserData = result.User,
                        Profiles = result.AvailableProfiles
                    });
                }
                else
                {
                    AuthState errState;

                    if (result.Code == System.Net.HttpStatusCode.Forbidden)
                    {
                        errState = AuthState.ERR_INVALID_CRDL;
                    }
                    else if (result.Code == System.Net.HttpStatusCode.NotFound)
                    {
                        errState = AuthState.ERR_NOTFOUND;
                    }
                    else if (result.Error.ErrorTag == "md5")
                    {
                        errState = AuthState.ERR_MD5CHECK;
                    }
                    else
                    {
                        errState = AuthState.ERR_OTHER;
                    }

                    return(new AuthenticateResult(errState)
                    {
                        Error = result.Error
                    });
                }
            }
            catch (Exception ex)
            {
                return(new AuthenticateResult(AuthState.ERR_INSIDE)
                {
                    Error = new Net.MojangApi.Error()
                    {
                        ErrorMessage = ex.Message, Exception = ex
                    }
                });
            }
        }
Exemplo n.º 2
0
        public override async Task <AuthenticateResult> DoAuthenticateAsync()
        {
            try
            {
                Validate validate = new Validate(AccessToken);
                if (CheckMd5)
                {
                    string modsDir = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, ".minecraft", "mods");
                    Util.AntiCheat.Md5Reader md5Reader = new Util.AntiCheat.Md5Reader(modsDir);
                    string modsMd5 = md5Reader.GetDirectoryMd5(".jar");
                    validate.Md5List = modsMd5;
                }
                if (ProxyAuthServerAddress != null)
                {
                    validate.Address = new Uri(ProxyAuthServerAddress + "/validate");
                }
                if (AuthArgs != null && AuthArgs.Count != 0)
                {
                    validate.Arguments = AuthArgs;
                }
                var result = await validate.PerformRequestAsync();

                if (result.IsSuccess)
                {
                    return(new AuthenticateResult(AuthState.SUCCESS)
                    {
                        AccessToken = this.AccessToken, UserData = this.UserData, SelectedProfileUUID = this.SelectedProfileUUID
                    });
                }
                else
                {
                    AuthState state;
                    Refresh   refresh = new Refresh(AccessToken);
                    if (ProxyAuthServerAddress != null)
                    {
                        validate.Address = new Uri(ProxyAuthServerAddress + "/refresh");
                    }
                    if (AuthArgs != null && AuthArgs.Count != 0)
                    {
                        refresh.Arguments = AuthArgs;
                    }
                    var refreshResult = await refresh.PerformRequestAsync();

                    if (refreshResult.IsSuccess)
                    {
                        this.AccessToken = refreshResult.AccessToken;
                        state            = AuthState.SUCCESS;
                    }
                    else
                    {
                        state = AuthState.REQ_LOGIN;
                        if (refreshResult.Code == System.Net.HttpStatusCode.NotFound)
                        {
                            state = AuthState.ERR_NOTFOUND;
                        }
                    }
                    return(new AuthenticateResult(state)
                    {
                        AccessToken = AccessToken = this.AccessToken,
                        UserData = this.UserData,
                        SelectedProfileUUID = this.SelectedProfileUUID,
                        Error = refreshResult.Error
                    });
                }
            }
            catch (Exception ex)
            {
                return(new AuthenticateResult(AuthState.ERR_INSIDE)
                {
                    Error = new Net.MojangApi.Error()
                    {
                        ErrorMessage = ex.Message, Exception = ex
                    },
                    AccessToken = AccessToken = this.AccessToken,
                    UserData = this.UserData,
                    SelectedProfileUUID = this.SelectedProfileUUID
                });
            }
        }