diff options
| author | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:53 -0600 |
|---|---|---|
| committer | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:53 -0600 |
| commit | 1f519d05bfdf27814bcb9d4e81ed00b0c1068dd6 (patch) | |
| tree | d9c42ad62827d5494661968b59e723602816134e /main.go | |
Initial commit.
A gemini server which drops privileges to the 'nobody' user, hosts files
including directory listings (index.gmi or a default listing), and runs
CGIs out of /cgi-bin/*.
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 48 |
1 files changed, 48 insertions, 0 deletions
@@ -0,0 +1,48 @@ +package main + +import ( + "log" + "os" + + "tildegit.org/tjp/sliderule/gemini" + "tildegit.org/tjp/sliderule/logging" +) + +func main() { + conf := configure() + gemTLS, err := gemini.FileTLS(conf.tlsCertFile, conf.tlsKeyFile) + if err != nil { + log.Fatal(err) + } + + dropped, err := dropPrivileges() + if err != nil { + log.Fatal(err) + } + + ctx, _, info, warn, errlog := serverContext() + + if !dropped { + warn.Log("msg", "dropping privileges to 'nobody' failed") + } + + handler := logging.LogRequests(info)(geminiRouter(conf)) + server, err := gemini.NewServer( + ctx, + conf.hostname, + "tcp", + "127.0.0.1:1965", + handler, + errlog, + gemTLS, + ) + if err != nil { + errlog.Log("msg", "error building server", "error", err) + os.Exit(1) + } + + if err := server.Serve(); err != nil { + errlog.Log("msg", "error serving gemini", "error", err) + os.Exit(1) + } +} |
