taldir

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

commit a7782bc61544982e21e72f69040dcfd59133400b
parent f3b679fc3964719a7190ed2dd9723462fa7379d4
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Mon,  4 Jul 2022 21:40:36 +0200

add version response

Diffstat:
Mgo.mod | 2+-
Mtaldir.conf | 4+++-
Mtaldir.go | 67++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
3 files changed, 58 insertions(+), 15 deletions(-)

diff --git a/go.mod b/go.mod @@ -8,7 +8,7 @@ require ( github.com/jcmturner/gokrb5/v8 v8.2.0 // indirect github.com/jinzhu/now v1.1.5 // indirect golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect - gopkg.in/ini.v1 v1.66.4 // indirect + gopkg.in/ini.v1 v1.66.4 gopkg.in/jcmturner/aescts.v1 v1.0.1 // indirect gopkg.in/jcmturner/dnsutils.v1 v1.0.1 // indirect gopkg.in/jcmturner/goidentity.v3 v3.0.0 // indirect diff --git a/taldir.conf b/taldir.conf @@ -4,10 +4,12 @@ validators = "email phone" host = "https://taldir.net" bind_to = "localhost:11000" salt = "ChangeMe" +supported_methods = email +monthly_fee = 1 Bazillion Kudos [taldir-email] sender = "taldir@taler.net" - +challenge_fee = 0.5 Fantastillion Kudos [taldir-pq] host = "localhost" diff --git a/taldir.go b/taldir.go @@ -17,6 +17,32 @@ import ( "strings" ) +type VersionResponse struct { + // libtool-style representation of the Merchant protocol version, see + // https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning + // The format is "current:revision:age". + Version string `json:"version"` + + // Name of the protocol. + Name string `json:"name"` // "taler-directory" + + // Supported registration methods + Methods []Method `json:"methods"` + + // fee for one month of registration + Monthly_fee string `json:"monthly_fee"` + +} + +type Method struct { + // Name of the method, e.g. "email" or "sms". + Name string `json:"name"` + + // per challenge fee + Challenge_fee string `json:"challenge_fee"` + +} + // A mappind entry from the identity key hash to a wallet key // The identity key hash is sha256(sha256(identity)|salt) where identity is // one of the identity key types supported (e.g. email) @@ -192,31 +218,46 @@ func addPendingValidation(w http.ResponseWriter, r *http.Request){ sendEmail(vars["identity"], validation) } -// Add a new message -func addMessageToInbox(w http.ResponseWriter, r *http.Request) { +func notImplemented(w http.ResponseWriter, r *http.Request) { + return } -// Add a new message -func getInboxMessages(w http.ResponseWriter, r *http.Request) { +func configResponse(w http.ResponseWriter, r *http.Request) { + //FIXME properly collect configured methods + //cfg.Section("taldir").Key("methods").MustString(""), + //=> cfg.Section("taldir-<method>").Key("challenge_fee").MustString("1 Kudos"), + cfg := VersionResponse{ + Version: "0:0:0", + Name: "taler-directory", + Monthly_fee: cfg.Section("taldir").Key("monthly_fee").MustString("1 Kudos"), + Methods: []Method{ + Method{ + Name: "email", + Challenge_fee: cfg.Section("taldir-email").Key("challenge_fee").MustString("1 Kudos"), + }, + }, + } + w.Header().Set("Content-Type", "application/json") + response, _ := json.Marshal(cfg) + w.Write(response) } -// Add a new message -func deleteInboxMessages(w http.ResponseWriter, r *http.Request) { -} +func handleRequests() { + myRouter := mux.NewRouter().StrictSlash(true) + /* ToS API */ + myRouter.HandleFunc("/terms", notImplemented).Methods("GET") + myRouter.HandleFunc("/privacy", notImplemented).Methods("GET") + + /* Config API */ + myRouter.HandleFunc("/config", configResponse).Methods("GET") -func handleRequests() { - myRouter := mux.NewRouter().StrictSlash(true) /* Registration API */ myRouter.HandleFunc("/directory/{identity_key}", returnSingleEntry).Methods("GET") myRouter.HandleFunc("/validation/{reference}", validateSingleEntry).Methods("GET") myRouter.HandleFunc("/register/{identity}", addPendingValidation).Methods("POST") - /* Inbox API */ - myRouter.HandleFunc("/inbox/{identity_key}", addMessageToInbox).Methods("POST") - myRouter.HandleFunc("/inbox/{identity_key}", getInboxMessages).Methods("GET") - myRouter.HandleFunc("/inbox/{identity_key}/{message_idx}", deleteInboxMessages).Methods("DELETE") log.Fatal(http.ListenAndServe(cfg.Section("taldir").Key("bind_to").MustString("localhost:11000"), myRouter)) }