mirror of https://github.com/hykilpikonna/AquaDX
[+] Exclude wacca in compression filter
parent
32fcc25ea4
commit
af11758190
|
@ -1,12 +1,11 @@
|
||||||
package icu.samnyan.aqua.sega.general.filter
|
package icu.samnyan.aqua.sega.general.filter
|
||||||
|
|
||||||
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.util.Compression
|
import icu.samnyan.aqua.sega.util.Compression
|
||||||
import jakarta.servlet.FilterChain
|
import jakarta.servlet.FilterChain
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
import org.eclipse.jetty.io.EofException
|
import org.eclipse.jetty.io.EofException
|
||||||
import org.slf4j.Logger
|
|
||||||
import org.slf4j.LoggerFactory
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.web.filter.OncePerRequestFilter
|
import org.springframework.web.filter.OncePerRequestFilter
|
||||||
|
|
||||||
|
@ -16,39 +15,28 @@ import org.springframework.web.filter.OncePerRequestFilter
|
||||||
@Component
|
@Component
|
||||||
class CompressionFilter : OncePerRequestFilter() {
|
class CompressionFilter : OncePerRequestFilter() {
|
||||||
companion object {
|
companion object {
|
||||||
val logger: Logger = LoggerFactory.getLogger(CompressionFilter::class.java)
|
val logger = logger()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun doFilterInternal(req: HttpServletRequest, resp: HttpServletResponse, chain: FilterChain) {
|
override fun doFilterInternal(req: HttpServletRequest, resp: HttpServletResponse, chain: FilterChain) {
|
||||||
logger.debug("Do compress filter")
|
val reqSrc = req.inputStream.readAllBytes().let {
|
||||||
val encoding = req.getHeader("content-encoding")
|
if (req.getHeader("content-encoding") == "deflate") Compression.decompress(it)
|
||||||
val reqSrc = req.inputStream.readAllBytes()
|
else it
|
||||||
|
|
||||||
val reqResult: ByteArray
|
|
||||||
if (encoding != null && encoding == "deflate") {
|
|
||||||
logger.debug("Request length (compressed): ${reqSrc.size}")
|
|
||||||
reqResult = Compression.decompress(reqSrc)
|
|
||||||
logger.debug("Request length (decompressed): ${reqResult.size}")
|
|
||||||
} else {
|
|
||||||
reqResult = reqSrc
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val requestWrapper = CompressRequestWrapper(req, reqResult)
|
val requestWrapper = CompressRequestWrapper(req, reqSrc)
|
||||||
val responseWrapper = CompressResponseWrapper(resp)
|
val responseWrapper = CompressResponseWrapper(resp)
|
||||||
|
|
||||||
chain.doFilter(requestWrapper, responseWrapper)
|
chain.doFilter(requestWrapper, responseWrapper)
|
||||||
|
|
||||||
val respSrc = responseWrapper.toByteArray()
|
val result = Compression.compress(responseWrapper.toByteArray())
|
||||||
logger.debug("Response length (uncompressed): ${respSrc.size}")
|
|
||||||
val respResult = Compression.compress(respSrc)
|
|
||||||
logger.debug("Response length (compressed): ${respResult.size}")
|
|
||||||
|
|
||||||
resp.setContentLength(respResult.size)
|
resp.setContentLength(result.size)
|
||||||
resp.contentType = "application/json; charset=utf-8"
|
resp.contentType = "application/json; charset=utf-8"
|
||||||
resp.addHeader("Content-Encoding", "deflate")
|
resp.addHeader("Content-Encoding", "deflate")
|
||||||
|
|
||||||
try {
|
try {
|
||||||
resp.outputStream.write(respResult)
|
resp.outputStream.write(result)
|
||||||
} catch (e: EofException) {
|
} catch (e: EofException) {
|
||||||
logger.warn("- EOF: Client closed connection when writing result")
|
logger.warn("- EOF: Client closed connection when writing result")
|
||||||
}
|
}
|
||||||
|
@ -58,5 +46,6 @@ class CompressionFilter : OncePerRequestFilter() {
|
||||||
* Filter games that are not diva
|
* Filter games that are not diva
|
||||||
*/
|
*/
|
||||||
override fun shouldNotFilter(req: HttpServletRequest) =
|
override fun shouldNotFilter(req: HttpServletRequest) =
|
||||||
!(req.servletPath.startsWith("/g/") && !req.servletPath.startsWith("/g/diva"))
|
!(req.servletPath.startsWith("/g/") && !req.servletPath.startsWith("/g/diva")
|
||||||
|
&& !req.servletPath.startsWith("/g/wacca"))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue