Skip to content

Commit a8c3e4d

Browse files
authored
Add CoturnServers to API (#618)
1 parent a66a7f1 commit a8c3e4d

6 files changed

Lines changed: 89 additions & 4 deletions

File tree

configuration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
| DATABASE_ADDRESS | | | `127.0.0.1` |
1818
| DATABASE_NAME | | | `faf` |
1919
| DATABASE_PASSWORD | | | `banana` |
20-
| DATABASE_SCHEMA_VERSION | `123` | | |
20+
| DATABASE_SCHEMA_VERSION | `124` | | |
2121
| DATABASE_USERNAME | | | `faf-java-api` |
2222
| EMAIL_FROM_ADDRESS | | | `faf@example.com` |
2323
| EMAIL_FROM_NAME | | | `FAForever` |

src/inttest/java/com/faforever/api/config/MainDbTestContainers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
@Configuration
2222
public class MainDbTestContainers {
2323
private static final MariaDBContainer<?> fafDBContainer = new MariaDBContainer<>("mariadb:10.6");
24-
private static final GenericContainer<?> flywayMigrationsContainer = new GenericContainer<>("faforever/faf-db-migrations:v123");
24+
private static final GenericContainer<?> flywayMigrationsContainer = new GenericContainer<>("faforever/faf-db-migrations:v124");
2525
private static final Network sharedNetwork = Network.newNetwork();
2626

2727
@Bean
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.faforever.api.data.domain;
2+
3+
import com.faforever.api.data.checks.Prefab;
4+
import com.faforever.api.security.elide.permission.LobbyCheck;
5+
import com.yahoo.elide.annotation.Include;
6+
import com.yahoo.elide.annotation.ReadPermission;
7+
import com.yahoo.elide.annotation.UpdatePermission;
8+
import lombok.Setter;
9+
10+
import javax.persistence.Column;
11+
import javax.persistence.Entity;
12+
import javax.persistence.GeneratedValue;
13+
import javax.persistence.GenerationType;
14+
import javax.persistence.Id;
15+
import javax.persistence.Table;
16+
17+
@Entity
18+
@Table(name = "coturn_servers")
19+
@Include(name = CoturnServer.TYPE_NAME)
20+
@ReadPermission(expression = LobbyCheck.EXPRESSION)
21+
@UpdatePermission(expression = Prefab.NONE)
22+
@Setter
23+
public class CoturnServer {
24+
public static final String TYPE_NAME = "coturnServer";
25+
26+
private Integer id;
27+
private String region;
28+
private String host;
29+
private Integer port;
30+
private String key;
31+
private boolean active;
32+
33+
@Id
34+
@GeneratedValue(strategy = GenerationType.IDENTITY)
35+
@Column(name = "id")
36+
public Integer getId() {
37+
return id;
38+
}
39+
40+
@Column(name = "region")
41+
public String getRegion() {
42+
return region;
43+
}
44+
45+
@Column(name = "host")
46+
public String getHost() {
47+
return host;
48+
}
49+
50+
@Column(name = "port")
51+
public Integer getPort() {
52+
return port;
53+
}
54+
55+
@Column(name = "preshared_key")
56+
public String getKey() {
57+
return key;
58+
}
59+
60+
@Column(name = "active")
61+
public boolean isActive() {
62+
return active;
63+
}
64+
}

src/main/java/com/faforever/api/security/OAuthScope.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ public enum OAuthScope {
1616
VOTE(OAuthScope._VOTE, "Vote"),
1717
READ_SENSIBLE_USERDATA(OAuthScope._READ_SENSIBLE_USERDATA, "View sensible user data (email addresses, ip addresses, etc.)"),
1818
ADMINISTRATIVE_ACTION(OAuthScope._ADMINISTRATIVE_ACTION, "Administrative actions"),
19-
MANAGE_VAULT(OAuthScope._MANAGE_VAULT, "Manage vault");
19+
MANAGE_VAULT(OAuthScope._MANAGE_VAULT, "Manage vault"),
20+
LOBBY(OAuthScope._LOBBY, "Connect to Lobby");
2021

2122
public static final String _PUBLIC_PROFILE = "public_profile";
2223
public static final String _WRITE_ACHIEVEMENTS = "write_achievements";
@@ -29,6 +30,7 @@ public enum OAuthScope {
2930
public static final String _READ_SENSIBLE_USERDATA = "read_sensible_userdata";
3031
public static final String _ADMINISTRATIVE_ACTION = "administrative_actions";
3132
public static final String _MANAGE_VAULT = "manage_vault";
33+
public static final String _LOBBY = "lobby";
3234

3335
private static final Map<String, OAuthScope> fromString;
3436

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.faforever.api.security.elide.permission;
2+
3+
import com.faforever.api.security.OAuthScope;
4+
import com.yahoo.elide.annotation.SecurityCheck;
5+
import com.yahoo.elide.core.security.User;
6+
import lombok.extern.slf4j.Slf4j;
7+
8+
import static com.faforever.api.security.elide.permission.LobbyCheck.EXPRESSION;
9+
10+
@Slf4j
11+
@SecurityCheck(EXPRESSION)
12+
public class LobbyCheck extends FafUserCheck {
13+
public static final String EXPRESSION = "Lobby";
14+
15+
@Override
16+
public boolean ok(User user) {
17+
return checkOAuthScopes(OAuthScope.LOBBY);
18+
}
19+
}

src/main/resources/config/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ faf-api:
1515
invite-link-expire-duration-minutes: ${CLAN_INVITE_LINK_EXPIRE_DURATION_MINUTES:604800}
1616
website-url-format: ${CLAN_WEBSITE_URL_FORMAT:https://clans.${FAF_DOMAIN}/clan/%s}
1717
database:
18-
schema-version: ${DATABASE_SCHEMA_VERSION:123}
18+
schema-version: ${DATABASE_SCHEMA_VERSION:124}
1919
deployment:
2020
forged-alliance-exe-path: ${FORGED_ALLIANCE_EXE_PATH:/content/legacy-featured-mod-files/updates_faf_files/ForgedAlliance.exe}
2121
repositories-directory: ${REPOSITORIES_DIRECTORY:/repositories}

0 commit comments

Comments
 (0)