[+] Exclude wacca in compression filter

pull/29/head
Azalea 2024-03-27 23:08:22 -04:00
parent 32fcc25ea4
commit af11758190
1 changed files with 11 additions and 22 deletions

View File

@ -1,12 +1,11 @@
package icu.samnyan.aqua.sega.general.filter
import ext.logger
import icu.samnyan.aqua.sega.util.Compression
import jakarta.servlet.FilterChain
import jakarta.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletResponse
import org.eclipse.jetty.io.EofException
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Component
import org.springframework.web.filter.OncePerRequestFilter
@ -16,39 +15,28 @@ import org.springframework.web.filter.OncePerRequestFilter
@Component
class CompressionFilter : OncePerRequestFilter() {
companion object {
val logger: Logger = LoggerFactory.getLogger(CompressionFilter::class.java)
val logger = logger()
}
override fun doFilterInternal(req: HttpServletRequest, resp: HttpServletResponse, chain: FilterChain) {
logger.debug("Do compress filter")
val encoding = req.getHeader("content-encoding")
val reqSrc = req.inputStream.readAllBytes()
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 reqSrc = req.inputStream.readAllBytes().let {
if (req.getHeader("content-encoding") == "deflate") Compression.decompress(it)
else it
}
val requestWrapper = CompressRequestWrapper(req, reqResult)
val requestWrapper = CompressRequestWrapper(req, reqSrc)
val responseWrapper = CompressResponseWrapper(resp)
chain.doFilter(requestWrapper, responseWrapper)
val respSrc = responseWrapper.toByteArray()
logger.debug("Response length (uncompressed): ${respSrc.size}")
val respResult = Compression.compress(respSrc)
logger.debug("Response length (compressed): ${respResult.size}")
val result = Compression.compress(responseWrapper.toByteArray())
resp.setContentLength(respResult.size)
resp.setContentLength(result.size)
resp.contentType = "application/json; charset=utf-8"
resp.addHeader("Content-Encoding", "deflate")
try {
resp.outputStream.write(respResult)
resp.outputStream.write(result)
} catch (e: EofException) {
logger.warn("- EOF: Client closed connection when writing result")
}
@ -58,5 +46,6 @@ class CompressionFilter : OncePerRequestFilter() {
* Filter games that are not diva
*/
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"))
}