Skip to content

Commit d58c216

Browse files
author
Niels Möller
committed
witnessctl: Add bastion config
1 parent 2925a1d commit d58c216

1 file changed

Lines changed: 46 additions & 1 deletion

File tree

cmd/witnessctl/witnessctl.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"io"
99
"log"
10+
"net"
1011
"net/http"
1112
"os"
1213
"strings"
@@ -26,6 +27,8 @@ func usage() {
2627
fmt.Println(" add-log -db <path> -origin <origin>")
2728
fmt.Println(" add-key -db <path> -origin <origin> -key <verifier key>")
2829
fmt.Println(" del-key -db <path> -origin <origin> -key <verifier key>")
30+
fmt.Println(" add-bastion -db <path> -origin <origin> -bastion <address:port>")
31+
fmt.Println(" del-bastion -db <path> -origin <origin> -bastion <address:port>")
2932
fmt.Println(" add-sigsum-log -db <path> -key <hex-encoded key>")
3033
fmt.Println(" pull-logs -db <path> -source <witness url> [-verbose]")
3134
fmt.Println(" list-logs -db <path>")
@@ -63,6 +66,23 @@ func main() {
6366
delKey(db, *originFlag, *keyFlag)
6467
log.Printf("Deleted key %q for log %q.", *keyFlag, *originFlag)
6568

69+
case "add-bastion":
70+
originFlag := fs.String("origin", "", "log name")
71+
bastionFlag := fs.String("bastion", "", "address:port")
72+
fs.Parse(os.Args[2:])
73+
checkBastion(*bastionFlag)
74+
db := openDB(*dbFlag)
75+
addBastion(db, *originFlag, *bastionFlag)
76+
log.Printf("Added bastion %q for log %q.", *bastionFlag, *originFlag)
77+
78+
case "del-bastion":
79+
originFlag := fs.String("origin", "", "log name")
80+
bastionFlag := fs.String("bastion", "", "address:port")
81+
fs.Parse(os.Args[2:])
82+
db := openDB(*dbFlag)
83+
delBastion(db, *originFlag, *bastionFlag)
84+
log.Printf("Deleted bastion %q for log %q.", *bastionFlag, *originFlag)
85+
6686
case "add-sigsum-log":
6787
keyFlag := fs.String("key", "", "hex-encoded key")
6888
fs.Parse(os.Args[2:])
@@ -112,6 +132,12 @@ func checkKeyMatches(origin string, vk string) {
112132
}
113133
}
114134

135+
func checkBastion(bastion string) {
136+
if _, _, err := net.SplitHostPort(bastion); err != nil {
137+
log.Fatalf("Error parsing bastion %q as address:port: %v", bastion, err)
138+
}
139+
}
140+
115141
func addKey(db *sqlite.Conn, origin string, vk string) {
116142
err := sqlitexExec(db, "INSERT INTO key (origin, key) VALUES (?, ?)", nil, origin, vk)
117143
if err != nil {
@@ -129,6 +155,23 @@ func delKey(db *sqlite.Conn, origin string, vk string) {
129155
}
130156
}
131157

158+
func addBastion(db *sqlite.Conn, origin string, bastion string) {
159+
err := sqlitexExec(db, "INSERT INTO bastion (origin, bastion) VALUES (?, ?)", nil, origin, bastion)
160+
if err != nil {
161+
log.Fatalf("Error adding bastion: %v", err)
162+
}
163+
}
164+
165+
func delBastion(db *sqlite.Conn, origin string, bastion string) {
166+
err := sqlitexExec(db, "DELETE FROM bastion WHERE origin = ? AND bastion = ?", nil, origin, bastion)
167+
if err != nil {
168+
log.Fatalf("Error deleting bastion: %v", err)
169+
}
170+
if db.Changes() == 0 {
171+
log.Fatalf("Bastion %q not found.", bastion)
172+
}
173+
}
174+
132175
func addSigsumLog(db *sqlite.Conn, keyFlag string) {
133176
if len(keyFlag) != sigsum.PublicKeySize*2 {
134177
log.Fatal("Key must be 32 hex-encoded bytes.")
@@ -230,10 +273,12 @@ func listLogs(db *sqlite.Conn) {
230273
'origin', log.origin,
231274
'size', log.tree_size,
232275
'root_hash', log.tree_hash,
233-
'keys', json_group_array(key.key))
276+
'keys', json_group_array(key.key),
277+
'bastions', json_group_array(bastion.bastion))
234278
FROM
235279
log
236280
LEFT JOIN key on log.origin = key.origin
281+
LEFT JOIN bastion on log.origin = bastion.origin
237282
GROUP BY
238283
log.origin
239284
ORDER BY

0 commit comments

Comments
 (0)