Beispiel #1
0
 public static void Boot()
 {
     LogManager.GetCurrentClassLogger().Info("Booting Redfox server...\r\n\r\n  ██████╗ ███████╗██████╗ ███████╗ ██████╗ ██╗  ██╗\r\n  ██╔══██╗██╔════╝██╔══██╗██╔════╝██╔═══██╗╚██╗██╔╝\r\n  ██████╔╝█████╗  ██║  ██║█████╗  ██║   ██║ ╚███╔╝ \r\n  ██╔══██╗██╔══╝  ██║  ██║██╔══╝  ██║   ██║ ██╔██╗ \r\n  ██║  ██║███████╗██████╔╝██║     ╚██████╔╝██╔╝ ██╗\r\n  ╚═╝  ╚═╝╚══════╝╚═════╝ ╚═╝      ╚═════╝ ╚═╝  ╚═╝\r\n                           ___ ___ _ ___ _____ _ _ \r\n                          (_-</ -_) '_\\ V / -_) '_|\r\n                          /__/\\___|_|  \\_/\\___|_|  \r\n");
     Core.serverConfig = ServerConfig.FromFile("Config/Server.json");
     try
     {
         InitializeExtensions();
     }
     catch (Exception ex) when(!Env.Debugging)
     {
         LogManager.GetCurrentClassLogger().Error("There was an error while initializing extensions: " + ex.ToString());
         CleanUp();
     }
     messageHandler = new MessageHandlerManager();
     UserManager    = new UserManager();
     try
     {
         InitializeZones();
     }
     catch (Exception ex) when(!Env.Debugging)
     {
         LogManager.GetCurrentClassLogger().Error("There was an error while initializing zones: " + ex.ToString());
         CleanUp();
     }
     try
     {
         InitializeNetwork();
     }
     catch (Exception ex) when(!Env.Debugging)
     {
         LogManager.GetCurrentClassLogger().Error("There was an error while initializing network: " + ex.ToString());
         CleanUp();
     }
     LogManager.GetCurrentClassLogger().Info("Redfox server is ready");
 }
Beispiel #2
0
 public override void OnReceive(byte[] data)
 {
     using (BigEndianReader reader = new BigEndianReader(data))
     {
         MessagePart messagePart = new MessagePart(false);
         if (messagePart.Build(reader))
         {
             dynamic message = MessageReceiver.BuildMessage((uint)messagePart.Id, reader);
             ConsoleUtils.Write(ConsoleUtils.Type.RECEIV, $"{message} Id {messagePart.Id} Length {messagePart.Length} ...");
             MessageHandlerManager <LoginClient> .InvokeHandler(this, message);
         }
     }
 }
        protected override async Task RegisterCustomHandlersAsync(MessageHandlerManager manager)
        {
            await TryRegisterHandlerAsync(new ExecuteTaskMessageHandler())
            .ConfigureAwait(continueOnCapturedContext: false);
            await TryRegisterHandlerAsync(new CompareFilesMessageHandler())
            .ConfigureAwait(continueOnCapturedContext: false);
            await TryRegisterHandlerAsync(new CopyItemMessageHandler())
            .ConfigureAwait(continueOnCapturedContext: false);
            await TryRegisterHandlerAsync(new GetItemMessageHandler())
            .ConfigureAwait(continueOnCapturedContext: false);

            await TryRegisterHandlerAsync(new VerifyXcodeVersionMessageHandler())
            .ConfigureAwait(continueOnCapturedContext: false);
            await TryRegisterHandlerAsync(new GetUniversalTargetIdentifierMessageHandler())
            .ConfigureAwait(continueOnCapturedContext: false);
        }
Beispiel #4
0
 private void GameClient_OnClientReceivedData(byte[] data)
 {
     using (BigEndianReader reader = new BigEndianReader(data))
     {
         MessagePart messagePart = new MessagePart(false);
         if (messagePart.Build(reader))
         {
             dynamic message = MessageReceiver.BuildMessage((uint)messagePart.Id, reader);
             if (Config.Debug)
             {
                 ConsoleUtils.Write(ConsoleUtils.Type.RECEIV, $"{message} Id {messagePart.Id} Length {messagePart.Length} ...");
             }
             MessageHandlerManager <Client> .InvokeHandler(this, message);
         }
     }
 }
