Compare commits
	
		
			2 Commits
		
	
	
		
			71fe2a30e7
			...
			refactor/a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						f6f0703cb3
	
				 | 
					
					
						|||
| 
						
						
							
						
						3d47b4e44e
	
				 | 
					
					
						
							
								
								
									
										35
									
								
								.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								.env
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
# Default container port for ring
 | 
			
		||||
RING_PORT=8080
 | 
			
		||||
 | 
			
		||||
# Default container port for pass
 | 
			
		||||
PASS_PORT=8080
 | 
			
		||||
 | 
			
		||||
# Default container port for drive
 | 
			
		||||
DRIVE_PORT=8080
 | 
			
		||||
 | 
			
		||||
# Default container port for sphere
 | 
			
		||||
SPHERE_PORT=8080
 | 
			
		||||
 | 
			
		||||
# Default container port for develop
 | 
			
		||||
DEVELOP_PORT=8080
 | 
			
		||||
 | 
			
		||||
# Parameter cache-password
 | 
			
		||||
CACHE_PASSWORD=KS3jSPaU9e
 | 
			
		||||
 | 
			
		||||
# Parameter queue-password
 | 
			
		||||
QUEUE_PASSWORD=8xEECa4ckz
 | 
			
		||||
 | 
			
		||||
# Container image name for ring
 | 
			
		||||
RING_IMAGE=ring:latest
 | 
			
		||||
 | 
			
		||||
# Container image name for pass
 | 
			
		||||
PASS_IMAGE=pass:latest
 | 
			
		||||
 | 
			
		||||
# Container image name for drive
 | 
			
		||||
DRIVE_IMAGE=drive:latest
 | 
			
		||||
 | 
			
		||||
# Container image name for sphere
 | 
			
		||||
SPHERE_IMAGE=sphere:latest
 | 
			
		||||
 | 
			
		||||
# Container image name for develop
 | 
			
		||||
DEVELOP_IMAGE=develop:latest
 | 
			
		||||
@@ -9,25 +9,35 @@ var cache = builder.AddRedis("cache");
 | 
			
		||||
var queue = builder.AddNats("queue").WithJetStream();
 | 
			
		||||
 | 
			
		||||
var ringService = builder.AddProject<Projects.DysonNetwork_Ring>("ring")
 | 
			
		||||
    .WithReference(queue);
 | 
			
		||||
    .WithReference(queue)
 | 
			
		||||
    .WithHttpHealthCheck()
 | 
			
		||||
    .WithEndpoint(5001, 5001, "https", name: "grpc");
 | 
			
		||||
var passService = builder.AddProject<Projects.DysonNetwork_Pass>("pass")
 | 
			
		||||
    .WithReference(cache)
 | 
			
		||||
    .WithReference(queue)
 | 
			
		||||
    .WithReference(ringService);
 | 
			
		||||
    .WithReference(ringService)
 | 
			
		||||
    .WithHttpHealthCheck()
 | 
			
		||||
    .WithEndpoint(5001, 5001, "https", name: "grpc");
 | 
			
		||||
var driveService = builder.AddProject<Projects.DysonNetwork_Drive>("drive")
 | 
			
		||||
    .WithReference(cache)
 | 
			
		||||
    .WithReference(queue)
 | 
			
		||||
    .WithReference(passService)
 | 
			
		||||
    .WithReference(ringService);
 | 
			
		||||
    .WithReference(ringService)
 | 
			
		||||
    .WithHttpHealthCheck()
 | 
			
		||||
    .WithEndpoint(5001, 5001, "https", name: "grpc");
 | 
			
		||||
var sphereService = builder.AddProject<Projects.DysonNetwork_Sphere>("sphere")
 | 
			
		||||
    .WithReference(cache)
 | 
			
		||||
    .WithReference(queue)
 | 
			
		||||
    .WithReference(passService)
 | 
			
		||||
    .WithReference(ringService);
 | 
			
		||||
    .WithReference(ringService)
 | 
			
		||||
    .WithHttpHealthCheck()
 | 
			
		||||
    .WithEndpoint(5001, 5001, "https", name: "grpc");
 | 
			
		||||
var developService = builder.AddProject<Projects.DysonNetwork_Develop>("develop")
 | 
			
		||||
    .WithReference(cache)
 | 
			
		||||
    .WithReference(passService)
 | 
			
		||||
    .WithReference(ringService);
 | 
			
		||||
    .WithReference(ringService)
 | 
			
		||||
    .WithHttpHealthCheck()
 | 
			
		||||
    .WithEndpoint(5001, 5001, "https", name: "grpc");
 | 
			
		||||
 | 
			
		||||
// Extra double-ended references
 | 
			
		||||
ringService.WithReference(passService);
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,6 @@
 | 
			
		||||
      <ProjectReference Include="..\DysonNetwork.Drive\DysonNetwork.Drive.csproj" />
 | 
			
		||||
      <ProjectReference Include="..\DysonNetwork.Pass\DysonNetwork.Pass.csproj" />
 | 
			
		||||
      <ProjectReference Include="..\DysonNetwork.Ring\DysonNetwork.Ring.csproj" />
 | 
			
		||||
      <ProjectReference Include="..\DysonNetwork.Shared\DysonNetwork.Shared.csproj" />
 | 
			
		||||
      <ProjectReference Include="..\DysonNetwork.Sphere\DysonNetwork.Sphere.csproj" />
 | 
			
		||||
    </ItemGroup>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
using DysonNetwork.Shared.Proto;
 | 
			
		||||
using DysonNetwork.Shared.Registry;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
 | 
			
		||||
