diff options
author | Runxi Yu <me@runxiyu.org> | 2025-08-13 11:22:58 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-08-13 19:48:32 +0800 |
commit | 6cda7644e983c5c2735bb73a5594a2659e87659a (patch) | |
tree | e6a0c815d0dd5014e628738f431123039db5d882 | |
parent | Remove the mess (diff) | |
download | forge-6cda7644e983c5c2735bb73a5594a2659e87659a.tar.gz forge-6cda7644e983c5c2735bb73a5594a2659e87659a.tar.zst forge-6cda7644e983c5c2735bb73a5594a2659e87659a.zip |
Config placement adjustments
-rw-r--r-- | forged/internal/config/config.go | 50 | ||||
-rw-r--r-- | forged/internal/database/database.go | 5 | ||||
-rw-r--r-- | forged/internal/hooki/hooki.go | 21 | ||||
-rw-r--r-- | forged/internal/server/server.go | 32 | ||||
-rw-r--r-- | forged/internal/store/store.go | 3 |
5 files changed, 111 insertions, 0 deletions
diff --git a/forged/internal/config/config.go b/forged/internal/config/config.go new file mode 100644 index 0000000..d3eb8e1 --- /dev/null +++ b/forged/internal/config/config.go @@ -0,0 +1,50 @@ +package config + +import ( + "go.lindenii.runxiyu.org/forge/forged/internal/database" + "go.lindenii.runxiyu.org/forge/forged/internal/irc" +) + +type Config struct { + HTTP struct { + Net string `scfg:"net"` + Addr string `scfg:"addr"` + CookieExpiry int `scfg:"cookie_expiry"` + Root string `scfg:"root"` + ReadTimeout uint32 `scfg:"read_timeout"` + WriteTimeout uint32 `scfg:"write_timeout"` + IdleTimeout uint32 `scfg:"idle_timeout"` + ReverseProxy bool `scfg:"reverse_proxy"` + } `scfg:"http"` + Hooks struct { + Socket string `scfg:"socket"` + Execs string `scfg:"execs"` + } `scfg:"hooks"` + LMTP struct { + Socket string `scfg:"socket"` + Domain string `scfg:"domain"` + MaxSize int64 `scfg:"max_size"` + WriteTimeout uint32 `scfg:"write_timeout"` + ReadTimeout uint32 `scfg:"read_timeout"` + } `scfg:"lmtp"` + Git struct { + RepoDir string `scfg:"repo_dir"` + Socket string `scfg:"socket"` + DaemonPath string `scfg:"daemon_path"` + } `scfg:"git"` + SSH struct { + Net string `scfg:"net"` + Addr string `scfg:"addr"` + Key string `scfg:"key"` + Root string `scfg:"root"` + } `scfg:"ssh"` + IRC irc.Config `scfg:"irc"` + General struct { + Title string `scfg:"title"` + } `scfg:"general"` + DB database.Config `scfg:"db"` + Pprof struct { + Net string `scfg:"net"` + Addr string `scfg:"addr"` + } `scfg:"pprof"` +} diff --git a/forged/internal/database/database.go b/forged/internal/database/database.go index b995adc..6674fe6 100644 --- a/forged/internal/database/database.go +++ b/forged/internal/database/database.go @@ -23,3 +23,8 @@ func Open(connString string) (Database, error) { db, err := pgxpool.New(context.Background(), connString) return Database{db}, err } + +type Config struct { + Type string `scfg:"type"` + Conn string `scfg:"conn"` +} diff --git a/forged/internal/hooki/hooki.go b/forged/internal/hooki/hooki.go new file mode 100644 index 0000000..ae26846 --- /dev/null +++ b/forged/internal/hooki/hooki.go @@ -0,0 +1,21 @@ +package hooki + +import ( + "go.lindenii.runxiyu.org/forge/forged/internal/cmap" + "github.com/gliderlabs/ssh" +) + +type Pool cmap.Map[string, hookinfo] + +type hookinfo struct { + session ssh.Session + pubkey string + directAccess bool + repoPath string + userID int + userType string + repoID int + groupPath []string + repoName string + contribReq string +} diff --git a/forged/internal/server/server.go b/forged/internal/server/server.go new file mode 100644 index 0000000..ec875f1 --- /dev/null +++ b/forged/internal/server/server.go @@ -0,0 +1,32 @@ +package server + +import ( + "context" + "fmt" + "html/template" + + "go.lindenii.runxiyu.org/forge/forged/internal/config" + "go.lindenii.runxiyu.org/forge/forged/internal/database" + "go.lindenii.runxiyu.org/forge/forged/internal/hooki" + "go.lindenii.runxiyu.org/forge/forged/internal/store" +) + +type Server struct { + config config.Config + + database database.Database + stores *store.Set + hookis *hooki.Pool + templates *template.Template +} + +func New(ctx context.Context, config config.Config) (*Server, error) { + database, err := database.Open(ctx, config.DB) + if err != nil { + return nil, fmt.Errorf("open database: %w", err) + } + + return &Server{ + database: database, + }, nil +} diff --git a/forged/internal/store/store.go b/forged/internal/store/store.go new file mode 100644 index 0000000..0e882ce --- /dev/null +++ b/forged/internal/store/store.go @@ -0,0 +1,3 @@ +package store + +type Set struct{} // TODO |