/* * ==================================================================== * Copyright (c) 2004-2008 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.internal.server.dav; import java.io.File; import javax.servlet.ServletConfig; import org.tmatesoft.svn.core.SVNErrorCode; import org.tmatesoft.svn.core.SVNErrorMessage; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc.SVNErrorManager; import org.tmatesoft.svn.util.SVNLogType; /** * @author TMate Software Ltd. * @version 1.2.0 */ public class DAVConfig { private static final String PATH_DIRECIVE = "SVNPath"; private static final String PARENT_PATH_DIRECIVE = "SVNParentPath"; private static final String SVN_ACCESS_FILE_DIRECTIVE = "AuthzSVNAccessFile"; private static final String SVN_ANONYMOUS_DIRECTIVE = "AuthzSVNAnonymous"; private static final String SVN_NO_AUTH_IF_ANONYMOUS_ALLOWED_DIRECIVE = "AuthzSVNNoAuthWhenAnonymousAllowed"; private static final String LIST_PARENT_PATH_DIRECTIVE = "SVNListParentPath"; private static final String REPOS_NAME = "SVNReposName"; private static final String XSLT_INDEX = "SVNIndexXSLT"; private static final String ACTIVITIES_DB = "SVNActivitiesDB"; private static final String AUTOVERSIONING = "SVNAutoversioning"; private static final String ALLOW_BULK_UPDATES = "SVNAllowBulkUpdates"; private static final String DAV_DEPTH = "DAVDepthInfinity"; private static final String OFF = "off"; private static final String ON = "on"; private String myRepositoryPath; private String myRepositoryParentPath; private String myRepositoryName; private String myXSLTIndex; private String myActivitiesDBPath; private SVNPathBasedAccess mySVNAccess = null; private boolean myUsingPBA = false; private boolean myAnonymous = true; private boolean myNoAuthIfAnonymousAllowed = false; private boolean myIsListParentPath = false; private boolean myIsAutoVersioning = false; private boolean myIsAllowBulkUpdates = false; private boolean myIsAllowDepthInfinity = false; public DAVConfig(ServletConfig servletConfig) throws SVNException { String repositoryPath = servletConfig.getInitParameter(PATH_DIRECIVE); String repositoryParentPath = servletConfig.getInitParameter(PARENT_PATH_DIRECIVE); myRepositoryName = servletConfig.getInitParameter(REPOS_NAME); myXSLTIndex = servletConfig.getInitParameter(XSLT_INDEX); if (repositoryPath != null && repositoryParentPath == null) { myRepositoryPath = repositoryPath; myRepositoryParentPath = null; } else if (repositoryParentPath != null && repositoryPath == null) { myRepositoryParentPath = repositoryParentPath; myRepositoryPath = null; } else { //repositoryPath == null <=> repositoryParentPath == null. if (repositoryPath == null) { SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_DAV_INVALID_CONFIG_VALUE, "Neither SVNPath nor SVNParentPath directive were specified."), SVNLogType.NETWORK); } else { SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_DAV_INVALID_CONFIG_VALUE, "Only one of SVNPath and SVNParentPath directives should be specified."), SVNLogType.NETWORK); } } String configurationFilePath = servletConfig.getInitParameter(SVN_ACCESS_FILE_DIRECTIVE); if (configurationFilePath != null) { myUsingPBA = true; try { mySVNAccess = new SVNPathBasedAccess(new File(configurationFilePath)); } catch (SVNException e) { mySVNAccess = null; } } String anonymous = servletConfig.getInitParameter(SVN_ANONYMOUS_DIRECTIVE); if (anonymous != null && OFF.equals(anonymous)) { myAnonymous = false; } String noAuthIfAnonymousAllowed = servletConfig.getInitParameter(SVN_NO_AUTH_IF_ANONYMOUS_ALLOWED_DIRECIVE); if (noAuthIfAnonymousAllowed != null && ON.equals(noAuthIfAnonymousAllowed)) { myNoAuthIfAnonymousAllowed = true; } String listParentPath = servletConfig.getInitParameter(LIST_PARENT_PATH_DIRECTIVE); if (listParentPath != null && ON.equals(listParentPath)) { myIsListParentPath = true; } String autoversioning = servletConfig.getInitParameter(AUTOVERSIONING); if (autoversioning != null && ON.equals(autoversioning)) { myIsAutoVersioning = true; } String allowBulkUpdates = servletConfig.getInitParameter(ALLOW_BULK_UPDATES); if (allowBulkUpdates != null && ON.equals(allowBulkUpdates)) { myIsAllowBulkUpdates = true; } String allowDepthInfinity = servletConfig.getInitParameter(DAV_DEPTH); if (allowDepthInfinity != null && ON.equals(allowDepthInfinity)) { myIsAllowDepthInfinity = true; } myActivitiesDBPath = servletConfig.getInitParameter(ACTIVITIES_DB); } public boolean isAllowDepthInfinity() { return myIsAllowDepthInfinity; } public String getRepositoryName() { return myRepositoryName; } public String getXSLTIndex() { return myXSLTIndex; } public boolean isUsingRepositoryPathDirective() { return myRepositoryPath != null; } public String getRepositoryPath() { return myRepositoryPath; } public String getRepositoryParentPath() { return myRepositoryParentPath; } public SVNPathBasedAccess getSVNAccess() { return mySVNAccess; } public boolean isUsingPBA() { return myUsingPBA; } public boolean isAnonymousAllowed() { return myAnonymous; } public boolean isNoAuthIfAnonymousAllowed() { return myNoAuthIfAnonymousAllowed; } public boolean isListParentPath() { return myIsListParentPath; } public String getActivitiesDBPath() { return myActivitiesDBPath; } public boolean isAutoVersioning() { return myIsAutoVersioning; } public boolean isAllowBulkUpdates() { return myIsAllowBulkUpdates; } }