Beispiel #5
0
        private static void Main(string[] args)
        {
            ConsoleUtils.InitializeConsole("Login");
            Config.ReadConfig();

            MessageReceiver.InitializeMessages();
            MessageHandlerManager <LoginClient> .InitializeHandlers();

            DatabaseManager.Connect(Config.DatabaseHost, Config.DatabaseUsername, Config.DatabasePassword, Config.DatabaseName);

            LoginServer loginServer = new LoginServer();

            while (true)
            {
                Console.ReadLine();
            }
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            ConsoleUtils.InitializeConsole("Login");
            Config.ReadConfig();

            MessageReceiver.InitializeMessages();
            MessageHandlerManager <Network.Client> .InitializeHandlers();

            DatabaseManager.Connect(Config.Database_Host, Config.Database_Username, Config.Database_Password, Config.Database_Name);

            Network.Server.Start();

            while (true)
            {
                Console.ReadLine();
            }
        }
Beispiel #7
0
        static void Main(string[] args)
        {
            var mqconfig = new MqConfig
            {
                UserName     = "******",
                Password     = "******",
                HostIp       = "localhost",
                Port         = 5672,
                VirtualHost  = "/",
                Exchange     = "Abs.Exchange",
                ExchangeType = "direct",
                Durable      = true,
                AutoDelete   = false
            };
            var ehm = new MessageHandlerManager(mqconfig);

            //_eventbus = new EventBus(ehm);
            ehm.Register <HelloEvent>(new HelloEventHandler());
            Console.ReadLine();
        }
Beispiel #8
0
        private static void Main(string[] args)
        {
            ConsoleUtils.InitializeConsole("Game");
            Config.ReadConfig();

            MessageReceiver.InitializeMessages();
            MessageHandlerManager <GameClient> .InitializeHandlers();

            DataManager.InitializeDatas();
            MapEngine.Initialize();

            DatabaseManager.Connect(Config.DatabaseHost, Config.DatabaseUsername, Config.DatabasePassword,
                                    Config.DatabaseName);

            GameServer gameServer = new GameServer();

            while (true)
            {
                Console.ReadLine();
            }
        }
Beispiel #9
0
        static void TestEventbus()
        {
            var config = new MqConfig
            {
                UserName     = "******",
                Password     = "******",
                HostIp       = "localhost",
                Port         = 5672,
                Exchange     = "Eventbus",
                ExchangeType = "direct",
                VirtualHost  = "/"
            };
            var manager = new MessageHandlerManager(config);

            manager.Register <TestEvent>(new ActionEventHandler <TestEvent>(TestActionHandler));
            manager.Register <TestEvent>(new TestEventHandler());
            manager.Register <TestEvent>(new TestMessageHandler());
            manager.Register <TestEvent>(new MessageHandlerTest());

            Console.ReadLine();

            manager.Unregister <TestEvent>(typeof(TestMessageHandler));
        }
Beispiel #10
0
        /// <summary>
        /// This method gets called by the runtime. Use this method to add services to the container.
        /// </summary>
        /// <param name="services"></param>
        public void ConfigureServices(IServiceCollection services)
        {
            if (jwtOptins == null)
            {
                jwtOptins = new JwtIssuerOptions();
            }

            services.AddJwt(out jwtOptins);

            // 添加jwt验证:
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer           = true,                                                               //是否验证Issuer
                    ValidateAudience         = true,                                                               //是否验证Audience
                    ValidateLifetime         = true,                                                               //是否验证失效时间
                    ClockSkew                = TimeSpan.FromSeconds(30),
                    ValidateIssuerSigningKey = true,                                                               //是否验证SecurityKey
                    ValidAudience            = Const.Domain,                                                       //Audience
                    ValidIssuer              = Const.Domain,                                                       //Issuer,这两项和前面签发jwt的设置一致
                    IssuerSigningKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Const.SecurityKey)) //拿到SecurityKey
                };
            });

            services.AddScoped <IEventBus, EventBus>();

            var mqconfig = new MqConfig
            {
                UserName     = "******",
                Password     = "******",
                HostIp       = "localhost",
                Port         = 5672,
                VirtualHost  = "/",
                Exchange     = "Abs.Exchange",
                ExchangeType = "direct",
                Durable      = true,
                AutoDelete   = false
            };
            var ehm = new MessageHandlerManager(mqconfig);

            services.AddSingleton <IEventHandlerManager>(ehm);

            services.AddScoped <IJwtService, JwtService>();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new Info {
                    Title = "AspNetCore WebApi", Version = "v1"
                });

                options.DocInclusionPredicate((docName, description) => true);

                options.IncludeXmlComments(@"bin\Debug\netcoreapp2.2\AspNetCoreTest.xml");

                options.AddSecurityDefinition("Bearer", new ApiKeyScheme
                {
                    In          = "header",
                    Type        = "apiKey",
                    Name        = "Authorization",
                    Description = "请输入API访问 Token,前面加上Bearer。例如:Bearer {token}"
                });

                options.AddSecurityRequirement(new Dictionary <string, IEnumerable <string> >
                {
                    { "Bearer", Enumerable.Empty <string>() }
                });
            });
        }