@@ -10,15 +11,7 @@ public static class DysonAuthStartup
 | 
			
		||||
        this IServiceCollection services
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        services.AddGrpcClient<AuthService.AuthServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://pass");
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        services.AddGrpcClient<PermissionService.PermissionServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://pass");
 | 
			
		||||
        });
 | 
			
		||||
        services.AddAuthService();
 | 
			
		||||
 | 
			
		||||
        services.AddAuthentication(options =>
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,53 @@ public static class KestrelConfiguration
 | 
			
		||||
        builder.WebHost.ConfigureKestrel(options =>
 | 
			
		||||
        {
 | 
			
		||||
            options.Limits.MaxRequestBodySize = maxRequestBodySize;
 | 
			
		||||
 | 
			
		||||
            // gRPC
 | 
			
		||||
            options.ListenAnyIP(5001, listenOptions =>
 | 
			
		||||
            {
 | 
			
		||||
                listenOptions.Protocols = HttpProtocols.Http2;
 | 
			
		||||
                
 | 
			
		||||
                var selfSignedCert = _CreateSelfSignedCertificate();
 | 
			
		||||
                listenOptions.UseHttps(selfSignedCert);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            var httpPorts = configuration.GetValue<string>("HTTP_PORTS", "5000")
 | 
			
		||||
                .Split(',', StringSplitOptions.RemoveEmptyEntries)
 | 
			
		||||
                .Select(p => int.Parse(p.Trim()))
 | 
			
		||||
                .ToArray();
 | 
			
		||||
 | 
			
		||||
            // Regular HTTP
 | 
			
		||||
            foreach (var httpPort in httpPorts)
 | 
			
		||||
                options.ListenAnyIP(httpPort,
 | 
			
		||||
                    listenOptions => { listenOptions.Protocols = HttpProtocols.Http1AndHttp2; });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return builder;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    static X509Certificate2 _CreateSelfSignedCertificate()
 | 
			
		||||
    {
 | 
			
		||||
        using var rsa = RSA.Create(2048);
 | 
			
		||||
        var certRequest = new CertificateRequest(
 | 
			
		||||
            "CN=dyson.network", // Common Name for the certificate
 | 
			
		||||
            rsa,
 | 
			
		||||
            HashAlgorithmName.SHA256,
 | 
			
		||||
            RSASignaturePadding.Pkcs1);
 | 
			
		||||
 | 
			
		||||
        // Add extensions (e.g., for server authentication)
 | 
			
		||||
        certRequest.CertificateExtensions.Add(
 | 
			
		||||
            new X509EnhancedKeyUsageExtension(
 | 
			
		||||
                new OidCollection { new Oid("1.3.6.1.5.5.7.3.1") }, // Server Authentication
 | 
			
		||||
                false));
 | 
			
		||||
 | 
			
		||||
        // Set validity period (e.g., 1 year)
 | 
			
		||||
        var notBefore = DateTimeOffset.UtcNow.AddDays(-1);
 | 
			
		||||
        var notAfter = notBefore.AddYears(1);
 | 
			
		||||
 | 
			
		||||
        var certificate = certRequest.CreateSelfSigned(notBefore, notAfter);
 | 
			
		||||
    
 | 
			
		||||
        // Export to PKCS#12 and load using X509CertificateLoader
 | 
			
		||||
        var pfxBytes = certificate.Export(X509ContentType.Pfx);
 | 
			
		||||
        return X509CertificateLoader.LoadPkcs12(pfxBytes, password: null);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -8,72 +8,94 @@ public static class ServiceInjectionHelper
 | 
			
		||||
{
 | 
			
		||||
    public static IServiceCollection AddRingService(this IServiceCollection services)
 | 
			
		||||
    {
 | 
			
		||||
        services.AddGrpcClient<RingService.RingServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://ring");
 | 
			
		||||
        });
 | 
			
		||||
        services
 | 
			
		||||
            .AddGrpcClient<RingService.RingServiceClient>(o => o.Address = new Uri("https://_grpc.ring"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        return services;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static IServiceCollection AddAuthService(this IServiceCollection services)
 | 
			
		||||
    {
 | 
			
		||||
        services
 | 
			
		||||
            .AddGrpcClient<AuthService.AuthServiceClient>(o => o.Address = new Uri("https://_grpc.pass"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        services
 | 
			
		||||
            .AddGrpcClient<PermissionService.PermissionServiceClient>(o => o.Address = new Uri("https://_grpc.pass"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        return services;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static IServiceCollection AddAccountService(this IServiceCollection services)
 | 
			
		||||
    {
 | 
			
		||||
        services.AddGrpcClient<AccountService.AccountServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://pass");
 | 
			
		||||
        });
 | 
			
		||||
        services
 | 
			
		||||
            .AddGrpcClient<AccountService.AccountServiceClient>(o => o.Address = new Uri("https://_grpc.pass") )
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
        services.AddSingleton<AccountClientHelper>();
 | 
			
		||||
 | 
			
		||||
        services.AddGrpcClient<BotAccountReceiverService.BotAccountReceiverServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://pass");
 | 
			
		||||
        });
 | 
			
		||||
        services
 | 
			
		||||
            .AddGrpcClient<BotAccountReceiverService.BotAccountReceiverServiceClient>(o =>
 | 
			
		||||
                o.Address = new Uri("https://_grpc.pass")
 | 
			
		||||
            )
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        services.AddGrpcClient<ActionLogService.ActionLogServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://pass");
 | 
			
		||||
        }); 
 | 
			
		||||
        services.AddGrpcClient<ActionLogService.ActionLogServiceClient>(o => o.Address = new Uri("https://_grpc.pass"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        services.AddGrpcClient<PaymentService.PaymentServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://pass");
 | 
			
		||||
        });
 | 
			
		||||
        services.AddGrpcClient<PaymentService.PaymentServiceClient>(o => o.Address = new Uri("https://_grpc.pass"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        return services;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static IServiceCollection AddDriveService(this IServiceCollection services)
 | 
			
		||||
    {
 | 
			
		||||
        services.AddGrpcClient<FileService.FileServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://drive");
 | 
			
		||||
        });       
 | 
			
		||||
        services.AddGrpcClient<FileService.FileServiceClient>(o => o.Address = new Uri("https://_grpc.drive"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        services.AddGrpcClient<FileReferenceService.FileReferenceServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://drive");
 | 
			
		||||
        });
 | 
			
		||||
        services.AddGrpcClient<FileReferenceService.FileReferenceServiceClient>(o => o.Address = new Uri("https://_grpc.drive"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        return services;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static IServiceCollection AddPublisherService(this IServiceCollection services)
 | 
			
		||||
    {
 | 
			
		||||
        services.AddGrpcClient<PublisherService.PublisherServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://sphere");
 | 
			
		||||
        });
 | 
			
		||||
        services.AddGrpcClient<PublisherService.PublisherServiceClient>(o => o.Address = new Uri("https://_grpc.sphere"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        return services;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static IServiceCollection AddDevelopService(this IServiceCollection services)
 | 
			
		||||
    {
 | 
			
		||||
        services.AddGrpcClient<CustomAppService.CustomAppServiceClient>(o =>
 | 
			
		||||
        {
 | 
			
		||||
            o.Address = new Uri("https://develop");
 | 
			
		||||
        });
 | 
			
		||||
        services.AddGrpcClient<CustomAppService.CustomAppServiceClient>(o => o.Address = new Uri("https://_grpc.develop"))
 | 
			
		||||
            .ConfigurePrimaryHttpMessageHandler(_ => new HttpClientHandler()
 | 
			
		||||
                { ServerCertificateCustomValidationCallback = (_, _, _, _) => true }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
        return services;
 | 
			
		||||
    }
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										86
									
								
								compose.yaml
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								compose.yaml
									
									
									
									
									
								
							@@ -1,86 +0,0 @@
 | 
			
		||||
services:
 | 
			
		||||
  etcd:
 | 
			
		||||
    image: bitnami/etcd:latest
 | 
			
		||||
    ports:
 | 
			
		||||
      - "2379:2379"
 | 
			
		||||
      - "2380:2380"
 | 
			
		||||
    environment:
 | 
			
		||||
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
 | 
			
		||||
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
 | 
			
		||||
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
 | 
			
		||||
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd:2380
 | 
			
		||||
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
 | 
			
		||||
      - ETCD_INITIAL_CLUSTER_STATE=new
 | 
			
		||||
      - ETCD_INITIAL_CLUSTER=etcd=http://etcd:2380
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: ["CMD", "etcdctl", "get", "/health"]
 | 
			
		||||
      interval: 5s
 | 
			
		||||
      timeout: 5s
 | 
			
		||||
      retries: 5
 | 
			
		||||
 | 
			
		||||
  gateway:
 | 
			
		||||
    image: xsheep2010/dyson-gateway:latest
 | 
			
		||||
    ports:
 | 
			
		||||
      - "8000:8080"
 | 
			
		||||
    environment:
 | 
			
		||||
      - ConnectionStrings__Etcd=http://etcd:2379
 | 
			
		||||
      - Etcd__Insecure=true
 | 
			
		||||
      - Service__Name=DysonNetwork.Gateway
 | 
			
		||||
      - Service__Url=http://gateway:8080
 | 
			
		||||
    depends_on:
 | 
			
		||||
      etcd:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
 | 
			
		||||
  drive:
 | 
			
		||||
    image: xsheep2010/dyson-drive:latest
 | 
			
		||||
    ports:
 | 
			
		||||
      - "8001:8080"
 | 
			
		||||
    environment:
 | 
			
		||||
      - ConnectionStrings__Etcd=http://etcd:2379
 | 
			
		||||
      - Etcd__Insecure=true
 | 
			
		||||
      - Service__Name=DysonNetwork.Drive
 | 
			
		||||
      - Service__Url=http://drive:8080
 | 
			
		||||
    depends_on:
 | 
			
		||||
      etcd:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
 | 
			
		||||
  pass:
 | 
			
		||||
    image: xsheep2010/dyson-pass:latest
 | 
			
		||||
    ports:
 | 
			
		||||
      - "8002:8080"
 | 
			
		||||
    environment:
 | 
			
		||||
      - ConnectionStrings__Etcd=http://etcd:2379
 | 
			
		||||
      - Etcd__Insecure=true
 | 
			
		||||
      - Service__Name=DysonNetwork.Pass
 | 
			
		||||
      - Service__Url=http://pass:8080
 | 
			
		||||
    depends_on:
 | 
			
		||||
      etcd:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
 | 
			
		||||
  ring:
 | 
			
		||||
    image: xsheep2010/dyson-ring:latest
 | 
			
		||||
    ports:
 | 
			
		||||
      - "8003:8080"
 | 
			
		||||
    environment:
 | 
			
		||||
      - ConnectionStrings__Etcd=http://etcd:2379
 | 
			
		||||
      - Etcd__Insecure=true
 | 
			
		||||
      - Service__Name=DysonNetwork.Ring
 | 
			
		||||
      - Service__Url=http://ring:8080
 | 
			
		||||
    depends_on:
 | 
			
		||||
      etcd:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
 | 
			
		||||
  sphere:
 | 
			
		||||
    image: xsheep2010/dyson-sphere:latest
 | 
			
		||||
    ports:
 | 
			
		||||
      - "8004:8080"
 | 
			
		||||
    environment:
 | 
			
		||||
      - ConnectionStrings__Etcd=http://etcd:2379
 | 
			
		||||
      - Etcd__Insecure=true
 | 
			
		||||
      - Service__Name=DysonNetwork.Sphere
 | 
			
		||||
      - Service__Url=http://sphere:8080
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "./keys:/app/keys"
 | 
			
		||||
    depends_on:
 | 
			
		||||
      etcd:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
							
								
								
									
										217
									
								
								docker-compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								docker-compose.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,217 @@
 | 
			
		||||
services:
 | 
			
		||||
  aspire-dashboard:
 | 
			
		||||
    image: "mcr.microsoft.com/dotnet/nightly/aspire-dashboard:latest"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "18888"
 | 
			
		||||
      - "18889"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
    restart: "always"
 | 
			
		||||
  cache:
 | 
			
		||||
    image: "docker.io/library/redis:7.4"
 | 
			
		||||
    command:
 | 
			
		||||
      - "-c"
 | 
			
		||||
      - "redis-server --requirepass $$REDIS_PASSWORD"
 | 
			
		||||
    entrypoint:
 | 
			
		||||
      - "/bin/sh"
 | 
			
		||||
    environment:
 | 
			
		||||
      REDIS_PASSWORD: "${CACHE_PASSWORD}"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "6379"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  queue:
 | 
			
		||||
    image: "docker.io/library/nats:2.11"
 | 
			
		||||
    command:
 | 
			
		||||
      - "--user"
 | 
			
		||||
      - "nats"
 | 
			
		||||
      - "--pass"
 | 
			
		||||
      - "${QUEUE_PASSWORD}"
 | 
			
		||||
      - "-js"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "4222"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  ring:
 | 
			
		||||
    image: "${RING_IMAGE}"
 | 
			
		||||
    environment:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${RING_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
      services__pass__grpc__0: "https://pass:5001"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://aspire-dashboard:18889"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
 | 
			
		||||
      OTEL_SERVICE_NAME: "ring"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "./Keys:/app/keys"
 | 
			
		||||
      - "./settings/ring.json:/app/appsettings.json"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${RING_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  pass:
 | 
			
		||||
    image: "${PASS_IMAGE}"
 | 
			
		||||
    environment:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${PASS_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__ring__http__0: "http://ring:${RING_PORT}"
 | 
			
		||||
      services__ring__grpc__0: "https://ring:5001"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://aspire-dashboard:18889"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
 | 
			
		||||
      OTEL_SERVICE_NAME: "pass"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "./Keys:/app/keys"
 | 
			
		||||
      - "./settings/pass.json:/app/appsettings.json"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${PASS_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  drive:
 | 
			
		||||
    image: "${DRIVE_IMAGE}"
 | 
			
		||||
    environment:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${DRIVE_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
      services__pass__grpc__0: "https://pass:5001"
 | 
			
		||||
      services__ring__http__0: "http://ring:${RING_PORT}"
 | 
			
		||||
      services__ring__grpc__0: "https://ring:5001"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://aspire-dashboard:18889"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
 | 
			
		||||
      OTEL_SERVICE_NAME: "drive"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${DRIVE_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "./settings/drive.json:/app/appsettings.json"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  sphere:
 | 
			
		||||
    image: "${SPHERE_IMAGE}"
 | 
			
		||||
    environment:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${SPHERE_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
      services__pass__grpc__0: "https://pass:5001"
 | 
			
		||||
      services__ring__http__0: "http://ring:${RING_PORT}"
 | 
			
		||||
      services__ring__grpc__0: "https://ring:5001"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://aspire-dashboard:18889"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
 | 
			
		||||
      OTEL_SERVICE_NAME: "sphere"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "./Keys:/app/keys"
 | 
			
		||||
      - "./settings/sphere.json:/app/appsettings.json"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${SPHERE_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  develop:
 | 
			
		||||
    image: "${DEVELOP_IMAGE}"
 | 
			
		||||
    environment:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${DEVELOP_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
      services__pass__grpc__0: "https://pass:5001"
 | 
			
		||||
      services__ring__http__0: "http://ring:${RING_PORT}"
 | 
			
		||||
      services__ring__grpc__0: "https://ring:5001"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://aspire-dashboard:18889"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
 | 
			
		||||
      OTEL_SERVICE_NAME: "develop"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${DEVELOP_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  gateway:
 | 
			
		||||
    image: "mcr.microsoft.com/dotnet/nightly/yarp:2.3.0-preview.4"
 | 
			
		||||
    command:
 | 
			
		||||
      - "/app/yarp.dll"
 | 
			
		||||
    entrypoint:
 | 
			
		||||
      - "dotnet"
 | 
			
		||||
    environment:
 | 
			
		||||
      ASPNETCORE_ENVIRONMENT: "Production"
 | 
			
		||||
      services__ring__http__0: "http://ring:${RING_PORT}"
 | 
			
		||||
      services__ring__grpc__0: "https://ring:5001"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route0__MATCH__PATH: "/ws"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route0__CLUSTERID: "cluster_ring"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route1__MATCH__PATH: "/ring/{**catch-all}"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route1__CLUSTERID: "cluster_ring"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route1__TRANSFORMS__0__PathRemovePrefix: "/ring"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route1__TRANSFORMS__1__PathPrefix: "/api"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route2__MATCH__PATH: "/.well-known/openid-configuration"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route2__CLUSTERID: "cluster_pass"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route3__MATCH__PATH: "/.well-known/jwks"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route3__CLUSTERID: "cluster_pass"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route4__MATCH__PATH: "/id/{**catch-all}"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route4__CLUSTERID: "cluster_pass"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route4__TRANSFORMS__0__PathRemovePrefix: "/id"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route4__TRANSFORMS__1__PathPrefix: "/api"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route5__MATCH__PATH: "/api/tus"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route5__CLUSTERID: "cluster_drive"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route6__MATCH__PATH: "/drive/{**catch-all}"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route6__CLUSTERID: "cluster_drive"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route6__TRANSFORMS__0__PathRemovePrefix: "/drive"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route6__TRANSFORMS__1__PathPrefix: "/api"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route7__MATCH__PATH: "/sphere/{**catch-all}"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route7__CLUSTERID: "cluster_sphere"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route7__TRANSFORMS__0__PathRemovePrefix: "/sphere"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route7__TRANSFORMS__1__PathPrefix: "/api"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route8__MATCH__PATH: "/develop/{**catch-all}"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route8__CLUSTERID: "cluster_develop"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route8__TRANSFORMS__0__PathRemovePrefix: "/develop"
 | 
			
		||||
      REVERSEPROXY__ROUTES__route8__TRANSFORMS__1__PathPrefix: "/api"
 | 
			
		||||
      REVERSEPROXY__CLUSTERS__cluster_ring__DESTINATIONS__destination1__ADDRESS: "http://_http.ring"
 | 
			
		||||
      REVERSEPROXY__CLUSTERS__cluster_pass__DESTINATIONS__destination1__ADDRESS: "http://_http.pass"
 | 
			
		||||
      REVERSEPROXY__CLUSTERS__cluster_drive__DESTINATIONS__destination1__ADDRESS: "http://_http.drive"
 | 
			
		||||
      REVERSEPROXY__CLUSTERS__cluster_sphere__DESTINATIONS__destination1__ADDRESS: "http://_http.sphere"
 | 
			
		||||
      REVERSEPROXY__CLUSTERS__cluster_develop__DESTINATIONS__destination1__ADDRESS: "http://_http.develop"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
      services__pass__grpc__0: "https://pass:5001"
 | 
			
		||||
      services__drive__http__0: "http://drive:${DRIVE_PORT}"
 | 
			
		||||
      services__drive__grpc__0: "https://drive:5001"
 | 
			
		||||
      services__sphere__http__0: "http://sphere:${SPHERE_PORT}"
 | 
			
		||||
      services__sphere__grpc__0: "https://sphere:5001"
 | 
			
		||||
      services__develop__http__0: "http://develop:${DEVELOP_PORT}"
 | 
			
		||||
      services__develop__grpc__0: "https://develop:5001"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://aspire-dashboard:18889"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
 | 
			
		||||
      OTEL_SERVICE_NAME: "gateway"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "5000"
 | 
			
		||||
    ports:
 | 
			
		||||
      - "5001:5000"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
networks:
 | 
			
		||||
  aspire:
 | 
			
		||||
    driver: "bridge"
 | 
			
		||||
@@ -40,6 +40,7 @@ services:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${RING_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
      OTEL_EXPORTER_OTLP_ENDPOINT: "http://docker-compose-dashboard:18889"
 | 
			
		||||
@@ -47,6 +48,7 @@ services:
 | 
			
		||||
      OTEL_SERVICE_NAME: "ring"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${RING_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  pass:
 | 
			
		||||
@@ -57,6 +59,7 @@ services:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${PASS_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__ring__http__0: "http://ring:${RING_PORT}"
 | 
			
		||||
@@ -65,6 +68,7 @@ services:
 | 
			
		||||
      OTEL_SERVICE_NAME: "pass"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${PASS_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  drive:
 | 
			
		||||
@@ -75,6 +79,7 @@ services:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${DRIVE_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
@@ -84,6 +89,7 @@ services:
 | 
			
		||||
      OTEL_SERVICE_NAME: "drive"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${DRIVE_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  sphere:
 | 
			
		||||
@@ -94,6 +100,7 @@ services:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${SPHERE_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      ConnectionStrings__queue: "nats://nats:${QUEUE_PASSWORD}@queue:4222"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
@@ -103,6 +110,7 @@ services:
 | 
			
		||||
      OTEL_SERVICE_NAME: "sphere"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${SPHERE_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  develop:
 | 
			
		||||
@@ -113,6 +121,7 @@ services:
 | 
			
		||||
      OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
 | 
			
		||||
      ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
 | 
			
		||||
      HTTP_PORTS: "${DEVELOP_PORT}"
 | 
			
		||||
      HTTPS_PORTS: "5001"
 | 
			
		||||
      ConnectionStrings__cache: "cache:6379,password=${CACHE_PASSWORD}"
 | 
			
		||||
      services__pass__http__0: "http://pass:${PASS_PORT}"
 | 
			
		||||
      services__ring__http__0: "http://ring:${RING_PORT}"
 | 
			
		||||
@@ -121,6 +130,7 @@ services:
 | 
			
		||||
      OTEL_SERVICE_NAME: "develop"
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${DEVELOP_PORT}"
 | 
			
		||||
      - "5001"
 | 
			
		||||
    networks:
 | 
			
		||||
      - "aspire"
 | 
			
		||||
  gateway:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								publish/settings/develop.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								publish/settings/develop.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
{
 | 
			
		||||
  "Debug": true,
 | 
			
		||||
  "BaseUrl": "http://localhost:5071",
 | 
			
		||||
  "SiteUrl": "https://solian.app",
 | 
			
		||||
  "Logging": {
 | 
			
		||||
    "LogLevel": {
 | 
			
		||||
      "Default": "Information",
 | 
			
		||||
      "Microsoft.AspNetCore": "Warning"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_network_dev;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Etcd": {
 | 
			
		||||
    "Insecure": true
 | 
			
		||||
  },
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Develop",
 | 
			
		||||
    "Url": "https://localhost:7192"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										127
									
								
								publish/settings/drive.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								publish/settings/drive.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,127 @@
 | 
			
		||||
{
 | 
			
		||||
  "Debug": true,
 | 
			
		||||
  "BaseUrl": "http://localhost:5090",
 | 
			
		||||
  "GatewayUrl": "http://localhost:5094",
 | 
			
		||||
  "Logging": {
 | 
			
		||||
    "LogLevel": {
 | 
			
		||||
      "Default": "Information",
 | 
			
		||||
      "Microsoft.AspNetCore": "Warning"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_drive;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "Authentication": {
 | 
			
		||||
    "Schemes": {
 | 
			
		||||
      "Bearer": {
 | 
			
		||||
        "ValidAudiences": ["http://localhost:5071", "https://localhost:7099"],
 | 
			
		||||
        "ValidIssuer": "solar-network"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AuthToken": {
 | 
			
		||||
    "PublicKeyPath": "Keys/PublicKey.pem",
 | 
			
		||||
    "PrivateKeyPath": "Keys/PrivateKey.pem"
 | 
			
		||||
  },
 | 
			
		||||
  "OidcProvider": {
 | 
			
		||||
    "IssuerUri": "https://nt.solian.app",
 | 
			
		||||
    "PublicKeyPath": "Keys/PublicKey.pem",
 | 
			
		||||
    "PrivateKeyPath": "Keys/PrivateKey.pem",
 | 
			
		||||
    "AccessTokenLifetime": "01:00:00",
 | 
			
		||||
    "RefreshTokenLifetime": "30.00:00:00",
 | 
			
		||||
    "AuthorizationCodeLifetime": "00:30:00",
 | 
			
		||||
    "RequireHttpsMetadata": true
 | 
			
		||||
  },
 | 
			
		||||
  "Tus": {
 | 
			
		||||
    "StorePath": "Uploads"
 | 
			
		||||
  },
 | 
			
		||||
  "Storage": {
 | 
			
		||||
    "PreferredRemote": "2adceae3-981a-4564-9b8d-5d71a211c873",
 | 
			
		||||
    "Remote": [
 | 
			
		||||
      {
 | 
			
		||||
        "Id": "minio",
 | 
			
		||||
        "Label": "Minio",
 | 
			
		||||
        "Region": "auto",
 | 
			
		||||
        "Bucket": "solar-network-development",
 | 
			
		||||
        "Endpoint": "localhost:9000",
 | 
			
		||||
        "SecretId": "littlesheep",
 | 
			
		||||
        "SecretKey": "password",
 | 
			
		||||
        "EnabledSigned": true,
 | 
			
		||||
        "EnableSsl": false
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "Id": "cloudflare",
 | 
			
		||||
        "Label": "Cloudflare R2",
 | 
			
		||||
        "Region": "auto",
 | 
			
		||||
        "Bucket": "solar-network",
 | 
			
		||||
        "Endpoint": "0a70a6d1b7128888c823359d0008f4e1.r2.cloudflarestorage.com",
 | 
			
		||||
        "SecretId": "8ff5d06c7b1639829d60bc6838a542e6",
 | 
			
		||||
        "SecretKey": "fd58158c5201be16d1872c9209d9cf199421dae3c2f9972f94b2305976580d67",
 | 
			
		||||
        "EnableSigned": true,
 | 
			
		||||
        "EnableSsl": true
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "Captcha": {
 | 
			
		||||
    "Provider": "cloudflare",
 | 
			
		||||
    "ApiKey": "0x4AAAAAABCDUdOujj4feOb_",
 | 
			
		||||
    "ApiSecret": "0x4AAAAAABCDUWABiJQweqlB7tYq-IqIm8U"
 | 
			
		||||
  },
 | 
			
		||||
  "Notifications": {
 | 
			
		||||
    "Topic": "dev.solsynth.solian",
 | 
			
		||||
    "Endpoint": "http://localhost:8088"
 | 
			
		||||
  },
 | 
			
		||||
  "Email": {
 | 
			
		||||
    "Server": "smtp4dev.orb.local",
 | 
			
		||||
    "Port": 25,
 | 
			
		||||
    "UseSsl": false,
 | 
			
		||||
    "Username": "no-reply@mail.solsynth.dev",
 | 
			
		||||
    "Password": "password",
 | 
			
		||||
    "FromAddress": "no-reply@mail.solsynth.dev",
 | 
			
		||||
    "FromName": "Alphabot",
 | 
			
		||||
    "SubjectPrefix": "Solar Network"
 | 
			
		||||
  },
 | 
			
		||||
  "RealtimeChat": {
 | 
			
		||||
    "Endpoint": "https://solar-network-im44o8gq.livekit.cloud",
 | 
			
		||||
    "ApiKey": "APIs6TiL8wj3A4j",
 | 
			
		||||
    "ApiSecret": "SffxRneIwTnlHPtEf3zicmmv3LUEl7xXael4PvWZrEhE"
 | 
			
		||||
  },
 | 
			
		||||
  "GeoIp": {
 | 
			
		||||
    "DatabasePath": "./Keys/GeoLite2-City.mmdb"
 | 
			
		||||
  },
 | 
			
		||||
  "Oidc": {
 | 
			
		||||
    "Google": {
 | 
			
		||||
      "ClientId": "961776991058-963m1qin2vtp8fv693b5fdrab5hmpl89.apps.googleusercontent.com",
 | 
			
		||||
      "ClientSecret": ""
 | 
			
		||||
    },
 | 
			
		||||
    "Apple": {
 | 
			
		||||
      "ClientId": "dev.solsynth.solian",
 | 
			
		||||
      "TeamId": "W7HPZ53V6B",
 | 
			
		||||
      "KeyId": "B668YP4KBG",
 | 
			
		||||
      "PrivateKeyPath": "./Keys/Solarpass.p8"
 | 
			
		||||
    },
 | 
			
		||||
    "Microsoft": {
 | 
			
		||||
      "ClientId": "YOUR_MICROSOFT_CLIENT_ID",
 | 
			
		||||
      "ClientSecret": "YOUR_MICROSOFT_CLIENT_SECRET",
 | 
			
		||||
      "DiscoveryEndpoint": "YOUR_MICROSOFT_DISCOVERY_ENDPOINT"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "Payment": {
 | 
			
		||||
    "Auth": {
 | 
			
		||||
      "Afdian": "<token here>"
 | 
			
		||||
    },
 | 
			
		||||
    "Subscriptions": {
 | 
			
		||||
      "Afdian": {
 | 
			
		||||
        "7d17aae23c9611f0b5705254001e7c00": "solian.stellar.primary",
 | 
			
		||||
        "7dfae4743c9611f0b3a55254001e7c00": "solian.stellar.nova",
 | 
			
		||||
        "141713ee3d6211f085b352540025c377": "solian.stellar.supernova"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Drive",
 | 
			
		||||
    "Url": "https://localhost:7092"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										82
									
								
								publish/settings/pass.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								publish/settings/pass.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
			
		||||
{
 | 
			
		||||
  "Debug": true,
 | 
			
		||||
  "BaseUrl": "http://localhost:5216",
 | 
			
		||||
  "SiteUrl": "https://id.solian.app",
 | 
			
		||||
  "Logging": {
 | 
			
		||||
    "LogLevel": {
 | 
			
		||||
      "Default": "Information",
 | 
			
		||||
      "Microsoft.AspNetCore": "Warning"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_pass;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "Authentication": {
 | 
			
		||||
    "Schemes": {
 | 
			
		||||
      "Bearer": {
 | 
			
		||||
        "ValidAudiences": ["http://localhost:5071", "https://localhost:7099"],
 | 
			
		||||
        "ValidIssuer": "solar-network"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AuthToken": {
 | 
			
		||||
    "CookieDomain": "localhost",
 | 
			
		||||
    "PublicKeyPath": "Keys/PublicKey.pem",
 | 
			
		||||
    "PrivateKeyPath": "Keys/PrivateKey.pem"
 | 
			
		||||
  },
 | 
			
		||||
  "OidcProvider": {
 | 
			
		||||
    "IssuerUri": "https://nt.solian.app",
 | 
			
		||||
    "PublicKeyPath": "Keys/PublicKey.pem",
 | 
			
		||||
    "PrivateKeyPath": "Keys/PrivateKey.pem",
 | 
			
		||||
    "AccessTokenLifetime": "01:00:00",
 | 
			
		||||
    "RefreshTokenLifetime": "30.00:00:00",
 | 
			
		||||
    "AuthorizationCodeLifetime": "00:30:00",
 | 
			
		||||
    "RequireHttpsMetadata": true
 | 
			
		||||
  },
 | 
			
		||||
  "Captcha": {
 | 
			
		||||
    "Provider": "cloudflare",
 | 
			
		||||
    "ApiKey": "0x4AAAAAABCDUdOujj4feOb_",
 | 
			
		||||
    "ApiSecret": "0x4AAAAAABCDUWABiJQweqlB7tYq-IqIm8U"
 | 
			
		||||
  },
 | 
			
		||||
  "GeoIp": {
 | 
			
		||||
    "DatabasePath": "./Keys/GeoLite2-City.mmdb"
 | 
			
		||||
  },
 | 
			
		||||
  "Oidc": {
 | 
			
		||||
    "Google": {
 | 
			
		||||
      "ClientId": "961776991058-963m1qin2vtp8fv693b5fdrab5hmpl89.apps.googleusercontent.com",
 | 
			
		||||
      "ClientSecret": ""
 | 
			
		||||
    },
 | 
			
		||||
    "Apple": {
 | 
			
		||||
      "ClientId": "dev.solsynth.solian",
 | 
			
		||||
      "TeamId": "W7HPZ53V6B",
 | 
			
		||||
      "KeyId": "B668YP4KBG",
 | 
			
		||||
      "PrivateKeyPath": "./Keys/Solarpass.p8"
 | 
			
		||||
    },
 | 
			
		||||
    "Microsoft": {
 | 
			
		||||
      "ClientId": "YOUR_MICROSOFT_CLIENT_ID",
 | 
			
		||||
      "ClientSecret": "YOUR_MICROSOFT_CLIENT_SECRET",
 | 
			
		||||
      "DiscoveryEndpoint": "YOUR_MICROSOFT_DISCOVERY_ENDPOINT"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "Payment": {
 | 
			
		||||
    "Auth": {
 | 
			
		||||
      "Afdian": "<token here>"
 | 
			
		||||
    },
 | 
			
		||||
    "Subscriptions": {
 | 
			
		||||
      "Afdian": {
 | 
			
		||||
        "7d17aae23c9611f0b5705254001e7c00": "solian.stellar.primary",
 | 
			
		||||
        "7dfae4743c9611f0b3a55254001e7c00": "solian.stellar.nova",
 | 
			
		||||
        "141713ee3d6211f085b352540025c377": "solian.stellar.supernova"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Pass",
 | 
			
		||||
    "Url": "https://localhost:7058"
 | 
			
		||||
  },
 | 
			
		||||
  "Etcd": {
 | 
			
		||||
    "Insecure": true
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								publish/settings/ring.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								publish/settings/ring.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
{
 | 
			
		||||
  "Debug": true,
 | 
			
		||||
  "BaseUrl": "http://localhost:5212",
 | 
			
		||||
  "Logging": {
 | 
			
		||||
    "LogLevel": {
 | 
			
		||||
      "Default": "Information",
 | 
			
		||||
      "Microsoft.AspNetCore": "Warning"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_pusher;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "Notifications": {
 | 
			
		||||
    "Push": {
 | 
			
		||||
      "Production": true,
 | 
			
		||||
      "Google": "./Keys/Solian.json",
 | 
			
		||||
      "Apple": {
 | 
			
		||||
        "PrivateKey": "./Keys/Solian.p8",
 | 
			
		||||
        "PrivateKeyId": "4US4KSX4W6",
 | 
			
		||||
        "TeamId": "W7HPZ53V6B",
 | 
			
		||||
        "BundleIdentifier": "dev.solsynth.solian"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "Email": {
 | 
			
		||||
    "Server": "smtp4dev.orb.local",
 | 
			
		||||
    "Port": 25,
 | 
			
		||||
    "UseSsl": false,
 | 
			
		||||
    "Username": "no-reply@mail.solsynth.dev",
 | 
			
		||||
    "Password": "password",
 | 
			
		||||
    "FromAddress": "no-reply@mail.solsynth.dev",
 | 
			
		||||
    "FromName": "Alphabot",
 | 
			
		||||
    "SubjectPrefix": "Solar Network"
 | 
			
		||||
  },
 | 
			
		||||
  "GeoIp": {
 | 
			
		||||
    "DatabasePath": "./Keys/GeoLite2-City.mmdb"
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Ring",
 | 
			
		||||
    "Url": "https://localhost:7259"
 | 
			
		||||
  },
 | 
			
		||||
  "Etcd": {
 | 
			
		||||
    "Insecure": true
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										38
									
								
								publish/settings/sphere.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								publish/settings/sphere.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
{
 | 
			
		||||
  "Debug": true,
 | 
			
		||||
  "BaseUrl": "http://localhost:5071",
 | 
			
		||||
  "SiteUrl": "https://solian.app",
 | 
			
		||||
  "Logging": {
 | 
			
		||||
    "LogLevel": {
 | 
			
		||||
      "Default": "Information",
 | 
			
		||||
      "Microsoft.AspNetCore": "Warning"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_network;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "GeoIp": {
 | 
			
		||||
    "DatabasePath": "./Keys/GeoLite2-City.mmdb"
 | 
			
		||||
  },
 | 
			
		||||
  "RealtimeChat": {
 | 
			
		||||
    "Endpoint": "https://solar-network-im44o8gq.livekit.cloud",
 | 
			
		||||
    "ApiKey": "",
 | 
			
		||||
    "ApiSecret": ""
 | 
			
		||||
  },
 | 
			
		||||
  "Translation": {
 | 
			
		||||
    "Provider": "Tencent",
 | 
			
		||||
    "Region": "ap-hongkong",
 | 
			
		||||
    "ProjectId": "0",
 | 
			
		||||
    "SecretId": "",
 | 
			
		||||
    "SecretKey": ""
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Etcd": {
 | 
			
		||||
    "Insecure": true
 | 
			
		||||
  },
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Sphere",
 | 
			
		||||
    "Url": "https://localhost:7099"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -10,12 +10,9 @@
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=localhost;Port=5432;Database=dyson_network_dev;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_network_dev;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": [
 | 
			
		||||
    "127.0.0.1",
 | 
			
		||||
    "::1"
 | 
			
		||||
  ],
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Etcd": {
 | 
			
		||||
    "Insecure": true
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -10,22 +10,19 @@
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=localhost;Port=5432;Database=dyson_drive;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_drive;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "Authentication": {
 | 
			
		||||
    "Schemes": {
 | 
			
		||||
      "Bearer": {
 | 
			
		||||
        "ValidAudiences": [
 | 
			
		||||
          "http://localhost:5071",
 | 
			
		||||
          "https://localhost:7099"
 | 
			
		||||
        ],
 | 
			
		||||
        "ValidAudiences": ["http://localhost:5071", "https://localhost:7099"],
 | 
			
		||||
        "ValidIssuer": "solar-network"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AuthToken": {
 | 
			
		||||
    "PublicKeyPath": "Keys/PublicKey.pem",
 | 
			
		||||
    "PrivateKeyPath": "Keys/PrivateKey.pem"
 | 
			
		||||
    "PublicKeyPath": "app/keys/PublicKey.pem",
 | 
			
		||||
    "PrivateKeyPath": "app/keys/PrivateKey.pem"
 | 
			
		||||
  },
 | 
			
		||||
  "OidcProvider": {
 | 
			
		||||
    "IssuerUri": "https://nt.solian.app",
 | 
			
		||||
@@ -122,10 +119,7 @@
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": [
 | 
			
		||||
    "127.0.0.1",
 | 
			
		||||
    "::1"
 | 
			
		||||
  ],
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Drive",
 | 
			
		||||
    "Url": "https://localhost:7092"
 | 
			
		||||
 
 | 
			
		||||
@@ -10,15 +10,12 @@
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=localhost;Port=5432;Database=dyson_pass;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_pass;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "Authentication": {
 | 
			
		||||
    "Schemes": {
 | 
			
		||||
      "Bearer": {
 | 
			
		||||
        "ValidAudiences": [
 | 
			
		||||
          "http://localhost:5071",
 | 
			
		||||
          "https://localhost:7099"
 | 
			
		||||
        ],
 | 
			
		||||
        "ValidAudiences": ["http://localhost:5071", "https://localhost:7099"],
 | 
			
		||||
        "ValidIssuer": "solar-network"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -74,10 +71,7 @@
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": [
 | 
			
		||||
    "127.0.0.1",
 | 
			
		||||
    "::1"
 | 
			
		||||
  ],
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Pass",
 | 
			
		||||
    "Url": "https://localhost:7058"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,12 +9,12 @@
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=localhost;Port=5432;Database=dyson_pusher;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_pusher;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "Notifications": {
 | 
			
		||||
    "Push": {
 | 
			
		||||
      "Production": true,
 | 
			
		||||
      "Google": "./Keys/Solian.json",
 | 
			
		||||
      "Google": "/app/keys/Solian.json",
 | 
			
		||||
      "Apple": {
 | 
			
		||||
        "PrivateKey": "./Keys/Solian.p8",
 | 
			
		||||
        "PrivateKeyId": "4US4KSX4W6",
 | 
			
		||||
@@ -34,12 +34,9 @@
 | 
			
		||||
    "SubjectPrefix": "Solar Network"
 | 
			
		||||
  },
 | 
			
		||||
  "GeoIp": {
 | 
			
		||||
    "DatabasePath": "./Keys/GeoLite2-City.mmdb"
 | 
			
		||||
    "DatabasePath": "/app/keys/GeoLite2-City.mmdb"
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": [
 | 
			
		||||
    "127.0.0.1",
 | 
			
		||||
    "::1"
 | 
			
		||||
  ],
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Service": {
 | 
			
		||||
    "Name": "DysonNetwork.Ring",
 | 
			
		||||
    "Url": "https://localhost:7259"
 | 
			
		||||
 
 | 
			
		||||
@@ -10,10 +10,10 @@
 | 
			
		||||
  },
 | 
			
		||||
  "AllowedHosts": "*",
 | 
			
		||||
  "ConnectionStrings": {
 | 
			
		||||
    "App": "Host=localhost;Port=5432;Database=dyson_network;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
    "App": "Host=host.docker.internal;Port=5432;Database=dyson_network;Username=postgres;Password=postgres;Include Error Detail=True;Maximum Pool Size=20;Connection Idle Lifetime=60"
 | 
			
		||||
  },
 | 
			
		||||
  "GeoIp": {
 | 
			
		||||
    "DatabasePath": "./Keys/GeoLite2-City.mmdb"
 | 
			
		||||
    "DatabasePath": "/app/keys/GeoLite2-City.mmdb"
 | 
			
		||||
  },
 | 
			
		||||
  "RealtimeChat": {
 | 
			
		||||
    "Endpoint": "https://solar-network-im44o8gq.livekit.cloud",
 | 
			
		||||
@@ -27,10 +27,7 @@
 | 
			
		||||
    "SecretId": "",
 | 
			
		||||
    "SecretKey": ""
 | 
			
		||||
  },
 | 
			
		||||
  "KnownProxies": [
 | 
			
		||||
    "127.0.0.1",
 | 
			
		||||
    "::1"
 | 
			
		||||
  ],
 | 
			
		||||
  "KnownProxies": ["127.0.0.1", "::1"],
 | 
			
		||||
  "Etcd": {
 | 
			
		||||
    "Insecure": true
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user