From aaed40e42129f7047548ed7ee3b794b4b2cad2e7 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Wed, 14 Oct 2020 15:07:28 +0200 Subject: [PATCH] OO-4976: persist and read empty user agent exclusion list for WebDAV --- .../commons/services/webdav/WebDAVModule.java | 39 ++++++++++++------- .../webdav/manager/WebDAVManagerImpl.java | 6 +-- .../webdav/servlets/WebDAVDispatcherImpl.java | 2 +- .../webdav/ui/WebDAVAdminController.java | 6 +-- 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java b/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java index 8d206583153..d7da773a526 100644 --- a/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java +++ b/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java @@ -50,6 +50,7 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff { private static final String PREPEND_COURSE_REFERENCE_TO_TITLE = "webdav.prepend.course.reference.to.title"; private static final String CURRICULUM_ELEMENTS_FOLDERS_ENABLED = "webdav.curriculumelements.folders.enabled"; private static final String MANAGED_FOLDERS_ENABLED = "webdav.managed.folders.enabled"; + private static final String USER_AGENT_EXCLUSION_LIST = "webdav.user.agent.exclusion.list"; @Autowired private List<WebDAVProvider> webdavProviders; @@ -69,9 +70,9 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff { @Value("${webdav.prepend.course.reference.to.title:false}") private boolean prependCourseReferenceToTitle; @Value("${webdav.basic.authentication.black.list}") - private String basicAuthenticationBlackList; + private String basicAuthenticationExclusionList; @Value("${webdav.user.agent.black.list}") - private String userAgentBlackList; + private String userAgentExclusionList; @Value("${webdav.learners.bookmarks.enabled:true}") private boolean enableLearnersBookmarksCourse; @@ -131,6 +132,11 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff { if(StringHelper.containsNonWhitespace(prependCourseReferenceToTitleObj)) { prependCourseReferenceToTitle = "true".equals(prependCourseReferenceToTitleObj); } + + userAgentExclusionList = getStringPropertyValue(USER_AGENT_EXCLUSION_LIST, userAgentExclusionList); + if("oo_empty_oo".equals(userAgentExclusionList)) { + userAgentExclusionList = null; + } } @Override @@ -224,30 +230,35 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff { setStringProperty(PREPEND_COURSE_REFERENCE_TO_TITLE, enabled ? "true" : "false", true); } - public String[] getBasicAuthenticationBlackList() { - if(StringHelper.containsNonWhitespace(basicAuthenticationBlackList)) { - return basicAuthenticationBlackList.split("[,]"); + public String[] getBasicAuthenticationExclusionList() { + if(StringHelper.containsNonWhitespace(basicAuthenticationExclusionList)) { + return basicAuthenticationExclusionList.split("[,]"); } return new String[0]; } - public void setBasicAuthenticationBlackList(String basicAuthenticationBlackList) { - this.basicAuthenticationBlackList = basicAuthenticationBlackList; + public void setBasicAuthenticationExclusionList(String userAgents) { + this.basicAuthenticationExclusionList = userAgents; } - public String[] getUserAgentBlackListArray() { - if(StringHelper.containsNonWhitespace(userAgentBlackList)) { - return userAgentBlackList.split("[,]"); + public String[] getUserAgentExclusionListArray() { + if(StringHelper.containsNonWhitespace(userAgentExclusionList)) { + return userAgentExclusionList.split("[,]"); } return new String[0]; } - public String getUserAgentBlackList() { - return userAgentBlackList; + public String getUserAgentExclusionList() { + return userAgentExclusionList; } - public void setUserAgentBlackList(String userAgentBlackList) { - this.userAgentBlackList = userAgentBlackList; + public void setUserAgentExclusionList(String userAgents) { + this.userAgentExclusionList = userAgents; + if(StringHelper.containsNonWhitespace(userAgents)) { + setStringProperty(USER_AGENT_EXCLUSION_LIST, userAgents, true); + } else { + setStringProperty(USER_AGENT_EXCLUSION_LIST, "oo_empty_oo", true); + } } /** diff --git a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java index 10dad274ea8..6aaeb58f4bb 100644 --- a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java +++ b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java @@ -278,9 +278,9 @@ public class WebDAVManagerImpl implements WebDAVManager, InitializingBean { private boolean proposeBasicAuthentication(HttpServletRequest request) { String userAgent = ServletUtil.getUserAgent(request); if(StringHelper.containsNonWhitespace(userAgent)) { - String[] blackList = webdavModule.getBasicAuthenticationBlackList(); - for(String blackListedAgent:blackList) { - if(userAgent.contains(blackListedAgent) && webdavModule.isDigestAuthenticationEnabled()) { + String[] exclusionList = webdavModule.getBasicAuthenticationExclusionList(); + for(String exclusion:exclusionList) { + if(userAgent.contains(exclusion) && webdavModule.isDigestAuthenticationEnabled()) { return false; } } diff --git a/src/main/java/org/olat/core/commons/services/webdav/servlets/WebDAVDispatcherImpl.java b/src/main/java/org/olat/core/commons/services/webdav/servlets/WebDAVDispatcherImpl.java index cad3154c7b2..39d65042fde 100644 --- a/src/main/java/org/olat/core/commons/services/webdav/servlets/WebDAVDispatcherImpl.java +++ b/src/main/java/org/olat/core/commons/services/webdav/servlets/WebDAVDispatcherImpl.java @@ -289,7 +289,7 @@ public class WebDAVDispatcherImpl if(!StringHelper.containsNonWhitespace(userAgent)) { userAgent = ""; } - String[] blackList = webDAVModule.getUserAgentBlackListArray(); + String[] blackList = webDAVModule.getUserAgentExclusionListArray(); for(String blackListedAgent:blackList) { if((blackListedAgent.length() < 2 && userAgent.equalsIgnoreCase(blackListedAgent)) || (blackListedAgent.length() >= 2 && userAgent.contains(blackListedAgent))) { diff --git a/src/main/java/org/olat/core/commons/services/webdav/ui/WebDAVAdminController.java b/src/main/java/org/olat/core/commons/services/webdav/ui/WebDAVAdminController.java index 37ad1d594ce..b3cd8bf0c46 100644 --- a/src/main/java/org/olat/core/commons/services/webdav/ui/WebDAVAdminController.java +++ b/src/main/java/org/olat/core/commons/services/webdav/ui/WebDAVAdminController.java @@ -86,7 +86,7 @@ public class WebDAVAdminController extends FormBasicController { enableDigestEl = uifactory.addCheckboxesHorizontal("webdavDigest", "webdav.digest", formLayout, onKeys, values); enableDigestEl.select("xx", webDAVModule.isDigestAuthenticationEnabled()); - String excludedUserAgents = webDAVModule.getUserAgentBlackList(); + String excludedUserAgents = webDAVModule.getUserAgentExclusionList(); excludeClientsEl = uifactory.addCheckboxesHorizontal("webdavExclusion", "webdav.client.exclusion", formLayout, onKeys, values); excludeClientsEl.select("xx", StringHelper.containsNonWhitespace(excludedUserAgents)); excludeClientsEl.addActionListener(FormEvent.ONCHANGE); @@ -166,9 +166,9 @@ public class WebDAVAdminController extends FormBasicController { webDAVModule.setPrependCourseReferenceToTitle(prependReferenceEl.isAtLeastSelected(1)); webDAVModule.setManagedFoldersEnabled(enableManagedFoldersEl.isAtLeastSelected(1)); if(excludeClientsEl.isAtLeastSelected(1)) { - webDAVModule.setUserAgentBlackList(excludeUserAgentsClientsEl.getValue()); + webDAVModule.setUserAgentExclusionList(excludeUserAgentsClientsEl.getValue()); } else { - webDAVModule.setUserAgentBlackList(null); + webDAVModule.setUserAgentExclusionList(null); } } } -- GitLab