import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.security.KeyStore; import java.util.logging.Level; import java.util.logging.Logger; import javax.net.ssl.*; static class MyHTTPD extends NanoWebSocketServer { *(int port) { super(port); } public Response serve(String uri, Method method, Map header, Map parms, Map files) { S remoteAddr = header.get("remote-addr"); print("Serving URI: " + quote(uri) + " to: " + remoteAddr); /*if (nempty(remoteAddr) && isTrue(callOpt(mc(), "isBlockedIP", remoteAddr))) { print("BLOCKED IP."); ret serve404(); }*/ try { Response response = cast callOpt(getMainClass(), "serve", uri, method, header, parms, files); if (response != null) ret response; S html = callHtmlMethod(getMainClass(), uri, parms); if (html != null) ret serveHTML(html); ret serve404(); } catch (Throwable e) { printStackTrace(e); ret serveHTML("ERROR."); } } } static MyHTTPD serveHttpWithWebsockets_server; static int serveHttpWithWebsockets_port = 8888; static new TreeSet serveHttpWithWebsockets_peers; static int serveHttpWithWebsockets(int port) ctex { serveHttpWithWebsockets_port = port; serveHttpWithWebsockets_server = new MyHTTPD(port); serveHttpWithWebsockets_server.start(); ret serveHttpWithWebsockets_port(); } // serve on random port, return port number used static int serveHttpWithWebsockets() { serveHttpWithWebsockets(0); ret serveHttpWithWebsockets_port(); } static int serveHttpWithWebsockets_port() { ret serveHttpWithWebsockets_server == null ? 0 : serveHttpWithWebsockets_server.getListeningPort(); } static void cleanMeUp_serveHttpWithWebsockets() { if (serveHttpWithWebsockets_server != null) { serveHttpWithWebsockets_server.stop(); serveHttpWithWebsockets_server = null; } }