1
0
Fork 0
mirror of https://github.com/postmannen/ctrl.git synced 2025-03-31 01:24:31 +00:00

fixed error with missing database folder, also added sending all keys to to acked and not acked nodes

This commit is contained in:
postmannen 2025-01-09 08:07:58 +01:00
parent 13feea1bfe
commit 9a0fe9ae7a
3 changed files with 19 additions and 22 deletions

View file

@ -199,6 +199,7 @@ func (c *centralAuth) deletePublicKeys(proc process, msg Message, nodes []string
// dbUpdatePublicKey will update the public key for a node in the db. // dbUpdatePublicKey will update the public key for a node in the db.
func (p *pki) dbUpdatePublicKey(node string, value []byte) error { func (p *pki) dbUpdatePublicKey(node string, value []byte) error {
fmt.Printf("\n ***** DEBUG: %v\n\n", p.db)
err := p.db.Update(func(tx *bolt.Tx) error { err := p.db.Update(func(tx *bolt.Tx) error {
//Create a bucket //Create a bucket
bu, err := tx.CreateBucketIfNotExists([]byte(p.bucketNamePublicKeys)) bu, err := tx.CreateBucketIfNotExists([]byte(p.bucketNamePublicKeys))

View file

@ -326,26 +326,16 @@ func methodKeysAllow(proc process, message Message, node string) ([]byte, error)
// also able to send an update to them as well. // also able to send an update to them as well.
func pushKeys(proc process, message Message, nodes []Node) error { func pushKeys(proc process, message Message, nodes []Node) error {
er := fmt.Errorf("info: beginning of pushKeys, nodes=%v", nodes) er := fmt.Errorf("info: beginning of pushKeys, nodes=%v", nodes)
var knh []byte
proc.errorKernel.logDebug(er) proc.errorKernel.logDebug(er)
err := func() error { proc.centralAuth.pki.nodesAcked.mu.Lock()
proc.centralAuth.pki.nodesAcked.mu.Lock() defer proc.centralAuth.pki.nodesAcked.mu.Unlock()
defer proc.centralAuth.pki.nodesAcked.mu.Unlock()
b, err := json.Marshal(proc.centralAuth.pki.nodesAcked.keysAndHash)
if err != nil {
er := fmt.Errorf("error: methodKeysAllow, failed to marshal keys map: %v", err)
return er
}
copy(knh, b)
return nil
}()
// Create the data payload of the current allowed keys.
b, err := json.Marshal(proc.centralAuth.pki.nodesAcked.keysAndHash)
if err != nil { if err != nil {
return err er := fmt.Errorf("error: methodKeysAllow, failed to marshal keys map: %v", err)
proc.errorKernel.errSend(proc, message, er, logWarning)
} }
// proc.centralAuth.pki.nodeNotAckedPublicKeys.mu.Lock() // proc.centralAuth.pki.nodeNotAckedPublicKeys.mu.Lock()
@ -358,7 +348,7 @@ func pushKeys(proc process, message Message, nodes []Node) error {
msg := Message{ msg := Message{
ToNode: n, ToNode: n,
Method: KeysUpdateReceive, Method: KeysUpdateReceive,
Data: knh, Data: b,
ReplyMethod: None, ReplyMethod: None,
ACKTimeout: 0, ACKTimeout: 0,
} }
@ -369,9 +359,6 @@ func pushKeys(proc process, message Message, nodes []Node) error {
proc.errorKernel.logDebug(er) proc.errorKernel.logDebug(er)
} }
proc.centralAuth.pki.nodesAcked.mu.Lock()
defer proc.centralAuth.pki.nodesAcked.mu.Unlock()
// Concatenate the current nodes in the keysAndHash map and the nodes // Concatenate the current nodes in the keysAndHash map and the nodes
// we got from the function argument when this function was called. // we got from the function argument when this function was called.
nodeMap := make(map[Node]struct{}) nodeMap := make(map[Node]struct{})
@ -390,7 +377,7 @@ func pushKeys(proc process, message Message, nodes []Node) error {
msg := Message{ msg := Message{
ToNode: n, ToNode: n,
Method: KeysUpdateReceive, Method: KeysUpdateReceive,
Data: knh, Data: b,
ReplyMethod: None, ReplyMethod: None,
ACKTimeout: 0, ACKTimeout: 0,
} }

View file

@ -207,6 +207,15 @@ func NewServer(configuration *Configuration, version string) (*server, error) {
} }
} }
// Check if tmp folder for socket exists, if not create it
if _, err := os.Stat(configuration.DatabaseFolder); os.IsNotExist(err) {
err := os.MkdirAll(configuration.DatabaseFolder, 0770)
if err != nil {
cancel()
return nil, fmt.Errorf("error: failed to create database folder directory %v: %v", configuration.DatabaseFolder, err)
}
}
//var nodeAuth *nodeAuth //var nodeAuth *nodeAuth
//if configuration.EnableSignatureCheck { //if configuration.EnableSignatureCheck {
nodeAuth := newNodeAuth(configuration, errorKernel) nodeAuth := newNodeAuth(configuration, errorKernel)
@ -258,7 +267,7 @@ func NewServer(configuration *Configuration, version string) (*server, error) {
if configuration.SubscribersDataFolder == "" { if configuration.SubscribersDataFolder == "" {
return nil, fmt.Errorf("error: subscribersDataFolder value is empty, you need to provide the config or the flag value at startup %v: %v", configuration.SubscribersDataFolder, err) return nil, fmt.Errorf("error: subscribersDataFolder value is empty, you need to provide the config or the flag value at startup %v: %v", configuration.SubscribersDataFolder, err)
} }
err := os.Mkdir(configuration.SubscribersDataFolder, 0770) err := os.MkdirAll(configuration.SubscribersDataFolder, 0770)
if err != nil { if err != nil {
return nil, fmt.Errorf("error: failed to create data folder directory %v: %v", configuration.SubscribersDataFolder, err) return nil, fmt.Errorf("error: failed to create data folder directory %v: %v", configuration.SubscribersDataFolder, err)
} }