[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 icu.samnyan.aqua.net.FrontierProps
import icu.samnyan.aqua.net.components.GeoIP
import jakarta.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequestWrapper
import jakarta.servlet.http.HttpServletResponse
@ -27,6 +28,7 @@ class TokenChecker(
val keyChipRepo: KeyChipRepo,
val keychipSessionService: KeychipSessionService,
val frontierProps: FrontierProps,
val geoip: GeoIP
) : HandlerInterceptor {
val log = LoggerFactory.getLogger(TokenChecker::class.java)
@ -43,10 +45,11 @@ class TokenChecker(
override fun preHandle(req: HttpServletRequest, resp: HttpServletResponse, handler: Any): Boolean {
// Skip the interceptor if the request is already forwarded
if (req.getAttribute("token") != null) return true
val ip = geoip.getIP(req)
// Parse the token from the request path
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
// 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
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
}

View File

@ -3,6 +3,7 @@ package icu.samnyan.aqua.sega.general.filter
import ext.details
import ext.logger
import ext.toJson
import icu.samnyan.aqua.net.components.GeoIP
import icu.samnyan.aqua.sega.allnet.TokenChecker
import icu.samnyan.aqua.sega.util.ZLib
import jakarta.servlet.FilterChain
@ -19,7 +20,9 @@ import java.util.*
* @author samnyan (privateamusement@protonmail.com)
*/
@Component
class CompressionFilter : OncePerRequestFilter() {
class CompressionFilter(
val geoip: GeoIP
) : OncePerRequestFilter() {
companion object {
val log = logger()
val b64d = Base64.getMimeDecoder()
@ -38,7 +41,7 @@ class CompressionFilter : OncePerRequestFilter() {
else it
}
} 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")
return
}