[M] Move game URLs

This commit is contained in:
Azalea
2024-02-25 21:42:58 -05:00
parent eb960209bf
commit cb96b5fa8f
12 changed files with 78 additions and 103 deletions

View File

@@ -1,87 +0,0 @@
package icu.samnyan.aqua.sega.general.filter;
import icu.samnyan.aqua.sega.util.Compression;
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;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component
public class CompressionFilter extends OncePerRequestFilter {
private static final Logger logger = LoggerFactory.getLogger(CompressionFilter.class);
private final List<String> filterList;
public CompressionFilter() {
filterList = new ArrayList<>();
filterList.add("/ChuniServlet");
filterList.add("/OngekiServlet");
filterList.add("/MaimaiServlet");
filterList.add("/Maimai2Servlet");
filterList.add("/ChusanServlet");
filterList.add("/CardMakerServlet");
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
logger.debug("Do compress filter");
String encoding = request.getHeader("content-encoding");
byte[] reqSrc = request.getInputStream().readAllBytes();
byte[] reqResult;
if (encoding != null && encoding.equals("deflate")) {
logger.debug("Request length (compressed): {}", reqSrc.length);
reqResult = Compression.decompress(reqSrc);
logger.debug("Request length (decompressed): {}", reqResult.length);
} else {
reqResult = reqSrc;
}
CompressRequestWrapper requestWrapper = new CompressRequestWrapper(request, reqResult);
CompressResponseWrapper responseWrapper = new CompressResponseWrapper(response);
filterChain.doFilter(requestWrapper, responseWrapper);
byte[] respSrc = responseWrapper.toByteArray();
logger.debug("Response length (uncompressed): {}", respSrc.length);
byte[] respResult = Compression.compress(respSrc);
logger.debug("Response length (compressed): {}", respResult.length);
response.setContentLength(respResult.length);
response.setContentType("application/json; charset=utf-8");
response.addHeader("Content-Encoding", "deflate");
try {
response.getOutputStream().write(respResult);
} catch (EofException e) {
logger.warn("Client closed connection");
}
}
@Override
protected boolean shouldNotFilter(HttpServletRequest request) {
String path = request.getServletPath();
boolean notFilter = true;
for (String prefix : filterList) {
if (path.startsWith(prefix)) {
notFilter = false;
break;
}
}
return notFilter;
}
}

View File

@@ -0,0 +1,62 @@
package icu.samnyan.aqua.sega.general.filter
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
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component
class CompressionFilter : OncePerRequestFilter() {
companion object {
val logger: Logger = LoggerFactory.getLogger(CompressionFilter::class.java)
}
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 requestWrapper = CompressRequestWrapper(req, reqResult)
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}")
resp.setContentLength(respResult.size)
resp.contentType = "application/json; charset=utf-8"
resp.addHeader("Content-Encoding", "deflate")
try {
resp.outputStream.write(respResult)
} catch (e: EofException) {
logger.warn("Client closed connection")
}
}
/**
* Filter games that are not diva
*/
override fun shouldNotFilter(req: HttpServletRequest) =
!(req.servletPath.startsWith("/g") && !req.servletPath.startsWith("/g/diva"))
}