setup-ldap-server.jsp 15.4 KB
Newer Older
1 2 3
<%@ page import="org.jivesoftware.util.JiveGlobals"%>
<%@ page import="org.jivesoftware.util.LocaleUtils"%>
<%@ page import="org.jivesoftware.util.ParamUtils, org.jivesoftware.wildfire.XMPPServer, java.util.HashMap, java.util.Map"%>
4 5 6 7 8 9 10 11 12 13 14 15 16

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>

<%
	// Redirect if we've already run setup:
	if (!XMPPServer.getInstance().isSetupMode()) {
        response.sendRedirect("setup-completed.jsp");
        return;
    }
%>

<%
17
    String serverType = null;
18 19 20 21 22 23 24 25 26 27
    String host;
    int port = 389;
    String baseDN;
    String adminDN;
    String adminPassword;
    boolean connectionPoolEnabled = true;
    boolean sslEnabled = false;
    boolean debugEnabled = false;
    boolean referralsEnabled = false;

28
    // Get parameters
29
    boolean save = request.getParameter("save") != null;
30
    boolean test = request.getParameter("test") != null;
Matt Tucker's avatar
Matt Tucker committed
31

32
    Map<String, String> errors = new HashMap<String, String>();
33

34
    if (save || test) {
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
        int serverTypeInt = ParamUtils.getIntParameter(request, "servertype", 1);
        switch (serverTypeInt) {
            case 1:
                serverType = "other";
                break;
            case 2:
                serverType = "activedirectory";
                break;
            case 3:
                serverType = "openldap";
                break;
            default:
                serverType = "other";
        }

        host = ParamUtils.getParameter(request, "host");
        if (host == null) {
            errors.put("host", LocaleUtils.getLocalizedString("setup.ldap.server.host_error"));
        }
        port = ParamUtils.getIntParameter(request, "port", port);
        if (port <= 0) {
            errors.put("port", LocaleUtils.getLocalizedString("setup.ldap.server.port_error"));
        }
        baseDN = ParamUtils.getParameter(request, "basedn");
        if (baseDN == null) {
            errors.put("baseDN", LocaleUtils.getLocalizedString("setup.ldap.server.basedn_error"));
        }
        adminDN = ParamUtils.getParameter(request, "admindn");
        adminPassword = ParamUtils.getParameter(request, "adminpwd");
        connectionPoolEnabled =
                ParamUtils.getBooleanParameter(request, "connectionpool", connectionPoolEnabled);
        sslEnabled = ParamUtils.getBooleanParameter(request, "ssl", sslEnabled);
        debugEnabled = ParamUtils.getBooleanParameter(request, "debug", debugEnabled);
        referralsEnabled = ParamUtils.getBooleanParameter(request, "referrals", referralsEnabled);

        if (errors.isEmpty()) {
71 72 73 74 75 76 77 78 79
            // Store settings in a map and keep it in the session
            Map<String, String> settings = new HashMap<String, String>();
            settings.put("ldap.serverType", serverType);
            settings.put("ldap.host", host);
            settings.put("ldap.port", Integer.toString(port));
            settings.put("ldap.baseDN", baseDN);
            settings.put("ldap.adminDN", adminDN);
            settings.put("ldap.adminPassword", adminPassword);
            settings.put("ldap.connectionPoolEnabled",
80
                    Boolean.toString(connectionPoolEnabled));
81 82
            settings.put("ldap.sslEnabled", Boolean.toString(sslEnabled));
            settings.put("ldap.debugEnabled", Boolean.toString(debugEnabled));
Matt Tucker's avatar
Matt Tucker committed
83 84 85
            settings.put("ldap.autoFollowReferrals", Boolean.toString(referralsEnabled));
            // Always disable connection pooling so that connections aren't left hanging open.
            settings.put("ldap.connectionPoolEnabled", "false");
86
            session.setAttribute("ldapSettings", settings);
Matt Tucker's avatar
Matt Tucker committed
87

Matt Tucker's avatar
Matt Tucker committed
88
            if (save) {
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
                // Save settings and redirect
                JiveGlobals.setXMLProperty("ldap.host", host);
                JiveGlobals.setXMLProperty("ldap.port", Integer.toString(port));
                JiveGlobals.setXMLProperty("ldap.baseDN", baseDN);
                JiveGlobals.setXMLProperty("ldap.adminDN", adminDN);
                JiveGlobals.setXMLProperty("ldap.adminPassword", adminPassword);
                JiveGlobals.setXMLProperty("ldap.connectionPoolEnabled",
                        Boolean.toString(connectionPoolEnabled));
                JiveGlobals.setXMLProperty("ldap.sslEnabled", Boolean.toString(sslEnabled));
                JiveGlobals.setXMLProperty("ldap.debugEnabled", Boolean.toString(debugEnabled));
                JiveGlobals.setXMLProperty("ldap.autoFollowReferrals",
                        Boolean.toString(referralsEnabled));

                // Redirect to next step.
                response.sendRedirect("setup-ldap-user.jsp?serverType=" + serverType);
Matt Tucker's avatar
Matt Tucker committed
104
                return;
105
            }
106 107 108 109 110 111 112 113 114 115 116 117 118 119
        }
    }
    else {
        // See if there are already values for the variables defined.
        host = JiveGlobals.getXMLProperty("ldap.host");
        port = JiveGlobals.getXMLProperty("ldap.port", port);
        baseDN = JiveGlobals.getXMLProperty("ldap.baseDN");
        adminDN = JiveGlobals.getXMLProperty("ldap.adminDN");
        adminPassword = JiveGlobals.getXMLProperty("ldap.adminPassword");
        connectionPoolEnabled =
                JiveGlobals.getXMLProperty("ldap.connectionPoolEnabled", connectionPoolEnabled);
        sslEnabled = JiveGlobals.getXMLProperty("ldap.sslEnabled", sslEnabled);
        debugEnabled = JiveGlobals.getXMLProperty("ldap.debugEnabled", debugEnabled);
        referralsEnabled = JiveGlobals.getXMLProperty("ldap.autoFollowReferrals", referralsEnabled);
120 121 122 123
    }
%>
<html>
<head>
Matt Tucker's avatar
Matt Tucker committed
124
    <title><fmt:message key="setup.ldap.title" /></title>
125 126
    <meta name="currentStep" content="3"/>
</head>
127

128
<body>
129

130
    <% if (test && errors.isEmpty()) { %>
Matt Tucker's avatar
Matt Tucker committed
131

132
        <a href="setup-ldap-server_test.jsp?serverType=<%= serverType%>" id="lbmessage" title="Test" style="display:none;"></a>
Matt Tucker's avatar
Matt Tucker committed
133 134 135 136 137 138 139 140 141 142 143
        <script type="text/javascript">
            function loadMsg() {
                var lb = new lightbox(document.getElementById('lbmessage'));
                lb.activate();
            }
            setTimeout('loadMsg()', 250);
        </script>

    <% } %>

    <h1><fmt:message key="setup.ldap.profile" />: <span><fmt:message key="setup.ldap.connection_settings" /></span></h1>
144 145 146

	<!-- BEGIN jive-contentBox_stepbar -->
	<div id="jive-contentBox_stepbar">
Matt Tucker's avatar
Matt Tucker committed
147 148 149
		<span class="jive-stepbar_step"><strong>1. <fmt:message key="setup.ldap.connection_settings" /></strong></span>
		<span class="jive-stepbar_step"><em>2. <fmt:message key="setup.ldap.user_mapping" /></em></span>
		<span class="jive-stepbar_step"><em>3. <fmt:message key="setup.ldap.group_mapping" /></em></span>
150 151 152
	</div>
	<!-- END jive-contentBox-stepbar -->

153 154
    <!-- BEGIN jive-contentBox -->
    <div class="jive-contentBox jive-contentBox_for-stepbar">
155

Matt Tucker's avatar
Matt Tucker committed
156 157
	<h2><fmt:message key="setup.ldap.step_one" />: <span><fmt:message key="setup.ldap.connection_settings" /></span></h2>
	<p><fmt:message key="setup.ldap.server.description" /></p>
158

159 160 161 162 163 164 165 166
    <%  if (errors.size() > 0) { %>

    <div class="error">
        <% for (String error:errors.values()) { %>
            <%= error%><br/>  
        <% } %>
    </div>

Matt Tucker's avatar
Matt Tucker committed
167
    <%  } %>
168 169

    <form action="setup-ldap-server.jsp" method="post">
170 171 172 173
		<!-- BEGIN jive-contentBox_bluebox -->
		<div class="jive-contentBox_bluebox">
			<table border="0" cellpadding="0" cellspacing="2">
			<tr>
174
			    <td colspan="4"><strong><fmt:message key="setup.ldap.server.ldap_server" /></strong></td>
175 176
			</tr>
			<tr>
177 178 179
                <td align="right" width="1%" nowrap="nowrap"><fmt:message key="setup.ldap.server.type" />:</td>
                <td colspan="3" nowrap>
                    <select name="servertype" size="1" id="jiveLDAPserverType" style="width:90%;">
