mirror of https://github.com/hykilpikonna/AquaDX
[F] Fix ip
parent
8549a5caae
commit
d94a011413
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue