From 678b0725309d43405e1d3db42558e4092b3bc576 Mon Sep 17 00:00:00 2001 From: ulrich Date: Fri, 26 Mar 2021 11:31:11 +0000 Subject: [PATCH] Quellcode um Kommentare erweitert (noch in Arbeit) --- src/de/uhilger/minsrv/App.java | 57 ++++++++++++++---- src/de/uhilger/minsrv/handler/FileHandler.java | 26 ++++---- src/de/uhilger/minsrv/handler/StopServerHandler.java | 24 ++++---- src/de/uhilger/minsrv/Server.java | 51 ++++++++++++----- 4 files changed, 104 insertions(+), 54 deletions(-) diff --git a/src/de/uhilger/minsrv/App.java b/src/de/uhilger/minsrv/App.java index da44463..f52880e 100644 --- a/src/de/uhilger/minsrv/App.java +++ b/src/de/uhilger/minsrv/App.java @@ -1,19 +1,19 @@ /* - mc2 - Mediacenter neu - Copyright (C) 2021 Ulrich Hilger + mini-server - Ein minimalistischer HTTP-Server + Copyright (C) 2021 Ulrich Hilger - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ package de.uhilger.minsrv; @@ -24,7 +24,8 @@ import java.util.logging.Logger; /** - * + * Die Hauptklasse des mini-server + * * @author ulrich * @version 0.1, 25.03.2021 */ @@ -34,11 +35,29 @@ public static final String IP_PORT = "port"; public static final String IP_WWW_DATA = "www-data"; + public static final String IP_CTX = "ctx"; private static HashMap initParams; /** - * @param args the command line arguments + * Start-Methode dieser Anwendung + * + * Folgende Kommandozeilenparameter werden verarbeitet + * ctx - Kontext des Servers + * www-data - lokales Datenverzeichnis + * port - Port + * + * Beispiel: + * java -jar mini-server.jar ctx="srv" www-data="/home/fred/www" port=9090 + * + * Startet den Server auf http://localhost:9090/srv + * und liefert Inhalte aus dem Verzeichnis /home/fred/www aus. + * + * Ein Aufruf von http://localhost:9090/srv/pfad/zum/inhalt/index.html + * liefert also die Datei 'index.html' aus dem Ordner + * /home/fred/www/pfad/zum/inhalt aus. + * + * @param args Kommandozeilenparameter */ public static void main(String[] args) { initParams = new HashMap(); @@ -55,10 +74,20 @@ } } + /** + * Diese Anwendung stoppen + */ public static void stop() { System.exit(0); } + /** + * Einen Kommandozeilenparameter ermitteln + * + * @param pname Names des Parameters + * @return Inhalt des Parameters oder null, wenn der Parameter + * nicht gefunden wurde + */ public static String getInitParameter(String pname) { String param = null; Object o = initParams.get(pname); diff --git a/src/de/uhilger/minsrv/Server.java b/src/de/uhilger/minsrv/Server.java index 7cee404..1f51964 100644 --- a/src/de/uhilger/minsrv/Server.java +++ b/src/de/uhilger/minsrv/Server.java @@ -1,19 +1,19 @@ /* - mc2 - Mediacenter neu - Copyright (C) 2021 Ulrich Hilger + mini-server - Ein minimalistischer HTTP-Server + Copyright (C) 2021 Ulrich Hilger - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ package de.uhilger.minsrv; @@ -27,8 +27,11 @@ import java.util.concurrent.Executors; /** - * + * Die Klasse Server stellt Methoden zur Ausführung eines + * HTTP-Servers bereit + * * @author ulrich + * @version 0.1, 25.03.2021 */ public class Server { @@ -36,20 +39,38 @@ private int port; + private String ctxName; + public Server(int port) { this.port = port; } + /** + * Den Port angeben, unter dem der Server erreichbar sein soll + * + * @param port der Port, unter dem der Server erreichbar sein soll + */ public void setPort(int port) { this.port = port; } + public void setContextName(String ctxName) { + this.ctxName = ctxName; + } + + /** + * Die Endpunkte ('Context'e) einrichten, unter denen die Dienste + * dieses Servers erreichbar sein sollen und den Server starten + * + * @throws IOException wenn etwas schief geht, finden sich Angaben + * in diesem Objekt + */ public void start() throws IOException { logger.info("Server starting on port " + port); HttpServer server = HttpServer.create(new InetSocketAddress(port), 0); - server.createContext("/mc2/av", new FileHandler(App.getInitParameter(App.IP_WWW_DATA))); - server.createContext("/mc2/server/stop", new StopServerHandler()); + server.createContext(ctxName + "/av", new FileHandler(App.getInitParameter(App.IP_WWW_DATA))); + server.createContext(ctxName + "/server/stop", new StopServerHandler()); server.setExecutor(Executors.newFixedThreadPool(20)); server.start(); } diff --git a/src/de/uhilger/minsrv/handler/FileHandler.java b/src/de/uhilger/minsrv/handler/FileHandler.java index 5cf31b2..d9d12b4 100644 --- a/src/de/uhilger/minsrv/handler/FileHandler.java +++ b/src/de/uhilger/minsrv/handler/FileHandler.java @@ -1,20 +1,20 @@ /* - mc2 - Mediacenter neu - Copyright (C) 2021 Ulrich Hilger + mini-server - Ein minimalistischer HTTP-Server + Copyright (C) 2021 Ulrich Hilger - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. - */ + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ package de.uhilger.minsrv.handler; import com.sun.net.httpserver.Headers; diff --git a/src/de/uhilger/minsrv/handler/StopServerHandler.java b/src/de/uhilger/minsrv/handler/StopServerHandler.java index fb2ef4e..93331fe 100644 --- a/src/de/uhilger/minsrv/handler/StopServerHandler.java +++ b/src/de/uhilger/minsrv/handler/StopServerHandler.java @@ -1,19 +1,19 @@ /* - mc2 - Mediacenter neu - Copyright (C) 2021 Ulrich Hilger + mini-server - Ein minimalistischer HTTP-Server + Copyright (C) 2021 Ulrich Hilger - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ package de.uhilger.minsrv.handler; -- Gitblit v1.9.3