Exemplo n.º 1
0
        public override void ListFactories(Google.ProtocolBuffers.IRpcController controller, ListFactoriesRequest request, Action <ListFactoriesResponse> done)
        {
            var response = ListFactoriesResponse.CreateBuilder();

            var description = GameFactoryDescription.CreateBuilder();

            description.SetId(14249086168335147635);
            description.AddAttribute(Attribute.CreateBuilder().SetName("min_players").SetValue(Variant.CreateBuilder().SetIntValue(2)));
            description.AddAttribute(Attribute.CreateBuilder().SetName("max_players").SetValue(Variant.CreateBuilder().SetIntValue(4)));
            description.AddAttribute(Attribute.CreateBuilder().SetName("num_teams").SetValue(Variant.CreateBuilder().SetIntValue(1)));
            description.AddAttribute(Attribute.CreateBuilder().SetName("version").SetValue(Variant.CreateBuilder().SetStringValue("0.3.0")));

            var stats_bucket = GameStatsBucket.CreateBuilder();

            stats_bucket.SetBucketMin(0)
            .SetBucketMax(4294967296)
            .SetWaitMilliseconds(1354)
            .SetGamesPerHour(0)
            .SetActiveGames(69)
            .SetActivePlayers(75)
            .SetFormingGames(0)
            .SetWaitingPlayers(0);

            description.AddStatsBucket(stats_bucket);
            response.AddDescription(description);
            response.SetTotalResults(1);

            done(response.Build());
        }
Exemplo n.º 2
0
        public override void Bind(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.BindRequest request, Action <bnet.protocol.connection.BindResponse> done)
        {
            Logger.Trace("Bind(): {0}", this.Client);

            var requestedServiceIDs = new List <uint>();

            foreach (var serviceHash in request.ImportedServiceHashList)
            {
                var serviceID = Service.GetByHash(serviceHash);
                requestedServiceIDs.Add(serviceID);

                Logger.Trace("[export] Hash: 0x{0} Id: 0x{1} Service: {2} ", serviceHash.ToString("X8"), serviceID.ToString("X2"), Service.GetByID(serviceID) != null ? Service.GetByID(serviceID).GetType().Name : "N/A");
            }

            // read services supplied by client..
            foreach (var service in request.ExportedServiceList.Where(service => !Client.Services.ContainsValue(service.Id)))
            {
                if (Client.Services.ContainsKey(service.Hash))
                {
                    continue;
                }
                Client.Services.Add(service.Hash, service.Id);

                Logger.Trace(string.Format("[import] Hash: 0x{0} Id: 0x{1}", service.Hash.ToString("X8"), service.Id.ToString("X2")));
            }

            var builder = bnet.protocol.connection.BindResponse.CreateBuilder();

            foreach (var serviceId in requestedServiceIDs)
            {
                builder.AddImportedServiceId(serviceId);
            }

            done(builder.Build());
        }
Exemplo n.º 3
0
        public override void OpenColumn(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.storage.OpenColumnRequest request, System.Action <bnet.protocol.storage.OpenColumnResponse> done)
        {
            Logger.Trace("OpenColumn() {0}", this.Client);
            var builder = bnet.protocol.storage.OpenColumnResponse.CreateBuilder();

            done(builder.Build());
        }
Exemplo n.º 4
0
        public override void Logon(Google.ProtocolBuffers.IRpcController controller, LogonRequest request, Action <LogonResponse> done)
        {
            /*var client_auth = client.GetImportedService<bnet.protocol.authentication.AuthenticationClient>();
             * var mod_load_req = ModuleLoadRequest.CreateBuilder();
             * var mod_handle = ContentHandle.CreateBuilder();
             * mod_handle.SetRegion(0x00005553);
             * mod_handle.SetUsage(0x61757468);
             * var password_hash = new byte[] { 0x8f, 0x52, 0x90, 0x6a, 0x2c, 0x85, 0xb4, 0x16, 0xa5, 0x95, 0x70, 0x22, 0x51, 0x57, 0xf, 0x96, 0xd3, 0x52, 0x2f, 0x39, 0x23, 0x76, 0x3, 0x11, 0x5f, 0x2f, 0x1a, 0xb2, 0x49, 0x62, 0x4, 0x3c };
             * mod_handle.SetHash(ByteString.CopyFrom(password_hash));
             * mod_load_req.SetModuleHandle(mod_handle);
             *
             * client_auth.ModuleLoad(null, mod_load_req.Build(), res => {
             *      Console.WriteLine(res);
             * });*/


            var response     = LogonResponse.CreateBuilder();
            var account      = bnet.protocol.EntityId.CreateBuilder();
            var game_account = bnet.protocol.EntityId.CreateBuilder();

            account.SetHigh(0x100000000000000).SetLow(1234);

            game_account.SetHigh(0x200006200004433).SetLow(1234);

            response.SetAccount(account).SetGameAccount(game_account);

            done(response.Build());
        }
