mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-18 13:09:54 +08:00
Use the headers provided by a context to get the IP address
should acknowledge #1975
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
package emu.grasscutter.utils;
|
||||
|
||||
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
||||
import static emu.grasscutter.utils.lang.Language.translate;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.config.ConfigContainer;
|
||||
import emu.grasscutter.data.DataLoader;
|
||||
import emu.grasscutter.game.world.Position;
|
||||
import io.javalin.http.Context;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufUtil;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||
import it.unimi.dsi.fastutil.ints.IntList;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
@@ -23,8 +24,9 @@ import java.time.ZonedDateTime;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import javax.annotation.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import static emu.grasscutter.utils.FileUtils.getResourcePath;
|
||||
import static emu.grasscutter.utils.lang.Language.translate;
|
||||
|
||||
@SuppressWarnings({"UnusedReturnValue", "BooleanMethodIsAlwaysInverted"})
|
||||
public final class Utils {
|
||||
@@ -463,4 +465,25 @@ public final class Utils {
|
||||
if (start < input.length()) output.add(input.substring(start));
|
||||
return output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the IP address of a web request.
|
||||
*
|
||||
* @param ctx The context of the request.
|
||||
* @return The IP address of the request.
|
||||
*/
|
||||
public static String address(Context ctx) {
|
||||
// Check headers.
|
||||
var address = ctx.header("CF-Connecting-IP");
|
||||
if (address != null) return address;
|
||||
|
||||
address = ctx.header("X-Forwarded-For");
|
||||
if (address != null) return address;
|
||||
|
||||
address = ctx.header("X-Real-IP");
|
||||
if (address != null) return address;
|
||||
|
||||
// Return the request IP.
|
||||
return ctx.ip();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user