taldir

Directory service to resolve wallet mailboxes by messenger addresses
Log | Files | Refs | Submodules | README | LICENSE

commit a13f68c2003af6a33c6e039f5804e99274cdad8e
parent 228a58526dcdb6863021e10109dafb411b5726d4
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Fri, 20 Mar 2026 14:37:59 +0100

rename http service binary to fit taler naming conventions, start improving CLI and man docs

Diffstat:
MMakefile.in | 8+++++---
MREADME.md | 2+-
Mcmd/taldir-cli/main.go | 8++++----
Mcmd/taldir-config/main.go | 21+++++++++++++++------
Mcmd/taldir-dbinit/main.go | 12++++++++++++
Mcmd/taldir-server/main.go | 16+++++++++++-----
Mdebian/taler-directory.service | 2+-
7 files changed, 49 insertions(+), 20 deletions(-)

diff --git a/Makefile.in b/Makefile.in @@ -6,7 +6,7 @@ TALER_DIRECTORY_CONFDIR=${sysconfdir}/taler-directory GITVER=`git describe --tags | sed 's/v//'` server: - ${GO} build -o taler-directory -ldflags "-X main.version=${VERSION} -X main.taldirdatahome=${TALER_DIRECTORY_HOME} -X main.taldirconfdir=${TALER_DIRECTORY_CONFDIR}" ./cmd/taldir-server + ${GO} build -o taler-directory-httpd -ldflags "-X main.version=${VERSION} -X main.taldirdatahome=${TALER_DIRECTORY_HOME} -X main.taldirconfdir=${TALER_DIRECTORY_CONFDIR}" ./cmd/taldir-server tools: ${GO} build -o taler-directory-cli -ldflags "-X main.version=${VERSION} -X main.taldirdatahome=${TALER_DIRECTORY_HOME} -X main.taldirconfdir=${TALER_DIRECTORY_CONFDIR}" ./cmd/taldir-cli @@ -17,7 +17,7 @@ tools: install: server tools -mkdir -p ${DESTDIR}${bindir} -mkdir -p ${DESTDIR}${TALER_DIRECTORY_HOME} - install ./taler-directory ${DESTDIR}${bindir} + install ./taler-directory-httpd ${DESTDIR}${bindir} install ./taler-directory-cli ${DESTDIR}${bindir} install ./taler-directory-config ${DESTDIR}${bindir} install ./taler-directory-dbinit ${DESTDIR}${bindir} @@ -29,7 +29,9 @@ install: server tools chmod +x scripts/validators/* cp scripts/validators/* ${DESTDIR}${bindir} -mkdir -p ${DESTDIR}${mandir}/man1 - cp doc/man/taler-directory.1 ${DESTDIR}${mandir}/man1/ + cp doc/man/taler-directory-cli.1 ${DESTDIR}${mandir}/man1/ + cp doc/man/taler-directory-config.1 ${DESTDIR}${mandir}/man1/ + cp doc/man/taler-directory-httpd.1 ${DESTDIR}${mandir}/man1/ cp doc/man/taler-directory-dbinit.1 ${DESTDIR}${mandir}/man1/ cp taldir.conf.example ${DESTDIR}${TALER_DIRECTORY_HOME} diff --git a/README.md b/README.md @@ -14,7 +14,7 @@ $ make && make install (You may have to set your $PATH to include the go/bin folder accordingly) $ cp config/taldir-example.conf taldir.conf (Edit taldir.conf to fit your needs) -$ ./taldir-server +$ ./taler-directory-httpd ``` # Test diff --git a/cmd/taldir-cli/main.go b/cmd/taldir-cli/main.go @@ -33,7 +33,7 @@ import ( // Hashes the alias with its type in a prefix-free fashion // SHA512(len(atype||alias)||atype||alias) -func HashAlias(atype string, alias string) []byte { +func hashAlias(atype string, alias string) []byte { h := sha512.New() b := make([]byte, 4) binary.BigEndian.PutUint32(b, uint32(len(atype)+len(alias))) @@ -45,9 +45,9 @@ func HashAlias(atype string, alias string) []byte { // Generates a link from a challenge and alias func generateLink(host string, alias string, atype string, challenge string) string { - h_alias := HashAlias(atype, alias) - h_alias_s := util.Base32CrockfordEncode(h_alias) - return host + "/register/" + url.QueryEscape(h_alias_s) + "/" + url.QueryEscape(challenge) + "?alias=" + url.QueryEscape(alias) + hAlias := hashAlias(atype, alias) + hAliasEnc := util.Base32CrockfordEncode(hAlias) + return host + "/register/" + url.QueryEscape(hAliasEnc) + "/" + url.QueryEscape(challenge) + "?alias=" + url.QueryEscape(alias) } func main() { diff --git a/cmd/taldir-config/main.go b/cmd/taldir-config/main.go @@ -21,8 +21,10 @@ package main import ( "flag" "fmt" + "log" "os" "path" + "path/filepath" "rsc.io/getopt" @@ -88,25 +90,33 @@ func main() { getopt.Alias("c", "config") var helpFlag = flag.Bool("h", false, "Print help") getopt.Alias("h", "help") + var versionFlag = flag.Bool("v", false, "Print version") + getopt.Alias("v", "version") getopt.Parse() if *helpFlag { printHelp() return } + if *versionFlag { + fullName, err := os.Executable() + if err != nil { + log.Panic(err) + } + fmt.Printf("%s %s", filepath.Base(fullName), version) + return + } cfgfile := path.Join(taldirconfdir, "taldir.conf") if len(*cfgFlag) != 0 { cfg, err = ini.Load(*cfgFlag) if err != nil { - fmt.Printf("Failed to read config: %v\n", err) - os.Exit(1) + log.Panic(err) } } else { // FIXME also try in datahome cfg, err = ini.LooseLoad(cfgfile) if err != nil { - fmt.Printf("Failed to read config: %v\n", err) - os.Exit(1) + log.Panic(err) } } if *listSectionFlag { @@ -114,8 +124,7 @@ func main() { return } if len(*sectionFlag) == 0 { - fmt.Println("No section given!") - os.Exit(1) + log.Panic(err) } sec := cfg.Section(*sectionFlag) printCfgOptions(sec, optionFlag, onlyValueFlag) diff --git a/cmd/taldir-dbinit/main.go b/cmd/taldir-dbinit/main.go @@ -25,6 +25,7 @@ import ( "log" "os" "path" + "path/filepath" "strings" _ "github.com/lib/pq" @@ -35,6 +36,7 @@ import ( ) var ( + version string taldirdatahome string taldirconfdir string ) @@ -83,12 +85,22 @@ func main() { getopt.Alias("c", "config") var helpFlag = flag.Bool("h", false, "Print help") getopt.Alias("h", "help") + var versionFlag = flag.Bool("v", false, "Print version") + getopt.Alias("v", "version") getopt.Parse() if *helpFlag { printHelp() return } + if *versionFlag { + fullName, err := os.Executable() + if err != nil { + log.Panic(err) + } + fmt.Printf("%s %s", filepath.Base(fullName), version) + return + } cfgfile := path.Join(taldirconfdir, "taldir.conf") if len(*cfgFlag) != 0 { cfg, err = ini.Load(*cfgFlag) diff --git a/cmd/taldir-server/main.go b/cmd/taldir-server/main.go @@ -33,6 +33,7 @@ import ( "net/http" "os" "path" + "path/filepath" "database/sql" @@ -44,11 +45,9 @@ import ( ) var ( - t taldir.Taldir version string taldirdatahome string taldirconfdir string - verbose bool // FIXME do something with this? ) func handleRequests(t *taldir.Taldir) { @@ -69,10 +68,10 @@ func main() { // FIXME use flags loglevelStringOpt := flag.String("L", "INFO", "Log level to use. DEBUG, INFO, WARNING or ERROR") getopt.Alias("L", "loglevel") - var verboseFlag = flag.Bool("v", false, "Verbose") - getopt.Alias("v", "verbose") var helpFlag = flag.Bool("h", false, "Print help") getopt.Alias("h", "help") + var versionFlag = flag.Bool("v", false, "Print version") + getopt.Alias("v", "version") getopt.Parse() cfgfile := path.Join(taldirconfdir, "taldir.conf") @@ -83,7 +82,14 @@ func main() { printHelp() return } - verbose = *verboseFlag + if *versionFlag { + fullName, err := os.Executable() + if err != nil { + log.Panic(err) + } + fmt.Printf("%s %s", filepath.Base(fullName), version) + return + } loglevel := taldir.LogInfo for loglevelNum, loglevelString := range taldir.LoglevelStringMap { if loglevelString == *loglevelStringOpt { diff --git a/debian/taler-directory.service b/debian/taler-directory.service @@ -9,7 +9,7 @@ Restart=always RestartSec=1s RestartPreventExitStatus=9 RuntimeMaxSec=3600s -ExecStart=/usr/bin/taler-directory -c /etc/taler-directory/taler-directory.conf +ExecStart=/usr/bin/taler-directory-httpd -c /etc/taler-directory/taler-directory.conf [Install] WantedBy=multi-user.target