summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go49
1 files changed, 47 insertions, 2 deletions
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)
+ }
+}