mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 14:41:35 +00:00
94205426e7
## Description
Re-enables Turnstile verification (was temporarily disabled in v31 to
diagnose intermittent `invalid-input-response` rejections) and moves the
verification call off the game servers.
Game servers no longer hold `TURNSTILE_SECRET_KEY` or hit
`challenges.cloudflare.com` directly. Instead they POST to
`${jwtIssuer}/turnstile` on the api-worker (authenticated with the
existing `apiKey`), which holds the secret and proxies to Cloudflare.
Shrinks blast radius and removes the secret from every game host + GH
Actions workflow.
Response from the api-worker is Zod-validated; null tokens short-circuit
to `rejected` locally.
## Please complete the following:
- [x] I have added screenshots for all UI updates (n/a — server only)
- [x] I process any text displayed to the user through translateText()
(n/a — no user-visible text)
- [ ] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
## Discord:
evanpelle
92 lines
2.5 KiB
TypeScript
92 lines
2.5 KiB
TypeScript
import { JWK } from "jose";
|
|
import { GameEnv, ServerConfig } from "../../src/core/configuration/Config";
|
|
import { PublicGameModifiers } from "../../src/core/game/Game";
|
|
import { GameID } from "../../src/core/Schemas";
|
|
|
|
export class TestServerConfig implements ServerConfig {
|
|
turnstileSiteKey(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
apiKey(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
allowedFlares(): string[] | undefined {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
stripePublishableKey(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
domain(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
subdomain(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
jwtAudience(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
jwtIssuer(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
jwkPublicKey(): Promise<JWK> {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
otelEnabled(): boolean {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
otelEndpoint(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
otelAuthHeader(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
turnIntervalMs(): number {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
gameCreationRate(): number {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
async lobbyMaxPlayers(): Promise<number> {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
numWorkers(): number {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
workerIndex(gameID: GameID): number {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
workerPath(gameID: GameID): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
workerPort(gameID: GameID): number {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
workerPortByIndex(workerID: number): number {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
env(): GameEnv {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
adminToken(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
adminHeader(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
gitCommit(): string {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
getRandomPublicGameModifiers(): PublicGameModifiers {
|
|
return {
|
|
isCompact: false,
|
|
isRandomSpawn: false,
|
|
isCrowded: false,
|
|
isHardNations: false,
|
|
isAlliancesDisabled: false,
|
|
};
|
|
}
|
|
async supportsCompactMapForTeams(): Promise<boolean> {
|
|
throw new Error("Method not implemented.");
|
|
}
|
|
}
|