@@ -2,48 +2,37 @@ package main
22
33import (
44 "context"
5- "flag"
65 "fmt"
76 "log/slog"
87 "os"
98 "os/signal"
10- gopath "path"
119 "syscall"
1210 "time"
1311
14- "github.com/bwesterb/mtc"
1512 "github.com/bwesterb/mtc/ca"
1613 "github.com/bwesterb/mtc/http"
1714 "golang.org/x/sync/errgroup"
1815)
1916
20- func main () {
21- var path , listenAddr string
22-
23- flag .StringVar (& path , "ca-path" , "." , "the path to the CA state. Defaults to the current directory." )
24- flag .StringVar (& listenAddr , "listen-addr" , "" , "the TCP address for the server to listen on, in the form 'host:port'." )
25- flag .Parse ()
17+ type Server struct {
18+ path string
19+ listenAddr string
20+ }
2621
27- if listenAddr == "" {
28- var p mtc.CAParams
29- buf , err := os .ReadFile (gopath .Join (path , "www" , "mtc" , "v1" , "ca-params" ))
30- if err != nil {
31- slog .Error ("failed to read ca-params" , slog .Any ("err" , err ))
32- os .Exit (1 )
33- }
34- if err := p .UnmarshalBinary (buf ); err != nil {
35- slog .Error ("failed to unmarshal ca-params" , slog .Any ("err" , err ))
36- os .Exit (1 )
37- }
38- listenAddr = p .HttpServer
22+ func NewServer (path , listenAddr string ) * Server {
23+ return & Server {
24+ path : path ,
25+ listenAddr : listenAddr ,
3926 }
27+ }
4028
29+ func (s * Server ) Serve () error {
4130 ctx , cancel := signal .NotifyContext (context .Background (), os .Interrupt , os .Kill , syscall .SIGQUIT , syscall .SIGTERM )
4231 defer cancel ()
4332
44- srv := http . NewServer ( path , listenAddr )
33+ slog . Info ( "Starting server" , slog . Any ( "listenAddr" , s . listenAddr ) )
4534
46- slog . Info ( "starting mtcd" )
35+ srv := http . NewServer ( s . path , s . listenAddr )
4736
4837 g , ctx := errgroup .WithContext (ctx )
4938
@@ -64,25 +53,20 @@ func main() {
6453 })
6554
6655 g .Go (func () error {
67- h , err := ca .Open (path )
68- if err != nil {
69- slog .Error ("could not start issuance loop" , slog .Any ("err" , err ))
70- return nil
71- }
72- h .Close ()
73- if err := issue (path , ctx ); err != nil {
56+ if err := issuanceLoop (s .path , ctx ); err != nil {
7457 return fmt .Errorf ("could not start issuance loop: %w" , err )
7558 }
7659 return nil
7760 })
7861
7962 if err := g .Wait (); err != nil {
80- slog .Info ("unexpected errgroup error, exiting" , slog .Any ("err" , err ))
81- os .Exit (1 )
63+ return fmt .Errorf ("unexpected errgroup error: %w" , err )
8264 }
65+
66+ return nil
8367}
8468
85- func issue (path string , ctx context.Context ) error {
69+ func issuanceLoop (path string , ctx context.Context ) error {
8670 h , err := ca .Open (path )
8771 if err != nil {
8872 return err
@@ -97,7 +81,7 @@ func issue(path string, ctx context.Context) error {
9781 batchTime := params .NextBatchAt (time .Now ())
9882 now := time .Now ()
9983 if batchTime .After (now ) {
100- slog .Info ("Sleeping until next batch" , slog .Any ("at" , batchTime .UTC ()))
84+ slog .Info ("Sleeping until next batch is ready to issue " , slog .Any ("at" , batchTime .UTC ()))
10185 select {
10286 case <- ctx .Done ():
10387 return nil
0 commit comments