Skip to content

Commit 3f23007

Browse files
committed
Optimize application.yml
The background idea is to remove the amount of variables that need to be set. Many of them have sane defaults and others can be generalized when more general variables are set (e.g. FAF_DOMAIN). Before: 3 application.ymls: main/default: only fixed values are set dev: rebinding variables with defaults mostly pointing to localhost prod: only rebinding variable names After: main/default: fixed values and rebinding variable names with prod defaults local: fixed values mostly pointing to localhost
1 parent e4aad44 commit 3f23007

7 files changed

Lines changed: 164 additions & 105 deletions

File tree

configuration.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
| Env variable | Default value | Optional if env is defined | Default value (local) |
2+
| ---- | ---- | ---- | ---- |
3+
| ACTIVATION_URL_FORMAT | `https://www.${FAF_DOMAIN}/account/activate?username=%s&token=%s` | `FAF_DOMAIN` | `http://localhost:8020/account/activate?username=%s&token=%s` |
4+
| ANOPE_DATABASE_NAME | `faf-anope` | | |
5+
| API_PORT | `8010` | | |
6+
| API_PROFILE | `local` | | |
7+
| AVATAR_ALLOWED_FILE_EXTENSIONS | `png` | | `png` |
8+
| AVATAR_DOWNLOAD_URL_FORMAT | `https://content.${FAF_DOMAIN}/faf/avatars/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/faf/avatars/%s` |
9+
| AVATAR_IMAGE_HEIGHT | `20` | | |
10+
| AVATAR_IMAGE_WIDTH | `40` | | |
11+
| AVATAR_MAX_SIZE_BYTES | `4096` | | |
12+
| AVATAR_TARGET_DIRECTORY | `/content/avatars` | | `build/cache/avatars` |
13+
| CHALLONGE_KEY | | | |
14+
| CLAN_INVITE_LINK_EXPIRE_DURATION_MINUTES | `604800` | | |
15+
| CLAN_WEBSITE_URL_FORMAT | `https://clans.${FAF_DOMAIN}/clan/%s` | `FAF_DOMAIN` | `http://clans.test.faforever.com/clan/%s` |
16+
| CONTEXT_PATH | `/` | | |
17+
| DATABASE_ADDRESS | | | `127.0.0.1` |
18+
| DATABASE_NAME | | | `faf` |
19+
| DATABASE_PASSWORD | | | `banana` |
20+
| DATABASE_SCHEMA_VERSION | `122` | | |
21+
| DATABASE_USERNAME | | | `faf-java-api` |
22+
| EMAIL_FROM_ADDRESS | | | `faf@example.com` |
23+
| EMAIL_FROM_NAME | | | `FAForever` |
24+
| EXE_UPLOAD_BETA_PATH | `/content/legacy-featured-mod-files/updates_fafbeta_files` | | `build/exe/beta` |
25+
| EXE_UPLOAD_DEVELOP_PATH | `/content/legacy-featured-mod-files/updates_fafdevelop_files` | | `build/exe/develop` |
26+
| FEATURED_MODS_TARGET_DIRECTORY | `/content/legacy-featured-mod-files` | | `build/cache/deployment` |
27+
| FEATURED_MOD_URL_FORMAT | `https://content.${FAF_DOMAIN}/legacy-featured-mod-files/%s/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/faf/updaterNew/%s/%s` |
28+
| FORGED_ALLIANCE_EXE_PATH | `/content/legacy-featured-mod-files/updates_faf_files/ForgedAlliance.exe` | | |
29+
| GITHUB_ACCESS_TOKEN | `false` | | |
30+
| GITHUB_DEPLOYMENT_ENVIRONMENT | `production` | | `development` |
31+
| GITHUB_WEBHOOK_SECRET | `false` | | |
32+
| GOG_GAMES_LIST_URL | `https://www.gog.com/u/%s/games/stats?sort=recent_playtime&order=desc&page=%d` | | |
33+
| GOG_PROFILE_URL | `https://www.gog.com/u/%s` | | |
34+
| GOG_TOKEN_FORMAT | `{{FAF:%s}}` | | |
35+
| JWT_FAF_HYDRA_ISSUER | `https://hydra.${FAF_DOMAIN}/` | `FAF_DOMAIN` | `https://hydra.test.faforever.com/` |
36+
| JWT_FAF_HYDRA_JWKS_URL | `https://hydra.${FAF_DOMAIN}/.well-known/jwks.json` | `FAF_DOMAIN` | `https://hydra.test.faforever.com/.well-known/jwks.json` |
37+
| JWT_PRIVATE_KEY_PATH | `/pki/secret.key` | | `test-pki-private.key` |
38+
| JWT_PUBLIC_KEY_PATH | `/pki/public.key` | | `test-pki-public.key` |
39+
| LEAGUE_DATABASE_ADDRESS | `127.0.0.1` | | `127.0.0.1` |
40+
| LEAGUE_DATABASE_NAME | `faf-league` | | `faf-league` |
41+
| LEAGUE_DATABASE_PASSWORD | | | `banana` |
42+
| LEAGUE_DATABASE_USERNAME | `faf-league-service` | | `faf-league-service` |
43+
| LOG_FILE_DIRECTORY | | | |
44+
| LOG_LEVEL | `info` | | |
45+
| MAIL_HOST | `false` | | |
46+
| MAIL_PASSWORD | `false` | | |
47+
| MAIL_PORT | `false` | | |
48+
| MAIL_USERNAME | `false` | | |
49+
| MANAGEMENT_ADDRESS | | | |
50+
| MANAGEMENT_PORT | `8011` | | |
51+
| MAP_DOWNLOAD_URL_FORMAT | `https://content.${FAF_DOMAIN}/maps/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/maps/%s` |
52+
| MAP_LARGE_PREVIEWS_URL_FORMAT | `https://content.${FAF_DOMAIN}/maps/previews/large/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/faf/maps/previews/large/%s` |
53+
| MAP_PREVIEW_PATH_LARGE | `/content/maps/previews/large` | | `build/cache/map_previews/large` |
54+
| MAP_PREVIEW_PATH_SMALL | `/content/maps/previews/small` | | `build/cache/map_previews/small` |
55+
| MAP_SMALL_PREVIEWS_URL_FORMAT | `https://content.${FAF_DOMAIN}/maps/previews/small/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/faf/maps/previews/small/%s` |
56+
| MAP_UPLOAD_PATH | `/content/maps` | | `build/cache/map/maps` |
57+
| MAUTIC_ACCESS_TOKEN_URL | `false` | | |
58+
| MAUTIC_BASE_URL | `false` | | |
59+
| MAUTIC_CLIENT_ID | `false` | | |
60+
| MAUTIC_CLIENT_SECRET | `false` | | |
61+
| MOD_DOWNLOAD_URL_FORMAT | `https://content.${FAF_DOMAIN}/mods/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/faf/vault/mods/%s` |
62+
| MOD_PREVIEW_URL_FORMAT | `https://content.${FAF_DOMAIN}/mods/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/faf/vault/mods/%s` |
63+
| NODEBB_ADMIN_USERID | `1` | | |
64+
| NODEBB_BASE_URL | `false` | | |
65+
| NODEBB_MASTER_TOKEN | `false` | | |
66+
| PASSWORD_RESET_EMAIL_BODY | `Reset email body for user {0} with reset link {1}` | | `Reset email body for user {0} with reset link {1}` |
67+
| PASSWORD_RESET_EMAIL_SUBJECT | `FAF password reset` | | `FAF password reset` |
68+
| PASSWORD_RESET_URL_FORMAT | `https://www.${FAF_DOMAIN}/account/password/confirmReset?username=%s&token=%s` | `FAF_DOMAIN` | `http://localhost:8020/account/password/confirmReset?username=%s&token=%s` |
69+
| PID | `- ` | | |
70+
| RECAPTCHA_ENABLED | `false` | | `false` |
71+
| RECAPTCHA_SECRET | | | |
72+
| REGISTRATION_EMAIL_BODY | `"Registration email body for user {0} with activation link {1}"` | | `"Registration email body for user {0} with activation link {1}"` |
73+
| REGISTRATION_EMAIL_SUBJECT | `FAF user registration` | | `FAF user registration` |
74+
| REPLAY_DOWNLOAD_URL_FORMAT | `https://replays.${FAF_DOMAIN}/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/replays/%s` |
75+
| REPOSITORIES_DIRECTORY | `/repositories` | | `build/cache/repos` |
76+
| STEAM_API_KEY | | | `banana` |
77+
| STEAM_LINK_REDIRECT_URL_FORMAT | `https://api.${FAF_DOMAIN}/users/linkToSteam?token=%s` | `FAF_DOMAIN` | `http://localhost:8010/users/linkToSteam?token=%s` |
78+
| STEAM_PASSWORD_RESET_REDIRECT_URL_FORMAT | `https://api.${FAF_DOMAIN}/users/requestPasswordResetViaSteam` | `FAF_DOMAIN` | `http://localhost:8010/users/requestPasswordResetViaSteam` |
79+
| STEAM_REALM | `https://api.${FAF_DOMAIN}` | `FAF_DOMAIN` | `http://localhost` |
80+
| TESTING_EXE_UPLOAD_KEY | | | `banana` |
81+
| TUTORIAL_THUMBNAIL_URL_FORMAT | `https://content.${FAF_DOMAIN}/faf/tutorials/thumbs/%s` | `FAF_DOMAIN` | `https://content.test.faforever.com/faf/tutorials/thumbs/%s` |

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
version=snapshot
2-
profile=dev
2+
profile=local

