go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/upstream/upstream.ranger.go (about) 1 // Code generated by protoc-gen-rangerrpc version DO NOT EDIT. 2 // source: upstream.proto 3 4 package upstream 5 6 import ( 7 "context" 8 "errors" 9 "net/http" 10 "net/url" 11 "strings" 12 13 ranger "go.mondoo.com/ranger-rpc" 14 "go.mondoo.com/ranger-rpc/metadata" 15 jsonpb "google.golang.org/protobuf/encoding/protojson" 16 pb "google.golang.org/protobuf/proto" 17 ) 18 19 // service interface definition 20 21 type AgentManager interface { 22 RegisterAgent(context.Context, *AgentRegistrationRequest) (*AgentRegistrationConfirmation, error) 23 UnRegisterAgent(context.Context, *Mrn) (*Confirmation, error) 24 PingPong(context.Context, *Ping) (*Pong, error) 25 } 26 27 // client implementation 28 29 type AgentManagerClient struct { 30 ranger.Client 31 httpclient ranger.HTTPClient 32 prefix string 33 } 34 35 func NewAgentManagerClient(addr string, client ranger.HTTPClient, plugins ...ranger.ClientPlugin) (*AgentManagerClient, error) { 36 base, err := url.Parse(ranger.SanitizeUrl(addr)) 37 if err != nil { 38 return nil, err 39 } 40 41 u, err := url.Parse("./AgentManager") 42 if err != nil { 43 return nil, err 44 } 45 46 serviceClient := &AgentManagerClient{ 47 httpclient: client, 48 prefix: base.ResolveReference(u).String(), 49 } 50 serviceClient.AddPlugins(plugins...) 51 return serviceClient, nil 52 } 53 func (c *AgentManagerClient) RegisterAgent(ctx context.Context, in *AgentRegistrationRequest) (*AgentRegistrationConfirmation, error) { 54 out := new(AgentRegistrationConfirmation) 55 err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/RegisterAgent"}, ""), in, out) 56 return out, err 57 } 58 func (c *AgentManagerClient) UnRegisterAgent(ctx context.Context, in *Mrn) (*Confirmation, error) { 59 out := new(Confirmation) 60 err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/UnRegisterAgent"}, ""), in, out) 61 return out, err 62 } 63 func (c *AgentManagerClient) PingPong(ctx context.Context, in *Ping) (*Pong, error) { 64 out := new(Pong) 65 err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/PingPong"}, ""), in, out) 66 return out, err 67 } 68 69 // server implementation 70 71 type AgentManagerServerOption func(s *AgentManagerServer) 72 73 func WithUnknownFieldsForAgentManagerServer() AgentManagerServerOption { 74 return func(s *AgentManagerServer) { 75 s.allowUnknownFields = true 76 } 77 } 78 79 func NewAgentManagerServer(handler AgentManager, opts ...AgentManagerServerOption) http.Handler { 80 srv := &AgentManagerServer{ 81 handler: handler, 82 } 83 84 for i := range opts { 85 opts[i](srv) 86 } 87 88 service := ranger.Service{ 89 Name: "AgentManager", 90 Methods: map[string]ranger.Method{ 91 "RegisterAgent": srv.RegisterAgent, 92 "UnRegisterAgent": srv.UnRegisterAgent, 93 "PingPong": srv.PingPong, 94 }, 95 } 96 return ranger.NewRPCServer(&service) 97 } 98 99 type AgentManagerServer struct { 100 handler AgentManager 101 allowUnknownFields bool 102 } 103 104 func (p *AgentManagerServer) RegisterAgent(ctx context.Context, reqBytes *[]byte) (pb.Message, error) { 105 var req AgentRegistrationRequest 106 var err error 107 108 md, ok := metadata.FromIncomingContext(ctx) 109 if !ok { 110 return nil, errors.New("could not access header") 111 } 112 113 switch md.First("Content-Type") { 114 case "application/protobuf", "application/octet-stream", "application/grpc+proto": 115 err = pb.Unmarshal(*reqBytes, &req) 116 default: 117 // handle case of empty object 118 if len(*reqBytes) > 0 { 119 err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req) 120 } 121 } 122 123 if err != nil { 124 return nil, err 125 } 126 return p.handler.RegisterAgent(ctx, &req) 127 } 128 func (p *AgentManagerServer) UnRegisterAgent(ctx context.Context, reqBytes *[]byte) (pb.Message, error) { 129 var req Mrn 130 var err error 131 132 md, ok := metadata.FromIncomingContext(ctx) 133 if !ok { 134 return nil, errors.New("could not access header") 135 } 136 137 switch md.First("Content-Type") { 138 case "application/protobuf", "application/octet-stream", "application/grpc+proto": 139 err = pb.Unmarshal(*reqBytes, &req) 140 default: 141 // handle case of empty object 142 if len(*reqBytes) > 0 { 143 err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req) 144 } 145 } 146 147 if err != nil { 148 return nil, err 149 } 150 return p.handler.UnRegisterAgent(ctx, &req) 151 } 152 func (p *AgentManagerServer) PingPong(ctx context.Context, reqBytes *[]byte) (pb.Message, error) { 153 var req Ping 154 var err error 155 156 md, ok := metadata.FromIncomingContext(ctx) 157 if !ok { 158 return nil, errors.New("could not access header") 159 } 160 161 switch md.First("Content-Type") { 162 case "application/protobuf", "application/octet-stream", "application/grpc+proto": 163 err = pb.Unmarshal(*reqBytes, &req) 164 default: 165 // handle case of empty object 166 if len(*reqBytes) > 0 { 167 err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req) 168 } 169 } 170 171 if err != nil { 172 return nil, err 173 } 174 return p.handler.PingPong(ctx, &req) 175 } 176 177 // service interface definition 178 179 type SecureTokenService interface { 180 ExchangeSSH(context.Context, *ExchangeSSHKeyRequest) (*ExchangeSSHKeyResponse, error) 181 } 182 183 // client implementation 184 185 type SecureTokenServiceClient struct { 186 ranger.Client 187 httpclient ranger.HTTPClient 188 prefix string 189 } 190 191 func NewSecureTokenServiceClient(addr string, client ranger.HTTPClient, plugins ...ranger.ClientPlugin) (*SecureTokenServiceClient, error) { 192 base, err := url.Parse(ranger.SanitizeUrl(addr)) 193 if err != nil { 194 return nil, err 195 } 196 197 u, err := url.Parse("./SecureTokenService") 198 if err != nil { 199 return nil, err 200 } 201 202 serviceClient := &SecureTokenServiceClient{ 203 httpclient: client, 204 prefix: base.ResolveReference(u).String(), 205 } 206 serviceClient.AddPlugins(plugins...) 207 return serviceClient, nil 208 } 209 func (c *SecureTokenServiceClient) ExchangeSSH(ctx context.Context, in *ExchangeSSHKeyRequest) (*ExchangeSSHKeyResponse, error) { 210 out := new(ExchangeSSHKeyResponse) 211 err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/ExchangeSSH"}, ""), in, out) 212 return out, err 213 } 214 215 // server implementation 216 217 type SecureTokenServiceServerOption func(s *SecureTokenServiceServer) 218 219 func WithUnknownFieldsForSecureTokenServiceServer() SecureTokenServiceServerOption { 220 return func(s *SecureTokenServiceServer) { 221 s.allowUnknownFields = true 222 } 223 } 224 225 func NewSecureTokenServiceServer(handler SecureTokenService, opts ...SecureTokenServiceServerOption) http.Handler { 226 srv := &SecureTokenServiceServer{ 227 handler: handler, 228 } 229 230 for i := range opts { 231 opts[i](srv) 232 } 233 234 service := ranger.Service{ 235 Name: "SecureTokenService", 236 Methods: map[string]ranger.Method{ 237 "ExchangeSSH": srv.ExchangeSSH, 238 }, 239 } 240 return ranger.NewRPCServer(&service) 241 } 242 243 type SecureTokenServiceServer struct { 244 handler SecureTokenService 245 allowUnknownFields bool 246 } 247 248 func (p *SecureTokenServiceServer) ExchangeSSH(ctx context.Context, reqBytes *[]byte) (pb.Message, error) { 249 var req ExchangeSSHKeyRequest 250 var err error 251 252 md, ok := metadata.FromIncomingContext(ctx) 253 if !ok { 254 return nil, errors.New("could not access header") 255 } 256 257 switch md.First("Content-Type") { 258 case "application/protobuf", "application/octet-stream", "application/grpc+proto": 259 err = pb.Unmarshal(*reqBytes, &req) 260 default: 261 // handle case of empty object 262 if len(*reqBytes) > 0 { 263 err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req) 264 } 265 } 266 267 if err != nil { 268 return nil, err 269 } 270 return p.handler.ExchangeSSH(ctx, &req) 271 }