pkiadm/cmd/pkiadmd/server.go

59 lines
1.3 KiB
Go

package main
import (
"log"
"sync"
"github.com/gibheer/pkiadm"
)
type (
Server struct {
storage *Storage
mu *sync.Mutex
}
)
func NewServer(storage *Storage) (*Server, error) {
return &Server{storage, &sync.Mutex{}}, nil
}
func (s *Server) lock() {
s.mu.Lock()
}
func (s *Server) unlock() {
s.mu.Unlock()
}
func (s *Server) store(res *pkiadm.Result) error {
if err := s.storage.store(); err != nil {
log.Printf("error when storing changes: %+v", err)
res.SetError(err, "could not save database")
}
return nil
}
func (s *Server) List(filter pkiadm.Filter, result *pkiadm.ResultResource) error {
for _, res := range s.storage.PrivateKeys {
result.Resources = append(result.Resources, res.Name())
}
for _, res := range s.storage.PublicKeys {
result.Resources = append(result.Resources, res.Name())
}
for _, res := range s.storage.Locations {
result.Resources = append(result.Resources, res.Name())
}
for _, res := range s.storage.Certificates {
result.Resources = append(result.Resources, res.Name())
}
for _, res := range s.storage.CSRs {
result.Resources = append(result.Resources, res.Name())
}
for _, res := range s.storage.Serials {
result.Resources = append(result.Resources, res.Name())
}
for _, res := range s.storage.Subjects {
result.Resources = append(result.Resources, res.Name())
}
return nil
}