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.StringACCESS_CONTROL_ALLOW_HEADER_PROPERTY_NAMEprivate static java.lang.StringALLOWED_METHODSprivate java.lang.Stringcors(package private) static java.lang.StringDEFAULT_ALLOWED_HEADERSstatic java.util.List<java.lang.String>INDEX_FILE_NAMESDefault Index file names.private static java.lang.StringLICENCEThe distribution licenceprivate static intMAX_AGEprivate static java.util.Map<java.lang.String,WebServerPlugin>mimeTypeHandlersprivate booleanquietprotected 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.ResponseaddCORSHeaders(java.util.Map<java.lang.String,java.lang.String> queryHeaders, NanoHTTPD.Response resp, java.lang.String cors)private java.lang.StringcalculateAllowHeaders(java.util.Map<java.lang.String,java.lang.String> queryHeaders)private booleancanServeUri(java.lang.String uri, java.io.File homeDir)private NanoHTTPD.ResponsedefaultRespond(java.util.Map<java.lang.String,java.lang.String> headers, NanoHTTPD.IHTTPSession session, java.lang.String uri)private java.lang.StringencodeUri(java.lang.String uri)URL-encodes everything between "/"-characters.private java.lang.StringfindIndexFileInDirectory(java.io.File directory)protected NanoHTTPD.ResponsegetForbiddenResponse(java.lang.String s)protected NanoHTTPD.ResponsegetInternalErrorResponse(java.lang.String s)protected NanoHTTPD.ResponsegetNotFoundResponse()voidinit()Used to initialize and customize the server.protected java.lang.StringlistDirectory(java.lang.String uri, java.io.File f)static voidmain(java.lang.String[] args)Starts as a standalone file server and waits for Enter.private NanoHTTPD.ResponsenewFixedFileResponse(java.io.File file, java.lang.String mime)static NanoHTTPD.ResponsenewFixedLengthResponse(NanoHTTPD.Response.IStatus status, java.lang.String mimeType, java.lang.String message)protected static voidregisterPluginForMimeType(java.lang.String[] indexFiles, java.lang.String mimeType, WebServerPlugin plugin, java.util.Map<java.lang.String,java.lang.String> commandLineOptions)private NanoHTTPD.Responserespond(java.util.Map<java.lang.String,java.lang.String> headers, NanoHTTPD.IHTTPSession session, java.lang.String uri)NanoHTTPD.Responseserve(NanoHTTPD.IHTTPSession session)Override this to customize the server.(package private) NanoHTTPD.ResponseserveFile(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:NanoHTTPDOverride 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)
-
-