/// <inheritdoc /> protected override void Load(ContainerBuilder builder) { builder.Register <IDownloadableContentServerServiceClient>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); IReadonlyAuthTokenRepository tokenRepository = context.Resolve <IReadonlyAuthTokenRepository>(); return(new AsyncEndpointDownloadableContentService(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) })); }); //IStaticContentDataServiceClient builder.Register <IStaticContentDataServiceClient>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); IReadonlyAuthTokenRepository tokenRepository = context.Resolve <IReadonlyAuthTokenRepository>(); return(new AsyncStaticContentDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) })); }); }
/// <inheritdoc /> protected override void Load(ContainerBuilder builder) { builder.Register <IZoneAuthenticationService>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); IReadonlyAuthTokenRepository tokenRepository = context.Resolve <IReadonlyAuthTokenRepository>(); return(new AsyncZoneAuthenticationServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ZoneAuthentication"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) })); }) .SingleInstance(); builder.Register <IZoneRegistryService>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); IReadonlyAuthTokenRepository tokenRepository = context.Resolve <IReadonlyAuthTokenRepository>(); return(new AsyncEndpointZoneRegistryService(QueryForRemoteServiceEndpoint(serviceDiscovery, "ZoneManager"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) })); }) //.As<IZoneRegistryServiceQueueable>() .As <IZoneRegistryService>() .SingleInstance(); }
public AuthorizedServiceDiscoveryServiceResolver(IServiceDiscoveryService discoveryClient, TServiceEnumType serviceType, IReadonlyAuthTokenRepository tokenRepository) : base(discoveryClient, serviceType) { TokenRepository = tokenRepository ?? throw new ArgumentNullException(nameof(tokenRepository)); }
/// <inheritdoc /> protected override void Load(ContainerBuilder builder) { builder.Register <IDownloadableContentServerServiceClient>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); IReadonlyAuthTokenRepository tokenRepository = context.Resolve <IReadonlyAuthTokenRepository>(); return(new AsyncEndpointDownloadableContentService(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) })); }); builder.Register <ICreatureDataServiceClient>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); //IReadonlyAuthTokenRepository tokenRepository = context.Resolve<IReadonlyAuthTokenRepository>(); //return new AsyncCreatureDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) }); return(new AsyncCreatureDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"))); }); builder.Register <IGameObjectDataServiceClient>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); //IReadonlyAuthTokenRepository tokenRepository = context.Resolve<IReadonlyAuthTokenRepository>(); //return new AsyncCreatureDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) }); return(new AsyncGameObjectDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"))); }); builder.Register <IPlayerSpawnPointDataServiceClient>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); //IReadonlyAuthTokenRepository tokenRepository = context.Resolve<IReadonlyAuthTokenRepository>(); //return new AsyncCreatureDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) }); return(new AsyncPlayerSpawnPointDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"))); }); builder.Register <IGameObjectBehaviourDataServiceClient <WorldTeleporterInstanceModel> >(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); //IReadonlyAuthTokenRepository tokenRepository = context.Resolve<IReadonlyAuthTokenRepository>(); //return new AsyncCreatureDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) }); return(new AsyncGameObjectBehaviourDataServiceClient <WorldTeleporterInstanceModel>(CreateBehaviourDataEndpointFromServiceEndpoint(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), "WorldTeleporterData"))); }); builder.Register <IGameObjectBehaviourDataServiceClient <AvatarPedestalInstanceModel> >(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); //IReadonlyAuthTokenRepository tokenRepository = context.Resolve<IReadonlyAuthTokenRepository>(); //return new AsyncCreatureDataServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) }); return(new AsyncGameObjectBehaviourDataServiceClient <AvatarPedestalInstanceModel>(CreateBehaviourDataEndpointFromServiceEndpoint(QueryForRemoteServiceEndpoint(serviceDiscovery, "ContentServer"), "AvatarPedestalData"))); }); }
/// <inheritdoc /> public AuthenticatedHttpClientHandler(IReadonlyAuthTokenRepository authTokenProvider, HttpMessageHandler innerHandler) : base(innerHandler) { if (innerHandler == null) { throw new ArgumentNullException(nameof(innerHandler)); } AuthTokenProvider = authTokenProvider ?? throw new ArgumentNullException(nameof(authTokenProvider)); }
/// <inheritdoc /> public WorldDownloadingGameInitializable(ICharacterService characterService, ICharacterDataRepository localCharacterData, IReadonlyAuthTokenRepository authTokenRepo, IZoneServerService zoneDataService, IContentServerServiceClient contentService, ILog logger) { CharacterService = characterService; LocalCharacterData = localCharacterData; AuthTokenRepo = authTokenRepo; ZoneDataService = zoneDataService; ContentService = contentService; Logger = logger; }
public OnConnectionEstablishedClaimSessionEventListener(INetworkConnectionEstablishedEventSubscribable subscriptionService, [NotNull] IPeerPayloadSendService <GameClientPacketPayload> sendService, [NotNull] IReadonlyAuthTokenRepository authTokenRepository, [NotNull] ILocalCharacterDataRepository characterDataRepository) : base(subscriptionService) { SendService = sendService ?? throw new ArgumentNullException(nameof(sendService)); AuthTokenRepository = authTokenRepository ?? throw new ArgumentNullException(nameof(authTokenRepository)); CharacterDataRepository = characterDataRepository ?? throw new ArgumentNullException(nameof(characterDataRepository)); }
/// <inheritdoc /> public CharacterSelectionSelectCharacterImmediatelyOnButtonClickedEventListener( [NotNull] ICharacterSelectionButtonClickedEventSubscribable subscriptionService, [NotNull] ICharacterService characterService, [NotNull] ICharacterDataRepository characterData, [NotNull] IReadonlyAuthTokenRepository authTokenRepo, [NotNull] ILog logger) : base(subscriptionService) { CharacterService = characterService ?? throw new ArgumentNullException(nameof(characterService)); CharacterData = characterData ?? throw new ArgumentNullException(nameof(characterData)); AuthTokenRepo = authTokenRepo ?? throw new ArgumentNullException(nameof(authTokenRepo)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
/// <inheritdoc /> protected override void Load(ContainerBuilder builder) { builder.Register <IVivoxAuthorizationService>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); IReadonlyAuthTokenRepository tokenRepository = context.Resolve <IReadonlyAuthTokenRepository>(); return(new AsyncVivoxAuthorizationServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, GladMMONetworkConstants.VIVOX_AUTHENTICATION_SERVICE_NAME), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) })); }); }
/// <inheritdoc /> public SocialConnectionGameInitializable( [NotNull] IEnumerable <ISignalRConnectionHubInitializable> initializableSocialServices, [NotNull] IServiceDiscoveryService serviceDiscoveryService, [NotNull] ILocalPlayerDetails playerDetails, [NotNull] IReadonlyAuthTokenRepository authTokenProvider, [NotNull] ILog logger) { InitializableSocialServices = initializableSocialServices ?? throw new ArgumentNullException(nameof(initializableSocialServices)); ServiceDiscoveryService = serviceDiscoveryService ?? throw new ArgumentNullException(nameof(serviceDiscoveryService)); PlayerDetails = playerDetails ?? throw new ArgumentNullException(nameof(playerDetails)); AuthTokenProvider = authTokenProvider ?? throw new ArgumentNullException(nameof(authTokenProvider)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
/// <inheritdoc /> public DefaultLoadableContentResourceManager( [NotNull] IContentServerServiceClient contentClient, [NotNull] IReadonlyAuthTokenRepository authTokenRepo, [NotNull] ILog logger) { //TODO: We haven't implemented the refcounted cleanup. We ref count, but don't yet dispose. ProjectVersionStage.AssertAlpha(); ContentClient = contentClient ?? throw new ArgumentNullException(nameof(contentClient)); AuthTokenRepo = authTokenRepo ?? throw new ArgumentNullException(nameof(authTokenRepo)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); ResourceHandleCache = new Dictionary <long, ReferenceCountedPrefabContentResourceHandle>(); ReleaseUnmanagedResources(); }
public InitializeRealtimeSocialServiceEventListener(ILocalPlayerSpawnedEventSubscribable subscriptionService, [NotNull] ILog logger, [NotNull] IServiceDiscoveryService serviceDiscoveryService, [NotNull] ILocalPlayerDetails playerDetails, [NotNull] IReadonlyAuthTokenRepository authTokenProvider, [NotNull] IRemoteSocialHubClient remoteSocialClient, [NotNull] IEnumerable <IConnectionHubInitializable> connectionHubInitializable) : base(subscriptionService) { Logger = logger ?? throw new ArgumentNullException(nameof(logger)); ServiceDiscoveryService = serviceDiscoveryService ?? throw new ArgumentNullException(nameof(serviceDiscoveryService)); PlayerDetails = playerDetails ?? throw new ArgumentNullException(nameof(playerDetails)); AuthTokenProvider = authTokenProvider ?? throw new ArgumentNullException(nameof(authTokenProvider)); RemoteSocialClient = remoteSocialClient ?? throw new ArgumentNullException(nameof(remoteSocialClient)); ConnectionHubInitializable = connectionHubInitializable ?? throw new ArgumentNullException(nameof(connectionHubInitializable)); }
public OnConnectionEstablishedClaimSessionEventListener(INetworkConnectionEstablishedEventSubscribable subscriptionService, [NotNull] IPeerPayloadSendService <GameClientPacketPayload> sendService, [NotNull] IReadonlyAuthTokenRepository authTokenRepository, [NotNull] ILocalCharacterDataRepository characterDataRepository, [NotNull] ICharacterService characterService, [JetBrains.Annotations.NotNull] ILog logger, [JetBrains.Annotations.NotNull] IGameContextEventQueueable eventQueueable) : base(subscriptionService) { SendService = sendService ?? throw new ArgumentNullException(nameof(sendService)); AuthTokenRepository = authTokenRepository ?? throw new ArgumentNullException(nameof(authTokenRepository)); CharacterDataRepository = characterDataRepository ?? throw new ArgumentNullException(nameof(characterDataRepository)); CharacterService = characterService ?? throw new ArgumentNullException(nameof(characterService)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); EventQueueable = eventQueueable ?? throw new ArgumentNullException(nameof(eventQueueable)); }
/// <inheritdoc /> protected override void Load(ContainerBuilder builder) { builder.Register <ISocialService>(context => { IServiceDiscoveryService serviceDiscovery = context.Resolve <IServiceDiscoveryService>(); IReadonlyAuthTokenRepository tokenRepository = context.Resolve <IReadonlyAuthTokenRepository>(); return(new AsyncSocialServiceClient(QueryForRemoteServiceEndpoint(serviceDiscovery, GladMMONetworkConstants.SOCIAL_SERVICE_NAME), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(tokenRepository) })); }); builder.RegisterType <DefaultRemoteSocialHubServer>() .AsImplementedInterfaces() .SingleInstance(); builder.RegisterType <DefaultRemoteSocialHubClient>() .AsImplementedInterfaces() .SingleInstance(); }
/// <inheritdoc /> public PreBurstStartInstanceClientConnection([NotNull] IManagedNetworkClient <GameClientPacketPayload, GameServerPacketPayload> client, [NotNull] ICharacterService characterDataService, [NotNull] IReadonlyAuthTokenRepository authTokenRepo, [NotNull] ICharacterDataRepository characterDataRepo, [NotNull] IZoneServerService zoneService, [NotNull] ILog logger, [NotNull] INetworkClientManager networkClientManager) { Client = client ?? throw new ArgumentNullException(nameof(client)); CharacterDataService = characterDataService ?? throw new ArgumentNullException(nameof(characterDataService)); AuthTokenRepo = authTokenRepo ?? throw new ArgumentNullException(nameof(authTokenRepo)); CharacterDataRepo = characterDataRepo ?? throw new ArgumentNullException(nameof(characterDataRepo)); ZoneService = zoneService ?? throw new ArgumentNullException(nameof(zoneService)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); NetworkClientManager = networkClientManager ?? throw new ArgumentNullException(nameof(networkClientManager)); }
/// <inheritdoc /> public ProxiedAzureServiceBusHttpClientHandler([NotNull] IReadonlyAuthTokenRepository authTokenProvider, IQueueClient azureServiceBusClient, ILog logger) { AuthTokenProvider = authTokenProvider ?? throw new ArgumentNullException(nameof(authTokenProvider)); AzureServiceBusClient = azureServiceBusClient ?? throw new ArgumentNullException(nameof(azureServiceBusClient)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //https://stackoverflow.com/questions/4926676/mono-https-webrequest-fails-with-the-authentication-or-decryption-has-failed ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServicePointManager.CheckCertificateRevocationList = false; services.AddMvc(options => { //This prevents ASP Core from trying to validate Vector3's children, which contain Vector3 (because Unity3D thanks) //so it will cause stack overflows. This will avoid it. //options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Vector3))); }) .RegisterHealthCheckController(); X509Certificate2 cert = null; string certPath = "Certs/TestCert.pfx"; try { cert = X509Certificate2Loader.Create(certPath).Load(); } catch (Exception e) { throw new System.InvalidOperationException($"Failed to load {nameof(X509Certificate2)} from Path: {certPath} \n\n StackTrace: {e.StackTrace}", e); } //This provides JwtBearer support for Authorize attribute/header services.AddJwtAuthorization(cert); services.AddResponseCaching(); ISignalRServerBuilder signalRBuilder = services.AddSignalR(options => { }).AddJsonProtocol(); //TODO: Handle failure. //This adds the SignalR rerouting to the specified SignalR backplane. #if AZURE_RELEASE || AZURE_DEBUG signalRBuilder.AddAzureSignalR(Environment.GetEnvironmentVariable(GladMMOServiceConstants.AZURE_SIGNALR_CONNECTION_STRING_ENV_VAR_PATH)); #endif services.AddSingleton <IUserIdProvider, SignalRPlayerCharacterUserIdProvider>(); //TODO: Support release/prod service query. #if AZURE_RELEASE || AZURE_DEBUG services.AddSingleton <IServiceDiscoveryService>(provider => RestService.For <IServiceDiscoveryService>("https://test-guardians-servicediscovery.azurewebsites.net")); #else services.AddSingleton <IServiceDiscoveryService>(provider => RestService.For <IServiceDiscoveryService>("http://72.190.177.214:5000")); #endif services.AddSingleton <IReadonlyAuthTokenRepository, SocialServiceAuthTokenRepository>(); services.AddSingleton <IAuthenticationService, AsyncEndpointAuthenticationService>(provider => { return(new AsyncEndpointAuthenticationService(QueryForRemoteServiceEndpoint(provider.GetService <IServiceDiscoveryService>(), "Authentication"), new RefitSettings() { HttpMessageHandlerFactory = () => new BypassHttpsValidationHandler() })); }); services.AddSingleton <ISocialServiceToGameServiceClient, AsyncEndpointISocialServiceToGameServiceClient>(provider => { IReadonlyAuthTokenRepository repository = provider.GetService <IReadonlyAuthTokenRepository>(); return(new AsyncEndpointISocialServiceToGameServiceClient(QueryForRemoteServiceEndpoint(provider.GetService <IServiceDiscoveryService>(), "GameServer"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(repository) })); }); services.AddSingleton <INameQueryService>(provider => { IReadonlyAuthTokenRepository repository = provider.GetService <IReadonlyAuthTokenRepository>(); return(new AsyncEndpointNameQueryService(QueryForRemoteServiceEndpoint(provider.GetService <IServiceDiscoveryService>(), "NameQuery"), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(repository) })); }); services.AddSingleton <ISocialService>(provider => { IReadonlyAuthTokenRepository repository = provider.GetService <IReadonlyAuthTokenRepository>(); return(new AsyncSocialServiceClient(QueryForRemoteServiceEndpoint(provider.GetService <IServiceDiscoveryService>(), GladMMONetworkConstants.SOCIAL_SERVICE_NAME), new RefitSettings() { HttpMessageHandlerFactory = () => new AuthenticatedHttpClientHandler(repository) })); }); //This is for Hub connection event listeners services.AddSingleton <IOnHubConnectionEventListener, CharacterZoneOnHubConnectionEventListener>(); services.AddSingleton <IOnHubConnectionEventListener, CharacterGuildOnHubConnectionEventListener>(); //SocialSignalRMessageRouter<TRemoteClientHubInterfaceType> : ISocialModelMessageRouter<TRemoteClientHubInterfaceType> services.AddSingleton <ISocialModelMessageRouter <IRemoteSocialHubClient>, SocialSignalRMessageRouter <IRemoteSocialHubClient> >(); services.AddSingleton <ISocialModelPayloadHandler <IRemoteSocialHubClient>, TestSocialModelHandler>(); services.AddSingleton <ISocialModelPayloadHandler <IRemoteSocialHubClient>, GuildMemberInviteRequestModelHandler>(); services.AddSingleton <ISocialModelPayloadHandler <IRemoteSocialHubClient>, PendingGuildInviteResultHandler>(); RegisterDatabaseServices(services); }
/// <inheritdoc /> public AuthenticatedHttpClientHandler(IReadonlyAuthTokenRepository authTokenProvider) : base(new HttpClientHandler()) { AuthTokenProvider = authTokenProvider ?? throw new ArgumentNullException(nameof(authTokenProvider)); }
/// <inheritdoc /> public CharacterSelectionOnStartRequestCharacterListInitializable([NotNull] ICharacterService characterQueryable, [NotNull] IReadonlyAuthTokenRepository authTokenRepository, [NotNull] ILog logger) { CharacterQueryable = characterQueryable ?? throw new ArgumentNullException(nameof(characterQueryable)); AuthTokenRepository = authTokenRepository ?? throw new ArgumentNullException(nameof(authTokenRepository)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); }