-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
104 lines (99 loc) · 2.15 KB
/
main.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
//go:generate protoc -I . --go_out=. ./protocol/nylon.proto
package main
import (
"github.com/encodeous/nylon/cmd"
"github.com/encodeous/nylon/core"
"github.com/encodeous/nylon/state"
"log/slog"
"sync"
"time"
)
//func mock() (*state.CentralCfg, *state.NodeCfg, error) {
// _, nodeKey, err := ed25519.GenerateKey(nil)
// if err != nil {
// return nil, nil, err
// }
//
// certTemplate := x509.Certificate{
// PublicKey: nodeKey.Public(),
// Subject: pkix.Name{
// CommonName: "dummyNode",
// },
// IsCA: false,
// SubjectKeyId: nil,
// NotBefore: time.Now(),
// NotAfter: time.Now().AddDate(10, 0, 0),
// SerialNumber: big.NewInt(time.Now().Unix()),
// }
//
// ss, err := x509.CreateCertificate(rand.Reader, &certTemplate, &certTemplate, certTemplate.PublicKey, nodeKey)
// if err != nil {
// return nil, nil, err
// }
//
// dpKey, err := ecdh.X25519().GenerateKey(rand.Reader)
// mockNode := state.NodeCfg{
// Id: "currentNode",
// Key: state.EdPrivateKey(nodeKey),
// WgKey: (*state.EcPrivateKey)(dpKey),
// Cert: state.Cert(ss),
// }
//
// mockPubNode := mockNode.GeneratePubCfg()
//
// mockCentralCfg := state.CentralCfg{
// RootPubKey: ss,
// Nodes: []state.PubNodeCfg{
// mockPubNode,
// },
// Version: 0,
// }
//
// return &mockCentralCfg, &mockNode, nil
//}
func main() {
cmd.Execute()
return
ccfg, ncfg, err := state.MockCfg()
if err != nil {
panic(err)
}
wg := sync.WaitGroup{}
for x, node := range ncfg {
wg.Add(1)
go func() {
defer wg.Done()
level := slog.LevelInfo
if x == 0 {
level = slog.LevelDebug
}
err := core.Start(ccfg, node, level)
if err != nil {
panic(err)
}
}()
}
go func() {
wg.Add(1)
defer wg.Done()
// weight changer
for {
//slog.Info("Changing Weights...")
//for _, edge := range ccfg.mockWeights {
// met := edge.V3
// res := rand.Int()%4 == 0
// if res && *met > 1 {
// *met--
// } else {
// *met += time.Millisecond * time.Duration(rand.Int()%15+5)
// }
// if *met == 0 {
// *met++
// }
// slog.Info("changed", "a", edge.V1, "b", edge.V2, "met", *edge.V3)
//}
time.Sleep(time.Second * 10)
}
}()
wg.Wait()
}