[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taldir] 01/02: refactoring
From: |
gnunet |
Subject: |
[taler-taldir] 01/02: refactoring |
Date: |
Thu, 07 Jul 2022 21:36:05 +0200 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository taldir.
commit 1b6093863884b746dcae66c82fb3bf748feb4b78
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Thu Jul 7 21:33:41 2022 +0200
refactoring
---
Makefile | 4 +--
cmd/taldir-cli/main.go | 46 ++++++++++++++++++++++++++++-
cmd/taldir-server/main.go | 24 ++-------------
cmd/taldir-server/main_test.go | 9 +++---
go.mod | 2 +-
{cmd/taldir-server => pkg/taldir}/taldir.go | 40 ++++++++++++++++++++-----
{util => pkg/util}/base32.go | 0
{util => pkg/util}/helper.go | 0
8 files changed, 88 insertions(+), 37 deletions(-)
diff --git a/Makefile b/Makefile
index 25f0f78..0f39e2a 100644
--- a/Makefile
+++ b/Makefile
@@ -3,11 +3,11 @@ all: gana server cli
SCRIPT_TARGET:=$(shell dirname $(shell go list -f '{{.Target}}'
./cmd/taldir-server))
gana:
- mkdir -p gana
+ mkdir -p pkg/gana
git submodule update --init --recursive
git submodule sync --recursive
cd contrib/gana/gnu-taler-error-codes && make taler_error_codes.go
- cp contrib/gana/gnu-taler-error-codes/taler_error_codes.go gana/
+ cp contrib/gana/gnu-taler-error-codes/taler_error_codes.go pkg/gana/
server:
go build ./cmd/taldir-server
diff --git a/cmd/taldir-cli/main.go b/cmd/taldir-cli/main.go
index 5ab95b2..3bbb984 100644
--- a/cmd/taldir-cli/main.go
+++ b/cmd/taldir-cli/main.go
@@ -23,7 +23,10 @@ import (
"os"
"fmt"
"flag"
- "taler.net/taldir/util"
+ "bufio"
+ "log"
+ "taler.net/taldir/pkg/taldir"
+ "taler.net/taldir/pkg/util"
"crypto/sha512"
)
@@ -41,6 +44,11 @@ func main() {
var codeFlag = flag.String("c", "", "Activation code")
var pubkeyFlag = flag.String("p", "", "Public key")
var addressFlag = flag.String("a", "", "Address")
+ var delEntryFlag = flag.Bool("d", false, "Delete Entry for the specificied
address")
+ var delValidationFlag = flag.Bool("p", false, "Delete validation for the
specificied address")
+
+ var dropFlag = flag.Bool("D", false, "Drop all data in table (DANGEROUS!)")
+ var cfgFlag = flag.String("c", "", "Configuration file to use")
flag.Parse()
if *solveFlag {
if len(*codeFlag) == 0 || len(*pubkeyFlag) == 0 {
@@ -58,4 +66,40 @@ func main() {
fmt.Println(generateLink(*addressFlag, *codeFlag))
os.Exit(0)
}
+ cfgfile := "taldir.conf"
+ if len(*cfgFlag) != 0 {
+ cfgfile = *cfgFlag
+ }
+ t := taldir.Taldir{}
+ t.Initialize(cfgfile)
+ if *dropFlag {
+ fmt.Println("Really delete all data in database? [y/N]:")
+ reader := bufio.NewReader(os.Stdin)
+ char, _, err := reader.ReadRune()
+
+ if err == nil {
+ fmt.Println(char)
+ if char == 'y' {
+ t.ClearDatabase()
+ }
+ os.Exit(0)
+ }
+ os.Exit(1)
+ }
+ if *delEntryFlag {
+ if len(*addressFlag) == 0 {
+ log.Fatal("No address provided!")
+ }
+ t.DeleteEntry(*addressFlag)
+ }
+ if *delValidationFlag {
+ if len(*addressFlag) == 0 {
+ log.Fatal("No address provided!")
+ }
+ t.DeleteValidation(*addressFlag)
+ }
+
+
+ t.Run()
+
}
diff --git a/cmd/taldir-server/main.go b/cmd/taldir-server/main.go
index 1fe4565..6b9261e 100644
--- a/cmd/taldir-server/main.go
+++ b/cmd/taldir-server/main.go
@@ -28,36 +28,18 @@ package main
*/
import (
- "os"
- "fmt"
- "bufio"
"flag"
+ "taler.net/taldir/pkg/taldir"
)
func main() {
- var dropFlag = flag.Bool("D", false, "Drop all data in table (DANGEROUS!)")
var cfgFlag = flag.String("c", "", "Configuration file to use")
flag.Parse()
cfgfile := "taldir.conf"
if len(*cfgFlag) != 0 {
cfgfile = *cfgFlag
}
- t := Taldir{}
- clearDb := false
- if *dropFlag {
- fmt.Println("Really delete all data in database? [y/N]:")
- reader := bufio.NewReader(os.Stdin)
- char, _, err := reader.ReadRune()
-
- if err == nil {
- fmt.Println(char)
- if char == 'y' {
- clearDb = true
- }
- os.Exit(0)
- }
- os.Exit(1)
- }
- t.Initialize(cfgfile, clearDb)
+ t := taldir.Taldir{}
+ t.Initialize(cfgfile)
t.Run()
}
diff --git a/cmd/taldir-server/main_test.go b/cmd/taldir-server/main_test.go
index 027e574..fd54292 100644
--- a/cmd/taldir-server/main_test.go
+++ b/cmd/taldir-server/main_test.go
@@ -29,11 +29,12 @@ import (
"strings"
"io/ioutil"
"log"
- "taler.net/taldir/cmd/taldir-server"
- "taler.net/taldir/util"
+ "taler.net/taldir/pkg/taldir"
+ _ "taler.net/taldir/cmd/taldir-server"
+ "taler.net/taldir/pkg/util"
)
-var t main.Taldir
+var t taldir.Taldir
var validRegisterRequest = []byte(`
{
@@ -55,7 +56,7 @@ var validRegisterRequestShort = []byte(`
func TestMain(m *testing.M) {
- t.Initialize("testdata/taldir-test.conf", true)
+ t.Initialize("testdata/taldir-test.conf")
code := m.Run()
t.ClearDatabase()
os.Exit(code)
diff --git a/go.mod b/go.mod
index 205e81d..b5dfeef 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,7 @@ require (
github.com/jinzhu/now v1.1.5 // indirect
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
- golang.org/x/text v0.3.7 // indirect
+ golang.org/x/text v0.3.7
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
diff --git a/cmd/taldir-server/taldir.go b/pkg/taldir/taldir.go
similarity index 96%
rename from cmd/taldir-server/taldir.go
rename to pkg/taldir/taldir.go
index 74973be..57a71b5 100644
--- a/cmd/taldir-server/taldir.go
+++ b/pkg/taldir/taldir.go
@@ -16,8 +16,7 @@
//
// SPDX-License-Identifier: AGPL3.0-or-later
-
-package main
+package taldir
/* TODO
- ToS API (terms, privacy) with localizions
@@ -43,8 +42,8 @@ import (
"github.com/gorilla/mux"
"gorm.io/gorm"
"encoding/base64"
- "taler.net/taldir/util"
- "taler.net/taldir/gana"
+ "taler.net/taldir/pkg/util"
+ "taler.net/taldir/pkg/gana"
"crypto/sha512"
"gorm.io/driver/postgres"
"gopkg.in/ini.v1"
@@ -466,6 +465,34 @@ func (t *Taldir) validationPage(w http.ResponseWriter, r
*http.Request) {
return
}
+func (t *Taldir) DeleteValidation(addr string) error {
+
+ var validation Validation
+ h := sha512.New()
+ h.Write([]byte(addr))
+ h_addr := util.EncodeBinaryToString(h.Sum(nil))
+ err := t.Db.First(&validation, "h_address = ?", h_addr).Error
+ if nil == err {
+ err = t.Db.Delete(&validation).Error
+ }
+ return err
+}
+
+
+func (t *Taldir) DeleteEntry(addr string) error {
+
+ var entry Entry
+ h := sha512.New()
+ h.Write([]byte(addr))
+ h_addr := util.EncodeBinaryToString(h.Sum(nil))
+ hs_address := saltHAddress(h_addr, t.Salt)
+ err := t.Db.First(&entry, "hs_address = ?", hs_address).Error
+ if nil == err {
+ err = t.Db.Delete(&entry).Error
+ }
+ return err
+}
+
func (t *Taldir) ClearDatabase() {
t.Db.Where("1 = 1").Delete(&Entry{})
t.Db.Where("1 = 1").Delete(&Validation{})
@@ -579,7 +606,7 @@ func (t *Taldir) handleRequests() {
log.Fatal(http.ListenAndServe(t.Cfg.Section("taldir").Key("bind_to").MustString("localhost:11000"),
t.Router))
}
-func (t *Taldir) Initialize(cfgfile string, clearDb bool) {
+func (t *Taldir) Initialize(cfgfile string) {
_cfg, err := ini.Load(cfgfile)
if err != nil {
fmt.Printf("Failed to read config: %v", err)
@@ -612,9 +639,6 @@ func (t *Taldir) Initialize(cfgfile string, clearDb bool) {
if err := t.Db.AutoMigrate(&Validation{}); err != nil {
panic(err)
}
- if clearDb {
- t.ClearDatabase()
- }
validationLandingTplFile :=
t.Cfg.Section("taldir").Key("validation_landing").MustString("templates/validation_landing.html")
t.ValidationTpl, err = template.ParseFiles(validationLandingTplFile)
diff --git a/util/base32.go b/pkg/util/base32.go
similarity index 100%
rename from util/base32.go
rename to pkg/util/base32.go
diff --git a/util/helper.go b/pkg/util/helper.go
similarity index 100%
rename from util/helper.go
rename to pkg/util/helper.go
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.