Compare commits
5 Commits
f17c88547b
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
313f9fec43
|
|||
|
337ce15b37
|
|||
|
37f06fe98a
|
|||
|
79fbbd1862
|
|||
|
e8571492f0
|
@@ -82,7 +82,7 @@ func (self *UserHandler) Other(c *gin.Context) {
|
|||||||
} else if userIdFromUrl != userIdFromHeader {
|
} else if userIdFromUrl != userIdFromHeader {
|
||||||
UserInfoPayload = &service_user.UserInfoPayload{
|
UserInfoPayload = &service_user.UserInfoPayload{
|
||||||
Context: c,
|
Context: c,
|
||||||
UserId: userIdFromHeader,
|
UserId: userIdFromUrl,
|
||||||
IsOther: true,
|
IsOther: true,
|
||||||
Data: nil,
|
Data: nil,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,11 +26,15 @@ func Init() {
|
|||||||
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||||||
viper.AutomaticEnv()
|
viper.AutomaticEnv()
|
||||||
|
|
||||||
conf := &config{}
|
|
||||||
if err := viper.ReadInConfig(); err != nil {
|
if err := viper.ReadInConfig(); err != nil {
|
||||||
// Dont generate config when using dev mode
|
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
|
||||||
log.Fatalln("[Config] Can't read config!")
|
log.Println("[Config] No config file found, using Env vars only.")
|
||||||
|
} else {
|
||||||
|
log.Fatalf("[Config] Fatal error reading config file: %s \n", err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
conf := &config{}
|
||||||
if err := viper.Unmarshal(conf); err != nil {
|
if err := viper.Unmarshal(conf); err != nil {
|
||||||
log.Fatalln("[Condig] Can't unmarshal config!")
|
log.Fatalln("[Condig] Can't unmarshal config!")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
test.nix.org.cn {
|
test.nix.org.cn {
|
||||||
tls /etc/caddy/cert.crt /etc/caddy/key.pem
|
tls /etc/caddy/cert.crt /etc/caddy/cert.key
|
||||||
|
|
||||||
handle /app/api/* {
|
handle /app/api/* {
|
||||||
reverse_proxy backend:8000
|
reverse_proxy cms-server:8000
|
||||||
}
|
}
|
||||||
|
|
||||||
handle /app/* {
|
handle /app/* {
|
||||||
reverse_proxy client-cms:3000
|
reverse_proxy cms-client:3000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: docker.io/postgres:18-alpine
|
image: docker.io/postgres:18-alpine
|
||||||
container_name: cms-db
|
container_name: postgres
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
@@ -18,7 +18,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: docker.io/redis:8-alpine
|
image: docker.io/redis:8-alpine
|
||||||
container_name: cms-redis
|
container_name: redis
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/redis:/data
|
- ./data/redis:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -29,7 +29,7 @@ services:
|
|||||||
|
|
||||||
lgtm:
|
lgtm:
|
||||||
image: grafana/otel-lgtm:latest
|
image: grafana/otel-lgtm:latest
|
||||||
container_name: lgtm-stack
|
container_name: lgtm
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
- "4317:4317" # OTLP gRPC
|
- "4317:4317" # OTLP gRPC
|
||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
|
|
||||||
caddy:
|
caddy:
|
||||||
image: docker.io/caddy:latest
|
image: docker.io/caddy:latest
|
||||||
container_name: caddy-proxy
|
container_name: caddy
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
|
|||||||
120
devenv.lock
120
devenv.lock
@@ -3,10 +3,11 @@
|
|||||||
"devenv": {
|
"devenv": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "src/modules",
|
"dir": "src/modules",
|
||||||
"lastModified": 1766087669,
|
"lastModified": 1772840537,
|
||||||
|
"narHash": "sha256-Axb80AW0e6Xd/UmtjFnTTPOqxzkI4tzGa8ykk8nKQoo=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "devenv",
|
"repo": "devenv",
|
||||||
"rev": "c03eed645ea94da7afbee29da76436b7ce33a5cb",
|
"rev": "b6208f517a7359d6046c89b5ac0de20cfca3b4c0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -19,25 +20,11 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765121682,
|
"lastModified": 1761588595,
|
||||||
|
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3",
|
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat_2": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765121682,
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -51,10 +38,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1701680307,
|
||||||
|
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -67,37 +55,17 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"gitignore": "gitignore",
|
"gitignore": "gitignore",
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765911976,
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "git-hooks.nix",
|
|
||||||
"rev": "b68b780b69702a090c8bb1b973bab13756cc7a27",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "git-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"git-hooks_2": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat_2",
|
|
||||||
"gitignore": "gitignore_2",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"go-overlay",
|
"go-overlay",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765911976,
|
"lastModified": 1765016596,
|
||||||
|
"narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "b68b780b69702a090c8bb1b973bab13756cc7a27",
|
"rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -107,26 +75,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"git-hooks",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1762808025,
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore_2": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"go-overlay",
|
"go-overlay",
|
||||||
@@ -135,10 +83,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762808025,
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "gitignore.nix",
|
"repo": "gitignore.nix",
|
||||||
"rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c",
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -150,16 +99,17 @@
|
|||||||
"go-overlay": {
|
"go-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"git-hooks": "git-hooks_2",
|
"git-hooks": "git-hooks",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766126609,
|
"lastModified": 1772865556,
|
||||||
|
"narHash": "sha256-IIYNduS/rTlLzDxDyHqXd8JHl9F7UDf3EiEdtwupop4=",
|
||||||
"owner": "purpleclay",
|
"owner": "purpleclay",
|
||||||
"repo": "go-overlay",
|
"repo": "go-overlay",
|
||||||
"rev": "959f32b00fd3d462d4d570bd118b4be03c3f2019",
|
"rev": "8e54102a2301c8003f7a15f2536c6530d3035c4e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -169,11 +119,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-src": "nixpkgs-src"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1764580874,
|
"lastModified": 1772749504,
|
||||||
|
"narHash": "sha256-eqtQIz0alxkQPym+Zh/33gdDjkkch9o6eHnMPnXFXN0=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "devenv-nixpkgs",
|
"repo": "devenv-nixpkgs",
|
||||||
"rev": "dcf61356c3ab25f1362b4a4428a6d871e84f1d1d",
|
"rev": "08543693199362c1fddb8f52126030d0d374ba2e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -183,20 +137,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772173633,
|
||||||
|
"narHash": "sha256-MOH58F4AIbCkh6qlQcwMycyk5SWvsqnS/TCfnqDlpj4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c0f3d81a7ddbc2b1332be0d8481a672b4f6004d6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devenv": "devenv",
|
"devenv": "devenv",
|
||||||
"git-hooks": "git-hooks",
|
|
||||||
"go-overlay": "go-overlay",
|
"go-overlay": "go-overlay",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs"
|
||||||
"pre-commit-hooks": [
|
|
||||||
"git-hooks"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default",
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
languages = {
|
languages = {
|
||||||
go = {
|
go = {
|
||||||
enable = true;
|
enable = true;
|
||||||
version = "1.25.5";
|
version = "1.26.0";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,22 @@ func Init(ctx context.Context) func(context.Context) error {
|
|||||||
slog.Error("[OTEL] Failed to create resource", "err", err)
|
slog.Error("[OTEL] Failed to create resource", "err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
traceExporter, _ := otlptracegrpc.New(ctx,
|
retryConfig := otlptracegrpc.RetryConfig{
|
||||||
|
Enabled: true,
|
||||||
|
InitialInterval: 1 * time.Second,
|
||||||
|
MaxInterval: 10 * time.Second,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trace Exporter
|
||||||
|
traceExporter, err := otlptracegrpc.New(ctx,
|
||||||
otlptracegrpc.WithEndpoint(endpoint),
|
otlptracegrpc.WithEndpoint(endpoint),
|
||||||
otlptracegrpc.WithInsecure(),
|
otlptracegrpc.WithInsecure(),
|
||||||
|
otlptracegrpc.WithRetry(retryConfig),
|
||||||
)
|
)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("[OTEL] Failed to create trace exporter", "err", err)
|
||||||
|
}
|
||||||
|
|
||||||
tp := sdktrace.NewTracerProvider(
|
tp := sdktrace.NewTracerProvider(
|
||||||
sdktrace.WithBatcher(traceExporter),
|
sdktrace.WithBatcher(traceExporter),
|
||||||
sdktrace.WithResource(res),
|
sdktrace.WithResource(res),
|
||||||
@@ -45,10 +57,16 @@ func Init(ctx context.Context) func(context.Context) error {
|
|||||||
)
|
)
|
||||||
otel.SetTracerProvider(tp)
|
otel.SetTracerProvider(tp)
|
||||||
|
|
||||||
metricExporter, _ := otlpmetricgrpc.New(ctx,
|
// Metric Exporter
|
||||||
|
metricExporter, err := otlpmetricgrpc.New(ctx,
|
||||||
otlpmetricgrpc.WithEndpoint(endpoint),
|
otlpmetricgrpc.WithEndpoint(endpoint),
|
||||||
otlpmetricgrpc.WithInsecure(),
|
otlpmetricgrpc.WithInsecure(),
|
||||||
|
otlpmetricgrpc.WithRetry(otlpmetricgrpc.RetryConfig(retryConfig)),
|
||||||
)
|
)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("[OTEL] Failed to create metric exporter", "err", err)
|
||||||
|
}
|
||||||
|
|
||||||
mp := sdkmetric.NewMeterProvider(
|
mp := sdkmetric.NewMeterProvider(
|
||||||
sdkmetric.WithResource(res),
|
sdkmetric.WithResource(res),
|
||||||
sdkmetric.WithReader(sdkmetric.NewPeriodicReader(metricExporter,
|
sdkmetric.WithReader(sdkmetric.NewPeriodicReader(metricExporter,
|
||||||
@@ -56,10 +74,16 @@ func Init(ctx context.Context) func(context.Context) error {
|
|||||||
)
|
)
|
||||||
otel.SetMeterProvider(mp)
|
otel.SetMeterProvider(mp)
|
||||||
|
|
||||||
logExporter, _ := otlploggrpc.New(ctx,
|
// Log Exporter
|
||||||
|
logExporter, err := otlploggrpc.New(ctx,
|
||||||
otlploggrpc.WithEndpoint(endpoint),
|
otlploggrpc.WithEndpoint(endpoint),
|
||||||
otlploggrpc.WithInsecure(),
|
otlploggrpc.WithInsecure(),
|
||||||
|
otlploggrpc.WithRetry(otlploggrpc.RetryConfig(retryConfig)),
|
||||||
)
|
)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("[OTEL] Failed to create log exporter", "err", err)
|
||||||
|
}
|
||||||
|
|
||||||
lp := sdklog.NewLoggerProvider(
|
lp := sdklog.NewLoggerProvider(
|
||||||
sdklog.WithResource(res),
|
sdklog.WithResource(res),
|
||||||
sdklog.WithProcessor(sdklog.NewBatchProcessor(logExporter)),
|
sdklog.WithProcessor(sdklog.NewBatchProcessor(logExporter)),
|
||||||
|
|||||||
Reference in New Issue
Block a user