[F] Fix ip

pull/133/head
Azalea 2025-03-23 18:26:26 -04:00
parent 8549a5caae
commit d94a011413
2 changed files with 10 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package icu.samnyan.aqua.sega.allnet
import ext.Str import ext.Str
import icu.samnyan.aqua.net.FrontierProps import icu.samnyan.aqua.net.FrontierProps
import icu.samnyan.aqua.net.components.GeoIP
import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequestWrapper import jakarta.servlet.http.HttpServletRequestWrapper
import jakarta.servlet.http.HttpServletResponse import jakarta.servlet.http.HttpServletResponse
@ -27,6 +28,7 @@ class TokenChecker(
val keyChipRepo: KeyChipRepo, val keyChipRepo: KeyChipRepo,
val keychipSessionService: KeychipSessionService, val keychipSessionService: KeychipSessionService,
val frontierProps: FrontierProps, val frontierProps: FrontierProps,
val geoip: GeoIP
) : HandlerInterceptor { ) : HandlerInterceptor {
val log = LoggerFactory.getLogger(TokenChecker::class.java) val log = LoggerFactory.getLogger(TokenChecker::class.java)
@ -43,10 +45,11 @@ class TokenChecker(
override fun preHandle(req: HttpServletRequest, resp: HttpServletResponse, handler: Any): Boolean { override fun preHandle(req: HttpServletRequest, resp: HttpServletResponse, handler: Any): Boolean {
// Skip the interceptor if the request is already forwarded // Skip the interceptor if the request is already forwarded
if (req.getAttribute("token") != null) return true if (req.getAttribute("token") != null) return true
val ip = geoip.getIP(req)
// Parse the token from the request path // Parse the token from the request path
val token = extractTokenFromPath(req.requestURI) val token = extractTokenFromPath(req.requestURI)
log.debug("PreHandle: ${req.requestURI} from ip ${req.remoteAddr}, token: $token") log.debug("PreHandle: ${req.requestURI} from ip $ip, token: $token")
// Check whether the token exists in the database // Check whether the token exists in the database
// The token can either be a keychip id (old method) or a session id (new method) // The token can either be a keychip id (old method) or a session id (new method)
@ -67,7 +70,7 @@ class TokenChecker(
// Token doesn't exist, reject the request // Token doesn't exist, reject the request
resp.status = HttpServletResponse.SC_FORBIDDEN resp.status = HttpServletResponse.SC_FORBIDDEN
log.warn("Request rejected: ${req.requestURI} from ip ${req.remoteAddr}") log.warn("Request rejected: ${req.requestURI} from ip $ip")
return false return false
} }

View File

@ -3,6 +3,7 @@ package icu.samnyan.aqua.sega.general.filter
import ext.details import ext.details
import ext.logger import ext.logger
import ext.toJson import ext.toJson
import icu.samnyan.aqua.net.components.GeoIP
import icu.samnyan.aqua.sega.allnet.TokenChecker import icu.samnyan.aqua.sega.allnet.TokenChecker
import icu.samnyan.aqua.sega.util.ZLib import icu.samnyan.aqua.sega.util.ZLib
import jakarta.servlet.FilterChain import jakarta.servlet.FilterChain
@ -19,7 +20,9 @@ import java.util.*
* @author samnyan (privateamusement@protonmail.com) * @author samnyan (privateamusement@protonmail.com)
*/ */
@Component @Component
class CompressionFilter : OncePerRequestFilter() { class CompressionFilter(
val geoip: GeoIP
) : OncePerRequestFilter() {
companion object { companion object {
val log = logger() val log = logger()
val b64d = Base64.getMimeDecoder() val b64d = Base64.getMimeDecoder()
@ -38,7 +41,7 @@ class CompressionFilter : OncePerRequestFilter() {
else it else it
} }
} catch (e: Exception) { } catch (e: Exception) {
log.error("Failed to decode request from ip ${req.remoteAddr}") log.error("Failed to decode request from ip ${geoip.getIP(req)}")
resp.sendError(400, "Failed to decode request") resp.sendError(400, "Failed to decode request")
return return
} }