Mercurial > gemma
annotate pkg/config/config.go @ 4606:dfe9cde6a20c geoserver_sql_views
Reflect database model changes for SQL views in backend
In principle, we could use many datasources with different database
schemas, but this would imply changing GeoServer initialization,
service filtering, endpoints and eventually more. Since we do not need
it, just hard-code the schema name as a constant.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 05 Sep 2019 12:23:31 +0200 |
parents | 317d176ef38c |
children | 209b10f7bb2c |
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 // |
2901
da1d063ee085
improve cmd/gemma/gemma --help
Bernhard Reiter <bernhard@intevation.de>
parents:
2639
diff
changeset
|
7 // Copyright (C) 2018, 2019 by via donau |
1017
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" |
2639
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
22 "time" |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
23 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
24 homedir "github.com/mitchellh/go-homedir" |
3161
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
25 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
26 "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
|
27 "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
|
28 |
414
c1047fd04a3a
Moved project specific Go packages to new pkg folder.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
408
diff
changeset
|
29 "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
|
30 ) |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
31 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
32 // 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
|
33 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
|
34 |
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
|
35 // 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
|
36 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
|
37 |
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 // 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
|
39 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
|
40 |
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 // 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
|
42 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
|
43 |
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 // 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
|
45 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
|
46 |
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
|
47 // 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
|
48 func DBPassword() string { return viper.GetString("db-password") } |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
49 |
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
|
50 // 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
|
51 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
|
52 |
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
|
53 // 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
|
54 // 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
|
55 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
|
56 |
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
|
57 // 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
|
58 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
|
59 |
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 // 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
|
61 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
|
62 |
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 // 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
|
64 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
|
65 |
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
|
66 // 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
|
67 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
|
68 |
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
|
69 // 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
|
70 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
|
71 |
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 // 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
|
73 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
|
74 |
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 // 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
|
76 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
|
77 |
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
|
78 // 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
|
79 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
|
80 |
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
|
81 // 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
|
82 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
|
83 |
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
|
84 // 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
|
85 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
|
86 |
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
|
87 // 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
|
88 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
|
89 |
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 // 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
|
91 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
|
92 |
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 // 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
|
94 // 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
|
95 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
|
96 |
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
|
97 // 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
|
98 // 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
|
99 // 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
|
100 // 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
|
101 // 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
|
102 // 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
|
103 // 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
|
104 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
|
105 |
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
|
106 // 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
|
107 // 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
|
108 func TmpDir() string { return viper.GetString("tmp-dir") } |
2818ad6c7d32
Started with import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
874
diff
changeset
|
109 |
3104
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
110 // PublishedConfig is a name of a JSON file where extra configuration is stored |
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
111 // to be served to to the web client. |
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
112 func PublishedConfig() string { return viper.GetString("published-config") } |
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
113 |
3161
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
114 // SOAPTimeout is the timeout till a SOAP request is canceled. |
3169
9128fdeba3bc
Consmetics: Adjusted config.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3162
diff
changeset
|
115 func SOAPTimeout() time.Duration { return viper.GetDuration("soap-timeout") } |
3161
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
116 |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
117 var ( |
2639
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
118 proxyKeyOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
119 proxyKey []byte |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
120 proxyPrefixOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
121 proxyPrefix string |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
122 externalURLOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
123 externalURL string |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
124 sessionTimeoutOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
125 sessionTimeout time.Duration |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
126 ) |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
127 |
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
|
128 // 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
|
129 // 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
|
130 // 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
|
131 // 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
|
132 // 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
|
133 // 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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 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
|
139 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
|
140 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
141 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
|
142 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
|
143 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
|
144 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
145 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
146 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
|
147 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
|
148 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
149 |
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
|
150 // 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
|
151 // 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
|
152 // 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
|
153 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
|
154 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
|
155 if proxyPrefix == "" { |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
156 if proxyPrefix = viper.GetString("proxy-prefix"); proxyPrefix == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
157 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
|
158 } |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
159 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
160 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
161 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
|
162 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
|
163 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
164 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
165 // 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
|
166 func ExternalURL() string { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
167 fetchExternal := func() { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
168 if externalURL == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
169 if externalURL = viper.GetString("external-url"); externalURL == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
170 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
|
171 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
172 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
173 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
174 externalURLOnce.Do(fetchExternal) |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
175 return externalURL |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
176 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
177 |
2639
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
178 // SessionTimeout is the duration until a session expires if not renewed |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
179 func SessionTimeout() time.Duration { |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
180 fetchTimeout := func() { |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
181 if sessionTimeout == 0 { |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
182 sessionTimeout = viper.GetDuration("session-timeout") |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
183 if sessionTimeout <= 0 { |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
184 log.Println("warn: non-positive session-timeout configured.") |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
185 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
186 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
187 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
188 sessionTimeoutOnce.Do(fetchTimeout) |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
189 return sessionTimeout |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
190 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
191 |
2906
ae678f7cf938
Removed irritatting parts from config doc strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2901
diff
changeset
|
192 // SchemaDirs are the root directories where to find schema files. |
2181
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
193 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
|
194 |
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
|
195 // 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
|
196 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
|
197 Use: "gemma", |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
198 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
|
199 } |
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
|
200 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
201 var allowedOrigins = []string{ |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
202 // TODO: Fill me! |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
203 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
204 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
205 func init() { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
206 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
|
207 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
|
208 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
|
209 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
210 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
|
211 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
212 str := func(name, value, usage string) { |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
213 fl.String(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
214 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
215 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
216 strP := func(name, shorthand, value, usage string) { |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
217 fl.StringP(name, shorthand, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
218 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
219 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
220 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
|
221 fl.Uint(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
222 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
223 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
224 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
|
225 fl.UintP(name, shorthand, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
226 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
227 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
228 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
|
229 fl.StringSlice(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
230 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
231 } |
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
|
232 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
|
233 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
|
234 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
|
235 } |
3161
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
236 d := func(name string, value time.Duration, usage string) { |
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
237 fl.Duration(name, value, usage) |
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
238 vbind(name) |
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
239 } |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
240 |
517
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
241 strP("db-host", "H", "localhost", "host of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
242 uiP("db-port", "P", 5432, "port of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
243 strP("db-name", "d", "gemma", "name of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
244 str("db-user", "meta_login", "Metamorphic database user") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
245 str("db-password", "", "Metamorphic database user password") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
246 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
|
247 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
248 strP("sessions", "s", "", "path to the sessions file") |
3162
659549608644
Config: Fixed type of session timeout (its a duration now ... as intended).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3161
diff
changeset
|
249 d("session-timeout", 3*time.Hour, "duration until sessions expire") |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
250 |
394
f24ed1d570c7
server: add default value for serving "web".
Bernhard Reiter <bernhard@intevation.de>
parents:
386
diff
changeset
|
251 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
|
252 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
|
253 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
|
254 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
255 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
|
256 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
|
257 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
|
258 "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
|
259 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
|
260 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
|
261 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
|
262 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
263 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
|
264 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
265 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
|
266 str("geoserver-user", "admin", "GeoServer user") |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
267 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
|
268 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
|
269 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
270 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
|
271 "Defaults to random key.") |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
272 str("proxy-prefix", "", "URL prefix of proxy.\n"+ |
2901
da1d063ee085
improve cmd/gemma/gemma --help
Bernhard Reiter <bernhard@intevation.de>
parents:
2639
diff
changeset
|
273 "Defaults to 'http://${host}:${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
|
274 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
275 str("external-url", "", "URL to find the server from the outside.\n"+ |
2901
da1d063ee085
improve cmd/gemma/gemma --help
Bernhard Reiter <bernhard@intevation.de>
parents:
2639
diff
changeset
|
276 "Defaults to 'http://${host}:${port}'") |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
277 |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
278 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
|
279 "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
|
280 |
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
281 str("schema-dirs", ".", "Directories to find XSD schema files in (recursive).") |
3104
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
282 |
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
283 str("published-config", "", "path to a config file served to client.") |
3161
6a44a89ffb51
SOAP: Added a globally configurable timeout (default 1min) till a SOAP request is canceled.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
284 |
3582
317d176ef38c
GM import: Try three times when timeouts happen on SOAP service. Increase SOAP timeout to 3 minutes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3169
diff
changeset
|
285 d("soap-timeout", 3*time.Minute, "Timeout till a SOAP request is canceled.") |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
286 } |
958
2818ad6c7d32
Started with import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
874
diff
changeset
|
287 |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
288 var ( |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
289 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
|
290 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
|
291 ) |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
292 |
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
|
293 // 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
|
294 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
|
295 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
|
296 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
|
297 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
|
298 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
|
299 } |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
300 |
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
|
301 // 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
|
302 // 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
|
303 // 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
|
304 // 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
|
305 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
|
306 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
|
307 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
|
308 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
|
309 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
|
310 } |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
311 } |
325
c23eb0f34e39
Added CORS support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
302
diff
changeset
|
312 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
313 func initConfig() { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
314 // 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
|
315 if configFile != "" { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
316 // 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
|
317 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
|
318 } else { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
319 // 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
|
320 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
|
321 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
|
322 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
|
323 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
324 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
325 // 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
|
326 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
|
327 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
|
328 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
329 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
|
330 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
|
331 // 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
|
332 return |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
333 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
334 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
|
335 } |
28
714787accd26
Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
336 } |