Mercurial > gemma
annotate pkg/config/config.go @ 5520:05db984d3db1
Improve performance of bottleneck area calculation
Avoid buffer calculations by replacing them with simple distance comparisons
and calculate the boundary of the result geometry only once per iteration.
In some edge cases with very large numbers of iterations, this reduced
the runtime of a bottleneck import by a factor of more than twenty.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 21 Oct 2021 19:50:39 +0200 |
parents | 5f47eeea988d |
children | 1222b777f51f |
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" |
5490
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
20 lg "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" |
5490
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
30 "gemma.intevation.de/gemma/pkg/log" |
332
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 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
33 // 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
|
34 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
|
35 |
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
|
36 // 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
|
37 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
|
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 // 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
|
40 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
|
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 // 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
|
43 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
|
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 // 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
|
46 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
|
47 |
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 // 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
|
49 func DBPassword() string { return viper.GetString("db-password") } |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
50 |
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
|
51 // 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
|
52 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
|
53 |
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 // 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
|
55 // 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
|
56 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
|
57 |
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
|
58 // 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
|
59 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
|
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 // 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
|
62 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
|
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 // 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
|
65 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
|
66 |
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 // 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
|
68 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
|
69 |
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
|
70 // 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
|
71 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
|
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 // 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
|
74 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
|
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 // 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
|
77 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
|
78 |
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 // 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
|
80 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
|
81 |
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
|
82 // 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
|
83 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
|
84 |
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 // 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
|
86 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
|
87 |
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
|
88 // 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
|
89 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
|
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 // 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
|
92 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
|
93 |
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 // 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
|
95 // 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
|
96 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
|
97 |
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
|
98 // 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
|
99 // 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
|
100 // 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
|
101 // 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
|
102 // 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
|
103 // 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
|
104 // 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
|
105 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
|
106 |
4624
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
107 // GeoServerStartupSQL can be used to add SQL commands to GeoServers database |
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
108 // session start script. See |
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
109 // https://docs.geoserver.org/stable/en/user/data/database/sqlsession.html |
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
110 // Note that the commands will be executed as the user configured as 'db-user'. |
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
111 func GeoServerStartupSQL() string { |
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
112 return viper.GetString("geoserver-startup-sql") |
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
113 } |
209b10f7bb2c
Add config for GeoServer database session startup SQL
Tom Gottfried <tom@intevation.de>
parents:
3582
diff
changeset
|
114 |
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
|
115 // 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
|
116 // 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
|
117 func TmpDir() string { return viper.GetString("tmp-dir") } |
2818ad6c7d32
Started with import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
874
diff
changeset
|
118 |
3104
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
119 // 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
|
120 // 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
|
121 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
|
122 |
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
|
123 // 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
|
124 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
|
125 |
5321
0919946f624b
Added a report controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4624
diff
changeset
|
126 // ReportPath is a path where report templates are stored. |
0919946f624b
Added a report controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4624
diff
changeset
|
127 func ReportPath() string { return viper.GetString("report-path") } |
0919946f624b
Added a report controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4624
diff
changeset
|
128 |
5490
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
129 // LogFile is the path to the log file. |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
130 func LogFile() string { return viper.GetString("log-file") } |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
131 |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
132 // LogLevel is the log level of the application. |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
133 func LogLevel() log.LogLevel { return log.ParseLogLevel(viper.GetString("log-level")) } |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
134 |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
135 var ( |
2639
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
136 proxyKeyOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
137 proxyKey []byte |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
138 proxyPrefixOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
139 proxyPrefix string |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
140 externalURLOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
141 externalURL string |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
142 sessionTimeoutOnce sync.Once |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
143 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
|
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 |
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
|
146 // 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
|
147 // 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
|
148 // 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
|
149 // 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
|
150 // 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
|
151 // 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
|
152 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
|
153 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
|
154 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
|
155 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
|
156 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
|
157 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
|
158 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
159 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
|
160 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
|
161 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
|
162 } |
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 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
|
165 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
|
166 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
167 |
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
|
168 // 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
|
169 // 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
|
170 // 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
|
171 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
|
172 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
|
173 if proxyPrefix == "" { |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
174 if proxyPrefix = viper.GetString("proxy-prefix"); proxyPrefix == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
175 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
|
176 } |
408
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
177 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
178 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
179 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
|
180 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
|
181 } |
ac23905e64b1
Improve WFS proxy a lot. It now generates signed re-writings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
396
diff
changeset
|
182 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
183 // 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
|
184 func ExternalURL() string { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
185 fetchExternal := func() { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
186 if externalURL == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
187 if externalURL = viper.GetString("external-url"); externalURL == "" { |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
188 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
|
189 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
190 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
191 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
192 externalURLOnce.Do(fetchExternal) |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
193 return externalURL |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
194 } |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
195 |
2639
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
196 // 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
|
197 func SessionTimeout() time.Duration { |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
198 fetchTimeout := func() { |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
199 if sessionTimeout == 0 { |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
200 sessionTimeout = viper.GetDuration("session-timeout") |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
201 if sessionTimeout <= 0 { |
5490
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
202 lg.Println("warn: non-positive session-timeout configured.") |
2639
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
203 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
204 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
205 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
206 sessionTimeoutOnce.Do(fetchTimeout) |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
207 return sessionTimeout |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
208 } |
0db742c7813d
Make session timeout configurable
Tom Gottfried <tom@intevation.de>
parents:
2181
diff
changeset
|
209 |
2906
ae678f7cf938
Removed irritatting parts from config doc strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2901
diff
changeset
|
210 // 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
|
211 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
|
212 |
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
|
213 // 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
|
214 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
|
215 Use: "gemma", |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
216 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
|
217 } |
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
|
218 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
219 var allowedOrigins = []string{ |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
220 // TODO: Fill me! |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
221 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
222 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
223 func init() { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
224 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
|
225 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
|
226 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
|
227 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
228 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
|
229 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
230 str := func(name, value, usage string) { |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
231 fl.String(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
232 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
233 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
234 strP := func(name, shorthand, value, usage string) { |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
235 fl.StringP(name, shorthand, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
236 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
237 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
238 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
|
239 fl.Uint(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
240 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
241 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
242 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
|
243 fl.UintP(name, shorthand, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
244 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
245 } |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
246 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
|
247 fl.StringSlice(name, value, usage) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
248 vbind(name) |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
249 } |
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
|
250 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
|
251 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
|
252 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
|
253 } |
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
|
254 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
|
255 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
|
256 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
|
257 } |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
258 |
517
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
259 strP("db-host", "H", "localhost", "host of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
260 uiP("db-port", "P", 5432, "port of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
261 strP("db-name", "d", "gemma", "name of the database") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
262 str("db-user", "meta_login", "Metamorphic database user") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
263 str("db-password", "", "Metamorphic database user password") |
7e45aaec7081
Consolidate configuration parameters.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
496
diff
changeset
|
264 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
|
265 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
266 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
|
267 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
|
268 |
394
f24ed1d570c7
server: add default value for serving "web".
Bernhard Reiter <bernhard@intevation.de>
parents:
386
diff
changeset
|
269 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
|
270 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
|
271 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
|
272 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
273 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
|
274 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
|
275 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
|
276 "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
|
277 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
|
278 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
|
279 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
|
280 |
385
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
281 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
|
282 |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
283 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
|
284 str("geoserver-user", "admin", "GeoServer user") |
3cfab707f909
Added config parameters for GeoServer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
338
diff
changeset
|
285 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
|
286 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
|
287 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
288 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
|
289 "Defaults to random key.") |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
290 str("proxy-prefix", "", "URL prefix of proxy.\n"+ |
2901
da1d063ee085
improve cmd/gemma/gemma --help
Bernhard Reiter <bernhard@intevation.de>
parents:
2639
diff
changeset
|
291 "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
|
292 |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
293 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
|
294 "Defaults to 'http://${host}:${port}'") |
1644
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
295 |
eadf84bb0e98
New config variable 'external-url'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1366
diff
changeset
|
296 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
|
297 "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
|
298 |
bd09d6ad4c14
SOAP: Add validating parser (uses 'xmllint') for manual uploads.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1644
diff
changeset
|
299 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
|
300 |
19fc84a98479
Added "published-config" field to configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2906
diff
changeset
|
301 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
|
302 |
5321
0919946f624b
Added a report controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4624
diff
changeset
|
303 str("report-path", "", "path to a report templates.") |
0919946f624b
Added a report controller.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4624
diff
changeset
|
304 |
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
|
305 d("soap-timeout", 3*time.Minute, "Timeout till a SOAP request is canceled.") |
5490
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
306 |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
307 str("log-file", "", "path to a file to log to.") |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
308 str("log-level", log.InfoLogLevel.String(), "path to a file to log to.") |
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
309 |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
310 } |
958
2818ad6c7d32
Started with import queue.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
874
diff
changeset
|
311 |
1000
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
312 var ( |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
313 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
|
314 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
|
315 ) |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
316 |
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
|
317 // 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
|
318 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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 } |
14425e35e3c2
Wait with start of import queue until configuration is fully loaded.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
958
diff
changeset
|
324 |
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
|
325 // 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
|
326 // 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
|
327 // 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
|
328 // 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
|
329 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
|
330 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
|
331 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
|
332 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
|
333 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
|
334 } |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
335 } |
325
c23eb0f34e39
Added CORS support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
302
diff
changeset
|
336 |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
337 func initConfig() { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
338 // 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
|
339 if configFile != "" { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
340 // 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
|
341 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
|
342 } else { |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
343 // 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
|
344 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
|
345 if err != nil { |
5490
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
346 lg.Fatalf("error: %v\n", err) |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
347 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
348 |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
349 // 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
|
350 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
|
351 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
|
352 } |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
353 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
|
354 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
|
355 // 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
|
356 return |
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
357 } |
5490
5f47eeea988d
Use own logging package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5321
diff
changeset
|
358 lg.Fatalf("Can't read config: %v\n", err) |
332
394fafeb4052
Use viper as config storage (I don't like it).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
325
diff
changeset
|
359 } |
28
714787accd26
Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
360 } |