88 lines
2.1 KiB
Go
88 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"os"
|
|
"strconv"
|
|
|
|
_ "github.com/joho/godotenv/autoload"
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
var (
|
|
httpAddr string
|
|
logLevel string
|
|
// obsSignedUrlExpiry time.Duration
|
|
zapLogLevel zapcore.Level
|
|
postFlagParse = []func(){}
|
|
)
|
|
|
|
func init() {
|
|
var err error
|
|
_ = err
|
|
|
|
// app
|
|
flag.StringVar(&httpAddr, "addr", os.Getenv("HTTP_ADDR"), "Server address")
|
|
|
|
// log
|
|
flag.StringVar(&logLevel, "log-level", os.Getenv("LOG_LEVEL"), "Log level")
|
|
qpostFlagParse(func() {
|
|
err := zapLogLevel.UnmarshalText([]byte(logLevel))
|
|
if err != nil {
|
|
zapLogLevel = zapcore.InfoLevel
|
|
}
|
|
})
|
|
|
|
// OBS
|
|
flag.StringVar(&defaultObsOpts.Endpoint, "obs-endpoint", os.Getenv("OBS_ENDPOINT"), "OBS host")
|
|
flag.StringVar(&defaultObsOpts.Region, "obs-region", os.Getenv("OBS_REGION"), "OBS region")
|
|
flag.BoolVar(&defaultObsOpts.Secure, "obs-secure", ok1(strconv.ParseBool(os.Getenv("OBS_SECURE"))), "OBS secure transport")
|
|
flag.StringVar(&defaultObsOpts.BucketName, "obs-bucket", os.Getenv("OBS_BUCKET_NAME"), "OBS bucket name")
|
|
|
|
flag.StringVar(&defaultObsOpts.HostRedirect, "obs-host-redirect", os.Getenv("OBS_HOST_REDIRECT"), "OBS host redirect")
|
|
|
|
// obsSignedUrlExpiry, err = time.ParseDuration(os.Getenv("OBS_SIGNED_URL_EXPIRY"))
|
|
// if err != nil {
|
|
// // max signed value
|
|
// obsSignedUrlExpiry = time.Duration(^uint64(0) / 2)
|
|
// }
|
|
// flag.DurationVar(&obsSignedUrlExpiry, "obs-signed-url-expiry", obsSignedUrlExpiry, "OBS ")
|
|
}
|
|
|
|
func qpostFlagParse(f func()) {
|
|
postFlagParse = append(postFlagParse, f)
|
|
}
|
|
func qpostFlagParseInvoke() {
|
|
for _, f := range postFlagParse {
|
|
f()
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
qpostFlagParseInvoke()
|
|
|
|
zcfg := zap.NewProductionConfig()
|
|
zcfg.Level = zap.NewAtomicLevelAt(zapLogLevel)
|
|
|
|
logger := unwrap1(zcfg.Build())
|
|
defer logger.Sync()
|
|
|
|
sug := logger.Named("main").Sugar()
|
|
sug.Infow("starting",
|
|
"log_level", zapLogLevel,
|
|
"obs_endpoint", defaultObsOpts.Endpoint,
|
|
"obs_host_redirect", defaultObsOpts.HostRedirect,
|
|
)
|
|
|
|
client := unwrap1(newObsClient(defaultObsOpts))
|
|
srv.Init(serverOptions{
|
|
Addr: httpAddr,
|
|
Logger: logger.Named("server"),
|
|
OBS: &defaultObsOpts,
|
|
S3: client,
|
|
})
|
|
|
|
srv.Run()
|
|
}
|