Committed by
Gerrit Code Review
ONOS-1767 SM-ONOS implementation
22a363e ONOS-17767 SM-ONOS impl Change-Id: Ifca8129f2266bada68af735cf81a1d39f1ec8506
Showing
66 changed files
with
2015 additions
and
1096 deletions
1 | -/* | ||
2 | - * Copyright 2015 Open Networking Laboratory | ||
3 | - * | ||
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | - * you may not use this file except in compliance with the License. | ||
6 | - * You may obtain a copy of the License at | ||
7 | - * | ||
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | - * | ||
10 | - * Unless required by applicable law or agreed to in writing, software | ||
11 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | - * See the License for the specific language governing permissions and | ||
14 | - * limitations under the License. | ||
15 | - */ | ||
16 | - | ||
17 | -package org.onosproject.cli.security; | ||
18 | - | ||
19 | -import com.google.common.collect.ImmutableSet; | ||
20 | -import com.google.common.collect.Sets; | ||
21 | -import org.apache.karaf.shell.commands.Argument; | ||
22 | -import org.apache.karaf.shell.commands.Command; | ||
23 | -import org.onosproject.app.ApplicationAdminService; | ||
24 | -import org.onosproject.cli.AbstractShellCommand; | ||
25 | -import org.onosproject.core.Application; | ||
26 | -import org.onosproject.core.ApplicationId; | ||
27 | -import org.onosproject.core.Permission; | ||
28 | - | ||
29 | -import java.util.Set; | ||
30 | -import java.util.stream.Collectors; | ||
31 | - | ||
32 | -/** | ||
33 | - * Manages application permissions. | ||
34 | - */ | ||
35 | -@Command(scope = "onos", name = "perm", | ||
36 | - description = "Manages application permissions") | ||
37 | -public class PermissionCommand extends AbstractShellCommand { | ||
38 | - | ||
39 | - static final String ADD = "add"; | ||
40 | - static final String REMOVE = "remove"; | ||
41 | - static final String LIST = "list"; | ||
42 | - static final String CLEAR = "clear"; | ||
43 | - | ||
44 | - | ||
45 | - @Argument(index = 0, name = "command", | ||
46 | - description = "Command name (add|remove)", | ||
47 | - required = true, multiValued = false) | ||
48 | - String command = null; | ||
49 | - | ||
50 | - @Argument(index = 1, name = "name", description = "Application name", | ||
51 | - required = true, multiValued = false) | ||
52 | - String name = null; | ||
53 | - | ||
54 | - @Argument(index = 2, name = "permissions", description = "List of permissions", | ||
55 | - required = false, multiValued = true) | ||
56 | - String[] permissions = null; | ||
57 | - | ||
58 | - @Override | ||
59 | - protected void execute() { | ||
60 | - ApplicationAdminService applicationAdminService = get(ApplicationAdminService.class); | ||
61 | - Set<Permission> newPermSet = Sets.newHashSet(); | ||
62 | - if (command.equals(ADD)) { | ||
63 | - ApplicationId appId = applicationAdminService.getId(name); | ||
64 | - if (appId == null) { | ||
65 | - print("No such application: %s", name); | ||
66 | - return; | ||
67 | - } | ||
68 | - Application app = applicationAdminService.getApplication(appId); | ||
69 | - | ||
70 | - for (String perm : permissions) { | ||
71 | - try { | ||
72 | - Permission permission = Permission.valueOf(perm); | ||
73 | - newPermSet.add(permission); | ||
74 | - } catch (IllegalArgumentException e) { | ||
75 | - print("%s is not a valid permission.", perm); | ||
76 | - return; | ||
77 | - } | ||
78 | - | ||
79 | - } | ||
80 | - Set<Permission> oldPermSet = applicationAdminService.getPermissions(appId); | ||
81 | - if (oldPermSet != null) { | ||
82 | - newPermSet.addAll(oldPermSet); | ||
83 | - } else { | ||
84 | - newPermSet.addAll(app.permissions()); | ||
85 | - } | ||
86 | - applicationAdminService.setPermissions(appId, ImmutableSet.copyOf(newPermSet)); | ||
87 | - | ||
88 | - } else if (command.equals(REMOVE)) { | ||
89 | - ApplicationId appId = applicationAdminService.getId(name); | ||
90 | - Application app = applicationAdminService.getApplication(appId); | ||
91 | - if (appId == null) { | ||
92 | - print("No such application: %s", name); | ||
93 | - return; | ||
94 | - } | ||
95 | - Set<Permission> oldPermSet = applicationAdminService.getPermissions(appId); | ||
96 | - if (oldPermSet == null) { | ||
97 | - oldPermSet = app.permissions(); | ||
98 | - } | ||
99 | - Set<String> clearPermSet = Sets.newHashSet(permissions); | ||
100 | - newPermSet.addAll(oldPermSet.stream().filter( | ||
101 | - perm -> !clearPermSet.contains(perm.name().toUpperCase())).collect(Collectors.toList())); | ||
102 | - applicationAdminService.setPermissions(appId, ImmutableSet.copyOf(newPermSet)); | ||
103 | - } else if (command.equals(CLEAR)) { | ||
104 | - ApplicationId appId = applicationAdminService.getId(name); | ||
105 | - if (appId == null) { | ||
106 | - print("No such application: %s", name); | ||
107 | - return; | ||
108 | - } | ||
109 | - applicationAdminService.setPermissions(appId, ImmutableSet.of()); | ||
110 | - print("Cleared the permission list of %s.", appId.name()); | ||
111 | - } else if (command.equals(LIST)) { | ||
112 | - ApplicationId appId = applicationAdminService.getId(name); | ||
113 | - if (appId == null) { | ||
114 | - print("No such application: %s", name); | ||
115 | - return; | ||
116 | - } | ||
117 | - Application app = applicationAdminService.getApplication(appId); | ||
118 | - Set<Permission> userPermissions = applicationAdminService.getPermissions(appId); | ||
119 | - Set<Permission> defaultPermissions = app.permissions(); | ||
120 | - print("Application Role"); | ||
121 | - print("\trole=%s", app.role().name()); | ||
122 | - | ||
123 | - if (defaultPermissions != null) { | ||
124 | - if (!defaultPermissions.isEmpty()) { | ||
125 | - print("Default permissions (specified in app.xml)"); | ||
126 | - for (Permission perm : defaultPermissions) { | ||
127 | - print("\tpermission=%s", perm.name()); | ||
128 | - } | ||
129 | - } else { | ||
130 | - print("(No default permissions specified in app.xml)"); | ||
131 | - } | ||
132 | - } | ||
133 | - if (userPermissions != null) { | ||
134 | - if (!userPermissions.isEmpty()) { | ||
135 | - print("User permissions"); | ||
136 | - for (Permission perm : userPermissions) { | ||
137 | - print("\tpermission=%s", perm.name()); | ||
138 | - } | ||
139 | - } else { | ||
140 | - print("(User has removed all the permissions"); | ||
141 | - } | ||
142 | - } | ||
143 | - | ||
144 | - } | ||
145 | - } | ||
146 | -} |
... | @@ -18,6 +18,7 @@ package org.onosproject.cli.security; | ... | @@ -18,6 +18,7 @@ package org.onosproject.cli.security; |
18 | 18 | ||
19 | import org.apache.karaf.shell.console.completer.StringsCompleter; | 19 | import org.apache.karaf.shell.console.completer.StringsCompleter; |
20 | import org.onosproject.app.ApplicationService; | 20 | import org.onosproject.app.ApplicationService; |
21 | +import org.onosproject.app.ApplicationState; | ||
21 | import org.onosproject.cli.AbstractCompleter; | 22 | import org.onosproject.cli.AbstractCompleter; |
22 | import org.onosproject.core.Application; | 23 | import org.onosproject.core.Application; |
23 | 24 | ||
... | @@ -25,27 +26,33 @@ import java.util.Iterator; | ... | @@ -25,27 +26,33 @@ import java.util.Iterator; |
25 | import java.util.List; | 26 | import java.util.List; |
26 | import java.util.SortedSet; | 27 | import java.util.SortedSet; |
27 | 28 | ||
29 | +import static org.onosproject.app.ApplicationState.INSTALLED; | ||
28 | import static org.onosproject.cli.AbstractShellCommand.get; | 30 | import static org.onosproject.cli.AbstractShellCommand.get; |
29 | 31 | ||
30 | /** | 32 | /** |
31 | - * Application name completer for permission command. | 33 | + * Application name completer for security review command. |
32 | */ | 34 | */ |
33 | -public class PermissionApplicationNameCompleter extends AbstractCompleter { | 35 | +public class ReviewApplicationNameCompleter extends AbstractCompleter { |
34 | @Override | 36 | @Override |
35 | public int complete(String buffer, int cursor, List<String> candidates) { | 37 | public int complete(String buffer, int cursor, List<String> candidates) { |
36 | // Delegate string completer | 38 | // Delegate string completer |
37 | StringsCompleter delegate = new StringsCompleter(); | 39 | StringsCompleter delegate = new StringsCompleter(); |
38 | 40 | ||
39 | - // Fetch our service and feed it's offerings to the string completer | ||
40 | ApplicationService service = get(ApplicationService.class); | 41 | ApplicationService service = get(ApplicationService.class); |
41 | Iterator<Application> it = service.getApplications().iterator(); | 42 | Iterator<Application> it = service.getApplications().iterator(); |
42 | SortedSet<String> strings = delegate.getStrings(); | 43 | SortedSet<String> strings = delegate.getStrings(); |
43 | while (it.hasNext()) { | 44 | while (it.hasNext()) { |
44 | Application app = it.next(); | 45 | Application app = it.next(); |
45 | - strings.add(app.id().name()); | 46 | + ApplicationState state = service.getState(app.id()); |
47 | +// if (previousApps.contains(app.id().name())) { | ||
48 | +// continue; | ||
49 | +// } | ||
50 | + if (state == INSTALLED) { | ||
51 | + strings.add(app.id().name()); | ||
52 | + } | ||
46 | } | 53 | } |
47 | 54 | ||
48 | // Now let the completer do the work for figuring out what to offer. | 55 | // Now let the completer do the work for figuring out what to offer. |
49 | return delegate.complete(buffer, cursor, candidates); | 56 | return delegate.complete(buffer, cursor, candidates); |
50 | } | 57 | } |
51 | -} | 58 | +} |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.cli.security; | ||
18 | + | ||
19 | +import org.apache.karaf.shell.commands.Argument; | ||
20 | +import org.apache.karaf.shell.commands.Command; | ||
21 | +import org.onosproject.app.ApplicationAdminService; | ||
22 | +import org.onosproject.cli.AbstractShellCommand; | ||
23 | +import org.onosproject.core.Application; | ||
24 | +import org.onosproject.core.ApplicationId; | ||
25 | +import org.onosproject.security.SecurityAdminService; | ||
26 | +import org.onosproject.security.SecurityUtil; | ||
27 | + | ||
28 | +import java.security.Permission; | ||
29 | +import java.util.List; | ||
30 | +import java.util.Map; | ||
31 | + | ||
32 | + | ||
33 | +/** | ||
34 | + * Application security policy review commands. | ||
35 | + */ | ||
36 | +@Command(scope = "onos", name = "review", | ||
37 | + description = "Application security policy review interface") | ||
38 | +public class ReviewCommand extends AbstractShellCommand { | ||
39 | + | ||
40 | + @Argument(index = 0, name = "name", description = "Application name", | ||
41 | + required = true, multiValued = false) | ||
42 | + String name = null; | ||
43 | + | ||
44 | + @Argument(index = 1, name = "accept", description = "Option to accept policy", | ||
45 | + required = false, multiValued = false) | ||
46 | + String accept = null; | ||
47 | + | ||
48 | + @Override | ||
49 | + protected void execute() { | ||
50 | + ApplicationAdminService applicationAdminService = get(ApplicationAdminService.class); | ||
51 | + ApplicationId appId = applicationAdminService.getId(name); | ||
52 | + if (appId == null) { | ||
53 | + print("No such application: %s", name); | ||
54 | + return; | ||
55 | + } | ||
56 | + Application app = applicationAdminService.getApplication(appId); | ||
57 | + SecurityAdminService smService = SecurityUtil.getSecurityService(); | ||
58 | + if (smService == null) { | ||
59 | + print("Security Mode is disabled"); | ||
60 | + return; | ||
61 | + } | ||
62 | + if (accept == null) { | ||
63 | + smService.review(appId); | ||
64 | + printPolicy(smService, app); | ||
65 | + } else if (accept.trim().equals("accept")) { | ||
66 | + smService.acceptPolicy(appId); | ||
67 | + printPolicy(smService, app); | ||
68 | + } else { | ||
69 | + print("Unknown command"); | ||
70 | + } | ||
71 | + } | ||
72 | + | ||
73 | + private void printPolicy(SecurityAdminService smService, Application app) { | ||
74 | + print("\n*******************************"); | ||
75 | + print(" SM-ONOS APP REVIEW "); | ||
76 | + print("*******************************"); | ||
77 | + | ||
78 | + print("Application name: %s ", app.id().name()); | ||
79 | + print("Application role: " + app.role()); | ||
80 | + print("\nDeveloper specified permissions: "); | ||
81 | + printMap(smService.getPrintableSpecifiedPermissions(app.id())); | ||
82 | + print("\nPermissions granted: "); | ||
83 | + printMap(smService.getPrintableGrantedPermissions(app.id())); | ||
84 | + print("\nAdditional permissions requested on runtime (POLICY VIOLATIONS): "); | ||
85 | + printMap(smService.getPrintableRequestedPermissions(app.id())); | ||
86 | + print(""); | ||
87 | + | ||
88 | + } | ||
89 | + private void printMap(Map<Integer, List<Permission>> assortedMap) { | ||
90 | + for (Integer type : assortedMap.keySet()) { | ||
91 | + switch (type) { | ||
92 | + case 0: | ||
93 | + for (Permission perm: assortedMap.get(0)) { | ||
94 | + print("\t[APP PERMISSION] " + perm.getName()); | ||
95 | + } | ||
96 | + break; | ||
97 | + case 1: | ||
98 | + for (Permission perm: assortedMap.get(1)) { | ||
99 | + print("\t[NB-ADMIN SERVICE] " + perm.getName() + "(" + perm.getActions() + ")"); | ||
100 | + } | ||
101 | + break; | ||
102 | + case 2: | ||
103 | + for (Permission perm: assortedMap.get(2)) { | ||
104 | + print("\t[NB SERVICE] " + perm.getName() + "(" + perm.getActions() + ")"); | ||
105 | + } | ||
106 | + break; | ||
107 | + case 3: | ||
108 | + for (Permission perm: assortedMap.get(3)) { | ||
109 | + print("\t[Other SERVICE] " + perm.getName() + "(" + perm.getActions() + ")"); | ||
110 | + } | ||
111 | + break; | ||
112 | + case 4: | ||
113 | + for (Permission perm: assortedMap.get(4)) { | ||
114 | + print("\t[Other] " + perm.getClass().getSimpleName() + | ||
115 | + " " + perm.getName() + " (" + perm.getActions() + ")"); | ||
116 | + } | ||
117 | + default: | ||
118 | + break; | ||
119 | + } | ||
120 | + } | ||
121 | + } | ||
122 | +} |
... | @@ -21,11 +21,9 @@ | ... | @@ -21,11 +21,9 @@ |
21 | </command> | 21 | </command> |
22 | 22 | ||
23 | <command> | 23 | <command> |
24 | - <action class="org.onosproject.cli.security.PermissionCommand"/> | 24 | + <action class="org.onosproject.cli.security.ReviewCommand"/> |
25 | <completers> | 25 | <completers> |
26 | - <ref component-id="permCommandCompleter"/> | 26 | + <ref component-id="reviewAppNameCompleter"/> |
27 | - <ref component-id="permAppNameCompleter"/> | ||
28 | - <ref component-id="permNameCompleter"/> | ||
29 | </completers> | 27 | </completers> |
30 | </command> | 28 | </command> |
31 | 29 | ||
... | @@ -435,9 +433,7 @@ | ... | @@ -435,9 +433,7 @@ |
435 | </command> | 433 | </command> |
436 | </command-bundle> | 434 | </command-bundle> |
437 | 435 | ||
438 | - <bean id="permAppNameCompleter" class="org.onosproject.cli.security.PermissionApplicationNameCompleter"/> | 436 | + <bean id="reviewAppNameCompleter" class="org.onosproject.cli.security.ReviewApplicationNameCompleter"/> |
439 | - <bean id="permCommandCompleter" class="org.onosproject.cli.security.PermissionCommandCompleter"/> | ||
440 | - <bean id="permNameCompleter" class="org.onosproject.cli.security.PermissionNameCompleter"/> | ||
441 | <bean id="appCommandCompleter" class="org.onosproject.cli.app.ApplicationCommandCompleter"/> | 437 | <bean id="appCommandCompleter" class="org.onosproject.cli.app.ApplicationCommandCompleter"/> |
442 | <bean id="appNameCompleter" class="org.onosproject.cli.app.ApplicationNameCompleter"/> | 438 | <bean id="appNameCompleter" class="org.onosproject.cli.app.ApplicationNameCompleter"/> |
443 | <bean id="allAppNameCompleter" class="org.onosproject.cli.app.AllApplicationNamesCompleter"/> | 439 | <bean id="allAppNameCompleter" class="org.onosproject.cli.app.AllApplicationNamesCompleter"/> | ... | ... |
... | @@ -17,7 +17,7 @@ package org.onosproject.app; | ... | @@ -17,7 +17,7 @@ package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.Application; | 18 | import org.onosproject.core.Application; |
19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
20 | -import org.onosproject.core.Permission; | 20 | +import org.onosproject.security.Permission; |
21 | 21 | ||
22 | import java.io.InputStream; | 22 | import java.io.InputStream; |
23 | import java.util.Set; | 23 | import java.util.Set; | ... | ... |
... | @@ -16,8 +16,8 @@ | ... | @@ -16,8 +16,8 @@ |
16 | package org.onosproject.app; | 16 | package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.ApplicationRole; | 18 | import org.onosproject.core.ApplicationRole; |
19 | -import org.onosproject.core.Permission; | ||
20 | import org.onosproject.core.Version; | 19 | import org.onosproject.core.Version; |
20 | +import org.onosproject.security.Permission; | ||
21 | 21 | ||
22 | import java.net.URI; | 22 | import java.net.URI; |
23 | import java.util.List; | 23 | import java.util.List; | ... | ... |
... | @@ -17,8 +17,8 @@ package org.onosproject.app; | ... | @@ -17,8 +17,8 @@ package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.Application; | 18 | import org.onosproject.core.Application; |
19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
20 | -import org.onosproject.core.Permission; | ||
21 | import org.onosproject.event.ListenerService; | 20 | import org.onosproject.event.ListenerService; |
21 | +import org.onosproject.security.Permission; | ||
22 | 22 | ||
23 | import java.util.Set; | 23 | import java.util.Set; |
24 | 24 | ... | ... |
... | @@ -17,7 +17,7 @@ package org.onosproject.app; | ... | @@ -17,7 +17,7 @@ package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.Application; | 18 | import org.onosproject.core.Application; |
19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
20 | -import org.onosproject.core.Permission; | 20 | +import org.onosproject.security.Permission; |
21 | import org.onosproject.store.Store; | 21 | import org.onosproject.store.Store; |
22 | 22 | ||
23 | import java.io.InputStream; | 23 | import java.io.InputStream; | ... | ... |
... | @@ -16,8 +16,8 @@ | ... | @@ -16,8 +16,8 @@ |
16 | package org.onosproject.app; | 16 | package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.ApplicationRole; | 18 | import org.onosproject.core.ApplicationRole; |
19 | -import org.onosproject.core.Permission; | ||
20 | import org.onosproject.core.Version; | 19 | import org.onosproject.core.Version; |
20 | +import org.onosproject.security.Permission; | ||
21 | 21 | ||
22 | import java.net.URI; | 22 | import java.net.URI; |
23 | import java.util.List; | 23 | import java.util.List; | ... | ... |
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.core; | 16 | package org.onosproject.core; |
17 | 17 | ||
18 | +import org.onosproject.security.Permission; | ||
19 | + | ||
18 | import java.net.URI; | 20 | import java.net.URI; |
19 | import java.util.List; | 21 | import java.util.List; |
20 | import java.util.Optional; | 22 | import java.util.Optional; | ... | ... |
... | @@ -23,9 +23,9 @@ public enum ApplicationRole { | ... | @@ -23,9 +23,9 @@ public enum ApplicationRole { |
23 | ADMIN, | 23 | ADMIN, |
24 | 24 | ||
25 | /** | 25 | /** |
26 | - * Indicates that an application has a REGULAR role. | 26 | + * Indicates that an application has a USER role. |
27 | */ | 27 | */ |
28 | - REGULAR, | 28 | + USER, |
29 | 29 | ||
30 | /** | 30 | /** |
31 | * Indicates that an application role has not been specified. | 31 | * Indicates that an application role has not been specified. | ... | ... |
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.core; | 16 | package org.onosproject.core; |
17 | 17 | ||
18 | +import org.onosproject.security.Permission; | ||
19 | + | ||
18 | import java.net.URI; | 20 | import java.net.URI; |
19 | import java.util.Set; | 21 | import java.util.Set; |
20 | import java.util.Optional; | 22 | import java.util.Optional; | ... | ... |
1 | -/* | ||
2 | - * Copyright 2015 Open Networking Laboratory | ||
3 | - * | ||
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | - * you may not use this file except in compliance with the License. | ||
6 | - * You may obtain a copy of the License at | ||
7 | - * | ||
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | - * | ||
10 | - * Unless required by applicable law or agreed to in writing, software | ||
11 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | - * See the License for the specific language governing permissions and | ||
14 | - * limitations under the License. | ||
15 | - */ | ||
16 | -package org.onosproject.core; | ||
17 | - | ||
18 | -/** | ||
19 | - * Representation of an application permission. | ||
20 | - */ | ||
21 | -public enum Permission { | ||
22 | - APP_READ, | ||
23 | - APP_EVENT, | ||
24 | - CONFIG_READ, | ||
25 | - CONFIG_WRITE, | ||
26 | - CLUSTER_READ, | ||
27 | - CLUSTER_WRITE, | ||
28 | - CLUSTER_EVENT, | ||
29 | - DEVICE_READ, | ||
30 | - DEVICE_EVENT, | ||
31 | - DRIVER_READ, | ||
32 | - DRIVER_WRITE, | ||
33 | - FLOWRULE_READ, | ||
34 | - FLOWRULE_WRITE, | ||
35 | - FLOWRULE_EVENT, | ||
36 | - GROUP_READ, | ||
37 | - GROUP_WRITE, | ||
38 | - GROUP_EVENT, | ||
39 | - HOST_READ, | ||
40 | - HOST_WRITE, | ||
41 | - HOST_EVENT, | ||
42 | - INTENT_READ, | ||
43 | - INTENT_WRITE, | ||
44 | - INTENT_EVENT, | ||
45 | - LINK_READ, | ||
46 | - LINK_WRITE, | ||
47 | - LINK_EVENT, | ||
48 | - PACKET_READ, | ||
49 | - PACKET_WRITE, | ||
50 | - PACKET_EVENT, | ||
51 | - STATISTIC_READ, | ||
52 | - TOPOLOGY_READ, | ||
53 | - TOPOLOGY_EVENT, | ||
54 | - TUNNEL_READ, | ||
55 | - TUNNEL_WRITE, | ||
56 | - TUNNEL_EVENT, | ||
57 | - STORAGE_WRITE | ||
58 | -} |
... | @@ -15,7 +15,6 @@ | ... | @@ -15,7 +15,6 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.packet; | 16 | package org.onosproject.net.packet; |
17 | 17 | ||
18 | -import org.onosproject.core.Permission; | ||
19 | import org.onosproject.net.flow.DefaultTrafficTreatment; | 18 | import org.onosproject.net.flow.DefaultTrafficTreatment; |
20 | import org.onosproject.net.flow.TrafficTreatment; | 19 | import org.onosproject.net.flow.TrafficTreatment; |
21 | import org.onosproject.net.flow.TrafficTreatment.Builder; | 20 | import org.onosproject.net.flow.TrafficTreatment.Builder; |
... | @@ -23,7 +22,7 @@ import org.onosproject.net.flow.TrafficTreatment.Builder; | ... | @@ -23,7 +22,7 @@ import org.onosproject.net.flow.TrafficTreatment.Builder; |
23 | import java.util.concurrent.atomic.AtomicBoolean; | 22 | import java.util.concurrent.atomic.AtomicBoolean; |
24 | 23 | ||
25 | import static org.onosproject.security.AppGuard.checkPermission; | 24 | import static org.onosproject.security.AppGuard.checkPermission; |
26 | - | 25 | +import static org.onosproject.security.AppPermission.Type.*; |
27 | 26 | ||
28 | /** | 27 | /** |
29 | * Default implementation of a packet context. | 28 | * Default implementation of a packet context. |
... | @@ -57,29 +56,25 @@ public abstract class DefaultPacketContext implements PacketContext { | ... | @@ -57,29 +56,25 @@ public abstract class DefaultPacketContext implements PacketContext { |
57 | 56 | ||
58 | @Override | 57 | @Override |
59 | public long time() { | 58 | public long time() { |
60 | - checkPermission(Permission.PACKET_READ); | 59 | + checkPermission(PACKET_READ); |
61 | - | ||
62 | return time; | 60 | return time; |
63 | } | 61 | } |
64 | 62 | ||
65 | @Override | 63 | @Override |
66 | public InboundPacket inPacket() { | 64 | public InboundPacket inPacket() { |
67 | - checkPermission(Permission.PACKET_READ); | 65 | + checkPermission(PACKET_READ); |
68 | - | ||
69 | return inPkt; | 66 | return inPkt; |
70 | } | 67 | } |
71 | 68 | ||
72 | @Override | 69 | @Override |
73 | public OutboundPacket outPacket() { | 70 | public OutboundPacket outPacket() { |
74 | - checkPermission(Permission.PACKET_READ); | 71 | + checkPermission(PACKET_READ); |
75 | - | ||
76 | return outPkt; | 72 | return outPkt; |
77 | } | 73 | } |
78 | 74 | ||
79 | @Override | 75 | @Override |
80 | public Builder treatmentBuilder() { | 76 | public Builder treatmentBuilder() { |
81 | - checkPermission(Permission.PACKET_READ); | 77 | + checkPermission(PACKET_READ); |
82 | - | ||
83 | return builder; | 78 | return builder; |
84 | } | 79 | } |
85 | 80 | ||
... | @@ -88,15 +83,13 @@ public abstract class DefaultPacketContext implements PacketContext { | ... | @@ -88,15 +83,13 @@ public abstract class DefaultPacketContext implements PacketContext { |
88 | 83 | ||
89 | @Override | 84 | @Override |
90 | public boolean block() { | 85 | public boolean block() { |
91 | - checkPermission(Permission.PACKET_WRITE); | 86 | + checkPermission(PACKET_WRITE); |
92 | - | ||
93 | return this.block.getAndSet(true); | 87 | return this.block.getAndSet(true); |
94 | } | 88 | } |
95 | 89 | ||
96 | @Override | 90 | @Override |
97 | public boolean isHandled() { | 91 | public boolean isHandled() { |
98 | - checkPermission(Permission.PACKET_READ); | 92 | + checkPermission(PACKET_READ); |
99 | - | ||
100 | return this.block.get(); | 93 | return this.block.get(); |
101 | } | 94 | } |
102 | } | 95 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -16,7 +16,6 @@ | ... | @@ -16,7 +16,6 @@ |
16 | 16 | ||
17 | package org.onosproject.security; | 17 | package org.onosproject.security; |
18 | 18 | ||
19 | -import org.onosproject.core.Permission; | ||
20 | 19 | ||
21 | /** | 20 | /** |
22 | * Aids SM-ONOS to perform API-level permission checking. | 21 | * Aids SM-ONOS to perform API-level permission checking. |
... | @@ -30,10 +29,10 @@ public final class AppGuard { | ... | @@ -30,10 +29,10 @@ public final class AppGuard { |
30 | * Checks if the caller has the required permission only when security-mode is enabled. | 29 | * Checks if the caller has the required permission only when security-mode is enabled. |
31 | * @param permission permission to be checked | 30 | * @param permission permission to be checked |
32 | */ | 31 | */ |
33 | - public static void checkPermission(Permission permission) { | 32 | + public static void checkPermission(AppPermission.Type permission) { |
34 | SecurityManager sm = System.getSecurityManager(); | 33 | SecurityManager sm = System.getSecurityManager(); |
35 | if (sm != null) { | 34 | if (sm != null) { |
36 | - System.getSecurityManager().checkPermission(new AppPermission(permission.name())); | 35 | + System.getSecurityManager().checkPermission(new AppPermission(permission)); |
37 | } | 36 | } |
38 | } | 37 | } |
39 | } | 38 | } | ... | ... |
... | @@ -23,12 +23,57 @@ import java.security.BasicPermission; | ... | @@ -23,12 +23,57 @@ import java.security.BasicPermission; |
23 | */ | 23 | */ |
24 | public class AppPermission extends BasicPermission { | 24 | public class AppPermission extends BasicPermission { |
25 | 25 | ||
26 | + public enum Type { | ||
27 | + APP_READ, | ||
28 | + APP_EVENT, | ||
29 | + CONFIG_READ, | ||
30 | + CONFIG_WRITE, | ||
31 | + CLUSTER_READ, | ||
32 | + CLUSTER_WRITE, | ||
33 | + CLUSTER_EVENT, | ||
34 | + DEVICE_READ, | ||
35 | + DEVICE_EVENT, | ||
36 | + DRIVER_READ, | ||
37 | + DRIVER_WRITE, | ||
38 | + FLOWRULE_READ, | ||
39 | + FLOWRULE_WRITE, | ||
40 | + FLOWRULE_EVENT, | ||
41 | + GROUP_READ, | ||
42 | + GROUP_WRITE, | ||
43 | + GROUP_EVENT, | ||
44 | + HOST_READ, | ||
45 | + HOST_WRITE, | ||
46 | + HOST_EVENT, | ||
47 | + INTENT_READ, | ||
48 | + INTENT_WRITE, | ||
49 | + INTENT_EVENT, | ||
50 | + LINK_READ, | ||
51 | + LINK_WRITE, | ||
52 | + LINK_EVENT, | ||
53 | + PACKET_READ, | ||
54 | + PACKET_WRITE, | ||
55 | + PACKET_EVENT, | ||
56 | + STATISTIC_READ, | ||
57 | + TOPOLOGY_READ, | ||
58 | + TOPOLOGY_EVENT, | ||
59 | + TUNNEL_READ, | ||
60 | + TUNNEL_WRITE, | ||
61 | + TUNNEL_EVENT, | ||
62 | + STORAGE_WRITE | ||
63 | + } | ||
64 | + | ||
65 | + protected Type type; | ||
26 | /** | 66 | /** |
27 | * Creates new application permission using the supplied data. | 67 | * Creates new application permission using the supplied data. |
28 | * @param name permission name | 68 | * @param name permission name |
29 | */ | 69 | */ |
30 | public AppPermission(String name) { | 70 | public AppPermission(String name) { |
31 | super(name.toUpperCase(), ""); | 71 | super(name.toUpperCase(), ""); |
72 | + try { | ||
73 | + type = Type.valueOf(name); | ||
74 | + } catch (IllegalArgumentException e) { | ||
75 | + type = null; | ||
76 | + } | ||
32 | } | 77 | } |
33 | 78 | ||
34 | /** | 79 | /** |
... | @@ -38,6 +83,28 @@ public class AppPermission extends BasicPermission { | ... | @@ -38,6 +83,28 @@ public class AppPermission extends BasicPermission { |
38 | */ | 83 | */ |
39 | public AppPermission(String name, String actions) { | 84 | public AppPermission(String name, String actions) { |
40 | super(name.toUpperCase(), actions); | 85 | super(name.toUpperCase(), actions); |
86 | + try { | ||
87 | + type = Type.valueOf(name); | ||
88 | + } catch (IllegalArgumentException e) { | ||
89 | + type = null; | ||
90 | + } | ||
91 | + } | ||
92 | + | ||
93 | + /** | ||
94 | + * Crates new application permission using the supplied data. | ||
95 | + * @param type permission type | ||
96 | + */ | ||
97 | + public AppPermission(Type type) { | ||
98 | + super(type.name(), ""); | ||
99 | + this.type = type; | ||
100 | + } | ||
101 | + | ||
102 | + /** | ||
103 | + * Returns type of permission. | ||
104 | + * @return application permission type | ||
105 | + */ | ||
106 | + public Type getType() { | ||
107 | + return this.type; | ||
41 | } | 108 | } |
42 | 109 | ||
43 | } | 110 | } | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security; | ||
18 | + | ||
19 | +public class Permission { | ||
20 | + | ||
21 | + protected String classname; | ||
22 | + protected String name; | ||
23 | + protected String actions; | ||
24 | + | ||
25 | + public Permission(String classname, String name, String actions) { | ||
26 | + this.classname = classname; | ||
27 | + this.name = name; | ||
28 | + if (actions == null) { | ||
29 | + this.actions = ""; | ||
30 | + } else { | ||
31 | + this.actions = actions; | ||
32 | + } | ||
33 | + } | ||
34 | + | ||
35 | + public Permission(String classname, String name) { | ||
36 | + this.classname = classname; | ||
37 | + this.name = name; | ||
38 | + this.actions = ""; | ||
39 | + } | ||
40 | + | ||
41 | + public String getClassName() { | ||
42 | + return classname; | ||
43 | + } | ||
44 | + | ||
45 | + public String getName() { | ||
46 | + return name; | ||
47 | + } | ||
48 | + | ||
49 | + public String getActions() { | ||
50 | + return actions; | ||
51 | + } | ||
52 | + | ||
53 | + @Override | ||
54 | + public int hashCode() { | ||
55 | + return 0; | ||
56 | + } | ||
57 | + | ||
58 | + @Override | ||
59 | + public boolean equals(Object thatPerm) { | ||
60 | + if (this == thatPerm) { | ||
61 | + return true; | ||
62 | + } | ||
63 | + | ||
64 | + if (!(thatPerm instanceof Permission)) { | ||
65 | + return false; | ||
66 | + } | ||
67 | + | ||
68 | + Permission that = (Permission) thatPerm; | ||
69 | + return (this.classname.equals(that.classname)) && (this.name.equals(that.name)) | ||
70 | + && (this.actions.equals(that.actions)); | ||
71 | + } | ||
72 | + | ||
73 | + @Override | ||
74 | + public String toString() { | ||
75 | + return String.format("(%s, %s, %s)", classname, name, actions); | ||
76 | + } | ||
77 | +} |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security; | ||
18 | + | ||
19 | +import org.onosproject.core.ApplicationId; | ||
20 | + | ||
21 | +import java.security.Permission; | ||
22 | +import java.util.List; | ||
23 | +import java.util.Map; | ||
24 | + | ||
25 | +/** | ||
26 | + * Security-Mode ONOS service. | ||
27 | + */ | ||
28 | +public interface SecurityAdminService { | ||
29 | + | ||
30 | + /** | ||
31 | + * Returns true if security policy has been enforced to specified application. | ||
32 | + * @param appId application identifier | ||
33 | + * @return true if secured. | ||
34 | + */ | ||
35 | + boolean isSecured(ApplicationId appId); | ||
36 | + | ||
37 | + /** | ||
38 | + * Changes SecurityModeState of specified application to REVIEWED. | ||
39 | + * @param appId application identifier | ||
40 | + */ | ||
41 | + void review(ApplicationId appId); | ||
42 | + | ||
43 | + /** | ||
44 | + * Accepts and enforces security policy to specified application. | ||
45 | + * @param appId application identifier | ||
46 | + */ | ||
47 | + void acceptPolicy(ApplicationId appId); | ||
48 | + | ||
49 | + /** | ||
50 | + * Register application to SM-ONOS subsystem. | ||
51 | + * @param appId application identifier | ||
52 | + */ | ||
53 | + void register(ApplicationId appId); | ||
54 | + | ||
55 | + /** | ||
56 | + * Returns sorted developer specified permission Map. | ||
57 | + * @param appId application identifier | ||
58 | + * @return Map of list of permissions sorted by permission type | ||
59 | + */ | ||
60 | + Map<Integer, List<Permission>> getPrintableSpecifiedPermissions(ApplicationId appId); | ||
61 | + | ||
62 | + /** | ||
63 | + * Returns sorted granted permission Map. | ||
64 | + * @param appId application identifier | ||
65 | + * @return Map of list of permissions sorted by permission type | ||
66 | + */ | ||
67 | + Map<Integer, List<Permission>> getPrintableGrantedPermissions(ApplicationId appId); | ||
68 | + | ||
69 | + /** | ||
70 | + * Returns sorted requested permission Map. | ||
71 | + * @param appId application identifier | ||
72 | + * @return Map of list of permissions sorted by permission type | ||
73 | + */ | ||
74 | + Map<Integer, List<Permission>> getPrintableRequestedPermissions(ApplicationId appId); | ||
75 | + | ||
76 | + | ||
77 | +} |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security; | ||
18 | + | ||
19 | +import org.onlab.osgi.DefaultServiceDirectory; | ||
20 | +import org.onlab.osgi.ServiceDirectory; | ||
21 | +import org.onlab.osgi.ServiceNotFoundException; | ||
22 | +import org.onosproject.core.ApplicationId; | ||
23 | + | ||
24 | +/** | ||
25 | + * Utility class to aid Security-Mode ONOS. | ||
26 | + */ | ||
27 | +public final class SecurityUtil { | ||
28 | + | ||
29 | + protected static ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); | ||
30 | + | ||
31 | + private SecurityUtil() { | ||
32 | + } | ||
33 | + | ||
34 | + public static boolean isSecurityModeEnabled() { | ||
35 | + if (System.getSecurityManager() != null) { | ||
36 | + try { | ||
37 | + SecurityAdminService securityService = serviceDirectory.get(SecurityAdminService.class); | ||
38 | + if (securityService != null) { | ||
39 | + return true; | ||
40 | + } | ||
41 | + } catch (ServiceNotFoundException e) { | ||
42 | + return false; | ||
43 | + } | ||
44 | + } | ||
45 | + return false; | ||
46 | + } | ||
47 | + | ||
48 | + public static SecurityAdminService getSecurityService() { | ||
49 | + if (System.getSecurityManager() != null) { | ||
50 | + try { | ||
51 | + SecurityAdminService securityService = serviceDirectory.get(SecurityAdminService.class); | ||
52 | + if (securityService != null) { | ||
53 | + return securityService; | ||
54 | + } | ||
55 | + } catch (ServiceNotFoundException e) { | ||
56 | + return null; | ||
57 | + } | ||
58 | + } | ||
59 | + return null; | ||
60 | + } | ||
61 | + | ||
62 | + public static boolean isAppSecured(ApplicationId appId) { | ||
63 | + SecurityAdminService service = getSecurityService(); | ||
64 | + if (service != null) { | ||
65 | + if (!service.isSecured(appId)) { | ||
66 | + System.out.println("\n*******************************"); | ||
67 | + System.out.println(" SM-ONOS APP WARNING "); | ||
68 | + System.out.println("*******************************"); | ||
69 | + System.out.println(appId.name() + " has not been secured."); | ||
70 | + System.out.println("Please review before activating."); | ||
71 | + return false; | ||
72 | + } | ||
73 | + } | ||
74 | + return true; | ||
75 | + } | ||
76 | + public static void register(ApplicationId appId) { | ||
77 | + SecurityAdminService service = getSecurityService(); | ||
78 | + if (service != null) { | ||
79 | + service.register(appId); | ||
80 | + } | ||
81 | + } | ||
82 | +} |
... | @@ -17,7 +17,7 @@ package org.onosproject.app; | ... | @@ -17,7 +17,7 @@ package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.Application; | 18 | import org.onosproject.core.Application; |
19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
20 | -import org.onosproject.core.Permission; | 20 | +import org.onosproject.security.Permission; |
21 | 21 | ||
22 | import java.io.InputStream; | 22 | import java.io.InputStream; |
23 | import java.util.Set; | 23 | import java.util.Set; | ... | ... |
... | @@ -17,7 +17,7 @@ package org.onosproject.app; | ... | @@ -17,7 +17,7 @@ package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.Application; | 18 | import org.onosproject.core.Application; |
19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
20 | -import org.onosproject.core.Permission; | 20 | +import org.onosproject.security.Permission; |
21 | 21 | ||
22 | import java.util.Set; | 22 | import java.util.Set; |
23 | 23 | ... | ... |
... | @@ -17,7 +17,7 @@ package org.onosproject.app; | ... | @@ -17,7 +17,7 @@ package org.onosproject.app; |
17 | 17 | ||
18 | import org.onosproject.core.Application; | 18 | import org.onosproject.core.Application; |
19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
20 | -import org.onosproject.core.Permission; | 20 | +import org.onosproject.security.Permission; |
21 | import org.onosproject.store.AbstractStore; | 21 | import org.onosproject.store.AbstractStore; |
22 | 22 | ||
23 | import java.io.InputStream; | 23 | import java.io.InputStream; | ... | ... |
... | @@ -19,8 +19,9 @@ import com.google.common.collect.ImmutableList; | ... | @@ -19,8 +19,9 @@ import com.google.common.collect.ImmutableList; |
19 | import com.google.common.collect.ImmutableSet; | 19 | import com.google.common.collect.ImmutableSet; |
20 | import org.junit.Test; | 20 | import org.junit.Test; |
21 | import org.onosproject.core.ApplicationRole; | 21 | import org.onosproject.core.ApplicationRole; |
22 | -import org.onosproject.core.Permission; | ||
23 | import org.onosproject.core.Version; | 22 | import org.onosproject.core.Version; |
23 | +import org.onosproject.security.AppPermission; | ||
24 | +import org.onosproject.security.Permission; | ||
24 | 25 | ||
25 | import java.net.URI; | 26 | import java.net.URI; |
26 | import java.util.List; | 27 | import java.util.List; |
... | @@ -40,7 +41,9 @@ public class DefaultApplicationDescriptionTest { | ... | @@ -40,7 +41,9 @@ public class DefaultApplicationDescriptionTest { |
40 | public static final String DESC = "Awesome application from Circus, Inc."; | 41 | public static final String DESC = "Awesome application from Circus, Inc."; |
41 | public static final String ORIGIN = "Circus"; | 42 | public static final String ORIGIN = "Circus"; |
42 | public static final ApplicationRole ROLE = ApplicationRole.ADMIN; | 43 | public static final ApplicationRole ROLE = ApplicationRole.ADMIN; |
43 | - public static final Set<Permission> PERMS = ImmutableSet.of(Permission.FLOWRULE_WRITE, Permission.FLOWRULE_READ); | 44 | + public static final Set<Permission> PERMS = ImmutableSet.of( |
45 | + new Permission(AppPermission.class.getName(), "FLOWRULE_WRITE"), | ||
46 | + new Permission(AppPermission.class.getName(), "FLOWRULE_READ")); | ||
44 | public static final URI FURL = URI.create("mvn:org.foo-features/1.2a/xml/features"); | 47 | public static final URI FURL = URI.create("mvn:org.foo-features/1.2a/xml/features"); |
45 | public static final List<String> FEATURES = ImmutableList.of("foo", "bar"); | 48 | public static final List<String> FEATURES = ImmutableList.of("foo", "bar"); |
46 | 49 | ... | ... |
... | @@ -33,6 +33,10 @@ | ... | @@ -33,6 +33,10 @@ |
33 | 33 | ||
34 | <dependencies> | 34 | <dependencies> |
35 | <dependency> | 35 | <dependency> |
36 | + <groupId>org.osgi</groupId> | ||
37 | + <artifactId>org.osgi.core</artifactId> | ||
38 | + </dependency> | ||
39 | + <dependency> | ||
36 | <groupId>org.onosproject</groupId> | 40 | <groupId>org.onosproject</groupId> |
37 | <artifactId>onos-api</artifactId> | 41 | <artifactId>onos-api</artifactId> |
38 | </dependency> | 42 | </dependency> | ... | ... |
... | @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableSet; | ... | @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableSet; |
20 | import com.google.common.io.ByteStreams; | 20 | import com.google.common.io.ByteStreams; |
21 | import com.google.common.io.Files; | 21 | import com.google.common.io.Files; |
22 | import org.apache.commons.configuration.ConfigurationException; | 22 | import org.apache.commons.configuration.ConfigurationException; |
23 | +import org.apache.commons.configuration.HierarchicalConfiguration; | ||
23 | import org.apache.commons.configuration.XMLConfiguration; | 24 | import org.apache.commons.configuration.XMLConfiguration; |
24 | import org.onlab.util.Tools; | 25 | import org.onlab.util.Tools; |
25 | import org.onosproject.app.ApplicationDescription; | 26 | import org.onosproject.app.ApplicationDescription; |
... | @@ -28,9 +29,11 @@ import org.onosproject.app.ApplicationException; | ... | @@ -28,9 +29,11 @@ import org.onosproject.app.ApplicationException; |
28 | import org.onosproject.app.ApplicationStoreDelegate; | 29 | import org.onosproject.app.ApplicationStoreDelegate; |
29 | import org.onosproject.app.DefaultApplicationDescription; | 30 | import org.onosproject.app.DefaultApplicationDescription; |
30 | import org.onosproject.core.ApplicationRole; | 31 | import org.onosproject.core.ApplicationRole; |
31 | -import org.onosproject.core.Permission; | ||
32 | import org.onosproject.core.Version; | 32 | import org.onosproject.core.Version; |
33 | +import org.onosproject.security.AppPermission; | ||
34 | +import org.onosproject.security.Permission; | ||
33 | import org.onosproject.store.AbstractStore; | 35 | import org.onosproject.store.AbstractStore; |
36 | + | ||
34 | import org.slf4j.Logger; | 37 | import org.slf4j.Logger; |
35 | import org.slf4j.LoggerFactory; | 38 | import org.slf4j.LoggerFactory; |
36 | 39 | ||
... | @@ -79,7 +82,9 @@ public class ApplicationArchive | ... | @@ -79,7 +82,9 @@ public class ApplicationArchive |
79 | private static final String DESCRIPTION = "description"; | 82 | private static final String DESCRIPTION = "description"; |
80 | 83 | ||
81 | private static final String ROLE = "security.role"; | 84 | private static final String ROLE = "security.role"; |
82 | - private static final String PERMISSIONS = "security.permissions.permission"; | 85 | + private static final String APP_PERMISSIONS = "security.permissions.app-perm"; |
86 | + private static final String NET_PERMISSIONS = "security.permissions.net-perm"; | ||
87 | + private static final String JAVA_PERMISSIONS = "security.permissions.java-perm"; | ||
83 | 88 | ||
84 | private static final String OAR = ".oar"; | 89 | private static final String OAR = ".oar"; |
85 | private static final String APP_XML = "app.xml"; | 90 | private static final String APP_XML = "app.xml"; |
... | @@ -386,13 +391,25 @@ public class ApplicationArchive | ... | @@ -386,13 +391,25 @@ public class ApplicationArchive |
386 | // Returns the set of Permissions specified in the app.xml file | 391 | // Returns the set of Permissions specified in the app.xml file |
387 | private ImmutableSet<Permission> getPermissions(XMLConfiguration cfg) { | 392 | private ImmutableSet<Permission> getPermissions(XMLConfiguration cfg) { |
388 | List<Permission> permissionList = new ArrayList(); | 393 | List<Permission> permissionList = new ArrayList(); |
389 | - for (Object o : cfg.getList(PERMISSIONS)) { | 394 | + |
395 | + for (Object o : cfg.getList(APP_PERMISSIONS)) { | ||
390 | String name = (String) o; | 396 | String name = (String) o; |
391 | - try { | 397 | + permissionList.add(new Permission(AppPermission.class.getName(), name)); |
392 | - Permission perm = Permission.valueOf(name); | 398 | + } |
393 | - permissionList.add(perm); | 399 | + for (Object o : cfg.getList(NET_PERMISSIONS)) { |
394 | - } catch (IllegalArgumentException e) { | 400 | + //TODO: TO BE FLESHED OUT WHEN NETWORK PERMISSIONS ARE SUPPORTED |
395 | - log.debug("Unknown permission specified: %s", name); | 401 | + break; |
402 | + } | ||
403 | + | ||
404 | + List<HierarchicalConfiguration> fields = | ||
405 | + cfg.configurationsAt(JAVA_PERMISSIONS); | ||
406 | + for (HierarchicalConfiguration sub : fields) { | ||
407 | + String classname = sub.getString("classname"); | ||
408 | + String name = sub.getString("name"); | ||
409 | + String actions = sub.getString("actions"); | ||
410 | + | ||
411 | + if (classname != null && name != null) { | ||
412 | + permissionList.add(new Permission(classname, name, actions)); | ||
396 | } | 413 | } |
397 | } | 414 | } |
398 | return ImmutableSet.copyOf(permissionList); | 415 | return ImmutableSet.copyOf(permissionList); | ... | ... |
... | @@ -31,7 +31,7 @@ import org.onosproject.core.Application; | ... | @@ -31,7 +31,7 @@ import org.onosproject.core.Application; |
31 | import org.onosproject.core.ApplicationId; | 31 | import org.onosproject.core.ApplicationId; |
32 | import org.onosproject.core.ApplicationIdStore; | 32 | import org.onosproject.core.ApplicationIdStore; |
33 | import org.onosproject.core.DefaultApplication; | 33 | import org.onosproject.core.DefaultApplication; |
34 | -import org.onosproject.core.Permission; | 34 | +import org.onosproject.security.Permission; |
35 | import org.slf4j.Logger; | 35 | import org.slf4j.Logger; |
36 | 36 | ||
37 | import java.io.InputStream; | 37 | import java.io.InputStream; | ... | ... |
... | @@ -28,7 +28,8 @@ import org.onosproject.core.Application; | ... | @@ -28,7 +28,8 @@ import org.onosproject.core.Application; |
28 | import org.onosproject.core.ApplicationId; | 28 | import org.onosproject.core.ApplicationId; |
29 | import org.onosproject.core.ApplicationIdStoreAdapter; | 29 | import org.onosproject.core.ApplicationIdStoreAdapter; |
30 | import org.onosproject.core.DefaultApplicationId; | 30 | import org.onosproject.core.DefaultApplicationId; |
31 | -import org.onosproject.core.Permission; | 31 | +import org.onosproject.security.AppPermission; |
32 | +import org.onosproject.security.Permission; | ||
32 | 33 | ||
33 | import java.io.File; | 34 | import java.io.File; |
34 | import java.io.IOException; | 35 | import java.io.IOException; |
... | @@ -114,7 +115,8 @@ public class SimpleApplicationStoreTest { | ... | @@ -114,7 +115,8 @@ public class SimpleApplicationStoreTest { |
114 | @Test | 115 | @Test |
115 | public void permissions() { | 116 | public void permissions() { |
116 | Application app = createTestApp(); | 117 | Application app = createTestApp(); |
117 | - ImmutableSet<Permission> permissions = ImmutableSet.of(Permission.FLOWRULE_WRITE); | 118 | + ImmutableSet<Permission> permissions = |
119 | + ImmutableSet.of(new Permission(AppPermission.class.getName(), "FLOWRULE_WRITE")); | ||
118 | store.setPermissions(app.id(), permissions); | 120 | store.setPermissions(app.id(), permissions); |
119 | assertEquals("incorrect app perms", 1, store.getPermissions(app.id()).size()); | 121 | assertEquals("incorrect app perms", 1, store.getPermissions(app.id()).size()); |
120 | assertEquals("incorrect app state", INSTALLED, store.getState(app.id())); | 122 | assertEquals("incorrect app state", INSTALLED, store.getState(app.id())); | ... | ... |
1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
2 | <!-- | 1 | <!-- |
3 | ~ Copyright 2015 Open Networking Laboratory | 2 | ~ Copyright 2015 Open Networking Laboratory |
4 | ~ | 3 | ~ |
... | @@ -21,8 +20,10 @@ | ... | @@ -21,8 +20,10 @@ |
21 | <security> | 20 | <security> |
22 | <role>ADMIN</role> | 21 | <role>ADMIN</role> |
23 | <permissions> | 22 | <permissions> |
24 | - <permission>FLOWRULE_WRITE</permission> | 23 | + <app-perm>FLOWRULE_WRITE</app-perm> |
25 | - <permission>FLOWRULE_READ</permission> | 24 | + <app-perm>FLOWRULE_READ</app-perm> |
26 | </permissions> | 25 | </permissions> |
26 | + | ||
27 | </security> | 27 | </security> |
28 | + | ||
28 | </app> | 29 | </app> | ... | ... |
No preview for this file type
... | @@ -33,7 +33,8 @@ import org.onosproject.app.ApplicationStoreDelegate; | ... | @@ -33,7 +33,8 @@ import org.onosproject.app.ApplicationStoreDelegate; |
33 | import org.onosproject.event.AbstractListenerManager; | 33 | import org.onosproject.event.AbstractListenerManager; |
34 | import org.onosproject.core.Application; | 34 | import org.onosproject.core.Application; |
35 | import org.onosproject.core.ApplicationId; | 35 | import org.onosproject.core.ApplicationId; |
36 | -import org.onosproject.core.Permission; | 36 | +import org.onosproject.security.Permission; |
37 | +import org.onosproject.security.SecurityUtil; | ||
37 | import org.slf4j.Logger; | 38 | import org.slf4j.Logger; |
38 | 39 | ||
39 | import java.io.InputStream; | 40 | import java.io.InputStream; |
... | @@ -41,6 +42,7 @@ import java.util.Set; | ... | @@ -41,6 +42,7 @@ import java.util.Set; |
41 | 42 | ||
42 | import static com.google.common.base.Preconditions.checkNotNull; | 43 | import static com.google.common.base.Preconditions.checkNotNull; |
43 | import static org.onosproject.app.ApplicationEvent.Type.*; | 44 | import static org.onosproject.app.ApplicationEvent.Type.*; |
45 | +import static org.onosproject.security.AppPermission.Type.*; | ||
44 | import static org.onosproject.security.AppGuard.checkPermission; | 46 | import static org.onosproject.security.AppGuard.checkPermission; |
45 | import static org.slf4j.LoggerFactory.getLogger; | 47 | import static org.slf4j.LoggerFactory.getLogger; |
46 | 48 | ||
... | @@ -87,34 +89,34 @@ public class ApplicationManager | ... | @@ -87,34 +89,34 @@ public class ApplicationManager |
87 | 89 | ||
88 | @Override | 90 | @Override |
89 | public Set<Application> getApplications() { | 91 | public Set<Application> getApplications() { |
90 | - checkPermission(Permission.APP_READ); | 92 | + checkPermission(APP_READ); |
91 | return store.getApplications(); | 93 | return store.getApplications(); |
92 | } | 94 | } |
93 | 95 | ||
94 | @Override | 96 | @Override |
95 | public ApplicationId getId(String name) { | 97 | public ApplicationId getId(String name) { |
96 | - checkPermission(Permission.APP_READ); | 98 | + checkPermission(APP_READ); |
97 | checkNotNull(name, "Name cannot be null"); | 99 | checkNotNull(name, "Name cannot be null"); |
98 | return store.getId(name); | 100 | return store.getId(name); |
99 | } | 101 | } |
100 | 102 | ||
101 | @Override | 103 | @Override |
102 | public Application getApplication(ApplicationId appId) { | 104 | public Application getApplication(ApplicationId appId) { |
103 | - checkPermission(Permission.APP_READ); | 105 | + checkPermission(APP_READ); |
104 | checkNotNull(appId, APP_ID_NULL); | 106 | checkNotNull(appId, APP_ID_NULL); |
105 | return store.getApplication(appId); | 107 | return store.getApplication(appId); |
106 | } | 108 | } |
107 | 109 | ||
108 | @Override | 110 | @Override |
109 | public ApplicationState getState(ApplicationId appId) { | 111 | public ApplicationState getState(ApplicationId appId) { |
110 | - checkPermission(Permission.APP_READ); | 112 | + checkPermission(APP_READ); |
111 | checkNotNull(appId, APP_ID_NULL); | 113 | checkNotNull(appId, APP_ID_NULL); |
112 | return store.getState(appId); | 114 | return store.getState(appId); |
113 | } | 115 | } |
114 | 116 | ||
115 | @Override | 117 | @Override |
116 | public Set<Permission> getPermissions(ApplicationId appId) { | 118 | public Set<Permission> getPermissions(ApplicationId appId) { |
117 | - checkPermission(Permission.APP_READ); | 119 | + checkPermission(APP_READ); |
118 | checkNotNull(appId, APP_ID_NULL); | 120 | checkNotNull(appId, APP_ID_NULL); |
119 | return store.getPermissions(appId); | 121 | return store.getPermissions(appId); |
120 | } | 122 | } |
... | @@ -122,7 +124,9 @@ public class ApplicationManager | ... | @@ -122,7 +124,9 @@ public class ApplicationManager |
122 | @Override | 124 | @Override |
123 | public Application install(InputStream appDescStream) { | 125 | public Application install(InputStream appDescStream) { |
124 | checkNotNull(appDescStream, "Application archive stream cannot be null"); | 126 | checkNotNull(appDescStream, "Application archive stream cannot be null"); |
125 | - return store.create(appDescStream); | 127 | + Application app = store.create(appDescStream); |
128 | + SecurityUtil.register(app.id()); | ||
129 | + return app; | ||
126 | } | 130 | } |
127 | 131 | ||
128 | @Override | 132 | @Override |
... | @@ -138,6 +142,9 @@ public class ApplicationManager | ... | @@ -138,6 +142,9 @@ public class ApplicationManager |
138 | @Override | 142 | @Override |
139 | public void activate(ApplicationId appId) { | 143 | public void activate(ApplicationId appId) { |
140 | checkNotNull(appId, APP_ID_NULL); | 144 | checkNotNull(appId, APP_ID_NULL); |
145 | + if (!SecurityUtil.isAppSecured(appId)) { | ||
146 | + return; | ||
147 | + } | ||
141 | store.activate(appId); | 148 | store.activate(appId); |
142 | } | 149 | } |
143 | 150 | ... | ... |
... | @@ -31,7 +31,6 @@ import org.onosproject.cfg.ComponentConfigService; | ... | @@ -31,7 +31,6 @@ import org.onosproject.cfg.ComponentConfigService; |
31 | import org.onosproject.cfg.ComponentConfigStore; | 31 | import org.onosproject.cfg.ComponentConfigStore; |
32 | import org.onosproject.cfg.ComponentConfigStoreDelegate; | 32 | import org.onosproject.cfg.ComponentConfigStoreDelegate; |
33 | import org.onosproject.cfg.ConfigProperty; | 33 | import org.onosproject.cfg.ConfigProperty; |
34 | -import org.onosproject.core.Permission; | ||
35 | import org.osgi.service.cm.Configuration; | 34 | import org.osgi.service.cm.Configuration; |
36 | import org.osgi.service.cm.ConfigurationAdmin; | 35 | import org.osgi.service.cm.ConfigurationAdmin; |
37 | import org.slf4j.Logger; | 36 | import org.slf4j.Logger; |
... | @@ -50,6 +49,7 @@ import static com.google.common.base.Preconditions.checkArgument; | ... | @@ -50,6 +49,7 @@ import static com.google.common.base.Preconditions.checkArgument; |
50 | import static com.google.common.base.Preconditions.checkNotNull; | 49 | import static com.google.common.base.Preconditions.checkNotNull; |
51 | import static org.onosproject.security.AppGuard.checkPermission; | 50 | import static org.onosproject.security.AppGuard.checkPermission; |
52 | import static org.slf4j.LoggerFactory.getLogger; | 51 | import static org.slf4j.LoggerFactory.getLogger; |
52 | +import static org.onosproject.security.AppPermission.Type.*; | ||
53 | 53 | ||
54 | 54 | ||
55 | /** | 55 | /** |
... | @@ -99,14 +99,14 @@ public class ComponentConfigManager implements ComponentConfigService { | ... | @@ -99,14 +99,14 @@ public class ComponentConfigManager implements ComponentConfigService { |
99 | 99 | ||
100 | @Override | 100 | @Override |
101 | public Set<String> getComponentNames() { | 101 | public Set<String> getComponentNames() { |
102 | - checkPermission(Permission.CONFIG_READ); | 102 | + checkPermission(CONFIG_READ); |
103 | 103 | ||
104 | return ImmutableSet.copyOf(properties.keySet()); | 104 | return ImmutableSet.copyOf(properties.keySet()); |
105 | } | 105 | } |
106 | 106 | ||
107 | @Override | 107 | @Override |
108 | public void registerProperties(Class<?> componentClass) { | 108 | public void registerProperties(Class<?> componentClass) { |
109 | - checkPermission(Permission.CONFIG_WRITE); | 109 | + checkPermission(CONFIG_WRITE); |
110 | 110 | ||
111 | String componentName = componentClass.getName(); | 111 | String componentName = componentClass.getName(); |
112 | String resourceName = componentClass.getSimpleName() + RESOURCE_EXT; | 112 | String resourceName = componentClass.getSimpleName() + RESOURCE_EXT; |
... | @@ -130,7 +130,7 @@ public class ComponentConfigManager implements ComponentConfigService { | ... | @@ -130,7 +130,7 @@ public class ComponentConfigManager implements ComponentConfigService { |
130 | 130 | ||
131 | @Override | 131 | @Override |
132 | public void unregisterProperties(Class<?> componentClass, boolean clear) { | 132 | public void unregisterProperties(Class<?> componentClass, boolean clear) { |
133 | - checkPermission(Permission.CONFIG_WRITE); | 133 | + checkPermission(CONFIG_WRITE); |
134 | 134 | ||
135 | String componentName = componentClass.getName(); | 135 | String componentName = componentClass.getName(); |
136 | checkNotNull(componentName, COMPONENT_NULL); | 136 | checkNotNull(componentName, COMPONENT_NULL); |
... | @@ -148,7 +148,7 @@ public class ComponentConfigManager implements ComponentConfigService { | ... | @@ -148,7 +148,7 @@ public class ComponentConfigManager implements ComponentConfigService { |
148 | 148 | ||
149 | @Override | 149 | @Override |
150 | public Set<ConfigProperty> getProperties(String componentName) { | 150 | public Set<ConfigProperty> getProperties(String componentName) { |
151 | - checkPermission(Permission.CONFIG_READ); | 151 | + checkPermission(CONFIG_READ); |
152 | 152 | ||
153 | Map<String, ConfigProperty> map = properties.get(componentName); | 153 | Map<String, ConfigProperty> map = properties.get(componentName); |
154 | return map != null ? ImmutableSet.copyOf(map.values()) : null; | 154 | return map != null ? ImmutableSet.copyOf(map.values()) : null; |
... | @@ -156,7 +156,7 @@ public class ComponentConfigManager implements ComponentConfigService { | ... | @@ -156,7 +156,7 @@ public class ComponentConfigManager implements ComponentConfigService { |
156 | 156 | ||
157 | @Override | 157 | @Override |
158 | public void setProperty(String componentName, String name, String value) { | 158 | public void setProperty(String componentName, String name, String value) { |
159 | - checkPermission(Permission.CONFIG_WRITE); | 159 | + checkPermission(CONFIG_WRITE); |
160 | 160 | ||
161 | checkNotNull(componentName, COMPONENT_NULL); | 161 | checkNotNull(componentName, COMPONENT_NULL); |
162 | checkNotNull(name, PROPERTY_NULL); | 162 | checkNotNull(name, PROPERTY_NULL); |
... | @@ -165,7 +165,7 @@ public class ComponentConfigManager implements ComponentConfigService { | ... | @@ -165,7 +165,7 @@ public class ComponentConfigManager implements ComponentConfigService { |
165 | 165 | ||
166 | @Override | 166 | @Override |
167 | public void unsetProperty(String componentName, String name) { | 167 | public void unsetProperty(String componentName, String name) { |
168 | - checkPermission(Permission.CONFIG_WRITE); | 168 | + checkPermission(CONFIG_WRITE); |
169 | 169 | ||
170 | checkNotNull(componentName, COMPONENT_NULL); | 170 | checkNotNull(componentName, COMPONENT_NULL); |
171 | checkNotNull(name, PROPERTY_NULL); | 171 | checkNotNull(name, PROPERTY_NULL); | ... | ... |
... | @@ -34,7 +34,6 @@ import org.onosproject.cluster.ClusterStoreDelegate; | ... | @@ -34,7 +34,6 @@ import org.onosproject.cluster.ClusterStoreDelegate; |
34 | import org.onosproject.cluster.ControllerNode; | 34 | import org.onosproject.cluster.ControllerNode; |
35 | import org.onosproject.cluster.NodeId; | 35 | import org.onosproject.cluster.NodeId; |
36 | import org.onosproject.event.AbstractListenerManager; | 36 | import org.onosproject.event.AbstractListenerManager; |
37 | -import org.onosproject.core.Permission; | ||
38 | import org.slf4j.Logger; | 37 | import org.slf4j.Logger; |
39 | 38 | ||
40 | import java.util.Set; | 39 | import java.util.Set; |
... | @@ -43,6 +42,8 @@ import static com.google.common.base.Preconditions.checkArgument; | ... | @@ -43,6 +42,8 @@ import static com.google.common.base.Preconditions.checkArgument; |
43 | import static com.google.common.base.Preconditions.checkNotNull; | 42 | import static com.google.common.base.Preconditions.checkNotNull; |
44 | import static org.onosproject.security.AppGuard.checkPermission; | 43 | import static org.onosproject.security.AppGuard.checkPermission; |
45 | import static org.slf4j.LoggerFactory.getLogger; | 44 | import static org.slf4j.LoggerFactory.getLogger; |
45 | +import static org.onosproject.security.AppPermission.Type.*; | ||
46 | + | ||
46 | 47 | ||
47 | 48 | ||
48 | /** | 49 | /** |
... | @@ -86,26 +87,26 @@ public class ClusterManager | ... | @@ -86,26 +87,26 @@ public class ClusterManager |
86 | 87 | ||
87 | @Override | 88 | @Override |
88 | public ControllerNode getLocalNode() { | 89 | public ControllerNode getLocalNode() { |
89 | - checkPermission(Permission.CLUSTER_READ); | 90 | + checkPermission(CLUSTER_READ); |
90 | return store.getLocalNode(); | 91 | return store.getLocalNode(); |
91 | } | 92 | } |
92 | 93 | ||
93 | @Override | 94 | @Override |
94 | public Set<ControllerNode> getNodes() { | 95 | public Set<ControllerNode> getNodes() { |
95 | - checkPermission(Permission.CLUSTER_READ); | 96 | + checkPermission(CLUSTER_READ); |
96 | return store.getNodes(); | 97 | return store.getNodes(); |
97 | } | 98 | } |
98 | 99 | ||
99 | @Override | 100 | @Override |
100 | public ControllerNode getNode(NodeId nodeId) { | 101 | public ControllerNode getNode(NodeId nodeId) { |
101 | - checkPermission(Permission.CLUSTER_READ); | 102 | + checkPermission(CLUSTER_READ); |
102 | checkNotNull(nodeId, INSTANCE_ID_NULL); | 103 | checkNotNull(nodeId, INSTANCE_ID_NULL); |
103 | return store.getNode(nodeId); | 104 | return store.getNode(nodeId); |
104 | } | 105 | } |
105 | 106 | ||
106 | @Override | 107 | @Override |
107 | public ControllerNode.State getState(NodeId nodeId) { | 108 | public ControllerNode.State getState(NodeId nodeId) { |
108 | - checkPermission(Permission.CLUSTER_READ); | 109 | + checkPermission(CLUSTER_READ); |
109 | checkNotNull(nodeId, INSTANCE_ID_NULL); | 110 | checkNotNull(nodeId, INSTANCE_ID_NULL); |
110 | return store.getState(nodeId); | 111 | return store.getState(nodeId); |
111 | } | 112 | } |
... | @@ -113,7 +114,7 @@ public class ClusterManager | ... | @@ -113,7 +114,7 @@ public class ClusterManager |
113 | 114 | ||
114 | @Override | 115 | @Override |
115 | public DateTime getLastUpdated(NodeId nodeId) { | 116 | public DateTime getLastUpdated(NodeId nodeId) { |
116 | - checkPermission(Permission.CLUSTER_READ); | 117 | + checkPermission(CLUSTER_READ); |
117 | return store.getLastUpdated(nodeId); | 118 | return store.getLastUpdated(nodeId); |
118 | } | 119 | } |
119 | 120 | ... | ... |
... | @@ -32,7 +32,6 @@ import org.onosproject.cluster.NodeId; | ... | @@ -32,7 +32,6 @@ import org.onosproject.cluster.NodeId; |
32 | import org.onosproject.cluster.RoleInfo; | 32 | import org.onosproject.cluster.RoleInfo; |
33 | import org.onosproject.event.AbstractListenerManager; | 33 | import org.onosproject.event.AbstractListenerManager; |
34 | import org.onosproject.core.MetricsHelper; | 34 | import org.onosproject.core.MetricsHelper; |
35 | -import org.onosproject.core.Permission; | ||
36 | import org.onosproject.mastership.MastershipAdminService; | 35 | import org.onosproject.mastership.MastershipAdminService; |
37 | import org.onosproject.mastership.MastershipEvent; | 36 | import org.onosproject.mastership.MastershipEvent; |
38 | import org.onosproject.mastership.MastershipListener; | 37 | import org.onosproject.mastership.MastershipListener; |
... | @@ -62,6 +61,8 @@ import static org.onosproject.cluster.ControllerNode.State.ACTIVE; | ... | @@ -62,6 +61,8 @@ import static org.onosproject.cluster.ControllerNode.State.ACTIVE; |
62 | import static org.onosproject.net.MastershipRole.MASTER; | 61 | import static org.onosproject.net.MastershipRole.MASTER; |
63 | import static org.onosproject.security.AppGuard.checkPermission; | 62 | import static org.onosproject.security.AppGuard.checkPermission; |
64 | import static org.slf4j.LoggerFactory.getLogger; | 63 | import static org.slf4j.LoggerFactory.getLogger; |
64 | +import static org.onosproject.security.AppPermission.Type.*; | ||
65 | + | ||
65 | 66 | ||
66 | 67 | ||
67 | @Component(immediate = true) | 68 | @Component(immediate = true) |
... | @@ -136,7 +137,7 @@ public class MastershipManager | ... | @@ -136,7 +137,7 @@ public class MastershipManager |
136 | 137 | ||
137 | @Override | 138 | @Override |
138 | public MastershipRole getLocalRole(DeviceId deviceId) { | 139 | public MastershipRole getLocalRole(DeviceId deviceId) { |
139 | - checkPermission(Permission.CLUSTER_READ); | 140 | + checkPermission(CLUSTER_READ); |
140 | 141 | ||
141 | checkNotNull(deviceId, DEVICE_ID_NULL); | 142 | checkNotNull(deviceId, DEVICE_ID_NULL); |
142 | return store.getRole(clusterService.getLocalNode().id(), deviceId); | 143 | return store.getRole(clusterService.getLocalNode().id(), deviceId); |
... | @@ -144,7 +145,7 @@ public class MastershipManager | ... | @@ -144,7 +145,7 @@ public class MastershipManager |
144 | 145 | ||
145 | @Override | 146 | @Override |
146 | public CompletableFuture<Void> relinquishMastership(DeviceId deviceId) { | 147 | public CompletableFuture<Void> relinquishMastership(DeviceId deviceId) { |
147 | - checkPermission(Permission.CLUSTER_WRITE); | 148 | + checkPermission(CLUSTER_WRITE); |
148 | return store.relinquishRole(localNodeId, deviceId) | 149 | return store.relinquishRole(localNodeId, deviceId) |
149 | .thenAccept(this::post) | 150 | .thenAccept(this::post) |
150 | .thenApply(v -> null); | 151 | .thenApply(v -> null); |
... | @@ -152,7 +153,7 @@ public class MastershipManager | ... | @@ -152,7 +153,7 @@ public class MastershipManager |
152 | 153 | ||
153 | @Override | 154 | @Override |
154 | public CompletableFuture<MastershipRole> requestRoleFor(DeviceId deviceId) { | 155 | public CompletableFuture<MastershipRole> requestRoleFor(DeviceId deviceId) { |
155 | - checkPermission(Permission.CLUSTER_WRITE); | 156 | + checkPermission(CLUSTER_WRITE); |
156 | 157 | ||
157 | checkNotNull(deviceId, DEVICE_ID_NULL); | 158 | checkNotNull(deviceId, DEVICE_ID_NULL); |
158 | final Context timer = startTimer(requestRoleTimer); | 159 | final Context timer = startTimer(requestRoleTimer); |
... | @@ -162,7 +163,7 @@ public class MastershipManager | ... | @@ -162,7 +163,7 @@ public class MastershipManager |
162 | 163 | ||
163 | @Override | 164 | @Override |
164 | public NodeId getMasterFor(DeviceId deviceId) { | 165 | public NodeId getMasterFor(DeviceId deviceId) { |
165 | - checkPermission(Permission.CLUSTER_READ); | 166 | + checkPermission(CLUSTER_READ); |
166 | 167 | ||
167 | checkNotNull(deviceId, DEVICE_ID_NULL); | 168 | checkNotNull(deviceId, DEVICE_ID_NULL); |
168 | return store.getMaster(deviceId); | 169 | return store.getMaster(deviceId); |
... | @@ -170,7 +171,7 @@ public class MastershipManager | ... | @@ -170,7 +171,7 @@ public class MastershipManager |
170 | 171 | ||
171 | @Override | 172 | @Override |
172 | public Set<DeviceId> getDevicesOf(NodeId nodeId) { | 173 | public Set<DeviceId> getDevicesOf(NodeId nodeId) { |
173 | - checkPermission(Permission.CLUSTER_READ); | 174 | + checkPermission(CLUSTER_READ); |
174 | 175 | ||
175 | checkNotNull(nodeId, NODE_ID_NULL); | 176 | checkNotNull(nodeId, NODE_ID_NULL); |
176 | return store.getDevices(nodeId); | 177 | return store.getDevices(nodeId); |
... | @@ -178,7 +179,7 @@ public class MastershipManager | ... | @@ -178,7 +179,7 @@ public class MastershipManager |
178 | 179 | ||
179 | @Override | 180 | @Override |
180 | public RoleInfo getNodesFor(DeviceId deviceId) { | 181 | public RoleInfo getNodesFor(DeviceId deviceId) { |
181 | - checkPermission(Permission.CLUSTER_READ); | 182 | + checkPermission(CLUSTER_READ); |
182 | 183 | ||
183 | checkNotNull(deviceId, DEVICE_ID_NULL); | 184 | checkNotNull(deviceId, DEVICE_ID_NULL); |
184 | return store.getNodes(deviceId); | 185 | return store.getNodes(deviceId); | ... | ... |
... | @@ -31,7 +31,6 @@ import org.onosproject.core.ApplicationIdStore; | ... | @@ -31,7 +31,6 @@ import org.onosproject.core.ApplicationIdStore; |
31 | import org.onosproject.core.CoreService; | 31 | import org.onosproject.core.CoreService; |
32 | import org.onosproject.core.IdBlockStore; | 32 | import org.onosproject.core.IdBlockStore; |
33 | import org.onosproject.core.IdGenerator; | 33 | import org.onosproject.core.IdGenerator; |
34 | -import org.onosproject.core.Permission; | ||
35 | import org.onosproject.core.Version; | 34 | import org.onosproject.core.Version; |
36 | import org.onosproject.event.EventDeliveryService; | 35 | import org.onosproject.event.EventDeliveryService; |
37 | import org.osgi.service.component.ComponentContext; | 36 | import org.osgi.service.component.ComponentContext; |
... | @@ -46,6 +45,8 @@ import java.util.Set; | ... | @@ -46,6 +45,8 @@ import java.util.Set; |
46 | import static com.google.common.base.Preconditions.checkNotNull; | 45 | import static com.google.common.base.Preconditions.checkNotNull; |
47 | import static com.google.common.base.Strings.isNullOrEmpty; | 46 | import static com.google.common.base.Strings.isNullOrEmpty; |
48 | import static org.onosproject.security.AppGuard.checkPermission; | 47 | import static org.onosproject.security.AppGuard.checkPermission; |
48 | +import static org.onosproject.security.AppPermission.Type.*; | ||
49 | + | ||
49 | 50 | ||
50 | 51 | ||
51 | /** | 52 | /** |
... | @@ -100,28 +101,28 @@ public class CoreManager implements CoreService { | ... | @@ -100,28 +101,28 @@ public class CoreManager implements CoreService { |
100 | 101 | ||
101 | @Override | 102 | @Override |
102 | public Version version() { | 103 | public Version version() { |
103 | - checkPermission(Permission.APP_READ); | 104 | + checkPermission(APP_READ); |
104 | 105 | ||
105 | return version; | 106 | return version; |
106 | } | 107 | } |
107 | 108 | ||
108 | @Override | 109 | @Override |
109 | public Set<ApplicationId> getAppIds() { | 110 | public Set<ApplicationId> getAppIds() { |
110 | - checkPermission(Permission.APP_READ); | 111 | + checkPermission(APP_READ); |
111 | 112 | ||
112 | return applicationIdStore.getAppIds(); | 113 | return applicationIdStore.getAppIds(); |
113 | } | 114 | } |
114 | 115 | ||
115 | @Override | 116 | @Override |
116 | public ApplicationId getAppId(Short id) { | 117 | public ApplicationId getAppId(Short id) { |
117 | - checkPermission(Permission.APP_READ); | 118 | + checkPermission(APP_READ); |
118 | 119 | ||
119 | return applicationIdStore.getAppId(id); | 120 | return applicationIdStore.getAppId(id); |
120 | } | 121 | } |
121 | 122 | ||
122 | @Override | 123 | @Override |
123 | public ApplicationId getAppId(String name) { | 124 | public ApplicationId getAppId(String name) { |
124 | - checkPermission(Permission.APP_READ); | 125 | + checkPermission(APP_READ); |
125 | 126 | ||
126 | return applicationIdStore.getAppId(name); | 127 | return applicationIdStore.getAppId(name); |
127 | } | 128 | } | ... | ... |
... | @@ -27,7 +27,6 @@ import org.apache.felix.scr.annotations.Service; | ... | @@ -27,7 +27,6 @@ import org.apache.felix.scr.annotations.Service; |
27 | import org.onosproject.cluster.ClusterService; | 27 | import org.onosproject.cluster.ClusterService; |
28 | import org.onosproject.cluster.NodeId; | 28 | import org.onosproject.cluster.NodeId; |
29 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; | 29 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; |
30 | -import org.onosproject.core.Permission; | ||
31 | import org.onosproject.net.config.NetworkConfigEvent; | 30 | import org.onosproject.net.config.NetworkConfigEvent; |
32 | import org.onosproject.net.config.NetworkConfigListener; | 31 | import org.onosproject.net.config.NetworkConfigListener; |
33 | import org.onosproject.net.config.NetworkConfigService; | 32 | import org.onosproject.net.config.NetworkConfigService; |
... | @@ -77,6 +76,7 @@ import static org.onlab.util.Tools.groupedThreads; | ... | @@ -77,6 +76,7 @@ import static org.onlab.util.Tools.groupedThreads; |
77 | import static org.onosproject.net.MastershipRole.*; | 76 | import static org.onosproject.net.MastershipRole.*; |
78 | import static org.onosproject.security.AppGuard.checkPermission; | 77 | import static org.onosproject.security.AppGuard.checkPermission; |
79 | import static org.slf4j.LoggerFactory.getLogger; | 78 | import static org.slf4j.LoggerFactory.getLogger; |
79 | +import static org.onosproject.security.AppPermission.Type.*; | ||
80 | 80 | ||
81 | 81 | ||
82 | /** | 82 | /** |
... | @@ -151,60 +151,60 @@ public class DeviceManager | ... | @@ -151,60 +151,60 @@ public class DeviceManager |
151 | 151 | ||
152 | @Override | 152 | @Override |
153 | public int getDeviceCount() { | 153 | public int getDeviceCount() { |
154 | - checkPermission(Permission.DEVICE_READ); | 154 | + checkPermission(DEVICE_READ); |
155 | return store.getDeviceCount(); | 155 | return store.getDeviceCount(); |
156 | } | 156 | } |
157 | 157 | ||
158 | @Override | 158 | @Override |
159 | public Iterable<Device> getDevices() { | 159 | public Iterable<Device> getDevices() { |
160 | - checkPermission(Permission.DEVICE_READ); | 160 | + checkPermission(DEVICE_READ); |
161 | return store.getDevices(); | 161 | return store.getDevices(); |
162 | } | 162 | } |
163 | 163 | ||
164 | @Override | 164 | @Override |
165 | public Iterable<Device> getAvailableDevices() { | 165 | public Iterable<Device> getAvailableDevices() { |
166 | - checkPermission(Permission.DEVICE_READ); | 166 | + checkPermission(DEVICE_READ); |
167 | return store.getAvailableDevices(); | 167 | return store.getAvailableDevices(); |
168 | } | 168 | } |
169 | 169 | ||
170 | @Override | 170 | @Override |
171 | public Device getDevice(DeviceId deviceId) { | 171 | public Device getDevice(DeviceId deviceId) { |
172 | - checkPermission(Permission.DEVICE_READ); | 172 | + checkPermission(DEVICE_READ); |
173 | checkNotNull(deviceId, DEVICE_ID_NULL); | 173 | checkNotNull(deviceId, DEVICE_ID_NULL); |
174 | return store.getDevice(deviceId); | 174 | return store.getDevice(deviceId); |
175 | } | 175 | } |
176 | 176 | ||
177 | @Override | 177 | @Override |
178 | public MastershipRole getRole(DeviceId deviceId) { | 178 | public MastershipRole getRole(DeviceId deviceId) { |
179 | - checkPermission(Permission.DEVICE_READ); | 179 | + checkPermission(DEVICE_READ); |
180 | checkNotNull(deviceId, DEVICE_ID_NULL); | 180 | checkNotNull(deviceId, DEVICE_ID_NULL); |
181 | return mastershipService.getLocalRole(deviceId); | 181 | return mastershipService.getLocalRole(deviceId); |
182 | } | 182 | } |
183 | 183 | ||
184 | @Override | 184 | @Override |
185 | public List<Port> getPorts(DeviceId deviceId) { | 185 | public List<Port> getPorts(DeviceId deviceId) { |
186 | - checkPermission(Permission.DEVICE_READ); | 186 | + checkPermission(DEVICE_READ); |
187 | checkNotNull(deviceId, DEVICE_ID_NULL); | 187 | checkNotNull(deviceId, DEVICE_ID_NULL); |
188 | return store.getPorts(deviceId); | 188 | return store.getPorts(deviceId); |
189 | } | 189 | } |
190 | 190 | ||
191 | @Override | 191 | @Override |
192 | public List<PortStatistics> getPortStatistics(DeviceId deviceId) { | 192 | public List<PortStatistics> getPortStatistics(DeviceId deviceId) { |
193 | - checkPermission(Permission.DEVICE_READ); | 193 | + checkPermission(DEVICE_READ); |
194 | checkNotNull(deviceId, DEVICE_ID_NULL); | 194 | checkNotNull(deviceId, DEVICE_ID_NULL); |
195 | return store.getPortStatistics(deviceId); | 195 | return store.getPortStatistics(deviceId); |
196 | } | 196 | } |
197 | 197 | ||
198 | @Override | 198 | @Override |
199 | public List<PortStatistics> getPortDeltaStatistics(DeviceId deviceId) { | 199 | public List<PortStatistics> getPortDeltaStatistics(DeviceId deviceId) { |
200 | - checkPermission(Permission.DEVICE_READ); | 200 | + checkPermission(DEVICE_READ); |
201 | checkNotNull(deviceId, DEVICE_ID_NULL); | 201 | checkNotNull(deviceId, DEVICE_ID_NULL); |
202 | return store.getPortDeltaStatistics(deviceId); | 202 | return store.getPortDeltaStatistics(deviceId); |
203 | } | 203 | } |
204 | 204 | ||
205 | @Override | 205 | @Override |
206 | public Port getPort(DeviceId deviceId, PortNumber portNumber) { | 206 | public Port getPort(DeviceId deviceId, PortNumber portNumber) { |
207 | - checkPermission(Permission.DEVICE_READ); | 207 | + checkPermission(DEVICE_READ); |
208 | checkNotNull(deviceId, DEVICE_ID_NULL); | 208 | checkNotNull(deviceId, DEVICE_ID_NULL); |
209 | checkNotNull(portNumber, PORT_NUMBER_NULL); | 209 | checkNotNull(portNumber, PORT_NUMBER_NULL); |
210 | return store.getPort(deviceId, portNumber); | 210 | return store.getPort(deviceId, portNumber); |
... | @@ -212,7 +212,7 @@ public class DeviceManager | ... | @@ -212,7 +212,7 @@ public class DeviceManager |
212 | 212 | ||
213 | @Override | 213 | @Override |
214 | public boolean isAvailable(DeviceId deviceId) { | 214 | public boolean isAvailable(DeviceId deviceId) { |
215 | - checkPermission(Permission.DEVICE_READ); | 215 | + checkPermission(DEVICE_READ); |
216 | 216 | ||
217 | checkNotNull(deviceId, DEVICE_ID_NULL); | 217 | checkNotNull(deviceId, DEVICE_ID_NULL); |
218 | return store.isAvailable(deviceId); | 218 | return store.isAvailable(deviceId); |
... | @@ -664,7 +664,7 @@ public class DeviceManager | ... | @@ -664,7 +664,7 @@ public class DeviceManager |
664 | 664 | ||
665 | @Override | 665 | @Override |
666 | public Iterable<Device> getDevices(Type type) { | 666 | public Iterable<Device> getDevices(Type type) { |
667 | - checkPermission(Permission.DEVICE_READ); | 667 | + checkPermission(DEVICE_READ); |
668 | Set<Device> results = new HashSet<>(); | 668 | Set<Device> results = new HashSet<>(); |
669 | Iterable<Device> devices = store.getDevices(); | 669 | Iterable<Device> devices = store.getDevices(); |
670 | if (devices != null) { | 670 | if (devices != null) { |
... | @@ -679,7 +679,7 @@ public class DeviceManager | ... | @@ -679,7 +679,7 @@ public class DeviceManager |
679 | 679 | ||
680 | @Override | 680 | @Override |
681 | public Iterable<Device> getAvailableDevices(Type type) { | 681 | public Iterable<Device> getAvailableDevices(Type type) { |
682 | - checkPermission(Permission.DEVICE_READ); | 682 | + checkPermission(DEVICE_READ); |
683 | Set<Device> results = new HashSet<>(); | 683 | Set<Device> results = new HashSet<>(); |
684 | Iterable<Device> availableDevices = store.getAvailableDevices(); | 684 | Iterable<Device> availableDevices = store.getAvailableDevices(); |
685 | if (availableDevices != null) { | 685 | if (availableDevices != null) { | ... | ... |
... | @@ -24,7 +24,6 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -24,7 +24,6 @@ import org.apache.felix.scr.annotations.Deactivate; |
24 | import org.apache.felix.scr.annotations.Reference; | 24 | import org.apache.felix.scr.annotations.Reference; |
25 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 25 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
26 | import org.apache.felix.scr.annotations.Service; | 26 | import org.apache.felix.scr.annotations.Service; |
27 | -import org.onosproject.core.Permission; | ||
28 | import org.onosproject.net.Device; | 27 | import org.onosproject.net.Device; |
29 | import org.onosproject.net.DeviceId; | 28 | import org.onosproject.net.DeviceId; |
30 | import org.onosproject.net.device.DeviceService; | 29 | import org.onosproject.net.device.DeviceService; |
... | @@ -47,6 +46,8 @@ import java.util.stream.Collectors; | ... | @@ -47,6 +46,8 @@ import java.util.stream.Collectors; |
47 | import static org.onlab.util.Tools.nullIsNotFound; | 46 | import static org.onlab.util.Tools.nullIsNotFound; |
48 | import static org.onosproject.net.AnnotationKeys.DRIVER; | 47 | import static org.onosproject.net.AnnotationKeys.DRIVER; |
49 | import static org.onosproject.security.AppGuard.checkPermission; | 48 | import static org.onosproject.security.AppGuard.checkPermission; |
49 | +import static org.onosproject.security.AppPermission.Type.*; | ||
50 | + | ||
50 | 51 | ||
51 | 52 | ||
52 | /** | 53 | /** |
... | @@ -108,7 +109,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS | ... | @@ -108,7 +109,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS |
108 | 109 | ||
109 | @Override | 110 | @Override |
110 | public Set<Driver> getDrivers() { | 111 | public Set<Driver> getDrivers() { |
111 | - checkPermission(Permission.DRIVER_READ); | 112 | + checkPermission(DRIVER_READ); |
112 | 113 | ||
113 | ImmutableSet.Builder<Driver> builder = ImmutableSet.builder(); | 114 | ImmutableSet.Builder<Driver> builder = ImmutableSet.builder(); |
114 | drivers.values().forEach(builder::add); | 115 | drivers.values().forEach(builder::add); |
... | @@ -117,7 +118,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS | ... | @@ -117,7 +118,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS |
117 | 118 | ||
118 | @Override | 119 | @Override |
119 | public Set<Driver> getDrivers(Class<? extends Behaviour> withBehaviour) { | 120 | public Set<Driver> getDrivers(Class<? extends Behaviour> withBehaviour) { |
120 | - checkPermission(Permission.DRIVER_READ); | 121 | + checkPermission(DRIVER_READ); |
121 | 122 | ||
122 | return drivers.values().stream() | 123 | return drivers.values().stream() |
123 | .filter(d -> d.hasBehaviour(withBehaviour)) | 124 | .filter(d -> d.hasBehaviour(withBehaviour)) |
... | @@ -126,14 +127,14 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS | ... | @@ -126,14 +127,14 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS |
126 | 127 | ||
127 | @Override | 128 | @Override |
128 | public Driver getDriver(String driverName) { | 129 | public Driver getDriver(String driverName) { |
129 | - checkPermission(Permission.DRIVER_READ); | 130 | + checkPermission(DRIVER_READ); |
130 | 131 | ||
131 | return nullIsNotFound(drivers.get(driverName), NO_DRIVER); | 132 | return nullIsNotFound(drivers.get(driverName), NO_DRIVER); |
132 | } | 133 | } |
133 | 134 | ||
134 | @Override | 135 | @Override |
135 | public Driver getDriver(String mfr, String hw, String sw) { | 136 | public Driver getDriver(String mfr, String hw, String sw) { |
136 | - checkPermission(Permission.DRIVER_READ); | 137 | + checkPermission(DRIVER_READ); |
137 | 138 | ||
138 | // First attempt a literal search. | 139 | // First attempt a literal search. |
139 | Driver driver = driverByKey.get(key(mfr, hw, sw)); | 140 | Driver driver = driverByKey.get(key(mfr, hw, sw)); |
... | @@ -160,7 +161,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS | ... | @@ -160,7 +161,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS |
160 | 161 | ||
161 | @Override | 162 | @Override |
162 | public Driver getDriver(DeviceId deviceId) { | 163 | public Driver getDriver(DeviceId deviceId) { |
163 | - checkPermission(Permission.DRIVER_READ); | 164 | + checkPermission(DRIVER_READ); |
164 | 165 | ||
165 | Device device = nullIsNotFound(deviceService.getDevice(deviceId), NO_DEVICE); | 166 | Device device = nullIsNotFound(deviceService.getDevice(deviceId), NO_DEVICE); |
166 | String driverName = device.annotations().value(DRIVER); | 167 | String driverName = device.annotations().value(DRIVER); |
... | @@ -174,7 +175,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS | ... | @@ -174,7 +175,7 @@ public class DriverManager extends DefaultDriverProvider implements DriverAdminS |
174 | 175 | ||
175 | @Override | 176 | @Override |
176 | public DriverHandler createHandler(DeviceId deviceId, String... credentials) { | 177 | public DriverHandler createHandler(DeviceId deviceId, String... credentials) { |
177 | - checkPermission(Permission.DRIVER_WRITE); | 178 | + checkPermission(DRIVER_WRITE); |
178 | 179 | ||
179 | Driver driver = getDriver(deviceId); | 180 | Driver driver = getDriver(deviceId); |
180 | return new DefaultDriverHandler(new DefaultDriverData(driver, deviceId)); | 181 | return new DefaultDriverHandler(new DefaultDriverData(driver, deviceId)); | ... | ... |
... | @@ -36,7 +36,6 @@ import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ... | @@ -36,7 +36,6 @@ import org.onosproject.net.provider.AbstractListenerProviderRegistry; |
36 | import org.onosproject.core.ApplicationId; | 36 | import org.onosproject.core.ApplicationId; |
37 | import org.onosproject.core.CoreService; | 37 | import org.onosproject.core.CoreService; |
38 | import org.onosproject.core.IdGenerator; | 38 | import org.onosproject.core.IdGenerator; |
39 | -import org.onosproject.core.Permission; | ||
40 | import org.onosproject.net.Device; | 39 | import org.onosproject.net.Device; |
41 | import org.onosproject.net.DeviceId; | 40 | import org.onosproject.net.DeviceId; |
42 | import org.onosproject.net.device.DeviceService; | 41 | import org.onosproject.net.device.DeviceService; |
... | @@ -79,6 +78,8 @@ import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_ADD_REQUESTED; | ... | @@ -79,6 +78,8 @@ import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_ADD_REQUESTED; |
79 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_REMOVE_REQUESTED; | 78 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_REMOVE_REQUESTED; |
80 | import static org.onosproject.security.AppGuard.checkPermission; | 79 | import static org.onosproject.security.AppGuard.checkPermission; |
81 | import static org.slf4j.LoggerFactory.getLogger; | 80 | import static org.slf4j.LoggerFactory.getLogger; |
81 | +import static org.onosproject.security.AppPermission.Type.*; | ||
82 | + | ||
82 | 83 | ||
83 | 84 | ||
84 | /** | 85 | /** |
... | @@ -165,19 +166,19 @@ public class FlowRuleManager | ... | @@ -165,19 +166,19 @@ public class FlowRuleManager |
165 | 166 | ||
166 | @Override | 167 | @Override |
167 | public int getFlowRuleCount() { | 168 | public int getFlowRuleCount() { |
168 | - checkPermission(Permission.FLOWRULE_READ); | 169 | + checkPermission(FLOWRULE_READ); |
169 | return store.getFlowRuleCount(); | 170 | return store.getFlowRuleCount(); |
170 | } | 171 | } |
171 | 172 | ||
172 | @Override | 173 | @Override |
173 | public Iterable<FlowEntry> getFlowEntries(DeviceId deviceId) { | 174 | public Iterable<FlowEntry> getFlowEntries(DeviceId deviceId) { |
174 | - checkPermission(Permission.FLOWRULE_READ); | 175 | + checkPermission(FLOWRULE_READ); |
175 | return store.getFlowEntries(deviceId); | 176 | return store.getFlowEntries(deviceId); |
176 | } | 177 | } |
177 | 178 | ||
178 | @Override | 179 | @Override |
179 | public void applyFlowRules(FlowRule... flowRules) { | 180 | public void applyFlowRules(FlowRule... flowRules) { |
180 | - checkPermission(Permission.FLOWRULE_WRITE); | 181 | + checkPermission(FLOWRULE_WRITE); |
181 | 182 | ||
182 | FlowRuleOperations.Builder builder = FlowRuleOperations.builder(); | 183 | FlowRuleOperations.Builder builder = FlowRuleOperations.builder(); |
183 | for (int i = 0; i < flowRules.length; i++) { | 184 | for (int i = 0; i < flowRules.length; i++) { |
... | @@ -188,7 +189,7 @@ public class FlowRuleManager | ... | @@ -188,7 +189,7 @@ public class FlowRuleManager |
188 | 189 | ||
189 | @Override | 190 | @Override |
190 | public void removeFlowRules(FlowRule... flowRules) { | 191 | public void removeFlowRules(FlowRule... flowRules) { |
191 | - checkPermission(Permission.FLOWRULE_WRITE); | 192 | + checkPermission(FLOWRULE_WRITE); |
192 | 193 | ||
193 | FlowRuleOperations.Builder builder = FlowRuleOperations.builder(); | 194 | FlowRuleOperations.Builder builder = FlowRuleOperations.builder(); |
194 | for (int i = 0; i < flowRules.length; i++) { | 195 | for (int i = 0; i < flowRules.length; i++) { |
... | @@ -199,13 +200,13 @@ public class FlowRuleManager | ... | @@ -199,13 +200,13 @@ public class FlowRuleManager |
199 | 200 | ||
200 | @Override | 201 | @Override |
201 | public void removeFlowRulesById(ApplicationId id) { | 202 | public void removeFlowRulesById(ApplicationId id) { |
202 | - checkPermission(Permission.FLOWRULE_WRITE); | 203 | + checkPermission(FLOWRULE_WRITE); |
203 | removeFlowRules(Iterables.toArray(getFlowRulesById(id), FlowRule.class)); | 204 | removeFlowRules(Iterables.toArray(getFlowRulesById(id), FlowRule.class)); |
204 | } | 205 | } |
205 | 206 | ||
206 | @Override | 207 | @Override |
207 | public Iterable<FlowRule> getFlowRulesById(ApplicationId id) { | 208 | public Iterable<FlowRule> getFlowRulesById(ApplicationId id) { |
208 | - checkPermission(Permission.FLOWRULE_READ); | 209 | + checkPermission(FLOWRULE_READ); |
209 | 210 | ||
210 | Set<FlowRule> flowEntries = Sets.newHashSet(); | 211 | Set<FlowRule> flowEntries = Sets.newHashSet(); |
211 | for (Device d : deviceService.getDevices()) { | 212 | for (Device d : deviceService.getDevices()) { |
... | @@ -220,7 +221,7 @@ public class FlowRuleManager | ... | @@ -220,7 +221,7 @@ public class FlowRuleManager |
220 | 221 | ||
221 | @Override | 222 | @Override |
222 | public Iterable<FlowRule> getFlowRulesByGroupId(ApplicationId appId, short groupId) { | 223 | public Iterable<FlowRule> getFlowRulesByGroupId(ApplicationId appId, short groupId) { |
223 | - checkPermission(Permission.FLOWRULE_READ); | 224 | + checkPermission(FLOWRULE_READ); |
224 | 225 | ||
225 | Set<FlowRule> matches = Sets.newHashSet(); | 226 | Set<FlowRule> matches = Sets.newHashSet(); |
226 | long toLookUp = ((long) appId.id() << 16) | groupId; | 227 | long toLookUp = ((long) appId.id() << 16) | groupId; |
... | @@ -236,7 +237,7 @@ public class FlowRuleManager | ... | @@ -236,7 +237,7 @@ public class FlowRuleManager |
236 | 237 | ||
237 | @Override | 238 | @Override |
238 | public void apply(FlowRuleOperations ops) { | 239 | public void apply(FlowRuleOperations ops) { |
239 | - checkPermission(Permission.FLOWRULE_WRITE); | 240 | + checkPermission(FLOWRULE_WRITE); |
240 | operationsService.submit(new FlowOperationsProcessor(ops)); | 241 | operationsService.submit(new FlowOperationsProcessor(ops)); |
241 | } | 242 | } |
242 | 243 | ... | ... |
... | @@ -27,7 +27,6 @@ import org.onlab.osgi.DefaultServiceDirectory; | ... | @@ -27,7 +27,6 @@ import org.onlab.osgi.DefaultServiceDirectory; |
27 | import org.onlab.osgi.ServiceDirectory; | 27 | import org.onlab.osgi.ServiceDirectory; |
28 | import org.onlab.util.ItemNotFoundException; | 28 | import org.onlab.util.ItemNotFoundException; |
29 | import org.onosproject.cluster.ClusterService; | 29 | import org.onosproject.cluster.ClusterService; |
30 | -import org.onosproject.core.Permission; | ||
31 | import org.onosproject.mastership.MastershipEvent; | 30 | import org.onosproject.mastership.MastershipEvent; |
32 | import org.onosproject.mastership.MastershipListener; | 31 | import org.onosproject.mastership.MastershipListener; |
33 | import org.onosproject.mastership.MastershipService; | 32 | import org.onosproject.mastership.MastershipService; |
... | @@ -62,6 +61,8 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -62,6 +61,8 @@ import static com.google.common.base.Preconditions.checkNotNull; |
62 | import static java.util.concurrent.Executors.newFixedThreadPool; | 61 | import static java.util.concurrent.Executors.newFixedThreadPool; |
63 | import static org.onlab.util.Tools.groupedThreads; | 62 | import static org.onlab.util.Tools.groupedThreads; |
64 | import static org.onosproject.security.AppGuard.checkPermission; | 63 | import static org.onosproject.security.AppGuard.checkPermission; |
64 | +import static org.onosproject.security.AppPermission.Type.*; | ||
65 | + | ||
65 | 66 | ||
66 | 67 | ||
67 | /** | 68 | /** |
... | @@ -193,13 +194,13 @@ public class FlowObjectiveManager implements FlowObjectiveService { | ... | @@ -193,13 +194,13 @@ public class FlowObjectiveManager implements FlowObjectiveService { |
193 | 194 | ||
194 | @Override | 195 | @Override |
195 | public void filter(DeviceId deviceId, FilteringObjective filteringObjective) { | 196 | public void filter(DeviceId deviceId, FilteringObjective filteringObjective) { |
196 | - checkPermission(Permission.FLOWRULE_WRITE); | 197 | + checkPermission(FLOWRULE_WRITE); |
197 | executorService.submit(new ObjectiveInstaller(deviceId, filteringObjective)); | 198 | executorService.submit(new ObjectiveInstaller(deviceId, filteringObjective)); |
198 | } | 199 | } |
199 | 200 | ||
200 | @Override | 201 | @Override |
201 | public void forward(DeviceId deviceId, ForwardingObjective forwardingObjective) { | 202 | public void forward(DeviceId deviceId, ForwardingObjective forwardingObjective) { |
202 | - checkPermission(Permission.FLOWRULE_WRITE); | 203 | + checkPermission(FLOWRULE_WRITE); |
203 | if (queueObjective(deviceId, forwardingObjective)) { | 204 | if (queueObjective(deviceId, forwardingObjective)) { |
204 | return; | 205 | return; |
205 | } | 206 | } |
... | @@ -208,13 +209,13 @@ public class FlowObjectiveManager implements FlowObjectiveService { | ... | @@ -208,13 +209,13 @@ public class FlowObjectiveManager implements FlowObjectiveService { |
208 | 209 | ||
209 | @Override | 210 | @Override |
210 | public void next(DeviceId deviceId, NextObjective nextObjective) { | 211 | public void next(DeviceId deviceId, NextObjective nextObjective) { |
211 | - checkPermission(Permission.FLOWRULE_WRITE); | 212 | + checkPermission(FLOWRULE_WRITE); |
212 | executorService.submit(new ObjectiveInstaller(deviceId, nextObjective)); | 213 | executorService.submit(new ObjectiveInstaller(deviceId, nextObjective)); |
213 | } | 214 | } |
214 | 215 | ||
215 | @Override | 216 | @Override |
216 | public int allocateNextId() { | 217 | public int allocateNextId() { |
217 | - checkPermission(Permission.FLOWRULE_WRITE); | 218 | + checkPermission(FLOWRULE_WRITE); |
218 | return flowObjectiveStore.allocateNextId(); | 219 | return flowObjectiveStore.allocateNextId(); |
219 | } | 220 | } |
220 | 221 | ... | ... |
... | @@ -27,7 +27,6 @@ import org.onlab.osgi.DefaultServiceDirectory; | ... | @@ -27,7 +27,6 @@ import org.onlab.osgi.DefaultServiceDirectory; |
27 | import org.onlab.osgi.ServiceDirectory; | 27 | import org.onlab.osgi.ServiceDirectory; |
28 | import org.onlab.util.ItemNotFoundException; | 28 | import org.onlab.util.ItemNotFoundException; |
29 | import org.onosproject.cluster.ClusterService; | 29 | import org.onosproject.cluster.ClusterService; |
30 | -import org.onosproject.core.Permission; | ||
31 | import org.onosproject.mastership.MastershipEvent; | 30 | import org.onosproject.mastership.MastershipEvent; |
32 | import org.onosproject.mastership.MastershipListener; | 31 | import org.onosproject.mastership.MastershipListener; |
33 | import org.onosproject.mastership.MastershipService; | 32 | import org.onosproject.mastership.MastershipService; |
... | @@ -65,6 +64,7 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -65,6 +64,7 @@ import static com.google.common.base.Preconditions.checkNotNull; |
65 | import static java.util.concurrent.Executors.newFixedThreadPool; | 64 | import static java.util.concurrent.Executors.newFixedThreadPool; |
66 | import static org.onlab.util.Tools.groupedThreads; | 65 | import static org.onlab.util.Tools.groupedThreads; |
67 | import static org.onosproject.security.AppGuard.checkPermission; | 66 | import static org.onosproject.security.AppGuard.checkPermission; |
67 | +import static org.onosproject.security.AppPermission.Type.*; | ||
68 | 68 | ||
69 | 69 | ||
70 | /** | 70 | /** |
... | @@ -217,7 +217,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { | ... | @@ -217,7 +217,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { |
217 | 217 | ||
218 | @Override | 218 | @Override |
219 | public void filter(DeviceId deviceId, FilteringObjective filteringObjective) { | 219 | public void filter(DeviceId deviceId, FilteringObjective filteringObjective) { |
220 | - checkPermission(Permission.FLOWRULE_WRITE); | 220 | + checkPermission(FLOWRULE_WRITE); |
221 | 221 | ||
222 | List<FilteringObjective> filteringObjectives | 222 | List<FilteringObjective> filteringObjectives |
223 | = this.deviceCompositionTreeMap.get(deviceId).updateFilter(filteringObjective); | 223 | = this.deviceCompositionTreeMap.get(deviceId).updateFilter(filteringObjective); |
... | @@ -228,7 +228,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { | ... | @@ -228,7 +228,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { |
228 | 228 | ||
229 | @Override | 229 | @Override |
230 | public void forward(DeviceId deviceId, ForwardingObjective forwardingObjective) { | 230 | public void forward(DeviceId deviceId, ForwardingObjective forwardingObjective) { |
231 | - checkPermission(Permission.FLOWRULE_WRITE); | 231 | + checkPermission(FLOWRULE_WRITE); |
232 | 232 | ||
233 | if (queueObjective(deviceId, forwardingObjective)) { | 233 | if (queueObjective(deviceId, forwardingObjective)) { |
234 | return; | 234 | return; |
... | @@ -242,7 +242,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { | ... | @@ -242,7 +242,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { |
242 | 242 | ||
243 | @Override | 243 | @Override |
244 | public void next(DeviceId deviceId, NextObjective nextObjective) { | 244 | public void next(DeviceId deviceId, NextObjective nextObjective) { |
245 | - checkPermission(Permission.FLOWRULE_WRITE); | 245 | + checkPermission(FLOWRULE_WRITE); |
246 | 246 | ||
247 | List<NextObjective> nextObjectives = this.deviceCompositionTreeMap.get(deviceId).updateNext(nextObjective); | 247 | List<NextObjective> nextObjectives = this.deviceCompositionTreeMap.get(deviceId).updateNext(nextObjective); |
248 | for (NextObjective tmp : nextObjectives) { | 248 | for (NextObjective tmp : nextObjectives) { |
... | @@ -252,7 +252,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { | ... | @@ -252,7 +252,7 @@ public class FlowObjectiveCompositionManager implements FlowObjectiveService { |
252 | 252 | ||
253 | @Override | 253 | @Override |
254 | public int allocateNextId() { | 254 | public int allocateNextId() { |
255 | - checkPermission(Permission.FLOWRULE_WRITE); | 255 | + checkPermission(FLOWRULE_WRITE); |
256 | 256 | ||
257 | return flowObjectiveStore.allocateNextId(); | 257 | return flowObjectiveStore.allocateNextId(); |
258 | } | 258 | } | ... | ... |
... | @@ -23,7 +23,6 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; | ... | @@ -23,7 +23,6 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; |
23 | import org.apache.felix.scr.annotations.Service; | 23 | import org.apache.felix.scr.annotations.Service; |
24 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; | 24 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; |
25 | import org.onosproject.core.ApplicationId; | 25 | import org.onosproject.core.ApplicationId; |
26 | -import org.onosproject.core.Permission; | ||
27 | import org.onosproject.net.DeviceId; | 26 | import org.onosproject.net.DeviceId; |
28 | import org.onosproject.net.device.DeviceEvent; | 27 | import org.onosproject.net.device.DeviceEvent; |
29 | import org.onosproject.net.device.DeviceListener; | 28 | import org.onosproject.net.device.DeviceListener; |
... | @@ -51,6 +50,8 @@ import java.util.Collections; | ... | @@ -51,6 +50,8 @@ import java.util.Collections; |
51 | 50 | ||
52 | import static org.onosproject.security.AppGuard.checkPermission; | 51 | import static org.onosproject.security.AppGuard.checkPermission; |
53 | import static org.slf4j.LoggerFactory.getLogger; | 52 | import static org.slf4j.LoggerFactory.getLogger; |
53 | +import static org.onosproject.security.AppPermission.Type.*; | ||
54 | + | ||
54 | 55 | ||
55 | 56 | ||
56 | /** | 57 | /** |
... | @@ -96,7 +97,7 @@ public class GroupManager | ... | @@ -96,7 +97,7 @@ public class GroupManager |
96 | */ | 97 | */ |
97 | @Override | 98 | @Override |
98 | public void addGroup(GroupDescription groupDesc) { | 99 | public void addGroup(GroupDescription groupDesc) { |
99 | - checkPermission(Permission.GROUP_WRITE); | 100 | + checkPermission(GROUP_WRITE); |
100 | store.storeGroupDescription(groupDesc); | 101 | store.storeGroupDescription(groupDesc); |
101 | } | 102 | } |
102 | 103 | ||
... | @@ -115,7 +116,7 @@ public class GroupManager | ... | @@ -115,7 +116,7 @@ public class GroupManager |
115 | */ | 116 | */ |
116 | @Override | 117 | @Override |
117 | public Group getGroup(DeviceId deviceId, GroupKey appCookie) { | 118 | public Group getGroup(DeviceId deviceId, GroupKey appCookie) { |
118 | - checkPermission(Permission.GROUP_READ); | 119 | + checkPermission(GROUP_READ); |
119 | return store.getGroup(deviceId, appCookie); | 120 | return store.getGroup(deviceId, appCookie); |
120 | } | 121 | } |
121 | 122 | ||
... | @@ -137,7 +138,7 @@ public class GroupManager | ... | @@ -137,7 +138,7 @@ public class GroupManager |
137 | GroupBuckets buckets, | 138 | GroupBuckets buckets, |
138 | GroupKey newCookie, | 139 | GroupKey newCookie, |
139 | ApplicationId appId) { | 140 | ApplicationId appId) { |
140 | - checkPermission(Permission.GROUP_WRITE); | 141 | + checkPermission(GROUP_WRITE); |
141 | store.updateGroupDescription(deviceId, | 142 | store.updateGroupDescription(deviceId, |
142 | oldCookie, | 143 | oldCookie, |
143 | UpdateType.ADD, | 144 | UpdateType.ADD, |
... | @@ -163,7 +164,7 @@ public class GroupManager | ... | @@ -163,7 +164,7 @@ public class GroupManager |
163 | GroupBuckets buckets, | 164 | GroupBuckets buckets, |
164 | GroupKey newCookie, | 165 | GroupKey newCookie, |
165 | ApplicationId appId) { | 166 | ApplicationId appId) { |
166 | - checkPermission(Permission.GROUP_WRITE); | 167 | + checkPermission(GROUP_WRITE); |
167 | store.updateGroupDescription(deviceId, | 168 | store.updateGroupDescription(deviceId, |
168 | oldCookie, | 169 | oldCookie, |
169 | UpdateType.REMOVE, | 170 | UpdateType.REMOVE, |
... | @@ -185,7 +186,7 @@ public class GroupManager | ... | @@ -185,7 +186,7 @@ public class GroupManager |
185 | public void removeGroup(DeviceId deviceId, | 186 | public void removeGroup(DeviceId deviceId, |
186 | GroupKey appCookie, | 187 | GroupKey appCookie, |
187 | ApplicationId appId) { | 188 | ApplicationId appId) { |
188 | - checkPermission(Permission.GROUP_WRITE); | 189 | + checkPermission(GROUP_WRITE); |
189 | store.deleteGroupDescription(deviceId, appCookie); | 190 | store.deleteGroupDescription(deviceId, appCookie); |
190 | } | 191 | } |
191 | 192 | ||
... | @@ -200,13 +201,13 @@ public class GroupManager | ... | @@ -200,13 +201,13 @@ public class GroupManager |
200 | @Override | 201 | @Override |
201 | public Iterable<Group> getGroups(DeviceId deviceId, | 202 | public Iterable<Group> getGroups(DeviceId deviceId, |
202 | ApplicationId appId) { | 203 | ApplicationId appId) { |
203 | - checkPermission(Permission.GROUP_READ); | 204 | + checkPermission(GROUP_READ); |
204 | return store.getGroups(deviceId); | 205 | return store.getGroups(deviceId); |
205 | } | 206 | } |
206 | 207 | ||
207 | @Override | 208 | @Override |
208 | public Iterable<Group> getGroups(DeviceId deviceId) { | 209 | public Iterable<Group> getGroups(DeviceId deviceId) { |
209 | - checkPermission(Permission.GROUP_READ); | 210 | + checkPermission(GROUP_READ); |
210 | return store.getGroups(deviceId); | 211 | return store.getGroups(deviceId); |
211 | } | 212 | } |
212 | 213 | ... | ... |
... | @@ -26,7 +26,6 @@ import org.onlab.packet.MacAddress; | ... | @@ -26,7 +26,6 @@ import org.onlab.packet.MacAddress; |
26 | import org.onlab.packet.VlanId; | 26 | import org.onlab.packet.VlanId; |
27 | import org.onosproject.incubator.net.intf.InterfaceService; | 27 | import org.onosproject.incubator.net.intf.InterfaceService; |
28 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; | 28 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; |
29 | -import org.onosproject.core.Permission; | ||
30 | import org.onosproject.net.config.NetworkConfigEvent; | 29 | import org.onosproject.net.config.NetworkConfigEvent; |
31 | import org.onosproject.net.config.NetworkConfigListener; | 30 | import org.onosproject.net.config.NetworkConfigListener; |
32 | import org.onosproject.net.config.NetworkConfigService; | 31 | import org.onosproject.net.config.NetworkConfigService; |
... | @@ -57,6 +56,7 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -57,6 +56,7 @@ import static com.google.common.base.Preconditions.checkNotNull; |
57 | import static com.google.common.base.Preconditions.checkState; | 56 | import static com.google.common.base.Preconditions.checkState; |
58 | import static org.onosproject.security.AppGuard.checkPermission; | 57 | import static org.onosproject.security.AppGuard.checkPermission; |
59 | import static org.slf4j.LoggerFactory.getLogger; | 58 | import static org.slf4j.LoggerFactory.getLogger; |
59 | +import static org.onosproject.security.AppPermission.Type.*; | ||
60 | 60 | ||
61 | /** | 61 | /** |
62 | * Provides basic implementation of the host SB & NB APIs. | 62 | * Provides basic implementation of the host SB & NB APIs. |
... | @@ -118,66 +118,66 @@ public class HostManager | ... | @@ -118,66 +118,66 @@ public class HostManager |
118 | 118 | ||
119 | @Override | 119 | @Override |
120 | public int getHostCount() { | 120 | public int getHostCount() { |
121 | - checkPermission(Permission.HOST_READ); | 121 | + checkPermission(HOST_READ); |
122 | return store.getHostCount(); | 122 | return store.getHostCount(); |
123 | } | 123 | } |
124 | 124 | ||
125 | @Override | 125 | @Override |
126 | public Iterable<Host> getHosts() { | 126 | public Iterable<Host> getHosts() { |
127 | - checkPermission(Permission.HOST_READ); | 127 | + checkPermission(HOST_READ); |
128 | return store.getHosts(); | 128 | return store.getHosts(); |
129 | } | 129 | } |
130 | 130 | ||
131 | @Override | 131 | @Override |
132 | public Host getHost(HostId hostId) { | 132 | public Host getHost(HostId hostId) { |
133 | - checkPermission(Permission.HOST_READ); | 133 | + checkPermission(HOST_READ); |
134 | checkNotNull(hostId, HOST_ID_NULL); | 134 | checkNotNull(hostId, HOST_ID_NULL); |
135 | return store.getHost(hostId); | 135 | return store.getHost(hostId); |
136 | } | 136 | } |
137 | 137 | ||
138 | @Override | 138 | @Override |
139 | public Set<Host> getHostsByVlan(VlanId vlanId) { | 139 | public Set<Host> getHostsByVlan(VlanId vlanId) { |
140 | - checkPermission(Permission.HOST_READ); | 140 | + checkPermission(HOST_READ); |
141 | return store.getHosts(vlanId); | 141 | return store.getHosts(vlanId); |
142 | } | 142 | } |
143 | 143 | ||
144 | @Override | 144 | @Override |
145 | public Set<Host> getHostsByMac(MacAddress mac) { | 145 | public Set<Host> getHostsByMac(MacAddress mac) { |
146 | - checkPermission(Permission.HOST_READ); | 146 | + checkPermission(HOST_READ); |
147 | checkNotNull(mac, "MAC address cannot be null"); | 147 | checkNotNull(mac, "MAC address cannot be null"); |
148 | return store.getHosts(mac); | 148 | return store.getHosts(mac); |
149 | } | 149 | } |
150 | 150 | ||
151 | @Override | 151 | @Override |
152 | public Set<Host> getHostsByIp(IpAddress ip) { | 152 | public Set<Host> getHostsByIp(IpAddress ip) { |
153 | - checkPermission(Permission.HOST_READ); | 153 | + checkPermission(HOST_READ); |
154 | checkNotNull(ip, "IP address cannot be null"); | 154 | checkNotNull(ip, "IP address cannot be null"); |
155 | return store.getHosts(ip); | 155 | return store.getHosts(ip); |
156 | } | 156 | } |
157 | 157 | ||
158 | @Override | 158 | @Override |
159 | public Set<Host> getConnectedHosts(ConnectPoint connectPoint) { | 159 | public Set<Host> getConnectedHosts(ConnectPoint connectPoint) { |
160 | - checkPermission(Permission.HOST_READ); | 160 | + checkPermission(HOST_READ); |
161 | checkNotNull(connectPoint, "Connection point cannot be null"); | 161 | checkNotNull(connectPoint, "Connection point cannot be null"); |
162 | return store.getConnectedHosts(connectPoint); | 162 | return store.getConnectedHosts(connectPoint); |
163 | } | 163 | } |
164 | 164 | ||
165 | @Override | 165 | @Override |
166 | public Set<Host> getConnectedHosts(DeviceId deviceId) { | 166 | public Set<Host> getConnectedHosts(DeviceId deviceId) { |
167 | - checkPermission(Permission.HOST_READ); | 167 | + checkPermission(HOST_READ); |
168 | checkNotNull(deviceId, "Device ID cannot be null"); | 168 | checkNotNull(deviceId, "Device ID cannot be null"); |
169 | return store.getConnectedHosts(deviceId); | 169 | return store.getConnectedHosts(deviceId); |
170 | } | 170 | } |
171 | 171 | ||
172 | @Override | 172 | @Override |
173 | public void startMonitoringIp(IpAddress ip) { | 173 | public void startMonitoringIp(IpAddress ip) { |
174 | - checkPermission(Permission.HOST_EVENT); | 174 | + checkPermission(HOST_EVENT); |
175 | monitor.addMonitoringFor(ip); | 175 | monitor.addMonitoringFor(ip); |
176 | } | 176 | } |
177 | 177 | ||
178 | @Override | 178 | @Override |
179 | public void stopMonitoringIp(IpAddress ip) { | 179 | public void stopMonitoringIp(IpAddress ip) { |
180 | - checkPermission(Permission.HOST_EVENT); | 180 | + checkPermission(HOST_EVENT); |
181 | monitor.stopMonitoring(ip); | 181 | monitor.stopMonitoring(ip); |
182 | } | 182 | } |
183 | 183 | ||
... | @@ -212,13 +212,13 @@ public class HostManager | ... | @@ -212,13 +212,13 @@ public class HostManager |
212 | 212 | ||
213 | @Override | 213 | @Override |
214 | public Set<PortAddresses> getAddressBindings() { | 214 | public Set<PortAddresses> getAddressBindings() { |
215 | - checkPermission(Permission.HOST_READ); | 215 | + checkPermission(HOST_READ); |
216 | return store.getAddressBindings(); | 216 | return store.getAddressBindings(); |
217 | } | 217 | } |
218 | 218 | ||
219 | @Override | 219 | @Override |
220 | public Set<PortAddresses> getAddressBindingsForPort(ConnectPoint connectPoint) { | 220 | public Set<PortAddresses> getAddressBindingsForPort(ConnectPoint connectPoint) { |
221 | - checkPermission(Permission.HOST_READ); | 221 | + checkPermission(HOST_READ); |
222 | return store.getAddressBindingsForPort(connectPoint); | 222 | return store.getAddressBindingsForPort(connectPoint); |
223 | } | 223 | } |
224 | 224 | ... | ... |
... | @@ -25,7 +25,6 @@ import org.apache.felix.scr.annotations.Service; | ... | @@ -25,7 +25,6 @@ import org.apache.felix.scr.annotations.Service; |
25 | import org.onosproject.event.AbstractListenerManager; | 25 | import org.onosproject.event.AbstractListenerManager; |
26 | import org.onosproject.core.CoreService; | 26 | import org.onosproject.core.CoreService; |
27 | import org.onosproject.core.IdGenerator; | 27 | import org.onosproject.core.IdGenerator; |
28 | -import org.onosproject.core.Permission; | ||
29 | import org.onosproject.net.flow.FlowRule; | 28 | import org.onosproject.net.flow.FlowRule; |
30 | import org.onosproject.net.flow.FlowRuleOperations; | 29 | import org.onosproject.net.flow.FlowRuleOperations; |
31 | import org.onosproject.net.flow.FlowRuleOperationsContext; | 30 | import org.onosproject.net.flow.FlowRuleOperationsContext; |
... | @@ -67,6 +66,8 @@ import static org.onosproject.net.intent.constraint.PartialFailureConstraint.int | ... | @@ -67,6 +66,8 @@ import static org.onosproject.net.intent.constraint.PartialFailureConstraint.int |
67 | import static org.onosproject.net.intent.impl.phase.IntentProcessPhase.newInitialPhase; | 66 | import static org.onosproject.net.intent.impl.phase.IntentProcessPhase.newInitialPhase; |
68 | import static org.onosproject.security.AppGuard.checkPermission; | 67 | import static org.onosproject.security.AppGuard.checkPermission; |
69 | import static org.slf4j.LoggerFactory.getLogger; | 68 | import static org.slf4j.LoggerFactory.getLogger; |
69 | +import static org.onosproject.security.AppPermission.Type.*; | ||
70 | + | ||
70 | 71 | ||
71 | /** | 72 | /** |
72 | * An implementation of intent service. | 73 | * An implementation of intent service. |
... | @@ -138,7 +139,7 @@ public class IntentManager | ... | @@ -138,7 +139,7 @@ public class IntentManager |
138 | 139 | ||
139 | @Override | 140 | @Override |
140 | public void submit(Intent intent) { | 141 | public void submit(Intent intent) { |
141 | - checkPermission(Permission.INTENT_WRITE); | 142 | + checkPermission(INTENT_WRITE); |
142 | checkNotNull(intent, INTENT_NULL); | 143 | checkNotNull(intent, INTENT_NULL); |
143 | IntentData data = new IntentData(intent, IntentState.INSTALL_REQ, null); | 144 | IntentData data = new IntentData(intent, IntentState.INSTALL_REQ, null); |
144 | store.addPending(data); | 145 | store.addPending(data); |
... | @@ -146,7 +147,7 @@ public class IntentManager | ... | @@ -146,7 +147,7 @@ public class IntentManager |
146 | 147 | ||
147 | @Override | 148 | @Override |
148 | public void withdraw(Intent intent) { | 149 | public void withdraw(Intent intent) { |
149 | - checkPermission(Permission.INTENT_WRITE); | 150 | + checkPermission(INTENT_WRITE); |
150 | checkNotNull(intent, INTENT_NULL); | 151 | checkNotNull(intent, INTENT_NULL); |
151 | IntentData data = new IntentData(intent, IntentState.WITHDRAW_REQ, null); | 152 | IntentData data = new IntentData(intent, IntentState.WITHDRAW_REQ, null); |
152 | store.addPending(data); | 153 | store.addPending(data); |
... | @@ -154,7 +155,7 @@ public class IntentManager | ... | @@ -154,7 +155,7 @@ public class IntentManager |
154 | 155 | ||
155 | @Override | 156 | @Override |
156 | public void purge(Intent intent) { | 157 | public void purge(Intent intent) { |
157 | - checkPermission(Permission.INTENT_WRITE); | 158 | + checkPermission(INTENT_WRITE); |
158 | checkNotNull(intent, INTENT_NULL); | 159 | checkNotNull(intent, INTENT_NULL); |
159 | IntentData data = new IntentData(intent, IntentState.PURGE_REQ, null); | 160 | IntentData data = new IntentData(intent, IntentState.PURGE_REQ, null); |
160 | store.addPending(data); | 161 | store.addPending(data); |
... | @@ -162,45 +163,45 @@ public class IntentManager | ... | @@ -162,45 +163,45 @@ public class IntentManager |
162 | 163 | ||
163 | @Override | 164 | @Override |
164 | public Intent getIntent(Key key) { | 165 | public Intent getIntent(Key key) { |
165 | - checkPermission(Permission.INTENT_READ); | 166 | + checkPermission(INTENT_READ); |
166 | return store.getIntent(key); | 167 | return store.getIntent(key); |
167 | } | 168 | } |
168 | 169 | ||
169 | @Override | 170 | @Override |
170 | public Iterable<Intent> getIntents() { | 171 | public Iterable<Intent> getIntents() { |
171 | - checkPermission(Permission.INTENT_READ); | 172 | + checkPermission(INTENT_READ); |
172 | return store.getIntents(); | 173 | return store.getIntents(); |
173 | } | 174 | } |
174 | 175 | ||
175 | @Override | 176 | @Override |
176 | public Iterable<IntentData> getIntentData() { | 177 | public Iterable<IntentData> getIntentData() { |
177 | - checkPermission(Permission.INTENT_READ); | 178 | + checkPermission(INTENT_READ); |
178 | return store.getIntentData(false, 0); | 179 | return store.getIntentData(false, 0); |
179 | } | 180 | } |
180 | 181 | ||
181 | @Override | 182 | @Override |
182 | public long getIntentCount() { | 183 | public long getIntentCount() { |
183 | - checkPermission(Permission.INTENT_READ); | 184 | + checkPermission(INTENT_READ); |
184 | return store.getIntentCount(); | 185 | return store.getIntentCount(); |
185 | } | 186 | } |
186 | 187 | ||
187 | @Override | 188 | @Override |
188 | public IntentState getIntentState(Key intentKey) { | 189 | public IntentState getIntentState(Key intentKey) { |
189 | - checkPermission(Permission.INTENT_READ); | 190 | + checkPermission(INTENT_READ); |
190 | checkNotNull(intentKey, INTENT_ID_NULL); | 191 | checkNotNull(intentKey, INTENT_ID_NULL); |
191 | return store.getIntentState(intentKey); | 192 | return store.getIntentState(intentKey); |
192 | } | 193 | } |
193 | 194 | ||
194 | @Override | 195 | @Override |
195 | public List<Intent> getInstallableIntents(Key intentKey) { | 196 | public List<Intent> getInstallableIntents(Key intentKey) { |
196 | - checkPermission(Permission.INTENT_READ); | 197 | + checkPermission(INTENT_READ); |
197 | checkNotNull(intentKey, INTENT_ID_NULL); | 198 | checkNotNull(intentKey, INTENT_ID_NULL); |
198 | return store.getInstallableIntents(intentKey); | 199 | return store.getInstallableIntents(intentKey); |
199 | } | 200 | } |
200 | 201 | ||
201 | @Override | 202 | @Override |
202 | public boolean isLocal(Key intentKey) { | 203 | public boolean isLocal(Key intentKey) { |
203 | - checkPermission(Permission.INTENT_READ); | 204 | + checkPermission(INTENT_READ); |
204 | return store.isMaster(intentKey); | 205 | return store.isMaster(intentKey); |
205 | } | 206 | } |
206 | 207 | ||
... | @@ -221,7 +222,7 @@ public class IntentManager | ... | @@ -221,7 +222,7 @@ public class IntentManager |
221 | 222 | ||
222 | @Override | 223 | @Override |
223 | public Iterable<Intent> getPending() { | 224 | public Iterable<Intent> getPending() { |
224 | - checkPermission(Permission.INTENT_READ); | 225 | + checkPermission(INTENT_READ); |
225 | 226 | ||
226 | return store.getPending(); | 227 | return store.getPending(); |
227 | } | 228 | } | ... | ... |
... | @@ -25,7 +25,6 @@ import org.apache.felix.scr.annotations.Reference; | ... | @@ -25,7 +25,6 @@ import org.apache.felix.scr.annotations.Reference; |
25 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 25 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
26 | import org.apache.felix.scr.annotations.Service; | 26 | import org.apache.felix.scr.annotations.Service; |
27 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; | 27 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; |
28 | -import org.onosproject.core.Permission; | ||
29 | import org.onosproject.net.config.NetworkConfigEvent; | 28 | import org.onosproject.net.config.NetworkConfigEvent; |
30 | import org.onosproject.net.config.NetworkConfigListener; | 29 | import org.onosproject.net.config.NetworkConfigListener; |
31 | import org.onosproject.net.config.NetworkConfigService; | 30 | import org.onosproject.net.config.NetworkConfigService; |
... | @@ -59,6 +58,7 @@ import static com.google.common.base.Preconditions.checkState; | ... | @@ -59,6 +58,7 @@ import static com.google.common.base.Preconditions.checkState; |
59 | import static org.onosproject.net.LinkKey.linkKey; | 58 | import static org.onosproject.net.LinkKey.linkKey; |
60 | import static org.onosproject.security.AppGuard.checkPermission; | 59 | import static org.onosproject.security.AppGuard.checkPermission; |
61 | import static org.slf4j.LoggerFactory.getLogger; | 60 | import static org.slf4j.LoggerFactory.getLogger; |
61 | +import static org.onosproject.security.AppPermission.Type.*; | ||
62 | 62 | ||
63 | 63 | ||
64 | /** | 64 | /** |
... | @@ -111,19 +111,19 @@ public class LinkManager | ... | @@ -111,19 +111,19 @@ public class LinkManager |
111 | 111 | ||
112 | @Override | 112 | @Override |
113 | public int getLinkCount() { | 113 | public int getLinkCount() { |
114 | - checkPermission(Permission.LINK_READ); | 114 | + checkPermission(LINK_READ); |
115 | return store.getLinkCount(); | 115 | return store.getLinkCount(); |
116 | } | 116 | } |
117 | 117 | ||
118 | @Override | 118 | @Override |
119 | public Iterable<Link> getLinks() { | 119 | public Iterable<Link> getLinks() { |
120 | - checkPermission(Permission.LINK_READ); | 120 | + checkPermission(LINK_READ); |
121 | return store.getLinks(); | 121 | return store.getLinks(); |
122 | } | 122 | } |
123 | 123 | ||
124 | @Override | 124 | @Override |
125 | public Iterable<Link> getActiveLinks() { | 125 | public Iterable<Link> getActiveLinks() { |
126 | - checkPermission(Permission.LINK_READ); | 126 | + checkPermission(LINK_READ); |
127 | return FluentIterable.from(getLinks()) | 127 | return FluentIterable.from(getLinks()) |
128 | .filter(new Predicate<Link>() { | 128 | .filter(new Predicate<Link>() { |
129 | 129 | ||
... | @@ -136,7 +136,7 @@ public class LinkManager | ... | @@ -136,7 +136,7 @@ public class LinkManager |
136 | 136 | ||
137 | @Override | 137 | @Override |
138 | public Set<Link> getDeviceLinks(DeviceId deviceId) { | 138 | public Set<Link> getDeviceLinks(DeviceId deviceId) { |
139 | - checkPermission(Permission.LINK_READ); | 139 | + checkPermission(LINK_READ); |
140 | checkNotNull(deviceId, DEVICE_ID_NULL); | 140 | checkNotNull(deviceId, DEVICE_ID_NULL); |
141 | return Sets.union(store.getDeviceEgressLinks(deviceId), | 141 | return Sets.union(store.getDeviceEgressLinks(deviceId), |
142 | store.getDeviceIngressLinks(deviceId)); | 142 | store.getDeviceIngressLinks(deviceId)); |
... | @@ -144,21 +144,21 @@ public class LinkManager | ... | @@ -144,21 +144,21 @@ public class LinkManager |
144 | 144 | ||
145 | @Override | 145 | @Override |
146 | public Set<Link> getDeviceEgressLinks(DeviceId deviceId) { | 146 | public Set<Link> getDeviceEgressLinks(DeviceId deviceId) { |
147 | - checkPermission(Permission.LINK_READ); | 147 | + checkPermission(LINK_READ); |
148 | checkNotNull(deviceId, DEVICE_ID_NULL); | 148 | checkNotNull(deviceId, DEVICE_ID_NULL); |
149 | return store.getDeviceEgressLinks(deviceId); | 149 | return store.getDeviceEgressLinks(deviceId); |
150 | } | 150 | } |
151 | 151 | ||
152 | @Override | 152 | @Override |
153 | public Set<Link> getDeviceIngressLinks(DeviceId deviceId) { | 153 | public Set<Link> getDeviceIngressLinks(DeviceId deviceId) { |
154 | - checkPermission(Permission.LINK_READ); | 154 | + checkPermission(LINK_READ); |
155 | checkNotNull(deviceId, DEVICE_ID_NULL); | 155 | checkNotNull(deviceId, DEVICE_ID_NULL); |
156 | return store.getDeviceIngressLinks(deviceId); | 156 | return store.getDeviceIngressLinks(deviceId); |
157 | } | 157 | } |
158 | 158 | ||
159 | @Override | 159 | @Override |
160 | public Set<Link> getLinks(ConnectPoint connectPoint) { | 160 | public Set<Link> getLinks(ConnectPoint connectPoint) { |
161 | - checkPermission(Permission.LINK_READ); | 161 | + checkPermission(LINK_READ); |
162 | checkNotNull(connectPoint, CONNECT_POINT_NULL); | 162 | checkNotNull(connectPoint, CONNECT_POINT_NULL); |
163 | return Sets.union(store.getEgressLinks(connectPoint), | 163 | return Sets.union(store.getEgressLinks(connectPoint), |
164 | store.getIngressLinks(connectPoint)); | 164 | store.getIngressLinks(connectPoint)); |
... | @@ -166,21 +166,21 @@ public class LinkManager | ... | @@ -166,21 +166,21 @@ public class LinkManager |
166 | 166 | ||
167 | @Override | 167 | @Override |
168 | public Set<Link> getEgressLinks(ConnectPoint connectPoint) { | 168 | public Set<Link> getEgressLinks(ConnectPoint connectPoint) { |
169 | - checkPermission(Permission.LINK_READ); | 169 | + checkPermission(LINK_READ); |
170 | checkNotNull(connectPoint, CONNECT_POINT_NULL); | 170 | checkNotNull(connectPoint, CONNECT_POINT_NULL); |
171 | return store.getEgressLinks(connectPoint); | 171 | return store.getEgressLinks(connectPoint); |
172 | } | 172 | } |
173 | 173 | ||
174 | @Override | 174 | @Override |
175 | public Set<Link> getIngressLinks(ConnectPoint connectPoint) { | 175 | public Set<Link> getIngressLinks(ConnectPoint connectPoint) { |
176 | - checkPermission(Permission.LINK_READ); | 176 | + checkPermission(LINK_READ); |
177 | checkNotNull(connectPoint, CONNECT_POINT_NULL); | 177 | checkNotNull(connectPoint, CONNECT_POINT_NULL); |
178 | return store.getIngressLinks(connectPoint); | 178 | return store.getIngressLinks(connectPoint); |
179 | } | 179 | } |
180 | 180 | ||
181 | @Override | 181 | @Override |
182 | public Link getLink(ConnectPoint src, ConnectPoint dst) { | 182 | public Link getLink(ConnectPoint src, ConnectPoint dst) { |
183 | - checkPermission(Permission.LINK_READ); | 183 | + checkPermission(LINK_READ); |
184 | checkNotNull(src, CONNECT_POINT_NULL); | 184 | checkNotNull(src, CONNECT_POINT_NULL); |
185 | checkNotNull(dst, CONNECT_POINT_NULL); | 185 | checkNotNull(dst, CONNECT_POINT_NULL); |
186 | return store.getLink(src, dst); | 186 | return store.getLink(src, dst); | ... | ... |
... | @@ -23,7 +23,6 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; | ... | @@ -23,7 +23,6 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; |
23 | import org.apache.felix.scr.annotations.Service; | 23 | import org.apache.felix.scr.annotations.Service; |
24 | import org.onosproject.core.ApplicationId; | 24 | import org.onosproject.core.ApplicationId; |
25 | import org.onosproject.core.CoreService; | 25 | import org.onosproject.core.CoreService; |
26 | -import org.onosproject.core.Permission; | ||
27 | import org.onosproject.net.Device; | 26 | import org.onosproject.net.Device; |
28 | import org.onosproject.net.device.DeviceEvent; | 27 | import org.onosproject.net.device.DeviceEvent; |
29 | import org.onosproject.net.device.DeviceListener; | 28 | import org.onosproject.net.device.DeviceListener; |
... | @@ -63,7 +62,7 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -63,7 +62,7 @@ import static com.google.common.base.Preconditions.checkNotNull; |
63 | import static org.onlab.util.Tools.groupedThreads; | 62 | import static org.onlab.util.Tools.groupedThreads; |
64 | import static org.onosproject.security.AppGuard.checkPermission; | 63 | import static org.onosproject.security.AppGuard.checkPermission; |
65 | import static org.slf4j.LoggerFactory.getLogger; | 64 | import static org.slf4j.LoggerFactory.getLogger; |
66 | - | 65 | +import static org.onosproject.security.AppPermission.Type.*; |
67 | 66 | ||
68 | /** | 67 | /** |
69 | * Provides a basic implementation of the packet SB & NB APIs. | 68 | * Provides a basic implementation of the packet SB & NB APIs. |
... | @@ -126,14 +125,14 @@ public class PacketManager | ... | @@ -126,14 +125,14 @@ public class PacketManager |
126 | 125 | ||
127 | @Override | 126 | @Override |
128 | public void addProcessor(PacketProcessor processor, int priority) { | 127 | public void addProcessor(PacketProcessor processor, int priority) { |
129 | - checkPermission(Permission.PACKET_EVENT); | 128 | + checkPermission(PACKET_EVENT); |
130 | checkNotNull(processor, "Processor cannot be null"); | 129 | checkNotNull(processor, "Processor cannot be null"); |
131 | processors.put(priority, processor); | 130 | processors.put(priority, processor); |
132 | } | 131 | } |
133 | 132 | ||
134 | @Override | 133 | @Override |
135 | public void removeProcessor(PacketProcessor processor) { | 134 | public void removeProcessor(PacketProcessor processor) { |
136 | - checkPermission(Permission.PACKET_EVENT); | 135 | + checkPermission(PACKET_EVENT); |
137 | checkNotNull(processor, "Processor cannot be null"); | 136 | checkNotNull(processor, "Processor cannot be null"); |
138 | processors.values().remove(processor); | 137 | processors.values().remove(processor); |
139 | } | 138 | } |
... | @@ -141,7 +140,7 @@ public class PacketManager | ... | @@ -141,7 +140,7 @@ public class PacketManager |
141 | @Override | 140 | @Override |
142 | public void requestPackets(TrafficSelector selector, PacketPriority priority, | 141 | public void requestPackets(TrafficSelector selector, PacketPriority priority, |
143 | ApplicationId appId) { | 142 | ApplicationId appId) { |
144 | - checkPermission(Permission.PACKET_READ); | 143 | + checkPermission(PACKET_READ); |
145 | checkNotNull(selector, "Selector cannot be null"); | 144 | checkNotNull(selector, "Selector cannot be null"); |
146 | checkNotNull(appId, "Application ID cannot be null"); | 145 | checkNotNull(appId, "Application ID cannot be null"); |
147 | 146 | ||
... | @@ -154,7 +153,7 @@ public class PacketManager | ... | @@ -154,7 +153,7 @@ public class PacketManager |
154 | @Override | 153 | @Override |
155 | public void cancelPackets(TrafficSelector selector, PacketPriority priority, | 154 | public void cancelPackets(TrafficSelector selector, PacketPriority priority, |
156 | ApplicationId appId) { | 155 | ApplicationId appId) { |
157 | - checkPermission(Permission.PACKET_READ); | 156 | + checkPermission(PACKET_READ); |
158 | checkNotNull(selector, "Selector cannot be null"); | 157 | checkNotNull(selector, "Selector cannot be null"); |
159 | checkNotNull(appId, "Application ID cannot be null"); | 158 | checkNotNull(appId, "Application ID cannot be null"); |
160 | 159 | ||
... | @@ -246,7 +245,7 @@ public class PacketManager | ... | @@ -246,7 +245,7 @@ public class PacketManager |
246 | 245 | ||
247 | @Override | 246 | @Override |
248 | public void emit(OutboundPacket packet) { | 247 | public void emit(OutboundPacket packet) { |
249 | - checkPermission(Permission.PACKET_WRITE); | 248 | + checkPermission(PACKET_WRITE); |
250 | checkNotNull(packet, "Packet cannot be null"); | 249 | checkNotNull(packet, "Packet cannot be null"); |
251 | store.emit(packet); | 250 | store.emit(packet); |
252 | } | 251 | } | ... | ... |
... | @@ -33,7 +33,6 @@ import org.onlab.packet.VlanId; | ... | @@ -33,7 +33,6 @@ import org.onlab.packet.VlanId; |
33 | import org.onlab.packet.ndp.NeighborAdvertisement; | 33 | import org.onlab.packet.ndp.NeighborAdvertisement; |
34 | import org.onlab.packet.ndp.NeighborDiscoveryOptions; | 34 | import org.onlab.packet.ndp.NeighborDiscoveryOptions; |
35 | import org.onlab.packet.ndp.NeighborSolicitation; | 35 | import org.onlab.packet.ndp.NeighborSolicitation; |
36 | -import org.onosproject.core.Permission; | ||
37 | import org.onosproject.incubator.net.intf.Interface; | 36 | import org.onosproject.incubator.net.intf.Interface; |
38 | import org.onosproject.incubator.net.intf.InterfaceService; | 37 | import org.onosproject.incubator.net.intf.InterfaceService; |
39 | import org.onosproject.net.ConnectPoint; | 38 | import org.onosproject.net.ConnectPoint; |
... | @@ -61,6 +60,7 @@ import static org.onlab.packet.VlanId.vlanId; | ... | @@ -61,6 +60,7 @@ import static org.onlab.packet.VlanId.vlanId; |
61 | import static org.onosproject.net.HostId.hostId; | 60 | import static org.onosproject.net.HostId.hostId; |
62 | import static org.onosproject.security.AppGuard.checkPermission; | 61 | import static org.onosproject.security.AppGuard.checkPermission; |
63 | import static org.slf4j.LoggerFactory.getLogger; | 62 | import static org.slf4j.LoggerFactory.getLogger; |
63 | +import static org.onosproject.security.AppPermission.Type.*; | ||
64 | 64 | ||
65 | 65 | ||
66 | @Component(immediate = true) | 66 | @Component(immediate = true) |
... | @@ -110,7 +110,8 @@ public class ProxyArpManager implements ProxyArpService { | ... | @@ -110,7 +110,8 @@ public class ProxyArpManager implements ProxyArpService { |
110 | 110 | ||
111 | @Override | 111 | @Override |
112 | public boolean isKnown(IpAddress addr) { | 112 | public boolean isKnown(IpAddress addr) { |
113 | - checkPermission(Permission.PACKET_READ); | 113 | + checkPermission(PACKET_READ); |
114 | + | ||
114 | checkNotNull(addr, MAC_ADDR_NULL); | 115 | checkNotNull(addr, MAC_ADDR_NULL); |
115 | Set<Host> hosts = hostService.getHostsByIp(addr); | 116 | Set<Host> hosts = hostService.getHostsByIp(addr); |
116 | return !hosts.isEmpty(); | 117 | return !hosts.isEmpty(); |
... | @@ -118,7 +119,8 @@ public class ProxyArpManager implements ProxyArpService { | ... | @@ -118,7 +119,8 @@ public class ProxyArpManager implements ProxyArpService { |
118 | 119 | ||
119 | @Override | 120 | @Override |
120 | public void reply(Ethernet eth, ConnectPoint inPort) { | 121 | public void reply(Ethernet eth, ConnectPoint inPort) { |
121 | - checkPermission(Permission.PACKET_WRITE); | 122 | + checkPermission(PACKET_WRITE); |
123 | + | ||
122 | checkNotNull(eth, REQUEST_NULL); | 124 | checkNotNull(eth, REQUEST_NULL); |
123 | 125 | ||
124 | if (eth.getEtherType() == Ethernet.TYPE_ARP) { | 126 | if (eth.getEtherType() == Ethernet.TYPE_ARP) { |
... | @@ -316,7 +318,8 @@ public class ProxyArpManager implements ProxyArpService { | ... | @@ -316,7 +318,8 @@ public class ProxyArpManager implements ProxyArpService { |
316 | 318 | ||
317 | @Override | 319 | @Override |
318 | public void forward(Ethernet eth, ConnectPoint inPort) { | 320 | public void forward(Ethernet eth, ConnectPoint inPort) { |
319 | - checkPermission(Permission.PACKET_WRITE); | 321 | + checkPermission(PACKET_WRITE); |
322 | + | ||
320 | checkNotNull(eth, REQUEST_NULL); | 323 | checkNotNull(eth, REQUEST_NULL); |
321 | 324 | ||
322 | Host h = hostService.getHost(hostId(eth.getDestinationMAC(), | 325 | Host h = hostService.getHost(hostId(eth.getDestinationMAC(), |
... | @@ -333,7 +336,7 @@ public class ProxyArpManager implements ProxyArpService { | ... | @@ -333,7 +336,7 @@ public class ProxyArpManager implements ProxyArpService { |
333 | 336 | ||
334 | @Override | 337 | @Override |
335 | public boolean handlePacket(PacketContext context) { | 338 | public boolean handlePacket(PacketContext context) { |
336 | - checkPermission(Permission.PACKET_WRITE); | 339 | + checkPermission(PACKET_WRITE); |
337 | 340 | ||
338 | InboundPacket pkt = context.inPacket(); | 341 | InboundPacket pkt = context.inPacket(); |
339 | Ethernet ethPkt = pkt.parsed(); | 342 | Ethernet ethPkt = pkt.parsed(); | ... | ... |
... | @@ -23,7 +23,6 @@ import org.apache.felix.scr.annotations.Reference; | ... | @@ -23,7 +23,6 @@ import org.apache.felix.scr.annotations.Reference; |
23 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 23 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
24 | import org.apache.felix.scr.annotations.Service; | 24 | import org.apache.felix.scr.annotations.Service; |
25 | import org.onosproject.event.AbstractListenerManager; | 25 | import org.onosproject.event.AbstractListenerManager; |
26 | -import org.onosproject.core.Permission; | ||
27 | import org.onosproject.net.Link; | 26 | import org.onosproject.net.Link; |
28 | import org.onosproject.net.intent.IntentId; | 27 | import org.onosproject.net.intent.IntentId; |
29 | import org.onosproject.net.resource.ResourceAllocation; | 28 | import org.onosproject.net.resource.ResourceAllocation; |
... | @@ -58,6 +57,7 @@ import static com.google.common.base.Preconditions.checkArgument; | ... | @@ -58,6 +57,7 @@ import static com.google.common.base.Preconditions.checkArgument; |
58 | import static com.google.common.base.Preconditions.checkNotNull; | 57 | import static com.google.common.base.Preconditions.checkNotNull; |
59 | import static org.onosproject.security.AppGuard.checkPermission; | 58 | import static org.onosproject.security.AppGuard.checkPermission; |
60 | import static org.slf4j.LoggerFactory.getLogger; | 59 | import static org.slf4j.LoggerFactory.getLogger; |
60 | +import static org.onosproject.security.AppPermission.Type.*; | ||
61 | 61 | ||
62 | 62 | ||
63 | /** | 63 | /** |
... | @@ -150,7 +150,7 @@ public class LinkResourceManager | ... | @@ -150,7 +150,7 @@ public class LinkResourceManager |
150 | 150 | ||
151 | @Override | 151 | @Override |
152 | public LinkResourceAllocations requestResources(LinkResourceRequest req) { | 152 | public LinkResourceAllocations requestResources(LinkResourceRequest req) { |
153 | - checkPermission(Permission.LINK_WRITE); | 153 | + checkPermission(LINK_WRITE); |
154 | 154 | ||
155 | // TODO Concatenate multiple bandwidth requests. | 155 | // TODO Concatenate multiple bandwidth requests. |
156 | // TODO Support multiple lambda resource requests. | 156 | // TODO Support multiple lambda resource requests. |
... | @@ -213,7 +213,7 @@ public class LinkResourceManager | ... | @@ -213,7 +213,7 @@ public class LinkResourceManager |
213 | 213 | ||
214 | @Override | 214 | @Override |
215 | public void releaseResources(LinkResourceAllocations allocations) { | 215 | public void releaseResources(LinkResourceAllocations allocations) { |
216 | - checkPermission(Permission.LINK_WRITE); | 216 | + checkPermission(LINK_WRITE); |
217 | final LinkResourceEvent event = store.releaseResources(allocations); | 217 | final LinkResourceEvent event = store.releaseResources(allocations); |
218 | if (event != null) { | 218 | if (event != null) { |
219 | post(event); | 219 | post(event); |
... | @@ -223,32 +223,32 @@ public class LinkResourceManager | ... | @@ -223,32 +223,32 @@ public class LinkResourceManager |
223 | @Override | 223 | @Override |
224 | public LinkResourceAllocations updateResources(LinkResourceRequest req, | 224 | public LinkResourceAllocations updateResources(LinkResourceRequest req, |
225 | LinkResourceAllocations oldAllocations) { | 225 | LinkResourceAllocations oldAllocations) { |
226 | - checkPermission(Permission.LINK_WRITE); | 226 | + checkPermission(LINK_WRITE); |
227 | releaseResources(oldAllocations); | 227 | releaseResources(oldAllocations); |
228 | return requestResources(req); | 228 | return requestResources(req); |
229 | } | 229 | } |
230 | 230 | ||
231 | @Override | 231 | @Override |
232 | public Iterable<LinkResourceAllocations> getAllocations() { | 232 | public Iterable<LinkResourceAllocations> getAllocations() { |
233 | - checkPermission(Permission.LINK_READ); | 233 | + checkPermission(LINK_READ); |
234 | return store.getAllocations(); | 234 | return store.getAllocations(); |
235 | } | 235 | } |
236 | 236 | ||
237 | @Override | 237 | @Override |
238 | public Iterable<LinkResourceAllocations> getAllocations(Link link) { | 238 | public Iterable<LinkResourceAllocations> getAllocations(Link link) { |
239 | - checkPermission(Permission.LINK_READ); | 239 | + checkPermission(LINK_READ); |
240 | return store.getAllocations(link); | 240 | return store.getAllocations(link); |
241 | } | 241 | } |
242 | 242 | ||
243 | @Override | 243 | @Override |
244 | public LinkResourceAllocations getAllocations(IntentId intentId) { | 244 | public LinkResourceAllocations getAllocations(IntentId intentId) { |
245 | - checkPermission(Permission.LINK_READ); | 245 | + checkPermission(LINK_READ); |
246 | return store.getAllocations(intentId); | 246 | return store.getAllocations(intentId); |
247 | } | 247 | } |
248 | 248 | ||
249 | @Override | 249 | @Override |
250 | public Iterable<ResourceRequest> getAvailableResources(Link link) { | 250 | public Iterable<ResourceRequest> getAvailableResources(Link link) { |
251 | - checkPermission(Permission.LINK_READ); | 251 | + checkPermission(LINK_READ); |
252 | 252 | ||
253 | Set<ResourceAllocation> freeRes = store.getFreeResources(link); | 253 | Set<ResourceAllocation> freeRes = store.getFreeResources(link); |
254 | Set<ResourceRequest> result = new HashSet<>(); | 254 | Set<ResourceRequest> result = new HashSet<>(); |
... | @@ -274,7 +274,7 @@ public class LinkResourceManager | ... | @@ -274,7 +274,7 @@ public class LinkResourceManager |
274 | @Override | 274 | @Override |
275 | public Iterable<ResourceRequest> getAvailableResources(Link link, | 275 | public Iterable<ResourceRequest> getAvailableResources(Link link, |
276 | LinkResourceAllocations allocations) { | 276 | LinkResourceAllocations allocations) { |
277 | - checkPermission(Permission.LINK_READ); | 277 | + checkPermission(LINK_READ); |
278 | 278 | ||
279 | Set<ResourceAllocation> allocatedRes = allocations.getResourceAllocation(link); | 279 | Set<ResourceAllocation> allocatedRes = allocations.getResourceAllocation(link); |
280 | Set<ResourceRequest> result = Sets.newHashSet(getAvailableResources(link)); | 280 | Set<ResourceRequest> result = Sets.newHashSet(getAvailableResources(link)); | ... | ... |
... | @@ -27,7 +27,6 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; | ... | @@ -27,7 +27,6 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; |
27 | import org.apache.felix.scr.annotations.Service; | 27 | import org.apache.felix.scr.annotations.Service; |
28 | import org.onosproject.core.ApplicationId; | 28 | import org.onosproject.core.ApplicationId; |
29 | import org.onosproject.core.GroupId; | 29 | import org.onosproject.core.GroupId; |
30 | -import org.onosproject.core.Permission; | ||
31 | import org.onosproject.net.ConnectPoint; | 30 | import org.onosproject.net.ConnectPoint; |
32 | import org.onosproject.net.Link; | 31 | import org.onosproject.net.Link; |
33 | import org.onosproject.net.Path; | 32 | import org.onosproject.net.Path; |
... | @@ -51,6 +50,7 @@ import java.util.Set; | ... | @@ -51,6 +50,7 @@ import java.util.Set; |
51 | import static com.google.common.base.Preconditions.checkNotNull; | 50 | import static com.google.common.base.Preconditions.checkNotNull; |
52 | import static org.slf4j.LoggerFactory.getLogger; | 51 | import static org.slf4j.LoggerFactory.getLogger; |
53 | import static org.onosproject.security.AppGuard.checkPermission; | 52 | import static org.onosproject.security.AppGuard.checkPermission; |
53 | +import static org.onosproject.security.AppPermission.Type.*; | ||
54 | 54 | ||
55 | 55 | ||
56 | /** | 56 | /** |
... | @@ -86,14 +86,14 @@ public class StatisticManager implements StatisticService { | ... | @@ -86,14 +86,14 @@ public class StatisticManager implements StatisticService { |
86 | 86 | ||
87 | @Override | 87 | @Override |
88 | public Load load(Link link) { | 88 | public Load load(Link link) { |
89 | - checkPermission(Permission.STATISTIC_READ); | 89 | + checkPermission(STATISTIC_READ); |
90 | 90 | ||
91 | return load(link.src()); | 91 | return load(link.src()); |
92 | } | 92 | } |
93 | 93 | ||
94 | @Override | 94 | @Override |
95 | public Load load(Link link, ApplicationId appId, Optional<GroupId> groupId) { | 95 | public Load load(Link link, ApplicationId appId, Optional<GroupId> groupId) { |
96 | - checkPermission(Permission.STATISTIC_READ); | 96 | + checkPermission(STATISTIC_READ); |
97 | 97 | ||
98 | Statistics stats = getStatistics(link.src()); | 98 | Statistics stats = getStatistics(link.src()); |
99 | if (!stats.isValid()) { | 99 | if (!stats.isValid()) { |
... | @@ -114,14 +114,14 @@ public class StatisticManager implements StatisticService { | ... | @@ -114,14 +114,14 @@ public class StatisticManager implements StatisticService { |
114 | 114 | ||
115 | @Override | 115 | @Override |
116 | public Load load(ConnectPoint connectPoint) { | 116 | public Load load(ConnectPoint connectPoint) { |
117 | - checkPermission(Permission.STATISTIC_READ); | 117 | + checkPermission(STATISTIC_READ); |
118 | 118 | ||
119 | return loadInternal(connectPoint); | 119 | return loadInternal(connectPoint); |
120 | } | 120 | } |
121 | 121 | ||
122 | @Override | 122 | @Override |
123 | public Link max(Path path) { | 123 | public Link max(Path path) { |
124 | - checkPermission(Permission.STATISTIC_READ); | 124 | + checkPermission(STATISTIC_READ); |
125 | 125 | ||
126 | if (path.links().isEmpty()) { | 126 | if (path.links().isEmpty()) { |
127 | return null; | 127 | return null; |
... | @@ -140,7 +140,7 @@ public class StatisticManager implements StatisticService { | ... | @@ -140,7 +140,7 @@ public class StatisticManager implements StatisticService { |
140 | 140 | ||
141 | @Override | 141 | @Override |
142 | public Link min(Path path) { | 142 | public Link min(Path path) { |
143 | - checkPermission(Permission.STATISTIC_READ); | 143 | + checkPermission(STATISTIC_READ); |
144 | 144 | ||
145 | if (path.links().isEmpty()) { | 145 | if (path.links().isEmpty()) { |
146 | return null; | 146 | return null; |
... | @@ -159,7 +159,7 @@ public class StatisticManager implements StatisticService { | ... | @@ -159,7 +159,7 @@ public class StatisticManager implements StatisticService { |
159 | 159 | ||
160 | @Override | 160 | @Override |
161 | public FlowRule highestHitter(ConnectPoint connectPoint) { | 161 | public FlowRule highestHitter(ConnectPoint connectPoint) { |
162 | - checkPermission(Permission.STATISTIC_READ); | 162 | + checkPermission(STATISTIC_READ); |
163 | 163 | ||
164 | Set<FlowEntry> hitters = statisticStore.getCurrentStatistic(connectPoint); | 164 | Set<FlowEntry> hitters = statisticStore.getCurrentStatistic(connectPoint); |
165 | if (hitters.isEmpty()) { | 165 | if (hitters.isEmpty()) { | ... | ... |
... | @@ -24,7 +24,6 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -24,7 +24,6 @@ import org.apache.felix.scr.annotations.Deactivate; |
24 | import org.apache.felix.scr.annotations.Reference; | 24 | import org.apache.felix.scr.annotations.Reference; |
25 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 25 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
26 | import org.apache.felix.scr.annotations.Service; | 26 | import org.apache.felix.scr.annotations.Service; |
27 | -import org.onosproject.core.Permission; | ||
28 | import org.onosproject.net.ConnectPoint; | 27 | import org.onosproject.net.ConnectPoint; |
29 | import org.onosproject.net.DefaultEdgeLink; | 28 | import org.onosproject.net.DefaultEdgeLink; |
30 | import org.onosproject.net.DefaultPath; | 29 | import org.onosproject.net.DefaultPath; |
... | @@ -51,6 +50,7 @@ import java.util.Set; | ... | @@ -51,6 +50,7 @@ import java.util.Set; |
51 | import static com.google.common.base.Preconditions.checkNotNull; | 50 | import static com.google.common.base.Preconditions.checkNotNull; |
52 | import static org.slf4j.LoggerFactory.getLogger; | 51 | import static org.slf4j.LoggerFactory.getLogger; |
53 | import static org.onosproject.security.AppGuard.checkPermission; | 52 | import static org.onosproject.security.AppGuard.checkPermission; |
53 | +import static org.onosproject.security.AppPermission.Type.*; | ||
54 | 54 | ||
55 | 55 | ||
56 | /** | 56 | /** |
... | @@ -88,14 +88,14 @@ public class PathManager implements PathService { | ... | @@ -88,14 +88,14 @@ public class PathManager implements PathService { |
88 | 88 | ||
89 | @Override | 89 | @Override |
90 | public Set<Path> getPaths(ElementId src, ElementId dst) { | 90 | public Set<Path> getPaths(ElementId src, ElementId dst) { |
91 | - checkPermission(Permission.TOPOLOGY_READ); | 91 | + checkPermission(TOPOLOGY_READ); |
92 | 92 | ||
93 | return getPaths(src, dst, null); | 93 | return getPaths(src, dst, null); |
94 | } | 94 | } |
95 | 95 | ||
96 | @Override | 96 | @Override |
97 | public Set<Path> getPaths(ElementId src, ElementId dst, LinkWeight weight) { | 97 | public Set<Path> getPaths(ElementId src, ElementId dst, LinkWeight weight) { |
98 | - checkPermission(Permission.TOPOLOGY_READ); | 98 | + checkPermission(TOPOLOGY_READ); |
99 | 99 | ||
100 | checkNotNull(src, ELEMENT_ID_NULL); | 100 | checkNotNull(src, ELEMENT_ID_NULL); |
101 | checkNotNull(dst, ELEMENT_ID_NULL); | 101 | checkNotNull(dst, ELEMENT_ID_NULL); | ... | ... |
... | @@ -22,7 +22,6 @@ import org.apache.felix.scr.annotations.Reference; | ... | @@ -22,7 +22,6 @@ import org.apache.felix.scr.annotations.Reference; |
22 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 22 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
23 | import org.apache.felix.scr.annotations.Service; | 23 | import org.apache.felix.scr.annotations.Service; |
24 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; | 24 | import org.onosproject.net.provider.AbstractListenerProviderRegistry; |
25 | -import org.onosproject.core.Permission; | ||
26 | import org.onosproject.event.Event; | 25 | import org.onosproject.event.Event; |
27 | import org.onosproject.net.ConnectPoint; | 26 | import org.onosproject.net.ConnectPoint; |
28 | import org.onosproject.net.DeviceId; | 27 | import org.onosproject.net.DeviceId; |
... | @@ -51,6 +50,8 @@ import java.util.Set; | ... | @@ -51,6 +50,8 @@ import java.util.Set; |
51 | import static com.google.common.base.Preconditions.checkNotNull; | 50 | import static com.google.common.base.Preconditions.checkNotNull; |
52 | import static org.onosproject.security.AppGuard.checkPermission; | 51 | import static org.onosproject.security.AppGuard.checkPermission; |
53 | import static org.slf4j.LoggerFactory.getLogger; | 52 | import static org.slf4j.LoggerFactory.getLogger; |
53 | +import static org.onosproject.security.AppPermission.Type.*; | ||
54 | + | ||
54 | 55 | ||
55 | /** | 56 | /** |
56 | * Provides basic implementation of the topology SB & NB APIs. | 57 | * Provides basic implementation of the topology SB & NB APIs. |
... | @@ -91,27 +92,27 @@ public class TopologyManager | ... | @@ -91,27 +92,27 @@ public class TopologyManager |
91 | 92 | ||
92 | @Override | 93 | @Override |
93 | public Topology currentTopology() { | 94 | public Topology currentTopology() { |
94 | - checkPermission(Permission.TOPOLOGY_READ); | 95 | + checkPermission(TOPOLOGY_READ); |
95 | return store.currentTopology(); | 96 | return store.currentTopology(); |
96 | } | 97 | } |
97 | 98 | ||
98 | @Override | 99 | @Override |
99 | public boolean isLatest(Topology topology) { | 100 | public boolean isLatest(Topology topology) { |
100 | - checkPermission(Permission.TOPOLOGY_READ); | 101 | + checkPermission(TOPOLOGY_READ); |
101 | checkNotNull(topology, TOPOLOGY_NULL); | 102 | checkNotNull(topology, TOPOLOGY_NULL); |
102 | return store.isLatest(topology); | 103 | return store.isLatest(topology); |
103 | } | 104 | } |
104 | 105 | ||
105 | @Override | 106 | @Override |
106 | public Set<TopologyCluster> getClusters(Topology topology) { | 107 | public Set<TopologyCluster> getClusters(Topology topology) { |
107 | - checkPermission(Permission.TOPOLOGY_READ); | 108 | + checkPermission(TOPOLOGY_READ); |
108 | checkNotNull(topology, TOPOLOGY_NULL); | 109 | checkNotNull(topology, TOPOLOGY_NULL); |
109 | return store.getClusters(topology); | 110 | return store.getClusters(topology); |
110 | } | 111 | } |
111 | 112 | ||
112 | @Override | 113 | @Override |
113 | public TopologyCluster getCluster(Topology topology, ClusterId clusterId) { | 114 | public TopologyCluster getCluster(Topology topology, ClusterId clusterId) { |
114 | - checkPermission(Permission.TOPOLOGY_READ); | 115 | + checkPermission(TOPOLOGY_READ); |
115 | checkNotNull(topology, TOPOLOGY_NULL); | 116 | checkNotNull(topology, TOPOLOGY_NULL); |
116 | checkNotNull(topology, CLUSTER_ID_NULL); | 117 | checkNotNull(topology, CLUSTER_ID_NULL); |
117 | return store.getCluster(topology, clusterId); | 118 | return store.getCluster(topology, clusterId); |
... | @@ -119,7 +120,7 @@ public class TopologyManager | ... | @@ -119,7 +120,7 @@ public class TopologyManager |
119 | 120 | ||
120 | @Override | 121 | @Override |
121 | public Set<DeviceId> getClusterDevices(Topology topology, TopologyCluster cluster) { | 122 | public Set<DeviceId> getClusterDevices(Topology topology, TopologyCluster cluster) { |
122 | - checkPermission(Permission.TOPOLOGY_READ); | 123 | + checkPermission(TOPOLOGY_READ); |
123 | checkNotNull(topology, TOPOLOGY_NULL); | 124 | checkNotNull(topology, TOPOLOGY_NULL); |
124 | checkNotNull(topology, CLUSTER_NULL); | 125 | checkNotNull(topology, CLUSTER_NULL); |
125 | return store.getClusterDevices(topology, cluster); | 126 | return store.getClusterDevices(topology, cluster); |
... | @@ -127,7 +128,7 @@ public class TopologyManager | ... | @@ -127,7 +128,7 @@ public class TopologyManager |
127 | 128 | ||
128 | @Override | 129 | @Override |
129 | public Set<Link> getClusterLinks(Topology topology, TopologyCluster cluster) { | 130 | public Set<Link> getClusterLinks(Topology topology, TopologyCluster cluster) { |
130 | - checkPermission(Permission.TOPOLOGY_READ); | 131 | + checkPermission(TOPOLOGY_READ); |
131 | checkNotNull(topology, TOPOLOGY_NULL); | 132 | checkNotNull(topology, TOPOLOGY_NULL); |
132 | checkNotNull(topology, CLUSTER_NULL); | 133 | checkNotNull(topology, CLUSTER_NULL); |
133 | return store.getClusterLinks(topology, cluster); | 134 | return store.getClusterLinks(topology, cluster); |
... | @@ -135,14 +136,14 @@ public class TopologyManager | ... | @@ -135,14 +136,14 @@ public class TopologyManager |
135 | 136 | ||
136 | @Override | 137 | @Override |
137 | public TopologyGraph getGraph(Topology topology) { | 138 | public TopologyGraph getGraph(Topology topology) { |
138 | - checkPermission(Permission.TOPOLOGY_READ); | 139 | + checkPermission(TOPOLOGY_READ); |
139 | checkNotNull(topology, TOPOLOGY_NULL); | 140 | checkNotNull(topology, TOPOLOGY_NULL); |
140 | return store.getGraph(topology); | 141 | return store.getGraph(topology); |
141 | } | 142 | } |
142 | 143 | ||
143 | @Override | 144 | @Override |
144 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst) { | 145 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst) { |
145 | - checkPermission(Permission.TOPOLOGY_READ); | 146 | + checkPermission(TOPOLOGY_READ); |
146 | checkNotNull(topology, TOPOLOGY_NULL); | 147 | checkNotNull(topology, TOPOLOGY_NULL); |
147 | checkNotNull(src, DEVICE_ID_NULL); | 148 | checkNotNull(src, DEVICE_ID_NULL); |
148 | checkNotNull(dst, DEVICE_ID_NULL); | 149 | checkNotNull(dst, DEVICE_ID_NULL); |
... | @@ -151,7 +152,7 @@ public class TopologyManager | ... | @@ -151,7 +152,7 @@ public class TopologyManager |
151 | 152 | ||
152 | @Override | 153 | @Override |
153 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeight weight) { | 154 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeight weight) { |
154 | - checkPermission(Permission.TOPOLOGY_READ); | 155 | + checkPermission(TOPOLOGY_READ); |
155 | 156 | ||
156 | checkNotNull(topology, TOPOLOGY_NULL); | 157 | checkNotNull(topology, TOPOLOGY_NULL); |
157 | checkNotNull(src, DEVICE_ID_NULL); | 158 | checkNotNull(src, DEVICE_ID_NULL); |
... | @@ -162,7 +163,7 @@ public class TopologyManager | ... | @@ -162,7 +163,7 @@ public class TopologyManager |
162 | 163 | ||
163 | @Override | 164 | @Override |
164 | public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) { | 165 | public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) { |
165 | - checkPermission(Permission.TOPOLOGY_READ); | 166 | + checkPermission(TOPOLOGY_READ); |
166 | checkNotNull(topology, TOPOLOGY_NULL); | 167 | checkNotNull(topology, TOPOLOGY_NULL); |
167 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); | 168 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); |
168 | return store.isInfrastructure(topology, connectPoint); | 169 | return store.isInfrastructure(topology, connectPoint); |
... | @@ -170,7 +171,7 @@ public class TopologyManager | ... | @@ -170,7 +171,7 @@ public class TopologyManager |
170 | 171 | ||
171 | @Override | 172 | @Override |
172 | public boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint) { | 173 | public boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint) { |
173 | - checkPermission(Permission.TOPOLOGY_READ); | 174 | + checkPermission(TOPOLOGY_READ); |
174 | checkNotNull(topology, TOPOLOGY_NULL); | 175 | checkNotNull(topology, TOPOLOGY_NULL); |
175 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); | 176 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); |
176 | return store.isBroadcastPoint(topology, connectPoint); | 177 | return store.isBroadcastPoint(topology, connectPoint); | ... | ... |
core/security/impl/pom.xml
deleted
100644 → 0
1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
2 | -<!-- | ||
3 | - ~ Copyright 2015 Open Networking Laboratory | ||
4 | - ~ | ||
5 | - ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
6 | - ~ you may not use this file except in compliance with the License. | ||
7 | - ~ You may obtain a copy of the License at | ||
8 | - ~ | ||
9 | - ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
10 | - ~ | ||
11 | - ~ Unless required by applicable law or agreed to in writing, software | ||
12 | - ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
13 | - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
14 | - ~ See the License for the specific language governing permissions and | ||
15 | - ~ limitations under the License. | ||
16 | - --> | ||
17 | - | ||
18 | -<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
19 | - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
20 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
21 | - <parent> | ||
22 | - <artifactId>onos-security</artifactId> | ||
23 | - <groupId>org.onosproject</groupId> | ||
24 | - <version>1.3.0-SNAPSHOT</version> | ||
25 | - <relativePath>../pom.xml</relativePath> | ||
26 | - </parent> | ||
27 | - <modelVersion>4.0.0</modelVersion> | ||
28 | - <packaging>bundle</packaging> | ||
29 | - | ||
30 | - <artifactId>onos-security-impl</artifactId> | ||
31 | - | ||
32 | - <description>Security-mode ONOS components</description> | ||
33 | - | ||
34 | - <dependencies> | ||
35 | - <dependency> | ||
36 | - <groupId>org.osgi</groupId> | ||
37 | - <artifactId>org.osgi.core</artifactId> | ||
38 | - </dependency> | ||
39 | - <dependency> | ||
40 | - <groupId>org.onosproject</groupId> | ||
41 | - <artifactId>onos-api</artifactId> | ||
42 | - </dependency> | ||
43 | - <dependency> | ||
44 | - <groupId>org.apache.karaf.features</groupId> | ||
45 | - <artifactId>org.apache.karaf.features.core</artifactId> | ||
46 | - </dependency> | ||
47 | - </dependencies> | ||
48 | - | ||
49 | -</project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
deleted
100644 → 0
1 | -package org.onosproject.security.impl; | ||
2 | - | ||
3 | - | ||
4 | -import com.google.common.collect.ImmutableSet; | ||
5 | -import com.google.common.collect.Sets; | ||
6 | -import org.onosproject.core.Permission; | ||
7 | -import org.onosproject.security.AppPermission; | ||
8 | -import org.osgi.service.permissionadmin.PermissionInfo; | ||
9 | - | ||
10 | -import org.onosproject.app.ApplicationAdminService; | ||
11 | -import org.onosproject.app.ApplicationService; | ||
12 | -import org.onosproject.cfg.ComponentConfigService; | ||
13 | -import org.onosproject.cluster.ClusterAdminService; | ||
14 | -import org.onosproject.cluster.ClusterService; | ||
15 | -import org.onosproject.core.CoreService; | ||
16 | -import org.onosproject.cluster.LeadershipService; | ||
17 | -import org.onosproject.mastership.MastershipAdminService; | ||
18 | -import org.onosproject.mastership.MastershipService; | ||
19 | -import org.onosproject.net.device.DeviceAdminService; | ||
20 | -import org.onosproject.net.device.DeviceService; | ||
21 | -import org.onosproject.net.device.DeviceClockService; | ||
22 | -import org.onosproject.net.driver.DriverAdminService; | ||
23 | -import org.onosproject.net.driver.DriverService; | ||
24 | -import org.onosproject.net.flow.FlowRuleService; | ||
25 | -import org.onosproject.net.flowobjective.FlowObjectiveService; | ||
26 | -import org.onosproject.net.group.GroupService; | ||
27 | -import org.onosproject.net.host.HostAdminService; | ||
28 | -import org.onosproject.net.host.HostService; | ||
29 | -import org.onosproject.net.intent.IntentService; | ||
30 | -import org.onosproject.net.intent.IntentExtensionService; | ||
31 | -import org.onosproject.net.intent.IntentClockService; | ||
32 | -import org.onosproject.net.intent.PartitionService; | ||
33 | -import org.onosproject.net.link.LinkAdminService; | ||
34 | -import org.onosproject.net.link.LinkService; | ||
35 | -import org.onosproject.net.packet.PacketService; | ||
36 | -import org.onosproject.net.proxyarp.ProxyArpService; | ||
37 | -import org.onosproject.net.resource.link.LinkResourceService; | ||
38 | -import org.onosproject.net.statistic.StatisticService; | ||
39 | -import org.onosproject.net.topology.PathService; | ||
40 | -import org.onosproject.net.topology.TopologyService; | ||
41 | -import org.onosproject.store.service.StorageAdminService; | ||
42 | -import org.onosproject.store.service.StorageService; | ||
43 | -import org.osgi.framework.ServicePermission; | ||
44 | -import org.osgi.framework.PackagePermission; | ||
45 | -import org.osgi.framework.AdaptPermission; | ||
46 | - | ||
47 | - | ||
48 | -import java.util.Collections; | ||
49 | -import java.util.Map; | ||
50 | -import java.util.Set; | ||
51 | -import java.util.concurrent.ConcurrentHashMap; | ||
52 | -import java.util.stream.Collectors; | ||
53 | - | ||
54 | -public final class PolicyBuilder { | ||
55 | - | ||
56 | - private PolicyBuilder(){ | ||
57 | - } | ||
58 | - | ||
59 | - public static PermissionInfo[] getApplicationPermissions(Map<Permission, Set<String>> serviceDirectory, | ||
60 | - Set<Permission> permissions) { | ||
61 | - Set<PermissionInfo> permSet = Sets.newHashSet(); | ||
62 | - Collections.addAll(permSet, getDefaultPerms()); | ||
63 | - for (Permission perm : permissions) { | ||
64 | - permSet.add(new PermissionInfo(AppPermission.class.getName(), perm.name(), "")); | ||
65 | - permSet.addAll(serviceDirectory.get(perm).stream().map(service -> new PermissionInfo( | ||
66 | - ServicePermission.class.getName(), service, ServicePermission.GET)).collect(Collectors.toList())); | ||
67 | - } | ||
68 | - PermissionInfo[] permissionInfos = new PermissionInfo[permSet.size()]; | ||
69 | - return permSet.toArray(permissionInfos); | ||
70 | - } | ||
71 | - | ||
72 | - public static PermissionInfo[] getAdminApplicationPermissions(Map<Permission, Set<String>> serviceDirectory) { | ||
73 | - Set<PermissionInfo> permSet = Sets.newHashSet(); | ||
74 | - Collections.addAll(permSet, getDefaultPerms()); | ||
75 | - Collections.addAll(permSet, getAdminDefaultPerms()); | ||
76 | - permSet.addAll(serviceDirectory.keySet().stream().map(perm -> | ||
77 | - new PermissionInfo(AppPermission.class.getName(), perm.name(), "")).collect(Collectors.toList())); | ||
78 | - PermissionInfo[] permissionInfos = new PermissionInfo[permSet.size()]; | ||
79 | - return permSet.toArray(permissionInfos); | ||
80 | - } | ||
81 | - | ||
82 | - public static PermissionInfo[] getDefaultPerms() { | ||
83 | - return new PermissionInfo[]{ | ||
84 | - new PermissionInfo(PackagePermission.class.getName(), "*", PackagePermission.EXPORTONLY), | ||
85 | - new PermissionInfo(PackagePermission.class.getName(), "*", PackagePermission.IMPORT), | ||
86 | - new PermissionInfo(AdaptPermission.class.getName(), "*", AdaptPermission.ADAPT), | ||
87 | - }; | ||
88 | - } | ||
89 | - public static PermissionInfo[] getAdminDefaultPerms() { | ||
90 | - return new PermissionInfo[]{ | ||
91 | - new PermissionInfo(ServicePermission.class.getName(), | ||
92 | - ApplicationAdminService.class.getName(), ServicePermission.GET), | ||
93 | - new PermissionInfo(ServicePermission.class.getName(), | ||
94 | - ClusterAdminService.class.getName(), ServicePermission.GET), | ||
95 | - new PermissionInfo(ServicePermission.class.getName(), | ||
96 | - MastershipAdminService.class.getName(), ServicePermission.GET), | ||
97 | - new PermissionInfo(ServicePermission.class.getName(), | ||
98 | - DeviceAdminService.class.getName(), ServicePermission.GET), | ||
99 | - new PermissionInfo(ServicePermission.class.getName(), | ||
100 | - HostAdminService.class.getName(), ServicePermission.GET), | ||
101 | - new PermissionInfo(ServicePermission.class.getName(), | ||
102 | - LinkAdminService.class.getName(), ServicePermission.GET), | ||
103 | - new PermissionInfo(ServicePermission.class.getName(), | ||
104 | - DriverAdminService.class.getName(), ServicePermission.GET), | ||
105 | - new PermissionInfo(ServicePermission.class.getName(), | ||
106 | - StorageAdminService.class.getName(), ServicePermission.GET), | ||
107 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
108 | -// LabelResourceAdminService.class.getName(), ServicePermission.GET), | ||
109 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
110 | -// TunnelAdminService.class.getName(), ServicePermission.GET), | ||
111 | - new PermissionInfo(ServicePermission.class.getName(), | ||
112 | - ApplicationService.class.getName(), ServicePermission.GET), | ||
113 | - new PermissionInfo(ServicePermission.class.getName(), | ||
114 | - ComponentConfigService.class.getName(), ServicePermission.GET), | ||
115 | - new PermissionInfo(ServicePermission.class.getName(), | ||
116 | - CoreService.class.getName(), ServicePermission.GET), | ||
117 | - new PermissionInfo(ServicePermission.class.getName(), | ||
118 | - ClusterService.class.getName(), ServicePermission.GET), | ||
119 | - new PermissionInfo(ServicePermission.class.getName(), | ||
120 | - LeadershipService.class.getName(), ServicePermission.GET), | ||
121 | - new PermissionInfo(ServicePermission.class.getName(), | ||
122 | - MastershipService.class.getName(), ServicePermission.GET), | ||
123 | - new PermissionInfo(ServicePermission.class.getName(), | ||
124 | - DeviceService.class.getName(), ServicePermission.GET), | ||
125 | - new PermissionInfo(ServicePermission.class.getName(), | ||
126 | - DeviceClockService.class.getName(), ServicePermission.GET), | ||
127 | - new PermissionInfo(ServicePermission.class.getName(), | ||
128 | - DriverService.class.getName(), ServicePermission.GET), | ||
129 | - new PermissionInfo(ServicePermission.class.getName(), | ||
130 | - FlowRuleService.class.getName(), ServicePermission.GET), | ||
131 | - new PermissionInfo(ServicePermission.class.getName(), | ||
132 | - FlowObjectiveService.class.getName(), ServicePermission.GET), | ||
133 | - new PermissionInfo(ServicePermission.class.getName(), | ||
134 | - GroupService.class.getName(), ServicePermission.GET), | ||
135 | - new PermissionInfo(ServicePermission.class.getName(), | ||
136 | - HostService.class.getName(), ServicePermission.GET), | ||
137 | - new PermissionInfo(ServicePermission.class.getName(), | ||
138 | - IntentService.class.getName(), ServicePermission.GET), | ||
139 | - new PermissionInfo(ServicePermission.class.getName(), | ||
140 | - IntentClockService.class.getName(), ServicePermission.GET), | ||
141 | - new PermissionInfo(ServicePermission.class.getName(), | ||
142 | - IntentExtensionService.class.getName(), ServicePermission.GET), | ||
143 | - new PermissionInfo(ServicePermission.class.getName(), | ||
144 | - PartitionService.class.getName(), ServicePermission.GET), | ||
145 | - new PermissionInfo(ServicePermission.class.getName(), | ||
146 | - LinkService.class.getName(), ServicePermission.GET), | ||
147 | - new PermissionInfo(ServicePermission.class.getName(), | ||
148 | - LinkResourceService.class.getName(), ServicePermission.GET), | ||
149 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
150 | -// LabelResourceService.class.getName(), ServicePermission.GET), | ||
151 | - new PermissionInfo(ServicePermission.class.getName(), | ||
152 | - PacketService.class.getName(), ServicePermission.GET), | ||
153 | - new PermissionInfo(ServicePermission.class.getName(), | ||
154 | - ProxyArpService.class.getName(), ServicePermission.GET), | ||
155 | - new PermissionInfo(ServicePermission.class.getName(), | ||
156 | - StatisticService.class.getName(), ServicePermission.GET), | ||
157 | - new PermissionInfo(ServicePermission.class.getName(), | ||
158 | - PathService.class.getName(), ServicePermission.GET), | ||
159 | - new PermissionInfo(ServicePermission.class.getName(), | ||
160 | - TopologyService.class.getName(), ServicePermission.GET), | ||
161 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
162 | -// TunnelService.class.getName(), ServicePermission.GET), | ||
163 | - new PermissionInfo(ServicePermission.class.getName(), | ||
164 | - StorageService.class.getName(), ServicePermission.GET), | ||
165 | - }; | ||
166 | - } | ||
167 | - | ||
168 | - | ||
169 | - public static Map<Permission, Set<String>> getServiceDirectory() { | ||
170 | - | ||
171 | - Map<Permission, Set<String>> serviceDirectory = new ConcurrentHashMap<>(); | ||
172 | - | ||
173 | - serviceDirectory.put(Permission.APP_READ, ImmutableSet.of( | ||
174 | - ApplicationService.class.getName(), CoreService.class.getName())); | ||
175 | - serviceDirectory.put(Permission.APP_EVENT, ImmutableSet.of( | ||
176 | - ApplicationService.class.getName(), CoreService.class.getName())); | ||
177 | - serviceDirectory.put(Permission.CONFIG_READ, ImmutableSet.of( | ||
178 | - ComponentConfigService.class.getName())); | ||
179 | - serviceDirectory.put(Permission.CONFIG_WRITE, ImmutableSet.of( | ||
180 | - ComponentConfigService.class.getName())); | ||
181 | - serviceDirectory.put(Permission.CLUSTER_READ, ImmutableSet.of( | ||
182 | - ClusterService.class.getName(), LeadershipService.class.getName(), | ||
183 | - MastershipService.class.getName())); | ||
184 | - serviceDirectory.put(Permission.CLUSTER_WRITE, ImmutableSet.of( | ||
185 | - LeadershipService.class.getName(), MastershipService.class.getName())); | ||
186 | - serviceDirectory.put(Permission.CLUSTER_EVENT, ImmutableSet.of( | ||
187 | - ClusterService.class.getName(), LeadershipService.class.getName(), | ||
188 | - MastershipService.class.getName())); | ||
189 | - serviceDirectory.put(Permission.DEVICE_READ, ImmutableSet.of( | ||
190 | - DeviceService.class.getName(), DeviceClockService.class.getName())); | ||
191 | - serviceDirectory.put(Permission.DEVICE_EVENT, ImmutableSet.of( | ||
192 | - DeviceService.class.getName())); | ||
193 | - serviceDirectory.put(Permission.DRIVER_READ, ImmutableSet.of( | ||
194 | - DriverService.class.getName())); | ||
195 | - serviceDirectory.put(Permission.DRIVER_WRITE, ImmutableSet.of( | ||
196 | - DriverService.class.getName())); | ||
197 | - serviceDirectory.put(Permission.FLOWRULE_READ, ImmutableSet.of( | ||
198 | - FlowRuleService.class.getName())); | ||
199 | - serviceDirectory.put(Permission.FLOWRULE_WRITE, ImmutableSet.of( | ||
200 | - FlowRuleService.class.getName(), FlowObjectiveService.class.getName())); | ||
201 | - serviceDirectory.put(Permission.FLOWRULE_EVENT, ImmutableSet.of( | ||
202 | - FlowRuleService.class.getName())); | ||
203 | - serviceDirectory.put(Permission.GROUP_READ, ImmutableSet.of( | ||
204 | - GroupService.class.getName())); | ||
205 | - serviceDirectory.put(Permission.GROUP_WRITE, ImmutableSet.of( | ||
206 | - GroupService.class.getName())); | ||
207 | - serviceDirectory.put(Permission.GROUP_EVENT, ImmutableSet.of( | ||
208 | - GroupService.class.getName())); | ||
209 | - serviceDirectory.put(Permission.HOST_WRITE, ImmutableSet.of( | ||
210 | - HostService.class.getName())); | ||
211 | - serviceDirectory.put(Permission.HOST_EVENT, ImmutableSet.of( | ||
212 | - HostService.class.getName())); | ||
213 | - serviceDirectory.put(Permission.INTENT_READ, ImmutableSet.of( | ||
214 | - IntentService.class.getName(), PartitionService.class.getName(), | ||
215 | - IntentClockService.class.getName())); | ||
216 | - serviceDirectory.put(Permission.INTENT_WRITE, ImmutableSet.of( | ||
217 | - IntentService.class.getName())); | ||
218 | - serviceDirectory.put(Permission.INTENT_EVENT, ImmutableSet.of( | ||
219 | - IntentService.class.getName())); | ||
220 | -// serviceDirectory.put(Permission.LINK_READ, ImmutableSet.of( | ||
221 | -// LinkService.class.getName(), LinkResourceService.class.getName(), | ||
222 | -// LabelResourceService.class.getName())); | ||
223 | -// serviceDirectory.put(Permission.LINK_WRITE, ImmutableSet.of( | ||
224 | -// LinkResourceService.class.getName(), LabelResourceService.class.getName())); | ||
225 | -// serviceDirectory.put(Permission.LINK_EVENT, ImmutableSet.of( | ||
226 | -// LinkService.class.getName(), LinkResourceService.class.getName(), | ||
227 | -// LabelResourceService.class.getName())); | ||
228 | - serviceDirectory.put(Permission.PACKET_READ, ImmutableSet.of( | ||
229 | - PacketService.class.getName(), ProxyArpService.class.getName())); | ||
230 | - serviceDirectory.put(Permission.PACKET_WRITE, ImmutableSet.of( | ||
231 | - PacketService.class.getName(), ProxyArpService.class.getName())); | ||
232 | - serviceDirectory.put(Permission.PACKET_EVENT, ImmutableSet.of( | ||
233 | - PacketService.class.getName())); | ||
234 | - serviceDirectory.put(Permission.STATISTIC_READ, ImmutableSet.of( | ||
235 | - StatisticService.class.getName())); | ||
236 | - serviceDirectory.put(Permission.TOPOLOGY_READ, ImmutableSet.of( | ||
237 | - TopologyService.class.getName(), PathService.class.getName())); | ||
238 | - serviceDirectory.put(Permission.TOPOLOGY_EVENT, ImmutableSet.of( | ||
239 | - TopologyService.class.getName())); | ||
240 | -// serviceDirectory.put(Permission.TUNNEL_READ, ImmutableSet.of( | ||
241 | -// TunnelService.class.getName())); | ||
242 | -// serviceDirectory.put(Permission.TUNNEL_WRITE, ImmutableSet.of( | ||
243 | -// TunnelService.class.getName())); | ||
244 | -// serviceDirectory.put(Permission.TUNNEL_EVENT, ImmutableSet.of( | ||
245 | -// TunnelService.class.getName())); | ||
246 | - serviceDirectory.put(Permission.STORAGE_WRITE, ImmutableSet.of( | ||
247 | - StorageService.class.getName())); | ||
248 | - | ||
249 | - return serviceDirectory; | ||
250 | - } | ||
251 | -} | ||
252 | - | ||
253 | - | ||
254 | -// public static PermissionInfo[] getNonAdminPerms() { | ||
255 | -// return new PermissionInfo[]{ | ||
256 | -// new PermissionInfo(PackagePermission.class.getName(), "*", PackagePermission.EXPORTONLY), | ||
257 | -// new PermissionInfo(PackagePermission.class.getName(), "*", PackagePermission.IMPORT), | ||
258 | -// new PermissionInfo(AdaptPermission.class.getName(), "*", AdaptPermission.ADAPT), | ||
259 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
260 | -// ApplicationService.class.getName(), ServicePermission.GET), | ||
261 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
262 | -// ComponentConfigService.class.getName(), ServicePermission.GET), | ||
263 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
264 | -// CoreService.class.getName(), ServicePermission.GET), | ||
265 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
266 | -// ClusterService.class.getName(), ServicePermission.GET), | ||
267 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
268 | -// LeadershipService.class.getName(), ServicePermission.GET), | ||
269 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
270 | -// MastershipService.class.getName(), ServicePermission.GET), | ||
271 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
272 | -// DeviceService.class.getName(), ServicePermission.GET), | ||
273 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
274 | -// DeviceClockService.class.getName(), ServicePermission.GET), | ||
275 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
276 | -// DriverService.class.getName(), ServicePermission.GET), | ||
277 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
278 | -// FlowRuleService.class.getName(), ServicePermission.GET), | ||
279 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
280 | -// FlowObjectiveService.class.getName(), ServicePermission.GET), | ||
281 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
282 | -// GroupService.class.getName(), ServicePermission.GET), | ||
283 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
284 | -// HostService.class.getName(), ServicePermission.GET), | ||
285 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
286 | -// HostClockService.class.getName(), ServicePermission.GET), | ||
287 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
288 | -// IntentService.class.getName(), ServicePermission.GET), | ||
289 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
290 | -// IntentClockService.class.getName(), ServicePermission.GET), | ||
291 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
292 | -// IntentExtensionService.class.getName(), ServicePermission.GET), | ||
293 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
294 | -// PartitionService.class.getName(), ServicePermission.GET), | ||
295 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
296 | -// LinkService.class.getName(), ServicePermission.GET), | ||
297 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
298 | -// LinkResourceService.class.getName(), ServicePermission.GET), | ||
299 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
300 | -// LabelResourceService.class.getName(), ServicePermission.GET), | ||
301 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
302 | -// PacketService.class.getName(), ServicePermission.GET), | ||
303 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
304 | -// ProxyArpService.class.getName(), ServicePermission.GET), | ||
305 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
306 | -// StatisticService.class.getName(), ServicePermission.GET), | ||
307 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
308 | -// PathService.class.getName(), ServicePermission.GET), | ||
309 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
310 | -// TopologyService.class.getName(), ServicePermission.GET), | ||
311 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
312 | -// TunnelService.class.getName(), ServicePermission.GET), | ||
313 | -// new PermissionInfo(ServicePermission.class.getName(), | ||
314 | -// StorageService.class.getName(), ServicePermission.GET), | ||
315 | -// }; | ||
316 | -// } |
core/security/impl/src/main/java/org/onosproject/security/impl/SecurityModeManager.java
deleted
100644 → 0
1 | -package org.onosproject.security.impl; | ||
2 | - | ||
3 | -import org.apache.felix.scr.annotations.Component; | ||
4 | -import org.apache.felix.scr.annotations.Reference; | ||
5 | -import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
6 | -import org.apache.felix.scr.annotations.Activate; | ||
7 | -import org.apache.felix.scr.annotations.Deactivate; | ||
8 | -import org.apache.karaf.features.BundleInfo; | ||
9 | -import org.apache.karaf.features.Feature; | ||
10 | -import org.apache.karaf.features.FeaturesService; | ||
11 | - | ||
12 | -import org.onosproject.app.ApplicationAdminService; | ||
13 | -import org.onosproject.app.ApplicationEvent; | ||
14 | -import org.onosproject.app.ApplicationListener; | ||
15 | -import org.onosproject.app.ApplicationState; | ||
16 | -import org.onosproject.core.Application; | ||
17 | -import org.onosproject.core.ApplicationId; | ||
18 | -import org.onosproject.core.Permission; | ||
19 | -import org.onosproject.security.AppPermission; | ||
20 | -import org.osgi.framework.Bundle; | ||
21 | -import org.osgi.framework.BundleContext; | ||
22 | -import org.osgi.framework.BundleEvent; | ||
23 | -import org.osgi.framework.BundleListener; | ||
24 | -import org.osgi.framework.FrameworkUtil; | ||
25 | -import org.osgi.framework.PackagePermission; | ||
26 | -import org.osgi.framework.ServicePermission; | ||
27 | -import org.osgi.service.log.LogEntry; | ||
28 | -import org.osgi.service.log.LogListener; | ||
29 | -import org.osgi.service.log.LogReaderService; | ||
30 | -import org.osgi.service.permissionadmin.PermissionInfo; | ||
31 | - | ||
32 | -import java.security.AccessControlException; | ||
33 | -import java.security.AllPermission; | ||
34 | -import java.util.ArrayList; | ||
35 | -import java.util.List; | ||
36 | -import java.util.Map; | ||
37 | -import java.util.Set; | ||
38 | -import java.util.concurrent.ConcurrentHashMap; | ||
39 | -import java.util.stream.Collectors; | ||
40 | - | ||
41 | -import org.osgi.service.permissionadmin.PermissionAdmin; | ||
42 | -import org.slf4j.Logger; | ||
43 | - | ||
44 | -import static org.slf4j.LoggerFactory.getLogger; | ||
45 | - | ||
46 | -/** | ||
47 | - * Security-Mode ONOS management implementation. | ||
48 | - */ | ||
49 | - | ||
50 | -//TODO : implement a dedicated distributed store for SM-ONOS | ||
51 | - | ||
52 | -@Component(immediate = true) | ||
53 | -public class SecurityModeManager { | ||
54 | - | ||
55 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
56 | - protected ApplicationAdminService appAdminService; | ||
57 | - | ||
58 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
59 | - protected FeaturesService featuresService; | ||
60 | - | ||
61 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
62 | - protected LogReaderService logReaderService; | ||
63 | - | ||
64 | - private final Logger log = getLogger(getClass()); | ||
65 | - | ||
66 | - private SecurityBundleListener securityBundleListener = new SecurityBundleListener(); | ||
67 | - | ||
68 | - private SecurityApplicationListener securityApplicationListener = new SecurityApplicationListener(); | ||
69 | - | ||
70 | - private SecurityLogListener securityLogListener = new SecurityLogListener(); | ||
71 | - | ||
72 | - private Bundle bundle = null; | ||
73 | - | ||
74 | - private BundleContext bundleContext = null; | ||
75 | - | ||
76 | - private PermissionAdmin permissionAdmin = null; | ||
77 | - | ||
78 | - private Map<String, ApplicationId> appTracker = null; | ||
79 | - | ||
80 | - private Map<Permission, Set<String>> serviceDirectory = null; | ||
81 | - | ||
82 | - | ||
83 | - @Activate | ||
84 | - public void activate() { | ||
85 | - if (System.getSecurityManager() == null) { | ||
86 | - log.warn("J2EE security manager is disabled."); | ||
87 | - deactivate(); | ||
88 | - return; | ||
89 | - } | ||
90 | - bundle = FrameworkUtil.getBundle(this.getClass()); | ||
91 | - bundleContext = bundle.getBundleContext(); | ||
92 | - | ||
93 | - bundleContext.addBundleListener(securityBundleListener); | ||
94 | - appAdminService.addListener(securityApplicationListener); | ||
95 | - logReaderService.addLogListener(securityLogListener); | ||
96 | - appTracker = new ConcurrentHashMap<>(); | ||
97 | - | ||
98 | - permissionAdmin = getPermissionAdmin(bundleContext); | ||
99 | - if (permissionAdmin == null) { | ||
100 | - log.warn("Permission Admin not found."); | ||
101 | - this.deactivate(); | ||
102 | - return; | ||
103 | - } | ||
104 | - | ||
105 | - serviceDirectory = PolicyBuilder.getServiceDirectory(); | ||
106 | - | ||
107 | - PermissionInfo[] allPerm = { | ||
108 | - new PermissionInfo(AllPermission.class.getName(), "", ""), }; | ||
109 | - | ||
110 | - permissionAdmin.setPermissions(bundle.getLocation(), allPerm); | ||
111 | - log.warn("Security-Mode Started"); | ||
112 | - } | ||
113 | - | ||
114 | - | ||
115 | - @Deactivate | ||
116 | - public void deactivate() { | ||
117 | - bundleContext.removeBundleListener(securityBundleListener); | ||
118 | - appAdminService.removeListener(securityApplicationListener); | ||
119 | - logReaderService.removeLogListener(securityLogListener); | ||
120 | - log.info("Stopped"); | ||
121 | - | ||
122 | - } | ||
123 | - | ||
124 | - private class SecurityApplicationListener implements ApplicationListener { | ||
125 | - | ||
126 | - @Override | ||
127 | - public void event(ApplicationEvent event) { | ||
128 | - //App needs to be restarted | ||
129 | - if (event.type() == ApplicationEvent.Type.APP_PERMISSIONS_CHANGED) { | ||
130 | - if (appAdminService.getState(event.subject().id()) == ApplicationState.ACTIVE) { | ||
131 | - appAdminService.deactivate(event.subject().id()); | ||
132 | - print("Permissions updated (%s). Deactivating...", | ||
133 | - event.subject().id().name()); | ||
134 | - } | ||
135 | - } | ||
136 | - } | ||
137 | - } | ||
138 | - | ||
139 | - private class SecurityBundleListener implements BundleListener { | ||
140 | - | ||
141 | - @Override | ||
142 | - public void bundleChanged(BundleEvent event) { | ||
143 | - switch (event.getType()) { | ||
144 | - case BundleEvent.INSTALLED: | ||
145 | - setPermissions(event); | ||
146 | - break; | ||
147 | - case BundleEvent.UNINSTALLED: | ||
148 | - clearPermissions(event); | ||
149 | - break; | ||
150 | - default: | ||
151 | - break; | ||
152 | - } | ||
153 | - } | ||
154 | - } | ||
155 | - | ||
156 | - private void clearPermissions(BundleEvent bundleEvent) { | ||
157 | - if (appTracker.containsKey(bundleEvent.getBundle().getLocation())) { | ||
158 | - permissionAdmin.setPermissions(bundleEvent.getBundle().getLocation(), new PermissionInfo[]{}); | ||
159 | - appTracker.remove(bundleEvent.getBundle().getLocation()); | ||
160 | - } | ||
161 | - } | ||
162 | - | ||
163 | - // find the location of the installed bundle and enforce policy | ||
164 | - private void setPermissions(BundleEvent bundleEvent) { | ||
165 | - for (Application app : appAdminService.getApplications()) { | ||
166 | - if (getBundleLocations(app).contains(bundleEvent.getBundle().getLocation())) { | ||
167 | - String location = bundleEvent.getBundle().getLocation(); | ||
168 | - | ||
169 | - Set<org.onosproject.core.Permission> permissions = | ||
170 | - appAdminService.getPermissions(app.id()); | ||
171 | - | ||
172 | - //Permissions granted by user overrides the permissions specified in App.Xml file | ||
173 | - if (permissions == null) { | ||
174 | - permissions = app.permissions(); | ||
175 | - } | ||
176 | - | ||
177 | - if (permissions.isEmpty()) { | ||
178 | - print("Application %s has not been granted any permission.", app.id().name()); | ||
179 | - } | ||
180 | - | ||
181 | - PermissionInfo[] perms = null; | ||
182 | - | ||
183 | - switch (app.role()) { | ||
184 | - case ADMIN: | ||
185 | - perms = PolicyBuilder.getAdminApplicationPermissions(serviceDirectory); | ||
186 | - break; | ||
187 | - case REGULAR: | ||
188 | - perms = PolicyBuilder.getApplicationPermissions(serviceDirectory, permissions); | ||
189 | - break; | ||
190 | - case UNSPECIFIED: | ||
191 | - default: | ||
192 | - //no role has been assigned. | ||
193 | - perms = PolicyBuilder.getDefaultPerms(); | ||
194 | - log.warn("Application %s has no role assigned.", app.id().name()); | ||
195 | - break; | ||
196 | - } | ||
197 | - permissionAdmin.setPermissions(location, perms); | ||
198 | - appTracker.put(location, app.id()); | ||
199 | - break; | ||
200 | - } | ||
201 | - } | ||
202 | - } | ||
203 | - | ||
204 | - //TODO: dispatch security policy violation event via distributed store | ||
205 | - //immediately notify and deactivate the application upon policy violation | ||
206 | - private class SecurityLogListener implements LogListener { | ||
207 | - @Override | ||
208 | - public void logged(LogEntry entry) { | ||
209 | - if (entry != null) { | ||
210 | - if (entry.getException() != null) { | ||
211 | - ApplicationId applicationId = appTracker.get(entry.getBundle().getLocation()); | ||
212 | - if (applicationId != null) { | ||
213 | - if (appAdminService.getState(applicationId).equals(ApplicationState.ACTIVE)) { | ||
214 | - if (entry.getException() instanceof AccessControlException) { | ||
215 | - java.security.Permission permission = | ||
216 | - ((AccessControlException) entry.getException()).getPermission(); | ||
217 | - handleException(applicationId.name(), permission); | ||
218 | - appAdminService.deactivate(applicationId); | ||
219 | - } | ||
220 | - } | ||
221 | - } | ||
222 | - } | ||
223 | - } | ||
224 | - } | ||
225 | - } | ||
226 | - | ||
227 | - private void handleException(String name, java.security.Permission perm) { | ||
228 | - if (perm instanceof ServicePermission || perm instanceof PackagePermission) { | ||
229 | - print("%s has attempted to %s %s.", name, perm.getActions(), perm.getName()); | ||
230 | - } else if (perm instanceof AppPermission) { | ||
231 | - print("%s has attempted to call an NB API that requires %s permission.", | ||
232 | - name, perm.getName().toUpperCase()); | ||
233 | - } else { | ||
234 | - print("%s has attempted to perform an action that requires %s", name, perm.toString()); | ||
235 | - } | ||
236 | - print("POLICY VIOLATION: Deactivating %s.", name); | ||
237 | - | ||
238 | - } | ||
239 | - private void print(String format, Object... args) { | ||
240 | - System.out.println(String.format("SM-ONOS: " + format, args)); | ||
241 | - log.warn(String.format(format, args)); | ||
242 | - } | ||
243 | - | ||
244 | - private List<String> getBundleLocations(Application app) { | ||
245 | - List<String> locations = new ArrayList(); | ||
246 | - for (String name : app.features()) { | ||
247 | - try { | ||
248 | - Feature feature = featuresService.getFeature(name); | ||
249 | - locations.addAll( | ||
250 | - feature.getBundles().stream().map(BundleInfo::getLocation).collect(Collectors.toList())); | ||
251 | - } catch (Exception e) { | ||
252 | - return locations; | ||
253 | - } | ||
254 | - } | ||
255 | - return locations; | ||
256 | - } | ||
257 | - | ||
258 | - private PermissionAdmin getPermissionAdmin(BundleContext context) { | ||
259 | - return (PermissionAdmin) context.getService(context.getServiceReference(PermissionAdmin.class.getName())); | ||
260 | - } | ||
261 | - | ||
262 | -} |
... | @@ -12,10 +12,46 @@ | ... | @@ -12,10 +12,46 @@ |
12 | </parent> | 12 | </parent> |
13 | 13 | ||
14 | <artifactId>onos-security</artifactId> | 14 | <artifactId>onos-security</artifactId> |
15 | - <packaging>pom</packaging> | 15 | + <packaging>bundle</packaging> |
16 | - <modules> | 16 | + |
17 | - <module>impl</module> | 17 | + |
18 | - </modules> | 18 | + <description>Security-Mode ONOS project</description> |
19 | + | ||
20 | + <dependencies> | ||
21 | + <dependency> | ||
22 | + <groupId>org.osgi</groupId> | ||
23 | + <artifactId>org.osgi.core</artifactId> | ||
24 | + </dependency> | ||
25 | + <dependency> | ||
26 | + <groupId>org.osgi</groupId> | ||
27 | + <artifactId>org.osgi.compendium</artifactId> | ||
28 | + </dependency> | ||
29 | + <dependency> | ||
30 | + <groupId>org.apache.felix</groupId> | ||
31 | + <artifactId>org.apache.felix.scr.annotations</artifactId> | ||
32 | + </dependency> | ||
33 | + <dependency> | ||
34 | + <groupId>org.onosproject</groupId> | ||
35 | + <artifactId>onos-api</artifactId> | ||
36 | + </dependency> | ||
37 | + <dependency> | ||
38 | + <groupId>org.onosproject</groupId> | ||
39 | + <artifactId>onos-core-serializers</artifactId> | ||
40 | + <version>${project.version}</version> | ||
41 | + </dependency> | ||
42 | + <dependency> | ||
43 | + <groupId>org.apache.karaf.features</groupId> | ||
44 | + <artifactId>org.apache.karaf.features.core</artifactId> | ||
45 | + </dependency> | ||
46 | + </dependencies> | ||
47 | + | ||
48 | + <build> | ||
49 | + <plugins> | ||
50 | + <plugin> | ||
51 | + <groupId>org.apache.felix</groupId> | ||
52 | + <artifactId>maven-scr-plugin</artifactId> | ||
53 | + </plugin> | ||
54 | + </plugins> | ||
55 | + </build> | ||
19 | 56 | ||
20 | - <description>Security-mode ONOS project root</description> | ||
21 | </project> | 57 | </project> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | +package org.onosproject.security.impl; | ||
2 | + | ||
3 | + | ||
4 | +import com.google.common.collect.ImmutableSet; | ||
5 | +import com.google.common.collect.Lists; | ||
6 | +import com.google.common.collect.Sets; | ||
7 | +import org.onosproject.security.AppPermission; | ||
8 | +import org.onosproject.app.ApplicationAdminService; | ||
9 | +import org.onosproject.app.ApplicationService; | ||
10 | +import org.onosproject.cfg.ComponentConfigService; | ||
11 | +import org.onosproject.cluster.ClusterAdminService; | ||
12 | +import org.onosproject.cluster.ClusterService; | ||
13 | +import org.onosproject.core.CoreService; | ||
14 | +import org.onosproject.cluster.LeadershipService; | ||
15 | +import org.onosproject.mastership.MastershipAdminService; | ||
16 | +import org.onosproject.mastership.MastershipService; | ||
17 | +import org.onosproject.net.device.DeviceAdminService; | ||
18 | +import org.onosproject.net.device.DeviceService; | ||
19 | +import org.onosproject.net.device.DeviceClockService; | ||
20 | +import org.onosproject.net.driver.DriverAdminService; | ||
21 | +import org.onosproject.net.driver.DriverService; | ||
22 | +import org.onosproject.net.flow.FlowRuleService; | ||
23 | +import org.onosproject.net.flowobjective.FlowObjectiveService; | ||
24 | +import org.onosproject.net.group.GroupService; | ||
25 | +import org.onosproject.net.host.HostAdminService; | ||
26 | +import org.onosproject.net.host.HostService; | ||
27 | +import org.onosproject.net.intent.IntentService; | ||
28 | +import org.onosproject.net.intent.IntentExtensionService; | ||
29 | +import org.onosproject.net.intent.IntentClockService; | ||
30 | +import org.onosproject.net.intent.PartitionService; | ||
31 | +import org.onosproject.net.link.LinkAdminService; | ||
32 | +import org.onosproject.net.link.LinkService; | ||
33 | +import org.onosproject.net.packet.PacketService; | ||
34 | +import org.onosproject.net.proxyarp.ProxyArpService; | ||
35 | +import org.onosproject.net.resource.link.LinkResourceService; | ||
36 | +import org.onosproject.net.statistic.StatisticService; | ||
37 | +import org.onosproject.net.topology.PathService; | ||
38 | +import org.onosproject.net.topology.TopologyService; | ||
39 | +import org.onosproject.security.SecurityAdminService; | ||
40 | +import org.onosproject.store.service.StorageAdminService; | ||
41 | +import org.onosproject.store.service.StorageService; | ||
42 | +import org.osgi.framework.BundlePermission; | ||
43 | +import org.osgi.framework.CapabilityPermission; | ||
44 | +import org.osgi.framework.ServicePermission; | ||
45 | +import org.osgi.framework.PackagePermission; | ||
46 | +import org.osgi.framework.AdaptPermission; | ||
47 | +import org.osgi.service.cm.ConfigurationPermission; | ||
48 | + | ||
49 | +import javax.net.ssl.SSLPermission; | ||
50 | +import javax.security.auth.AuthPermission; | ||
51 | +import javax.security.auth.PrivateCredentialPermission; | ||
52 | +import javax.security.auth.kerberos.DelegationPermission; | ||
53 | +import javax.sound.sampled.AudioPermission; | ||
54 | +import java.io.FilePermission; | ||
55 | +import java.io.SerializablePermission; | ||
56 | +import java.net.NetPermission; | ||
57 | +import java.net.SocketPermission; | ||
58 | +import java.security.Permissions; | ||
59 | +import java.sql.SQLPermission; | ||
60 | +import java.util.ArrayList; | ||
61 | +import java.util.Enumeration; | ||
62 | +import java.util.HashSet; | ||
63 | +import java.util.List; | ||
64 | +import java.util.PropertyPermission; | ||
65 | +import java.util.Set; | ||
66 | +import java.util.concurrent.ConcurrentHashMap; | ||
67 | +import java.security.Permission; | ||
68 | +import java.util.logging.LoggingPermission; | ||
69 | + | ||
70 | +import static org.onosproject.security.AppPermission.Type.*; | ||
71 | + | ||
72 | +public final class DefaultPolicyBuilder { | ||
73 | + | ||
74 | + protected static ConcurrentHashMap<AppPermission.Type, | ||
75 | + Set<String>> serviceDirectory = getServiceDirectory(); | ||
76 | + | ||
77 | + protected static List<Permission> defaultPermissions = getDefaultPerms(); | ||
78 | + protected static List<Permission> adminServicePermissions = getAdminDefaultPerms(); | ||
79 | + | ||
80 | + private DefaultPolicyBuilder(){ | ||
81 | + } | ||
82 | + | ||
83 | + public static List<Permission> getUserApplicationPermissions(Set<org.onosproject.security.Permission> permissions) { | ||
84 | + List<Permission> perms = Lists.newArrayList(); | ||
85 | + perms.addAll(defaultPermissions); | ||
86 | + perms.addAll(convertToJavaPermissions(permissions)); | ||
87 | + return optimizePermissions(perms); | ||
88 | + } | ||
89 | + | ||
90 | + public static List<Permission> getAdminApplicationPermissions( | ||
91 | + Set<org.onosproject.security.Permission> permissions) { | ||
92 | + List<Permission> perms = Lists.newArrayList(); | ||
93 | + perms.addAll(defaultPermissions); | ||
94 | + perms.addAll(adminServicePermissions); | ||
95 | + for (AppPermission.Type perm : serviceDirectory.keySet()) { | ||
96 | + perms.add(new AppPermission(perm)); | ||
97 | + } | ||
98 | + perms.addAll(convertToJavaPermissions(permissions)); | ||
99 | + return optimizePermissions(perms); | ||
100 | + } | ||
101 | + | ||
102 | + public static List<Permission> convertToJavaPermissions(Set<org.onosproject.security.Permission> permissions) { | ||
103 | + List<Permission> result = Lists.newArrayList(); | ||
104 | + for (org.onosproject.security.Permission perm : permissions) { | ||
105 | + Permission javaPerm = getPermission(perm); | ||
106 | + if (javaPerm != null) { | ||
107 | + if (javaPerm instanceof AppPermission) { | ||
108 | + if (((AppPermission) javaPerm).getType() != null) { | ||
109 | + AppPermission ap = (AppPermission) javaPerm; | ||
110 | + result.add(ap); | ||
111 | + if (serviceDirectory.containsKey(ap.getType())) { | ||
112 | + for (String service : serviceDirectory.get(ap.getType())) { | ||
113 | + result.add(new ServicePermission(service, ServicePermission.GET)); | ||
114 | + } | ||
115 | + } | ||
116 | + } | ||
117 | + } else if (javaPerm instanceof ServicePermission) { | ||
118 | + if (!javaPerm.getName().contains(SecurityAdminService.class.getName())) { | ||
119 | + result.add(javaPerm); | ||
120 | + } | ||
121 | + } else { | ||
122 | + result.add(javaPerm); | ||
123 | + } | ||
124 | + | ||
125 | + } | ||
126 | + } | ||
127 | + return result; | ||
128 | + } | ||
129 | + | ||
130 | + public static Set<org.onosproject.security.Permission> convertToOnosPermissions(List<Permission> permissions) { | ||
131 | + Set<org.onosproject.security.Permission> result = Sets.newHashSet(); | ||
132 | + for (Permission perm : permissions) { | ||
133 | + org.onosproject.security.Permission onosPerm = getOnosPermission(perm); | ||
134 | + if (onosPerm != null) { | ||
135 | + result.add(onosPerm); | ||
136 | + } | ||
137 | + } | ||
138 | + return result; | ||
139 | + } | ||
140 | + | ||
141 | + public static List<Permission> getDefaultPerms() { | ||
142 | + List<Permission> permSet = Lists.newArrayList(); | ||
143 | + permSet.add(new PackagePermission("*", PackagePermission.EXPORTONLY)); | ||
144 | + permSet.add(new PackagePermission("*", PackagePermission.IMPORT)); | ||
145 | + permSet.add(new AdaptPermission("*", AdaptPermission.ADAPT)); | ||
146 | + permSet.add(new ConfigurationPermission("*", ConfigurationPermission.CONFIGURE)); | ||
147 | + return permSet; | ||
148 | + } | ||
149 | + | ||
150 | + private static List<Permission> getAdminDefaultPerms() { | ||
151 | + List<Permission> permSet = Lists.newArrayList(); | ||
152 | + permSet.add(new ServicePermission(ApplicationAdminService.class.getName(), ServicePermission.GET)); | ||
153 | + permSet.add(new ServicePermission(ClusterAdminService.class.getName(), ServicePermission.GET)); | ||
154 | + permSet.add(new ServicePermission(MastershipAdminService.class.getName(), ServicePermission.GET)); | ||
155 | + permSet.add(new ServicePermission(DeviceAdminService.class.getName(), ServicePermission.GET)); | ||
156 | + permSet.add(new ServicePermission(HostAdminService.class.getName(), ServicePermission.GET)); | ||
157 | + permSet.add(new ServicePermission(LinkAdminService.class.getName(), ServicePermission.GET)); | ||
158 | + permSet.add(new ServicePermission(DriverAdminService.class.getName(), ServicePermission.GET)); | ||
159 | + permSet.add(new ServicePermission(StorageAdminService.class.getName(), ServicePermission.GET)); | ||
160 | +// permSet.add(new ServicePermission(LabelResourceAdminService.class.getName(), ServicePermission.GET)); | ||
161 | +// permSet.add(new ServicePermission(TunnelAdminService.class.getName(), ServicePermission.GET)); | ||
162 | + permSet.add(new ServicePermission(ApplicationService.class.getName(), ServicePermission.GET)); | ||
163 | + permSet.add(new ServicePermission(ComponentConfigService.class.getName(), ServicePermission.GET)); | ||
164 | + permSet.add(new ServicePermission(CoreService.class.getName(), ServicePermission.GET)); | ||
165 | + permSet.add(new ServicePermission(ClusterService.class.getName(), ServicePermission.GET)); | ||
166 | + permSet.add(new ServicePermission(LeadershipService.class.getName(), ServicePermission.GET)); | ||
167 | + permSet.add(new ServicePermission(MastershipService.class.getName(), ServicePermission.GET)); | ||
168 | + permSet.add(new ServicePermission(DeviceService.class.getName(), ServicePermission.GET)); | ||
169 | + permSet.add(new ServicePermission(DeviceClockService.class.getName(), ServicePermission.GET)); | ||
170 | + permSet.add(new ServicePermission(DriverService.class.getName(), ServicePermission.GET)); | ||
171 | + permSet.add(new ServicePermission(FlowRuleService.class.getName(), ServicePermission.GET)); | ||
172 | + permSet.add(new ServicePermission(FlowObjectiveService.class.getName(), ServicePermission.GET)); | ||
173 | + permSet.add(new ServicePermission(GroupService.class.getName(), ServicePermission.GET)); | ||
174 | + permSet.add(new ServicePermission(HostService.class.getName(), ServicePermission.GET)); | ||
175 | + permSet.add(new ServicePermission(IntentService.class.getName(), ServicePermission.GET)); | ||
176 | + permSet.add(new ServicePermission(IntentClockService.class.getName(), ServicePermission.GET)); | ||
177 | + permSet.add(new ServicePermission(IntentExtensionService.class.getName(), ServicePermission.GET)); | ||
178 | + permSet.add(new ServicePermission(PartitionService.class.getName(), ServicePermission.GET)); | ||
179 | + permSet.add(new ServicePermission(LinkService.class.getName(), ServicePermission.GET)); | ||
180 | + permSet.add(new ServicePermission(LinkResourceService.class.getName(), ServicePermission.GET)); | ||
181 | +// permSet.add(new ServicePermission(LabelResourceService.class.getName(), ServicePermission.GET)); | ||
182 | + permSet.add(new ServicePermission(PacketService.class.getName(), ServicePermission.GET)); | ||
183 | + permSet.add(new ServicePermission(ProxyArpService.class.getName(), ServicePermission.GET)); | ||
184 | + permSet.add(new ServicePermission(StatisticService.class.getName(), ServicePermission.GET)); | ||
185 | + permSet.add(new ServicePermission(PathService.class.getName(), ServicePermission.GET)); | ||
186 | + permSet.add(new ServicePermission(TopologyService.class.getName(), ServicePermission.GET)); | ||
187 | +// permSet.add(new ServicePermission(TunnelService.class.getName(), ServicePermission.GET)); | ||
188 | + permSet.add(new ServicePermission(StorageService.class.getName(), ServicePermission.GET)); | ||
189 | + return permSet; | ||
190 | + } | ||
191 | + | ||
192 | + public static Set<String> getNBServiceList() { | ||
193 | + Set<String> permString = new HashSet<>(); | ||
194 | + for (Permission perm : getAdminDefaultPerms()) { | ||
195 | + permString.add(perm.getName()); | ||
196 | + } | ||
197 | + return permString; | ||
198 | + } | ||
199 | + | ||
200 | + private static ConcurrentHashMap<AppPermission.Type, Set<String>> getServiceDirectory() { | ||
201 | + | ||
202 | + ConcurrentHashMap<AppPermission.Type, Set<String>> serviceDirectory = new ConcurrentHashMap<>(); | ||
203 | + | ||
204 | + serviceDirectory.put(APP_READ, ImmutableSet.of( | ||
205 | + ApplicationService.class.getName(), CoreService.class.getName())); | ||
206 | + serviceDirectory.put(APP_EVENT, ImmutableSet.of( | ||
207 | + ApplicationService.class.getName(), CoreService.class.getName())); | ||
208 | + serviceDirectory.put(CONFIG_READ, ImmutableSet.of( | ||
209 | + ComponentConfigService.class.getName())); | ||
210 | + serviceDirectory.put(CONFIG_WRITE, ImmutableSet.of( | ||
211 | + ComponentConfigService.class.getName())); | ||
212 | + serviceDirectory.put(CLUSTER_READ, ImmutableSet.of( | ||
213 | + ClusterService.class.getName(), LeadershipService.class.getName(), | ||
214 | + MastershipService.class.getName())); | ||
215 | + serviceDirectory.put(CLUSTER_WRITE, ImmutableSet.of( | ||
216 | + LeadershipService.class.getName(), MastershipService.class.getName())); | ||
217 | + serviceDirectory.put(CLUSTER_EVENT, ImmutableSet.of( | ||
218 | + ClusterService.class.getName(), LeadershipService.class.getName(), | ||
219 | + MastershipService.class.getName())); | ||
220 | + serviceDirectory.put(DEVICE_READ, ImmutableSet.of( | ||
221 | + DeviceService.class.getName(), DeviceClockService.class.getName())); | ||
222 | + serviceDirectory.put(DEVICE_EVENT, ImmutableSet.of( | ||
223 | + DeviceService.class.getName())); | ||
224 | + serviceDirectory.put(DRIVER_READ, ImmutableSet.of( | ||
225 | + DriverService.class.getName())); | ||
226 | + serviceDirectory.put(DRIVER_WRITE, ImmutableSet.of( | ||
227 | + DriverService.class.getName())); | ||
228 | + serviceDirectory.put(FLOWRULE_READ, ImmutableSet.of( | ||
229 | + FlowRuleService.class.getName())); | ||
230 | + serviceDirectory.put(FLOWRULE_WRITE, ImmutableSet.of( | ||
231 | + FlowRuleService.class.getName(), FlowObjectiveService.class.getName())); | ||
232 | + serviceDirectory.put(FLOWRULE_EVENT, ImmutableSet.of( | ||
233 | + FlowRuleService.class.getName())); | ||
234 | + serviceDirectory.put(GROUP_READ, ImmutableSet.of( | ||
235 | + GroupService.class.getName())); | ||
236 | + serviceDirectory.put(GROUP_WRITE, ImmutableSet.of( | ||
237 | + GroupService.class.getName())); | ||
238 | + serviceDirectory.put(GROUP_EVENT, ImmutableSet.of( | ||
239 | + GroupService.class.getName())); | ||
240 | + serviceDirectory.put(HOST_READ, ImmutableSet.of( | ||
241 | + HostService.class.getName())); | ||
242 | + serviceDirectory.put(HOST_WRITE, ImmutableSet.of( | ||
243 | + HostService.class.getName())); | ||
244 | + serviceDirectory.put(HOST_EVENT, ImmutableSet.of( | ||
245 | + HostService.class.getName())); | ||
246 | + serviceDirectory.put(INTENT_READ, ImmutableSet.of( | ||
247 | + IntentService.class.getName(), PartitionService.class.getName(), | ||
248 | + IntentClockService.class.getName())); | ||
249 | + serviceDirectory.put(INTENT_WRITE, ImmutableSet.of( | ||
250 | + IntentService.class.getName())); | ||
251 | + serviceDirectory.put(INTENT_EVENT, ImmutableSet.of( | ||
252 | + IntentService.class.getName())); | ||
253 | +// serviceDirectory.put(LINK_READ, ImmutableSet.of( | ||
254 | +// LinkService.class.getName(), LinkResourceService.class.getName(), | ||
255 | +// LabelResourceService.class.getName())); | ||
256 | +// serviceDirectory.put(LINK_WRITE, ImmutableSet.of( | ||
257 | +// LinkResourceService.class.getName(), LabelResourceService.class.getName())); | ||
258 | +// serviceDirectory.put(LINK_EVENT, ImmutableSet.of( | ||
259 | +// LinkService.class.getName(), LinkResourceService.class.getName(), | ||
260 | +// LabelResourceService.class.getName())); | ||
261 | + serviceDirectory.put(PACKET_READ, ImmutableSet.of( | ||
262 | + PacketService.class.getName(), ProxyArpService.class.getName())); | ||
263 | + serviceDirectory.put(PACKET_WRITE, ImmutableSet.of( | ||
264 | + PacketService.class.getName(), ProxyArpService.class.getName())); | ||
265 | + serviceDirectory.put(PACKET_EVENT, ImmutableSet.of( | ||
266 | + PacketService.class.getName())); | ||
267 | + serviceDirectory.put(STATISTIC_READ, ImmutableSet.of( | ||
268 | + StatisticService.class.getName())); | ||
269 | + serviceDirectory.put(TOPOLOGY_READ, ImmutableSet.of( | ||
270 | + TopologyService.class.getName(), PathService.class.getName())); | ||
271 | + serviceDirectory.put(TOPOLOGY_EVENT, ImmutableSet.of( | ||
272 | + TopologyService.class.getName())); | ||
273 | +// serviceDirectory.put(TUNNEL_READ, ImmutableSet.of( | ||
274 | +// TunnelService.class.getName())); | ||
275 | +// serviceDirectory.put(TUNNEL_WRITE, ImmutableSet.of( | ||
276 | +// TunnelService.class.getName())); | ||
277 | +// serviceDirectory.put(TUNNEL_EVENT, ImmutableSet.of( | ||
278 | +// TunnelService.class.getName())); | ||
279 | + serviceDirectory.put(STORAGE_WRITE, ImmutableSet.of( | ||
280 | + StorageService.class.getName())); | ||
281 | + | ||
282 | + return serviceDirectory; | ||
283 | + } | ||
284 | + | ||
285 | + | ||
286 | + public static org.onosproject.security.Permission getOnosPermission(Permission permission) { | ||
287 | + if (permission instanceof AppPermission) { | ||
288 | + return new org.onosproject.security.Permission(AppPermission.class.getName(), permission.getName(), ""); | ||
289 | + } else if (permission instanceof FilePermission) { | ||
290 | + return new org.onosproject.security.Permission( | ||
291 | + FilePermission.class.getName(), permission.getName(), permission.getActions()); | ||
292 | + } else if (permission instanceof SerializablePermission) { | ||
293 | + return new org.onosproject.security.Permission( | ||
294 | + SerializablePermission.class.getName(), permission.getName(), permission.getActions()); | ||
295 | + } else if (permission instanceof NetPermission) { | ||
296 | + return new org.onosproject.security.Permission( | ||
297 | + NetPermission.class.getName(), permission.getName(), permission.getActions()); | ||
298 | + } else if (permission instanceof RuntimePermission) { | ||
299 | + return new org.onosproject.security.Permission( | ||
300 | + RuntimePermission.class.getName(), permission.getName(), permission.getActions()); | ||
301 | + } else if (permission instanceof SocketPermission) { | ||
302 | + return new org.onosproject.security.Permission( | ||
303 | + SocketPermission.class.getName(), permission.getName(), permission.getActions()); | ||
304 | + } else if (permission instanceof SQLPermission) { | ||
305 | + return new org.onosproject.security.Permission( | ||
306 | + SQLPermission.class.getName(), permission.getName(), permission.getActions()); | ||
307 | + } else if (permission instanceof PropertyPermission) { | ||
308 | + return new org.onosproject.security.Permission( | ||
309 | + PropertyPermission.class.getName(), permission.getName(), permission.getActions()); | ||
310 | + } else if (permission instanceof LoggingPermission) { | ||
311 | + return new org.onosproject.security.Permission( | ||
312 | + LoggingPermission.class.getName(), permission.getName(), permission.getActions()); | ||
313 | + } else if (permission instanceof SSLPermission) { | ||
314 | + return new org.onosproject.security.Permission( | ||
315 | + SSLPermission.class.getName(), permission.getName(), permission.getActions()); | ||
316 | + } else if (permission instanceof AuthPermission) { | ||
317 | + return new org.onosproject.security.Permission( | ||
318 | + AuthPermission.class.getName(), permission.getName(), permission.getActions()); | ||
319 | + } else if (permission instanceof PrivateCredentialPermission) { | ||
320 | + return new org.onosproject.security.Permission( | ||
321 | + PrivateCredentialPermission.class.getName(), permission.getName(), permission.getActions()); | ||
322 | + } else if (permission instanceof DelegationPermission) { | ||
323 | + return new org.onosproject.security.Permission( | ||
324 | + DelegationPermission.class.getName(), permission.getName(), permission.getActions()); | ||
325 | + } else if (permission instanceof javax.security.auth.kerberos.ServicePermission) { | ||
326 | + return new org.onosproject.security.Permission( | ||
327 | + javax.security.auth.kerberos.ServicePermission.class.getName(), permission.getName(), | ||
328 | + permission.getActions()); | ||
329 | + } else if (permission instanceof AudioPermission) { | ||
330 | + return new org.onosproject.security.Permission( | ||
331 | + AudioPermission.class.getName(), permission.getName(), permission.getActions()); | ||
332 | + } else if (permission instanceof AdaptPermission) { | ||
333 | + return new org.onosproject.security.Permission( | ||
334 | + AdaptPermission.class.getName(), permission.getName(), permission.getActions()); | ||
335 | + } else if (permission instanceof BundlePermission) { | ||
336 | + return new org.onosproject.security.Permission( | ||
337 | + BundlePermission.class.getName(), permission.getName(), permission.getActions()); | ||
338 | + } else if (permission instanceof CapabilityPermission) { | ||
339 | + return new org.onosproject.security.Permission( | ||
340 | + CapabilityPermission.class.getName(), permission.getName(), permission.getActions()); | ||
341 | + } else if (permission instanceof PackagePermission) { | ||
342 | + return new org.onosproject.security.Permission( | ||
343 | + PackagePermission.class.getName(), permission.getName(), permission.getActions()); | ||
344 | + } else if (permission instanceof ServicePermission) { | ||
345 | + return new org.onosproject.security.Permission( | ||
346 | + ServicePermission.class.getName(), permission.getName(), permission.getActions()); | ||
347 | + } | ||
348 | + return null; | ||
349 | + } | ||
350 | + | ||
351 | + private static Permission getPermission(org.onosproject.security.Permission permission) { | ||
352 | + | ||
353 | + String classname = permission.getClassName(); | ||
354 | + String name = permission.getName(); | ||
355 | + String actions = permission.getActions(); | ||
356 | + | ||
357 | + if (classname == null || name == null) { | ||
358 | + return null; | ||
359 | + } | ||
360 | + classname = classname.trim(); | ||
361 | + name = name.trim(); | ||
362 | + actions = actions.trim(); | ||
363 | + | ||
364 | + if (AppPermission.class.getName().equals(classname)) { | ||
365 | + return new AppPermission(name); | ||
366 | + } else if (FilePermission.class.getName().equals(classname)) { | ||
367 | + return new FilePermission(name, actions); | ||
368 | + } else if (SerializablePermission.class.getName().equals(classname)) { | ||
369 | + return new SerializablePermission(name, actions); | ||
370 | + } else if (NetPermission.class.getName().equals(classname)) { | ||
371 | + return new NetPermission(name, actions); | ||
372 | + } else if (RuntimePermission.class.getName().equals(classname)) { | ||
373 | + return new RuntimePermission(name, actions); | ||
374 | + } else if (SocketPermission.class.getName().equals(classname)) { | ||
375 | + return new SocketPermission(name, actions); | ||
376 | + } else if (SQLPermission.class.getName().equals(classname)) { | ||
377 | + return new SQLPermission(name, actions); | ||
378 | + } else if (PropertyPermission.class.getName().equals(classname)) { | ||
379 | + return new PropertyPermission(name, actions); | ||
380 | + } else if (LoggingPermission.class.getName().equals(classname)) { | ||
381 | + return new LoggingPermission(name, actions); | ||
382 | + } else if (SSLPermission.class.getName().equals(classname)) { | ||
383 | + return new SSLPermission(name, actions); | ||
384 | + } else if (AuthPermission.class.getName().equals(classname)) { | ||
385 | + return new AuthPermission(name, actions); | ||
386 | + } else if (PrivateCredentialPermission.class.getName().equals(classname)) { | ||
387 | + return new PrivateCredentialPermission(name, actions); | ||
388 | + } else if (DelegationPermission.class.getName().equals(classname)) { | ||
389 | + return new DelegationPermission(name, actions); | ||
390 | + } else if (javax.security.auth.kerberos.ServicePermission.class.getName().equals(classname)) { | ||
391 | + return new javax.security.auth.kerberos.ServicePermission(name, actions); | ||
392 | + } else if (AudioPermission.class.getName().equals(classname)) { | ||
393 | + return new AudioPermission(name, actions); | ||
394 | + } else if (AdaptPermission.class.getName().equals(classname)) { | ||
395 | + return new AdaptPermission(name, actions); | ||
396 | + } else if (BundlePermission.class.getName().equals(classname)) { | ||
397 | + return new BundlePermission(name, actions); | ||
398 | + } else if (CapabilityPermission.class.getName().equals(classname)) { | ||
399 | + return new CapabilityPermission(name, actions); | ||
400 | + } else if (PackagePermission.class.getName().equals(classname)) { | ||
401 | + return new PackagePermission(name, actions); | ||
402 | + } else if (ServicePermission.class.getName().equals(classname)) { | ||
403 | + return new ServicePermission(name, actions); | ||
404 | + } | ||
405 | + | ||
406 | + //AllPermission, SecurityPermission, UnresolvedPermission | ||
407 | + //AWTPermission, AdminPermission(osgi), ReflectPermission not allowed | ||
408 | + return null; | ||
409 | + | ||
410 | + } | ||
411 | + private static List<Permission> optimizePermissions(List<Permission> perms) { | ||
412 | + Permissions permissions = listToPermissions(perms); | ||
413 | + return permissionsToList(permissions); | ||
414 | + } | ||
415 | + | ||
416 | + private static List<Permission> permissionsToList(Permissions perms) { | ||
417 | + List<Permission> permissions = new ArrayList<>(); | ||
418 | + Enumeration<Permission> e = perms.elements(); | ||
419 | + while (e.hasMoreElements()) { | ||
420 | + permissions.add(e.nextElement()); | ||
421 | + } | ||
422 | + return permissions; | ||
423 | + } | ||
424 | + | ||
425 | + private static Permissions listToPermissions(List<Permission> perms) { | ||
426 | + Permissions permissions = new Permissions(); | ||
427 | + for (Permission perm : perms) { | ||
428 | + permissions.add(perm); | ||
429 | + } | ||
430 | + return permissions; | ||
431 | + } | ||
432 | +} | ||
433 | + |
1 | +package org.onosproject.security.impl; | ||
2 | + | ||
3 | +import com.google.common.collect.Lists; | ||
4 | + | ||
5 | +import org.apache.felix.scr.annotations.Component; | ||
6 | +import org.apache.felix.scr.annotations.Reference; | ||
7 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
8 | +import org.apache.felix.scr.annotations.Activate; | ||
9 | +import org.apache.felix.scr.annotations.Deactivate; | ||
10 | +import org.apache.felix.scr.annotations.Service; | ||
11 | + | ||
12 | +import org.onosproject.app.ApplicationAdminService; | ||
13 | +import org.onosproject.app.ApplicationState; | ||
14 | +import org.onosproject.core.Application; | ||
15 | +import org.onosproject.core.ApplicationId; | ||
16 | + | ||
17 | +import org.onosproject.event.EventDeliveryService; | ||
18 | +import org.onosproject.event.ListenerRegistry; | ||
19 | +import org.onosproject.security.AppPermission; | ||
20 | +import org.onosproject.security.SecurityAdminService; | ||
21 | +import org.onosproject.security.store.SecurityModeEvent; | ||
22 | +import org.onosproject.security.store.SecurityModeListener; | ||
23 | +import org.onosproject.security.store.SecurityModeStore; | ||
24 | +import org.onosproject.security.store.SecurityModeStoreDelegate; | ||
25 | +import org.osgi.framework.BundleContext; | ||
26 | +import org.osgi.framework.FrameworkUtil; | ||
27 | +import org.osgi.framework.ServicePermission; | ||
28 | +import org.osgi.service.log.LogEntry; | ||
29 | +import org.osgi.service.log.LogListener; | ||
30 | +import org.osgi.service.log.LogReaderService; | ||
31 | +import org.osgi.service.permissionadmin.PermissionInfo; | ||
32 | + | ||
33 | +import java.security.AccessControlException; | ||
34 | +import java.security.Permission; | ||
35 | +import java.util.ArrayList; | ||
36 | +import java.util.List; | ||
37 | +import java.util.Map; | ||
38 | +import java.util.Set; | ||
39 | +import java.util.concurrent.ConcurrentHashMap; | ||
40 | + | ||
41 | +import org.osgi.service.permissionadmin.PermissionAdmin; | ||
42 | +import org.slf4j.Logger; | ||
43 | + | ||
44 | +import static org.slf4j.LoggerFactory.getLogger; | ||
45 | + | ||
46 | + | ||
47 | + | ||
48 | +/** | ||
49 | + * Security-Mode ONOS management implementation. | ||
50 | + */ | ||
51 | + | ||
52 | +@Component(immediate = true) | ||
53 | +@Service | ||
54 | +public class SecurityModeManager implements SecurityAdminService { | ||
55 | + | ||
56 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
57 | + protected SecurityModeStore store; | ||
58 | + | ||
59 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
60 | + protected ApplicationAdminService appAdminService; | ||
61 | + | ||
62 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
63 | + protected LogReaderService logReaderService; | ||
64 | + | ||
65 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
66 | + protected EventDeliveryService eventDispatcher; | ||
67 | + | ||
68 | + private final Logger log = getLogger(getClass()); | ||
69 | + | ||
70 | + protected final ListenerRegistry<SecurityModeEvent, SecurityModeListener> | ||
71 | + listenerRegistry = new ListenerRegistry<>(); | ||
72 | + | ||
73 | + private final SecurityModeStoreDelegate delegate = new InternalStoreDelegate(); | ||
74 | + | ||
75 | + private SecurityLogListener securityLogListener = new SecurityLogListener(); | ||
76 | + | ||
77 | + private PermissionAdmin permissionAdmin = getPermissionAdmin(); | ||
78 | + | ||
79 | + | ||
80 | + @Activate | ||
81 | + public void activate() { | ||
82 | + | ||
83 | + eventDispatcher.addSink(SecurityModeEvent.class, listenerRegistry); | ||
84 | + // add Listeners | ||
85 | + logReaderService.addLogListener(securityLogListener); | ||
86 | + | ||
87 | + store.setDelegate(delegate); | ||
88 | + | ||
89 | + if (System.getSecurityManager() == null) { | ||
90 | + log.warn("J2EE security manager is disabled."); | ||
91 | + deactivate(); | ||
92 | + return; | ||
93 | + } | ||
94 | + if (permissionAdmin == null) { | ||
95 | + log.warn("Permission Admin not found."); | ||
96 | + deactivate(); | ||
97 | + return; | ||
98 | + } | ||
99 | + | ||
100 | + log.info("Security-Mode Started"); | ||
101 | + } | ||
102 | + | ||
103 | + @Deactivate | ||
104 | + public void deactivate() { | ||
105 | + eventDispatcher.removeSink(SecurityModeEvent.class); | ||
106 | + logReaderService.removeLogListener(securityLogListener); | ||
107 | + store.unsetDelegate(delegate); | ||
108 | + log.info("Stopped"); | ||
109 | + | ||
110 | + } | ||
111 | + | ||
112 | + @Override | ||
113 | + public boolean isSecured(ApplicationId appId) { | ||
114 | + if (store.getState(appId) == null) { | ||
115 | + store.registerApplication(appId); | ||
116 | + } | ||
117 | + return store.isSecured(appId); | ||
118 | + } | ||
119 | + | ||
120 | + | ||
121 | + @Override | ||
122 | + public void review(ApplicationId appId) { | ||
123 | + if (store.getState(appId) == null) { | ||
124 | + store.registerApplication(appId); | ||
125 | + } | ||
126 | + store.reviewPolicy(appId); | ||
127 | + } | ||
128 | + | ||
129 | + @Override | ||
130 | + public void acceptPolicy(ApplicationId appId) { | ||
131 | + if (store.getState(appId) == null) { | ||
132 | + store.registerApplication(appId); | ||
133 | + } | ||
134 | + store.acceptPolicy(appId, DefaultPolicyBuilder.convertToOnosPermissions(getMaximumPermissions(appId))); | ||
135 | + } | ||
136 | + | ||
137 | + @Override | ||
138 | + public void register(ApplicationId appId) { | ||
139 | + store.registerApplication(appId); | ||
140 | + } | ||
141 | + | ||
142 | + @Override | ||
143 | + public Map<Integer, List<Permission>> getPrintableSpecifiedPermissions(ApplicationId appId) { | ||
144 | + return getPrintablePermissionMap(getMaximumPermissions(appId)); | ||
145 | + } | ||
146 | + | ||
147 | + @Override | ||
148 | + public Map<Integer, List<Permission>> getPrintableGrantedPermissions(ApplicationId appId) { | ||
149 | + return getPrintablePermissionMap( | ||
150 | + DefaultPolicyBuilder.convertToJavaPermissions(store.getGrantedPermissions(appId))); | ||
151 | + } | ||
152 | + | ||
153 | + @Override | ||
154 | + public Map<Integer, List<Permission>> getPrintableRequestedPermissions(ApplicationId appId) { | ||
155 | + return getPrintablePermissionMap( | ||
156 | + DefaultPolicyBuilder.convertToJavaPermissions(store.getRequestedPermissions(appId))); | ||
157 | + } | ||
158 | + | ||
159 | + private class SecurityLogListener implements LogListener { | ||
160 | + @Override | ||
161 | + public void logged(LogEntry entry) { | ||
162 | + if (entry.getException() != null && | ||
163 | + entry.getException() instanceof AccessControlException) { | ||
164 | + String location = entry.getBundle().getLocation(); | ||
165 | + Permission javaPerm = | ||
166 | + ((AccessControlException) entry.getException()).getPermission(); | ||
167 | + org.onosproject.security.Permission permission = DefaultPolicyBuilder.getOnosPermission(javaPerm); | ||
168 | + if (permission == null) { | ||
169 | + log.warn("Unsupported permission requested."); | ||
170 | + return; | ||
171 | + } | ||
172 | + store.getApplicationIds(location).stream().filter( | ||
173 | + appId -> store.isSecured(appId) && | ||
174 | + appAdminService.getState(appId) == ApplicationState.ACTIVE).forEach(appId -> { | ||
175 | + store.requestPermission(appId, permission); | ||
176 | + print("[POLICY VIOLATION] APP: %s / Bundle: %s / Permission: %s ", | ||
177 | + appId.name(), location, permission.toString()); | ||
178 | + }); | ||
179 | + } | ||
180 | + } | ||
181 | + } | ||
182 | + | ||
183 | + private class InternalStoreDelegate implements SecurityModeStoreDelegate { | ||
184 | + @Override | ||
185 | + public void notify(SecurityModeEvent event) { | ||
186 | + if (event.type() == SecurityModeEvent.Type.POLICY_ACCEPTED) { | ||
187 | + setLocalPermissions(event.subject()); | ||
188 | + log.info("{} POLICY ACCEPTED and ENFORCED", event.subject().name()); | ||
189 | + } else if (event.type() == SecurityModeEvent.Type.POLICY_VIOLATED) { | ||
190 | + log.info("{} POLICY VIOLATED", event.subject().name()); | ||
191 | + } else if (event.type() == SecurityModeEvent.Type.POLICY_REVIEWED) { | ||
192 | + log.info("{} POLICY REVIEWED", event.subject().name()); | ||
193 | + } | ||
194 | + eventDispatcher.post(event); | ||
195 | + } | ||
196 | + } | ||
197 | + | ||
198 | + /** | ||
199 | + * TYPES. | ||
200 | + * 0 - APP_PERM | ||
201 | + * 1 - ADMIN SERVICE | ||
202 | + * 2 - NB_SERVICE | ||
203 | + * 3 - ETC_SERVICE | ||
204 | + * 4 - ETC | ||
205 | + * @param perms | ||
206 | + */ | ||
207 | + private Map<Integer, List<Permission>> getPrintablePermissionMap(List<Permission> perms) { | ||
208 | + ConcurrentHashMap<Integer, List<Permission>> sortedMap = new ConcurrentHashMap<>(); | ||
209 | + sortedMap.put(0, new ArrayList()); | ||
210 | + sortedMap.put(1, new ArrayList()); | ||
211 | + sortedMap.put(2, new ArrayList()); | ||
212 | + sortedMap.put(3, new ArrayList()); | ||
213 | + sortedMap.put(4, new ArrayList()); | ||
214 | + for (Permission perm : perms) { | ||
215 | + if (perm instanceof ServicePermission) { | ||
216 | + if (DefaultPolicyBuilder.getNBServiceList().contains(perm.getName())) { | ||
217 | + if (perm.getName().contains("Admin")) { | ||
218 | + sortedMap.get(1).add(perm); | ||
219 | + } else { | ||
220 | + sortedMap.get(2).add(perm); | ||
221 | + } | ||
222 | + } else { | ||
223 | + sortedMap.get(3).add(perm); | ||
224 | + } | ||
225 | + } else if (perm instanceof AppPermission) { | ||
226 | + sortedMap.get(0).add(perm); | ||
227 | + } else { | ||
228 | + sortedMap.get(4).add(perm); | ||
229 | + } | ||
230 | + } | ||
231 | + return sortedMap; | ||
232 | + } | ||
233 | + | ||
234 | + private void setLocalPermissions(ApplicationId applicationId) { | ||
235 | + for (String location : store.getBundleLocations(applicationId)) { | ||
236 | + permissionAdmin.setPermissions(location, permissionsToInfo(store.getGrantedPermissions(applicationId))); | ||
237 | + } | ||
238 | + } | ||
239 | + | ||
240 | + private PermissionInfo[] permissionsToInfo(Set<org.onosproject.security.Permission> permissions) { | ||
241 | + List<PermissionInfo> result = Lists.newArrayList(); | ||
242 | + for (org.onosproject.security.Permission perm : permissions) { | ||
243 | + result.add(new PermissionInfo(perm.getClassName(), perm.getName(), perm.getActions())); | ||
244 | + } | ||
245 | + PermissionInfo[] permissionInfos = new PermissionInfo[result.size()]; | ||
246 | + return result.toArray(permissionInfos); | ||
247 | + } | ||
248 | + | ||
249 | + | ||
250 | + | ||
251 | + private List<Permission> getMaximumPermissions(ApplicationId appId) { | ||
252 | + Application app = appAdminService.getApplication(appId); | ||
253 | + if (app == null) { | ||
254 | + print("Unknown application."); | ||
255 | + return null; | ||
256 | + } | ||
257 | + List<Permission> appPerms; | ||
258 | + switch (app.role()) { | ||
259 | + case ADMIN: | ||
260 | + appPerms = DefaultPolicyBuilder.getAdminApplicationPermissions(app.permissions()); | ||
261 | + break; | ||
262 | + case USER: | ||
263 | + appPerms = DefaultPolicyBuilder.getUserApplicationPermissions(app.permissions()); | ||
264 | + break; | ||
265 | + case UNSPECIFIED: | ||
266 | + default: | ||
267 | + appPerms = DefaultPolicyBuilder.getDefaultPerms(); | ||
268 | + break; | ||
269 | + } | ||
270 | + | ||
271 | + return appPerms; | ||
272 | + } | ||
273 | + | ||
274 | + | ||
275 | + private void print(String format, Object... args) { | ||
276 | + System.out.println(String.format("SM-ONOS: " + format, args)); | ||
277 | + log.warn(String.format(format, args)); | ||
278 | + } | ||
279 | + | ||
280 | + private PermissionAdmin getPermissionAdmin() { | ||
281 | + BundleContext context = getBundleContext(); | ||
282 | + return (PermissionAdmin) context.getService(context.getServiceReference(PermissionAdmin.class.getName())); | ||
283 | + } | ||
284 | + | ||
285 | + private BundleContext getBundleContext() { | ||
286 | + return FrameworkUtil.getBundle(this.getClass()).getBundleContext(); | ||
287 | + | ||
288 | + } | ||
289 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
core/security/src/main/java/org/onosproject/security/store/DistributedSecurityModeStore.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security.store; | ||
18 | + | ||
19 | +import com.google.common.collect.ImmutableSet; | ||
20 | +import com.google.common.collect.Sets; | ||
21 | + | ||
22 | +import org.apache.felix.scr.annotations.Activate; | ||
23 | +import org.apache.felix.scr.annotations.Component; | ||
24 | +import org.apache.felix.scr.annotations.Deactivate; | ||
25 | +import org.apache.felix.scr.annotations.Reference; | ||
26 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
27 | +import org.apache.felix.scr.annotations.Service; | ||
28 | +import org.apache.karaf.features.BundleInfo; | ||
29 | +import org.apache.karaf.features.Feature; | ||
30 | +import org.apache.karaf.features.FeaturesService; | ||
31 | + | ||
32 | +import org.onlab.util.KryoNamespace; | ||
33 | +import org.onosproject.app.ApplicationAdminService; | ||
34 | +import org.onosproject.core.Application; | ||
35 | +import org.onosproject.core.ApplicationId; | ||
36 | +import org.onosproject.security.Permission; | ||
37 | +import org.onosproject.store.AbstractStore; | ||
38 | +import org.onosproject.store.serializers.KryoNamespaces; | ||
39 | +import org.onosproject.store.service.ConsistentMap; | ||
40 | +import org.onosproject.store.service.EventuallyConsistentMap; | ||
41 | +import org.onosproject.store.service.LogicalClockService; | ||
42 | +import org.onosproject.store.service.MapEvent; | ||
43 | +import org.onosproject.store.service.MapEventListener; | ||
44 | +import org.onosproject.store.service.Serializer; | ||
45 | +import org.onosproject.store.service.StorageService; | ||
46 | +import org.slf4j.Logger; | ||
47 | + | ||
48 | +import java.util.HashSet; | ||
49 | +import java.util.Set; | ||
50 | +import java.util.concurrent.ConcurrentHashMap; | ||
51 | +import java.util.stream.Collectors; | ||
52 | + | ||
53 | +import static org.onosproject.security.store.SecurityModeState.*; | ||
54 | +import static org.slf4j.LoggerFactory.getLogger; | ||
55 | + | ||
56 | +/** | ||
57 | + * Manages application permissions granted/requested to applications. | ||
58 | + * Uses both gossip-based and RAFT-based distributed data store. | ||
59 | + */ | ||
60 | +@Component(immediate = true) | ||
61 | +@Service | ||
62 | +public class DistributedSecurityModeStore | ||
63 | + extends AbstractStore<SecurityModeEvent, SecurityModeStoreDelegate> | ||
64 | + implements SecurityModeStore { | ||
65 | + | ||
66 | + private final Logger log = getLogger(getClass()); | ||
67 | + | ||
68 | + private ConsistentMap<ApplicationId, SecurityInfo> states; | ||
69 | + private EventuallyConsistentMap<ApplicationId, Set<Permission>> violations; | ||
70 | + | ||
71 | + private ConcurrentHashMap<String, Set<ApplicationId>> localBundleAppDirectory; | ||
72 | + private ConcurrentHashMap<ApplicationId, Set<String>> localAppBundleDirectory; | ||
73 | + | ||
74 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
75 | + protected StorageService storageService; | ||
76 | + | ||
77 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
78 | + protected LogicalClockService clockService; | ||
79 | + | ||
80 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
81 | + protected ApplicationAdminService applicationAdminService; | ||
82 | + | ||
83 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
84 | + protected FeaturesService featuresService; | ||
85 | + | ||
86 | + private static final Serializer STATE_SERIALIZER = Serializer.using(new KryoNamespace.Builder() | ||
87 | + .register(KryoNamespaces.API) | ||
88 | + .register(SecurityModeState.class) | ||
89 | + .register(SecurityInfo.class) | ||
90 | + .register(Permission.class) | ||
91 | + .build()); | ||
92 | + | ||
93 | + private static final KryoNamespace.Builder VIOLATION_SERIALIZER = KryoNamespace.newBuilder() | ||
94 | + .register(KryoNamespaces.API) | ||
95 | + .register(Permission.class); | ||
96 | + | ||
97 | + @Activate | ||
98 | + public void activate() { | ||
99 | + states = storageService.<ApplicationId, SecurityInfo>consistentMapBuilder() | ||
100 | + .withName("smonos-sdata") | ||
101 | + .withSerializer(STATE_SERIALIZER) | ||
102 | + .build(); | ||
103 | + | ||
104 | + states.addListener(new SecurityStateListener()); | ||
105 | + | ||
106 | + violations = storageService.<ApplicationId, Set<Permission>>eventuallyConsistentMapBuilder() | ||
107 | + .withName("smonos-rperms") | ||
108 | + .withSerializer(VIOLATION_SERIALIZER) | ||
109 | + .withTimestampProvider((k, v) -> clockService.getTimestamp()) | ||
110 | + .build(); | ||
111 | + | ||
112 | + localBundleAppDirectory = new ConcurrentHashMap<>(); | ||
113 | + localAppBundleDirectory = new ConcurrentHashMap<>(); | ||
114 | + | ||
115 | + log.info("Started"); | ||
116 | + | ||
117 | + } | ||
118 | + | ||
119 | + @Deactivate | ||
120 | + public void deactivate() { | ||
121 | + violations.destroy(); | ||
122 | + log.info("Stopped"); | ||
123 | + } | ||
124 | + | ||
125 | + | ||
126 | + @Override | ||
127 | + public Set<String> getBundleLocations(ApplicationId appId) { | ||
128 | + Set<String> locations = localAppBundleDirectory.get(appId); | ||
129 | + return locations != null ? locations : Sets.newHashSet(); | ||
130 | + } | ||
131 | + | ||
132 | + @Override | ||
133 | + public Set<ApplicationId> getApplicationIds(String location) { | ||
134 | + Set<ApplicationId> appIds = localBundleAppDirectory.get(location); | ||
135 | + return appIds != null ? appIds : Sets.newHashSet(); | ||
136 | + } | ||
137 | + | ||
138 | + @Override | ||
139 | + public Set<Permission> getRequestedPermissions(ApplicationId appId) { | ||
140 | + Set<Permission> permissions = violations.get(appId); | ||
141 | + return permissions != null ? permissions : ImmutableSet.of(); | ||
142 | + } | ||
143 | + | ||
144 | + @Override | ||
145 | + public Set<Permission> getGrantedPermissions(ApplicationId appId) { | ||
146 | + return states.asJavaMap().getOrDefault(appId, new SecurityInfo(ImmutableSet.of(), null)).getPermissions(); | ||
147 | + } | ||
148 | + | ||
149 | + @Override | ||
150 | + public void requestPermission(ApplicationId appId, Permission permission) { | ||
151 | + | ||
152 | + states.computeIf(appId, securityInfo -> (securityInfo == null || securityInfo.getState() != POLICY_VIOLATED), | ||
153 | + (id, securityInfo) -> new SecurityInfo(securityInfo.getPermissions(), POLICY_VIOLATED)); | ||
154 | + violations.compute(appId, (k, v) -> v == null ? Sets.newHashSet(permission) : addAndGet(v, permission)); | ||
155 | + } | ||
156 | + | ||
157 | + private Set<Permission> addAndGet(Set<Permission> oldSet, Permission newPerm) { | ||
158 | + oldSet.add(newPerm); | ||
159 | + return oldSet; | ||
160 | + } | ||
161 | + | ||
162 | + @Override | ||
163 | + public boolean isSecured(ApplicationId appId) { | ||
164 | + SecurityInfo info = states.get(appId).value(); | ||
165 | + return info == null ? false : info.getState().equals(SECURED); | ||
166 | + } | ||
167 | + | ||
168 | + @Override | ||
169 | + public void reviewPolicy(ApplicationId appId) { | ||
170 | + Application app = applicationAdminService.getApplication(appId); | ||
171 | + if (app == null) { | ||
172 | + log.warn("Unknown Application"); | ||
173 | + return; | ||
174 | + } | ||
175 | + states.computeIfPresent(appId, (applicationId, securityInfo) -> { | ||
176 | + if (securityInfo.getState().equals(INSTALLED)) { | ||
177 | + return new SecurityInfo(ImmutableSet.of(), REVIEWED); | ||
178 | + } | ||
179 | + return securityInfo; | ||
180 | + }); | ||
181 | + } | ||
182 | + | ||
183 | + @Override | ||
184 | + public void acceptPolicy(ApplicationId appId, Set<Permission> permissionSet) { | ||
185 | + | ||
186 | + Application app = applicationAdminService.getApplication(appId); | ||
187 | + if (app == null) { | ||
188 | + log.warn("Unknown Application"); | ||
189 | + return; | ||
190 | + } | ||
191 | + | ||
192 | + states.computeIf(appId, | ||
193 | + securityInfo -> (securityInfo != null), | ||
194 | + (id, securityInfo) -> { | ||
195 | + switch (securityInfo.getState()) { | ||
196 | + case POLICY_VIOLATED: | ||
197 | + System.out.println( | ||
198 | + "This application has violated the security policy. Please uninstall."); | ||
199 | + return securityInfo; | ||
200 | + case SECURED: | ||
201 | + System.out.println( | ||
202 | + "The policy has been accepted already. To review policy, review [app.name]"); | ||
203 | + return securityInfo; | ||
204 | + case INSTALLED: | ||
205 | + System.out.println("Please review the security policy prior to accept them"); | ||
206 | + log.warn("Application has not been reviewed"); | ||
207 | + return securityInfo; | ||
208 | + case REVIEWED: | ||
209 | + return new SecurityInfo(permissionSet, SECURED); | ||
210 | + default: | ||
211 | + return securityInfo; | ||
212 | + } | ||
213 | + }); | ||
214 | + } | ||
215 | + | ||
216 | + private final class SecurityStateListener | ||
217 | + implements MapEventListener<ApplicationId, SecurityInfo> { | ||
218 | + | ||
219 | + @Override | ||
220 | + public void event(MapEvent<ApplicationId, SecurityInfo> event) { | ||
221 | + | ||
222 | + if (delegate == null) { | ||
223 | + return; | ||
224 | + } | ||
225 | + ApplicationId appId = event.key(); | ||
226 | + SecurityInfo info = event.value().value(); | ||
227 | + | ||
228 | + if (event.type() == MapEvent.Type.INSERT || event.type() == MapEvent.Type.UPDATE) { | ||
229 | + switch (info.getState()) { | ||
230 | + case POLICY_VIOLATED: | ||
231 | + notifyDelegate(new SecurityModeEvent(SecurityModeEvent.Type.POLICY_VIOLATED, appId)); | ||
232 | + break; | ||
233 | + case SECURED: | ||
234 | + notifyDelegate(new SecurityModeEvent(SecurityModeEvent.Type.POLICY_ACCEPTED, appId)); | ||
235 | + default: | ||
236 | + break; | ||
237 | + } | ||
238 | + } else if (event.type() == MapEvent.Type.REMOVE) { | ||
239 | + removeAppFromDirectories(appId); | ||
240 | + } | ||
241 | + } | ||
242 | + } | ||
243 | + | ||
244 | + private void removeAppFromDirectories(ApplicationId appId) { | ||
245 | + for (String location : localAppBundleDirectory.get(appId)) { | ||
246 | + localBundleAppDirectory.get(location).remove(appId); | ||
247 | + } | ||
248 | + violations.remove(appId); | ||
249 | + states.remove(appId); | ||
250 | + localAppBundleDirectory.remove(appId); | ||
251 | + } | ||
252 | + | ||
253 | + @Override | ||
254 | + public boolean registerApplication(ApplicationId appId) { | ||
255 | + Application app = applicationAdminService.getApplication(appId); | ||
256 | + if (app == null) { | ||
257 | + log.warn("Unknown application."); | ||
258 | + return false; | ||
259 | + } | ||
260 | + localAppBundleDirectory.put(appId, getBundleLocations(app)); | ||
261 | + for (String location : localAppBundleDirectory.get(appId)) { | ||
262 | + if (!localBundleAppDirectory.containsKey(location)) { | ||
263 | + localBundleAppDirectory.put(location, new HashSet<>()); | ||
264 | + } | ||
265 | + if (!localBundleAppDirectory.get(location).contains(appId)) { | ||
266 | + localBundleAppDirectory.get(location).add(appId); | ||
267 | + } | ||
268 | + } | ||
269 | + states.put(appId, new SecurityInfo(Sets.newHashSet(), INSTALLED)); | ||
270 | + return true; | ||
271 | + } | ||
272 | + | ||
273 | + @Override | ||
274 | + public void unregisterApplication(ApplicationId appId) { | ||
275 | + if (localAppBundleDirectory.containsKey(appId)) { | ||
276 | + for (String location : localAppBundleDirectory.get(appId)) { | ||
277 | + if (localBundleAppDirectory.get(location).size() == 1) { | ||
278 | + localBundleAppDirectory.remove(location); | ||
279 | + } else { | ||
280 | + localBundleAppDirectory.get(location).remove(appId); | ||
281 | + } | ||
282 | + } | ||
283 | + localAppBundleDirectory.remove(appId); | ||
284 | + } | ||
285 | + } | ||
286 | + | ||
287 | + @Override | ||
288 | + public SecurityModeState getState(ApplicationId appId) { | ||
289 | + return states.asJavaMap().getOrDefault(appId, new SecurityInfo(null, null)).getState(); | ||
290 | + } | ||
291 | + | ||
292 | + private Set<String> getBundleLocations(Application app) { | ||
293 | + Set<String> locations = new HashSet<>(); | ||
294 | + for (String name : app.features()) { | ||
295 | + try { | ||
296 | + Feature feature = featuresService.getFeature(name); | ||
297 | + locations.addAll( | ||
298 | + feature.getBundles().stream().map(BundleInfo::getLocation).collect(Collectors.toList())); | ||
299 | + } catch (Exception e) { | ||
300 | + return locations; | ||
301 | + } | ||
302 | + } | ||
303 | + return locations; | ||
304 | + } | ||
305 | + | ||
306 | + @Override | ||
307 | + public void setDelegate(SecurityModeStoreDelegate delegate) { | ||
308 | + super.setDelegate(delegate); | ||
309 | + } | ||
310 | + | ||
311 | + @Override | ||
312 | + public void unsetDelegate(SecurityModeStoreDelegate delegate) { | ||
313 | + super.setDelegate(delegate); | ||
314 | + } | ||
315 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security.store; | ||
18 | + | ||
19 | +import org.onosproject.security.Permission; | ||
20 | + | ||
21 | +import java.util.Set; | ||
22 | + | ||
23 | +/** | ||
24 | + * Security-Mode ONOS security policy and state representation for distributed store. | ||
25 | + */ | ||
26 | +public class SecurityInfo { | ||
27 | + | ||
28 | + protected Set<Permission> grantedPermissions; | ||
29 | + protected SecurityModeState state; | ||
30 | + | ||
31 | + public SecurityInfo(Set<Permission> perms, SecurityModeState state) { | ||
32 | + this.grantedPermissions = perms; | ||
33 | + this.state = state; | ||
34 | + } | ||
35 | + public Set<Permission> getPermissions() { | ||
36 | + return grantedPermissions; | ||
37 | + } | ||
38 | + public SecurityModeState getState() { | ||
39 | + return state; | ||
40 | + } | ||
41 | +} |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security.store; | ||
18 | + | ||
19 | +import org.onosproject.core.ApplicationId; | ||
20 | +import org.onosproject.event.AbstractEvent; | ||
21 | + | ||
22 | +/** | ||
23 | + * Security-Mode ONOS notifications. | ||
24 | + */ | ||
25 | +public class SecurityModeEvent extends AbstractEvent<SecurityModeEvent.Type, ApplicationId> { | ||
26 | + | ||
27 | + protected SecurityModeEvent(Type type, ApplicationId subject) { | ||
28 | + super(type, subject); | ||
29 | + } | ||
30 | + | ||
31 | + public enum Type { | ||
32 | + | ||
33 | + /** | ||
34 | + * Signifies that security policy has been accepted. | ||
35 | + */ | ||
36 | + POLICY_ACCEPTED, | ||
37 | + | ||
38 | + /** | ||
39 | + * Signifies that security policy has been reviewed. | ||
40 | + */ | ||
41 | + POLICY_REVIEWED, | ||
42 | + | ||
43 | + /** | ||
44 | + * Signifies that application has violated security policy. | ||
45 | + */ | ||
46 | + POLICY_VIOLATED, | ||
47 | + } | ||
48 | +} |
... | @@ -14,20 +14,12 @@ | ... | @@ -14,20 +14,12 @@ |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | 16 | ||
17 | -package org.onosproject.cli.security; | 17 | +package org.onosproject.security.store; |
18 | 18 | ||
19 | -import com.google.common.collect.ImmutableList; | 19 | +import org.onosproject.event.EventListener; |
20 | -import org.onosproject.cli.AbstractChoicesCompleter; | ||
21 | 20 | ||
22 | -import java.util.List; | ||
23 | - | ||
24 | -import static org.onosproject.cli.security.PermissionCommand.*; | ||
25 | /** | 21 | /** |
26 | - * Permission command completer. | 22 | + * Security-Mode ONOS event listener. |
27 | */ | 23 | */ |
28 | -public class PermissionCommandCompleter extends AbstractChoicesCompleter { | 24 | +public interface SecurityModeListener extends EventListener<SecurityModeEvent> { |
29 | - @Override | ||
30 | - protected List<String> choices() { | ||
31 | - return ImmutableList.of(ADD, REMOVE, CLEAR, LIST); | ||
32 | - } | ||
33 | } | 25 | } | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security.store; | ||
18 | + | ||
19 | +/** | ||
20 | + * Representation of Security-Mode ONOS application review state. | ||
21 | + */ | ||
22 | +public enum SecurityModeState { | ||
23 | + | ||
24 | + /** | ||
25 | + * Indicates that operator has accepted application security policy. | ||
26 | + */ | ||
27 | + SECURED, | ||
28 | + | ||
29 | + /** | ||
30 | + * Indicates that application security policy has been reviewed. | ||
31 | + */ | ||
32 | + REVIEWED, | ||
33 | + | ||
34 | + /** | ||
35 | + * Indicates that application has been installed. | ||
36 | + */ | ||
37 | + INSTALLED, | ||
38 | + | ||
39 | + /** | ||
40 | + * Indicates that application has violated security policy. | ||
41 | + */ | ||
42 | + POLICY_VIOLATED, | ||
43 | +} |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.security.store; | ||
18 | + | ||
19 | +import org.onosproject.core.ApplicationId; | ||
20 | +import org.onosproject.security.Permission; | ||
21 | +import org.onosproject.store.Store; | ||
22 | + | ||
23 | +import java.util.Set; | ||
24 | + | ||
25 | +/** | ||
26 | + * Security-Mode ONOS distributed store service. | ||
27 | + */ | ||
28 | +public interface SecurityModeStore extends Store<SecurityModeEvent, SecurityModeStoreDelegate> { | ||
29 | + | ||
30 | + /** | ||
31 | + * Updates the local bundle-application directories. | ||
32 | + * @param appId application identifier | ||
33 | + * @return true if successfully registered. | ||
34 | + */ | ||
35 | + boolean registerApplication(ApplicationId appId); | ||
36 | + | ||
37 | + /** | ||
38 | + * Removes application info from the local bundle-application directories. | ||
39 | + * @param appId application identifier | ||
40 | + */ | ||
41 | + void unregisterApplication(ApplicationId appId); | ||
42 | + | ||
43 | + /** | ||
44 | + * Returns state of the specified application. | ||
45 | + * @param appId application identifier | ||
46 | + * @return Security-Mode State of application | ||
47 | + */ | ||
48 | + SecurityModeState getState(ApplicationId appId); | ||
49 | + | ||
50 | + /** | ||
51 | + * Returns bundle locations of specified application. | ||
52 | + * @param appId application identifier | ||
53 | + * @return set of bundle location strings | ||
54 | + */ | ||
55 | + Set<String> getBundleLocations(ApplicationId appId); | ||
56 | + | ||
57 | + /** | ||
58 | + * Returns application identifiers that are associated with given bundle location. | ||
59 | + * @param location OSGi bundle location | ||
60 | + * @return set of application identifiers | ||
61 | + */ | ||
62 | + Set<ApplicationId> getApplicationIds(String location); | ||
63 | + | ||
64 | + /** | ||
65 | + * Returns a list of permissions that have been requested by given application. | ||
66 | + * @param appId application identifier | ||
67 | + * @return list of permissions | ||
68 | + */ | ||
69 | + Set<Permission> getRequestedPermissions(ApplicationId appId); | ||
70 | + | ||
71 | + /** | ||
72 | + * Returns an array of permissions that have been granted to given application. | ||
73 | + * @param appId application identifier | ||
74 | + * @return array of permissionInfo | ||
75 | + */ | ||
76 | + Set<Permission> getGrantedPermissions(ApplicationId appId); | ||
77 | + | ||
78 | + /** | ||
79 | + * Request permission that is required to run given application. | ||
80 | + * @param appId application identifier | ||
81 | + * @param permission permission | ||
82 | + */ | ||
83 | + void requestPermission(ApplicationId appId, Permission permission); | ||
84 | + | ||
85 | + /** | ||
86 | + * Returns true if given application has been secured. | ||
87 | + * @param appId application identifier | ||
88 | + * @return true indicates secured | ||
89 | + */ | ||
90 | + boolean isSecured(ApplicationId appId); | ||
91 | + | ||
92 | + /** | ||
93 | + * Notifies SM-ONOS that operator has reviewed the policy. | ||
94 | + * @param appId application identifier | ||
95 | + */ | ||
96 | + void reviewPolicy(ApplicationId appId); | ||
97 | + | ||
98 | + /** | ||
99 | + * Accept the current security policy of given application. | ||
100 | + * @param appId application identifier | ||
101 | + * @param permissionSet array of PermissionInfo | ||
102 | + */ | ||
103 | + void acceptPolicy(ApplicationId appId, Set<Permission> permissionSet); | ||
104 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -14,32 +14,12 @@ | ... | @@ -14,32 +14,12 @@ |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | 16 | ||
17 | -package org.onosproject.cli.security; | 17 | +package org.onosproject.security.store; |
18 | 18 | ||
19 | -import org.apache.karaf.shell.console.completer.ArgumentCompleter; | 19 | +import org.onosproject.store.StoreDelegate; |
20 | -import org.onosproject.cli.AbstractChoicesCompleter; | ||
21 | -import org.onosproject.core.Permission; | ||
22 | - | ||
23 | -import java.util.ArrayList; | ||
24 | -import java.util.List; | ||
25 | 20 | ||
26 | /** | 21 | /** |
27 | - * Permission Name Completer. | 22 | + * Security-Mode distributed store delegate abstraction. |
28 | */ | 23 | */ |
29 | -public class PermissionNameCompleter extends AbstractChoicesCompleter { | 24 | +public interface SecurityModeStoreDelegate extends StoreDelegate<SecurityModeEvent> { |
30 | - @Override | ||
31 | - protected List<String> choices() { | ||
32 | - List<String> permNames = new ArrayList<>(); | ||
33 | - | ||
34 | - ArgumentCompleter.ArgumentList list = getArgumentList(); | ||
35 | - String cmd = list.getArguments()[1]; | ||
36 | - if (cmd.equals("add") || cmd.equals("remove")) { | ||
37 | - for (Permission perm : Permission.values()) { | ||
38 | - permNames.add(perm.name()); | ||
39 | - } | ||
40 | - } | ||
41 | - return permNames; | ||
42 | - } | ||
43 | - | ||
44 | - | ||
45 | } | 25 | } | ... | ... |
... | @@ -38,7 +38,7 @@ import org.onosproject.core.Application; | ... | @@ -38,7 +38,7 @@ import org.onosproject.core.Application; |
38 | import org.onosproject.core.ApplicationId; | 38 | import org.onosproject.core.ApplicationId; |
39 | import org.onosproject.core.ApplicationIdStore; | 39 | import org.onosproject.core.ApplicationIdStore; |
40 | import org.onosproject.core.DefaultApplication; | 40 | import org.onosproject.core.DefaultApplication; |
41 | -import org.onosproject.core.Permission; | 41 | +import org.onosproject.security.Permission; |
42 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; | 42 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; |
43 | import org.onosproject.store.cluster.messaging.MessageSubject; | 43 | import org.onosproject.store.cluster.messaging.MessageSubject; |
44 | import org.onosproject.store.serializers.KryoNamespaces; | 44 | import org.onosproject.store.serializers.KryoNamespaces; | ... | ... |
... | @@ -135,7 +135,7 @@ | ... | @@ -135,7 +135,7 @@ |
135 | <feature>onos-api</feature> | 135 | <feature>onos-api</feature> |
136 | <!-- FIXME Release when stable (before Drake) --> | 136 | <!-- FIXME Release when stable (before Drake) --> |
137 | <bundle>mvn:org.onosproject/org.apache.felix.framework.security/2.2.0.onos-SNAPSHOT</bundle> | 137 | <bundle>mvn:org.onosproject/org.apache.felix.framework.security/2.2.0.onos-SNAPSHOT</bundle> |
138 | - <bundle>mvn:org.onosproject/onos-security-impl/@ONOS-VERSION</bundle> | 138 | + <bundle>mvn:org.onosproject/onos-security/@ONOS-VERSION</bundle> |
139 | </feature> | 139 | </feature> |
140 | 140 | ||
141 | </features> | 141 | </features> | ... | ... |
... | @@ -17,7 +17,6 @@ package org.onosproject.openflow.controller; | ... | @@ -17,7 +17,6 @@ package org.onosproject.openflow.controller; |
17 | 17 | ||
18 | import org.onlab.packet.DeserializationException; | 18 | import org.onlab.packet.DeserializationException; |
19 | import org.onlab.packet.Ethernet; | 19 | import org.onlab.packet.Ethernet; |
20 | -import org.onosproject.core.Permission; | ||
21 | import org.projectfloodlight.openflow.protocol.OFPacketIn; | 20 | import org.projectfloodlight.openflow.protocol.OFPacketIn; |
22 | import org.projectfloodlight.openflow.protocol.OFPacketOut; | 21 | import org.projectfloodlight.openflow.protocol.OFPacketOut; |
23 | import org.projectfloodlight.openflow.protocol.OFVersion; | 22 | import org.projectfloodlight.openflow.protocol.OFVersion; |
... | @@ -34,6 +33,7 @@ import java.util.Collections; | ... | @@ -34,6 +33,7 @@ import java.util.Collections; |
34 | import java.util.concurrent.atomic.AtomicBoolean; | 33 | import java.util.concurrent.atomic.AtomicBoolean; |
35 | 34 | ||
36 | import static org.onosproject.security.AppGuard.checkPermission; | 35 | import static org.onosproject.security.AppGuard.checkPermission; |
36 | +import static org.onosproject.security.AppPermission.Type.*; | ||
37 | 37 | ||
38 | 38 | ||
39 | /** | 39 | /** |
... | @@ -57,7 +57,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext | ... | @@ -57,7 +57,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext |
57 | 57 | ||
58 | @Override | 58 | @Override |
59 | public void send() { | 59 | public void send() { |
60 | - checkPermission(Permission.PACKET_WRITE); | 60 | + checkPermission(PACKET_WRITE); |
61 | 61 | ||
62 | if (block() && isBuilt.get()) { | 62 | if (block() && isBuilt.get()) { |
63 | sw.sendMsg(pktout); | 63 | sw.sendMsg(pktout); |
... | @@ -97,7 +97,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext | ... | @@ -97,7 +97,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext |
97 | 97 | ||
98 | @Override | 98 | @Override |
99 | public Ethernet parsed() { | 99 | public Ethernet parsed() { |
100 | - checkPermission(Permission.PACKET_READ); | 100 | + checkPermission(PACKET_READ); |
101 | 101 | ||
102 | try { | 102 | try { |
103 | return Ethernet.deserializer().deserialize(pktin.getData(), 0, pktin.getData().length); | 103 | return Ethernet.deserializer().deserialize(pktin.getData(), 0, pktin.getData().length); |
... | @@ -111,7 +111,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext | ... | @@ -111,7 +111,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext |
111 | 111 | ||
112 | @Override | 112 | @Override |
113 | public Dpid dpid() { | 113 | public Dpid dpid() { |
114 | - checkPermission(Permission.PACKET_READ); | 114 | + checkPermission(PACKET_READ); |
115 | 115 | ||
116 | return new Dpid(sw.getId()); | 116 | return new Dpid(sw.getId()); |
117 | } | 117 | } |
... | @@ -130,7 +130,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext | ... | @@ -130,7 +130,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext |
130 | 130 | ||
131 | @Override | 131 | @Override |
132 | public Integer inPort() { | 132 | public Integer inPort() { |
133 | - checkPermission(Permission.PACKET_READ); | 133 | + checkPermission(PACKET_READ); |
134 | 134 | ||
135 | return pktinInPort().getPortNumber(); | 135 | return pktinInPort().getPortNumber(); |
136 | } | 136 | } |
... | @@ -144,7 +144,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext | ... | @@ -144,7 +144,7 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext |
144 | 144 | ||
145 | @Override | 145 | @Override |
146 | public byte[] unparsed() { | 146 | public byte[] unparsed() { |
147 | - checkPermission(Permission.PACKET_READ); | 147 | + checkPermission(PACKET_READ); |
148 | 148 | ||
149 | return pktin.getData().clone(); | 149 | return pktin.getData().clone(); |
150 | 150 | ||
... | @@ -160,21 +160,21 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext | ... | @@ -160,21 +160,21 @@ public final class DefaultOpenFlowPacketContext implements OpenFlowPacketContext |
160 | 160 | ||
161 | @Override | 161 | @Override |
162 | public boolean block() { | 162 | public boolean block() { |
163 | - checkPermission(Permission.PACKET_WRITE); | 163 | + checkPermission(PACKET_WRITE); |
164 | 164 | ||
165 | return free.getAndSet(false); | 165 | return free.getAndSet(false); |
166 | } | 166 | } |
167 | 167 | ||
168 | @Override | 168 | @Override |
169 | public boolean isHandled() { | 169 | public boolean isHandled() { |
170 | - checkPermission(Permission.PACKET_READ); | 170 | + checkPermission(PACKET_READ); |
171 | 171 | ||
172 | return !free.get(); | 172 | return !free.get(); |
173 | } | 173 | } |
174 | 174 | ||
175 | @Override | 175 | @Override |
176 | public boolean isBuffered() { | 176 | public boolean isBuffered() { |
177 | - checkPermission(Permission.PACKET_READ); | 177 | + checkPermission(PACKET_READ); |
178 | 178 | ||
179 | return isBuffered; | 179 | return isBuffered; |
180 | } | 180 | } | ... | ... |
-
Please register or login to post a comment