[ 
https://issues.apache.org/jira/browse/JSPWIKI-877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14321310#comment-14321310
 ] 

David Vittor commented on JSPWIKI-877:
--------------------------------------

Current state:
{noformat}
WikiEngine.getRootPath() = m_rootPath = 
C:\opt\tomcat\apache-tomcat-8.0.15\webapps\JSPWiki

PropertyReader.locateClassPathResource(context, resourceName) {
  result = context.getResourceAsStream( "/WEB-INF/classes"+name );
  result = PropertyReader.class.getResourceAsStream( ""+name );

AuthenticationManager.findConfigFile()
  defaultFile = new File( engine.getRootPath() + "/WEB-INF/" + name );

DefaultFilterManager.initialize()
  DEFAULT_XMLFILE = /WEB-INF/filters.xml
  String xmlFile = props.getProperty( PROP_FILTERXML, DEFAULT_XMLFILE );
  xmlStream = m_engine.getServletContext().getResourceAsStream( xmlFile );
  xmlStream = getClass().getResourceAsStream( xmlFile );

XMLUserDB.initialize()
  defaultFile = new File( engine.getRootPath() + "/WEB-INF/" + 
DEFAULT_USERDATABASE );
  String file = props.getProperty( PROP_USERDATABASE, defaultFile );
  c_file = new File( file );

ClassUtils
  MAPPINGS = "ini/classmappings.xml";
  List< Element > nodes = XmlUtil.parse( MAPPINGS, "/classmappings/mapping" );

XmlUtils.parse()
  Enumeration< URL > resources = XmlUtil.class.getClassLoader().getResources( 
xml );
{noformat}

*Proposed solution*

{noformat}
public InputStream ClassUtils.getResourse( engine, props, String name, String 
defaultName, boolean required ) throws IOException {
  // 1 - get actual name
  String resource = props.getProperty( name, defaultName );
  // 2 - check if absolute
  File f = new File (resource);
  if (f.exists()) return f.getStream();
  // 3 - Check WEB-INF/
  resourceName = "WEB-INF/"+resource;
  xmlStream = m_engine.getServletContext().getResourceAsStream( resourceName );
  xmlStream = getClass().getResourceAsStream( resourceName );
  File f = new File (engine.getRootPath()+"/"+resourceName);
  if (f.exists()) xmlStream = f.getStream();
  if not null - return xmlStream
  // 4 - Check WEB-INF/classes/
  resourceName = "WEB-INF/classes/"+resource;
  xmlStream = m_engine.getServletContext().getResourceAsStream( resourceName );
  xmlStream = getClass().getResourceAsStream( resourceName );
  File f = new File (engine.getRootPath()+"/"+resourceName);
  if (f.exists()) xmlStream = f.getStream();
  if not null - return
  // 5. throw exception
  if (required) throw new IOException(resource+" not found, but required");
  
  return null;
}
{noformat}

> Allow jspwiki.properties filterConfig and policy.file to have fully qualified 
> paths
> -----------------------------------------------------------------------------------
>
>                 Key: JSPWIKI-877
>                 URL: https://issues.apache.org/jira/browse/JSPWIKI-877
>             Project: JSPWiki
>          Issue Type: Bug
>          Components: Core & storage
>    Affects Versions: 2.10.1
>            Reporter: David Vittor
>
> Currently adding the following properties does not work:
> * jspwiki.policy.file=C:/temp/jspwiki-custom.policy
> * jspwiki.filterConfig=C:/temp/jspwiki-filters.xml
> The policy file only checks certain locations, and not fully qualified paths.
> The filterConfig has the same problem, but does work in linux, but not in 
> windows as this expects a URL, e.g. file:/C:/temp/... but this causes a 
> SEVERE filterStart error in tomcat.
> Note: These seem to be inconsistant with UserDatabase and GroupDatabase



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to