WebServer.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. String cmd=new String(bytes);
  34. String[] lines=cmd.split("[\\r\\n]+");
  35. String res="";
  36. for(String line:lines) {
  37. line=line.trim();
  38. if(line.startsWith("//"))
  39. continue;
  40. if(line.startsWith("#"))
  41. continue;
  42. if(!line.endsWith("\n"))
  43. line+="\n";
  44. res+=line;
  45. }
  46. if(!cmd.endsWith("\n"))
  47. cmd+="\n";
  48. sc.writeCmd(cmd);
  49. }
  50. })
  51. .get("/log", ex -> {
  52. //ex.getOutputStream().
  53. // System.out.println(ex.getQueryParameters().get("id").getFirst());
  54. })
  55. .get("/test/{id}", ex -> {
  56. System.out.println(ex.getQueryParameters().get("id").getFirst());
  57. })
  58. .get("/*", resource(new PathResourceManager(Paths.get("webroot"), 100))
  59. .setDirectoryListingEnabled(true))
  60. );
  61. server = builder.build();
  62. server.start();
  63. }
  64. }