Fixed startup and store in db.

This commit is contained in:
Willem Cazander 2023-09-25 16:33:33 +02:00
parent 73f201bdac
commit b93f1d7ef1
15 changed files with 172 additions and 107 deletions

View file

@ -25,5 +25,6 @@
<!-- Package limits. -->
<logger level="INFO" name="org.eclipse.jetty"/>
<logger level="INFO" name="jakarta.json.spi"/>
</configuration>

View file

@ -16,6 +16,10 @@
<groupId>${project.groupId}</groupId>
<artifactId>no2all-wire-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.parsson</groupId>
<artifactId>parsson</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>

View file

@ -0,0 +1,56 @@
package love.distributedrebirth.no2all.zerofungus;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.sql.DataSource;
import jakarta.json.Json;
import jakarta.json.JsonWriter;
import love.distributedrebirth.no2all.nostr.model.event.NoStrEvent;
import love.distributedrebirth.no2all.react.No2AllReact;
import love.distributedrebirth.no2all.react.No2AllReactSlot;
import love.distributedrebirth.no2all.react.No2AllReactSlotLoad;
import love.distributedrebirth.no2all.react.No2AllReactSlotSignal;
import love.distributedrebirth.no2all.react.No2AllReactTypeScript;
import love.distributedrebirth.no2all.react.nostr.server.relay.NoStrArtServerRelayStoreEvent;
import love.distributedrebirth.no2all.react.nostr.server.relay.NoStrRtsServerRelay;
public class ZFunRtsServer implements No2AllReactTypeScript {
public static final No2AllReactSlot API = No2AllReactSlot.ofClass(ZFunRtsServer.class);
private static final Logger logger = Logger.getLogger(ZFunRtsServer.class.getName());
@Override
public void onEvent(No2AllReactSlotSignal<No2AllReactSlotLoad> signal) {
No2AllReact react = signal.getReact();
react.claim(API);
DataSource ds = react.service(DataSource.class);
react.registrate(NoStrRtsServerRelay.API, NoStrArtServerRelayStoreEvent.class, storeEvent -> {
logger.info("Store event: " + storeEvent.getData().getEvent().getId().getHexDipavali());
NoStrEvent event = storeEvent.getData().getEvent();
StringWriter jsonStr = new StringWriter();
try (JsonWriter writer = Json.createWriter(jsonStr)) {
writer.write(event.toBible());
}
try (Connection conn = ds.getConnection()) {
String sql = "INSERT INTO \"ᔆʸᔆᐪᓫᔿ\".\"ᔆᐪᣔᒼᒽᑉ\" (\"ᑊᑊᐣ\",\"ᣖᓑᒃᒽᑉᓫᔾ\",\"ᒼᣗᓫᣔᐪᓫᐝᒄᐪ\",\"ᑊᑉᑊᣕᒄ\",\"ᒄᓫᒻᐪᣔᕐ\",\"ᓫᕁᣖᑊᣗᓫᐝᒄᐪ\",\"ᣗᣔᒡᒢ\") VALUES (?,?,?,?,?,?,?)";
PreparedStatement prep = conn.prepareStatement(sql);
prep.setString(1, event.getId().getHex());
prep.setString(2, event.getPayload().getPublicKey().getHex());
prep.setDate(3, new java.sql.Date(event.getPayload().getCreatedAt().toEpochMilli()));
prep.setInt(4, event.getPayload().getKind().getNumber());
prep.setString(5, null); // del tag
prep.setString(6, null); // exp date
prep.setString(7, jsonStr.toString());
prep.executeUpdate();
} catch (SQLException e) {
logger.warning(e.getMessage());
}
});
}
}

View file

