@@ -27,13 +27,16 @@ var (
27
27
28
28
// Manager manages a set of subServer objects.
29
29
type Manager struct {
30
- servers []* subServerWrapper
31
- mu sync.RWMutex
30
+ servers []* subServerWrapper
31
+ permsMgr * PermissionsMgr
32
+ mu sync.RWMutex
32
33
}
33
34
34
35
// NewManager constructs a new subServerMgr.
35
- func NewManager () * Manager {
36
- return & Manager {}
36
+ func NewManager (permsMgr * PermissionsMgr ) * Manager {
37
+ return & Manager {
38
+ permsMgr : permsMgr ,
39
+ }
37
40
}
38
41
39
42
// AddServer adds a new subServer to the manager's set.
@@ -121,7 +124,9 @@ func (s *Manager) GetRemoteConn(uri string) (bool, *grpc.ClientConn) {
121
124
defer s .mu .RUnlock ()
122
125
123
126
for _ , ss := range s .servers {
124
- // TODO(positiveblue): check subserver permissions.
127
+ if ! s .permsMgr .IsSubServerURI (ss .subServer .Name (), uri ) {
128
+ continue
129
+ }
125
130
126
131
if ! ss .subServer .Remote () {
127
132
return false , nil
@@ -145,7 +150,9 @@ func (s *Manager) ValidateMacaroon(ctx context.Context,
145
150
defer s .mu .RUnlock ()
146
151
147
152
for _ , ss := range s .servers {
148
- // TODO(positiveblue): check subserver permissions.
153
+ if ! s .permsMgr .IsSubServerURI (ss .subServer .Name (), uri ) {
154
+ continue
155
+ }
149
156
150
157
if ss .subServer .Remote () {
151
158
return true , nil
@@ -173,7 +180,13 @@ func (s *Manager) HandledBy(uri string) (bool, SubServerName) {
173
180
s .mu .RLock ()
174
181
defer s .mu .RUnlock ()
175
182
176
- // TODO(positiveblue): check subserver permissions.
183
+ for _ , ss := range s .servers {
184
+ if ! s .permsMgr .IsSubServerURI (ss .subServer .Name (), uri ) {
185
+ continue
186
+ }
187
+
188
+ return true , ss .subServer .Name ()
189
+ }
177
190
178
191
return false , ""
179
192
}
@@ -185,7 +198,9 @@ func (s *Manager) MacaroonPath(uri string) (bool, string) {
185
198
defer s .mu .RUnlock ()
186
199
187
200
for _ , ss := range s .servers {
188
- // TODO(positiveblue): check subserver permissions.
201
+ if ! s .permsMgr .IsSubServerURI (ss .subServer .Name (), uri ) {
202
+ continue
203
+ }
189
204
190
205
if ss .subServer .Remote () {
191
206
return true , ss .subServer .RemoteConfig ().MacaroonPath
@@ -205,7 +220,9 @@ func (s *Manager) ReadRemoteMacaroon(uri string) (macaroonPath string) {
205
220
defer s .mu .RUnlock ()
206
221
207
222
for _ , ss := range s .servers {
208
- // TODO(positiveblue): check subserver permissions.
223
+ if ! s .permsMgr .IsSubServerURI (ss .subServer .Name (), uri ) {
224
+ continue
225
+ }
209
226
210
227
if ! ss .subServer .Remote () {
211
228
return ""
0 commit comments