MCPcopy Create free account
hub / github.com/grpc/grpc-java / RbacFilter

Class RbacFilter

xds/src/main/java/io/grpc/xds/RbacFilter.java:67–364  ·  view source on GitHub ↗

RBAC Http filter implementation.

Source from the content-addressed store, hash-verified

65
66/** RBAC Http filter implementation. */
67final class RbacFilter implements Filter {
68 private static final Logger logger = Logger.getLogger(RbacFilter.class.getName());
69
70 private static final RbacFilter INSTANCE = new RbacFilter();
71
72 static final String TYPE_URL =
73 "type.googleapis.com/envoy.extensions.filters.http.rbac.v3.RBAC";
74
75 private static final String TYPE_URL_OVERRIDE_CONFIG =
76 "type.googleapis.com/envoy.extensions.filters.http.rbac.v3.RBACPerRoute";
77
78 private RbacFilter() {}
79
80 static final class Provider implements Filter.Provider {
81 @Override
82 public String[] typeUrls() {
83 return new String[] {TYPE_URL, TYPE_URL_OVERRIDE_CONFIG};
84 }
85
86 @Override
87 public boolean isServerFilter() {
88 return true;
89 }
90
91 @Override
92 public RbacFilter newInstance(String name) {
93 return INSTANCE;
94 }
95
96 @Override
97 public ConfigOrError<RbacConfig> parseFilterConfig(
98 Message rawProtoMessage, FilterConfigParseContext context) {
99 RBAC rbacProto;
100 if (!(rawProtoMessage instanceof Any)) {
101 return ConfigOrError.fromError("Invalid config type: " + rawProtoMessage.getClass());
102 }
103 Any anyMessage = (Any) rawProtoMessage;
104 try {
105 rbacProto = anyMessage.unpack(RBAC.class);
106 } catch (InvalidProtocolBufferException e) {
107 return ConfigOrError.fromError("Invalid proto: " + e);
108 }
109 return parseRbacConfig(rbacProto);
110 }
111
112 @Override
113 public ConfigOrError<RbacConfig> parseFilterConfigOverride(
114 Message rawProtoMessage, FilterConfigParseContext context) {
115 RBACPerRoute rbacPerRoute;
116 if (!(rawProtoMessage instanceof Any)) {
117 return ConfigOrError.fromError("Invalid config type: " + rawProtoMessage.getClass());
118 }
119 Any anyMessage = (Any) rawProtoMessage;
120 try {
121 rbacPerRoute = anyMessage.unpack(RBACPerRoute.class);
122 } catch (InvalidProtocolBufferException e) {
123 return ConfigOrError.fromError("Invalid proto: " + e);
124 }

Callers

nothing calls this directly

Calls 1

getNameMethod · 0.65

Tested by

no test coverage detected