Exemple #1
0
        private string OnRequestAcLogin(HttpRequest request, FormUrlEncodedBody body, bool isCreate)
        {
            AccountRequestCreate info = new AccountRequestCreate(body, isCreate);

            EventSink.InvokeAccountCreate(info);
            if (info.IsHandled && info.IsSuccess)
            {
                Kernel.WriteLine(Host, $"{request.NetState} authenticated as account '{info.Account}'.");
                return(new HttpResponse(request, contentType: HttpResponse.ContentTypeTextPlain)
                       .AddHeader("NODE", "wifiappe2")
                       .AddHeader("Server", "Nintendo Wii (http)")
                       .AddHeaderDateGMT()
                       .Append(new FormUrlEncodedBody()
                               .AddParamAscii("challenge", info.Account.GsLoginPassword)
                               .AddParamAscii("locator", "gamespy.com")
                               .AddParamAscii("retry", "0")
                               .AddParamAscii("returncd", "001")
                               .AddParamAscii("token", info.Account.GsLoginToken)
                               .AddParamAscii("datetime", DateTime.UtcNow.ToString("yyyyMMddHHmmss"))
                               .Compile()
                               ).Compile());
            }
            else if (info.IsHandled)   // but failed to login, prompt DS for retry
            {
                Console.WriteLine($"{Host}: {request.ClientName} failed to authenticate.");
                return(new HttpResponse(request, contentType: HttpResponse.ContentTypeTextPlain)
                       .AddHeader("NODE", "wifiappw1")
                       .AddHeader("Server", "Nintendo Wii (https)")
                       .AddHeaderDateGMT()
                       .Append(new FormUrlEncodedBody()
                               .AddParamAscii("retry", "0")
                               .AddParamAscii("returncd", info.FailReason)
                               .AddParamAscii("userid", info.ClientUserID)
                               .AddParamAscii("datetime", DateTime.UtcNow.ToString("yyyyMMddHHmmss"))
                               .Compile()
                               ).Compile());
            }
            else
            {
                return(OnUnhandledRequest(request));
            }
        }