Exemplo n.º 5
0
        public override void SubscribeToUserManager(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.user_manager.SubscribeToUserManagerRequest request, System.Action <bnet.protocol.user_manager.SubscribeToUserManagerResponse> done)
        {
            Logger.Trace("Subscribe() {0}", this.Client);

            // temp hack: send him all online players on server where he should be normally get list of player he met in his last few games /raist.

            var builder = bnet.protocol.user_manager.SubscribeToUserManagerResponse.CreateBuilder();

            foreach (var client in PlayerManager.OnlinePlayers)
            {
                if (client == this.Client)
                {
                    continue;                        // Don't add the requester to the list
                }
                if (client.CurrentToon == null)
                {
                    continue;
                }

                Logger.Debug("RecentPlayer => " + client.CurrentToon);
                var recentPlayer = bnet.protocol.user_manager.RecentPlayer.CreateBuilder().SetPlayer(client.CurrentToon.BnetEntityID);
                builder.AddRecentPlayers(recentPlayer);
            }

            done(builder.Build());
        }
Exemplo n.º 6
0
        public override void Logon(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.authentication.LogonRequest request, Action <bnet.protocol.NoData> done)
        {
            Logger.Trace("LogonRequest(): Email={0}", request.Email);

            if (!VersionChecker.Check(this.Client, request)) // if the client trying to connect doesn't match required version, disconnect him.
            {
                Logger.Error("Client [{0}] doesn't match required version {1}, disconnecting..", request.Email, VersionInfo.MooNet.RequiredClientVersion);

                // create the disconnection reason.
                var reason = bnet.protocol.connection.DisconnectNotification.CreateBuilder()
                             .SetErrorCode(3018).Build();

                // Error 3018 => A new patch for Diablo III is available. The game will now close and apply the patch automatically. You will be able to continue playing after the patch has been applied.

                // FIXME: D3 client somehow doesn't show the correct error message yet, and in debug output we only miss a message like [ Recv ] service_id: 254 token: 6 status: 28
                // when I compare mooege's output. That could be the reason. /raist.

                // force disconnect the client as it does not satisfy required version. /raist.
                this.Client.MakeRPC(() => bnet.protocol.connection.ConnectionService.CreateStub(this.Client).ForceDisconnect(null, reason, callback => { }));
                this.Client.Connection.Disconnect();

                return;
            }

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

            AuthManager.StartAuthentication(this.Client, request);
        }
Exemplo n.º 7
0
        public override void SelectGameAccount(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.EntityId request, Action <bnet.protocol.NoData> done)
        {
            this.Client.Account.CurrentGameAccount = GameAccountManager.GetAccountByPersistentID(request.Low);
            this.Client.Account.CurrentGameAccount.LoggedInClient = this.Client;

            Logger.Trace("SelectGameAccount(): {0}", this.Client.Account.CurrentGameAccount);

            done(bnet.protocol.NoData.CreateBuilder().Build());
        }
Exemplo n.º 8
0
 public override void RequestDisconnect(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.DisconnectRequest request, Action <bnet.protocol.NO_RESPONSE> done)
 {
     Logger.Trace("RequestDisconnect()");
     if (this.Client.Account != null)
     {
         Accounts.AccountManager.SaveToDB(this.Client.Account);
         if (this.Client.Account.CurrentGameAccount != null)
         {
             Accounts.GameAccountManager.SaveToDB(this.Client.Account.CurrentGameAccount);
             this.Client.Account.CurrentGameAccount.LoggedInClient.Connection.Disconnect();
         }
     }
 }
Exemplo n.º 9
0
        public override void ModuleMessage(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.authentication.ModuleMessageRequest request, Action <bnet.protocol.NoData> done)
        {
            var moduleMessage = request.Message.ToByteArray();
            var command       = moduleMessage[0];

            Logger.Trace("ModuleMessage(): command: {0}", command);

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

            if (command == 2)
            {
                AuthManager.HandleAuthResponse(this.Client, request.ModuleId, moduleMessage);
            }
        }
Exemplo n.º 10
0
    public override void ShutdownServer(
        Google.ProtocolBuffers.IRpcController controller,
        ShutdownServerRequest request,
        System.Action <ShutdownServerResponse> done)
    {
        PrintRequest(controller, request);

        ShutdownEvent.Set();
        ShutdownServerResponse response = ShutdownServerResponse.CreateBuilder().Build();

        PrintResponse(response);

        done(response);
    }
Exemplo n.º 11
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;
            }
        }
Exemplo n.º 12
0
        public override void Logon(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.authentication.LogonRequest request, Action <bnet.protocol.NoData> done)
        {
            Logger.Trace("LogonRequest(): Email={0}", request.Email);

            if (!VersionChecker.Check(this.Client, request)) // if the client trying to connect doesn't match required version, disconnect him.
            {
                Logger.Error("Client [{0}] doesn't match required version {1}, disconnecting..", request.Email, VersionInfo.MooNet.RequiredClientVersion);
                this.Client.Connection.Disconnect(); // TODO: We should be actually notifying the client with wrong version message. /raist.
                return;
            }

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

            AuthManager.StartAuthentication(this.Client, request);
        }
Exemplo n.º 13
0
        public override void GetGameStats(Google.ProtocolBuffers.IRpcController controller, GetGameStatsRequest request, Action <GetGameStatsResponse> done)
        {
            var response     = GetGameStatsResponse.CreateBuilder();
            var stats_bucket = GameStatsBucket.CreateBuilder();

            stats_bucket.SetBucketMin(0)
            .SetBucketMax(4294967296)
            .SetWaitMilliseconds(1354)
            .SetGamesPerHour(0)
            .SetActiveGames(69)
            .SetActivePlayers(75)
            .SetFormingGames(0)
            .SetWaitingPlayers(0);

            response.AddStatsBucket(stats_bucket);
            done(response.Build());
        }
Exemplo n.º 14
0
        static internal void CallMethod(
            RcfProtoChannel self,
            Google.ProtocolBuffers.Descriptors.MethodDescriptor method,
            Google.ProtocolBuffers.IRpcController controller,
            Google.ProtocolBuffers.IMessage request,
            Google.ProtocolBuffers.IMessage responsePrototype,
            Action <Google.ProtocolBuffers.IMessage> done)
        {
            self.mResponse      = null;
            self.mResponseError = null;

            self.mDone = done;
            self.mResponsePrototype = responsePrototype;

            // Serialize the request.
            RcfProtoController rcfController = (RcfProtoController)controller;

            if (rcfController != null)
            {
                rcfController.Reset();
                rcfController.mChannel = self;
            }

            string serviceName = method.Service.Name;
            int    methodId    = method.Index;

            byte[] bytes = request.ToByteArray();

            // Hand off to RCF.
            if (self.mSwigCallback == null)
            {
                self.mSwigCallback = new SwigCallback_CallCompletion(self);
            }
            self._CallMethodSwig(serviceName, methodId, bytes, bytes.Length, self.mSwigCallback);

            bool syncRpc = !self.GetAsynchronousRpcMode();

            if (syncRpc)
            {
                if (self.Failed())
                {
                    self.mResponseError = self.ErrorText();
                    throw new System.Exception(self.mResponseError);
                }
            }
        }
Exemplo n.º 15
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));
            }
        }
