Package fi.iki.elonen
Class SimpleWebServer
- java.lang.Object
-
- fi.iki.elonen.NanoHTTPD
-
- fi.iki.elonen.SimpleWebServer
-
public class SimpleWebServer extends NanoHTTPD
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class fi.iki.elonen.NanoHTTPD
NanoHTTPD.AsyncRunner, NanoHTTPD.ClientHandler, NanoHTTPD.ContentType, NanoHTTPD.Cookie, NanoHTTPD.CookieHandler, NanoHTTPD.DefaultAsyncRunner, NanoHTTPD.DefaultServerSocketFactory, NanoHTTPD.DefaultTempFile, NanoHTTPD.DefaultTempFileManager, NanoHTTPD.HTTPSession, NanoHTTPD.IHTTPSession, NanoHTTPD.Method, NanoHTTPD.Response, NanoHTTPD.ResponseException, NanoHTTPD.SecureServerSocketFactory, NanoHTTPD.ServerRunnable, NanoHTTPD.ServerSocketFactory, NanoHTTPD.TempFile, NanoHTTPD.TempFileManager, NanoHTTPD.TempFileManagerFactory
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ACCESS_CONTROL_ALLOW_HEADER_PROPERTY_NAME
private static java.lang.String
ALLOWED_METHODS
private java.lang.String
cors
(package private) static java.lang.String
DEFAULT_ALLOWED_HEADERS
static java.util.List<java.lang.String>
INDEX_FILE_NAMES
Default Index file names.private static java.lang.String
LICENCE
The distribution licenceprivate static int
MAX_AGE
private static java.util.Map<java.lang.String,WebServerPlugin>
mimeTypeHandlers
private boolean
quiet
protected java.util.List<java.io.File>
rootDirs
-
Fields inherited from class fi.iki.elonen.NanoHTTPD
asyncRunner, MIME_HTML, MIME_PLAINTEXT, MIME_TYPES, SOCKET_READ_TIMEOUT
-
-
Constructor Summary
Constructors Constructor Description SimpleWebServer(java.lang.String host, int port, java.io.File wwwroot, boolean quiet)
SimpleWebServer(java.lang.String host, int port, java.io.File wwwroot, boolean quiet, java.lang.String cors)
SimpleWebServer(java.lang.String host, int port, java.util.List<java.io.File> wwwroots, boolean quiet)
SimpleWebServer(java.lang.String host, int port, java.util.List<java.io.File> wwwroots, boolean quiet, java.lang.String cors)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected NanoHTTPD.Response
addCORSHeaders(java.util.Map<java.lang.String,java.lang.String> queryHeaders, NanoHTTPD.Response resp, java.lang.String cors)
private java.lang.String
calculateAllowHeaders(java.util.Map<java.lang.String,java.lang.String> queryHeaders)
private boolean
canServeUri(java.lang.String uri, java.io.File homeDir)
private NanoHTTPD.Response
defaultRespond(java.util.Map<java.lang.String,java.lang.String> headers, NanoHTTPD.IHTTPSession session, java.lang.String uri)
private java.lang.String
encodeUri(java.lang.String uri)
URL-encodes everything between "/"-characters.private java.lang.String
findIndexFileInDirectory(java.io.File directory)
protected NanoHTTPD.Response
getForbiddenResponse(java.lang.String s)
protected NanoHTTPD.Response
getInternalErrorResponse(java.lang.String s)
protected NanoHTTPD.Response
getNotFoundResponse()
void
init()
Used to initialize and customize the server.protected java.lang.String
listDirectory(java.lang.String uri, java.io.File f)
static void
main(java.lang.String[] args)
Starts as a standalone file server and waits for Enter.private NanoHTTPD.Response
newFixedFileResponse(java.io.File file, java.lang.String mime)
static NanoHTTPD.Response
newFixedLengthResponse(NanoHTTPD.Response.IStatus status, java.lang.String mimeType, java.lang.String message)
protected static void
registerPluginForMimeType(java.lang.String[] indexFiles, java.lang.String mimeType, WebServerPlugin plugin, java.util.Map<java.lang.String,java.lang.String> commandLineOptions)
private NanoHTTPD.Response
respond(java.util.Map<java.lang.String,java.lang.String> headers, NanoHTTPD.IHTTPSession session, java.lang.String uri)
NanoHTTPD.Response
serve(NanoHTTPD.IHTTPSession session)
Override this to customize the server.(package private) NanoHTTPD.Response
serveFile(java.lang.String uri, java.util.Map<java.lang.String,java.lang.String> header, java.io.File file, java.lang.String mime)
Serves file from homeDir and its' subdirectories (only).-
Methods inherited from class fi.iki.elonen.NanoHTTPD
closeAllConnections, createClientHandler, createServerRunnable, decodeParameters, decodeParameters, decodePercent, getHostname, getListeningPort, getMimeTypeForFile, getServerSocketFactory, getTempFileManagerFactory, isAlive, makeSecure, makeSSLSocketFactory, makeSSLSocketFactory, makeSSLSocketFactory, mimeTypes, newChunkedResponse, newFixedLengthResponse, newFixedLengthResponse, serve, setAsyncRunner, setServerSocketFactory, setTempFileManagerFactory, start, start, start, stop, useGzipWhenAccepted, wasStarted
-
-
-
-
Field Detail
-
INDEX_FILE_NAMES
public static final java.util.List<java.lang.String> INDEX_FILE_NAMES
Default Index file names.
-
LICENCE
private static final java.lang.String LICENCE
The distribution licence
-
mimeTypeHandlers
private static java.util.Map<java.lang.String,WebServerPlugin> mimeTypeHandlers
-
quiet
private final boolean quiet
-
cors
private final java.lang.String cors
-
rootDirs
protected java.util.List<java.io.File> rootDirs
-
ALLOWED_METHODS
private static final java.lang.String ALLOWED_METHODS
- See Also:
- Constant Field Values
-
MAX_AGE
private static final int MAX_AGE
- See Also:
- Constant Field Values
-
DEFAULT_ALLOWED_HEADERS
static final java.lang.String DEFAULT_ALLOWED_HEADERS
- See Also:
- Constant Field Values
-
ACCESS_CONTROL_ALLOW_HEADER_PROPERTY_NAME
public static final java.lang.String ACCESS_CONTROL_ALLOW_HEADER_PROPERTY_NAME
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SimpleWebServer
public SimpleWebServer(java.lang.String host, int port, java.io.File wwwroot, boolean quiet, java.lang.String cors)
-
SimpleWebServer
public SimpleWebServer(java.lang.String host, int port, java.io.File wwwroot, boolean quiet)
-
SimpleWebServer
public SimpleWebServer(java.lang.String host, int port, java.util.List<java.io.File> wwwroots, boolean quiet)
-
SimpleWebServer
public SimpleWebServer(java.lang.String host, int port, java.util.List<java.io.File> wwwroots, boolean quiet, java.lang.String cors)
-
-
Method Detail
-
main
public static void main(java.lang.String[] args)
Starts as a standalone file server and waits for Enter.
-
registerPluginForMimeType
protected static void registerPluginForMimeType(java.lang.String[] indexFiles, java.lang.String mimeType, WebServerPlugin plugin, java.util.Map<java.lang.String,java.lang.String> commandLineOptions)
-
canServeUri
private boolean canServeUri(java.lang.String uri, java.io.File homeDir)
-
encodeUri
private java.lang.String encodeUri(java.lang.String uri)
URL-encodes everything between "/"-characters. Encodes spaces as '%20' instead of '+'.
-
findIndexFileInDirectory
private java.lang.String findIndexFileInDirectory(java.io.File directory)
-
getForbiddenResponse
protected NanoHTTPD.Response getForbiddenResponse(java.lang.String s)
-
getInternalErrorResponse
protected NanoHTTPD.Response getInternalErrorResponse(java.lang.String s)
-
getNotFoundResponse
protected NanoHTTPD.Response getNotFoundResponse()
-
init
public void init()
Used to initialize and customize the server.
-
listDirectory
protected java.lang.String listDirectory(java.lang.String uri, java.io.File f)
-
newFixedLengthResponse
public static NanoHTTPD.Response newFixedLengthResponse(NanoHTTPD.Response.IStatus status, java.lang.String mimeType, java.lang.String message)
-
respond
private NanoHTTPD.Response respond(java.util.Map<java.lang.String,java.lang.String> headers, NanoHTTPD.IHTTPSession session, java.lang.String uri)
-
defaultRespond
private NanoHTTPD.Response defaultRespond(java.util.Map<java.lang.String,java.lang.String> headers, NanoHTTPD.IHTTPSession session, java.lang.String uri)
-
serve
public NanoHTTPD.Response serve(NanoHTTPD.IHTTPSession session)
Description copied from class:NanoHTTPD
Override this to customize the server. (By default, this returns a 404 "Not Found" plain text error response.)
-
serveFile
NanoHTTPD.Response serveFile(java.lang.String uri, java.util.Map<java.lang.String,java.lang.String> header, java.io.File file, java.lang.String mime)
Serves file from homeDir and its' subdirectories (only). Uses only URI, ignores all headers and HTTP parameters.
-
newFixedFileResponse
private NanoHTTPD.Response newFixedFileResponse(java.io.File file, java.lang.String mime) throws java.io.FileNotFoundException
- Throws:
java.io.FileNotFoundException
-
addCORSHeaders
protected NanoHTTPD.Response addCORSHeaders(java.util.Map<java.lang.String,java.lang.String> queryHeaders, NanoHTTPD.Response resp, java.lang.String cors)
-
calculateAllowHeaders
private java.lang.String calculateAllowHeaders(java.util.Map<java.lang.String,java.lang.String> queryHeaders)
-
-