@ -7,17 +7,14 @@ import love.distributedrebirth.no2all.react.No2AllReactSlotLoad;
import love.distributedrebirth.no2all.react.No2AllReactSlotSignal;
import love.distributedrebirth.no2all.react.No2AllReactTypeScript;
public class ZFunServer implements No2AllReactTypeScript {
public class ZFunRtsServerBooted implements No2AllReactTypeScript {
public static final No2AllReactSlot API = No2AllReactSlot.ofClass(ZFunServer.class);
private static final Logger logger = Logger.getLogger(ZFunServer.class.getName());
public static final No2AllReactSlot API = No2AllReactSlot.ofClass(ZFunRtsServerBooted.class);
private static final Logger logger = Logger.getLogger(ZFunRtsServerBooted.class.getName());
@Override
public void onEvent(No2AllReactSlotSignal<No2AllReactSlotLoad> signal) {
signal.getReact().claim(API);
// TODO: reg and refire events
logger.info("╔═╗┌─┐┬─┐┌─┐ .╔═╗┬ ┬┌┐┌╔═╗┬ ┬┌─┐");
logger.info("╔═╝├┤ ├┬┘│ │ . ╠╣ │ ││││║ ╦│ │└─┐");
logger.info("╚═╝└─┘┴└─└─┘. ╚ └─┘┘└┘╚═╝└─┘└─┘");

View file

@ -1,7 +1,12 @@
package love.distributedrebirth.no2all.zerofungus;
import love.distributedrebirth.no2all.react.nostr.client.NoStrRtsClient;
import love.distributedrebirth.no2all.react.nostr.server.NoStrRtsServer;
import love.distributedrebirth.no2all.react.nostr.server.relay.NoStrRtsServerRelay;
import love.distributedrebirth.no2all.react.nostr.server.relay.NoStrRtsServerRelaySubs;
import love.distributedrebirth.no2all.react.warp.No2AllReactWarpCore;
import love.distributedrebirth.no2all.react.warp.No2AllRtsWarpSpeedMonitor;
import love.distributedrebirth.no2all.react.wire.client.No2AllRtsClient;
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServer;
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServerLog;
import love.distributedrebirth.no2all.zerofungus.service.ZFunRtsConfigJetty;
@ -23,14 +28,29 @@ public enum ZeroFungus /*implements BãßBȍőnAbacusInstanceMBeanʸᴰ<ZeroFung
}
public void start() {
// setup logger + warp monitor
foei.load(new ZFunRtsConfigLogger());
foei.load(new No2AllRtsWarpSpeedMonitor());
// add websocket wire support + log
foei.load(new No2AllRtsClient());
foei.load(new No2AllRtsServer());
foei.load(new No2AllRtsServerLog());
foei.load(ZFunRtsConfigJetty.INSTANCE);
foei.load(new ZFunRtsInitJdbc(foei));
foei.load(new ZFunServer());
// add nostr support
foei.load(new NoStrRtsClient());
foei.load(new NoStrRtsServer());
foei.load(new NoStrRtsServerRelay());
foei.load(new NoStrRtsServerRelaySubs());
// config zero fungus servers and clients
foei.load(new ZFunRtsInitJdbc(foei));
foei.load(new ZFunRtsServer());
//foei.load(new ZFunRtsClientReplay());
// start jetty
foei.load(ZFunRtsConfigJetty.INSTANCE);
foei.load(new ZFunRtsServerBooted());
ZFunRtsConfigJetty.INSTANCE.join();
}
}

View file

@ -27,10 +27,6 @@ import love.distributedrebirth.no2all.react.No2AllReactSlotLoad;
import love.distributedrebirth.no2all.react.No2AllReactSlotSignal;
import love.distributedrebirth.no2all.react.No2AllReactTypeScript;
import love.distributedrebirth.no2all.react.wire.server.No2AllActServer;
import love.distributedrebirth.no2all.react.wire.server.No2AllActServerSocketSendMessage;
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServer;
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocket;
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocketOnMessage;
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServer;
import love.distributedrebirth.no2all.wire.jetty.JettyWireServerEndpoint;
import love.distributedrebirth.no2all.zerofungus.web.RedirectServlet;
@ -93,29 +89,17 @@ public enum ZFunRtsConfigJetty implements No2AllReactTypeScript {
No2AllReact react = signal.getReact();
server.addEventListener(new Listener() {
@Override
public void lifeCycleStarted(LifeCycle event) {
// auto reply
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
No2AllReactSlot serverSlot = artServer.getData().getSlot();
react.registrate(serverSlot, No2AllArtServerSocket.class, artSocket -> {
No2AllReactSlot socketSlot = artSocket.getData().getSlot();
react.registrate(socketSlot, No2AllArtServerSocketOnMessage.class, artMsg -> {
react.fire(socketSlot,
new No2AllActServerSocketSendMessage("RE: " + artMsg.getData().getMessage()));
});
});
});
react.fire(No2AllRtsServer.API, new No2AllActServer(endpoint1));
react.fire(No2AllRtsServer.API, new No2AllActServer(endpoint2));
react.fire(No2AllRtsServer.API, new No2AllActServer(endpoint3));
}
});
try {
logger.info("start");
logger.info("start jetty");
server.start();
logger.info("start done");
logger.info("jetty started");
} catch (Exception e) {
throw new IllegalStateException(e);
}

View file

@ -1,7 +1,5 @@
package love.distributedrebirth.no2all.zerofungus.service;
import java.io.File;
import java.net.MalformedURLException;
import java.util.logging.Logger;
import org.slf4j.LoggerFactory;
@ -20,32 +18,26 @@ public class ZFunRtsConfigLogger implements No2AllReactTypeScript {
@Override
public void onEvent(No2AllReactSlotSignal<No2AllReactSlotLoad> signal) {
if (System.getProperty("logback.configurationFile") != null) {
File logConfig = null;
if (System.getProperty("logback.configurationFile") == null) {
String logConfig = null;
if (System.getProperty("java.class.path").contains("classes")) {
logConfig = new File("conf/logback-server-console.xml");
logConfig = "conf/logback-server-console.xml";
} else {
logConfig = new File("conf/logback-server.xml");
}
try {
System.setProperty("logback.configurationFile", logConfig.toURI().toURL().toExternalForm());
} catch (MalformedURLException e) {
e.printStackTrace();
logConfig = "conf/logback-server.xml";
}
System.setProperty("logback.configurationFile", logConfig);
}
System.setProperty("logback.statusListenerClass",NopStatusListener.class.getName());
System.setProperty("logback.configurationFile","conf/logback-server-console.xml");
org.slf4j.Logger logger2 = LoggerFactory.getLogger("MyTest");
logger2.debug("Hello world.");
if (System.getProperty("logback.statusListenerClass") == null) {
System.setProperty("logback.statusListenerClass",NopStatusListener.class.getName());
}
org.slf4j.Logger logger2 = LoggerFactory.getLogger(ZFunRtsConfigLogger.class);
logger2.info("Logging configured.");
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
logger.info("Logging configured");
logger.info(" ╦┌─┐╔╦╗╔╦╗┬ ┬ ╔═╗┌─┐╦ ╦╔═╗┬─┐┌┬┐");
logger.info(" ║├┤ ║ ║ └┬┘ ╠═╝│ │║║║║╣ ├┬┘ ││");
logger.info("╚╝└─┘ ╩ ╩ ┴ ╩ └─┘╚╩╝╚═╝┴└──┴┘");
logger.info(" ╦┬ ┬╦ ╦═╗┌─┐╦ ╦┬╦═╗┌─┐╔╦╗");
logger.info(" ║│ │║ ╠╦╝├┤ ║║║│╠╦╝├┤ ║║");
logger.info("╚╝└─┘╩═╝ ╩╚═└─┘╚╩╝┴╩╚═└─┘═╩╝");
//https://patorjk.com/software/taag
// Calvin S
}