big juicy update
This commit is contained in:
parent
b58086263b
commit
1b6651c8e0
5 changed files with 101 additions and 11 deletions
45
main.go
45
main.go
|
|
@ -103,13 +103,52 @@ func main() {
|
|||
mux.Handle("/api/purchase", app.auth.RequireAuth(http.HandlerFunc(app.handlePurchaseAPI)))
|
||||
mux.Handle("/api/my-skills", app.auth.RequireAuth(http.HandlerFunc(app.handleMySkillsAPI)))
|
||||
|
||||
addr := ":" + cfg.Port
|
||||
log.Printf("server listening on %s", addr)
|
||||
if err := http.ListenAndServe(addr, loggingMiddleware(mux)); err != nil {
|
||||
listener, cleanup, err := createListener(cfg)
|
||||
if err != nil {
|
||||
log.Fatalf("create listener: %v", err)
|
||||
}
|
||||
defer cleanup()
|
||||
|
||||
log.Printf("server listening network=%s address=%s", cfg.ListenNetwork, cfg.ListenAddress)
|
||||
if err := http.Serve(listener, loggingMiddleware(mux)); err != nil {
|
||||
log.Fatalf("server failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func createListener(cfg Config) (net.Listener, func(), error) {
|
||||
if cfg.ListenNetwork == "unix" {
|
||||
if err := os.MkdirAll(filepath.Dir(cfg.ListenAddress), 0o755); err != nil {
|
||||
return nil, nil, fmt.Errorf("create socket dir: %w", err)
|
||||
}
|
||||
if _, err := os.Stat(cfg.ListenAddress); err == nil {
|
||||
if err := os.Remove(cfg.ListenAddress); err != nil {
|
||||
return nil, nil, fmt.Errorf("remove stale socket: %w", err)
|
||||
}
|
||||
} else if !os.IsNotExist(err) {
|
||||
return nil, nil, fmt.Errorf("check socket path: %w", err)
|
||||
}
|
||||
l, err := net.Listen("unix", cfg.ListenAddress)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
if err := os.Chmod(cfg.ListenAddress, cfg.UnixSocketPerm); err != nil {
|
||||
_ = l.Close()
|
||||
return nil, nil, fmt.Errorf("chmod socket: %w", err)
|
||||
}
|
||||
cleanup := func() {
|
||||
_ = l.Close()
|
||||
_ = os.Remove(cfg.ListenAddress)
|
||||
}
|
||||
return l, cleanup, nil
|
||||
}
|
||||
|
||||
l, err := net.Listen("tcp", cfg.ListenAddress)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return l, func() { _ = l.Close() }, nil
|
||||
}
|
||||
|
||||
func runMigrations(db *sql.DB) error {
|
||||
schema, err := os.ReadFile("db/schema.sql")
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue