annotate pkg/config/config.go @ 449:a74b8c2a4e75

Removed the command line option to publish tables with GeoServer. This is now done with configuration from the database.
author Sascha L. Teichmann <teichmann@intevation.de>
date Tue, 21 Aug 2018 20:43:42 +0200
parents ffdb507d5b42
children 8f3f7577fbe7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package config
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
3 import (
408
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
4 "crypto/sha256"
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
5 "fmt"
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
6 "log"
408
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
7 "sync"
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
8
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
9 homedir "github.com/mitchellh/go-homedir"
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
10 "github.com/spf13/cobra"
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
11 "github.com/spf13/viper"
408
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
12
414
c1047fd04a3a Moved project specific Go packages to new pkg folder.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 408
diff changeset
13 "gemma.intevation.de/gemma/pkg/common"
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
14 )
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
15
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
16 // This is not part of the persistent config.
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
17 var configFile string
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
18
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
19 func ConfigFile() string { return configFile }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
20
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
21 func DBHost() string { return viper.GetString("dbhost") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
22 func DBPort() uint { return uint(viper.GetInt32("dbport")) }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
23 func DBName() string { return viper.GetString("dbname") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
24 func DBSSLMode() string { return viper.GetString("dbssl") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
25 func SessionStore() string { return viper.GetString("sessions") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
26 func Web() string { return viper.GetString("web") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
27 func WebHost() string { return viper.GetString("host") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
28 func WebPort() uint { return uint(viper.GetInt32("port")) }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
29
431
7cd1536a6797 Replaced sys-admin db user with a metamorphic one.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 421
diff changeset
30 func MetamorphDBUser() string { return viper.GetString("metamorph-db-user") }
7cd1536a6797 Replaced sys-admin db user with a metamorphic one.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 421
diff changeset
31 func MetamorhpDBPassword() string { return viper.GetString("metamorph-db-password") }
386
999f4f83a072 Configure GeoServer via REST-API. TODO: Configure layers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 385
diff changeset
32
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
33 func MailHost() string { return viper.GetString("mail-host") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
34 func MailPort() uint { return uint(viper.GetInt32("mail-port")) }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
35 func MailUser() string { return viper.GetString("mail-user") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
36 func MailPassword() string { return viper.GetString("mail-password") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
37 func MailFrom() string { return viper.GetString("mail-from") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
38 func MailHelo() string { return viper.GetString("mail-helo") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
39
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
40 func AllowedOrigins() []string { return viper.GetStringSlice("allowed-origins") }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
41
421
c37457f12b8e Differ between internal and external proxies.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 414
diff changeset
42 func Proxies(key string) map[string]interface{} { return viper.GetStringMap(key) }
335
bd292a554b6e Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 332
diff changeset
43
385
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
44 func GeoServerURL() string { return viper.GetString("geoserver-url") }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
45 func GeoServerUser() string { return viper.GetString("geoserver-user") }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
46 func GeoServerPassword() string { return viper.GetString("geoserver-password") }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
47
408
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
48 var (
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
49 proxyKeyOnce sync.Once
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
50 proxyKey []byte
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
51
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
52 proxyPrefixOnce sync.Once
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
53 proxyPrefix string
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
54 )
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
55
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
56 func ProxyKey() []byte {
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
57 fetchKey := func() {
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
58 if proxyKey == nil {
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
59 key := []byte(viper.GetString("proxy-key"))
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
60 if len(key) == 0 {
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
61 key = common.GenerateRandomKey(64)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
62 }
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
63 hash := sha256.New()
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
64 hash.Write(key)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
65 proxyKey = hash.Sum(nil)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
66 }
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
67 }
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
68 proxyKeyOnce.Do(fetchKey)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
69 return proxyKey
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
70 }
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
71
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
72 func ProxyPrefix() string {
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
73 fetchPrefix := func() {
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
74 if proxyPrefix == "" {
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
75 proxyPrefix = fmt.Sprintf("http://%s:%d", WebHost(), WebPort())
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
76 }
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
77 }
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
78 proxyPrefixOnce.Do(fetchPrefix)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
79 return proxyPrefix
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
80 }
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
81
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
82 var RootCmd = &cobra.Command{
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
83 Use: "gemma",
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
84 Short: "gemma is a server for waterway monitoring and management",
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
85 }
119
29e56c342c9f Added first middleware for JWT token extraction. TODO: Add second one to check against logged in users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 28
diff changeset
86
385
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
87 var allowedOrigins = []string{
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
88 // TODO: Fill me!
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
89 }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
90
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
91 func init() {
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
92 cobra.OnInitialize(initConfig)
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
93 fl := RootCmd.PersistentFlags()
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
94 fl.StringVarP(&configFile, "config", "c", "", "config file (default is $HOME/.gemma.toml)")
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
95
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
96 vbind := func(name string) { viper.BindPFlag(name, fl.Lookup(name)) }
302
0777aa6de45b Password reset. Part I
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 221
diff changeset
97
385
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
98 str := func(name, value, usage string) {
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
99 fl.String(name, value, usage)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
100 vbind(name)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
101 }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
102 strP := func(name, shorthand, value, usage string) {
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
103 fl.StringP(name, shorthand, value, usage)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
104 vbind(name)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
105 }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
106 ui := func(name string, value uint, usage string) {
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
107 fl.Uint(name, value, usage)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
108 vbind(name)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
109 }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
110 uiP := func(name, shorthand string, value uint, usage string) {
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
111 fl.UintP(name, shorthand, value, usage)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
112 vbind(name)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
113 }
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
114 strSl := func(name string, value []string, usage string) {
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
115 fl.StringSlice(name, value, usage)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
116 vbind(name)
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
117 }
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
118
385
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
119 strP("dbhost", "H", "localhost", "host of the database")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
120 uiP("dbport", "P", 5432, "port of the database")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
121 strP("dbname", "d", "gemma", "name of the database")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
122 strP("dbssl", "S", "prefer", "SSL mode of the database")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
123
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
124 strP("sessions", "s", "", "path to the sessions file")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
125
394
f24ed1d570c7 server: add default value for serving "web".
Bernhard Reiter <bernhard@intevation.de>
parents: 386
diff changeset
126 strP("web", "w", "./web", "path to the web files")
385
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
127 strP("host", "o", "localhost", "host of the web app")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
128 uiP("port", "p", 8000, "port of the web app")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
129
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
130 str("mail-host", "localhost", "server to send mail with")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
131 ui("mail-port", 465, "port of server to send mail with")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
132 str("mail-user", "gemma", "user to send mail with")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
133 str("mail-password", "", "password of user to send mail with")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
134 str("mail-from", "noreplay@localhost", "from line of mails")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
135 str("mail-helo", "localhost", "name of server to send mail from.")
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
136
385
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
137 strSl("allowed-origins", allowedOrigins, "allow access for remote origins")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
138
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
139 str("geoserver-url", "http://localhost:8080/geoserver", "URL to GeoServer")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
140 str("geoserver-user", "admin", "GeoServer user")
3cfab707f909 Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 338
diff changeset
141 str("geoserver-password", "geoserver", "GeoServer password")
408
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
142
431
7cd1536a6797 Replaced sys-admin db user with a metamorphic one.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 421
diff changeset
143 str("metamorph-db-user", "", "Metamorphic database user")
7cd1536a6797 Replaced sys-admin db user with a metamorphic one.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 421
diff changeset
144 str("metamorph-db-password", "", "Metamorphic database user password")
7cd1536a6797 Replaced sys-admin db user with a metamorphic one.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 421
diff changeset
145
408
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
146 str("proxy-key", "", `signing key for proxy URLs. Defaults to random key.`)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
147 str("proxy-prefix", "", `URL prefix of proxy. Defaults to "http://${web-host}:${web-port}"`)
ac23905e64b1 Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 396
diff changeset
148
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
149 }
325
c23eb0f34e39 Added CORS support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 302
diff changeset
150
332
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
151 func initConfig() {
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
152 // Don't forget to read config either from cfgFile or from home directory!
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
153 if configFile != "" {
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
154 // Use config file from the flag.
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
155 viper.SetConfigFile(configFile)
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
156 } else {
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
157 // Find home directory.
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
158 home, err := homedir.Dir()
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
159 if err != nil {
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
160 log.Fatalf("error: %v\n", err)
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
161 }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
162
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
163 // Search config in home directory with name ".cobra" (without extension).
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
164 viper.AddConfigPath(home)
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
165 viper.SetConfigName(".gemma")
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
166 }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
167 if err := viper.ReadInConfig(); err != nil {
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
168 if _, ok := err.(viper.ConfigFileNotFoundError); ok && configFile == "" {
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
169 // Don't bother if not found.
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
170 return
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
171 }
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
172 log.Fatalf("Can't read config: %v\n", err)
394fafeb4052 Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 325
diff changeset
173 }
28
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
174 }