180 181 182 183
                        <option value="1" <%= serverType == null ? "selected" : "" %>><fmt:message key="setup.ldap.server.type_select" /></option>
                        <option value="2" <%= "activedirectory".equals(serverType) ? "selected" : "" %>>Active Directory</option>
                        <option value="3" <%= "openldap".equals(serverType) ? "selected" : "" %>>OpenLDAP</option>
                        <option value="4" <%= "other".equals(serverType) ? "selected" : "" %>><fmt:message key="setup.ldap.server.type_other" /></option>
184 185
                    </select><span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.server.type_help" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', 8000);"></span>
                </td>
186 187
			</tr>
			<tr>
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
			    <td align="right" width="1%" nowrap="nowrap"><fmt:message key="setup.ldap.server.host" />:</td>
                <td width="1%">
                    <table cellpadding="0" cellspacing="0" border="0" width="100%">
                    <tr>
                        <td width="1%" nowrap="nowrap">
                            <input type="text" name="host" id="jiveLDAPphost" size="22" maxlength="50" value="<%= host!=null?host:"" %>">    
                        </td>
                        <td width="99%">
                            <span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.server.host_help" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', 8000);"></span>
                        </td>
                    </tr>
                    </table>
                </td>
                <td align="right" width="1%" nowrap="nowrap">&nbsp;&nbsp; <fmt:message key="setup.ldap.server.port" />:</td>
                <td><input type="text" name="port" id="jiveLDAPport" size="5" maxlength="5" value="<%= port %>"><span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.server.port_help" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', 8000);"></span></td>
203 204
			</tr>
			<tr>
205 206 207 208 209
                <td align="right"><fmt:message key="setup.ldap.server.basedn" />:</td>
                <td colspan="3">
                    <input type="text" name="basedn" id="jiveLDAPbasedn" size="40" maxlength="150" value="<%= baseDN!=null?baseDN:""%>" style="width:90%;">
                    <span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.server.basedn_help" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', 16000);"></span>
                </td>
210
			</tr>
Matt Tucker's avatar
Matt Tucker committed
211 212
            <tr><td colspan="4">&nbsp;</td></tr>
            <tr>
213
			    <td colspan="4"><strong><fmt:message key="setup.ldap.server.auth" />:</strong></td>
214 215
			</tr>
			<tr>
216 217 218 219 220
                <td align="right" width="1%" nowrap="nowrap"><fmt:message key="setup.ldap.server.admindn" />:</td>
                <td colspan="3">
                    <input type="text" name="admindn" id="jiveLDAPadmindn" size="40" maxlength="150" value="<%= adminDN!=null?adminDN:""%>" style="width:90%;">
                    <span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.server.admindn_help" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', -1);"></span>
                </td>
221 222
			</tr>
			<tr>
223 224
                <td align="right" width="1%" nowrap="nowrap"><fmt:message key="setup.ldap.server.password" />:</td>
                <td colspan="3"><input type="password" name="adminpwd" id="jiveLDAPadminpwd" size="22" maxlength="30" value="<%= adminPassword!=null?adminPassword:""%>"> <span class="jive-setup-helpicon" onmouseover="domTT_activate(this, event, 'content', '<fmt:message key="setup.ldap.server.password_help" />', 'styleClass', 'jiveTooltip', 'trail', true, 'delay', 300, 'lifetime', 8000);"></span></td>
225 226 227 228 229 230 231 232
			</tr>
			</table>
		</div>
		<!-- END jive-contentBox_bluebox -->


		<!-- BEGIN jiveAdvancedButton -->
		<div class="jiveAdvancedButton">
Matt Tucker's avatar
Matt Tucker committed
233
			<a href="#" onclick="togglePanel(jiveAdvanced); return false;" id="jiveAdvancedLink"><fmt:message key="setup.ldap.advanced" /></a>
234 235 236 237 238 239 240 241 242 243 244
		</div>
		<!-- END jiveAdvancedButton -->

		<!-- BEGIN jiveAdvancedPanelcs (advanced connection settings) -->
		<div class="jiveadvancedPanelcs" id="jiveAdvanced" style="display: none;">
			<div>
				<table border="0" cellpadding="0" cellspacing="1">
				<thead>
				<tr>
					<th width="10%"></th>
					<th></th>
Matt Tucker's avatar
Matt Tucker committed
245 246
					<th width="50"><fmt:message key="global.yes" /></th>
					<th width="50"><fmt:message key="global.no" /></th>
