<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">package org.apache.archiva.redback.users.ldap.ctl;</a>
<span class="sourceLineNo">002</span><a id="line.2"></a>
<span class="sourceLineNo">003</span><a id="line.3">/*</a>
<span class="sourceLineNo">004</span><a id="line.4"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">005</span><a id="line.5"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">006</span><a id="line.6"> * distributed with this work for additional information</a>
<span class="sourceLineNo">007</span><a id="line.7"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">008</span><a id="line.8"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">009</span><a id="line.9"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">010</span><a id="line.10"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">011</span><a id="line.11"> *</a>
<span class="sourceLineNo">012</span><a id="line.12"> * http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">013</span><a id="line.13"> *</a>
<span class="sourceLineNo">014</span><a id="line.14"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">015</span><a id="line.15"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">016</span><a id="line.16"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">017</span><a id="line.17"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">018</span><a id="line.18"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">019</span><a id="line.19"> * under the License.</a>
<span class="sourceLineNo">020</span><a id="line.20"> */</a>
<span class="sourceLineNo">021</span><a id="line.21"></a>
<span class="sourceLineNo">022</span><a id="line.22">import org.apache.archiva.redback.common.ldap.MappingException;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.apache.archiva.redback.common.ldap.user.LdapUser;</a>
<span class="sourceLineNo">024</span><a id="line.24">import org.apache.archiva.redback.common.ldap.user.LdapUserMapper;</a>
<span class="sourceLineNo">025</span><a id="line.25">import org.apache.archiva.redback.common.ldap.user.UserMapper;</a>
<span class="sourceLineNo">026</span><a id="line.26">import org.apache.archiva.redback.configuration.UserConfiguration;</a>
<span class="sourceLineNo">027</span><a id="line.27">import org.apache.archiva.redback.configuration.UserConfigurationKeys;</a>
<span class="sourceLineNo">028</span><a id="line.28">import org.apache.archiva.redback.policy.PasswordEncoder;</a>
<span class="sourceLineNo">029</span><a id="line.29">import org.apache.archiva.redback.policy.encoders.SHA1PasswordEncoder;</a>
<span class="sourceLineNo">030</span><a id="line.30">import org.apache.archiva.redback.users.User;</a>
<span class="sourceLineNo">031</span><a id="line.31">import org.apache.archiva.redback.users.UserManager;</a>
<span class="sourceLineNo">032</span><a id="line.32">import org.apache.archiva.redback.users.ldap.LdapUserQuery;</a>
<span class="sourceLineNo">033</span><a id="line.33">import org.apache.commons.lang3.StringUtils;</a>
<span class="sourceLineNo">034</span><a id="line.34">import org.slf4j.Logger;</a>
<span class="sourceLineNo">035</span><a id="line.35">import org.slf4j.LoggerFactory;</a>
<span class="sourceLineNo">036</span><a id="line.36">import org.springframework.stereotype.Service;</a>
<span class="sourceLineNo">037</span><a id="line.37"></a>
<span class="sourceLineNo">038</span><a id="line.38">import javax.annotation.PostConstruct;</a>
<span class="sourceLineNo">039</span><a id="line.39">import javax.inject.Inject;</a>
<span class="sourceLineNo">040</span><a id="line.40">import javax.inject.Named;</a>
<span class="sourceLineNo">041</span><a id="line.41">import javax.naming.NamingEnumeration;</a>
<span class="sourceLineNo">042</span><a id="line.42">import javax.naming.NamingException;</a>
<span class="sourceLineNo">043</span><a id="line.43">import javax.naming.directory.Attribute;</a>
<span class="sourceLineNo">044</span><a id="line.44">import javax.naming.directory.Attributes;</a>
<span class="sourceLineNo">045</span><a id="line.45">import javax.naming.directory.BasicAttribute;</a>
<span class="sourceLineNo">046</span><a id="line.46">import javax.naming.directory.BasicAttributes;</a>
<span class="sourceLineNo">047</span><a id="line.47">import javax.naming.directory.DirContext;</a>
<span class="sourceLineNo">048</span><a id="line.48">import javax.naming.directory.SearchControls;</a>
<span class="sourceLineNo">049</span><a id="line.49">import javax.naming.directory.SearchResult;</a>
<span class="sourceLineNo">050</span><a id="line.50">import java.util.Collection;</a>
<span class="sourceLineNo">051</span><a id="line.51">import java.util.HashMap;</a>
<span class="sourceLineNo">052</span><a id="line.52">import java.util.HashSet;</a>
<span class="sourceLineNo">053</span><a id="line.53">import java.util.LinkedHashSet;</a>
<span class="sourceLineNo">054</span><a id="line.54">import java.util.LinkedList;</a>
<span class="sourceLineNo">055</span><a id="line.55">import java.util.List;</a>
<span class="sourceLineNo">056</span><a id="line.56">import java.util.Map;</a>
<span class="sourceLineNo">057</span><a id="line.57">import java.util.Set;</a>
<span class="sourceLineNo">058</span><a id="line.58"></a>
<span class="sourceLineNo">059</span><a id="line.59">/**</a>
<span class="sourceLineNo">060</span><a id="line.60"> * @author  jesse</a>
<span class="sourceLineNo">061</span><a id="line.61"> */</a>
<span class="sourceLineNo">062</span><a id="line.62">@Service</a>
<span class="sourceLineNo">063</span><a id="line.63">public class DefaultLdapController</a>
<span class="sourceLineNo">064</span><a id="line.64">    implements LdapController</a>
<span class="sourceLineNo">065</span><a id="line.65">{</a>
<span class="sourceLineNo">066</span><a id="line.66"></a>
<span class="sourceLineNo">067</span><a id="line.67">    private Logger log = LoggerFactory.getLogger( getClass() );</a>
<span class="sourceLineNo">068</span><a id="line.68"></a>
<span class="sourceLineNo">069</span><a id="line.69">    @Inject</a>
<span class="sourceLineNo">070</span><a id="line.70">    @Named(value = "userMapper#ldap")</a>
<span class="sourceLineNo">071</span><a id="line.71">    private UserMapper mapper;</a>
<span class="sourceLineNo">072</span><a id="line.72"></a>
<span class="sourceLineNo">073</span><a id="line.73">    @Inject</a>
<span class="sourceLineNo">074</span><a id="line.74">    @Named( value = "userConfiguration#default" )</a>
<span class="sourceLineNo">075</span><a id="line.75">    private UserConfiguration userConf;</a>
<span class="sourceLineNo">076</span><a id="line.76"></a>
<span class="sourceLineNo">077</span><a id="line.77">    private boolean writableLdap = false;</a>
<span class="sourceLineNo">078</span><a id="line.78"></a>
<span class="sourceLineNo">079</span><a id="line.79">    private PasswordEncoder passwordEncoder;</a>
<span class="sourceLineNo">080</span><a id="line.80"></a>
<span class="sourceLineNo">081</span><a id="line.81">    private String baseDn;</a>
<span class="sourceLineNo">082</span><a id="line.82"></a>
<span class="sourceLineNo">083</span><a id="line.83">    private String groupsDn;</a>
<span class="sourceLineNo">084</span><a id="line.84"></a>
<span class="sourceLineNo">085</span><a id="line.85">    private String ldapGroupClass = "groupOfUniqueNames";</a>
<span class="sourceLineNo">086</span><a id="line.86"></a>
<span class="sourceLineNo">087</span><a id="line.87">    @PostConstruct</a>
<span class="sourceLineNo">088</span><a id="line.88">    public void initialize()</a>
<span class="sourceLineNo">089</span><a id="line.89">    {</a>
<span class="sourceLineNo">090</span><a id="line.90">        this.writableLdap = userConf.getBoolean( UserConfigurationKeys.LDAP_WRITABLE, this.writableLdap );</a>
<span class="sourceLineNo">091</span><a id="line.91">        this.baseDn = userConf.getConcatenatedList( UserConfigurationKeys.LDAP_BASEDN, null );</a>
<span class="sourceLineNo">092</span><a id="line.92">        this.passwordEncoder = new SHA1PasswordEncoder();</a>
<span class="sourceLineNo">093</span><a id="line.93">        this.groupsDn = userConf.getConcatenatedList( UserConfigurationKeys.LDAP_GROUPS_BASEDN, this.groupsDn );</a>
<span class="sourceLineNo">094</span><a id="line.94">        this.ldapGroupClass = userConf.getString( UserConfigurationKeys.LDAP_GROUPS_CLASS, this.ldapGroupClass );</a>
<span class="sourceLineNo">095</span><a id="line.95">    }</a>
<span class="sourceLineNo">096</span><a id="line.96"></a>
<span class="sourceLineNo">097</span><a id="line.97">    /**</a>
<span class="sourceLineNo">098</span><a id="line.98">     * @see org.apache.archiva.redback.users.ldap.ctl.LdapController#removeUser(String, javax.naming.directory.DirContext)</a>
<span class="sourceLineNo">099</span><a id="line.99">     */</a>
<span class="sourceLineNo">100</span><a id="line.100">    public void removeUser( String principal, DirContext context )</a>
<span class="sourceLineNo">101</span><a id="line.101">        throws LdapControllerException</a>
<span class="sourceLineNo">102</span><a id="line.102">    {</a>
<span class="sourceLineNo">103</span><a id="line.103">        // no op</a>
<span class="sourceLineNo">104</span><a id="line.104">    }</a>
<span class="sourceLineNo">105</span><a id="line.105"></a>
<span class="sourceLineNo">106</span><a id="line.106">    /**</a>
<span class="sourceLineNo">107</span><a id="line.107">     * @see org.apache.archiva.redback.users.ldap.ctl.LdapController#updateUser(org.apache.archiva.redback.users.User, javax.naming.directory.DirContext)</a>
<span class="sourceLineNo">108</span><a id="line.108">     */</a>
<span class="sourceLineNo">109</span><a id="line.109">    public void updateUser( User user, DirContext context )</a>
<span class="sourceLineNo">110</span><a id="line.110">        throws LdapControllerException, MappingException</a>
<span class="sourceLineNo">111</span><a id="line.111">    {</a>
<span class="sourceLineNo">112</span><a id="line.112">        // no op</a>
<span class="sourceLineNo">113</span><a id="line.113">    }</a>
<span class="sourceLineNo">114</span><a id="line.114"></a>
<span class="sourceLineNo">115</span><a id="line.115">    /**</a>
<span class="sourceLineNo">116</span><a id="line.116">     * @see org.apache.archiva.redback.users.ldap.ctl.LdapController#userExists(String, javax.naming.directory.DirContext)</a>
<span class="sourceLineNo">117</span><a id="line.117">     */</a>
<span class="sourceLineNo">118</span><a id="line.118">    public boolean userExists( String key, DirContext context )</a>
<span class="sourceLineNo">119</span><a id="line.119">        throws LdapControllerException</a>
<span class="sourceLineNo">120</span><a id="line.120">    {</a>
<span class="sourceLineNo">121</span><a id="line.121">        NamingEnumeration&lt;SearchResult&gt; results = null;</a>
<span class="sourceLineNo">122</span><a id="line.122">        try</a>
<span class="sourceLineNo">123</span><a id="line.123">        {</a>
<span class="sourceLineNo">124</span><a id="line.124">            results = searchUsers( key, context );</a>
<span class="sourceLineNo">125</span><a id="line.125">            return results.hasMoreElements();</a>
<span class="sourceLineNo">126</span><a id="line.126">        }</a>
<span class="sourceLineNo">127</span><a id="line.127">        catch ( NamingException e )</a>
<span class="sourceLineNo">128</span><a id="line.128">        {</a>
<span class="sourceLineNo">129</span><a id="line.129">            throw new LdapControllerException( "Error searching for the existence of user: " + key, e );</a>
<span class="sourceLineNo">130</span><a id="line.130">        }</a>
<span class="sourceLineNo">131</span><a id="line.131">        finally</a>
<span class="sourceLineNo">132</span><a id="line.132">        {</a>
<span class="sourceLineNo">133</span><a id="line.133">            if ( results != null )</a>
<span class="sourceLineNo">134</span><a id="line.134">            {</a>
<span class="sourceLineNo">135</span><a id="line.135">                try</a>
<span class="sourceLineNo">136</span><a id="line.136">                {</a>
<span class="sourceLineNo">137</span><a id="line.137">                    results.close();</a>
<span class="sourceLineNo">138</span><a id="line.138">                }</a>
<span class="sourceLineNo">139</span><a id="line.139">                catch ( NamingException e )</a>
<span class="sourceLineNo">140</span><a id="line.140">                {</a>
<span class="sourceLineNo">141</span><a id="line.141">                    log.warn( "Error closing search results", e );</a>
<span class="sourceLineNo">142</span><a id="line.142">                }</a>
<span class="sourceLineNo">143</span><a id="line.143">            }</a>
<span class="sourceLineNo">144</span><a id="line.144">        }</a>
<span class="sourceLineNo">145</span><a id="line.145">    }</a>
<span class="sourceLineNo">146</span><a id="line.146"></a>
<span class="sourceLineNo">147</span><a id="line.147">    protected NamingEnumeration&lt;SearchResult&gt; searchUsers( String key, DirContext context )</a>
<span class="sourceLineNo">148</span><a id="line.148">        throws NamingException</a>
<span class="sourceLineNo">149</span><a id="line.149">    {</a>
<span class="sourceLineNo">150</span><a id="line.150">        LdapUserQuery query = new LdapUserQuery();</a>
<span class="sourceLineNo">151</span><a id="line.151">        query.setUsername( key );</a>
<span class="sourceLineNo">152</span><a id="line.152">        return searchUsers( context, null, query );</a>
<span class="sourceLineNo">153</span><a id="line.153">    }</a>
<span class="sourceLineNo">154</span><a id="line.154"></a>
<span class="sourceLineNo">155</span><a id="line.155">    protected NamingEnumeration&lt;SearchResult&gt; searchUsers( DirContext context )</a>
<span class="sourceLineNo">156</span><a id="line.156">        throws NamingException</a>
<span class="sourceLineNo">157</span><a id="line.157">    {</a>
<span class="sourceLineNo">158</span><a id="line.158">        return searchUsers( context, null, null );</a>
<span class="sourceLineNo">159</span><a id="line.159">    }</a>
<span class="sourceLineNo">160</span><a id="line.160"></a>
<span class="sourceLineNo">161</span><a id="line.161">    protected NamingEnumeration&lt;SearchResult&gt; searchUsers( DirContext context, String[] returnAttributes )</a>
<span class="sourceLineNo">162</span><a id="line.162">        throws NamingException</a>
<span class="sourceLineNo">163</span><a id="line.163">    {</a>
<span class="sourceLineNo">164</span><a id="line.164">        return searchUsers( context, returnAttributes, null );</a>
<span class="sourceLineNo">165</span><a id="line.165">    }</a>
<span class="sourceLineNo">166</span><a id="line.166"></a>
<span class="sourceLineNo">167</span><a id="line.167">    protected NamingEnumeration&lt;SearchResult&gt; searchUsers( DirContext context, String[] returnAttributes,</a>
<span class="sourceLineNo">168</span><a id="line.168">                                                           LdapUserQuery query )</a>
<span class="sourceLineNo">169</span><a id="line.169">        throws NamingException</a>
<span class="sourceLineNo">170</span><a id="line.170">    {</a>
<span class="sourceLineNo">171</span><a id="line.171">        if ( query == null )</a>
<span class="sourceLineNo">172</span><a id="line.172">        {</a>
<span class="sourceLineNo">173</span><a id="line.173">            query = new LdapUserQuery();</a>
<span class="sourceLineNo">174</span><a id="line.174">        }</a>
<span class="sourceLineNo">175</span><a id="line.175">        SearchControls ctls = new SearchControls();</a>
<span class="sourceLineNo">176</span><a id="line.176"></a>
<span class="sourceLineNo">177</span><a id="line.177">        ctls.setDerefLinkFlag( true );</a>
<span class="sourceLineNo">178</span><a id="line.178">        ctls.setSearchScope( SearchControls.SUBTREE_SCOPE );</a>
<span class="sourceLineNo">179</span><a id="line.179">        ctls.setReturningAttributes( mapper.getReturningAttributes() );</a>
<span class="sourceLineNo">180</span><a id="line.180">        ctls.setCountLimit( ( (LdapUserMapper) mapper ).getMaxResultCount() );</a>
<span class="sourceLineNo">181</span><a id="line.181"></a>
<span class="sourceLineNo">182</span><a id="line.182">        String finalFilter = new StringBuilder( "(&amp;(objectClass=" + mapper.getUserObjectClass() + ")" ).append(</a>
<span class="sourceLineNo">183</span><a id="line.183">            ( mapper.getUserFilter() != null ? mapper.getUserFilter() : "" ) ).append(</a>
<span class="sourceLineNo">184</span><a id="line.184">            query.getLdapFilter( mapper ) + ")" ).toString();</a>
<span class="sourceLineNo">185</span><a id="line.185"></a>
<span class="sourceLineNo">186</span><a id="line.186">        log.debug( "Searching for users with filter: '{}' from base dn: {}", finalFilter, mapper.getUserBaseDn() );</a>
<span class="sourceLineNo">187</span><a id="line.187"></a>
<span class="sourceLineNo">188</span><a id="line.188">        return context.search( mapper.getUserBaseDn(), finalFilter, ctls );</a>
<span class="sourceLineNo">189</span><a id="line.189">    }</a>
<span class="sourceLineNo">190</span><a id="line.190"></a>
<span class="sourceLineNo">191</span><a id="line.191">    /**</a>
<span class="sourceLineNo">192</span><a id="line.192">     * @see org.apache.archiva.redback.users.ldap.ctl.LdapController#getUsers(javax.naming.directory.DirContext)</a>
<span class="sourceLineNo">193</span><a id="line.193">     */</a>
<span class="sourceLineNo">194</span><a id="line.194">    public Collection&lt;User&gt; getUsers( DirContext context )</a>
<span class="sourceLineNo">195</span><a id="line.195">        throws LdapControllerException, MappingException</a>
<span class="sourceLineNo">196</span><a id="line.196">    {</a>
<span class="sourceLineNo">197</span><a id="line.197">        NamingEnumeration&lt;SearchResult&gt; results = null;</a>
<span class="sourceLineNo">198</span><a id="line.198">        try</a>
<span class="sourceLineNo">199</span><a id="line.199">        {</a>
<span class="sourceLineNo">200</span><a id="line.200">            results = searchUsers( context, null, null );</a>
<span class="sourceLineNo">201</span><a id="line.201">            Set&lt;User&gt; users = new LinkedHashSet&lt;User&gt;();</a>
<span class="sourceLineNo">202</span><a id="line.202"></a>
<span class="sourceLineNo">203</span><a id="line.203">            while ( results.hasMoreElements() )</a>
<span class="sourceLineNo">204</span><a id="line.204">            {</a>
<span class="sourceLineNo">205</span><a id="line.205">                SearchResult result = results.nextElement();</a>
<span class="sourceLineNo">206</span><a id="line.206"></a>
<span class="sourceLineNo">207</span><a id="line.207">                users.add( mapper.getUser( result.getNameInNamespace(), result.getAttributes() ) );</a>
<span class="sourceLineNo">208</span><a id="line.208">            }</a>
<span class="sourceLineNo">209</span><a id="line.209"></a>
<span class="sourceLineNo">210</span><a id="line.210">            return users;</a>
<span class="sourceLineNo">211</span><a id="line.211">        }</a>
<span class="sourceLineNo">212</span><a id="line.212">        catch ( NamingException e )</a>
<span class="sourceLineNo">213</span><a id="line.213">        {</a>
<span class="sourceLineNo">214</span><a id="line.214">            String message = "Failed to retrieve ldap information for users.";</a>
<span class="sourceLineNo">215</span><a id="line.215"></a>
<span class="sourceLineNo">216</span><a id="line.216">            throw new LdapControllerException( message, e );</a>
<span class="sourceLineNo">217</span><a id="line.217">        }</a>
<span class="sourceLineNo">218</span><a id="line.218">        finally</a>
<span class="sourceLineNo">219</span><a id="line.219">        {</a>
<span class="sourceLineNo">220</span><a id="line.220">            if ( results != null )</a>
<span class="sourceLineNo">221</span><a id="line.221">            {</a>
<span class="sourceLineNo">222</span><a id="line.222">                try</a>
<span class="sourceLineNo">223</span><a id="line.223">                {</a>
<span class="sourceLineNo">224</span><a id="line.224">                    results.close();</a>
<span class="sourceLineNo">225</span><a id="line.225">                }</a>
<span class="sourceLineNo">226</span><a id="line.226">                catch ( NamingException e )</a>
<span class="sourceLineNo">227</span><a id="line.227">                {</a>
<span class="sourceLineNo">228</span><a id="line.228">                    log.warn( "failed to close search results", e );</a>
<span class="sourceLineNo">229</span><a id="line.229">                }</a>
<span class="sourceLineNo">230</span><a id="line.230">            }</a>
<span class="sourceLineNo">231</span><a id="line.231">        }</a>
<span class="sourceLineNo">232</span><a id="line.232">    }</a>
<span class="sourceLineNo">233</span><a id="line.233"></a>
<span class="sourceLineNo">234</span><a id="line.234">    /**</a>
<span class="sourceLineNo">235</span><a id="line.235">     * @see org.apache.archiva.redback.users.ldap.ctl.LdapController#getUsersByQuery(org.apache.archiva.redback.users.ldap.LdapUserQuery, javax.naming.directory.DirContext)</a>
<span class="sourceLineNo">236</span><a id="line.236">     */</a>
<span class="sourceLineNo">237</span><a id="line.237">    public List&lt;User&gt; getUsersByQuery( LdapUserQuery query, DirContext context )</a>
<span class="sourceLineNo">238</span><a id="line.238">        throws LdapControllerException, MappingException</a>
<span class="sourceLineNo">239</span><a id="line.239">    {</a>
<span class="sourceLineNo">240</span><a id="line.240">        NamingEnumeration&lt;SearchResult&gt; results = null;</a>
<span class="sourceLineNo">241</span><a id="line.241">        try</a>
<span class="sourceLineNo">242</span><a id="line.242">        {</a>
<span class="sourceLineNo">243</span><a id="line.243">            results = searchUsers( context, null, query );</a>
<span class="sourceLineNo">244</span><a id="line.244">            List&lt;User&gt; users = new LinkedList&lt;User&gt;();</a>
<span class="sourceLineNo">245</span><a id="line.245"></a>
<span class="sourceLineNo">246</span><a id="line.246">            while ( results.hasMoreElements() )</a>
<span class="sourceLineNo">247</span><a id="line.247">            {</a>
<span class="sourceLineNo">248</span><a id="line.248">                SearchResult result = results.nextElement();</a>
<span class="sourceLineNo">249</span><a id="line.249"></a>
<span class="sourceLineNo">250</span><a id="line.250">                users.add( mapper.getUser( result.getNameInNamespace(), result.getAttributes() ) );</a>
<span class="sourceLineNo">251</span><a id="line.251">            }</a>
<span class="sourceLineNo">252</span><a id="line.252"></a>
<span class="sourceLineNo">253</span><a id="line.253">            return users;</a>
<span class="sourceLineNo">254</span><a id="line.254">        }</a>
<span class="sourceLineNo">255</span><a id="line.255">        catch ( NamingException e )</a>
<span class="sourceLineNo">256</span><a id="line.256">        {</a>
<span class="sourceLineNo">257</span><a id="line.257">            String message = "Failed to retrieve ldap information for users.";</a>
<span class="sourceLineNo">258</span><a id="line.258"></a>
<span class="sourceLineNo">259</span><a id="line.259">            throw new LdapControllerException( message, e );</a>
<span class="sourceLineNo">260</span><a id="line.260">        }</a>
<span class="sourceLineNo">261</span><a id="line.261">        finally</a>
<span class="sourceLineNo">262</span><a id="line.262">        {</a>
<span class="sourceLineNo">263</span><a id="line.263">            if ( results != null )</a>
<span class="sourceLineNo">264</span><a id="line.264">            {</a>
<span class="sourceLineNo">265</span><a id="line.265">                try</a>
<span class="sourceLineNo">266</span><a id="line.266">                {</a>
<span class="sourceLineNo">267</span><a id="line.267">                    results.close();</a>
<span class="sourceLineNo">268</span><a id="line.268">                }</a>
<span class="sourceLineNo">269</span><a id="line.269">                catch ( NamingException e )</a>
<span class="sourceLineNo">270</span><a id="line.270">                {</a>
<span class="sourceLineNo">271</span><a id="line.271">                    log.warn( "failed to close search results", e );</a>
<span class="sourceLineNo">272</span><a id="line.272">                }</a>
<span class="sourceLineNo">273</span><a id="line.273">            }</a>
<span class="sourceLineNo">274</span><a id="line.274">        }</a>
<span class="sourceLineNo">275</span><a id="line.275">    }</a>
<span class="sourceLineNo">276</span><a id="line.276"></a>
<span class="sourceLineNo">277</span><a id="line.277">    /**</a>
<span class="sourceLineNo">278</span><a id="line.278">     * @see org.apache.archiva.redback.users.ldap.ctl.LdapController#createUser(org.apache.archiva.redback.users.User, javax.naming.directory.DirContext, boolean)</a>
<span class="sourceLineNo">279</span><a id="line.279">     */</a>
<span class="sourceLineNo">280</span><a id="line.280">    public void createUser( User user, DirContext context, boolean encodePasswordIfChanged )</a>
<span class="sourceLineNo">281</span><a id="line.281">        throws LdapControllerException, MappingException</a>
<span class="sourceLineNo">282</span><a id="line.282">    {</a>
<span class="sourceLineNo">283</span><a id="line.283">        if ( user == null )</a>
<span class="sourceLineNo">284</span><a id="line.284">        {</a>
<span class="sourceLineNo">285</span><a id="line.285">            return;</a>
<span class="sourceLineNo">286</span><a id="line.286">        }</a>
<span class="sourceLineNo">287</span><a id="line.287">        if ( user.getUsername().equals( UserManager.GUEST_USERNAME ) )</a>
<span class="sourceLineNo">288</span><a id="line.288">        {</a>
<span class="sourceLineNo">289</span><a id="line.289">            log.warn( "skip user '{}' creation" );</a>
<span class="sourceLineNo">290</span><a id="line.290">            //We don't store guest</a>
<span class="sourceLineNo">291</span><a id="line.291">            return;</a>
<span class="sourceLineNo">292</span><a id="line.292">        }</a>
<span class="sourceLineNo">293</span><a id="line.293">        boolean userExists = userExists( user.getUsername(), context );</a>
<span class="sourceLineNo">294</span><a id="line.294">        if ( userExists )</a>
<span class="sourceLineNo">295</span><a id="line.295">        {</a>
<span class="sourceLineNo">296</span><a id="line.296">            log.debug( "user '{}' exists skip creation", user.getUsername() );</a>
<span class="sourceLineNo">297</span><a id="line.297">            return;</a>
<span class="sourceLineNo">298</span><a id="line.298">        }</a>
<span class="sourceLineNo">299</span><a id="line.299">        if ( writableLdap )</a>
<span class="sourceLineNo">300</span><a id="line.300">        {</a>
<span class="sourceLineNo">301</span><a id="line.301">            try</a>
<span class="sourceLineNo">302</span><a id="line.302">            {</a>
<span class="sourceLineNo">303</span><a id="line.303">                bindUserObject( context, user );</a>
<span class="sourceLineNo">304</span><a id="line.304">                log.info( "user {} created in ldap", user.getUsername() );</a>
<span class="sourceLineNo">305</span><a id="line.305">            }</a>
<span class="sourceLineNo">306</span><a id="line.306">            catch ( NamingException e )</a>
<span class="sourceLineNo">307</span><a id="line.307">            {</a>
<span class="sourceLineNo">308</span><a id="line.308">                throw new LdapControllerException( e.getMessage(), e );</a>
<span class="sourceLineNo">309</span><a id="line.309">            }</a>
<span class="sourceLineNo">310</span><a id="line.310">        }</a>
<span class="sourceLineNo">311</span><a id="line.311">    }</a>
<span class="sourceLineNo">312</span><a id="line.312"></a>
<span class="sourceLineNo">313</span><a id="line.313"></a>
<span class="sourceLineNo">314</span><a id="line.314">    private void bindUserObject( DirContext context, User user )</a>
<span class="sourceLineNo">315</span><a id="line.315">        throws NamingException</a>
<span class="sourceLineNo">316</span><a id="line.316">    {</a>
<span class="sourceLineNo">317</span><a id="line.317">        Attributes attributes = new BasicAttributes( true );</a>
<span class="sourceLineNo">318</span><a id="line.318">        BasicAttribute objectClass = new BasicAttribute( "objectClass" );</a>
<span class="sourceLineNo">319</span><a id="line.319">        objectClass.add( "top" );</a>
<span class="sourceLineNo">320</span><a id="line.320">        objectClass.add( "inetOrgPerson" );</a>
<span class="sourceLineNo">321</span><a id="line.321">        objectClass.add( "person" );</a>
<span class="sourceLineNo">322</span><a id="line.322">        objectClass.add( "organizationalperson" );</a>
<span class="sourceLineNo">323</span><a id="line.323">        attributes.put( objectClass );</a>
<span class="sourceLineNo">324</span><a id="line.324">        attributes.put( "cn", user.getUsername() );</a>
<span class="sourceLineNo">325</span><a id="line.325">        attributes.put( "sn", "foo" );</a>
<span class="sourceLineNo">326</span><a id="line.326">        if ( StringUtils.isNotEmpty( user.getEmail() ) )</a>
<span class="sourceLineNo">327</span><a id="line.327">        {</a>
<span class="sourceLineNo">328</span><a id="line.328">            attributes.put( "mail", user.getEmail() );</a>
<span class="sourceLineNo">329</span><a id="line.329">        }</a>
<span class="sourceLineNo">330</span><a id="line.330"></a>
<span class="sourceLineNo">331</span><a id="line.331">        if ( userConf.getBoolean( UserConfigurationKeys.LDAP_BIND_AUTHENTICATOR_ALLOW_EMPTY_PASSWORDS, false )</a>
<span class="sourceLineNo">332</span><a id="line.332">            &amp;&amp; StringUtils.isNotEmpty( user.getPassword() ) )</a>
<span class="sourceLineNo">333</span><a id="line.333">        {</a>
<span class="sourceLineNo">334</span><a id="line.334">            attributes.put( "userPassword", passwordEncoder.encodePassword( user.getPassword() ) );</a>
<span class="sourceLineNo">335</span><a id="line.335">        }</a>
<span class="sourceLineNo">336</span><a id="line.336">        attributes.put( "givenName", "foo" );</a>
<span class="sourceLineNo">337</span><a id="line.337">        context.createSubcontext( "cn=" + user.getUsername() + "," + this.getBaseDn(), attributes );</a>
<span class="sourceLineNo">338</span><a id="line.338">    }</a>
<span class="sourceLineNo">339</span><a id="line.339"></a>
<span class="sourceLineNo">340</span><a id="line.340">    /**</a>
<span class="sourceLineNo">341</span><a id="line.341">     * @see org.apache.archiva.redback.users.ldap.ctl.LdapController#getUser(String, javax.naming.directory.DirContext)</a>
<span class="sourceLineNo">342</span><a id="line.342">     */</a>
<span class="sourceLineNo">343</span><a id="line.343">    public LdapUser getUser( String username, DirContext context )</a>
<span class="sourceLineNo">344</span><a id="line.344">        throws LdapControllerException, MappingException</a>
<span class="sourceLineNo">345</span><a id="line.345">    {</a>
<span class="sourceLineNo">346</span><a id="line.346"></a>
<span class="sourceLineNo">347</span><a id="line.347">        log.debug( "Searching for user: {}", username );</a>
<span class="sourceLineNo">348</span><a id="line.348"></a>
<span class="sourceLineNo">349</span><a id="line.349">        LdapUserQuery query = new LdapUserQuery();</a>
<span class="sourceLineNo">350</span><a id="line.350">        query.setUsername( username );</a>
<span class="sourceLineNo">351</span><a id="line.351"></a>
<span class="sourceLineNo">352</span><a id="line.352">        NamingEnumeration&lt;SearchResult&gt; result = null;</a>
<span class="sourceLineNo">353</span><a id="line.353">        try</a>
<span class="sourceLineNo">354</span><a id="line.354">        {</a>
<span class="sourceLineNo">355</span><a id="line.355">            result = searchUsers( context, null, query );</a>
<span class="sourceLineNo">356</span><a id="line.356"></a>
<span class="sourceLineNo">357</span><a id="line.357">            if ( result.hasMoreElements() )</a>
<span class="sourceLineNo">358</span><a id="line.358">            {</a>
<span class="sourceLineNo">359</span><a id="line.359">                SearchResult next = result.nextElement();</a>
<span class="sourceLineNo">360</span><a id="line.360"></a>
<span class="sourceLineNo">361</span><a id="line.361">                log.info( "Found user: {}", username );</a>
<span class="sourceLineNo">362</span><a id="line.362"></a>
<span class="sourceLineNo">363</span><a id="line.363">                return mapper.getUser( next.getNameInNamespace(), next.getAttributes() );</a>
<span class="sourceLineNo">364</span><a id="line.364">            }</a>
<span class="sourceLineNo">365</span><a id="line.365">            else</a>
<span class="sourceLineNo">366</span><a id="line.366">            {</a>
<span class="sourceLineNo">367</span><a id="line.367">                return null;</a>
<span class="sourceLineNo">368</span><a id="line.368">            }</a>
<span class="sourceLineNo">369</span><a id="line.369">        }</a>
<span class="sourceLineNo">370</span><a id="line.370">        catch ( NamingException e )</a>
<span class="sourceLineNo">371</span><a id="line.371">        {</a>
<span class="sourceLineNo">372</span><a id="line.372">            String message = "Failed to retrieve information for user: " + username;</a>
<span class="sourceLineNo">373</span><a id="line.373"></a>
<span class="sourceLineNo">374</span><a id="line.374">            throw new LdapControllerException( message, e );</a>
<span class="sourceLineNo">375</span><a id="line.375">        }</a>
<span class="sourceLineNo">376</span><a id="line.376">        finally</a>
<span class="sourceLineNo">377</span><a id="line.377">        {</a>
<span class="sourceLineNo">378</span><a id="line.378">            if ( result != null )</a>
<span class="sourceLineNo">379</span><a id="line.379">            {</a>
<span class="sourceLineNo">380</span><a id="line.380">                try</a>
<span class="sourceLineNo">381</span><a id="line.381">                {</a>
<span class="sourceLineNo">382</span><a id="line.382">                    result.close();</a>
<span class="sourceLineNo">383</span><a id="line.383">                }</a>
<span class="sourceLineNo">384</span><a id="line.384">                catch ( NamingException e )</a>
<span class="sourceLineNo">385</span><a id="line.385">                {</a>
<span class="sourceLineNo">386</span><a id="line.386">                    log.warn( "failed to close search results", e );</a>
<span class="sourceLineNo">387</span><a id="line.387">                }</a>
<span class="sourceLineNo">388</span><a id="line.388">            }</a>
<span class="sourceLineNo">389</span><a id="line.389">        }</a>
<span class="sourceLineNo">390</span><a id="line.390">    }</a>
<span class="sourceLineNo">391</span><a id="line.391"></a>
<span class="sourceLineNo">392</span><a id="line.392">    public Map&lt;String, Collection&lt;String&gt;&gt; findUsersWithRoles( DirContext dirContext )</a>
<span class="sourceLineNo">393</span><a id="line.393">        throws LdapControllerException</a>
<span class="sourceLineNo">394</span><a id="line.394">    {</a>
<span class="sourceLineNo">395</span><a id="line.395">        Map&lt;String, Collection&lt;String&gt;&gt; usersWithRoles = new HashMap&lt;String, Collection&lt;String&gt;&gt;();</a>
<span class="sourceLineNo">396</span><a id="line.396"></a>
<span class="sourceLineNo">397</span><a id="line.397">        NamingEnumeration&lt;SearchResult&gt; namingEnumeration = null;</a>
<span class="sourceLineNo">398</span><a id="line.398">        try</a>
<span class="sourceLineNo">399</span><a id="line.399">        {</a>
<span class="sourceLineNo">400</span><a id="line.400"></a>
<span class="sourceLineNo">401</span><a id="line.401">            SearchControls searchControls = new SearchControls();</a>
<span class="sourceLineNo">402</span><a id="line.402"></a>
<span class="sourceLineNo">403</span><a id="line.403">            searchControls.setDerefLinkFlag( true );</a>
<span class="sourceLineNo">404</span><a id="line.404">            searchControls.setSearchScope( SearchControls.SUBTREE_SCOPE );</a>
<span class="sourceLineNo">405</span><a id="line.405"></a>
<span class="sourceLineNo">406</span><a id="line.406">            String filter = "objectClass=" + getLdapGroupClass();</a>
<span class="sourceLineNo">407</span><a id="line.407"></a>
<span class="sourceLineNo">408</span><a id="line.408">            namingEnumeration = dirContext.search( getGroupsDn(), filter, searchControls );</a>
<span class="sourceLineNo">409</span><a id="line.409"></a>
<span class="sourceLineNo">410</span><a id="line.410">            while ( namingEnumeration.hasMore() )</a>
<span class="sourceLineNo">411</span><a id="line.411">            {</a>
<span class="sourceLineNo">412</span><a id="line.412">                SearchResult searchResult = namingEnumeration.next();</a>
<span class="sourceLineNo">413</span><a id="line.413"></a>
<span class="sourceLineNo">414</span><a id="line.414">                String groupName = searchResult.getName();</a>
<span class="sourceLineNo">415</span><a id="line.415">                // cn=blabla we only want bla bla</a>
<span class="sourceLineNo">416</span><a id="line.416">                groupName = StringUtils.substringAfter( groupName, "=" );</a>
<span class="sourceLineNo">417</span><a id="line.417"></a>
<span class="sourceLineNo">418</span><a id="line.418">                Attribute uniqueMemberAttr = searchResult.getAttributes().get( "uniquemember" );</a>
<span class="sourceLineNo">419</span><a id="line.419"></a>
<span class="sourceLineNo">420</span><a id="line.420">                if ( uniqueMemberAttr != null )</a>
<span class="sourceLineNo">421</span><a id="line.421">                {</a>
<span class="sourceLineNo">422</span><a id="line.422">                    NamingEnumeration&lt;?&gt; allMembersEnum = uniqueMemberAttr.getAll();</a>
<span class="sourceLineNo">423</span><a id="line.423">                    while ( allMembersEnum.hasMore() )</a>
<span class="sourceLineNo">424</span><a id="line.424">                    {</a>
<span class="sourceLineNo">425</span><a id="line.425">                        String userName = allMembersEnum.next().toString();</a>
<span class="sourceLineNo">426</span><a id="line.426">                        // uid=blabla we only want bla bla</a>
<span class="sourceLineNo">427</span><a id="line.427">                        userName = StringUtils.substringAfter( userName, "=" );</a>
<span class="sourceLineNo">428</span><a id="line.428">                        userName = StringUtils.substringBefore( userName, "," );</a>
<span class="sourceLineNo">429</span><a id="line.429">                        Collection&lt;String&gt; roles = usersWithRoles.get( userName );</a>
<span class="sourceLineNo">430</span><a id="line.430">                        if ( roles == null )</a>
<span class="sourceLineNo">431</span><a id="line.431">                        {</a>
<span class="sourceLineNo">432</span><a id="line.432">                            roles = new HashSet&lt;String&gt;();</a>
<span class="sourceLineNo">433</span><a id="line.433">                        }</a>
<span class="sourceLineNo">434</span><a id="line.434"></a>
<span class="sourceLineNo">435</span><a id="line.435">                        roles.add( groupName );</a>
<span class="sourceLineNo">436</span><a id="line.436"></a>
<span class="sourceLineNo">437</span><a id="line.437">                        usersWithRoles.put( userName, roles );</a>
<span class="sourceLineNo">438</span><a id="line.438"></a>
<span class="sourceLineNo">439</span><a id="line.439">                    }</a>
<span class="sourceLineNo">440</span><a id="line.440">                }</a>
<span class="sourceLineNo">441</span><a id="line.441"></a>
<span class="sourceLineNo">442</span><a id="line.442">                log.debug( "found groupName: '{}' with users: {}", groupName );</a>
<span class="sourceLineNo">443</span><a id="line.443"></a>
<span class="sourceLineNo">444</span><a id="line.444">            }</a>
<span class="sourceLineNo">445</span><a id="line.445"></a>
<span class="sourceLineNo">446</span><a id="line.446">            return usersWithRoles;</a>
<span class="sourceLineNo">447</span><a id="line.447">        }</a>
<span class="sourceLineNo">448</span><a id="line.448">        catch ( NamingException e )</a>
<span class="sourceLineNo">449</span><a id="line.449">        {</a>
<span class="sourceLineNo">450</span><a id="line.450">            throw new LdapControllerException( e.getMessage(), e );</a>
<span class="sourceLineNo">451</span><a id="line.451">        }</a>
<span class="sourceLineNo">452</span><a id="line.452"></a>
<span class="sourceLineNo">453</span><a id="line.453">        finally</a>
<span class="sourceLineNo">454</span><a id="line.454">        {</a>
<span class="sourceLineNo">455</span><a id="line.455"></a>
<span class="sourceLineNo">456</span><a id="line.456">            if ( namingEnumeration != null )</a>
<span class="sourceLineNo">457</span><a id="line.457">            {</a>
<span class="sourceLineNo">458</span><a id="line.458">                try</a>
<span class="sourceLineNo">459</span><a id="line.459">                {</a>
<span class="sourceLineNo">460</span><a id="line.460">                    namingEnumeration.close();</a>
<span class="sourceLineNo">461</span><a id="line.461">                }</a>
<span class="sourceLineNo">462</span><a id="line.462">                catch ( NamingException e )</a>
<span class="sourceLineNo">463</span><a id="line.463">                {</a>
<span class="sourceLineNo">464</span><a id="line.464">                    log.warn( "failed to close search results", e );</a>
<span class="sourceLineNo">465</span><a id="line.465">                }</a>
<span class="sourceLineNo">466</span><a id="line.466">            }</a>
<span class="sourceLineNo">467</span><a id="line.467">        }</a>
<span class="sourceLineNo">468</span><a id="line.468">    }</a>
<span class="sourceLineNo">469</span><a id="line.469"></a>
<span class="sourceLineNo">470</span><a id="line.470">    //-----------------------------</a>
<span class="sourceLineNo">471</span><a id="line.471">    // setters/getters</a>
<span class="sourceLineNo">472</span><a id="line.472">    //-----------------------------</a>
<span class="sourceLineNo">473</span><a id="line.473">    public UserMapper getMapper()</a>
<span class="sourceLineNo">474</span><a id="line.474">    {</a>
<span class="sourceLineNo">475</span><a id="line.475">        return mapper;</a>
<span class="sourceLineNo">476</span><a id="line.476">    }</a>
<span class="sourceLineNo">477</span><a id="line.477"></a>
<span class="sourceLineNo">478</span><a id="line.478">    public void setMapper( UserMapper mapper )</a>
<span class="sourceLineNo">479</span><a id="line.479">    {</a>
<span class="sourceLineNo">480</span><a id="line.480">        this.mapper = mapper;</a>
<span class="sourceLineNo">481</span><a id="line.481">    }</a>
<span class="sourceLineNo">482</span><a id="line.482"></a>
<span class="sourceLineNo">483</span><a id="line.483">    public UserConfiguration getUserConf()</a>
<span class="sourceLineNo">484</span><a id="line.484">    {</a>
<span class="sourceLineNo">485</span><a id="line.485">        return userConf;</a>
<span class="sourceLineNo">486</span><a id="line.486">    }</a>
<span class="sourceLineNo">487</span><a id="line.487"></a>
<span class="sourceLineNo">488</span><a id="line.488">    public void setUserConf( UserConfiguration userConf )</a>
<span class="sourceLineNo">489</span><a id="line.489">    {</a>
<span class="sourceLineNo">490</span><a id="line.490">        this.userConf = userConf;</a>
<span class="sourceLineNo">491</span><a id="line.491">    }</a>
<span class="sourceLineNo">492</span><a id="line.492"></a>
<span class="sourceLineNo">493</span><a id="line.493">    public boolean isWritableLdap()</a>
<span class="sourceLineNo">494</span><a id="line.494">    {</a>
<span class="sourceLineNo">495</span><a id="line.495">        return writableLdap;</a>
<span class="sourceLineNo">496</span><a id="line.496">    }</a>
<span class="sourceLineNo">497</span><a id="line.497"></a>
<span class="sourceLineNo">498</span><a id="line.498">    public void setWritableLdap( boolean writableLdap )</a>
<span class="sourceLineNo">499</span><a id="line.499">    {</a>
<span class="sourceLineNo">500</span><a id="line.500">        this.writableLdap = writableLdap;</a>
<span class="sourceLineNo">501</span><a id="line.501">    }</a>
<span class="sourceLineNo">502</span><a id="line.502"></a>
<span class="sourceLineNo">503</span><a id="line.503">    public PasswordEncoder getPasswordEncoder()</a>
<span class="sourceLineNo">504</span><a id="line.504">    {</a>
<span class="sourceLineNo">505</span><a id="line.505">        return passwordEncoder;</a>
<span class="sourceLineNo">506</span><a id="line.506">    }</a>
<span class="sourceLineNo">507</span><a id="line.507"></a>
<span class="sourceLineNo">508</span><a id="line.508">    public void setPasswordEncoder( PasswordEncoder passwordEncoder )</a>
<span class="sourceLineNo">509</span><a id="line.509">    {</a>
<span class="sourceLineNo">510</span><a id="line.510">        this.passwordEncoder = passwordEncoder;</a>
<span class="sourceLineNo">511</span><a id="line.511">    }</a>
<span class="sourceLineNo">512</span><a id="line.512"></a>
<span class="sourceLineNo">513</span><a id="line.513">    public String getBaseDn()</a>
<span class="sourceLineNo">514</span><a id="line.514">    {</a>
<span class="sourceLineNo">515</span><a id="line.515">        return baseDn;</a>
<span class="sourceLineNo">516</span><a id="line.516">    }</a>
<span class="sourceLineNo">517</span><a id="line.517"></a>
<span class="sourceLineNo">518</span><a id="line.518">    public void setBaseDn( String baseDn )</a>
<span class="sourceLineNo">519</span><a id="line.519">    {</a>
<span class="sourceLineNo">520</span><a id="line.520">        this.baseDn = baseDn;</a>
<span class="sourceLineNo">521</span><a id="line.521">    }</a>
<span class="sourceLineNo">522</span><a id="line.522"></a>
<span class="sourceLineNo">523</span><a id="line.523">    public String getGroupsDn()</a>
<span class="sourceLineNo">524</span><a id="line.524">    {</a>
<span class="sourceLineNo">525</span><a id="line.525">        return groupsDn;</a>
<span class="sourceLineNo">526</span><a id="line.526">    }</a>
<span class="sourceLineNo">527</span><a id="line.527"></a>
<span class="sourceLineNo">528</span><a id="line.528">    public void setGroupsDn( String groupsDn )</a>
<span class="sourceLineNo">529</span><a id="line.529">    {</a>
<span class="sourceLineNo">530</span><a id="line.530">        this.groupsDn = groupsDn;</a>
<span class="sourceLineNo">531</span><a id="line.531">    }</a>
<span class="sourceLineNo">532</span><a id="line.532"></a>
<span class="sourceLineNo">533</span><a id="line.533">    public String getLdapGroupClass()</a>
<span class="sourceLineNo">534</span><a id="line.534">    {</a>
<span class="sourceLineNo">535</span><a id="line.535">        return ldapGroupClass;</a>
<span class="sourceLineNo">536</span><a id="line.536">    }</a>
<span class="sourceLineNo">537</span><a id="line.537"></a>
<span class="sourceLineNo">538</span><a id="line.538">    public void setLdapGroupClass( String ldapGroupClass )</a>
<span class="sourceLineNo">539</span><a id="line.539">    {</a>
<span class="sourceLineNo">540</span><a id="line.540">        this.ldapGroupClass = ldapGroupClass;</a>
<span class="sourceLineNo">541</span><a id="line.541">    }</a>
<span class="sourceLineNo">542</span><a id="line.542">}</a>




























































</pre>
</div>
</main>
</body>
</html>