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 | |
| parent | Switched to go.sudomsg.com/kit (diff) | |
| download | gopkgserver-b961c14a692e19cf7f46223eca49fa4129a7f760.tar gopkgserver-b961c14a692e19cf7f46223eca49fa4129a7f760.tar.gz gopkgserver-b961c14a692e19cf7f46223eca49fa4129a7f760.tar.bz2 gopkgserver-b961c14a692e19cf7f46223eca49fa4129a7f760.tar.lz gopkgserver-b961c14a692e19cf7f46223eca49fa4129a7f760.tar.xz gopkgserver-b961c14a692e19cf7f46223eca49fa4129a7f760.tar.zst gopkgserver-b961c14a692e19cf7f46223eca49fa4129a7f760.zip | |
| -rw-r--r-- | cmd/gopkgserver/main.go | 6 | ||||
| -rw-r--r-- | go.mod | 6 | ||||
| -rw-r--r-- | go.sum | 6 | ||||
| -rw-r--r-- | main.go | 55 |
4 files changed, 61 insertions, 12 deletions
diff --git a/cmd/gopkgserver/main.go b/cmd/gopkgserver/main.go index 7248136..a7da65c 100644 --- a/cmd/gopkgserver/main.go +++ b/cmd/gopkgserver/main.go @@ -6,5 +6,9 @@ import ( ) func main() { - runner.Load(gopkgserver.Run) + runner.Run(runner.Command{ + Name: "gopkgsever", + Description: "Go Package Vanity Service", + Run: gopkgserver.Run, + }) } @@ -1,10 +1,10 @@ module go.sudomsg.com/gopkgserver -go 1.24.1 +go 1.25.0 require ( github.com/pelletier/go-toml/v2 v2.2.4 - go.sudomsg.com/kit v0.1.1 + go.sudomsg.com/kit v0.3.0 ) -require golang.org/x/sync v0.16.0 // indirect +require golang.org/x/sync v0.17.0 // indirect @@ -2,5 +2,11 @@ github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0 github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= go.sudomsg.com/kit v0.1.1 h1:mrwLCE+1jnjaA5aj0AE6cZ9YdRgg/GDsR/OX/5faJ14= go.sudomsg.com/kit v0.1.1/go.mod h1:rFO8lXUV2Ij1deDS0OrfdZ4xpH5akf0jHtVwC0N8fBQ= +go.sudomsg.com/kit v0.2.1 h1:Bw8l8CRHdvdAL1eaQOni11h6ebvC1KvqCF+/kGDxFfU= +go.sudomsg.com/kit v0.2.1/go.mod h1:rFO8lXUV2Ij1deDS0OrfdZ4xpH5akf0jHtVwC0N8fBQ= +go.sudomsg.com/kit v0.3.0 h1:qEpD/W5W6K2FEbmXymx9rqSZvVtzuy4BU4jhXHFRyb8= +go.sudomsg.com/kit v0.3.0/go.mod h1:UyVq5+uDYshqFqY7zLkVORJj0Uewrujw2xaPjHGoCyM= golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= @@ -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) |
