/
main.go
71 lines (59 loc) · 1.29 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package main
import (
"context"
"flag"
"log"
"os"
"runtime/pprof"
"time"
"github.com/spolu/warp"
"github.com/spolu/warp/daemon"
"github.com/spolu/warp/lib/errors"
"github.com/spolu/warp/lib/logging"
)
var lstFlag string
var prfFlag string
var crtFlag string
var keyFlag string
func init() {
flag.StringVar(&lstFlag, "listen",
":4242", "Address to listen on ([ip]:port), default: `:4242`")
flag.StringVar(&prfFlag, "cpuprofile",
"", "Enalbe CPU profiling and write to specified file")
flag.StringVar(&crtFlag, "cert",
"", "Use the specified cert file to accetpt connections over TLS")
flag.StringVar(&keyFlag, "key",
"", "Use the specified key file to accept connections over TLS")
if fl := log.Flags(); fl&log.Ltime != 0 {
log.SetFlags(fl | log.Lmicroseconds)
}
}
func main() {
if !flag.Parsed() {
flag.Parse()
}
if prfFlag != "" {
f, err := os.Create(prfFlag)
if err != nil {
log.Fatal(errors.Details(err))
}
go func() {
pprof.StartCPUProfile(f)
time.Sleep(10 * time.Second)
pprof.StopCPUProfile()
log.Fatal("OUT!")
}()
}
ctx := context.Background()
srv := daemon.NewSrv(
ctx,
lstFlag,
crtFlag,
keyFlag,
)
logging.Logf(ctx, "Started warpd: version=%s", warp.Version)
err := srv.Run(ctx)
if err != nil {
log.Fatal(errors.Details(err))
}
}