diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 52 |
1 files changed, 14 insertions, 38 deletions
@@ -1,44 +1,19 @@ | |||
1 | package main | 1 | package main |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | ||
5 | "log" | 4 | "log" |
6 | "os" | 5 | "os" |
7 | "strconv" | ||
8 | 6 | ||
9 | "github.com/gin-gonic/gin" | 7 | "github.com/gin-gonic/gin" |
10 | "github.com/spf13/cobra" | 8 | "github.com/spf13/cobra" |
9 | "github.com/spf13/viper" | ||
11 | 10 | ||
11 | "code.crute.me/mcrute/go_ddns_manager/util" | ||
12 | "code.crute.me/mcrute/go_ddns_manager/web" | 12 | "code.crute.me/mcrute/go_ddns_manager/web" |
13 | "code.crute.me/mcrute/go_ddns_manager/web/controllers" | 13 | "code.crute.me/mcrute/go_ddns_manager/web/controllers" |
14 | "code.crute.me/mcrute/go_ddns_manager/web/middleware" | 14 | "code.crute.me/mcrute/go_ddns_manager/web/middleware" |
15 | ) | 15 | ) |
16 | 16 | ||
17 | // TODO: use from a common package | ||
18 | func MustGetString(c *cobra.Command, k string) string { | ||
19 | f := c.Flags().Lookup(k) | ||
20 | if f == nil { | ||
21 | panic(fmt.Errorf("No flag named %s", k)) | ||
22 | } | ||
23 | |||
24 | return f.Value.String() | ||
25 | } | ||
26 | |||
27 | // TODO: use from a common package | ||
28 | func MustGetBool(c *cobra.Command, k string) bool { | ||
29 | f := c.Flags().Lookup(k) | ||
30 | if f == nil { | ||
31 | panic(fmt.Errorf("No flag named %s", k)) | ||
32 | } | ||
33 | |||
34 | t, err := strconv.ParseBool(f.Value.String()) | ||
35 | if err != nil { | ||
36 | panic(err) | ||
37 | } | ||
38 | |||
39 | return t | ||
40 | } | ||
41 | |||
42 | func makeServer(cfg *web.ServerConfig) *gin.Engine { | 17 | func makeServer(cfg *web.ServerConfig) *gin.Engine { |
43 | router := gin.Default() | 18 | router := gin.Default() |
44 | router.Use(middleware.ConfigContextMiddleware(cfg)) | 19 | router.Use(middleware.ConfigContextMiddleware(cfg)) |
@@ -68,9 +43,9 @@ func main() { | |||
68 | Args: cobra.MinimumNArgs(1), | 43 | Args: cobra.MinimumNArgs(1), |
69 | Run: func(cmd *cobra.Command, args []string) { | 44 | Run: func(cmd *cobra.Command, args []string) { |
70 | cfg, err := web.LoadServerConfig( | 45 | cfg, err := web.LoadServerConfig( |
71 | MustGetString(cmd, "zones-config"), | 46 | viper.GetString("zones-config"), |
72 | MustGetString(cmd, "auth-config"), | 47 | viper.GetString("auth-config"), |
73 | MustGetString(cmd, "view-name"), | 48 | viper.GetString("view-name"), |
74 | args[0], | 49 | args[0], |
75 | ) | 50 | ) |
76 | if err != nil { | 51 | if err != nil { |
@@ -78,18 +53,19 @@ func main() { | |||
78 | os.Exit(1) | 53 | os.Exit(1) |
79 | } | 54 | } |
80 | 55 | ||
81 | web.GinRun( | 56 | util.GinRun( |
82 | makeServer(cfg), | 57 | makeServer(cfg), |
83 | MustGetBool(cmd, "debug"), | 58 | viper.GetBool("debug"), |
84 | MustGetString(cmd, "listen")) | 59 | viper.GetString("listen")) |
85 | }, | 60 | }, |
86 | } | 61 | } |
87 | 62 | ||
88 | cmd.Flags().StringP("zones-config", "z", "cfg/zones.conf", "Bind key and zones config file") | 63 | util.WrapViper(cmd, "DNS_MANAGE"). |
89 | cmd.Flags().StringP("auth-config", "a", "cfg/server_auth.json", "Server auth configuration file") | 64 | BindString("zones-config", "z", "cfg/zones.conf", "Bind key and zones config file"). |
90 | cmd.Flags().StringP("view-name", "n", "external", "Name of view to update for ACME and DDNS") | 65 | BindString("auth-config", "a", "cfg/server_auth.json", "Server auth configuration file"). |
91 | cmd.Flags().StringP("listen", "l", ":9090", "Listen address and port") | 66 | BindString("view-name", "n", "external", "Name of view to update for ACME and DDNS"). |
92 | cmd.Flags().BoolP("debug", "d", false, "Run server in debug mode with debug logs") | 67 | BindString("listen", "l", ":9090", "Listen address and port"). |
68 | BindBool("debug", "d", false, "Run server in debug mode with debug logs") | ||
93 | 69 | ||
94 | if err := cmd.Execute(); err != nil { | 70 | if err := cmd.Execute(); err != nil { |
95 | log.Println(err) | 71 | log.Println(err) |