commit f2147bfef5df2da1b452090ac79652addacbbb0c
parent a13f68c2003af6a33c6e039f5804e99274cdad8e
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Sat, 21 Mar 2026 09:16:43 +0100
fix man pages
Diffstat:
13 files changed, 657 insertions(+), 158 deletions(-)
diff --git a/Makefile.in b/Makefile.in
@@ -33,11 +33,14 @@ install: server tools
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 doc/man/taler-directory.conf.5 ${DESTDIR}${mandir}/man5/
cp taldir.conf.example ${DESTDIR}${TALER_DIRECTORY_HOME}
uninstall:
${RM} ${DESTDIR}${bindir}/taler-directory*
-${RM} -r ${DESTDIR}${TALER_DIRECTORY_HOME}
+ -${RM} -r ${DESTDIR}${mandir}/man1/taler-directory*
+ -${RM} -r ${DESTDIR}${mandir}/man5/taler-directory*
format:
${GO} fmt ./cmd/taldir-server/*.go
diff --git a/cmd/taldir-cli/main.go b/cmd/taldir-cli/main.go
@@ -26,11 +26,18 @@ import (
"log"
"net/url"
"os"
+ "path/filepath"
"gopkg.in/ini.v1"
+ "rsc.io/getopt"
"taler.net/taldir/internal/util"
)
+var (
+ version string
+)
+
+
// Hashes the alias with its type in a prefix-free fashion
// SHA512(len(atype||alias)||atype||alias)
func hashAlias(atype string, alias string) []byte {
@@ -52,11 +59,19 @@ func generateLink(host string, alias string, atype string, challenge string) str
func main() {
var solveFlag = flag.Bool("s", false, "Provide a solution for the challenge/pubkey")
+ getopt.Alias("s", "solve")
var linkFlag = flag.Bool("l", false, "Provide a link for activation")
+ getopt.Alias("l", "link")
var challengeFlag = flag.String("c", "", "Activation challenge")
+ getopt.Alias("c", "challenge")
var pubkeyFlag = flag.String("p", "", "Public key")
+ getopt.Alias("p", "public-key")
var aliasFlag = flag.String("a", "", "Alias")
+ getopt.Alias("a", "alias")
var atypeFlag = flag.String("t", "", "Alias type")
+ getopt.Alias("t", "alias-type")
+ var versionFlag = flag.Bool("v", false, "Print version")
+ getopt.Alias("v", "version")
flag.Parse()
cfgfile := "taldir.conf"
_cfg, err := ini.LooseLoad(cfgfile)
@@ -64,7 +79,15 @@ func main() {
log.Fatalf("Failed to read config: %v", err)
os.Exit(1)
}
- host := _cfg.Section("taldir").Key("base_url").MustString("http://localhost")
+ if *versionFlag {
+ fullName, err := os.Executable()
+ if err != nil {
+ log.Panic(err)
+ }
+ fmt.Printf("%s %s", filepath.Base(fullName), version)
+ return
+ }
+ host := _cfg.Section("taldir").Key("base_url").MustString("http://localhost")
if *solveFlag {
if len(*challengeFlag) == 0 || len(*pubkeyFlag) == 0 {
fmt.Println("You need to provide an activation challenge and a public key to generate a solution")
diff --git a/doc/man/taler-directory-cli.1 b/doc/man/taler-directory-cli.1
@@ -0,0 +1,87 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "TALER-DIRECTORY-CLI" "1" "Mar 21, 2026" "1.0" "GNU Taler"
+.SH NAME
+taler-directory-cli \- provide the Taler directory CLI helper interface
+.SH SYNOPSIS
+.sp
+\fBtaler\-directory\-cli\fP
+[\fB\-c\fP\ \fICHALLENGE\fP\ |\ \fB\-\-challenge=\fP\fICHALLENGE\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-s\fP\ |\ \fB\-\-solve=\fP]
+[\fB\-l\fP\ |\ \fB\-\-link=\fP]
+[\fB\-t\fP\ \fIALIASTYPE\fP\ |\ \fB\-\-alias\-type=\fP\fIALIASTYPE\fP]
+[\fB\-p\fP\ \fIKEY\fP\ |\ \fB\-\-public\-key=\fP\fIKEY\fP]
+[\fB\-a\fP\ \fIALIAS\fP\ |\ \fB\-\-alias=\fP\fIALIAS\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+.SH DESCRIPTION
+.sp
+\fBtaler\-directory\-cli\fP is a command\-line tool to provide the taler\-directory CLI interface.
+.sp
+Its options are as follows:
+.INDENT 0.0
+.TP
+\fB\-c\fP \fICHALLENGE\fP | \fB\-\-challenge=\fP\fICHALLENGE\fP
+Solve the activation challenge with \fICHALLENGE\fP\&. Use with the \-s flag.
+.TP
+\fB\-h\fP | \fB\-\-help\fP
+Print short help on options.
+.TP
+\fB\-s\fP | \fB\-\-solve\fP
+Generate the solution of a challenge. Use with the \-c and \-p flags.
+.TP
+\fB\-l\fP | \fB\-\-link\fP
+Generate a link that can be used for activation/validation. Use with the \-c, \-a and \-t flags.
+.TP
+\fB\-t\fP \fIALIASTYPE\fP | \fB\-\-alias\-type=\fP\fIALIASTYPE\fP
+The type of the alias.
+.TP
+\fB\-a\fP \fIALIAS\fP | \fB\-\-alias=\fP\fIALIAS\fP
+The alias.
+.TP
+\fB\-p\fP \fIKEY\fP | \fB\-\-public\-key=\fP\fIKEY\fP
+The public key to generate the solution for.
+.TP
+\fB\-v\fP | \fB–version\fP
+Print version information.
+.UNINDENT
+.SH SEE ALSO
+.sp
+taler\-directory\-config(1), taler\-directory\-dbinit(1), taler\-directory.conf(5).
+.SH BUGS
+.sp
+Report bugs by using \X'tty: link https://bugs.taler.net'\fI\%https://bugs.taler.net\fP\X'tty: link' or by sending electronic
+mail to <\X'tty: link mailto:taler@gnu.org'\fI\%taler@gnu.org\fP\X'tty: link'>.
+.SH AUTHOR
+GNU Taler contributors
+.SH COPYRIGHT
+2014-2025 Taler Systems SA (GPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/man/taler-directory-config.1 b/doc/man/taler-directory-config.1
@@ -0,0 +1,90 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "TALER-DIRECTORY-CONFIG" "1" "Mar 21, 2026" "1.0" "GNU Taler"
+.SH NAME
+taler-directory-config \- manipulate Taler Directory configuration files
+.SH SYNOPSIS
+.sp
+\fBtaler\-directory\-config\fP
+[\fB\-c\fP\ \fIfilename\fP\ |\ \fB\-\-config=\fP\fIfilename\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB\-\-loglevel=\fP\fIloglevel\fP]
+[\fB\-l\fP\ \fIfilename\fP\ |\ \fB\-\-logfile=\fP\fIfilename\fP]
+[\fB\-o\fP\ \fIoption\fP\ |\ \fB\-\-option=\fP\fIoption\fP]
+[\fB\-O\fP\ |\ \fB\-\-only\-value\fP]
+[\fB\-S\fP\ |\ \fB\-\-list\-sections\fP]
+[\fB\-s\fP\ \fIsection\fP\ |\ \fB\-\-section=\fP\fIsection\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+.SH DESCRIPTION
+.sp
+\fBtaler\-directory\-config\fP can be used to read or modify taler\-directory configuration files.
+.INDENT 0.0
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
+Use the configuration file \fIFILENAME\fP\&.
+.TP
+\fB\-h\fP | \fB\-\-help\fP
+Print short help on options.
+.TP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP\fILOGLEVEL\fP
+Use \fILOGLEVEL\fP for logging.
+Valid values are \fBDEBUG\fP, \fBINFO\fP, \fBWARNING\fP, and \fBERROR\fP\&.
+.TP
+\fB\-o\fP \fIOPTION\fP | \fB\-\-option=\fP\fIOPTION\fP
+Which configuration option should be accessed or edited. Required to set a
+value. If not given, all values of a given section will be printed in the
+format \(dqOPTION = VALUE\(dq.
+.TP
+\fB\-O\fP | \fB\-\-only\-value\fP
+Print only the value(s), not the key(s).
+.TP
+\fB\-S\fP | \fB\-\-list\-sections\fP
+List available configuration sections for use with \fB\-\-section\fP\&.
+.TP
+\fB\-s\fP \fISECTION\fP | \fB\-\-section=\fP\fISECTION\fP
+Which configuration section should be accessed or edited.
+Required option.
+.TP
+\fB\-v\fP | \fB\-\-version\fP
+Print GNU Taler version number.
+.UNINDENT
+.SH SEE ALSO
+.sp
+taler\-directory\-dbinit(1), taler\-directory\-httpd(1), taler\-directory.conf(5).
+.SH BUGS
+.sp
+Report bugs by using \X'tty: link https://bugs.taler.net'\fI\%https://bugs.taler.net\fP\X'tty: link' or by sending electronic
+mail to <\X'tty: link mailto:taler@gnu.org'\fI\%taler@gnu.org\fP\X'tty: link'>.
+.SH AUTHOR
+GNU Taler contributors
+.SH COPYRIGHT
+2014-2025 Taler Systems SA (GPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/man/taler-directory-dbinit.1 b/doc/man/taler-directory-dbinit.1
@@ -1,56 +1,72 @@
-.\" This file is part of GNU Taler.
-.\" Copyright (C) 2026 GNU Taler
-.\"
-.\" Permission is granted to copy, distribute and/or modify this document
-.\" under the terms of the GNU Free Documentation License, Version 1.3 or
-.\" any later version published by the Free Software Foundation; with no
-.\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
-.\" copy of the license is included in the file
-.\" FDL-1.3.
-.\"
-.\" A copy of the license is also available from the Free Software
-.\" Foundation Web site at http://www.gnu.org/licenses/fdl.html}.
-.\"
-.\" Alternately, this document is also available under the General
-.\" Public License, version 3 or later, as published by the Free Software
-.\" Foundation. A copy of the license is included in the file
-.\" GPL3.
-.\"
-.\" A copy of the license is also available from the Free Software
-.\" Foundation Web site at http://www.gnu.org/licenses/gpl.html
-.\"
-.\" SPDX-License-Identifier: GPL3.0-or-later OR FDL1.3-or-later
-.\"
-.Dd February 14, 2026
-.Dt TALER-DIRECTORY-DBINIT 1
-.Os
-.Sh NAME
-.Nm taler-directory-dbinit
-.Nd The GNU Taler Directory Service Database Initializer
-.Sh SYNOPSIS
-.Nm
-.Op Fl c Ar FILENAME | Fl -config= Ns Ar FILENAME
-.Op Fl h | -help
-.Op Fl v | -version
-.Sh DESCRIPTION
-.Nm
-is used to initialize the Taler Directory database.
-.Bl -tag -width indent
-.It Fl c Ar FILENAME | Fl -config= Ns Ar FILENAME
-Use the configuration file FILENAME.
-.It Fl h | -help
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "TALER-DIRECTORY-DBINIT" "1" "Mar 21, 2026" "1.0" "GNU Taler"
+.SH NAME
+taler-directory-dbinit \- initialize the Taler directory database
+.SH SYNOPSIS
+.sp
+\fBtaler\-directory\-dbinit\fP
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ |\ \fB\-\-loglevel\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+.SH DESCRIPTION
+.sp
+\fBtaler\-directory\-dbinit\fP is a command\-line tool to initialize the taler\-directory database.
+.sp
+Its options are as follows:
+.INDENT 0.0
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
+Use the configuration and other resources for the taler\-directory commands
+to operate from \fIFILENAME\fP\&.
+.TP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
-Valid values are DEBUG, INFO, WARNING and ERROR.
-.It Fl v | -version
-Print version number.
-.El
-.Sh DIAGNOSTICS
-.Nm
-will return 0 on success.
-.\".Sh HISTORY
-.\".Sh AUTHORS
-.Sh BUGS
-Report bugs by using
-.Lk https://bugs.gnunet.org
-or by sending electronic mail to
-.Aq Mt gnunet-developers@gnu.org .
+.TP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
+Configure logging to use \fILOGLEVEL\fP\&.
+.TP
+\fB\-v\fP | \fB–version\fP
+Print version information.
+.UNINDENT
+.SH SEE ALSO
+.sp
+taler\-directory\-config(1), taler\-directory\-httpd(1), taler\-directory.conf(5).
+.SH BUGS
+.sp
+Report bugs by using \X'tty: link https://bugs.taler.net'\fI\%https://bugs.taler.net\fP\X'tty: link' or by sending electronic
+mail to <\X'tty: link mailto:taler@gnu.org'\fI\%taler@gnu.org\fP\X'tty: link'>.
+.SH AUTHOR
+GNU Taler contributors
+.SH COPYRIGHT
+2014-2025 Taler Systems SA (GPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/man/taler-directory-httpd.1 b/doc/man/taler-directory-httpd.1
@@ -0,0 +1,73 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "TALER-DIRECTORY-HTTPD" "1" "Mar 21, 2026" "1.0" "GNU Taler"
+.SH NAME
+taler-directory-httpd \- provide the Taler directory HTTP interface
+.SH SYNOPSIS
+.sp
+\fBtaler\-directory\-httpd\fP
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log=\fP\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP\fIFILENAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+.SH DESCRIPTION
+.sp
+\fBtaler\-directory\-httpd\fP is a command\-line tool to provide the taler\-directory HTTP interface.
+.sp
+Its options are as follows:
+.INDENT 0.0
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
+Use the configuration and other resources for the taler\-directory commands
+to operate from \fIFILENAME\fP\&.
+.TP
+\fB\-h\fP | \fB\-\-help\fP
+Print short help on options.
+.TP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
+Configure logging to use \fILOGLEVEL\fP\&.
+.TP
+\fB\-v\fP | \fB–version\fP
+Print version information.
+.UNINDENT
+.SH SEE ALSO
+.sp
+taler\-directory\-config(1), taler\-directory\-dbinit(1), taler\-directory.conf(5).
+.SH BUGS
+.sp
+Report bugs by using \X'tty: link https://bugs.taler.net'\fI\%https://bugs.taler.net\fP\X'tty: link' or by sending electronic
+mail to <\X'tty: link mailto:taler@gnu.org'\fI\%taler@gnu.org\fP\X'tty: link'>.
+.SH AUTHOR
+GNU Taler contributors
+.SH COPYRIGHT
+2014-2025 Taler Systems SA (GPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/man/taler-directory.1 b/doc/man/taler-directory.1
@@ -1,59 +0,0 @@
-.\" This file is part of GNU Taler.
-.\" Copyright (C) 2025 GNU Taler
-.\"
-.\" Permission is granted to copy, distribute and/or modify this document
-.\" under the terms of the GNU Free Documentation License, Version 1.3 or
-.\" any later version published by the Free Software Foundation; with no
-.\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
-.\" copy of the license is included in the file
-.\" FDL-1.3.
-.\"
-.\" A copy of the license is also available from the Free Software
-.\" Foundation Web site at http://www.gnu.org/licenses/fdl.html}.
-.\"
-.\" Alternately, this document is also available under the General
-.\" Public License, version 3 or later, as published by the Free Software
-.\" Foundation. A copy of the license is included in the file
-.\" GPL3.
-.\"
-.\" A copy of the license is also available from the Free Software
-.\" Foundation Web site at http://www.gnu.org/licenses/gpl.html
-.\"
-.\" SPDX-License-Identifier: GPL3.0-or-later OR FDL1.3-or-later
-.\"
-.Dd April 26, 2025
-.Dt TALER-DIRECTORY 1
-.Os
-.Sh NAME
-.Nm taler-directory
-.Nd The GNU Taler Directory Service
-.Sh SYNOPSIS
-.Nm
-.Op Fl c Ar FILENAME | Fl -config= Ns Ar FILENAME
-.Op Fl h | -help
-.Op Fl L Ar LOGLEVEL | Fl -loglevel= Ns Ar LOGLEVEL
-.Op Fl v | -version
-.Sh DESCRIPTION
-.Nm
-is used to register and lookup mailbox URIs for P2P message delivery.
-.Bl -tag -width indent
-.It Fl c Ar FILENAME | Fl -config= Ns Ar FILENAME
-Use the configuration file FILENAME.
-.It Fl h | -help
-Print short help on options.
-.It Fl L Ar LOGLEVEL | Fl -loglevel= Ns Ar LOGLEVEL
-Use LOGLEVEL for logging.
-Valid values are DEBUG, INFO, WARNING and ERROR.
-.It Fl v | -version
-Print version number.
-.El
-.Sh DIAGNOSTICS
-.Nm
-will return 0 on success.
-.\".Sh HISTORY
-.\".Sh AUTHORS
-.Sh BUGS
-Report bugs by using
-.Lk https://bugs.gnunet.org
-or by sending electronic mail to
-.Aq Mt gnunet-developers@gnu.org .
diff --git a/doc/man/taler-directory.conf.5 b/doc/man/taler-directory.conf.5
@@ -0,0 +1,270 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "TALER-DIRECTORY.CONF" "5" "Mar 21, 2026" "1.0" "GNU Taler"
+.SH NAME
+taler-directory.conf \- Taler directory configuration file
+.SH DESCRIPTION
+.sp
+The configuration file is line\-oriented. Blank lines and whitespace at the
+beginning and end of a line are ignored. Comments start with \fB#\fP or \fB%\fP
+in the first column (after any beginning\-of\-line whitespace) and go to the end
+of the line.
+.sp
+The file is split into sections. Every section begins with \fB[SECTIONNAME]\fP
+and contains a number of options of the form \fBOPTION=VALUE\fP\&. There may be
+whitespace around the \fB=\fP (equal sign). Section names and options are
+\fIcase\-insensitive\fP\&.
+.sp
+The values, however, are \fIcase\-sensitive\fP\&. In particular, boolean values are
+one of \fBYES\fP or \fBNO\fP\&. Values can include whitespace by surrounding the
+entire value with \fB\(dq\fP (double quote). Note, however, that there are no
+escape characters in such strings; all characters between the double quotes
+(including other double quotes) are taken verbatim.
+.sp
+Values that represent a time duration are represented as a series
+of one or more \fBNUMBER UNIT\fP pairs, e.g. \fB60 s\fP, \fB4 weeks 1 day\fP,
+\fB5 years 2 minutes\fP\&.
+.sp
+Values that represent an amount are in the usual amount syntax:
+\fBCURRENCY:VALUE.FRACTION\fP, e.g. \fBEUR:1.50\fP\&.
+The \fBFRACTION\fP portion may extend up to 8 places.
+.sp
+Values that represent filenames can begin with a \fB/bin/sh\fP\-like variable
+reference. This can be simple, such as \fB$TMPDIR/foo\fP, or complex, such as
+\fB${TMPDIR:\-${TMP:\-/tmp}}/foo\fP\&. The variables are expanded either using
+key\-values from the \fB[PATHS]\fP section (see below) or from the environment
+(\fBgetenv()\fP). The values from \fB[PATHS]\fP take precedence over those from
+the environment. If the variable name is found in neither \fB[PATHS]\fP nor the
+environment, a warning is printed and the value is left unchanged. Variables (including those from the environment) are expanded recursively, so if \fBFOO=$BAR\fP and \fBBAR=buzz\fP then the result is \fBFOO=buzz\fP\&. Recursion is bounded to at most 128 levels to avoid undefined behavior for mutually recursive expansions like if \fBBAR=$FOO\fP in the example above.
+.sp
+The \fB[PATHS]\fP section is special in that it contains paths that can be
+referenced using \fB$\fP in other configuration values that specify
+\fIfilenames\fP\&. Note that configuration options that are not specifically
+retrieved by the application as \fIfilenames\fP will not see “$”\-expressions
+expanded. To expand \fB$\fP\-expressions when using \fBtaler\-config\fP, you must pass
+the \fB\-f\fP command\-line option.
+.sp
+The system automatically pre\-populates the \fB[PATHS]\fP section with a few values
+at run\-time (in addition to the values that are in the actual configuration
+file and automatically overwriting those values if they are present).
+These automatically generated values refer to installation properties
+from \X'tty: link https://www.gnu.org/prep/standards/html_node/Directory-Variables.html'\fI\%GNU autoconf\fP\X'tty: link'\&. The
+values are usually dependent on an \fBINSTALL_PREFIX\fP which is determined by
+the \fB\-\-prefix\fP option given to configure. The canonical values are:
+.INDENT 0.0
+.IP \(bu 2
+LIBEXECDIR = $INSTALL_PREFIX/taler/libexec/
+.IP \(bu 2
+DOCDIR = $INSTALL_PREFIX/share/doc/taler/
+.IP \(bu 2
+ICONDIR = $INSTALL_PREFIX/share/icons/
+.IP \(bu 2
+LOCALEDIR = $INSTALL_PREFIX/share/locale/
+.IP \(bu 2
+PREFIX = $INSTALL_PREFIX/
+.IP \(bu 2
+BINDIR = $INSTALL_PREFIX/bin/
+.IP \(bu 2
+LIBDIR = $INSTALL_PREFIX/lib/taler/
+.IP \(bu 2
+DATADIR = $INSTALL_PREFIX/share/taler/
+.UNINDENT
+.sp
+Note that on some platforms, the given paths may differ depending
+on how the system was compiled or installed, the above are just the
+canonical locations of the various resources. These
+automatically generated values are never written to disk.
+.sp
+Files containing default values for many of the options described below
+are installed under \fB$PREFIX/share/taler\-directory/config.d/\fP\&.
+The configuration file given with \fB\-c\fP to taler\-directory binaries
+overrides these defaults.
+.sp
+A configuration file may include another, by using the \fB@INLINE@\fP directive,
+for example, in \fBmain.conf\fP, you could write \fB@INLINE@ sub.conf\fP to
+include the entirety of \fBsub.conf\fP at that point in \fBmain.conf\fP\&.
+.sp
+Be extra careful when using \fBtaler\-directory\-config \-V VALUE\fP to change configuration
+values: it will destroy all uses of \fB@INLINE@\fP and furthermore remove all
+comments from the configuration file!
+.SS GLOBAL OPTIONS
+.sp
+The following options are from the “[taler\-directory]” section.
+.INDENT 0.0
+.TP
+.B BASE_URL
+The base URL of the service. If your service is proxied, the external base URL this service is availiable at.
+Default: \fBhttp://localhost:11000\fP
+.TP
+.B CHALLENGE_BYTES
+Number of bytes of the challenge.
+Default: \fB16\fP
+.TP
+.B VALIDATION_INITIATION_MAX
+Maximum number of pending validations for the same alias.
+Default: \fB3\fP
+.TP
+.B SOLUTION_ATTEMPT_MAX
+Maximum times a solution may be attempted for an active validation.
+Default: \fB3\fP
+.TP
+.B VALIDATION_TIMEFRAME
+Cooldown period between two successive validation requests (for the same alias).
+Default: \fB5m\fP
+.TP
+.B SOLUTION_ATTEMPT_TIMEFRAME
+Duration for which a solution must be provided for any given validation.
+Default: \fB1h\fP
+.TP
+.B VALIDATION_EXPIRATION
+Time until a pending validation expires
+Default: \fB24h\fP
+.TP
+.B VALID_PAYMENT_SYSTEM_ADDRESS_REGEX
+Defines valid payment system addresses that may be registered.
+Default: \fB\&.*\fP
+.TP
+.B MONTHLY_FEE
+Cost for registration of a single month.
+Default: \fBKUDOS:0\fP
+.TP
+.B NAVIGATION
+The navigation (header) HTML template file. If relative will be interpreted relative to DATADIR.
+Default: \fBweb/templates/nav.html\fP
+.TP
+.B FOOTER
+The footer HTML template file. If relative will be interpreted relative to DATADIR.
+Default: \fBweb/templates/footer.html\fP
+.TP
+.B IMPRINT_PAGE
+The imprint HTML template file. If relative will be interpreted relative to DATADIR.
+Default: \fBweb/templates/imprint.html\fP
+.TP
+.B ABOUT_PAGE
+The about HTML template file. If relative will be interpreted relative to DATADIR.
+Default: \fBweb/templates/about.html\fP
+.TP
+.B LANDING_PAGE
+The landing page HTML template file. If relative will be interpreted relative to DATADIR.
+Default: \fBweb/templates/landing.html\fP
+.TP
+.B VALIDATION_LANDING
+The validation landing HTML template file. If relative will be interpreted relative to DATADIR.
+Default: \fBweb/templates/validation_landing.html\fP
+.TP
+.B LOOKUP_RESULT_PAGE
+The lookup result HTML template file. If relative will be interpreted relative to DATADIR.
+Default: \fBweb/templates/validation_landing.html\fP
+.UNINDENT
+.sp
+The following options are from a “[taler\-directory\-<validator>]” section.
+.INDENT 0.0
+.TP
+.B ENABLED
+Is this validator enabled or disabled.
+Default: \fBfalse\fP
+.TP
+.B TYPE
+What type of validator is this. Options: \fBcommand\fP, \fBoidc\fP\&.
+Default: \fBcommand\fP
+.TP
+.B CHALLENGE_FEE
+What does the initiation of a challenge cost.
+Default: \fBKUDOS:0\fP
+.TP
+.B VALID_ALIAS_REGEX
+Defines which aliases are valid in this validator context.
+Default: empty
+.TP
+.B COMMAND
+Only when TYPE \fBcommand\fP\&. The command to execute. Must be set if TYPE is \fBcommand\fP\&.
+Default: unset
+.TP
+.B SENDER
+What should the sender of the email be. Only read by the email validator.
+Default: unset
+.TP
+.B AUTHORIZATION_ENDPOINT
+Only when TYPE \fBoidc\fP\&. The URI of the authorization endpoint.
+Default: unset
+.TP
+.B TOKEN_ENDPOINT
+Only when TYPE \fBoidc\fP\&. The URI of the token endpoint.
+Default: unset
+.TP
+.B USERINFO_ENDPOINT
+Only when TYPE \fBoidc\fP\&. The URI of the userinfo endpoint.
+Default: unset
+.TP
+.B CLIENT_ID
+Only when TYPE \fBoidc\fP\&. The OAuth client_id.
+Default: unset
+.TP
+.B CLIENT_SECRET
+Only when TYPE \fBoidc\fP\&. The OAuth client_secret.
+Default: unset
+.TP
+.B SCOPE
+Only when TYPE \fBoidc\fP\&. The OAuth scope(s) to request.
+Default: unset
+.TP
+.B ALIAS_CLAIM
+Only when TYPE \fBoidc\fP\&. The claim to read from the userinfo response. Must be equal to the alias that is being validated.
+Default: \fBsub\fP
+.UNINDENT
+.sp
+The following options are from a “[taler\-directory\-<disseminator>]” section.
+.INDENT 0.0
+.TP
+.B ENABLED
+Is this disseminator enabled or disabled.
+Default: \fBfalse\fP
+.TP
+.B ZONE
+The name (not ZEKY) of the local zone authoritative for publication of the directory.
+Default: unset
+.TP
+.B EXPIRATION
+The relative expiration time of the record sets.
+Default: \fB1d\fP
+.UNINDENT
+.SH SEE ALSO
+.sp
+taler\-directory\-dbinit(1), taler\-directory\-httpd(1), taler\-directory\-config(1).
+.SH BUGS
+.sp
+Report bugs by using \X'tty: link https://bugs.taler.net/'\fI\%https://bugs.taler.net/\fP\X'tty: link' or by sending electronic
+mail to <\X'tty: link mailto:taler@gnu.org'\fI\%taler@gnu.org\fP\X'tty: link'>.
+.SH AUTHOR
+GNU Taler contributors
+.SH COPYRIGHT
+2014-2025 Taler Systems SA (GPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/pkg/taldir/command_validator.go b/pkg/taldir/command_validator.go
@@ -56,7 +56,7 @@ func (t CommandValidator) Name() string {
}
func (t CommandValidator) ChallengeFee() string {
- return t.config.Ini.Section("taldir-validator-" + t.name).Key("challenge_fee").MustString("KUDOS:0")
+ return t.config.Ini.Section("taler-directory-validator-" + t.name).Key("challenge_fee").MustString("KUDOS:0")
}
func (t CommandValidator) IsAliasValid(alias string) (err error) {
@@ -85,7 +85,7 @@ func (t CommandValidator) RegistrationStart(topic string, link string, message s
}
func makeCommandValidator(cfg *TaldirConfig, name string, landingPageTpl *template.Template) CommandValidator {
- sec := cfg.Ini.Section("taldir-validator-" + name)
+ sec := cfg.Ini.Section("taler-directory-validator-" + name)
return CommandValidator{
name: name,
config: cfg,
diff --git a/pkg/taldir/disseminator_gns.go b/pkg/taldir/disseminator_gns.go
@@ -34,7 +34,7 @@ func (d *GnsDisseminator) gnsCheckIsDisseminated(e *Entry) bool {
if err != nil {
return false
}
- zone := d.config.Ini.Section("taldir-disseminator-gns").Key("zone").MustString("taldir")
+ zone := d.config.Ini.Section("taler-directory-disseminator-gns").Key("zone").MustString("taldir")
out, err := exec.Command(path, "--lookup", e.HsAlias+"."+zone, "--type", "TXT").Output()
if err != nil {
return false
@@ -50,7 +50,7 @@ func (d *GnsDisseminator) DisseminateStop(e *Entry) error {
if err != nil {
return fmt.Errorf("path of command not found: %w", err)
}
- zone := d.config.Ini.Section("taldir-disseminator-gns").Key("zone").MustString("taldir")
+ zone := d.config.Ini.Section("taler-directory-disseminator-gns").Key("zone").MustString("taldir")
out, err := exec.Command(path, "--delete", "--public", "--zone", zone, "--type", "TXT", "--name", e.HsAlias, "--value", e.TargetURI).Output()
if err != nil {
return fmt.Errorf("failed to execute disseminator command: `%s', %w", out, err)
@@ -67,8 +67,8 @@ func (d *GnsDisseminator) DisseminateStart(e *Entry) error {
if err != nil {
return fmt.Errorf("path of command not found: %w", err)
}
- expiration := d.config.Ini.Section("taldir-disseminator-gns").Key("expiration").MustString("1d")
- zone := d.config.Ini.Section("taldir-disseminator-gns").Key("zone").MustString("taldir")
+ expiration := d.config.Ini.Section("taler-directory-disseminator-gns").Key("expiration").MustString("1d")
+ zone := d.config.Ini.Section("taler-directory-disseminator-gns").Key("zone").MustString("taldir")
out, err := exec.Command(path, "--add", "--public", "--expiration", expiration, "--zone", zone, "--type", "TXT", "--name", e.HsAlias, "--value", e.TargetURI).Output()
if err != nil {
return fmt.Errorf("failed to execute disseminator command: `%s', %w", out, err)
@@ -81,7 +81,7 @@ func (d *GnsDisseminator) Name() string {
}
func (d *GnsDisseminator) IsEnabled() bool {
- return d.config.Ini.Section("taldir-disseminator-gns").Key("enabled").MustBool(false)
+ return d.config.Ini.Section("taler-directory-disseminator-gns").Key("enabled").MustBool(false)
}
func makeGnsDisseminator(cfg *TaldirConfig) GnsDisseminator {
diff --git a/pkg/taldir/oidc_validator.go b/pkg/taldir/oidc_validator.go
@@ -110,7 +110,7 @@ func (t OidcValidator) Name() string {
}
func (t OidcValidator) ChallengeFee() string {
- return t.config.Ini.Section("taldir-validator-" + t.name).Key("challenge_fee").MustString("KUDOS:0")
+ return t.config.Ini.Section("taler-directory-validator-" + t.name).Key("challenge_fee").MustString("KUDOS:0")
}
func (t OidcValidator) IsAliasValid(alias string) (err error) {
@@ -203,11 +203,11 @@ func (t OidcValidator) RegistrationStart(topic string, link string, message stri
}
func makeOidcValidator(cfg *TaldirConfig, name string, landingPageTpl *template.Template) OidcValidator {
- mainSec := cfg.Ini.Section("taldir")
+ mainSec := cfg.Ini.Section("taler-directory")
baseURL := mainSec.Key("base_url").MustString("")
// FIXME escape URI?
redirectURI := fmt.Sprintf("%s/oidc_validator/%s", baseURL, name)
- sec := cfg.Ini.Section("taldir-validator-" + name)
+ sec := cfg.Ini.Section("taler-directory-validator-" + name)
return OidcValidator{
name: name,
config: cfg,
diff --git a/pkg/taldir/taldir.go b/pkg/taldir/taldir.go
@@ -645,7 +645,7 @@ func (t *Taldir) configResponse(w http.ResponseWriter, r *http.Request) {
cfg := VersionResponse{
Version: "0:0:0",
Name: "taler-directory",
- MonthlyFee: t.Cfg.Ini.Section("taldir").Key("monthly_fee").MustString("KUDOS:1"),
+ MonthlyFee: t.Cfg.Ini.Section("taler-directory").Key("monthly_fee").MustString("KUDOS:1"),
AliasType: meths,
}
w.Header().Set("Content-Type", "application/json")
@@ -740,7 +740,7 @@ func (t *Taldir) ClearDatabase() {
}
func (t *Taldir) termsResponse(w http.ResponseWriter, r *http.Request) {
- s := t.Cfg.Ini.Section("taldir")
+ s := t.Cfg.Ini.Section("taler-directory")
termspath := t.getFileName(s.Key("default_terms_path").MustString("terms/"))
tos.ServiceTermsResponse(w, r, termspath, tos.TalerTosConfig{
DefaultFileType: s.Key("default_doc_filetype").MustString("text/html"),
@@ -974,19 +974,16 @@ func (t *Taldir) Initialize(cfg TaldirConfig) {
panic(err)
}
t.I18n = i18n
- if t.Cfg.Ini.Section("taldir").Key("production").MustBool(false) {
- fmt.Println("Production mode enabled")
- }
- navTplFile := t.getFileName(cfg.Ini.Section("taldir").Key("navigation").MustString("web/templates/nav.html"))
- footerTplFile := t.getFileName(cfg.Ini.Section("taldir").Key("footer").MustString("web/templates/footer.html"))
- t.BaseURL = cfg.Ini.Section("taldir").Key("base_url").MustString("http://localhost:11000")
+ navTplFile := t.getFileName(cfg.Ini.Section("taler-directory").Key("navigation").MustString("web/templates/nav.html"))
+ footerTplFile := t.getFileName(cfg.Ini.Section("taler-directory").Key("footer").MustString("web/templates/footer.html"))
+ t.BaseURL = cfg.Ini.Section("taler-directory").Key("base_url").MustString("http://localhost:11000")
t.Validators = make(map[string]Validator)
for _, sec := range cfg.Ini.Sections() {
- if !strings.HasPrefix(sec.Name(), "taldir-validator-") {
+ if !strings.HasPrefix(sec.Name(), "taler-directory-validator-") {
continue
}
- vname := strings.TrimPrefix(sec.Name(), "taldir-validator-")
+ vname := strings.TrimPrefix(sec.Name(), "taler-directory-validator-")
if !sec.Key("enabled").MustBool(false) {
t.Logger.Logf(LogWarning, "`Validator `%s' disabled.\n", vname)
continue
@@ -1022,28 +1019,28 @@ func (t *Taldir) Initialize(cfg TaldirConfig) {
t.Disseminators[gnsdisseminator.Name()] = &gnsdisseminator
t.Logger.Logf(LogInfo, "Disseminator `%s' enabled.\n", gnsdisseminator.Name())
}
- t.ChallengeBytes = cfg.Ini.Section("taldir").Key("challenge_bytes").MustInt(16)
- t.ValidationInitiationMax = cfg.Ini.Section("taldir").Key("validation_initiation_max").MustInt64(3)
- t.SolutionAttemptsMax = cfg.Ini.Section("taldir").Key("solution_attempt_max").MustInt(3)
+ t.ChallengeBytes = cfg.Ini.Section("taler-directory").Key("challenge_bytes").MustInt(16)
+ t.ValidationInitiationMax = cfg.Ini.Section("taler-directory").Key("validation_initiation_max").MustInt64(3)
+ t.SolutionAttemptsMax = cfg.Ini.Section("taler-directory").Key("solution_attempt_max").MustInt(3)
- validationTTLStr := cfg.Ini.Section("taldir").Key("validation_timeframe").MustString("5m")
- t.ValidPMSRegex = cfg.Ini.Section("taldir").Key("valid_payment_system_address_regex").MustString(".*")
+ validationTTLStr := cfg.Ini.Section("taler-directory").Key("validation_timeframe").MustString("5m")
+ t.ValidPMSRegex = cfg.Ini.Section("taler-directory").Key("valid_payment_system_address_regex").MustString(".*")
t.ValidationTimeframe, err = time.ParseDuration(validationTTLStr)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
os.Exit(1)
}
- retryTimeframeStr := cfg.Ini.Section("taldir").Key("solution_attempt_timeframe").MustString("1h")
+ retryTimeframeStr := cfg.Ini.Section("taler-directory").Key("solution_attempt_timeframe").MustString("1h")
t.SolutionTimeframe, err = time.ParseDuration(retryTimeframeStr)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
os.Exit(1)
}
- t.MonthlyFee = cfg.Ini.Section("taldir").Key("monthly_fee").MustString("KUDOS:0")
+ t.MonthlyFee = cfg.Ini.Section("taler-directory").Key("monthly_fee").MustString("KUDOS:0")
t.DB = cfg.Db
- if cfg.Ini.Section("taldir").Key("purge_mappings_on_startup_dangerous").MustBool(false) {
+ if cfg.Ini.Section("taler-directory").Key("purge_mappings_on_startup_dangerous").MustBool(false) {
t.Logger.Logf(LogWarning, "DANGER Purging mappings!")
num, err := DeleteAllEntriesFromDatabase(t.DB)
if err != nil {
@@ -1052,7 +1049,7 @@ func (t *Taldir) Initialize(cfg TaldirConfig) {
t.Logger.Logf(LogDebug, "Deleted %d entries.\n", num)
}
// Clean up validations
- validationExpStr := cfg.Ini.Section("taldir").Key("validation_expiration").MustString("24h")
+ validationExpStr := cfg.Ini.Section("taler-directory").Key("validation_expiration").MustString("24h")
validationExp, err := time.ParseDuration(validationExpStr)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
@@ -1068,31 +1065,31 @@ func (t *Taldir) Initialize(cfg TaldirConfig) {
time.Sleep(validationExp)
}
}()
- imprintTplFile := t.getFileName(cfg.Ini.Section("taldir").Key("imprint_page").MustString("web/templates/imprint.html"))
+ imprintTplFile := t.getFileName(cfg.Ini.Section("taler-directory").Key("imprint_page").MustString("web/templates/imprint.html"))
t.ImprintTpl, err = template.ParseFiles(imprintTplFile, navTplFile, footerTplFile)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
os.Exit(1)
}
- validationLandingTplFile := t.getFileName(cfg.Ini.Section("taldir").Key("validation_landing").MustString("web/templates/validation_landing.html"))
+ validationLandingTplFile := t.getFileName(cfg.Ini.Section("taler-directory").Key("validation_landing").MustString("web/templates/validation_landing.html"))
t.ValidationTpl, err = template.ParseFiles(validationLandingTplFile, navTplFile, footerTplFile)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
os.Exit(1)
}
- landingTplFile := t.getFileName(cfg.Ini.Section("taldir").Key("landing_page").MustString("web/templates/landing.html"))
+ landingTplFile := t.getFileName(cfg.Ini.Section("taler-directory").Key("landing_page").MustString("web/templates/landing.html"))
t.LandingPageTpl, err = template.ParseFiles(landingTplFile, navTplFile, footerTplFile)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
os.Exit(1)
}
- lookupResultTplFile := t.getFileName(cfg.Ini.Section("taldir").Key("lookup_result_page").MustString("web/templates/lookup_result.html"))
+ lookupResultTplFile := t.getFileName(cfg.Ini.Section("taler-directory").Key("lookup_result_page").MustString("web/templates/lookup_result.html"))
t.LookupResultPageTpl, err = template.ParseFiles(lookupResultTplFile, navTplFile, footerTplFile)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
os.Exit(1)
}
- aboutTplFile := t.getFileName(cfg.Ini.Section("taldir").Key("about_page").MustString("web/templates/about.html"))
+ aboutTplFile := t.getFileName(cfg.Ini.Section("taler-directory").Key("about_page").MustString("web/templates/about.html"))
t.AboutPageTpl, err = template.ParseFiles(aboutTplFile, navTplFile, footerTplFile)
if err != nil {
t.Logger.InternalLogger.Fatal(err)
@@ -1100,9 +1097,9 @@ func (t *Taldir) Initialize(cfg TaldirConfig) {
}
t.Salt = os.Getenv("TALDIR_SALT")
if t.Salt == "" {
- t.Salt = cfg.Ini.Section("taldir").Key("salt").MustString("ChangeMe")
+ t.Salt = cfg.Ini.Section("taler-directory").Key("salt").MustString("ChangeMe")
}
- t.Host = cfg.Ini.Section("taldir").Key("base_url").MustString("http://localhost")
+ t.Host = cfg.Ini.Section("taler-directory").Key("base_url").MustString("http://localhost")
t.Merchant = cfg.Merchant
registrationCost, _ := talerutil.ParseAmount(t.MonthlyFee)
merchConfig, err := t.Merchant.GetConfig()
diff --git a/taldir.conf.example b/taldir.conf.example
@@ -1,5 +1,4 @@
-[taldir]
-production = false
+[taler-directory]
footer = web/templates/footer.html
base_url = http://localhost:11000
challenge_bytes = 16
@@ -15,21 +14,21 @@ landing_page = web/templates/landing.html
lookup_result_page = web/templates/lookup_result.html
salt = ChangeMe
-[taldir-pq]
+[taler-directory-pq]
connection_string = postgres:///taler-directory?host=/var/run/postgresql
-[taldir-validator-email]
+[taler-directory-validator-email]
type = command
enabled = true
command = test
valid_alias_regex='^\S+@\S+\.\S+$'
-[taldir-validator-phone]
+[taler-directory-validator-phone]
type = command
enabled = true
command = test
-[taldir-validator-oidctest]
+[taler-directory-validator-oidctest]
type = oidc
enabled = false
authorization_endpoint=http://127.0.0.1:9400/oauth2/authorize
@@ -41,7 +40,7 @@ scope=openid email
valid_alias_regex='^\S+@\S+\.\S+$'
alias_claim=sub
-[taldir-validator-mastodon]
+[taler-directory-validator-mastodon]
type = oidc
enabled = true
authorization_endpoint=https://mastodon.social/oauth/authorize