annotate cmd/tokenserver/main.go @ 170:9f1b84b712a8

fix: updated API spec
author Thomas Junk <thomas.junk@intevation.de>
date Tue, 10 Jul 2018 12:03:33 +0200
parents 3349bfc2a047
children fe3a88f00b0a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package main
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import (
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
4 "context"
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
5 "encoding/json"
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 "flag"
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 "fmt"
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 "log"
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 "net/http"
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
10 "os"
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
11 "os/signal"
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
12 "path/filepath"
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
13 "syscall"
2
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
14
125
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 15
diff changeset
15 "gemma.intevation.de/gemma/auth"
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 )
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
18 func sysAdmin(rw http.ResponseWriter, req *http.Request) {
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
19 session, _ := auth.GetSession(req)
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
20 rw.Header().Set("Content-Type", "text/plain")
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
21 fmt.Fprintf(rw, "%s is a sys_admin\n", session.User)
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
22 }
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
23
127
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
24 func renew(rw http.ResponseWriter, req *http.Request) {
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
25 token, _ := auth.GetToken(req)
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
26 newToken, err := auth.ConnPool.Renew(token)
127
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
27 switch {
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
28 case err == auth.ErrNoSuchToken:
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
29 http.NotFound(rw, req)
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
30 return
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
31 case err != nil:
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
32 http.Error(rw, fmt.Sprintf("error: %v", err), http.StatusInternalServerError)
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
33 return
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
34 }
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
35
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
36 session, _ := auth.GetSession(req)
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
37
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
38 var result = struct {
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
39 Token string `json:"token"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
40 Expires int64 `json:"expires"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
41 User string `json:"user"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
42 Roles []string `json:"roles"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
43 }{
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
44 Token: newToken,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
45 Expires: session.ExpiresAt,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
46 User: session.User,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
47 Roles: session.Roles,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
48 }
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
49
127
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
50 rw.Header().Set("Content-Type", "text/plain")
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
51 if err := json.NewEncoder(rw).Encode(&result); err != nil {
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
52 log.Printf("error: %v\n", err)
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
53 }
127
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
54 }
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
55
126
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
56 func logout(rw http.ResponseWriter, req *http.Request) {
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
57 token, _ := auth.GetToken(req)
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
58 deleted := auth.ConnPool.Delete(token)
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
59 if !deleted {
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
60 http.NotFound(rw, req)
127
44794c641277 Implemented explicit token renewal under endpoint /api/renew.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 126
diff changeset
61 return
126
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
62 }
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
63 rw.Header().Set("Content-Type", "text/plain")
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
64 fmt.Fprintln(rw, "token deleted")
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
65 }
89cf2e7672ff Implemented an explicit token deletion under endpoint /api/logout.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 125
diff changeset
66
2
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
67 func token(rw http.ResponseWriter, req *http.Request) {
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
68 user := req.FormValue("user")
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
69 password := req.FormValue("password")
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
70
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
71 token, session, err := auth.GenerateSession(user, password)
2
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
72
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
73 if err != nil {
125
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 15
diff changeset
74 http.Error(rw, fmt.Sprintf("error: %v", err), http.StatusInternalServerError)
2
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
75 return
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
76 }
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
77
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
78 var result = struct {
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
79 Token string `json:"token"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
80 Expires int64 `json:"expires"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
81 User string `json:"user"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
82 Roles []string `json:"roles"`
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
83 }{
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
84 Token: token,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
85 Expires: session.ExpiresAt,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
86 User: session.User,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
87 Roles: session.Roles,
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
88 }
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
89
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
90 rw.Header().Set("Content-Type", "application/json")
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
91 if err := json.NewEncoder(rw).Encode(&result); err != nil {
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
92 log.Printf("error: %v\n", err)
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
93 }
2
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
94 }
9c6f68a8e8b2 Demo generation of tokens.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1
diff changeset
95
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 func main() {
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
97 port := flag.Int("port", 8000, "port to listen at.")
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 host := flag.String("host", "localhost", "host to listen at.")
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 flag.Parse()
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
100 p, _ := filepath.Abs("./web")
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 mux := http.NewServeMux()
3
1597506a2241 merge with vue-cli
Thomas Junk <thomas.junk@intevation.de>
parents: 2
diff changeset
102 mux.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir(p))))
15
05d828374256 Reverted to previous setup of /api prefixing only the token route
Thomas Junk <thomas.junk@intevation.de>
parents: 14
diff changeset
103 mux.HandleFunc("/api/token", token)
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
104 mux.Handle("/api/logout", auth.SessionMiddleware(http.HandlerFunc(token)))
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
105 mux.Handle("/api/renew", auth.SessionMiddleware(http.HandlerFunc(renew)))
128
441a8ee637c5 Added claims checker + example.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 127
diff changeset
106 mux.Handle("/api/sys_admin",
134
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
107 auth.SessionMiddleware(
0c56c56a1c44 Removed the JWT layer from the session management.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 128
diff changeset
108 auth.SessionChecker(http.HandlerFunc(sysAdmin), auth.HasRole("sys_admin"))))
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 addr := fmt.Sprintf("%s:%d", *host, *port)
151
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
111
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
112 server := http.Server{Addr: addr, Handler: mux}
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
113
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
114 done := make(chan error)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
115
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
116 go func() {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
117 defer close(done)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
118 done <- server.ListenAndServe()
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
119 }()
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
120
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
121 sigChan := make(chan os.Signal)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
122 signal.Notify(sigChan, os.Interrupt, os.Kill, syscall.SIGTERM)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
123
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
124 select {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
125 case err := <-done:
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
126 if err != nil && err != http.ErrServerClosed {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
127 log.Fatalf("error: %v\n", err)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
128 }
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
129 case <-sigChan:
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
130 }
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
131
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
132 server.Shutdown(context.Background())
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
133
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
134 <-done
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
135
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
136 if err := auth.ConnPool.Shutdown(); err != nil {
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
137 log.Fatalf("error: %v\n", err)
3349bfc2a047 Shutdown server gracefully.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 134
diff changeset
138 }
1
0e1d0c00bc74 Useless webserver to test go-gettablity.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 }