All checks were successful
Build (artifact) / build (push) Has been skipped
44 lines
888 B
Go
44 lines
888 B
Go
package executor
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"sync"
|
|
|
|
pb "git.nevets.tech/Steven/certman/proto/v1"
|
|
"github.com/coreos/go-systemd/v22/activation"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
type Server struct {
|
|
listener net.Listener
|
|
wg sync.WaitGroup
|
|
}
|
|
|
|
func (s *Server) Start() error {
|
|
listeners, err := activation.Listeners()
|
|
if err != nil {
|
|
return fmt.Errorf("systemd activation listeners: %v", err)
|
|
}
|
|
if len(listeners) != 1 {
|
|
return fmt.Errorf("systemd activation listeners: expected 1, got %d", len(listeners))
|
|
}
|
|
|
|
s.listener = listeners[0]
|
|
srv := grpc.NewServer()
|
|
pb.RegisterHookServiceServer(srv, &hookServer{})
|
|
|
|
err = srv.Serve(s.listener)
|
|
if err != nil {
|
|
return fmt.Errorf("error creating grpc listener: %v", err)
|
|
}
|
|
fmt.Printf("Started gRPC server on %s\n", s.listener.Addr())
|
|
return nil
|
|
}
|
|
|
|
func (s *Server) Stop() {
|
|
if s.listener != nil {
|
|
_ = s.listener.Close()
|
|
}
|
|
}
|