isReadable works inside a container, isFile not (#1334)
This commit is contained in:
		| @ -83,7 +83,7 @@ public class AsciiDoctorTemplateResolver extends FileTemplateResolver { | ||||
|     @Override | ||||
|     protected ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String template, String resourceName, String characterEncoding, Map<String, Object> templateResolutionAttributes) { | ||||
|         var templateName = resourceName.substring(PREFIX.length()); | ||||
|  | ||||
|         log.debug("template used: {}", templateName); | ||||
|         try (InputStream is = getInputStream(templateName)) { | ||||
|             JavaExtensionRegistry extensionRegistry = asciidoctor.javaExtensionRegistry(); | ||||
|             extensionRegistry.inlineMacro("webWolfLink", WebWolfMacro.class); | ||||
| @ -102,18 +102,26 @@ public class AsciiDoctorTemplateResolver extends FileTemplateResolver { | ||||
|     } | ||||
|  | ||||
|     private InputStream getInputStream(String templateName) throws IOException { | ||||
|         if (resourceLoader.getResource("classpath:/" + computeResourceName(templateName, language.getLocale().getLanguage())).isFile()) { | ||||
|             return resourceLoader.getResource("classpath:/" + computeResourceName(templateName, language.getLocale().getLanguage())).getInputStream(); | ||||
|         log.debug("locale: {}",language.getLocale().getLanguage()); | ||||
|         String computedResourceName = computeResourceName(templateName, language.getLocale().getLanguage()); | ||||
|         if (resourceLoader.getResource("classpath:/" + computedResourceName).isReadable()/*isFile()*/) { | ||||
|             log.debug("localized file exists"); | ||||
|             return resourceLoader.getResource("classpath:/" + computedResourceName).getInputStream(); | ||||
|         } else { | ||||
|             log.debug("using english template"); | ||||
|             return resourceLoader.getResource("classpath:/" + templateName).getInputStream(); | ||||
|         } | ||||
|     } | ||||
|     private String computeResourceName(String resourceName, String language) { | ||||
|         String computedResourceName; | ||||
|         if (language.equals("en")) { | ||||
|             return resourceName; | ||||
|             computedResourceName = resourceName; | ||||
|         } else { | ||||
|             return resourceName.replace(".adoc", "_".concat(language).concat(".adoc")); | ||||
|             computedResourceName = resourceName.replace(".adoc", "_".concat(language).concat(".adoc")); | ||||
|         } | ||||
|         log.debug("computed local file name: {}", computedResourceName); | ||||
|         log.debug("file exists: {}",resourceLoader.getResource("classpath:/"+computedResourceName).isReadable()); | ||||
|         return computedResourceName; | ||||
|     } | ||||
|  | ||||
|     private Map<String, Object> createAttributes() { | ||||
| @ -134,12 +142,15 @@ public class AsciiDoctorTemplateResolver extends FileTemplateResolver { | ||||
|  | ||||
|         Locale browserLocale = (Locale) request.getSession().getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME); | ||||
|         if (null != browserLocale) { | ||||
|             log.debug("browser locale {}", browserLocale); | ||||
|             return browserLocale.getLanguage(); | ||||
|         } else { | ||||
|             String langHeader = request.getHeader(Headers.ACCEPT_LANGUAGE_STRING); | ||||
|             if (null != langHeader) { | ||||
|                 log.debug("browser locale {}", langHeader); | ||||
|                 return langHeader.substring(0,2); | ||||
|             } else { | ||||
|                 log.debug("browser default english"); | ||||
|                 return "en"; | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -32,6 +32,7 @@ | ||||
| package org.owasp.webgoat.container; | ||||
|  | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.owasp.webgoat.container.i18n.Language; | ||||
| import org.owasp.webgoat.container.i18n.Messages; | ||||
| import org.owasp.webgoat.container.i18n.PluginMessages; | ||||
| @ -71,6 +72,7 @@ import java.util.Set; | ||||
|  */ | ||||
| @Configuration | ||||
| @RequiredArgsConstructor | ||||
| @Slf4j | ||||
| public class MvcConfiguration implements WebMvcConfigurer { | ||||
|  | ||||
|     private static final String UTF8 = "UTF-8"; | ||||
| @ -146,6 +148,7 @@ public class MvcConfiguration implements WebMvcConfigurer { | ||||
|      */ | ||||
|     @Bean | ||||
|     public AsciiDoctorTemplateResolver asciiDoctorTemplateResolver(Language language, ResourceLoader resourceLoader) { | ||||
|         log.debug("template locale {}", language); | ||||
|         AsciiDoctorTemplateResolver resolver = new AsciiDoctorTemplateResolver(language, resourceLoader); | ||||
|         resolver.setCacheable(false); | ||||
|         resolver.setOrder(1); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user