247 248 249 250 251
				</tr>
				</thead>
				<tbody>
				<tr>
					<td class="jive-advancedLabel" nowrap>
Matt Tucker's avatar
Matt Tucker committed
252
						<fmt:message key="setup.ldap.server.connection_pool" />:
253 254
					</td>
					<td class="jive-advancedDesc jive-advancedBorderBottom jive-advancedBorderRight">
Matt Tucker's avatar
Matt Tucker committed
255
					    <fmt:message key="setup.ldap.server.connection_pool_help" />
256 257
					</td>
					<td class="jive-advancedBorderBottom jive-advancedBorderRight" align="center">
258
						<input type="radio" name="connectionpool" value="yes" <% if (connectionPoolEnabled) { %>checked <% } %>>
259 260
					</td>
					<td class="jive-advancedBorderBottom" align="center">
261
						<input type="radio" name="connectionpool" value="no" <% if (!connectionPoolEnabled) { %>checked <% } %>>
262 263 264 265
					</td>
				</tr>
				<tr>
					<td class="jive-advancedLabel" nowrap>
Matt Tucker's avatar
Matt Tucker committed
266
						<fmt:message key="setup.ldap.server.ssl" />:
267 268
					</td>
					<td class="jive-advancedDesc jive-advancedBorderBottom jive-advancedBorderRight">
Matt Tucker's avatar
Matt Tucker committed
269
						<fmt:message key="setup.ldap.server.ssl_help" />
270 271
					</td>
					<td class="jive-advancedBorderBottom jive-advancedBorderRight" align="center">
272
						<input type="radio" name="ssl" value="yes" <% if (sslEnabled) { %>checked <% } %>>
273 274
					</td>
					<td class="jive-advancedBorderBottom" align="center">
275
						<input type="radio" name="ssl" value="no" <% if (!sslEnabled) { %>checked <% } %>>
276 277 278 279
					</td>
				</tr>
				<tr>
					<td class="jive-advancedLabel" nowrap>
Matt Tucker's avatar
Matt Tucker committed
280
						<fmt:message key="setup.ldap.server.debug" />:
281 282
					</td>
					<td class="jive-advancedDesc jive-advancedBorderBottom jive-advancedBorderRight">
Matt Tucker's avatar
Matt Tucker committed
283
						<fmt:message key="setup.ldap.server.debug_help" />
284 285
					</td>
					<td class="jive-advancedBorderBottom jive-advancedBorderRight" align="center">
286
						<input type="radio" name="debug" value="yes" <% if (debugEnabled) { %>checked <% } %>>
287 288
					</td>
					<td class="jive-advancedBorderBottom" align="center">
289
						<input type="radio" name="debug" value="no" <% if (!debugEnabled) { %>checked <% } %>>
290 291 292 293
					</td>
				</tr>
				<tr>
					<td class="jive-advancedLabel" nowrap>
294
						<fmt:message key="setup.ldap.server.referral" />:
295 296
					</td>
					<td class="jive-advancedDesc jive-advancedBorderBottom jive-advancedBorderRight">
297
						<fmt:message key="setup.ldap.server.referral_help" />
298 299
					</td>
					<td class="jive-advancedBorderBottom jive-advancedBorderRight" align="center">
300
						<input type="radio" name="referrals" value="yes" <% if (referralsEnabled) { %>checked <% } %>>
301 302
					</td>
					<td class="jive-advancedBorderBottom" align="center">
303
						<input type="radio" name="referrals" value="no" <% if (!referralsEnabled) { %>checked <% } %>>
304 305 306 307 308 309 310 311 312 313 314 315 316 317
					</td>
				</tr>
				</tbody>
				</table>
			</div>
		</div>
		<!-- END jiveAdvancedPanelcs (advanced connection settings) -->


		<!-- BEGIN jive-buttons -->
		<div class="jive-buttons">

			<!-- BEGIN right-aligned buttons -->
			<div align="right">
Matt Tucker's avatar
Matt Tucker committed
318 319
				
                <input type="Submit" name="test" value="<fmt:message key="setup.ldap.test" />" id="jive-setup-test" border="0">
320

Matt Tucker's avatar
Matt Tucker committed
321
                <input type="Submit" name="save" value="<fmt:message key="setup.ldap.continue" />" id="jive-setup-save" border="0">
322 323 324 325 326
			</div>
			<!-- END right-aligned buttons -->

		</div>
		<!-- END jive-buttons -->
327

328
	</form>
329

330 331
	</div>
	<!-- END jive-contentBox -->
332 333 334 335 336



</body>
</html>