WebServer.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package at.acdp.urweb.web;
  2. import java.nio.file.Paths;
  3. import at.acdp.urweb.ScReadThread;
  4. import io.undertow.Handlers;
  5. import io.undertow.Undertow;
  6. import io.undertow.server.HttpHandler;
  7. import io.undertow.server.HttpServerExchange;
  8. import io.undertow.server.handlers.resource.PathResourceManager;
  9. import org.slf4j.LoggerFactory;
  10. import static io.undertow.Handlers.resource;
  11. public class WebServer {
  12. private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class);
  13. private final int port;
  14. private final ScReadThread sc;
  15. private Undertow server;
  16. public WebServer(int port, boolean debug, ScReadThread sc) {
  17. this.sc = sc;
  18. this.port = port;
  19. }
  20. public void start() {
  21. Undertow.Builder builder = Undertow.builder();
  22. builder.addHttpListener(port, "0.0.0.0");
  23. builder.setHandler(Handlers.routing()
  24. .post("/cmd", new HttpHandler() {
  25. @Override
  26. public void handleRequest(HttpServerExchange ex) throws Exception {
  27. if (ex.isInIoThread()) {
  28. ex.dispatch(this);
  29. return;
  30. }
  31. ex.startBlocking();
  32. byte[] bytes = ex.getInputStream().readAllBytes();
  33. sc.writeCmd(new String(bytes));
  34. }
  35. })
  36. .get("/test/{id}", ex -> {
  37. System.out.println(ex.getQueryParameters().get("id").getFirst());
  38. })
  39. .get("/*", resource(new PathResourceManager(Paths.get("webroot"), 100))
  40. .setDirectoryListingEnabled(true))
  41. );
  42. server = builder.build();
  43. server.start();
  44. }
  45. }