Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions mod/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,12 @@ neoForge {
sourceSet(sourceSets.main)
}
}
tasks.named('processResources', ProcessResources) {
from ('../website') {

into 'assets/livechat/web'
}
}
}

// Include resources generated by data generators.
Expand Down
2 changes: 1 addition & 1 deletion mod/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ mod_name=LiveChat
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=GNU AGPL 3.0
# The mod version. See https://semver.org/
mod_version=1.0
mod_version=1.1
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
Expand Down
24 changes: 24 additions & 0 deletions mod/src/main/java/dev/kubabin/livechat/Livechat.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import net.neoforged.neoforge.event.entity.player.PlayerEvent.PlayerLoggedOutEvent;
import org.slf4j.Logger;

import java.io.InputStream;
import java.time.Clock;
import java.util.ArrayDeque;

Expand Down Expand Up @@ -56,6 +57,29 @@ public void onServerStarting(ServerStartingEvent event) {
exchange.getResponseBody().write(response.getBytes());
exchange.close();
});
httpServer.createContext("/api/chat", exchange -> {
String response = gson.toJson(messageQueue);
exchange.getResponseHeaders().add("Content-Type", "application/json");
exchange.sendResponseHeaders(200, response.getBytes().length);
exchange.getResponseBody().write(response.getBytes());
exchange.close();
});
// Serve other static files if needed
httpServer.createContext("/", exchange -> {
String path = exchange.getRequestURI().getPath();
InputStream is = Livechat.class.getResourceAsStream("/assets/livechat/web" + path);
LOGGER.info("Serving static file: {}", path);
if (is == null) {
exchange.sendResponseHeaders(404, -1);
exchange.close();
return;
}
byte[] response = is.readAllBytes();
//exchange.getResponseHeaders().add("Content-Type", "text/plain");
exchange.sendResponseHeaders(200, response.length);
exchange.getResponseBody().write(response);
exchange.close();
});
httpServer.start();
LOGGER.info("Server socket started on port {}", Config.socketPort);
} catch (Exception e) {
Expand Down
28 changes: 28 additions & 0 deletions server.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,34 @@ def serve_analytics_proxy(self, site, table_name):
except (BrokenPipeError, ConnectionResetError):
return

def serve_analytics_proxy(self, table_name):
try:
req = urllib.request.Request(
f"https://raspi.kubabin.dev/api/{table_name}",
headers={"User-Agent": "Mozilla/5.0"},
)
with urllib.request.urlopen(req, timeout=15) as response:
body = response.read()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.send_header("Access-Control-Allow-Origin", "*")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
except (BrokenPipeError, ConnectionResetError):
return
except Exception as exc:
error_body = str(exc).encode("utf-8")
try:
self.send_response(502)
self.send_header("Content-Type", "text/plain; charset=utf-8")
self.send_header("Access-Control-Allow-Origin", "*")
self.send_header("Content-Length", str(len(error_body)))
self.end_headers()
self.wfile.write(error_body)
except (BrokenPipeError, ConnectionResetError):
return


print(f"Serving s1 from: {SITES['s1']['dir']}")
print(f"Serving s2 from: {SITES['s2']['dir']}")
Expand Down
Loading