Skip to content

Commit 2224d2e

Browse files
committed
Allow to configure some basic Django settings through environment variables
1 parent 9a9801a commit 2224d2e

3 files changed

Lines changed: 63 additions & 3 deletions

File tree

1.3/settings.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,19 @@
131131

132132
## String settings
133133
STRING_SETTINGS = (
134+
"CSRF_COOKIE_NAME",
135+
"EMAIL_HOST",
136+
"EMAIL_HOST_PASSWORD",
137+
"EMAIL_HOST_USER",
134138
"FIWARE_IDM_SERVER",
135139
"FIWARE_IDM_PUBLIC_URL",
136140
"SOCIAL_AUTH_FIWARE_KEY",
137141
"SOCIAL_AUTH_FIWARE_SECRET",
138142
"KEYCLOAK_SERVER",
139143
"KEYCLOAK_REALM",
140144
"KEYCLOAK_KEY",
145+
"SECRET_KEY",
146+
"SESSION_COOKIE_NAME",
141147
"SOCIAL_AUTH_KEYCLOAK_KEY",
142148
"SOCIAL_AUTH_KEYCLOAK_SECRET",
143149
)
@@ -146,9 +152,28 @@
146152
if value != "":
147153
locals()[setting] = value
148154

155+
## Number settings
156+
NUMBER_SETTINGS = (
157+
"CSRF_COOKIE_AGE",
158+
"EMAIL_PORT",
159+
"SESSION_COOKIE_AGE",
160+
)
161+
for setting in NUMBER_SETTINGS:
162+
value = os.environ.get(setting, "").strip()
163+
try:
164+
locals()[setting] = int(value)
165+
except ValueError:
166+
pass
167+
149168
## Boolean settings
150169
BOOLEAN_SETTINGS = (
170+
"CSRF_COOKIE_HTTPONLY",
171+
"CSRF_COOKIE_SECURE",
172+
"EMAIL_USE_TLS",
173+
"EMAIL_USE_SSL",
151174
"KEYCLOAK_GLOBAL_ROLE",
175+
"SESSION_COOKIE_HTTPONLY",
176+
"SESSION_COOKIE_SECURE",
152177
)
153178
for setting in BOOLEAN_SETTINGS:
154179
value = os.environ.get(setting, "").strip()
@@ -158,7 +183,7 @@
158183

159184
# FIWARE & Keycloak configuration
160185
IDM_AUTH = 'fiware' if "FIWARE_IDM_SERVER" in locals() and "SOCIAL_AUTH_FIWARE_KEY" in locals() and "SOCIAL_AUTH_FIWARE_SECRET" in locals() else None
161-
IDM_AUTH = 'keycloak' if "KEYCLOAK_IDM_SERVER" in locals() and "KEYCLOAK_REALM" in locals() and "KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_SECRET" in locals() else IDM_AUTH
186+
IDM_AUTH = 'keycloak' if "KEYCLOAK_SERVER" in locals() and "KEYCLOAK_REALM" in locals() and "KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_SECRET" in locals() else IDM_AUTH
162187

163188
if IDM_AUTH == 'fiware':
164189
INSTALLED_APPS += (

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ The following environment variables are also honored for configuring your WireCl
3131
mode. Debug mode should be enabled for running WireCloud in standalone mode)
3232
- `-e LOGLEVEL=...` (defaults to "INFO")
3333
- `-e ALLOWED_HOSTS=...` (defaults to "*", whitespace whitespace-separated list
34-
of allowed hosts. See [django documentation][ALLOWED_HOSTS] for more
34+
of allowed hosts. See [Django documentation][ALLOWED_HOSTS] for more
3535
details)
3636
- `-e DEFAULT_LANGUAGE=...` (defaults to "browser", see
3737
[documentation][DEFAULT_LANGUAGE] for more details)
@@ -68,12 +68,22 @@ The following environment variables are also honored for configuring your WireCl
6868
- `-e SOCIAL_AUTH_KEYCLOAK_KEY=...` (defaults to nothing)
6969
- `-e SOCIAL_AUTH_KEYCLOAK_SECRET=...` (defaults to nothing)
7070

