mirror of
https://github.com/makayabou/asg-server.git
synced 2026-05-02 17:43:36 +02:00
89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
package config
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/android-sms-gateway/server/internal/sms-gateway/handlers"
|
|
"github.com/android-sms-gateway/server/internal/sms-gateway/modules/auth"
|
|
"github.com/android-sms-gateway/server/internal/sms-gateway/modules/devices"
|
|
"github.com/android-sms-gateway/server/internal/sms-gateway/modules/messages"
|
|
"github.com/android-sms-gateway/server/internal/sms-gateway/modules/push"
|
|
"github.com/capcom6/go-infra-fx/config"
|
|
"github.com/capcom6/go-infra-fx/db"
|
|
"github.com/capcom6/go-infra-fx/http"
|
|
"go.uber.org/fx"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var Module = fx.Module(
|
|
"appconfig",
|
|
fx.Provide(
|
|
func(log *zap.Logger) Config {
|
|
if err := config.LoadConfig(&defaultConfig); err != nil {
|
|
log.Error("Error loading config", zap.Error(err))
|
|
}
|
|
|
|
return defaultConfig
|
|
},
|
|
),
|
|
fx.Provide(func(cfg Config) http.Config {
|
|
return http.Config{
|
|
Listen: cfg.HTTP.Listen,
|
|
Proxies: cfg.HTTP.Proxies,
|
|
}
|
|
}),
|
|
fx.Provide(func(cfg Config) db.Config {
|
|
return db.Config{
|
|
Dialect: db.Dialect(cfg.Database.Dialect),
|
|
Host: cfg.Database.Host,
|
|
Port: cfg.Database.Port,
|
|
User: cfg.Database.User,
|
|
Password: cfg.Database.Password,
|
|
Database: cfg.Database.Database,
|
|
Timezone: cfg.Database.Timezone,
|
|
Debug: cfg.Database.Debug,
|
|
}
|
|
}),
|
|
fx.Provide(func(cfg Config) push.Config {
|
|
mode := push.ModeFCM
|
|
if cfg.Gateway.Mode == "private" {
|
|
mode = push.ModeUpstream
|
|
}
|
|
|
|
return push.Config{
|
|
Mode: mode,
|
|
ClientOptions: map[string]string{
|
|
"credentials": cfg.FCM.CredentialsJSON,
|
|
},
|
|
Debounce: time.Duration(cfg.FCM.DebounceSeconds) * time.Second,
|
|
Timeout: time.Duration(cfg.FCM.TimeoutSeconds) * time.Second,
|
|
}
|
|
}),
|
|
fx.Provide(func(cfg Config) messages.HashingTaskConfig {
|
|
return messages.HashingTaskConfig{
|
|
Interval: time.Duration(cfg.Tasks.Hashing.IntervalSeconds) * time.Second,
|
|
}
|
|
}),
|
|
fx.Provide(func(cfg Config) auth.Config {
|
|
return auth.Config{
|
|
Mode: auth.Mode(cfg.Gateway.Mode),
|
|
PrivateToken: cfg.Gateway.PrivateToken,
|
|
}
|
|
}),
|
|
fx.Provide(func(cfg Config) handlers.Config {
|
|
return handlers.Config{
|
|
GatewayMode: handlers.GatewayMode(cfg.Gateway.Mode),
|
|
}
|
|
}),
|
|
fx.Provide(func(cfg Config) messages.Config {
|
|
return messages.Config{
|
|
ProcessedLifetime: 30 * 24 * time.Hour, //TODO: make it configurable
|
|
}
|
|
}),
|
|
fx.Provide(func(cfg Config) devices.Config {
|
|
return devices.Config{
|
|
UnusedLifetime: 365 * 24 * time.Hour, //TODO: make it configurable
|
|
}
|
|
}),
|
|
)
|