Exemplo n.º 16
0
    private void PrintRequest(
        Google.ProtocolBuffers.IRpcController controller,
        Google.ProtocolBuffers.IMessage request)
    {
        System.Console.WriteLine("************************");
        System.Console.WriteLine("*** Received request ***");

        RcfProtoController rcfController = (RcfProtoController)controller;
        RcfProtoSession    session       = rcfController.GetSession();

        System.Console.WriteLine("Client username: "******"Compression enabled: " + session.GetEnableCompression());
        System.Console.WriteLine("Transport type: " + session.GetTransportType());
        System.Console.WriteLine("Transport protocol: " + session.GetTransportProtocol());

        string strRequest = request.ToString();

        System.Console.WriteLine("Request:");
        System.Console.WriteLine(strRequest);
    }
Exemplo n.º 17
0
        public override void Connect(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.ConnectRequest request, Action <bnet.protocol.connection.ConnectResponse> done)
        {
            Logger.Trace("Connect()");

            var builder = bnet.protocol.connection.ConnectResponse.CreateBuilder()
                          .SetServerId(bnet.protocol.ProcessId.CreateBuilder().SetLabel(0).SetEpoch(DateTime.Now.ToUnixTime()))
                          .SetClientId(bnet.protocol.ProcessId.CreateBuilder().SetLabel(1).SetEpoch(DateTime.Now.ToUnixTime()));

            if (request.HasClientId)
            {
                builder.SetClientId(request.ClientId);
            }

            builder.SetContentHandleArray(bnet.protocol.connection.ConnectionMeteringContentHandles.CreateBuilder()
                                          .AddContentHandle(bnet.protocol.ContentHandle.CreateBuilder()
                                                            .SetRegion(VersionInfo.MooNet.Regions[VersionInfo.MooNet.Region])
                                                            .SetUsage(0x6D74727A) //mtrz
                                                            .SetHash(ByteString.CopyFrom("18e98cde12837149621988ceee55123bf2be839a6dc1d6bb00a399520656b2a6".ToByteArray()))));

            done(builder.Build());
        }
Exemplo n.º 18
0
    public override void Search(
        Google.ProtocolBuffers.IRpcController controller,
        SearchRequest request,
        System.Action <SearchResponse> done)
    {
        PrintRequest(controller, request);

        // Build the response.
        SearchResponse.Types.Result result = SearchResponse.Types.Result.CreateBuilder()
                                             .SetUrl("http://someurl.com")
                                             .Build();

        SearchResponse response = SearchResponse.CreateBuilder()
                                  .AddResult(result)
                                  .Build();

        PrintResponse(response);

        // Send the response.
        done(response);
    }
Exemplo n.º 19
0
        public override void Connect(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.ConnectRequest request, Action <bnet.protocol.connection.ConnectResponse> done)
        {
            Logger.Trace("Connect()");

            var builder = bnet.protocol.connection.ConnectResponse.CreateBuilder()
                          .SetServerId(bnet.protocol.ProcessId.CreateBuilder().SetLabel(0).SetEpoch(DateTime.Now.ToUnixTime()))
                          .SetClientId(bnet.protocol.ProcessId.CreateBuilder().SetLabel(1).SetEpoch(DateTime.Now.ToUnixTime()));

            if (request.HasClientId)
            {
                builder.SetClientId(request.ClientId);
            }

            builder.SetContentHandleArray(bnet.protocol.connection.ConnectionMeteringContentHandles.CreateBuilder()
                                          .AddContentHandle(bnet.protocol.ContentHandle.CreateBuilder()
                                                            .SetRegion(VersionInfo.MooNet.Regions[VersionInfo.MooNet.Region])
                                                            .SetUsage(0x6D74727A) //mtrz
                                                            .SetHash(ByteString.CopyFrom("acaeab71f005567974a656cf1207f74bb9a5365c84e9f22f1f82ffec3d1367a8".ToByteArray()))));

            done(builder.Build());
        }
