diff --git a/README.md b/README.md index 1b0b6ed..7563d10 100644 --- a/README.md +++ b/README.md @@ -260,8 +260,8 @@ Das Webhook wir so oft gesendet, bis der angegebene Webhook Endpoint eine Respon Alle Webhooks: -| Beschreibung | HTTP Header | Body | -| ------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Ein neuer Nutzer hat sich registriert |
x-webhook-action: signup|
{
// Vorname des Nutzers
firstname: string,
// Nachname des Nutzers
lastname: string,
// Geburtstag des Nutzers im YYYY-MM-DD format
birthday: string,
// Telefonnummer des Nutzers. `null` wenn keine angegeben wurde
telephone: string \| null,
// Spielername des Nutzers
username: string,
// Minecraft-Edition des Nutzers
edition: 'java' \| 'bedrock'
//UUID des Nutzers. null wenn keine UUID ermittelt werden konnte
uuid: string \| null
} |
-| Ein neuer Report wurde erstellt | x-webhook-action: report|
{
// Username des Reporters. `null` wenn der Report vom System gemacht wurde
reporter: string \| null,
// Username des reporteten Spielers. `null` wenn Spieler unbekannt ist
reported: string \| null,
// Grund des Reports
reason: string
} |
-| Ein neuer Strike wurde erstellt | x-webhook-action: strike|
{
// UUID des Spielers, der gestriked wurde uuid: string
} |
+| Beschreibung | HTTP Header | Body |
+| ------------------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Ein neuer Nutzer hat sich registriert | x-webhook-action: signup|
{
// Vorname des Nutzers
firstname: string,
// Nachname des Nutzers
lastname: string,
// Geburtstag des Nutzers im YYYY-MM-DD format
birthday: string,
// Telefonnummer des Nutzers. `null` wenn keine angegeben wurde
telephone: string \| null,
// Spielername des Nutzers
username: string,
// Minecraft-Edition des Nutzers
edition: 'java' \| 'bedrock'
//UUID des Nutzers. null wenn keine UUID ermittelt werden konnte
uuid: string \| null,
// IP-Adresse des Besuchers
ip: string
} |
+| Ein neuer Report wurde erstellt | x-webhook-action: report|
{
// Username des Reporters. `null` wenn der Report vom System gemacht wurde
reporter: string \| null,
// Username des reporteten Spielers. `null` wenn Spieler unbekannt ist
reported: string \| null,
// Grund des Reports
reason: string
} |
+| Ein neuer Strike wurde erstellt | x-webhook-action: strike|
{
// UUID des Spielers, der gestriked wurde uuid: string
} |
diff --git a/src/actions/signup.ts b/src/actions/signup.ts
index e10d812..8942622 100644
--- a/src/actions/signup.ts
+++ b/src/actions/signup.ts
@@ -5,6 +5,17 @@ import { getJavaUuid } from '@util/minecraft.ts';
import { getSetting, SettingKey } from '@util/settings.ts';
import { sendWebhook, WebhookAction } from '@util/webhook.ts';
+function getClientIp(context: { request: Request; clientAddress: string }) {
+ const forwardedFor = context.request.headers.get('x-forwarded-for');
+
+ if (forwardedFor) {
+ const ip = forwardedFor.split(',')[0].trim();
+ if (ip) return ip;
+ }
+
+ return context.clientAddress;
+}
+
export const signup = {
signup: defineAction({
input: z.object({
@@ -20,7 +31,7 @@ export const signup = {
edition: z.enum(['java', 'bedrock']),
hash: z.string().nullish()
}),
- handler: async (input) => {
+ handler: async (input, context) => {
// check if hash given and if so, if it's valid and nobody has already used it
if (input.hash) {
const directSignup = await db.getDirectSignupByHash({ hash: input.hash });
@@ -85,7 +96,8 @@ export const signup = {
telephone: input.phone,
username: input.username,
edition: input.edition,
- uuid: uuid
+ uuid: uuid,
+ ip: getClientIp(context)
});
}
})
diff --git a/src/util/webhook.ts b/src/util/webhook.ts
index a15dcb4..ae237b9 100644
--- a/src/util/webhook.ts
+++ b/src/util/webhook.ts
@@ -17,6 +17,7 @@ export type WebhookActionType