8460: Check permissions.
[arvados.git] / services / ws / main.go
1 package main
2
3 import (
4         "flag"
5         "fmt"
6         "log"
7         "net/http"
8         "time"
9
10         "git.curoverse.com/arvados.git/sdk/go/config"
11 )
12
13 var debugLogf = func(string, ...interface{}) {}
14
15 func main() {
16         configPath := flag.String("config", "/etc/arvados/ws/ws.yml", "`path` to config file")
17         dumpConfig := flag.Bool("dump-config", false, "show current configuration and exit")
18         cfg := DefaultConfig()
19         flag.Parse()
20
21         err := config.LoadFile(&cfg, *configPath)
22         if err != nil {
23                 log.Fatal(err)
24         }
25         if cfg.Debug {
26                 debugLogf = log.Printf
27         }
28
29         if *dumpConfig {
30                 txt, err := config.Dump(&cfg)
31                 if err != nil {
32                         log.Fatal(err)
33                 }
34                 fmt.Print(string(txt))
35                 return
36         }
37
38         eventSource := &pgEventSource{
39                 PgConfig:  cfg.Postgres,
40                 QueueSize: cfg.ServerEventQueue,
41         }
42         srv := &http.Server{
43                 Addr:           cfg.Listen,
44                 ReadTimeout:    time.Minute,
45                 WriteTimeout:   time.Minute,
46                 MaxHeaderBytes: 1 << 20,
47                 Handler: &router{
48                         Config:      &cfg,
49                         eventSource: eventSource,
50                 },
51         }
52         eventSource.NewSink().Stop()
53         log.Fatal(srv.ListenAndServe())
54 }