[M] Move game URLs

pull/14/head
Azalea 2024-02-25 21:42:58 -05:00
parent eb960209bf
commit cb96b5fa8f
12 changed files with 78 additions and 103 deletions

View File

@ -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/"
}
}

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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");
}
}

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"))
}

View File

@ -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;

View File

@ -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;

View File

@ -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;