diff options
| author | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2025-10-04 20:32:05 +0530 |
|---|---|---|
| committer | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2025-10-04 20:32:05 +0530 |
| commit | b961c14a692e19cf7f46223eca49fa4129a7f760 (patch) | |
| tree | 718e352d038fd7817cd4a87618dad20869debdec /main.go | |
| parent | Switched to go.sudomsg.com/kit (diff) | |
| download | gopkgserver-0.1.1.tar gopkgserver-0.1.1.tar.gz gopkgserver-0.1.1.tar.bz2 gopkgserver-0.1.1.tar.lz gopkgserver-0.1.1.tar.xz gopkgserver-0.1.1.tar.zst gopkgserver-0.1.1.zip | |
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 55 |
1 files changed, 47 insertions, 8 deletions
@@ -3,8 +3,9 @@ package gopkgserver import ( "context" _ "embed" - "flag" "fmt" + "io/fs" + "strconv" "log/slog" "net/http" @@ -15,18 +16,48 @@ import ( httpServer "go.sudomsg.com/kit/http" "go.sudomsg.com/kit/logging" logHandler "go.sudomsg.com/kit/logging/http" + "go.sudomsg.com/kit/runner" ) +type ServerConfig struct { + Network httpServer.NetType `toml:"network"` + Address string `toml:"address"` + Mode string `toml:"mode"` +} + +func RawServerConfig(rawCfg []ServerConfig) ([]httpServer.ServerConfig, error) { + cfg := make([]httpServer.ServerConfig, 0, len(rawCfg)) + for _, srv := range rawCfg { + var mode uint64 + if srv.Mode != "" { + var err error + mode, err = strconv.ParseUint(srv.Mode, 8, 32) + if err != nil { + return nil, fmt.Errorf("failed to convert mode %s: %w", srv.Mode, err) + } + } + cfg = append(cfg, httpServer.ServerConfig{ + Network: srv.Network, + Address: srv.Address, + Mode: fs.FileMode(mode), + }) + } + return cfg, nil +} + type Config struct { - Server []httpServer.ServerConfig `toml:"server"` - Logging logging.LogConfig `toml:"logging"` - Repos map[string]repo.Repo `toml:"repo"` + Server []ServerConfig `toml:"server"` + Logging logging.LogConfig `toml:"logging"` + Repos map[string]repo.Repo `toml:"repo"` } -func Run(ctx context.Context, fs *flag.FlagSet, args []string) error { +func Run(ctx context.Context, fs *runner.CommandSet, args []string) error { var cfgFile string fs.StringVar(&cfgFile, "config", "config.toml", "Path to config file") - fs.Parse(args) + + if err := fs.Parse(args); err != nil{ + return err + } cfg, err := LoadConfig(cfgFile) if err != nil { @@ -47,9 +78,17 @@ func Run(ctx context.Context, fs *flag.FlagSet, args []string) error { mux.Handle("GET /robots.txt", Robot()) mux.Handle("GET /", h) - handler := logHandler.New(mux, nil) + handler := logHandler.New(mux) - lns, err := httpServer.OpenListeners(ctx, cfg.Server) + srvCfg, err := RawServerConfig(cfg.Server) + if err != nil { + return err + } + + lns, err := httpServer.OpenListeners(ctx, srvCfg) + if err != nil { + return err + } defer lns.CloseAll() return httpServer.RunHTTPServers(ctx, lns, handler) |
