<%@ page import="org.jivesoftware.util.JiveGlobals, org.jivesoftware.util.ParamUtils" %> <%@ page import="java.util.HashMap" %> <%@ page import="java.util.Map" %> <%@ page import="org.jivesoftware.openfire.ldap.LdapManager" %> <%@ page import="org.jivesoftware.openfire.group.GroupManager" %> <%@ page import="org.jivesoftware.util.CookieUtils" %> <%@ page import="org.jivesoftware.util.StringUtils" %> <%@ page import="org.jivesoftware.util.cache.CacheFactory" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <% // Get parameters @SuppressWarnings("unchecked") Map xmppSettings = (Map)session.getAttribute("xmppSettings"); Map errors = new HashMap<>(); String serverType = ParamUtils.getParameter(request, "serverType"); // Server type should never be null, but if it is, assume "other" if (serverType == null) { serverType = "other"; } LdapManager manager = LdapManager.getInstance(); // Determine the right default values based on the server type. String defaultGroupNameField = JiveGlobals.getProperty("ldap.groupNameField"); String defaultGroupMemberField = JiveGlobals.getProperty("ldap.groupMemberField"); String defaultGroupDescriptionField = JiveGlobals.getProperty("ldap.groupDescriptionField"); String posixModeString = JiveGlobals.getProperty("ldap.posixMode"); boolean defaultPosixMode = Boolean.parseBoolean(posixModeString); String defaultGroupSearchFilter = JiveGlobals.getProperty("ldap.groupSearchFilter"); if (serverType.equals("activedirectory")) { if (defaultGroupNameField == null) { defaultGroupNameField = "cn"; } if (defaultGroupMemberField == null) { defaultGroupMemberField = "member"; } if (defaultGroupDescriptionField == null) { defaultGroupDescriptionField = "description"; } if (posixModeString == null) { defaultPosixMode = false; } if (defaultGroupSearchFilter == null) { defaultGroupSearchFilter = "(objectClass=group)"; } } else { if (defaultGroupNameField == null) { defaultGroupNameField = "cn"; } if (defaultGroupMemberField == null) { defaultGroupMemberField = "member"; } if (defaultGroupDescriptionField == null) { defaultGroupDescriptionField = "description"; } if (posixModeString == null) { defaultPosixMode = false; } } String groupNameField = ParamUtils.getParameter(request, "groupNameField"); if (groupNameField == null) { groupNameField = defaultGroupNameField; } String groupMemberField = ParamUtils.getParameter(request, "groupMemberField"); if (groupMemberField == null) { groupMemberField = defaultGroupMemberField; } String groupDescriptionField = ParamUtils.getParameter(request, "groupDescriptionField"); if (groupDescriptionField == null) { groupDescriptionField = defaultGroupDescriptionField; } String posixModeParam = ParamUtils.getParameter(request, "posixMode"); boolean posixMode; if (posixModeParam == null) { posixMode = defaultPosixMode; } else { posixMode = Boolean.parseBoolean(posixModeParam); } String groupSearchFilter = ParamUtils.getParameter(request, "groupSearchFilter"); if (groupSearchFilter == null) { groupSearchFilter = defaultGroupSearchFilter; } Cookie csrfCookie = CookieUtils.getCookie( request, "csrf"); String csrfParam = ParamUtils.getParameter(request, "csrf"); boolean save = request.getParameter("save") != null; boolean test = request.getParameter("test") != null; if (save || test) { if (csrfCookie == null || csrfParam == null || !csrfCookie.getValue().equals(csrfParam)) { save = false; test = false; errors.put("csrf", "CSRF Failure!"); } } csrfParam = StringUtils.randomString(15); CookieUtils.setCookie(request, response, "csrf", csrfParam, -1); pageContext.setAttribute("csrf", csrfParam); if (save || test) { // Save information in the session so we can use it in testing pages during setup Map settings = new HashMap<>(); settings.put("ldap.groupNameField", groupNameField); settings.put("ldap.groupMemberField", groupMemberField); settings.put("ldap.groupDescriptionField", groupDescriptionField); settings.put("ldap.posixMode", Boolean.toString(posixMode)); settings.put("ldap.groupSearchFilter", groupSearchFilter); session.setAttribute("ldapGroupSettings", settings); if (errors.isEmpty() && save) { if (groupNameField != null) { manager.setGroupNameField(groupNameField); } if (groupMemberField != null) { manager.setGroupMemberField(groupMemberField); } if (groupDescriptionField != null) { manager.setGroupDescriptionField(groupDescriptionField); } manager.setPosixMode(posixMode); if (groupSearchFilter != null) { manager.setGroupSearchFilter(groupSearchFilter); } // Enable the LDAP auth provider. The LDAP user provider will be enabled on the next step. JiveGlobals.setProperty(GroupManager.GROUP_PROVIDER.getKey(), org.jivesoftware.openfire.ldap.LdapGroupProvider.class.getName()); // Save the settings for later, if we're in setup if (xmppSettings != null) { xmppSettings.put(GroupManager.GROUP_PROVIDER.getKey(), org.jivesoftware.openfire.ldap.LdapGroupProvider.class.getName()); xmppSettings.put("ldap.groupNameField", groupNameField); xmppSettings.put("ldap.groupMemberField", groupMemberField); xmppSettings.put("ldap.groupDescriptionField", groupDescriptionField); xmppSettings.put("ldap.posixMode", Boolean.toString(posixMode)); xmppSettings.put("ldap.groupSearchFilter", groupSearchFilter); session.setAttribute("xmppSettings", xmppSettings); } // Wipe caches, as modified settings might have made their content invalid. CacheFactory.clearCaches("Group", "Group Metadata Cache"); // Redirect response.sendRedirect(nextPage); return; } } pageContext.setAttribute( "groupNameField", groupNameField ); pageContext.setAttribute( "groupMemberField", groupMemberField ); pageContext.setAttribute( "groupDescriptionField", groupDescriptionField ); pageContext.setAttribute( "posixMode", posixMode ); pageContext.setAttribute( "groupSearchFilter", groupSearchFilter ); pageContext.setAttribute("test", test); pageContext.setAttribute("errors", errors); %> <fmt:message key="setup.ldap.title" />

:

1. 2. 3.

:

" id="jive-setup-test"> " id="jive-setup-save"> " id="jive-setup-save">