<%@ 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" %> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %> <% // Get parameters @SuppressWarnings("unchecked") Map<String,String> xmppSettings = (Map<String,String>)session.getAttribute("xmppSettings"); 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 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; } boolean save = request.getParameter("save") != null; boolean doTest = request.getParameter("test") != null; if (save || doTest) { // Save information in the session so we can use it in testing pages during setup Map<String, String> settings = new HashMap<String, String>(); 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 (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("provider.group.className", "org.jivesoftware.openfire.ldap.LdapGroupProvider"); // Save the settings for later, if we're in setup if (xmppSettings != null) { xmppSettings.put("provider.group.className", "org.jivesoftware.openfire.ldap.LdapGroupProvider"); 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); } // Redirect response.sendRedirect(nextPage); return; } } %> <html> <head> <title><fmt:message key="setup.ldap.title" /></title> <% for (Map.Entry<String, String> entry : meta.entrySet()) { %> <meta name="<%= entry.getKey()%>" content="<%= entry.getValue()%>"/> <% } %> </head> <body> <% if (doTest) { StringBuilder sb = new StringBuilder(); sb.append(testPage); sb.append("?serverType=").append(serverType); %> <a href="<%= sb.toString()%>" id="lbmessage" title="<fmt:message key="global.test" />" style="display:none;"></a> <script type="text/javascript"> function loadMsg() { var lb = new lightbox(document.getElementById('lbmessage')); lb.activate(); } setTimeout('loadMsg()', 250); </script> <% } %> <% if (initialSetup) { %> <h1><fmt:message key="setup.ldap.profile" />: <span><fmt:message key="setup.ldap.group_mapping" /></span></h1> <% } %> <!-- BEGIN jive-contentBox_stepbar --> <div id="jive-contentBox_stepbar"> <span class="jive-stepbar_step"><em>1. <fmt:message key="setup.ldap.connection_settings" /></em></span> <span class="jive-stepbar_step"><em>2. <fmt:message key="setup.ldap.user_mapping" /></em></span> <span class="jive-stepbar_step"><strong>3. <fmt:message key="setup.ldap.group_mapping" /></strong></span> </div> <!-- END jive-contentBox-stepbar --> <!-- BEGIN jive-contentBox --> <div class="jive-contentBox jive-contentBox_for-stepbar"> <h2><fmt:message key="setup.ldap.step_three" />: <span><fmt:message key="setup.ldap.group_mapping" /></span></h2> <p><fmt:message key="setup.ldap.group.description" /></p> <form action="" method="get"> <!-- BEGIN jive-contentBox_bluebox --> <div class="jive-contentBox_bluebox"> <table border="0" cellpadding="0" cellspacing="2"> <tr> <td colspan="2"><strong><fmt:message key="setup.ldap.group_mapping" /></strong></td> </tr> <tr> <td align="right"><fmt:message key="setup.ldap.group.name_field" />:</td> <td><input type="text" name="groupNameField" id="jiveLDAPgroupname" size="22" maxlength="50" value="<%= groupNameField!=null?groupNameField:""%>"><span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.group.name_field_description" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', -1);"></span></td> </tr> <tr> <td align="right"><fmt:message key="setup.ldap.group.member_field" />:</td> <td><input type="text" name="groupMemberField" id="jiveLDAPgroupmember" size="22" maxlength="50" value="<%= groupMemberField!=null?groupMemberField:""%>"><span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.group.member_field_description" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', -1);"></span></td> </tr> <tr> <td align="right"><fmt:message key="setup.ldap.group.description_field" />:</td> <td><input type="text" name="groupDescriptionField" id="jiveLDAPgroupdesc" size="22" maxlength="50" value="<%= groupDescriptionField!=null?groupDescriptionField:""%>"><span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.group.description_field_description" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', -1);"></span></td> </tr> </table> <!-- BEGIN jiveAdvancedButton --> <div class="jiveAdvancedButton jiveAdvancedButtonTopPad"> <a href="#" onclick="togglePanel(jiveAdvanced); return false;" id="jiveAdvancedLink"><fmt:message key="setup.ldap.advanced" /></a> </div> <!-- END jiveAdvancedButton --> <!-- BEGIN jiveAdvancedPanelu (advanced user mapping settings) --> <div class="jiveadvancedPanelu" id="jiveAdvanced" style="display: none;"> <div> <table border="0" cellpadding="0" cellspacing="2"> <tr> <td align="right"><fmt:message key="setup.ldap.group.posix" />:</td> <td><span style="float: left;"> <input type="radio" name="posixMode" value="true" style="float: none;" id="posix1" <% if(posixMode) {%>checked<% } %>><label for="posix1"> <fmt:message key="global.yes" /> </label> <input type="radio" name="posixMode" value="false" style="float: none;" id="posix2" <% if(!posixMode) {%>checked<% } %>><label for="posix2"> <fmt:message key="global.no" /> </label> </span> <span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.group.posix_description" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', -1);"></span></td> </tr> <tr> <td align="right"><fmt:message key="setup.ldap.group.filter" /></td> <td><input type="text" name="groupSearchFilter" value="<%= groupSearchFilter!=null?groupSearchFilter:""%>" id="jiveLDAPgroupsearchfilter" size="22" maxlength="250"><span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.group.filter_description" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', -1);"></span></td> </tr> </table> </div> </div> <!-- END jiveAdvancedPanelu (advanced user mapping settings) --> </div> <!-- END jive-contentBox_bluebox --> <!-- BEGIN jive-buttons --> <div class="jive-buttons"> <!-- BEGIN right-aligned buttons --> <div align="right"> <input type="Submit" name="test" value="<fmt:message key="setup.ldap.test" />" id="jive-setup-test" border="0"> <input type="Submit" name="save" value="<fmt:message key="<%= initialSetup ? "setup.ldap.continue" : "global.save_settings"%>" />" id="jive-setup-save" border="0"> </div> <!-- END right-aligned buttons --> </div> <!-- END jive-buttons --> </form> </div> <!-- END jive-contentBox --> </body> </html>