Пример #1
0
        public override void ModuleNotify(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.authentication.ModuleNotification request, Action <bnet.protocol.NoData> done)
        {
            Logger.Trace("ModuleNotify(): Module: {0} ModuleId: {1} Result: {2}", this.Client.LastRequestedModule.ToString(), request.ModuleId, request.Result);

            done(bnet.protocol.NoData.CreateBuilder().Build());
            this.Client.ClientModuleIds[this.Client.LastRequestedModule] = request.ModuleId;
            var moduleLoadRequest = bnet.protocol.authentication.ModuleLoadRequest.CreateBuilder();

            switch (this.Client.LastRequestedModule)
            {
            case MooNetClient.StreamedModule.Thumbprint:
                moduleLoadRequest.SetModuleHandle(bnet.protocol.ContentHandle.CreateBuilder()
                                                  .SetRegion(VersionInfo.MooNet.Regions[VersionInfo.MooNet.Region])
                                                  .SetUsage(0x61757468) // auth - password.dll
                                                  .SetHash(ByteString.CopyFrom(VersionInfo.MooNet.PasswordHashMap[this.Client.Platform])))
                .SetMessage(ByteString.CopyFrom(AuthManager.OngoingAuthentications[this.Client].LogonChallenge));

                this.Client.LastRequestedModule = MooNetClient.StreamedModule.Password;
                this.Client.MakeRPC(() => bnet.protocol.authentication.AuthenticationClient.CreateStub(this.Client).ModuleLoad(null, moduleLoadRequest.Build(), ModuleLoadResponse));
                break;

            case MooNetClient.StreamedModule.Agreement:
                if (this.Client.HasAgreements())
                {
                    this.Client.SendAgreements();
                }
                else
                {
                    moduleLoadRequest.SetModuleHandle(bnet.protocol.ContentHandle.CreateBuilder()
                                                      .SetRegion(VersionInfo.MooNet.Regions[VersionInfo.MooNet.Region])
                                                      .SetUsage(0x61757468) // auth - RiskFingerprint.dll
                                                      .SetHash(ByteString.CopyFrom(VersionInfo.MooNet.RiskFingerprintHashMap[this.Client.Platform])))
                    .SetMessage(ByteString.Empty);

                    this.Client.LastRequestedModule = MooNetClient.StreamedModule.RiskFingerprint;
                    this.Client.MakeRPC(() => bnet.protocol.authentication.AuthenticationClient.CreateStub(this.Client).ModuleLoad(null, moduleLoadRequest.Build(), ModuleLoadResponse));
                }
                break;

            case MooNetClient.StreamedModule.Password:
            case MooNetClient.StreamedModule.Token:
            case MooNetClient.StreamedModule.RiskFingerprint:
                break;

            default:
                Logger.Error("LastRequestModule: {0}", this.Client.LastRequestedModule.ToString());
                break;
            }
        }
Пример #2
0
        public override void ModuleNotify(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.authentication.ModuleNotification request, Action <bnet.protocol.NoData> done)
        {
            Logger.Trace("ModuleNotify(): ModuleId:{0} Result: {1}", request.ModuleId, request.Result);

            done(bnet.protocol.NoData.CreateBuilder().Build());

            if (this.Client.ThumbprintReq && !this.Client.PasswordReq)
            {
                var moduleLoadRequest = bnet.protocol.authentication.ModuleLoadRequest.CreateBuilder()
                                        .SetModuleHandle(bnet.protocol.ContentHandle.CreateBuilder()
                                                         .SetRegion(0x00005858) // XX
                                                         .SetUsage(0x61757468)  // auth - password.dll
                                                         .SetHash(ByteString.CopyFrom(VersionInfo.MooNet.AuthModuleHashMap[this.Client.Platform])))
                                        .SetMessage(ByteString.CopyFrom(AuthManager.OngoingAuthentications[this.Client].LogonChallenge))
                                        .Build();

                this.Client.PasswordReq = true;
                this.Client.MakeRPC(() => bnet.protocol.authentication.AuthenticationClient.CreateStub(this.Client).ModuleLoad(null, moduleLoadRequest, ModuleLoadResponse));
            }
        }