From 728a3b307cd2326cc9f7511f96f2b722b47afcff Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Sun, 8 Dec 2019 14:42:49 +0100 Subject: [PATCH] Introducing storage_facility --- htdocs/src/views/zone-list.vue | 7 ++++++- struct/db.go | 1 + struct/zone.go | 35 +++++++++++++++++----------------- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/htdocs/src/views/zone-list.vue b/htdocs/src/views/zone-list.vue index d57fbc83..d679d89e 100644 --- a/htdocs/src/views/zone-list.vue +++ b/htdocs/src/views/zone-list.vue @@ -92,6 +92,10 @@ placeholder="bar==" ref="keyblob" > + + Live only + With history + @@ -106,7 +110,7 @@ export default { data: function () { return { domainNameState: null, - newForm: {}, + newForm: { storage_facility: 'live' }, zones: [] } }, @@ -160,6 +164,7 @@ export default { this.newForm.server = '' this.newForm.keyname = '' this.newForm.keyblob = '' + this.newForm.storage_facility = 'live' this.newForm.domainNameState = null this.newForm.domainServerState = null this.newForm.keyNameState = null diff --git a/struct/db.go b/struct/db.go index 7f31cb56..cce77f72 100644 --- a/struct/db.go +++ b/struct/db.go @@ -86,6 +86,7 @@ CREATE TABLE IF NOT EXISTS zones( key_name VARCHAR(255) NOT NULL, key_algo ENUM("hmac-md5.sig-alg.reg.int.", "hmac-sha1.", "hmac-sha224.", "hmac-sha256.", "hmac-sha384.", "hmac-sha512.") NOT NULL DEFAULT "hmac-sha256.", key_blob BLOB NOT NULL, + storage_facility ENUM("live", "history") NOT NULL DEFAULT "live", FOREIGN KEY(id_user) REFERENCES users(id_user) ) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; `); err != nil { diff --git a/struct/zone.go b/struct/zone.go index d037a8ed..7bd1d326 100644 --- a/struct/zone.go +++ b/struct/zone.go @@ -5,24 +5,25 @@ import ( ) type Zone struct { - Id int64 `json:"id"` - idUser int64 - DomainName string `json:"domain"` - Server string `json:"server,omitempty"` - KeyName string `json:"keyname,omitempty"` - KeyAlgo string `json:"algorithm,omitempty"` - KeyBlob []byte `json:"keyblob,omitempty"` + Id int64 `json:"id"` + idUser int64 + DomainName string `json:"domain"` + Server string `json:"server,omitempty"` + KeyName string `json:"keyname,omitempty"` + KeyAlgo string `json:"algorithm,omitempty"` + KeyBlob []byte `json:"keyblob,omitempty"` + StorageFacility string `json:"storage_facility,omitempty"` } func GetZones() (zones []Zone, err error) { - if rows, errr := DBQuery("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob FROM zones"); errr != nil { + if rows, errr := DBQuery("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob, storage_facility FROM zones"); errr != nil { return nil, errr } else { defer rows.Close() for rows.Next() { var z Zone - if err = rows.Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob); err != nil { + if err = rows.Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob, &z.StorageFacility); err != nil { return } zones = append(zones, z) @@ -36,14 +37,14 @@ func GetZones() (zones []Zone, err error) { } func (u *User) GetZones() (zones []Zone, err error) { - if rows, errr := DBQuery("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob FROM zones WHERE id_user = ?", u.Id); errr != nil { + if rows, errr := DBQuery("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob, storage_facility FROM zones WHERE id_user = ?", u.Id); errr != nil { return nil, errr } else { defer rows.Close() for rows.Next() { var z Zone - if err = rows.Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob); err != nil { + if err = rows.Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob, &z.StorageFacility); err != nil { return } zones = append(zones, z) @@ -57,22 +58,22 @@ func (u *User) GetZones() (zones []Zone, err error) { } func GetZone(id int) (z Zone, err error) { - err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob FROM zones WHERE id_zone=?", id).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob) + err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob, storage_facility FROM zones WHERE id_zone=?", id).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob, &z.StorageFacility) return } func (u *User) GetZone(id int) (z Zone, err error) { - err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob FROM zones WHERE id_zone=? AND id_user=?", id, u.Id).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob) + err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob, storage_facility FROM zones WHERE id_zone=? AND id_user=?", id, u.Id).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob, &z.StorageFacility) return } func GetZoneByDN(dn string) (z Zone, err error) { - err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob FROM zones WHERE domain=?", dn).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob) + err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob, storage_facility FROM zones WHERE domain=?", dn).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob, &z.StorageFacility) return } func (u *User) GetZoneByDN(dn string) (z Zone, err error) { - err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob FROM zones WHERE domain=? AND id_user=?", dn, u.Id).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob) + err = DBQueryRow("SELECT id_zone, id_user, domain, server, key_name, key_algo, key_blob, storage_facility FROM zones WHERE domain=? AND id_user=?", dn, u.Id).Scan(&z.Id, &z.idUser, &z.DomainName, &z.Server, &z.KeyName, &z.KeyAlgo, &z.KeyBlob, &z.StorageFacility) return } @@ -83,7 +84,7 @@ func ZoneExists(dn string) bool { } func (z *Zone) NewZone(u User) (Zone, error) { - if res, err := DBExec("INSERT INTO zones (id_user, domain, server, key_name, key_blob) VALUES (?, ?, ?, ?, ?)", u.Id, z.DomainName, z.Server, z.KeyName, z.KeyBlob); err != nil { + if res, err := DBExec("INSERT INTO zones (id_user, domain, server, key_name, key_blob, storage_facility) VALUES (?, ?, ?, ?, ?, ?)", u.Id, z.DomainName, z.Server, z.KeyName, z.KeyBlob, z.StorageFacility); err != nil { return *z, err } else if z.Id, err = res.LastInsertId(); err != nil { return *z, err @@ -93,7 +94,7 @@ func (z *Zone) NewZone(u User) (Zone, error) { } func (z *Zone) Update() (int64, error) { - if res, err := DBExec("UPDATE zones SET domain = ?, key_name = ?, key_algo = ?, key_blob = ? WHERE id_zone = ?", z.DomainName, z.KeyName, z.KeyAlgo, z.KeyBlob, z.Id); err != nil { + if res, err := DBExec("UPDATE zones SET domain = ?, key_name = ?, key_algo = ?, key_blob = ?, storage_facility = ? WHERE id_zone = ?", z.DomainName, z.KeyName, z.KeyAlgo, z.KeyBlob, z.StorageFacility, z.Id); err != nil { return 0, err } else if nb, err := res.RowsAffected(); err != nil { return 0, err