diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2017-02-19 23:28:33 +0000 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2017-02-20 22:13:56 +0000 |
commit | fb830dc3531904be0a58e2c4dd4638b390bbdab2 (patch) | |
tree | fa9dc298dc7463be55d66ea855d82b9d111382fe /cmd/cashierd/rpc.go | |
parent | eb57eaf30965ba24ff669d6f9c8d11cd24951777 (diff) |
Split the servers out of main
Diffstat (limited to 'cmd/cashierd/rpc.go')
-rw-r--r-- | cmd/cashierd/rpc.go | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/cmd/cashierd/rpc.go b/cmd/cashierd/rpc.go deleted file mode 100644 index ad8aa5d..0000000 --- a/cmd/cashierd/rpc.go +++ /dev/null @@ -1,68 +0,0 @@ -package main - -import ( - "log" - "net" - - "golang.org/x/net/context" - - "golang.org/x/oauth2" - - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/metadata" - - "github.com/nsheridan/cashier/lib" - "github.com/nsheridan/cashier/proto" -) - -type rpcServer struct{} - -type key int - -const usernameKey key = 0 - -func (s *rpcServer) Sign(ctx context.Context, req *proto.SignRequest) (*proto.SignResponse, error) { - username, ok := ctx.Value(usernameKey).(string) - if !ok { - return nil, grpc.Errorf(codes.InvalidArgument, "Error reading username") - } - cert, err := keysigner.SignUserKeyFromRPC(req, username) - if err != nil { - return nil, grpc.Errorf(codes.InvalidArgument, err.Error()) - } - if err := certstore.SetCert(cert); err != nil { - log.Printf("Error recording cert: %v", err) - } - resp := &proto.SignResponse{ - Cert: lib.GetPublicKey(cert), - } - return resp, nil -} - -func authInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { - md, ok := metadata.FromContext(ctx) - if !ok { - return nil, grpc.Errorf(codes.Unauthenticated, "request not authenticated") - } - switch md["security"][0] { - case "authorization": - token := &oauth2.Token{ - AccessToken: md["payload"][0], - } - if !authprovider.Valid(token) { - return nil, grpc.Errorf(codes.PermissionDenied, "access denied") - } - authprovider.Revoke(token) - ctx = context.WithValue(ctx, usernameKey, authprovider.Username(token)) - default: - return nil, grpc.Errorf(codes.InvalidArgument, "unknown argument") - } - return handler(ctx, req) -} - -func newGrpcServer(l net.Listener) { - serv := grpc.NewServer(grpc.UnaryInterceptor(authInterceptor)) - proto.RegisterSignerServer(serv, &rpcServer{}) - serv.Serve(l) -} |