Package fi.iki.elonen

Class SimpleWebServer


  • public class SimpleWebServer
    extends NanoHTTPD
    • 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
      • 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)
      • 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)
      • 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.)

        Overrides:
        serve in class NanoHTTPD
        Parameters:
        session - The HTTP session
        Returns:
        HTTP response, see class Response for details
      • 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)