diff options
| author | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:59 -0600 |
|---|---|---|
| committer | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:59 -0600 |
| commit | 4c0e1bc89de2a60baaa098c049cf69bac8537055 (patch) | |
| tree | 69412a5d844aebd706862c9548090c1152a27a8e /main.go | |
| parent | ac353033162038a4bf6f837bdfeb869f22e7160b (diff) | |
finger support
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 49 |
1 files changed, 47 insertions, 2 deletions
@@ -1,9 +1,13 @@ package main import ( + "context" + "crypto/tls" "log" "os" + "sync" + "tildegit.org/tjp/sliderule/finger" "tildegit.org/tjp/sliderule/gemini" "tildegit.org/tjp/sliderule/logging" ) @@ -26,12 +30,31 @@ func main() { _ = warn.Log("msg", "dropping privileges to 'nobody' failed") } - handler := logging.LogRequests(info)(geminiRouter(conf)) + wg := &sync.WaitGroup{} + + go startGemini(ctx, conf, wg, gemTLS, info, errlog) + go startFinger(ctx, conf, wg, info, errlog) + wg.Add(2) + + wg.Wait() +} + +func startGemini( + ctx context.Context, + conf config, + wg *sync.WaitGroup, + gemTLS *tls.Config, + infolog logging.Logger, + errlog logging.Logger, +) { + defer wg.Done() + + handler := logging.LogRequests(infolog)(geminiRouter(conf)) server, err := gemini.NewServer( ctx, conf.hostname, "tcp", - "127.0.0.1:1965", + "", handler, errlog, gemTLS, @@ -46,3 +69,25 @@ func main() { os.Exit(1) } } + +func startFinger( + ctx context.Context, + conf config, + wg *sync.WaitGroup, + infolog logging.Logger, + errlog logging.Logger, +) { + defer wg.Done() + + handler := logging.LogRequests(infolog)(fingerHandler(conf)) + server, err := finger.NewServer(ctx, conf.hostname, "tcp", "", handler, errlog) + 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 finger", "error", err) + os.Exit(1) + } +} |