Exemplo n.º 20
0
        public override void FindGame(Google.ProtocolBuffers.IRpcController controller, FindGameRequest request, Action <FindGameResponse> done)
        {
            FindGameResponse.Builder findGameResponse = FindGameResponse.CreateBuilder();
            findGameResponse.SetRequestId(12526585062881647236);

            done(findGameResponse.Build());

            //client.ListenerId = request.ObjectId;

            GameFoundNotification.Builder gameFoundNotification = GameFoundNotification.CreateBuilder();

            GameHandle.Builder gameHandle = GameHandle.CreateBuilder();
            gameHandle.SetFactoryId(request.FactoryId);
            gameHandle.SetGameId(bnet.protocol.EntityId.CreateBuilder().SetHigh(433661094641971304).SetLow(11017467167309309688).Build());

            ConnectInfo.Builder connectInfo = ConnectInfo.CreateBuilder();
            connectInfo.SetToonId(new bnet.protocol.EntityId.Builder {
                High = 216174302532224051,
                Low  = 2
            }.Build());
            connectInfo.SetHost("127.0.0.1");
            connectInfo.SetPort(6665);
            connectInfo.SetToken(ByteString.CopyFrom(new byte[] { 0x07, 0x34, 0x02, 0x60, 0x91, 0x93, 0x76, 0x46, 0x28, 0x84 }));
            connectInfo.AddAttribute(Attribute
                                     .CreateBuilder()
                                     .SetName("SGameId")
                                     .SetValue(Variant
                                               .CreateBuilder()
                                               .SetIntValue(2014314530)
                                               .Build())
                                     .Build());

            gameFoundNotification.SetRequestId(12526585062881647236);
            gameFoundNotification.SetGameHandle(gameHandle.Build());
            gameFoundNotification.AddConnectInfo(connectInfo.Build());

            client.GetImportedService <GameFactorySubscriber>().NotifyGameFound(controller, gameFoundNotification.Build(), r => { });
        }
Exemplo n.º 21
0
        public override void SubscribeToUserManager(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.user_manager.SubscribeToUserManagerRequest request, System.Action <bnet.protocol.user_manager.SubscribeToUserManagerResponse> done)
        {
            Logger.Trace("Subscribe() {0}", this.Client);

            // temp hack: send him all online players on server where he should be normally get list of player he met in his last few games /raist.

            var  builder = bnet.protocol.user_manager.SubscribeToUserManagerResponse.CreateBuilder();
            uint i       = 0;

            foreach (var client in PlayerManager.OnlinePlayers)
            {
                if (client == this.Client)
                {
                    continue;                        // Don't add the requester to the list
                }
                if (client.Account.CurrentGameAccount.CurrentToon == null)
                {
                    continue;
                }

                Logger.Debug("RecentPlayer => " + client.Account.CurrentGameAccount.CurrentToon);
                var recentPlayer = bnet.protocol.user_manager.RecentPlayer.CreateBuilder()
                                   .SetEntity(client.Account.BnetEntityId)
                                   .SetProgramId("D3")
                                   .AddAttributes(bnet.protocol.attribute.Attribute.CreateBuilder()
                                                  .SetName("GameAccountEntityId")
                                                  .SetValue(bnet.protocol.attribute.Variant.CreateBuilder()
                                                            .SetMessageValue(client.Account.CurrentGameAccount.D3GameAccountId.ToByteString())
                                                            .Build())
                                                  .Build())
                                   .SetId(i++)
                                   .Build();
                builder.AddRecentPlayers(recentPlayer);
            }

            done(builder.Build());
        }
Exemplo n.º 22
0
        public override void Execute(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.storage.ExecuteRequest request, System.Action <bnet.protocol.storage.ExecuteResponse> done)
        {
            Logger.Trace("Execute() {0}", this.Client);
            bnet.protocol.storage.ExecuteResponse response = null;
            switch (request.QueryName)
            {
            case "GetGameAccountSettings":
                response = GameAccountSettings(request);
                break;

            case "LoadAccountDigest":
                response = LoadAccountDigest(Client, request);
                break;

            case "GetHeroDigests":
                response = GetHeroDigest(Client, request);
                break;

            case "GetToonSettings":
                response = GetToonSettings(request);
                break;

            //case "GetAccountProfile":
            //    response = GetAccountProfile(Client, request);
            //    break;
            //case "GetHeroProfiles":
            //    response = GetHeroProfiles(Client, request);
            //    break;
            default:
                Logger.Warn("Unhandled query: {0}", request.QueryName);
                response = bnet.protocol.storage.ExecuteResponse.CreateBuilder().Build();
                break;
            }

            done(response);
        }
Exemplo n.º 23
0
 public override void CancelFindGame(Google.ProtocolBuffers.IRpcController controller, CancelFindGameRequest request, Action <bnet.protocol.NoData> done)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 24
0
 public override void GameEnded(Google.ProtocolBuffers.IRpcController controller, GameEndedNotification request, Action <bnet.protocol.NO_RESPONSE> done)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 25
0
 public override void JoinGame(Google.ProtocolBuffers.IRpcController controller, JoinGameRequest request, Action <JoinGameResponse> done)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 26
0
        public override void ModuleMessage(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.authentication.ModuleMessageRequest request, Action <bnet.protocol.NoData> done)
        {
            var moduleMessage = request.Message.ToByteArray();
            var command       = moduleMessage[0];
            var module        = this.Client.ClientModuleIds.Where(pair => pair.Value == request.ModuleId).Select(pair => pair.Key).First();

            Logger.Trace("ModuleMessage(): Module: {0} ModuleId: {1} Command: {2}", module, request.ModuleId, command);

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

            switch (module)
            {
            case MooNetClient.StreamedModule.Password:
                if (command == 2)
                {
                    AuthManager.HandleAuthResponse(this.Client, request.ModuleId, moduleMessage);
                }
                else
                {
                    Logger.Error("Unknown command: {0} for Password module.", command);
                }
                break;

            case MooNetClient.StreamedModule.Token:

                var moduleLoadRequest = bnet.protocol.authentication.ModuleLoadRequest.CreateBuilder();
                var moduleHandle      = bnet.protocol.ContentHandle.CreateBuilder();
                moduleHandle.SetRegion(VersionInfo.MooNet.Regions[VersionInfo.MooNet.Region])
                .SetUsage(0x61757468);         // auth - RiskFingerprint.dll or Agreement.dll

                if (this.Client.HasAgreements())
                {
                    moduleHandle.SetHash(ByteString.CopyFrom(VersionInfo.MooNet.AgreementHashMap[this.Client.Platform]));
                    this.Client.LastRequestedModule = MooNetClient.StreamedModule.Agreement;
                }
                else
                {
                    moduleHandle.SetHash(ByteString.CopyFrom(VersionInfo.MooNet.RiskFingerprintHashMap[this.Client.Platform]));
                    moduleLoadRequest.SetMessage(ByteString.Empty);
                    this.Client.LastRequestedModule = MooNetClient.StreamedModule.RiskFingerprint;
                }

                moduleLoadRequest.SetModuleHandle(moduleHandle);
                this.Client.MakeRPC(() => bnet.protocol.authentication.AuthenticationClient.CreateStub(this.Client).ModuleLoad(null, moduleLoadRequest.Build(), ModuleLoadResponse));
                break;

            case MooNetClient.StreamedModule.RiskFingerprint:
                Logger.Trace("Completing Authentication.");
                this.Client.AuthenticationComplete();
                break;

            case MooNetClient.StreamedModule.Agreement:
                switch (this.Client.LastAgreementSent)
                {
                case MooNetClient.AvailableAgreements.EULA:
                    this.Client.Agreements.Add(MooNetClient.AvailableAgreements.EULA, true);
                    break;

                case MooNetClient.AvailableAgreements.TOS:
                    this.Client.Agreements.Add(MooNetClient.AvailableAgreements.TOS, true);
                    break;

                case MooNetClient.AvailableAgreements.RMAH:
                    this.Client.Agreements.Add(MooNetClient.AvailableAgreements.RMAH, true);
                    break;

                default:
                    Logger.Error("Unknown agreement.");
                    break;
                }
                this.Client.SendAgreements();
                break;

            default:
                Logger.Error("Unknown module message data.");
                break;
            }
        }
Exemplo n.º 27
0
 public override void Echo(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.EchoRequest request, Action <bnet.protocol.connection.EchoResponse> done)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 28
0
 public override void Null(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.NullRequest request, Action <bnet.protocol.NO_RESPONSE> done)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 29
0
 public override void ForceDisconnect(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.DisconnectNotification request, Action <bnet.protocol.NO_RESPONSE> done)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 30
0
 public override void Encrypt(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.connection.EncryptRequest request, Action <bnet.protocol.NoData> done)
 {
     throw new NotImplementedException();
 }