Mercurial > gemma
annotate pkg/config/config.go @ 2461:b60efa7d4cee
client: adjusted notification style
The notification style was still the default material design style provided by the plugin.
Now another default style is used and adjusted, to better fit the general application style.
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Mon, 04 Mar 2019 13:53:09 +0100 |
parents | bd09d6ad4c14 |
children | 0db742c7813d |
rev | line source |
---|---|
1017
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
1 // This is Free Software under GNU Affero General Public License v >= 3.0 |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
2 // without warranty, see README.md and license for details. |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
3 // |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
4 // SPDX-License-Identifier: AGPL-3.0-or-later |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
5 // License-Filename: LICENSES/AGPL-3.0.txt |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
6 // |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
7 // Copyright (C) 2018 by via donau |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
8 // – Österreichische Wasserstraßen-Gesellschaft mbH |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
9 // Software engineering by Intevation GmbH |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
10 // |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
11 // Author(s): |
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de> |
1317
5443f5c9154c
Added missing authors names in Go files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1017
diff
changeset
|
13 // * Bernhard E. Reiter <bernhard.reiter@intevation.de> |
1017
a244b18cb916
Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1000
diff
changeset
|
14 |
28
714787accd26
Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 package config |
714787accd26
Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
17 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
|
18 "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
|
19 "fmt" |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
20 "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
|
21 "sync" |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
22 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
23 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
|
24 "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
|
25 "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
|
26 |
414
c1047fd04a3a
Moved project specific Go packages to new pkg folder.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
408
diff
changeset
|
27 "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
|
28 ) |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
29 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
30 // 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
|
31 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
|
32 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
33 // DBHost is the hostname of the database. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
34 func DBHost() string { return viper.GetString("db-host") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
35 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
36 // DBPort is the port of the database. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
37 func DBPort() uint { return uint(viper.GetInt32("db-port")) } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
38 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
39 // DBName is the name of the database. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
40 func DBName() string { return viper.GetString("db-name") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
41 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
42 // DBUser is the name of the user to connect to the database. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
43 func DBUser() string { return viper.GetString("db-user") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
44 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
45 // DBPassword is the password to connect to the database. |
517
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
46 func DBPassword() string { return viper.GetString("db-password") } |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
47 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
48 // DBSSLMode selects the SSL mode to encrypt the connection to the database. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
49 func DBSSLMode() string { return viper.GetString("db-ssl") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
50 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
51 // SessionStore is the path to the session store. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
52 // If empty the session store is kept in memory only. |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
53 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
|
54 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
55 // Web is the root folder of the served web content. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
56 func Web() string { return viper.GetString("web") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
57 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
58 // WebHost is the host to bind the web server to. |
517
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
59 func WebHost() string { return viper.GetString("host") } |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
60 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
61 // WebPort is the port to bind the web server to. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
62 func WebPort() uint { return uint(viper.GetInt32("port")) } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
63 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
64 // MailHost is the server of the SMTP server. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
65 func MailHost() string { return viper.GetString("mail-host") } |
386
999f4f83a072
Configure GeoServer via REST-API. TODO: Configure layers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
385
diff
changeset
|
66 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
67 // MailPort is the port of the SMTP server. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
68 func MailPort() uint { return uint(viper.GetInt32("mail-port")) } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
69 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
70 // MailUser is the user to connect to the SMTP server. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
71 func MailUser() string { return viper.GetString("mail-user") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
72 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
73 // MailPassword is the password of the user to connect to the SMTP server. |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
74 func MailPassword() string { return viper.GetString("mail-password") } |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
75 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
76 // MailFrom is the sender in the 'from' header in mails send. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
77 func MailFrom() string { return viper.GetString("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
|
78 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
79 // MailHelo is the helo message send to the SMTP server. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
80 func MailHelo() string { return viper.GetString("mail-helo") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
81 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
82 // AllowedOrigins is a list of allowed host for CORS headers. |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
83 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
|
84 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
85 // GeoServerURL is the URL of the GeoServer used by gemma to serve map data. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
86 func GeoServerURL() string { return viper.GetString("geoserver-url") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
87 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
88 // GeoServerUser is the adminstrative user to connect to the GeoServer. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
89 func GeoServerUser() string { return viper.GetString("geoserver-user") } |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
90 |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
91 // GeoServerPassword is the password of the adminstrative user |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
92 // to connect to the GeoServer. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
93 func GeoServerPassword() string { return viper.GetString("geoserver-password") } |
335
bd292a554b6e
Made gemma a WFS proxy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
332
diff
changeset
|
94 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
95 // GeoServerClean is a flag to indicate that the GeoServer setup for |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
96 // gemma should be freshly created at boot time. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
97 // This is useful in case of gemma update. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
98 // If false the only missing parts are added to the GeoServer setup. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
99 // This should be the default mode when running gemma after an update |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
100 // as it reduces the pressure on the GeoServer and enables faster |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
101 // rebooting. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
102 func GeoServerClean() bool { return viper.GetBool("geoserver-clean") } |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
103 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
104 // TmpDir is the path where to store temporary files. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
105 // If left empty the system default for temporary files is used. |
958
2818ad6c7d32
Started with import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
874
diff
changeset
|
106 func TmpDir() string { return viper.GetString("tmp-dir") } |
2818ad6c7d32
Started with import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
874
diff
changeset
|
107 |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
108 var ( |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
109 proxyKeyOnce sync.Once |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
110 proxyKey []byte |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
111 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
|
112 proxyPrefix string |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
113 externalURLOnce sync.Once |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
114 externalURL string |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
115 ) |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
116 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
117 // ProxyKey is a crytographic key to sign the URLs generated by the proxy. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
118 // Use this to ensure that only known URLs are reachable over the proxy. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
119 // If left blank a random key is generated a gemma boot time. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
120 // Setting this value in the configuration will allow browsing proxy |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
121 // generated URL across gemma reboot. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
122 // Use a strong secret key here (like pwgen -s 20). |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
123 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
|
124 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
|
125 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
|
126 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
|
127 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
|
128 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
|
129 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
130 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
|
131 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
|
132 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
|
133 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
134 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
135 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
|
136 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
|
137 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
138 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
139 // ProxyPrefix is the prefix used in generated URLs by the proxy. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
140 // It defauls to http://${WebHost}:${WebPort}". |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
141 // You may need to set this if you run gemma behind a proxy |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
142 // on a specific domain. |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
143 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
|
144 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
|
145 if proxyPrefix == "" { |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
146 if proxyPrefix = viper.GetString("proxy-prefix"); proxyPrefix == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
147 proxyPrefix = fmt.Sprintf("http://%s:%d", WebHost(), WebPort()) |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
148 } |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
149 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
150 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
151 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
|
152 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
|
153 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
154 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
155 // ExternalURL is the URL to find this server from the outside. |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
156 // It defauls to http://${WebHost}:${WebPort}". |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
157 func ExternalURL() string { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
158 fetchExternal := func() { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
159 if externalURL == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
160 if externalURL = viper.GetString("external-url"); externalURL == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
161 externalURL = fmt.Sprintf("http://%s:%d", WebHost(), WebPort()) |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
162 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
163 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
164 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
165 externalURLOnce.Do(fetchExternal) |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
166 return externalURL |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
167 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
168 |
2181
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
169 // The root directories where to find schema files. |
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
170 func SchemaDirs() string { return viper.GetString("schema-dirs") } |
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
171 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
172 // RootCmd is cobra command to be bound th the cobra/viper infrastructure. |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
173 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
|
174 Use: "gemma", |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
175 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
|
176 } |
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
|
177 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
178 var allowedOrigins = []string{ |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
179 // TODO: Fill me! |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
180 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
181 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
182 func init() { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
183 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
|
184 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
|
185 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
|
186 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
187 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
|
188 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
189 str := func(name, value, usage string) { |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
190 fl.String(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
191 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
192 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
193 strP := func(name, shorthand, value, usage string) { |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
194 fl.StringP(name, shorthand, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
195 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
196 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
197 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
|
198 fl.Uint(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
199 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
200 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
201 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
|
202 fl.UintP(name, shorthand, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
203 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
204 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
205 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
|
206 fl.StringSlice(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
207 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
208 } |
874
da526b58c9c4
Added a flag geoserver-clean to force deletion of the gemma workspace before configuring the GeoServer again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
517
diff
changeset
|
209 bl := func(name string, value bool, usage string) { |
da526b58c9c4
Added a flag geoserver-clean to force deletion of the gemma workspace before configuring the GeoServer again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
517
diff
changeset
|
210 fl.Bool(name, value, usage) |
da526b58c9c4
Added a flag geoserver-clean to force deletion of the gemma workspace before configuring the GeoServer again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
517
diff
changeset
|
211 vbind(name) |
da526b58c9c4
Added a flag geoserver-clean to force deletion of the gemma workspace before configuring the GeoServer again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
517
diff
changeset
|
212 } |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
213 |
517
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
214 strP("db-host", "H", "localhost", "host of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
215 uiP("db-port", "P", 5432, "port of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
216 strP("db-name", "d", "gemma", "name of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
217 str("db-user", "meta_login", "Metamorphic database user") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
218 str("db-password", "", "Metamorphic database user password") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
219 strP("db-ssl", "S", "prefer", "SSL mode of the database") |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
220 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
221 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
|
222 |
394
f24ed1d570c7
server: add default value for serving "web".
Bernhard Reiter <bernhard@intevation.de>
parents:
386
diff
changeset
|
223 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
|
224 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
|
225 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
|
226 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
227 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
|
228 ui("mail-port", 465, "port of server to send mail with") |
517
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
229 str("mail-user", "gemma", "user to authenticate against mail-host.\n"+ |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
230 "Leave empty for trying to send without auth.") |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
231 str("mail-password", "", "password of user to send mail with") |
489
8f3f7577fbe7
proxy: fix minor typo in default for --mail-from
Bernhard Reiter <bernhard@intevation.de>
parents:
449
diff
changeset
|
232 str("mail-from", "noreply@localhost", "from line of mails") |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
233 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
|
234 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
235 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
|
236 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
237 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
|
238 str("geoserver-user", "admin", "GeoServer user") |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
239 str("geoserver-password", "geoserver", "GeoServer password") |
874
da526b58c9c4
Added a flag geoserver-clean to force deletion of the gemma workspace before configuring the GeoServer again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
517
diff
changeset
|
240 bl("geoserver-clean", false, "Clean GeoServer setup") |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
241 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
242 str("proxy-key", "", "signing key for proxy URLs.\n"+ |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
243 "Defaults to random key.") |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
244 str("proxy-prefix", "", "URL prefix of proxy.\n"+ |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
245 "Defaults to 'http://${web-host}:${web-port}'") |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
246 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
247 str("external-url", "", "URL to find the server from the outside.\n"+ |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
248 "Defaults to 'http://${web-host}:${web-port}'") |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
249 |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
250 str("tmp-dir", "", "Temp directory of gemma server.\n"+ |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
251 "Defaults to system temp directory.") |
2181
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
252 |
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
253 str("schema-dirs", ".", "Directories to find XSD schema files in (recursive).") |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
254 } |
958
2818ad6c7d32
Started with import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
874
diff
changeset
|
255 |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
256 var ( |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
257 configCond = sync.NewCond(new(sync.Mutex)) |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
258 configReady bool |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
259 ) |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
260 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
261 // Ready tells if the configuration is ready to use.. |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
262 func Ready() { |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
263 configCond.L.Lock() |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
264 defer configCond.L.Unlock() |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
265 configReady = true |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
266 configCond.Broadcast() |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
267 } |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
268 |
1366
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
269 // WaitReady blocks until the configuration is ready to use. |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
270 // Call this if you have a go routine that needs configuration |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
271 // support. This guarantees that the initialization is done |
a25a4d4a3e6e
Backend: Added the internal api documentation of the config mechanism of the gemma server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1334
diff
changeset
|
272 // before accessing the configuration data. |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
273 func WaitReady() { |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
274 configCond.L.Lock() |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
275 defer configCond.L.Unlock() |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
276 for !configReady { |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
277 configCond.Wait() |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
278 } |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
279 } |
325
c23eb0f34e39
Added CORS support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
302
diff
changeset
|
280 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
281 func initConfig() { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
282 // 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
|
283 if configFile != "" { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
284 // 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
|
285 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
|
286 } else { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
287 // 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
|
288 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
|
289 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
|
290 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
|
291 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
292 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
293 // 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
|
294 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
|
295 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
|
296 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
297 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
|
298 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
|
299 // 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
|
300 return |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
301 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
302 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
|
303 } |
28
714787accd26
Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
304 } |