gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]