From 4c0e1bc89de2a60baaa098c049cf69bac8537055 Mon Sep 17 00:00:00 2001 From: tjpcc Date: Fri, 8 Sep 2023 14:54:59 -0600 Subject: finger support --- main.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index abdb907..1d6efc0 100644 --- a/main.go +++ b/main.go @@ -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) + } +} -- cgit v1.2.3