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