Class WebAppMediaFilter

  • All Implemented Interfaces:
    javax.servlet.Filter, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.EnvironmentAware, org.springframework.core.env.EnvironmentCapable, org.springframework.web.context.ServletContextAware

    public class WebAppMediaFilter
    extends org.springframework.web.filter.GenericFilterBean
    • Field Detail

      • MEDIAS_RESOURCE_PATH_PREFIX

        public static final java.lang.String MEDIAS_RESOURCE_PATH_PREFIX
        See Also:
        Constant Field Values
      • MEDIAS_RESOURCE_PATH_PREFIXES

        protected static final java.lang.String[] MEDIAS_RESOURCE_PATH_PREFIXES
      • SECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN

        public static final java.lang.String SECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN
        See Also:
        Constant Field Values
      • CONTENT_TYPE_TEXT_PLAIN

        protected static final java.lang.String CONTENT_TYPE_TEXT_PLAIN
        See Also:
        Constant Field Values
      • CONTENT_DISPOSITION

        protected static final java.lang.String CONTENT_DISPOSITION
        See Also:
        Constant Field Values
      • ALLOWED_EXT_FOR_CL

        protected static final java.lang.String ALLOWED_EXT_FOR_CL
        advanced.properties key for setting the allowed extensions when using load from jar (loading with the class loader)
        See Also:
        Constant Field Values
      • HEADER_IF_NONE_MATCH

        protected static final java.lang.String HEADER_IF_NONE_MATCH
        See Also:
        Constant Field Values
      • CTX_SPLITTER

        protected static final com.google.common.base.Splitter CTX_SPLITTER
      • FORCE_DOWNLOAD_DIALOG_FILE_EXTENSIONS

        protected static final java.lang.String FORCE_DOWNLOAD_DIALOG_FILE_EXTENSIONS
        This settings helps to deal with IE8 and IE9 behavior, in case that for a specific file extension a download dialog should pop up, even when 'preview' was pressed.
        See Also:
        Constant Field Values
    • Constructor Detail

      • WebAppMediaFilter

        public WebAppMediaFilter()
    • Method Detail

      • doFilter

        public void doFilter​(javax.servlet.ServletRequest request,
                             javax.servlet.ServletResponse response,
                             javax.servlet.FilterChain chain)
                      throws java.io.IOException,
                             javax.servlet.ServletException
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • isMedia

        protected boolean isMedia​(java.lang.String resourcePath)
      • isSecureMedia

        protected boolean isSecureMedia​(java.lang.String resourcePath)
      • isNotHttpRequestResponse

        protected boolean isNotHttpRequestResponse​(javax.servlet.ServletRequest request,
                                                   javax.servlet.ServletResponse response)
      • setSecureURLRendererForThread

        protected void setSecureURLRendererForThread​(javax.servlet.http.HttpServletRequest httpRequest)
      • unsetSecureURLRendererForThread

        protected void unsetSecureURLRendererForThread()
      • setPublicURLRendererForThread

        protected void setPublicURLRendererForThread​(javax.servlet.http.HttpServletRequest httpRequest)
      • unsetPublicURLRendererForThread

        protected void unsetPublicURLRendererForThread()
      • doFilterMedia

        @Deprecated
        protected void doFilterMedia​(javax.servlet.http.HttpServletRequest httpRequest,
                                     javax.servlet.http.HttpServletResponse httpResponse,
                                     java.lang.Iterable<java.lang.String> mediaContext,
                                     java.lang.String resourcePath)
                              throws java.io.IOException,
                                     javax.servlet.ServletException
        Deprecated.
        since 1811
        Filters media.
        Parameters:
        httpRequest -
        httpResponse -
        mediaContext -
        resourcePath -
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • doFilterMedia

        protected void doFilterMedia​(javax.servlet.http.HttpServletRequest httpRequest,
                                     javax.servlet.http.HttpServletResponse httpResponse,
                                     java.lang.Iterable<java.lang.String> mediaContext)
                              throws java.io.IOException,
                                     javax.servlet.ServletException
        Filters media.
        Parameters:
        httpRequest -
        httpResponse -
        mediaContext -
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • processSecureMedia

        protected void processSecureMedia​(javax.servlet.http.HttpServletRequest httpRequest,
                                          javax.servlet.http.HttpServletResponse httpResponse)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • findMediaModel

        protected MediaModel findMediaModel​(java.lang.String mediaPKString)
      • isAccessDenied

        protected boolean isAccessDenied​(MediaModel mediaModel)
      • getMediaContext

        protected java.lang.Iterable<java.lang.String> getMediaContext​(javax.servlet.http.HttpServletRequest httpRequest)
      • isLegacyPrettyUrlSupport

        protected boolean isLegacyPrettyUrlSupport()
      • createLegacyLocalMediaWebUrlContext

        protected java.lang.Iterable<java.lang.String> createLegacyLocalMediaWebUrlContext​(javax.servlet.http.HttpServletRequest httpRequest)
      • splitLegacyPath

        protected java.lang.Iterable<java.lang.String> splitLegacyPath​(java.lang.String path)
      • getLegacyResourcePath

        protected java.lang.String getLegacyResourcePath​(javax.servlet.http.HttpServletRequest httpRequest)
      • createLocalMediawebUrlContext

        protected java.lang.Iterable<java.lang.String> createLocalMediawebUrlContext​(java.lang.String encodedMediaCtx)
      • getLocalMediaWebUrlContextParam

        protected java.lang.String getLocalMediaWebUrlContextParam​(javax.servlet.http.HttpServletRequest httpRequest)
      • generateETag

        protected java.lang.String generateETag​(java.lang.String location)
      • getResourcePath

        protected java.lang.String getResourcePath​(javax.servlet.http.HttpServletRequest httpRequest)
      • processStandardResponse

        protected void processStandardResponse​(javax.servlet.http.HttpServletRequest httpRequest,
                                               javax.servlet.http.HttpServletResponse httpResponse,
                                               java.lang.Iterable<java.lang.String> mediaContext)
                                        throws java.io.IOException,
                                               javax.servlet.ServletException
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • readConfiguredHeaderParamsAndWriteToResponse

        protected void readConfiguredHeaderParamsAndWriteToResponse​(javax.servlet.http.HttpServletResponse httpResponse)
                                                             throws java.io.UnsupportedEncodingException
        Reads the defined http header parameters from the properties into the map and writes to httpResponse. And also register a config change listener to get the properties changes during runtime.
        Throws:
        java.io.UnsupportedEncodingException
      • addContentDisposition

        protected void addContentDisposition​(javax.servlet.http.HttpServletRequest httpRequest,
                                             javax.servlet.http.HttpServletResponse httpResponse,
                                             java.lang.String resourcePath)
      • isAddContentDisposition

        protected boolean isAddContentDisposition​(javax.servlet.http.HttpServletRequest httpRequest,
                                                  java.lang.String resourcePath)
      • isAddContentDisposition

        protected boolean isAddContentDisposition​(javax.servlet.http.HttpServletRequest httpRequest)
      • addContentType

        protected void addContentType​(javax.servlet.http.HttpServletResponse httpResponse,
                                      java.lang.Iterable<java.lang.String> mediaContext,
                                      java.lang.String resourcePath)
      • isResourceFromClassLoader

        protected boolean isResourceFromClassLoader​(java.lang.String resourcePath)
      • getRealFileNameFromResource

        protected java.lang.String getRealFileNameFromResource​(java.lang.String resourcePath)
      • loadFromClassLoader

        protected void loadFromClassLoader​(javax.servlet.http.HttpServletResponse httpResponse,
                                           java.lang.String resourcePath)
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • isDeniedByExtensionForClassloader

        protected boolean isDeniedByExtensionForClassloader​(java.lang.String resourceName)
        Returns true if the extension of given resource name is NOT defined in the advanced.properties with the key "media.allowed.extensions.for.ClassLoader". This does only applies when getting the resources with the class loader.
        Returns:
        false if no extension is configured (every extension is allowed) or the extension of given resource is configured, otherwise true
      • getResourceAsStream

        protected java.io.InputStream getResourceAsStream​(java.lang.String resourceName)
      • loadFromMediaStorage

        protected void loadFromMediaStorage​(javax.servlet.http.HttpServletResponse httpResponse,
                                            java.lang.Iterable<java.lang.String> mediaContext)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • verifyHashForLocation

        protected void verifyHashForLocation​(java.lang.String folderQualifier,
                                             java.lang.String location,
                                             java.lang.String storedHash)
      • getMediaAsStreamWithSize

        protected MediaManager.InputStreamWithSize getMediaAsStreamWithSize​(java.lang.String folderQualifier,
                                                                            java.lang.String location)
      • getMediaAsStream

        @Deprecated(since="1905",
                    forRemoval=true)
        protected java.io.InputStream getMediaAsStream​(java.lang.String folderQualifier,
                                                       java.lang.String location)
        Deprecated, for removal: This API element is subject to removal in a future version.
      • getMediaManager

        protected MediaManager getMediaManager()
      • decodeBase64

        protected java.lang.String decodeBase64​(java.lang.String value)
      • getContextPart

        protected java.lang.String getContextPart​(WebAppMediaFilter.ContextPart contextPart,
                                                  java.lang.Iterable<java.lang.String> mediaContext)
      • sendForbiddenResponseStatus

        protected void sendForbiddenResponseStatus​(javax.servlet.http.HttpServletResponse httpResponse,
                                                   java.lang.Exception exception)
      • sendBadRequestResponseStatus

        protected void sendBadRequestResponseStatus​(javax.servlet.http.HttpServletResponse httpResponse,
                                                    java.lang.Exception exception)
      • sendResourceNotFoundResponseStatus

        protected void sendResourceNotFoundResponseStatus​(javax.servlet.http.HttpServletResponse httpResponse,
                                                          java.lang.Exception exception)
      • getAllowedExtensions

        protected java.util.Set<java.lang.String> getAllowedExtensions​(java.lang.String configParameter)
      • destroy

        public void destroy()
        Specified by:
        destroy in interface org.springframework.beans.factory.DisposableBean
        Specified by:
        destroy in interface javax.servlet.Filter
        Overrides:
        destroy in class org.springframework.web.filter.GenericFilterBean
      • setModelService

        public void setModelService​(ModelService modelService)
      • setMediaPermissionService

        public void setMediaPermissionService​(MediaPermissionService mediaPermissionService)
      • setUserService

        public void setUserService​(UserService userService)
      • setMediaService

        public void setMediaService​(MediaService mediaService)
      • setAddContextPath

        public void setAddContextPath​(boolean addContextPath)
      • setSecureMediasResourcePathPrefix

        public void setSecureMediasResourcePathPrefix​(java.lang.String token)