You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2019/04/17 15:44:24 UTC
[directory-server] 07/08: merge with Stefan's changes
This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-server.git
commit 5abfc740bbca48ba512395af49f9152bd620df06
Merge: c6f064d 0f043fb
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Wed Apr 17 17:10:54 2019 +0200
merge with Stefan's changes
.../server/core/factory/DSAnnotationProcessor.java | 3 -
.../factory/DefaultDirectoryServiceFactory.java | 6 -
core-api/pom.xml | 18 +-
.../directory/server/core/api/CacheService.java | 219 -----------------
.../server/core/api/DirectoryService.java | 14 --
.../core/api/partition/AbstractPartition.java | 14 --
.../server/core/api/partition/Partition.java | 8 -
.../server/core/api/schema/SchemaPartition.java | 9 -
.../src/main/resources/directory-cacheservice.xml | 268 ---------------------
.../server/core/api/MockDirectoryService.java | 15 --
core-shared/pom.xml | 7 +-
.../server/core/shared/DefaultDnFactory.java | 14 +-
.../shared/partition/DefaultPartitionNexus.java | 1 -
.../server/core/DefaultDirectoryService.java | 38 +--
interceptors/authz/pom.xml | 5 -
.../directory/server/core/authz/GroupCache.java | 55 ++---
interceptors/subtree/pom.xml | 7 +-
.../server/core/subtree/SubtreeEvaluatorTest.java | 13 +-
jdbm-partition/pom.xml | 2 +-
.../partition/impl/btree/jdbm/JdbmPartition.java | 26 +-
.../partition/impl/btree/jdbm/JdbmStoreTest.java | 9 +-
.../core/partition/tree/PartitionTreeTest.java | 6 +-
kerberos-codec/pom.xml | 6 +-
.../kerberos/shared/replay/ReplayCacheImpl.java | 38 +--
.../shared/replay/ReplayCacheImplTest.java | 100 ++++----
.../core/partition/ldif/LdifPartitionTest.java | 8 +-
...SingleFileLdifPartitionSingeValueAttribute.java | 9 +-
.../ldif/SingleFileLdifPartitionTest.java | 9 +-
mavibot-partition/pom.xml | 2 +-
.../impl/btree/mavibot/MavibotPartition.java | 19 +-
.../impl/btree/mavibot/MavibotStoreTest.java | 9 +-
.../osgi/integ/ServerCoreAnnotationsOsgiTest.java | 1 +
.../server/osgi/integ/ServerCoreApiOsgiTest.java | 2 -
.../osgi/integ/ServerCoreSharedOsgiTest.java | 9 +-
.../osgi/integ/ServerJdbmPartitionOsgiTest.java | 2 +-
.../osgi/integ/ServerMavibotPartitionOsgiTest.java | 2 +-
pom.xml | 18 ++
.../server/changepw/ChangePasswordServer.java | 2 -
protocol-kerberos/pom.xml | 6 +-
.../kerberos/changepwd/ChangePasswordServer.java | 5 +-
.../directory/server/kerberos/kdc/KdcServer.java | 5 +-
.../server/config/ConfigPartitionInitializer.java | 7 +-
.../config/ChangePasswordConfigReaderTest.java | 8 +-
.../server/config/ConfigPartitionReaderTest.java | 8 +-
.../directory/server/config/ConfigWriterTest.java | 8 +-
.../server/config/HttpServerConfigReaderTest.java | 8 +-
.../config/KerberosServerConfigReaderTest.java | 8 +-
.../server/config/LdapServerConfigReaderTest.java | 8 +-
.../server/replication/ClientInitialRefreshIT.java | 2 +-
.../apache/directory/server/ApacheDsService.java | 36 +--
xdbm-partition/pom.xml | 3 +-
.../impl/btree/AbstractBTreePartition.java | 49 ++--
.../org/apache/directory/server/xdbm/Store.java | 4 +-
.../search/evaluator/SubtreeScopeEvaluator.java | 2 +-
.../xdbm/search/impl/DefaultSearchEngine.java | 2 +-
.../directory/server/xdbm/PartitionTest.java | 6 -
.../server/xdbm/impl/avl/AvlPartitionTest.java | 8 +-
.../server/xdbm/search/impl/AndCursorTest.java | 6 -
.../server/xdbm/search/impl/EqualityTest.java | 8 +-
.../xdbm/search/impl/GreaterEqNotIndexedTest.java | 8 +-
.../server/xdbm/search/impl/GreaterEqTest.java | 9 +-
.../server/xdbm/search/impl/LessEqTest.java | 9 +-
.../server/xdbm/search/impl/NestedFilterTest.java | 5 -
.../server/xdbm/search/impl/NotCursorTest.java | 5 -
.../server/xdbm/search/impl/OrCursorTest.java | 5 -
.../server/xdbm/search/impl/PresenceTest.java | 12 +-
.../server/xdbm/search/impl/SubstringTest.java | 9 +-
67 files changed, 223 insertions(+), 1029 deletions(-)
diff --cc pom.xml
index 48c5405,8d26e5d..8232698
--- a/pom.xml
+++ b/pom.xml
@@@ -24,7 -24,7 +24,8 @@@
<parent>
<groupId>org.apache.directory.project</groupId>
<artifactId>project</artifactId>
+ <version>42</version>
+ <version>44</version>
<relativePath />
</parent>
@@@ -57,15 -57,14 +58,19 @@@
<ant.version>1.10.1</ant.version>
<bcprov.version>1.60</bcprov.version>
<commons.cli.version>1.4</commons.cli.version>
+ <commons.codec.version>1.11</commons.codec.version>
+ <commons.collections.version>4.2</commons.collections.version>
+ <commons.codec.version>1.12</commons.codec.version>
+ <commons.collections.version>4.3</commons.collections.version>
<commons.daemon.version>1.0.15</commons.daemon.version>
<commons.lang.version>3.8.1</commons.lang.version>
<commons.net.version>3.6</commons.net.version>
+ <commons.pool.version>2.6.0</commons.pool.version>
+ <commons.pool.version>2.6.1</commons.pool.version>
<dnsjava.version>2.1.8</dnsjava.version>
+ <!-- OSGi related issue in ehcache 3.6.x: https://github.com/ehcache/ehcache3/issues/2554 -->
+ <ehcache.version>3.5.3</ehcache.version>
+ <caffeine.version>2.7.0</caffeine.version>
<findbugs.annotations.version>1.0.0</findbugs.annotations.version>
<jetty.version>9.4.14.v20181114</jetty.version>
<!-- The Jetty bundle exports are using version 9.4.5, not 9.4.5.v20170502... -->
@@@ -1243,9 -1227,19 +1248,22 @@@
</dependency>
<dependency>
+ <groupId>org.ehcache</groupId>
+ <artifactId>ehcache</artifactId>
+ <version>${ehcache.version}</version>
+ <groupId>com.github.ben-manes.caffeine</groupId>
+ <artifactId>caffeine</artifactId>
+ <version>${caffeine.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.google.errorprone</groupId>
+ <artifactId>error_prone_annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.checkerframework</groupId>
+ <artifactId>checker-qual</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
</dependencies>
</dependencyManagement>
diff --cc service/src/main/java/org/apache/directory/server/ApacheDsService.java
index 1f85d22,000fad3..06813ae
--- a/service/src/main/java/org/apache/directory/server/ApacheDsService.java
+++ b/service/src/main/java/org/apache/directory/server/ApacheDsService.java
@@@ -81,8 -74,8 +81,9 @@@ import org.apache.directory.server.core
import org.apache.directory.server.core.api.interceptor.context.ModifyOperationContext;
import org.apache.directory.server.core.api.partition.Partition;
import org.apache.directory.server.core.api.schema.SchemaPartition;
+ import org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition;
import org.apache.directory.server.core.partition.ldif.LdifPartition;
+import org.apache.directory.server.core.security.CertificateUtil;
import org.apache.directory.server.core.shared.DefaultDnFactory;
import org.apache.directory.server.i18n.I18n;
import org.apache.directory.server.integration.http.HttpServer;
@@@ -201,59 -187,23 +198,70 @@@ public class ApacheDsServic
DirectoryServiceBean directoryServiceBean = configBean.getDirectoryServiceBean();
+ /*
+ * Calculate the DN cache size: from all defined partitions get the max cache size setting.
+ * Note: currently only JDBM partition beans have such a setting.
+ */
+ int dnCacheSize = directoryServiceBean.getPartitions().stream()
+ .filter( JdbmPartitionBean.class::isInstance )
+ .map( JdbmPartitionBean.class::cast )
+ .map( JdbmPartitionBean::getPartitionCacheSize )
+ .mapToInt( Integer::intValue )
+ .max().orElse( AbstractBTreePartition.DEFAULT_CACHE_SIZE );
+ DnFactory dnFactory = new DefaultDnFactory( schemaManager, dnCacheSize );
+
// Initialize the DirectoryService now
- DirectoryService directoryService = initDirectoryService( instanceLayout, directoryServiceBean, cacheService,
- dnFactory );
+ DirectoryService directoryService = initDirectoryService( instanceLayout, directoryServiceBean, dnFactory );
// start the LDAP server
- startLdap( directoryServiceBean.getLdapServerBean(), directoryService, startServers );
+ LdapServerBean ldapServerBean = directoryServiceBean.getLdapServerBean();
+
+ if ( ldapServerBean.getLdapServerKeystoreFile() == null )
+ {
+ File ldapServerKeystoreFile = instanceLayout.getKeyStoreFile();
+
+ if ( !ldapServerKeystoreFile.exists() )
+ {
+ // We need to create a KeyStore
+ ldapServerKeystoreFile.createNewFile();
+ ldapServerKeystoreFile.deleteOnExit();
+ ldapServerBean.setLdapServerCertificatePassword( "secret" );
+
+
+ KeyStore keyStore = KeyStore.getInstance( KeyStore.getDefaultType() );
+ char[] keyStorePassword = "secret".toCharArray();
+
+ try ( InputStream keyStoreData = new FileInputStream( ldapServerKeystoreFile ) )
+ {
+ keyStore.load( null, keyStorePassword );
+ }
+
+ // Generate the asymmetric keys, using EC algorithm
+ KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance( "EC" );
+ KeyPair keyPair = keyPairGenerator.generateKeyPair();
+
+ // Generate the subject's name
+ @SuppressWarnings("restriction")
+ X500Name owner = new X500Name( "apacheds", "directory", "apache", "US" );
+
+ // Create the self-signed certificate
+ X509Certificate certificate = CertificateUtil.generateSelfSignedCertificate( owner, keyPair, 365, "SHA256WithECDSA" );
+
+ keyStore.setKeyEntry( "apachedsKey", keyPair.getPrivate(), keyStorePassword, new X509Certificate[] { certificate } );
+
+ FileOutputStream out = new FileOutputStream( ldapServerKeystoreFile );
+ keyStore.store( out, keyStorePassword );
+ }
+
+ ldapServerBean.setLdapServerKeystoreFile( ldapServerKeystoreFile.getAbsolutePath() );
+ }
+
+ if ( ldapServerBean.getLdapServerCertificatePassword() == null )
+ {
+ ldapServerBean.setLdapServerCertificatePassword( "secret" );
+ }
+
+ startLdap( ldapServerBean, directoryService, startServers );
// start the NTP server
startNtp( directoryServiceBean.getNtpServerBean(), directoryService, startServers );
@@@ -391,9 -341,9 +399,9 @@@
private DirectoryService initDirectoryService( InstanceLayout instanceLayout,
- DirectoryServiceBean directoryServiceBean, CacheService cacheService, DnFactory dnFactory ) throws Exception
+ DirectoryServiceBean directoryServiceBean, DnFactory dnFactory ) throws Exception
{
- LOG.info( "Initializing the DirectoryService..." );
+ LOG.info( "Initializing the DirectoryService..." );
long startTime = System.currentTimeMillis();