Added ZilLaLa servlet filter
This commit is contained in:
parent
597d69b0a7
commit
e2ded94f91
|
@ -44,8 +44,8 @@ import love.distributedrebirth.nx01.warp.fault.sitra.ZilLaLaManyfestoSectionGoal
|
|||
public class ReportSitraFaultWarpVersion implements SitraManifestReportProvider {
|
||||
|
||||
private static final String GOAL_SCORE = ZilLaLaManyfestoSectionGoal.BIMBAMBOO.spaceCadet(ZilLaLaManyfestoSectionChampionsLeague.BIMBAMBOO_MAVEN);
|
||||
private final static String WARP_FAULT_GROUP_ID = "love.distributedrebirth.bassboon";
|
||||
private final static String WARP_FAULT_ARTIFACT_ID = "bassboon-warp-fault";
|
||||
private final static String WARP_FAULT_GROUP_ID = "love.distributedrebirth.nx01";
|
||||
private final static String WARP_FAULT_ARTIFACT_ID = "nx01-warp-fault";
|
||||
private final static String POM_VERSION_PROPERTY_KEY = "version";
|
||||
private final static String POM_PROPERTIES_RESOURCE = "/META-INF/maven/" + WARP_FAULT_GROUP_ID + "/" + WARP_FAULT_ARTIFACT_ID + "/pom.properties";
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ package love.distributedrebirth.nx01.zerofungus.server.service;
|
|||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
|
@ -48,6 +49,7 @@ import org.eclipse.jetty.webapp.WebInfConfiguration;
|
|||
import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
|
||||
import org.h2.server.web.JakartaWebServlet;
|
||||
|
||||
import jakarta.servlet.DispatcherType;
|
||||
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllActServer;
|
||||
import love.distributedrebirth.nx01.no2all.wire.jetty.JettyWireServerEndpoint;
|
||||
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
|
||||
|
@ -58,6 +60,7 @@ import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
|
|||
import love.distributedrebirth.nx01.zerofungus.server.ZeroFungus;
|
||||
import love.distributedrebirth.nx01.zerofungus.server.web.RedirectServlet;
|
||||
import love.distributedrebirth.nx01.zerofungus.server.web.WarpCorePlasmaInspectorServlet;
|
||||
import love.distributedrebirth.nx01.zerofungus.server.web.ZilLaLaFaultFilter;
|
||||
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
|
@ -100,6 +103,8 @@ public final class ZFunRtsConfigJetty implements WarpReactTypeScript {
|
|||
wsNether = new JettyWireServerEndpoint(wsContainer, "/ws/nether");
|
||||
});
|
||||
|
||||
context.addFilter(ZilLaLaFaultFilter.class, "/debug/*", EnumSet.of(DispatcherType.REQUEST));
|
||||
|
||||
logger.info("Add H2 console on: /debug/jdbc/console");
|
||||
context.addServlet(JakartaWebServlet.class, "/debug/jdbc/console/*");
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
|
||||
package love.distributedrebirth.nx01.zerofungus.server.web;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Writer;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -46,6 +46,8 @@ import love.distributedrebirth.nx01.warp.core.WarpCoreReactor;
|
|||
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
|
||||
import love.distributedrebirth.nx01.zerofungus.server.ZeroFungus;
|
||||
|
||||
/// Prints the plasma slot contracts of the warp core.
|
||||
///
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
public class WarpCorePlasmaInspectorServlet extends HttpServlet {
|
||||
|
@ -56,35 +58,41 @@ public class WarpCorePlasmaInspectorServlet extends HttpServlet {
|
|||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
response.setContentType("text/xml");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
||||
WarpCoreReactor reactor = ZeroFungus.INSTANCE.getWarpCore();
|
||||
List<WarpReactPlasma> slots = reactor.listChilds(null);
|
||||
ContentWriterInspector writer = new ContentWriterInspector(out, response.getCharacterEncoding());
|
||||
BufferedWriter out = new BufferedWriter(response.getWriter());
|
||||
try {
|
||||
ContentWriterInspector writer = new ContentWriterInspector(out, response.getCharacterEncoding());
|
||||
writer.startDocument();
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
atts.addAttribute("", "仙上主天", "", "", "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕");
|
||||
writer.printTagStart(Tag.reactor, atts);
|
||||
for (WarpReactPlasma slot : slots) {
|
||||
WarpCorePlasmaIntermixChamber contract = reactor.getSlotContract(slot);
|
||||
atts = new AttributesImpl();
|
||||
atts.addAttribute ("", "path", "", "", slot.getSlotPath());
|
||||
if ("true".equalsIgnoreCase(request.getParameter("___willem"))) {
|
||||
atts.addAttribute("", "ᒡᒢᑊᒻᒻᓫᔿ", "", "", "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕");
|
||||
}
|
||||
writer.printTagStart(Tag.slot, atts);
|
||||
printClaims(writer, Tag.claimIn, contract.getSlotTypesIn());
|
||||
printClaims(writer, Tag.claimOut, contract.getSlotTypesOut());
|
||||
printRequireServices(writer, contract.getRequireServices());
|
||||
printRequireSlots(writer, contract.getRequireSlots());
|
||||
writer.printTagEnd(Tag.slot);
|
||||
if ("true".equalsIgnoreCase(request.getParameter("___error"))) {
|
||||
throw new SAXException("Oops triggered a ___error");
|
||||
}
|
||||
writer.printTagStart(Tag.reactor, atts);
|
||||
for (WarpReactPlasma slot : slots) {
|
||||
printSlotContract(writer, reactor.getSlotContract(slot));
|
||||
}
|
||||
writer.printTagEnd(Tag.reactor);
|
||||
writer.endDocument();
|
||||
} catch (SAXException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
out.flush();
|
||||
}
|
||||
|
||||
private void printSlotContract(ContentWriterInspector writer, WarpCorePlasmaIntermixChamber contract) throws SAXException {
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
atts.addAttribute("", "path", "", "", contract.getSlot().getSlotPath());
|
||||
writer.printTagStart(Tag.slot, atts);
|
||||
printClaims(writer, Tag.claimIn, contract.getSlotTypesIn());
|
||||
printClaims(writer, Tag.claimOut, contract.getSlotTypesOut());
|
||||
printRequireServices(writer, contract.getRequireServices());
|
||||
printRequireSlots(writer, contract.getRequireSlots());
|
||||
writer.printTagEnd(Tag.slot);
|
||||
}
|
||||
|
||||
private void printClaims(ContentWriterInspector writer, Tag tag, List<Class<?>> clazzes) throws SAXException {
|
||||
|
@ -93,7 +101,10 @@ public class WarpCorePlasmaInspectorServlet extends HttpServlet {
|
|||
}
|
||||
writer.printTagStart(tag);
|
||||
for (Class<?> cls : clazzes) {
|
||||
writer.printTagCharacters(Tag.claimType, cls.toString());
|
||||
AttributesImpl atts = new AttributesImpl();
|
||||
atts.addAttribute("", "className", "", "", cls.getName());
|
||||
atts.addAttribute("", "classTypeName", "", "", cls.getTypeName());
|
||||
writer.printTagStartEnd(Tag.claimType, atts);
|
||||
}
|
||||
writer.printTagEnd(tag);
|
||||
}
|
||||
|
@ -122,8 +133,8 @@ public class WarpCorePlasmaInspectorServlet extends HttpServlet {
|
|||
|
||||
public class ContentWriterInspector extends ContentWriterTagWrapper<Tag, ContentWriterXml> {
|
||||
|
||||
public ContentWriterInspector(Writer out,String encoding) {
|
||||
super(new ContentWriterXml(out, encoding),XMLConstants.XML_SCHEMA_NS_URI, XMLConstants.NULL_NS_URI);
|
||||
public ContentWriterInspector(Writer writer, String encoding) {
|
||||
super(new ContentWriterXml(writer, encoding), XMLConstants.XML_SCHEMA_NS_URI, XMLConstants.NULL_NS_URI);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.nx01.zerofungus.server.web;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.http.HttpFilter;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import love.distributedrebirth.nx01.warp.fault.BassFaultAnchor;
|
||||
import love.distributedrebirth.nx01.warp.fault.FaultStreamDelegate;
|
||||
import love.distributedrebirth.nx01.warp.manifestor.WarpManifestorDriver;
|
||||
import love.distributedrebirth.nx01.warp.manifestor.manifest.WarpManifest3;
|
||||
|
||||
/// Generic fault handler for human interaction.
|
||||
///
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
public class ZilLaLaFaultFilter extends HttpFilter {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final Logger logger = Logger.getLogger(ZilLaLaFaultFilter.class.getName());
|
||||
|
||||
public void init() throws ServletException {
|
||||
logger.fine("ZilLaLa fault filter activacted.");
|
||||
}
|
||||
|
||||
protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
|
||||
try {
|
||||
chain.doFilter(req, res);
|
||||
} catch (Exception error) {
|
||||
if (res.isCommitted()) {
|
||||
throw error;
|
||||
}
|
||||
BassFaultAnchor fault = wrap(error);
|
||||
WarpManifest3 report = fault.toZilLaLaManyfesto();
|
||||
|
||||
// TODO: repack and forward to UI form to inspect AND connect+send into a NOSTR
|
||||
// relay
|
||||
|
||||
res.reset();
|
||||
res.setCharacterEncoding("utf-8");
|
||||
res.setStatus(500);
|
||||
res.setContentType("text/text");
|
||||
PrintWriter out = res.getWriter();
|
||||
WarpManifestorDriver.亞.writeV2StreamChar(report, out);
|
||||
out.flush();
|
||||
|
||||
// logger.warning(fault.toStringZilLaLa());
|
||||
// response.sendRedirect("/powp/error/errmsg.html?title=NotHere&msg=TheEnd");
|
||||
}
|
||||
}
|
||||
|
||||
private BassFaultAnchor wrap(Exception fault) {
|
||||
if (BassFaultAnchor.class.isAssignableFrom(fault.getClass())) {
|
||||
return BassFaultAnchor.class.cast(fault);
|
||||
}
|
||||
return new FaultStreamDelegate(fault, FaultStreamDelegate.class);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
love.distributedrebirth.nx01.warp.fault.report.ReportSitraFaultStackTraceJava3
|
||||
love.distributedrebirth.nx01.warp.fault.report.ReportSitraFaultWarpVersion
|
||||
love.distributedrebirth.nx01.warp.fault.report.ReportSitraRuntimeChapter
|
||||
love.distributedrebirth.nx01.warp.fault.report.ReportSitraRuntimeThreads
|
||||
love.distributedrebirth.nx01.warp.fault.report.ReportSitraSystemChapter
|
||||
love.distributedrebirth.nx01.warp.fault.report.ReportSitraSystemLocale
|
Loading…
Reference in a new issue