permissions: code change based on review feedback

This commit is contained in:
vsmk98 2019-05-10 10:49:16 +08:00
parent f3b222af08
commit e76ba8c637
1 changed files with 24 additions and 8 deletions

View File

@ -65,6 +65,7 @@ type PermissionCtrl struct {
permRole *pbind.RoleManager permRole *pbind.RoleManager
permOrg *pbind.OrgManager permOrg *pbind.OrgManager
permConfig *types.PermissionConfig permConfig *types.PermissionConfig
mux sync.Mutex
} }
func (p *PermissionCtrl) Interface() *pbind.PermInterface { func (p *PermissionCtrl) Interface() *pbind.PermInterface {
@ -191,7 +192,22 @@ func NewQuorumPermissionCtrl(stack *node.Node, permissionedMode, isRaft bool, pc
log.Error("Permissions not enabled for the network", "err", err) log.Error("Permissions not enabled for the network", "err", err)
return nil, err return nil, err
} }
return &PermissionCtrl{stack, stateReader, e, isRaft, permissionedMode, stack.GetNodeKey(), stack.DataDir(), pu, pm, pmNode, pmAcct, pmRole, pmOrg, pconfig}, nil return &PermissionCtrl{
node: stack,
ethClnt: stateReader,
eth: e,
isRaft: isRaft,
permissionedMode: permissionedMode,
key: stack.GetNodeKey(),
dataDir: stack.DataDir(),
permUpgr: pu,
permInterf: pm,
permNode: pmNode,
permAcct: pmAcct,
permRole: pmRole,
permOrg: pmOrg,
permConfig: pconfig,
}, nil
} }
// Starts the node permissioning and event monitoring for permissions // Starts the node permissioning and event monitoring for permissions
@ -387,14 +403,14 @@ func (p *PermissionCtrl) updatePermissionedNodes(enodeId string, operation NodeO
} }
p.disconnectNode(enodeId) p.disconnectNode(enodeId)
} }
mu := sync.RWMutex{}
blob, _ = json.Marshal(nodelist) blob, _ = json.Marshal(nodelist)
mu.Lock() p.mux.Lock()
defer p.mux.Unlock()
if err := ioutil.WriteFile(path, blob, 0644); err != nil { if err := ioutil.WriteFile(path, blob, 0644); err != nil {
log.Error("updatePermissionedNodes: Error writing new node info to file", "err", err) log.Error("updatePermissionedNodes: Error writing new node info to file", "err", err)
} }
mu.Unlock()
} }
//this function populates the black listed node information into the disallowed-nodes.json file //this function populates the black listed node information into the disallowed-nodes.json file
@ -430,14 +446,14 @@ func (p *PermissionCtrl) updateDisallowedNodes(url string) {
} }
nodelist = append(nodelist, url) nodelist = append(nodelist, url)
mu := sync.RWMutex{}
blob, _ := json.Marshal(nodelist) blob, _ := json.Marshal(nodelist)
mu.Lock()
p.mux.Lock()
defer p.mux.Unlock()
if err := ioutil.WriteFile(path, blob, 0644); err != nil { if err := ioutil.WriteFile(path, blob, 0644); err != nil {
log.Error("updateDisallowedNodes: Error writing new node info to file", "err", err) log.Error("updateDisallowedNodes: Error writing new node info to file", "err", err)
} }
mu.Unlock()
// Disconnect the peer if it is already connected // Disconnect the peer if it is already connected
p.disconnectNode(url) p.disconnectNode(url)
} }