From cb96b5fa8f5308b2ce0780b14849c3b82ac235dd Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 25 Feb 2024 21:42:58 -0500 Subject: [PATCH] [M] Move game URLs --- .../icu/samnyan/aqua/sega/allnet/AllNet.kt | 14 +-- .../icu/samnyan/aqua/sega/allnet/Keychip.kt | 2 +- .../controller/CardMakerController.java | 2 +- .../controller/ChuniServletController.java | 2 +- .../controller/ChusanServletController.java | 2 +- .../sega/diva/controller/DivaController.java | 2 +- .../diva/filter/DivaCompressionFilter.java | 2 +- .../general/filter/CompressionFilter.java | 87 ------------------- .../sega/general/filter/CompressionFilter.kt | 62 +++++++++++++ .../controller/MaimaiServletController.java | 2 +- .../controller/Maimai2ServletController.java | 2 +- .../ongeki/controller/OngekiController.java | 2 +- 12 files changed, 78 insertions(+), 103 deletions(-) delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt diff --git a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt index 0e1683f5..56af1776 100644 --- a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt +++ b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt @@ -155,13 +155,13 @@ class AllNet( val port = props.port?.toString() ?: localPort return when (gameId) { - "SDBT" -> "http://$addr:$port/ChuniServlet/$ver/$serial/" - "SBZV" -> "http://$addr:$port/diva/" - "SDDT" -> "http://$addr:$port/OngekiServlet/" - "SDEY" -> "http://$addr:$port/MaimaiServlet/" - "SDEZ" -> "http://$addr:$port/Maimai2Servlet/" - "SDHD" -> "http://$addr:$port/ChusanServlet/$ver/" - "SDED" -> "http://$addr:$port/CardMakerServlet/" + "SDBT" -> "http://$addr:$port/g/chu2/$ver/$serial/" + "SDHD" -> "http://$addr:$port/g/chu3/$ver/" + "SBZV" -> "http://$addr:$port/g/diva/" + "SDDT" -> "http://$addr:$port/g/ongeki/" + "SDEY" -> "http://$addr:$port/g/mai/" + "SDEZ" -> "http://$addr:$port/g/mai2/" + "SDED" -> "http://$addr:$port/g/card/" else -> "http://$addr:$port/" } } diff --git a/src/main/java/icu/samnyan/aqua/sega/allnet/Keychip.kt b/src/main/java/icu/samnyan/aqua/sega/allnet/Keychip.kt index 7ffe5cdc..fb7e60a4 100644 --- a/src/main/java/icu/samnyan/aqua/sega/allnet/Keychip.kt +++ b/src/main/java/icu/samnyan/aqua/sega/allnet/Keychip.kt @@ -15,7 +15,7 @@ class Keychip( val id: Long = 0, @Column(unique = true, nullable = false) - val keychipId: String = "" + val keychipId: String = "", ) : Serializable { companion object { const val serialVersionUID = 1L diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java index c86c4098..c2c3d165 100644 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java +++ b/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java @@ -15,7 +15,7 @@ import java.util.Map; * @author samnyan (privateamusement@protonmail.com) */ @RestController -@RequestMapping("CardMakerServlet") +@RequestMapping("/g/card") public class CardMakerController { private final GetGameSettingHandler getGameSettingHandler; private final GetClientBookkeepingHandler getClientBookkeepingHandler; diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java index 41b492c3..c7748774 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java @@ -12,7 +12,7 @@ import java.util.Map; * @author samnyan (privateamusement@protonmail.com) */ @RestController -@RequestMapping({"/ChuniServlet/{ROM_VERSION}/{CLIENT_ID}/ChuniServlet", "/ChuniServlet"}) +@RequestMapping("/g/chu2/{ROM_VERSION}/{CLIENT_ID}/ChuniServlet") public class ChuniServletController { private final GameLoginHandler gameLoginHandler; diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/controller/ChusanServletController.java b/src/main/java/icu/samnyan/aqua/sega/chusan/controller/ChusanServletController.java index dbce8059..5990276f 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/controller/ChusanServletController.java +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/controller/ChusanServletController.java @@ -12,7 +12,7 @@ import java.util.Map; * @author samnyan (privateamusement@protonmail.com) */ @RestController -@RequestMapping({"/ChusanServlet/{version}/ChuniServlet", "/ChusanServlet/{version}"}) +@RequestMapping({"/g/chu3/{version}/ChuniServlet", "/g/chu3/{version}"}) public class ChusanServletController { private final GameLoginHandler gameLoginHandler; diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java b/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java index 0bb8e646..a872369f 100644 --- a/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java +++ b/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java @@ -43,7 +43,7 @@ import java.util.stream.Collectors; * @author samnyan (privateamusement@protonmail.com) */ @RestController -@RequestMapping("/diva") +@RequestMapping("/g/diva") public class DivaController { private static final Logger logger = LoggerFactory.getLogger(DivaController.class); diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java b/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java index 0b209093..dba799f7 100644 --- a/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java +++ b/src/main/java/icu/samnyan/aqua/sega/diva/filter/DivaCompressionFilter.java @@ -55,6 +55,6 @@ public class DivaCompressionFilter extends OncePerRequestFilter { @Override protected boolean shouldNotFilter(HttpServletRequest request) { String path = request.getServletPath(); - return !path.startsWith("/diva"); + return !path.startsWith("/g/diva"); } } diff --git a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.java b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.java deleted file mode 100644 index 198e0b72..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.java +++ /dev/null @@ -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 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; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt new file mode 100644 index 00000000..39e1b287 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressionFilter.kt @@ -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")) +} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java b/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java index 37c0b1ba..a47de46a 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java @@ -14,7 +14,7 @@ import jakarta.servlet.http.HttpServletRequest; * @author samnyan (privateamusement@protonmail.com) */ @RestController -@RequestMapping("MaimaiServlet") +@RequestMapping("/g/mai") public class MaimaiServletController { private final GetGameEventHandler getGameEventHandler; diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java index 130ad198..7cc97c7e 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java @@ -13,7 +13,7 @@ import java.util.Map; */ @AllArgsConstructor @RestController -@RequestMapping({ "/Maimai2Servlet/Maimai2Servlet", "/Maimai2Servlet" }) +@RequestMapping({ "/g/mai2/Maimai2Servlet", "/g/mai2" }) public class Maimai2ServletController { private final GetGameSettingHandler getGameSettingHandler; diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiController.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiController.java index bcaa66ee..4c088041 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiController.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiController.java @@ -15,7 +15,7 @@ import java.util.Map; * @author samnyan (privateamusement@protonmail.com) */ @RestController -@RequestMapping("OngekiServlet") +@RequestMapping("/g/ongeki") public class OngekiController { private final GetGameEventHandler getGameEventHandler;