123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package at.acdp.urweb.web;
- import java.nio.file.Paths;
- import at.acdp.urweb.ScReadThread;
- import at.acdp.urweb.sclient.URLog;
- import io.undertow.Handlers;
- import io.undertow.Undertow;
- import io.undertow.server.HttpHandler;
- import io.undertow.server.HttpServerExchange;
- import io.undertow.server.handlers.resource.PathResourceManager;
- import org.slf4j.LoggerFactory;
- import static io.undertow.Handlers.resource;
- public class WebServer {
- private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class);
- private final int port;
- private final ScReadThread sc;
- private Undertow server;
- public WebServer(int port, boolean debug, ScReadThread sc) {
- this.sc = sc;
- this.port = port;
- }
- public void start() {
- Undertow.Builder builder = Undertow.builder();
- builder.addHttpListener(port, "0.0.0.0");
- builder.setHandler(Handlers.routing()
- .post("/cmd", new HttpHandler() {
- @Override
- public void handleRequest(HttpServerExchange ex) throws Exception {
- if (ex.isInIoThread()) {
- ex.dispatch(this);
- return;
- }
- ex.startBlocking();
- byte[] bytes = ex.getInputStream().readAllBytes();
- String cmd=new String(bytes);
- String[] lines=cmd.split("[\\r\\n]+");
- String res="";
- for(String line:lines) {
- line=line.trim();
- if(line.startsWith("//"))
- continue;
- if(line.startsWith("#"))
- continue;
- if(!line.endsWith("\n"))
- line+="\n";
- res+=line;
- }
- if(!cmd.endsWith("\n"))
- cmd+="\n";
- sc.writeCmd(cmd);
- }
- })
- .get("/log/{from}", ex -> {
- var x=ex.getQueryParameters().get("from").getFirst();
- int from= Integer.parseInt(ex.getQueryParameters().get("from").getFirst());
- from=Integer.max(0,from);
- var r = URLog.get(from);
- ex.getResponseSender().send(r.toJSON().toString());
- })
- .get("/test/{id}", ex -> {
- System.out.println(ex.getQueryParameters().get("id").getFirst());
- })
- .get("/*", resource(new PathResourceManager(Paths.get("webroot"), 100))
- .setDirectoryListingEnabled(true))
- );
- server = builder.build();
- server.start();
- }
- }
|