mirror of
https://github.com/lightninglabs/lightning-terminal.git
synced 2026-08-13 12:33:36 +02:00
firewall+rules: map with privacy flags
We change the rule mapping to accept the newly added privacy flags. Peer and channel restrictions can be controlled with privacy flags.
This commit is contained in:
parent
cb542a5015
commit
1636bb2bd6
10 changed files with 138 additions and 69 deletions
|
|
@ -224,12 +224,7 @@ func (r *RuleEnforcer) handleRequest(ctx context.Context,
|
|||
return nil, fmt.Errorf("could not extract ID from macaroon")
|
||||
}
|
||||
|
||||
groupID, err := r.sessionDB.GetGroupID(sessionID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rules, err := r.collectEnforcers(ri, groupID)
|
||||
rules, err := r.collectEnforcers(ri, sessionID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error parsing rules: %v", err)
|
||||
}
|
||||
|
|
@ -269,12 +264,7 @@ func (r *RuleEnforcer) handleResponse(ctx context.Context,
|
|||
return nil, fmt.Errorf("could not extract ID from macaroon")
|
||||
}
|
||||
|
||||
groupID, err := r.sessionDB.GetGroupID(sessionID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
enforcers, err := r.collectEnforcers(ri, groupID)
|
||||
enforcers, err := r.collectEnforcers(ri, sessionID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error parsing rules: %v", err)
|
||||
}
|
||||
|
|
@ -308,12 +298,7 @@ func (r *RuleEnforcer) handleErrorResponse(ctx context.Context,
|
|||
return nil, fmt.Errorf("could not extract ID from macaroon")
|
||||
}
|
||||
|
||||
groupID, err := r.sessionDB.GetGroupID(sessionID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
enforcers, err := r.collectEnforcers(ri, groupID)
|
||||
enforcers, err := r.collectEnforcers(ri, sessionID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error parsing rules: %v", err)
|
||||
}
|
||||
|
|
@ -338,8 +323,8 @@ func (r *RuleEnforcer) handleErrorResponse(ctx context.Context,
|
|||
|
||||
// collectRule initialises and returns all the Rules that need to be enforced
|
||||
// for the given request.
|
||||
func (r *RuleEnforcer) collectEnforcers(ri *RequestInfo, groupID session.ID) (
|
||||
[]rules.Enforcer, error) {
|
||||
func (r *RuleEnforcer) collectEnforcers(ri *RequestInfo,
|
||||
sessionID session.ID) ([]rules.Enforcer, error) {
|
||||
|
||||
ruleEnforcers := make(
|
||||
[]rules.Enforcer, 0,
|
||||
|
|
@ -349,7 +334,7 @@ func (r *RuleEnforcer) collectEnforcers(ri *RequestInfo, groupID session.ID) (
|
|||
for rule, value := range ri.Rules.FeatureRules[ri.MetaInfo.Feature] {
|
||||
r, err := r.initRule(
|
||||
ri.RequestID, rule, []byte(value), ri.MetaInfo.Feature,
|
||||
groupID, false, ri.WithPrivacy,
|
||||
sessionID, false, ri.WithPrivacy,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -363,30 +348,40 @@ func (r *RuleEnforcer) collectEnforcers(ri *RequestInfo, groupID session.ID) (
|
|||
|
||||
// initRule initialises a rule.Rule with any required config values.
|
||||
func (r *RuleEnforcer) initRule(reqID uint64, name string, value []byte,
|
||||
featureName string, groupID session.ID, sessionRule,
|
||||
privacy bool) (rules.Enforcer, error) {
|
||||
featureName string, sessionID session.ID,
|
||||
sessionRule, privacy bool) (rules.Enforcer, error) {
|
||||
|
||||
ruleValues, err := r.ruleMgrs.InitRuleValues(name, value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
session, err := r.sessionDB.GetSessionByID(sessionID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if privacy {
|
||||
privMap := r.newPrivMap(groupID)
|
||||
ruleValues, err = ruleValues.PseudoToReal(privMap)
|
||||
privMap := r.newPrivMap(session.GroupID)
|
||||
|
||||
ruleValues, err = ruleValues.PseudoToReal(
|
||||
privMap, session.PrivacyFlags,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not prepare rule "+
|
||||
"value: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
allActionsDB := r.actionsDB.GetActionsReadDB(groupID, featureName)
|
||||
allActionsDB := r.actionsDB.GetActionsReadDB(
|
||||
session.GroupID, featureName,
|
||||
)
|
||||
actionsDB := allActionsDB.GroupFeatureActionsDB()
|
||||
rulesDB := r.ruleDB.GetKVStores(name, groupID, featureName)
|
||||
rulesDB := r.ruleDB.GetKVStores(name, session.GroupID, featureName)
|
||||
|
||||
if sessionRule {
|
||||
actionsDB = allActionsDB.GroupActionsDB()
|
||||
rulesDB = r.ruleDB.GetKVStores(name, groupID, "")
|
||||
rulesDB = r.ruleDB.GetKVStores(name, session.GroupID, "")
|
||||
}
|
||||
|
||||
cfg := &rules.ConfigImpl{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue