mirror of https://github.com/hykilpikonna/AquaDX
[F] Fix diva request mapping
parent
b589c78cfc
commit
2fa153e569
|
@ -140,14 +140,14 @@ public class DivaController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = "", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
|
@PostMapping(value = "/", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
|
||||||
public String formRequest(HttpServletRequest request) throws IOException {
|
public String formRequest(HttpServletRequest request) throws IOException {
|
||||||
String bodyStr = new String(request.getInputStream().readAllBytes());
|
String bodyStr = new String(request.getInputStream().readAllBytes());
|
||||||
Map<String, Object> body = parse(bodyStr);
|
Map<String, Object> body = parse(bodyStr);
|
||||||
|
|
||||||
String command = (String) body.getOrDefault("cmd", "");
|
String command = (String) body.getOrDefault("cmd", "");
|
||||||
|
|
||||||
logger.info("{}: {}", command, body.toString());
|
logger.info("{}: {}", command, body);
|
||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
|
|
||||||
|
|
|
@ -19,23 +19,23 @@ import java.util.*
|
||||||
@Component
|
@Component
|
||||||
class DivaCompressionFilter : OncePerRequestFilter() {
|
class DivaCompressionFilter : OncePerRequestFilter() {
|
||||||
companion object {
|
companion object {
|
||||||
val logger: Logger = LoggerFactory.getLogger(DivaCompressionFilter::class.java)
|
val log: Logger = LoggerFactory.getLogger(DivaCompressionFilter::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun doFilterInternal(req: HttpServletRequest, resp: HttpServletResponse, chain: FilterChain) {
|
override fun doFilterInternal(req: HttpServletRequest, resp: HttpServletResponse, chain: FilterChain) {
|
||||||
logger.debug(">>> DIVA Incoming request: ${req.servletPath}")
|
log.debug(">>> DIVA Incoming request: ${req.servletPath}")
|
||||||
logger.debug("> ${req.headerNames.toList().map { it to req.getHeader(it) }}")
|
log.debug("> ${req.headerNames.toList().map { it to req.getHeader(it) }}")
|
||||||
val encoding = req.getHeader("pragma")
|
val encoding = req.getHeader("pragma")
|
||||||
val reqSrc = req.inputStream.readAllBytes()
|
val reqSrc = req.inputStream.readAllBytes()
|
||||||
|
|
||||||
logger.debug("> Encoding: $encoding")
|
log.debug("> Encoding: $encoding")
|
||||||
|
|
||||||
var reqResult: ByteArray?
|
var reqResult: ByteArray?
|
||||||
if (encoding != null && encoding == "DFI") {
|
if (encoding != null && encoding == "DFI") {
|
||||||
logger.debug("> Request length (compressed): ${reqSrc.size}")
|
log.debug("> Request length (compressed): ${reqSrc.size}")
|
||||||
reqResult = Base64.getMimeDecoder().decode(reqSrc)
|
reqResult = Base64.getMimeDecoder().decode(reqSrc)
|
||||||
reqResult = Compression.decompress(reqResult)
|
reqResult = Compression.decompress(reqResult)
|
||||||
logger.debug("> Request length (decompressed): ${reqResult.size}")
|
log.debug("> Request length (decompressed): ${reqResult.size}")
|
||||||
} else {
|
} else {
|
||||||
reqResult = reqSrc
|
reqResult = reqSrc
|
||||||
}
|
}
|
||||||
|
@ -46,10 +46,10 @@ class DivaCompressionFilter : OncePerRequestFilter() {
|
||||||
chain.doFilter(requestWrapper, responseWrapper)
|
chain.doFilter(requestWrapper, responseWrapper)
|
||||||
|
|
||||||
val respSrc = responseWrapper.toByteArray()
|
val respSrc = responseWrapper.toByteArray()
|
||||||
logger.debug(">>> DIVA Outgoing response: $respSrc")
|
log.debug(">>> DIVA Outgoing response: $respSrc")
|
||||||
logger.debug("> Response length (uncompressed): ${respSrc.size}")
|
log.debug("> Response length (uncompressed): ${respSrc.size}")
|
||||||
var respResult = Compression.compress(respSrc)
|
var respResult = Compression.compress(respSrc)
|
||||||
logger.debug("> Response length (compressed): ${respResult.size}")
|
log.debug("> Response length (compressed): ${respResult.size}")
|
||||||
respResult = Base64.getMimeEncoder().encode(respResult)
|
respResult = Base64.getMimeEncoder().encode(respResult)
|
||||||
|
|
||||||
resp.setContentLength(respResult.size)
|
resp.setContentLength(respResult.size)
|
||||||
|
@ -58,7 +58,7 @@ class DivaCompressionFilter : OncePerRequestFilter() {
|
||||||
try {
|
try {
|
||||||
resp.outputStream.write(respResult)
|
resp.outputStream.write(respResult)
|
||||||
} catch (e: EofException) {
|
} catch (e: EofException) {
|
||||||
Companion.logger.warn("- EOF: Client closed connection when writing result")
|
log.warn("- EOF: Client closed connection when writing result :(")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue