public IServiceProvider ConfigureServices(IServiceCollection services) { PrintHeader(); PacketFactory.Initialize <NoS0575Packet>(); var configuration = InitializeConfiguration(); services.AddSingleton <IServerAddressesFeature>(new ServerAddressesFeature { PreferHostingUrls = true, Addresses = { configuration.WebApi.ToString() } }); LogLanguage.Language = configuration.Language; services.AddSwaggerGen(c => c.SwaggerDoc("v1", new Info { Title = "NosCore World API", Version = "v1" })); var keyByteArray = Encoding.Default.GetBytes(EncryptionHelper.Sha512(configuration.MasterCommunication.Password)); var signinKey = new SymmetricSecurityKey(keyByteArray); services.AddLogging(builder => builder.AddFilter("Microsoft", LogLevel.Warning)); services.AddAuthentication(config => config.DefaultScheme = JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(cfg => { cfg.RequireHttpsMetadata = false; cfg.SaveToken = true; cfg.TokenValidationParameters = new TokenValidationParameters { IssuerSigningKey = signinKey, ValidAudience = "Audience", ValidIssuer = "Issuer", ValidateIssuerSigningKey = true, ValidateLifetime = true }; }); services.AddMvc(o => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); o.Filters.Add(new AuthorizeFilter(policy)); }).AddApplicationPart(typeof(TokenController).GetTypeInfo().Assembly).AddControllersAsServices(); var containerBuilder = InitializeContainer(services); containerBuilder.RegisterInstance(configuration).As <WorldConfiguration>(); containerBuilder.RegisterInstance(configuration.MasterCommunication).As <MasterCommunicationConfiguration>(); var container = containerBuilder.Build(); PacketControllerFactory.Initialize(container); Logger.InitializeLogger(LogManager.GetLogger(typeof(WorldServer))); Task.Run(() => container.Resolve <WorldServer>().Run()); return(new AutofacServiceProvider(container)); }
public ClientSession(IChannel channel, bool isWorldClient) : base(channel) { _isWorldClient = isWorldClient; foreach (var controller in PacketControllerFactory.GenerateControllers()) { controller.RegisterSession(this); foreach (var methodInfo in controller.GetType().GetMethods().Where(x => x.GetParameters().FirstOrDefault()?.ParameterType.BaseType == typeof(PacketDefinition))) { var type = methodInfo.GetParameters().FirstOrDefault()?.ParameterType; var packetheader = (PacketHeaderAttribute)Array.Find(type?.GetCustomAttributes(true), ca => ca.GetType() == typeof(PacketHeaderAttribute)); _headerMethod.Add(packetheader, new Tuple <IPacketController, Type>(controller, type)); _controllerMethods.Add(packetheader, DelegateBuilder.BuildDelegate <Action <object, object> >(methodInfo)); } } }
public ClientSession(IChannel channel, bool isWorldClient) : base(channel) { // set last received lastPacketReceive = DateTime.Now.Ticks; _random = new Random((int)ClientId); _isWorldClient = isWorldClient; foreach (var controller in PacketControllerFactory.GenerateControllers()) { controller.RegisterSession(this); foreach (MethodInfo methodInfo in controller.GetType().GetMethods().Where(x => x.GetParameters().FirstOrDefault()?.ParameterType.BaseType == typeof(PacketDefinition))) { var type = methodInfo.GetParameters().FirstOrDefault()?.ParameterType; PacketHeaderAttribute packetheader = (PacketHeaderAttribute)Array.Find(type.GetCustomAttributes(true), ca => ca.GetType().Equals(typeof(PacketHeaderAttribute))); HeaderMethod.Add(packetheader, new Tuple <IPacketController, Type>(controller, type)); ControllerMethods.Add(packetheader, DelegateBuilder.BuildDelegate <Action <object, object> >(methodInfo)); } } }
public IServiceProvider ConfigureServices(IServiceCollection services) { PrintHeader(); PacketFactory.Initialize <NoS0575Packet>(); var conf = InitializeConfiguration(); services.AddSwaggerGen(c => c.SwaggerDoc("v1", new Info { Title = "NosCore World API", Version = "v1" })); var keyByteArray = Encoding.ASCII.GetBytes(EncryptionHelper.Sha512(conf.MasterCommunication.Password)); var signinKey = new SymmetricSecurityKey(keyByteArray); services.AddAuthentication(config => config.DefaultScheme = JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(cfg => { cfg.RequireHttpsMetadata = false; cfg.SaveToken = true; cfg.TokenValidationParameters = new TokenValidationParameters() { IssuerSigningKey = signinKey, ValidAudience = "Audience", ValidIssuer = "Issuer", ValidateIssuerSigningKey = true, ValidateLifetime = true, }; }); services.AddMvc(o => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); o.Filters.Add(new AuthorizeFilter(policy)); }).AddApplicationPart(typeof(TokenController).GetTypeInfo().Assembly).AddControllersAsServices(); var containerBuilder = InitializeContainer(services); containerBuilder.RegisterInstance(conf).As <WorldConfiguration>(); containerBuilder.RegisterInstance(conf.MasterCommunication).As <MasterCommunicationConfiguration>(); var container = containerBuilder.Build(); PacketControllerFactory.Initialize(container); Task.Run(() => container.Resolve <WorldServer>().Run()); return(new AutofacServiceProvider(container)); }
private static void InitializeControllers(IContainer container) { PacketControllerFactory.Initialize(container); }