71+
In addition to those environment variables, this docker image also allows you to
72+
configure the following Django settings using environment variables with the
73+
same name: `CSRF_COOKIE_AGE`, `CSRF_COOKIE_HTTPONLY`, `CSRF_COOKIE_NAME`,
74+
`CSRF_COOKIE_SECURE`, `EMAIL_HOST`, `EMAIL_HOST_PASSWORD`, `EMAIL_PORT`,
75+
`EMAIL_HOST_USER`, `EMAIL_USE_SSL`, `EMAIL_USE_TLS`, `SECRET_KEY`,
76+
`SESSION_COOKIE_AGE`, `SESSION_COOKIE_NAME`, `SESSION_COOKIE_HTTPONLY` and
77+
`SESSION_COOKIE_SECURE`. See [Django documentation](DJANGO_SETTINGS) for more
78+
details.
79+
7180
When running WireCloud with TLS behind a reverse proxy such as Apache/NGINX
7281
which is responsible for doing TLS termination, be sure to set
7382
the `X-Forwarded-Proto`, `X-Forwarded-Host` and `X-Forwarded-Port` headers
7483
appropriately.
7584

7685

86+
[DJANGO_SETTINGS]: https://docs.djangoproject.com/en/2.1/ref/settings/
7787
[ALLOWED_HOSTS]: https://docs.djangoproject.com/en/2.1/ref/settings/#allowed-hosts
7888
[DEFAULT_LANGUAGE]: https://wirecloud.readthedocs.io/en/stable/installation_guide/#default_language
7989
[LANGUAGE_CODE]: https://docs.djangoproject.com/en/2.1/ref/settings/#language-code

dev/settings.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,19 @@
130130

131131
## String settings
132132
STRING_SETTINGS = (
133+
"CSRF_COOKIE_NAME",
134+
"EMAIL_HOST",
135+
"EMAIL_HOST_PASSWORD",
136+
"EMAIL_HOST_USER",
133137
"FIWARE_IDM_SERVER",
134138
"FIWARE_IDM_PUBLIC_URL",
135139
"SOCIAL_AUTH_FIWARE_KEY",
136140
"SOCIAL_AUTH_FIWARE_SECRET",
137141
"KEYCLOAK_SERVER",
138142
"KEYCLOAK_REALM",
139143
"KEYCLOAK_KEY",
144+
"SECRET_KEY",
145+
"SESSION_COOKIE_NAME",
140146
"SOCIAL_AUTH_KEYCLOAK_KEY",
141147
"SOCIAL_AUTH_KEYCLOAK_SECRET",
142148
)
@@ -145,9 +151,28 @@
145151
if value != "":
146152
locals()[setting] = value
147153

154+
## Number settings
155+
NUMBER_SETTINGS = (
156+
"CSRF_COOKIE_AGE",
157+
"EMAIL_PORT",
158+
"SESSION_COOKIE_AGE",
159+
)
160+
for setting in NUMBER_SETTINGS:
161+
value = os.environ.get(setting, "").strip()
162+
try:
163+
locals()[setting] = int(value)
164+
except ValueError:
165+
pass
166+
148167
## Boolean settings
149168
BOOLEAN_SETTINGS = (
169+
"CSRF_COOKIE_HTTPONLY",
170+
"CSRF_COOKIE_SECURE",
171+
"EMAIL_USE_TLS",
172+
"EMAIL_USE_SSL",
150173
"KEYCLOAK_GLOBAL_ROLE",
174+
"SESSION_COOKIE_HTTPONLY",
175+
"SESSION_COOKIE_SECURE",
151176
)
152177
for setting in BOOLEAN_SETTINGS:
153178
value = os.environ.get(setting, "").strip()
@@ -157,7 +182,7 @@
157182

158183
# FIWARE & Keycloak configuration
159184
IDM_AUTH = 'fiware' if "FIWARE_IDM_SERVER" in locals() and "SOCIAL_AUTH_FIWARE_KEY" in locals() and "SOCIAL_AUTH_FIWARE_SECRET" in locals() else None
160-
IDM_AUTH = 'keycloak' if "KEYCLOAK_IDM_SERVER" in locals() and "KEYCLOAK_REALM" in locals() and "KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_SECRET" in locals() else IDM_AUTH
185+
IDM_AUTH = 'keycloak' if "KEYCLOAK_SERVER" in locals() and "KEYCLOAK_REALM" in locals() and "KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_SECRET" in locals() else IDM_AUTH
161186

162187
if IDM_AUTH == 'fiware':
163188
INSTALLED_APPS += (

0 commit comments

Comments
 (0)