~sircmpwn/tokidoki-devel

Krystian Chachuła: 1
 Add Unix socket support

 2 files changed, 21 insertions(+), 3 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~sircmpwn/tokidoki-devel/patches/53621/mbox | git am -3
Learn more about email & git

[PATCH] Add Unix socket support Export this patch

---
 cmd/tokidoki/main.go | 22 ++++++++++++++++++++--
 doc/tokidoki.8.scd   |  2 +-
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/cmd/tokidoki/main.go b/cmd/tokidoki/main.go
index 3b982f7..06b817c 100644
--- a/cmd/tokidoki/main.go
+++ b/cmd/tokidoki/main.go
@@ -5,8 +5,10 @@ import (
	"encoding/base64"
	"flag"
	"fmt"
	"net"
	"net/http"
	"os"
	"strings"

	"github.com/emersion/go-webdav"
	"github.com/emersion/go-webdav/caldav"
@@ -163,6 +165,22 @@ func main() {
	mux.Mount("/{user}/contacts", &carddavHandler)
	mux.Mount("/{user}/calendar", &caldavHandler)

	var ln net.Listener
	if a := strings.TrimPrefix(addr, "unix://"); a != addr {
		ln, err = net.Listen("unix", a)
		if err != nil {
			log.Fatal().Err(err).Msg("failed to listen")
		}
		if err = os.Chmod(a, 0775); err != nil {
			log.Warn().Err(err).Msg("failed to set socket mode")
		}
	} else {
		ln, err = net.Listen("tcp", addr)
		if err != nil {
			log.Fatal().Err(err).Msg("failed to listen")
		}
	}

	server := http.Server{
		Addr:    addr,
		Handler: mux,
@@ -172,9 +190,9 @@ func main() {
	log.Debug().Msg("debug output enabled")

	if (cert != "") && (key != "") {
		err = server.ListenAndServeTLS(cert, key)
		err = server.ServeTLS(ln, cert, key)
	} else {
		err = server.ListenAndServe()
		err = server.Serve(ln)
	}
	if err != http.ErrServerClosed {
		log.Fatal().Err(err).Msg("ListenAndServe() error")
diff --git a/doc/tokidoki.8.scd b/doc/tokidoki.8.scd
index cf2220f..0ea5678 100644
--- a/doc/tokidoki.8.scd
+++ b/doc/tokidoki.8.scd
@@ -27,7 +27,7 @@ Regular logs are sent to stderr, HTTP logs are sent to stdout.

*-addr* _addr_
	Bind to the specified address/port. Default: ":8080" (port 8080 on all
	interfaces.
	interfaces. Use "unix:///path/to/socket" to bind to a Unix socket.

*-auth.url* _url_
	Auth backend URL (required). See AUTH BACKENDS below.
-- 
2.45.1
Thanks!

to git@git.sr.ht:~sircmpwn/tokidoki
  4ca7d8c..7969df1  master -> master