src/main/java/com/faforever/api/config/FafApiProperties.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ public static class Avatar {
142142
@Data
143143
public static class FeaturedMod {
144144
private String fileUrlFormat;
145-
private String bireusUrlFormat;
146145
}
147146

148147
@Data

src/main/java/com/faforever/api/deployment/LegacyFeaturedModDeploymentTask.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ private short readModVersion(Path modPath) {
173173
private void verifyVersion(int version, boolean allowOverride, String modName) {
174174
if (!allowOverride) {
175175
// Normally I'd create a proper query, but this is a hotfix and a protest against the DB-driven patcher
176-
// Luckily, BiReUS is coming "soon".
177176
OptionalInt existingVersion = featuredModService.getFiles(modName, version).stream()
178177
.mapToInt(FeaturedModFile::getVersion)
179178
.filter(value -> value == version)

src/main/resources/config/application-dev.yml renamed to src/main/resources/config/application-local.yml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,22 @@ faf-api:
88
target-directory: ${MAP_UPLOAD_PATH:build/cache/map/maps}
99
directory-preview-path-small: ${MAP_PREVIEW_PATH_SMALL:build/cache/map_previews/small}
1010
directory-preview-path-large: ${MAP_PREVIEW_PATH_LARGE:build/cache/map_previews/large}
11-
small-previews-url-format: ${MAP_SMALL_PREVIEWS_URL_FORMAT:http://test.content.faforever.com/faf/vault/map_previews/small/%s}
12-
large-previews-url-format: ${MAP_LARGE_PREVIEWS_URL_FORMAT:http://test.content.faforever.com/faf/vault/map_previews/large/%s}
13-
download-url-format: ${MAP_DOWNLOAD_URL_FORMAT:http://test.content.faforever.com/faf/vault/maps/%s}
11+
small-previews-url-format: ${MAP_SMALL_PREVIEWS_URL_FORMAT:https://content.test.faforever.com/faf/maps/previews/small/%s}
12+
large-previews-url-format: ${MAP_LARGE_PREVIEWS_URL_FORMAT:https://content.test.faforever.com/faf/maps/previews/large/%s}
13+
download-url-format: ${MAP_DOWNLOAD_URL_FORMAT:https://content.test.faforever.com/maps/%s}
1414
mod:
15-
download-url-format: ${MOD_DOWNLOAD_URL_FORMAT:http://test.content.faforever.com/faf/vault/mods/%s}
16-
preview-url-format: ${MOD_PREVIEW_URL_FORMAT:http://test.content.faforever.com/faf/vault/mods/%s}
15+
download-url-format: ${MOD_DOWNLOAD_URL_FORMAT:https://content.test.faforever.com/faf/vault/mods/%s}
16+
preview-url-format: ${MOD_PREVIEW_URL_FORMAT:https://content.test.faforever.com/faf/vault/mods/%s}
1717
replay:
18-
download-url-format: ${REPLAY_DOWNLOAD_URL_FORMAT:http://content.test.faforever.com/replays/%s}
18+
download-url-format: ${REPLAY_DOWNLOAD_URL_FORMAT:https://content.test.faforever.com/replays/%s}
1919
tutorial:
20-
thumbnail-url-format: ${TUTORIAL_THUMBNAIL_URL_FORMAT:http://content.test.faforever.com/faf/tutorials/thumbs/%s}
20+
thumbnail-url-format: ${TUTORIAL_THUMBNAIL_URL_FORMAT:https://content.test.faforever.com/faf/tutorials/thumbs/%s}
2121
avatar:
22-
download-url-format: ${AVATAR_DOWNLOAD_URL_FORMAT:http://content.test.faforever.com/faf/avatars/%s}
22+
download-url-format: ${AVATAR_DOWNLOAD_URL_FORMAT:https://content.test.faforever.com/faf/avatars/%s}
2323
target-directory: ${AVATAR_TARGET_DIRECTORY:build/cache/avatars}
2424
allowed-extensions: ${AVATAR_ALLOWED_FILE_EXTENSIONS:png}
2525
featured-mod:
26-
file-url-format: ${FEATURED_MOD_URL_FORMAT:http://content.test.faforever.com/faf/updaterNew/%s/%s}
27-
bireus-url-format: ${FEATURED_MOD_BIREUS_URL_FORMAT:https://content.test.faforever.com/repositories/%s}
26+
file-url-format: ${FEATURED_MOD_URL_FORMAT:https://content.test.faforever.com/faf/updaterNew/%s/%s}
2827
git-hub:
2928
deployment-environment: ${GITHUB_DEPLOYMENT_ENVIRONMENT:development}
3029
deployment:

src/main/resources/config/application-prod.yml

Lines changed: 0 additions & 77 deletions
This file was deleted.

src/main/resources/config/application.yml

Lines changed: 73 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,88 @@
11
faf-api:
22
version: #faf-api.version#
3+
anope:
4+
database-name: ${ANOPE_DATABASE_NAME:faf-anope}
35
avatar:
46
max-size-bytes: ${AVATAR_MAX_SIZE_BYTES:4096}
57
image-width: ${AVATAR_IMAGE_WIDTH:40}
68
image-height: ${AVATAR_IMAGE_HEIGHT:20}
7-
clan:
8-
invite-link-expire-duration-minutes: ${CLAN_INVITE_LINK_EXPIRE_DURATION_MINUTES:604800}
9+
download-url-format: ${AVATAR_DOWNLOAD_URL_FORMAT:https://content.${FAF_DOMAIN}/faf/avatars/%s}
10+
target-directory: ${AVATAR_TARGET_DIRECTORY:/content/avatars}
11+
allowed-extensions: ${AVATAR_ALLOWED_FILE_EXTENSIONS:png}
912
challonge:
1013
key: ${CHALLONGE_KEY:}
14+
clan:
15+
invite-link-expire-duration-minutes: ${CLAN_INVITE_LINK_EXPIRE_DURATION_MINUTES:604800}
16+
website-url-format: ${CLAN_WEBSITE_URL_FORMAT:https://clans.${FAF_DOMAIN}/clan/%s}
1117
database:
1218
schema-version: ${DATABASE_SCHEMA_VERSION:122}
19+
deployment:
20+
forged-alliance-exe-path: ${FORGED_ALLIANCE_EXE_PATH:/content/legacy-featured-mod-files/updates_faf_files/ForgedAlliance.exe}
21+
repositories-directory: ${REPOSITORIES_DIRECTORY:/repositories}
22+
featured-mods-target-directory: ${FEATURED_MODS_TARGET_DIRECTORY:/content/legacy-featured-mod-files}
23+
testing-exe-upload-key: ${TESTING_EXE_UPLOAD_KEY}
24+
forged-alliance-beta-exe-path: ${EXE_UPLOAD_BETA_PATH:/content/legacy-featured-mod-files/updates_fafbeta_files}
25+
forged-alliance-develop-exe-path: ${EXE_UPLOAD_DEVELOP_PATH:/content/legacy-featured-mod-files/updates_fafdevelop_files}
26+
featured-mod:
27+
file-url-format: ${FEATURED_MOD_URL_FORMAT:https://content.${FAF_DOMAIN}/legacy-featured-mod-files/%s/%s}
28+
git-hub:
29+
access-token: ${GITHUB_ACCESS_TOKEN:false}
30+
webhook-secret: ${GITHUB_WEBHOOK_SECRET:false}
31+
deployment-environment: ${GITHUB_DEPLOYMENT_ENVIRONMENT:production}
32+
gog:
33+
token-format: ${GOG_TOKEN_FORMAT:{{FAF:%s}}}
34+
profile-page-url: ${GOG_PROFILE_URL:https://www.gog.com/u/%s}
35+
games-list-url: ${GOG_GAMES_LIST_URL:https://www.gog.com/u/%s/games/stats?sort=recent_playtime&order=desc&page=%d}
36+
jwt:
37+
secretKeyPath: ${JWT_PRIVATE_KEY_PATH:/pki/secret.key}
38+
publicKeyPath: ${JWT_PUBLIC_KEY_PATH:/pki/public.key}
39+
fafHydraJwksUrl: ${JWT_FAF_HYDRA_JWKS_URL:https://hydra.${FAF_DOMAIN}/.well-known/jwks.json}
40+
fafHydraIssuer: ${JWT_FAF_HYDRA_ISSUER:https://hydra.${FAF_DOMAIN}/}
41+
mail:
42+
from-email-name: ${EMAIL_FROM_NAME}
43+
from-email-address: ${EMAIL_FROM_ADDRESS}
44+
map:
45+
target-directory: ${MAP_UPLOAD_PATH:/content/maps}
46+
directory-preview-path-small: ${MAP_PREVIEW_PATH_SMALL:/content/maps/previews/small}
47+
directory-preview-path-large: ${MAP_PREVIEW_PATH_LARGE:/content/maps/previews/large}
48+
small-previews-url-format: ${MAP_SMALL_PREVIEWS_URL_FORMAT:https://content.${FAF_DOMAIN}/maps/previews/small/%s}
49+
large-previews-url-format: ${MAP_LARGE_PREVIEWS_URL_FORMAT:https://content.${FAF_DOMAIN}/maps/previews/large/%s}
50+
download-url-format: ${MAP_DOWNLOAD_URL_FORMAT:https://content.${FAF_DOMAIN}/maps/%s}
1351
mautic:
1452
base-url: ${MAUTIC_BASE_URL:false}
1553
client-id: ${MAUTIC_CLIENT_ID:false}
1654
client-secret: ${MAUTIC_CLIENT_SECRET:false}
1755
access-token-url: ${MAUTIC_ACCESS_TOKEN_URL:false}
18-
git-hub:
19-
access-token: ${GITHUB_ACCESS_TOKEN:false}
20-
webhook-secret: ${GITHUB_WEBHOOK_SECRET:false}
21-
anope:
22-
database-name: ${ANOPE_DATABASE_NAME:faf-anope}
23-
rating:
24-
default-mean: 1500
25-
default-deviation: 500
56+
mod:
57+
download-url-format: ${MOD_DOWNLOAD_URL_FORMAT:https://content.${FAF_DOMAIN}/mods/%s}
58+
preview-url-format: ${MOD_PREVIEW_URL_FORMAT:https://content.${FAF_DOMAIN}/mods/%s}
2659
nodebb:
2760
base-url: ${NODEBB_BASE_URL:false}
2861
admin-user-id: ${NODEBB_ADMIN_USERID:1}
2962
master-token: ${NODEBB_MASTER_TOKEN:false}
30-
gog:
31-
token-format: ${GOG_TOKEN_FORMAT:{{FAF:%s}}}
32-
profile-page-url: ${GOG_PROFILE_URL:https://www.gog.com/u/%s}
33-
games-list-url: ${GOG_GAMES_LIST_URL:https://www.gog.com/u/%s/games/stats?sort=recent_playtime&order=desc&page=%d}
63+
password-reset:
64+
password-reset-url-format: ${PASSWORD_RESET_URL_FORMAT:https://www.${FAF_DOMAIN}/account/password/confirmReset?username=%s&token=%s}
65+
subject: ${PASSWORD_RESET_EMAIL_SUBJECT:FAF password reset}
66+
html-format: ${PASSWORD_RESET_EMAIL_BODY:Reset email body for user {0} with reset link {1}}
67+
rating:
68+
default-mean: 1500
69+
default-deviation: 500
70+
recaptcha:
71+
enabled: ${RECAPTCHA_ENABLED:false}
72+
secret: ${RECAPTCHA_SECRET}
73+
registration:
74+
activation-url-format: ${ACTIVATION_URL_FORMAT:https://www.${FAF_DOMAIN}/account/activate?username=%s&token=%s}
75+
subject: ${REGISTRATION_EMAIL_SUBJECT:FAF user registration}
76+
html-format: ${REGISTRATION_EMAIL_BODY:"Registration email body for user {0} with activation link {1}"}
77+
replay:
78+
download-url-format: ${REPLAY_DOWNLOAD_URL_FORMAT:https://replays.${FAF_DOMAIN}/%s}
79+
steam:
80+
realm: ${STEAM_REALM:https://api.${FAF_DOMAIN}}
81+
api-key: ${STEAM_API_KEY}
82+
link-to-steam-redirect-url-format: ${STEAM_LINK_REDIRECT_URL_FORMAT:https://api.${FAF_DOMAIN}/users/linkToSteam?token=%s}
83+
steam-password-reset-redirect-url-format: ${STEAM_PASSWORD_RESET_REDIRECT_URL_FORMAT:https://api.${FAF_DOMAIN}/users/requestPasswordResetViaSteam}
84+
tutorial:
85+
thumbnail-url-format: ${TUTORIAL_THUMBNAIL_URL_FORMAT:https://content.${FAF_DOMAIN}/faf/tutorials/thumbs/%s}
3486

3587
spring:
3688
application:
@@ -41,6 +93,10 @@ spring:
4193
minimum-idle: 2
4294
maximum-pool-size: 12
4395
league-datasource:
96+
url: jdbc:mariadb://${LEAGUE_DATABASE_ADDRESS:127.0.0.1}/${LEAGUE_DATABASE_NAME:faf-league}?useSSL=false
97+
name: faf-league
98+
username: ${LEAGUE_DATABASE_USERNAME:faf-league-service}
99+
password: ${LEAGUE_DATABASE_PASSWORD}
44100
configuration:
45101
connection-test-query: SELECT 1 FROM DUAL
46102
minimum-idle: 2
@@ -57,7 +113,7 @@ spring:
57113
serialization:
58114
WRITE_DATES_AS_TIMESTAMPS: false
59115
profiles:
60-
active: ${API_PROFILE:dev}
116+
active: ${API_PROFILE}
61117
servlet:
62118
multipart:
63119
max-file-size: 350MB
@@ -101,3 +157,5 @@ logging:
101157
console: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%36.36X{requestId:- no request context}]){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"
102158
level:
103159
com.faforever: ${LOG_LEVEL:info}
160+
file:
161+
path: ${LOG_FILE_DIRECTORY:}

0 commit comments

Comments
 (0)