This repository has been archived by the owner on Dec 14, 2023. It is now read-only.
/
debug-db.go
112 lines (93 loc) · 2.44 KB
/
debug-db.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package main
import (
"fmt"
"github.com/openziti/edge/controller/model"
"github.com/openziti/edge/controller/persistence"
"github.com/openziti/edge/eid"
"github.com/openziti/fabric/controller/db"
"github.com/openziti/fabric/controller/network"
"github.com/openziti/foundation/storage/boltz"
"go.etcd.io/bbolt"
"os"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("must specify path to bbolt database")
os.Exit(1)
}
run(os.Args[1])
}
func noError(err error) {
if err != nil {
panic(err)
}
}
type dbProvider struct {
db boltz.Db
stores *db.Stores
controllers *network.Controllers
}
func (provider *dbProvider) GetDb() boltz.Db {
return provider.db
}
func (provider *dbProvider) GetServiceCache() network.Cache {
panic("implement me")
}
func (provider *dbProvider) NotifyRouterRenamed(_, _ string) {}
func (provider *dbProvider) GetStores() *db.Stores {
return provider.stores
}
func (provider *dbProvider) GetControllers() *network.Controllers {
return provider.controllers
}
func run(dbFile string) {
boltDb, err := db.Open(dbFile, false)
noError(err)
fabricStores, err := db.InitStores(boltDb)
noError(err)
controllers := network.NewControllers(boltDb, fabricStores)
dbProvider := &dbProvider{
db: boltDb,
stores: fabricStores,
controllers: controllers,
}
stores, err := persistence.NewBoltStores(dbProvider)
noError(err)
id := "7dbd3fc9-e4c8-489a-ab8f-4bbb3d768f57"
err = dbProvider.GetDb().Update(func(tx *bbolt.Tx) error {
identity, _ := stores.Identity.LoadOneById(tx, id)
if identity == nil {
identity = &persistence.Identity{
BaseExtEntity: boltz.BaseExtEntity{Id: id},
Name: "DebugAdmin",
IdentityTypeId: "User",
IsDefaultAdmin: false,
IsAdmin: true,
}
ctx := boltz.NewMutateContext(tx)
if err = stores.Identity.Create(ctx, identity); err != nil {
return err
}
authHandler := model.AuthenticatorHandler{}
result := authHandler.HashPassword("admin")
authenticator := &persistence.AuthenticatorUpdb{
Authenticator: persistence.Authenticator{
BaseExtEntity: boltz.BaseExtEntity{
Id: eid.New(),
},
Type: "updb",
IdentityId: id,
},
Username: "admin",
Password: result.Password,
Salt: result.Salt,
}
authenticator.SubType = authenticator
if err = stores.Authenticator.Create(ctx, authenticator); err != nil {
return err
}
}
return nil
})
noError(err)
}