You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/01/15 18:14:49 UTC
svn commit: r899719 - in
/directory/apacheds/branches/apacheds-cidit/default-config: pom.xml
src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java
Author: kayyagari
Date: Fri Jan 15 17:14:49 2010
New Revision: 899719
URL: http://svn.apache.org/viewvc?rev=899719&view=rev
Log:
o added support for instantiating kerberos, DNS, DHCP and NTP servers based on the configuration details present
o added dependencies for the above protocols
Modified:
directory/apacheds/branches/apacheds-cidit/default-config/pom.xml
directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java
Modified: directory/apacheds/branches/apacheds-cidit/default-config/pom.xml
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-cidit/default-config/pom.xml?rev=899719&r1=899718&r2=899719&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-cidit/default-config/pom.xml (original)
+++ directory/apacheds/branches/apacheds-cidit/default-config/pom.xml Fri Jan 15 17:14:49 2010
@@ -44,5 +44,29 @@
<artifactId>apacheds-protocol-ldap</artifactId>
<version>${pom.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.directory.server</groupId>
+ <artifactId>apacheds-protocol-kerberos</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.directory.server</groupId>
+ <artifactId>apacheds-protocol-dns</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.directory.server</groupId>
+ <artifactId>apacheds-protocol-dhcp</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.directory.server</groupId>
+ <artifactId>apacheds-protocol-ntp</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
</dependencies>
</project>
Modified: directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java?rev=899719&r1=899718&r2=899719&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java (original)
+++ directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java Fri Jan 15 17:14:49 2010
@@ -26,6 +26,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -48,7 +49,15 @@
import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex;
import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition;
import org.apache.directory.server.core.partition.ldif.LdifPartition;
+import org.apache.directory.server.dhcp.service.DhcpService;
+import org.apache.directory.server.dhcp.service.StoreBasedDhcpService;
+import org.apache.directory.server.dhcp.store.DhcpStore;
+import org.apache.directory.server.dhcp.store.SimpleDhcpStore;
+import org.apache.directory.server.dns.DnsServer;
+import org.apache.directory.server.kerberos.kdc.KdcServer;
+import org.apache.directory.server.kerberos.shared.crypto.encryption.EncryptionType;
import org.apache.directory.server.ldap.LdapServer;
+import org.apache.directory.server.ntp.NtpServer;
import org.apache.directory.server.protocol.shared.transport.TcpTransport;
import org.apache.directory.server.protocol.shared.transport.Transport;
import org.apache.directory.server.protocol.shared.transport.UdpTransport;
@@ -59,6 +68,7 @@
import org.apache.directory.shared.ldap.NotImplementedException;
import org.apache.directory.shared.ldap.entry.Entry;
import org.apache.directory.shared.ldap.entry.EntryAttribute;
+import org.apache.directory.shared.ldap.entry.Value;
import org.apache.directory.shared.ldap.entry.client.ClientStringValue;
import org.apache.directory.shared.ldap.filter.EqualityNode;
import org.apache.directory.shared.ldap.filter.PresenceNode;
@@ -176,6 +186,236 @@
return server;
}
+
+ public KdcServer getKdcServer() throws Exception
+ {
+ EqualityNode filter = new EqualityNode( "objectClass", new ClientStringValue( "ads-kerberosServer" ) );
+ SearchControls controls = new SearchControls();
+ controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+
+ IndexCursor cursor = se.cursor( configPartition.getSuffixDn(), AliasDerefMode.NEVER_DEREF_ALIASES, filter,
+ controls );
+
+ if ( !cursor.next() )
+ {
+ throw new Exception( "No kerberos server was configured under the DN " + configPartition.getSuffixDn() );
+ }
+
+ ForwardIndexEntry<Long, Long> forwardEntry = ( ForwardIndexEntry<Long, Long> ) cursor.get();
+ cursor.close();
+
+ ClonedServerEntry kdcEntry = configPartition.lookup( forwardEntry.getId() );
+ LOG.debug( "kerberos server entry {}", kdcEntry );
+ if( !isEnabled( kdcEntry ) )
+ {
+ return null;
+ }
+
+ KdcServer kdcServer = new KdcServer();
+
+ kdcServer.setServiceId( getString( "ads-serverId", kdcEntry ) );
+
+ LdapDN transportsDN = new LdapDN( getString( "ads-transports", kdcEntry ) );
+ transportsDN.normalize( schemaManager.getNormalizerMapping() );
+ Transport[] transports = getTransports( transportsDN );
+ kdcServer.setTransports( transports );
+
+ // MAY attributes
+ EntryAttribute clockSkewAttr = kdcEntry.get( "ads-krbAllowableClockSkew" );
+ if( clockSkewAttr != null )
+ {
+ kdcServer.setAllowableClockSkew( Long.parseLong( clockSkewAttr.getString() ) );
+ }
+
+ EntryAttribute encryptionTypeAttr = kdcEntry.get( "ads-krbEncryptionTypes" );
+ if( encryptionTypeAttr != null )
+ {
+ EncryptionType[] encryptionTypes = new EncryptionType[ encryptionTypeAttr.size() ];
+ Iterator<Value<?>> itr = encryptionTypeAttr.getAll();
+ int count = 0;
+ while( itr.hasNext() )
+ {
+ Value<?> val = itr.next();
+ encryptionTypes[count++] = EncryptionType.getByName( val.getString() );
+ }
+
+ kdcServer.setEncryptionTypes( encryptionTypes );
+ }
+
+ EntryAttribute emptyAddrAttr = kdcEntry.get( "ads-krbEmptyAddressesAllowed" );
+ if( emptyAddrAttr != null )
+ {
+ kdcServer.setEmptyAddressesAllowed( Boolean.parseBoolean( emptyAddrAttr.getString() ) );
+ }
+
+ EntryAttribute fwdAllowedAttr = kdcEntry.get( "ads-krbForwardableAllowed" );
+ if( fwdAllowedAttr != null )
+ {
+ kdcServer.setForwardableAllowed( Boolean.parseBoolean( fwdAllowedAttr.getString() ) );
+ }
+
+ EntryAttribute paEncTmstpAttr = kdcEntry.get( "ads-krbPaEncTimestampRequired" );
+ if( paEncTmstpAttr != null )
+ {
+ kdcServer.setPaEncTimestampRequired( Boolean.parseBoolean( paEncTmstpAttr.getString() ) );
+ }
+
+ EntryAttribute posdtAllowedAttr = kdcEntry.get( "ads-krbPostdatedAllowed" );
+ if( posdtAllowedAttr != null )
+ {
+ kdcServer.setPostdatedAllowed( Boolean.parseBoolean( posdtAllowedAttr.getString() ) );
+ }
+
+ EntryAttribute prxyAllowedAttr = kdcEntry.get( "ads-krbProxiableAllowed" );
+ if( prxyAllowedAttr != null )
+ {
+ kdcServer.setProxiableAllowed( Boolean.parseBoolean( prxyAllowedAttr.getString() ) );
+ }
+
+ EntryAttribute rnwAllowedAttr = kdcEntry.get( "ads-krbRenewableAllowed" );
+ if( rnwAllowedAttr != null )
+ {
+ kdcServer.setRenewableAllowed( Boolean.parseBoolean( rnwAllowedAttr.getString() ) );
+ }
+
+ EntryAttribute kdcPrncplAttr = kdcEntry.get( "ads-krbKdcPrincipal" );
+ if( kdcPrncplAttr != null )
+ {
+ kdcServer.setKdcPrincipal( kdcPrncplAttr.getString() );
+ }
+
+ EntryAttribute maxRnwLfTimeAttr = kdcEntry.get( "ads-krbMaximumRenewableLifetime" );
+ if( maxRnwLfTimeAttr != null )
+ {
+ kdcServer.setMaximumRenewableLifetime( Long.parseLong( maxRnwLfTimeAttr.getString() ) );
+ }
+
+ EntryAttribute maxTcktLfTimeAttr = kdcEntry.get( "ads-krbMaximumTicketLifetime" );
+ if( maxTcktLfTimeAttr != null )
+ {
+ kdcServer.setMaximumTicketLifetime( Long.parseLong( maxTcktLfTimeAttr.getString() ) );
+ }
+
+ EntryAttribute prmRealmAttr = kdcEntry.get( "ads-krbPrimaryRealm" );
+ if( prmRealmAttr != null )
+ {
+ kdcServer.setPrimaryRealm( prmRealmAttr.getString() );
+ }
+
+ EntryAttribute bdyCkhsmVerifyAttr = kdcEntry.get( "ads-krbBodyChecksumVerified" );
+ if( bdyCkhsmVerifyAttr != null )
+ {
+ kdcServer.setBodyChecksumVerified( Boolean.parseBoolean( bdyCkhsmVerifyAttr.getString() ) );
+ }
+
+ return kdcServer;
+ }
+
+
+ public DnsServer getDnsServer() throws Exception
+ {
+ EqualityNode filter = new EqualityNode( "objectClass", new ClientStringValue( "ads-dnsServer" ) );
+ SearchControls controls = new SearchControls();
+ controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+
+ IndexCursor cursor = se.cursor( configPartition.getSuffixDn(), AliasDerefMode.NEVER_DEREF_ALIASES, filter,
+ controls );
+
+ if ( !cursor.next() )
+ {
+ throw new Exception( "No DNS server was configured under the DN " + configPartition.getSuffixDn() );
+ }
+
+ ForwardIndexEntry<Long, Long> forwardEntry = ( ForwardIndexEntry<Long, Long> ) cursor.get();
+ cursor.close();
+
+ ClonedServerEntry dnsEntry = configPartition.lookup( forwardEntry.getId() );
+ LOG.debug( "DNS server entry {}", dnsEntry );
+ if( !isEnabled( dnsEntry ) )
+ {
+ return null;
+ }
+
+ DnsServer dnsServer = new DnsServer();
+
+ dnsServer.setServiceId( getString( "ads-serverId", dnsEntry ) );
+
+ LdapDN transportsDN = new LdapDN( getString( "ads-transports", dnsEntry ) );
+ transportsDN.normalize( schemaManager.getNormalizerMapping() );
+ Transport[] transports = getTransports( transportsDN );
+ dnsServer.setTransports( transports );
+
+ return dnsServer;
+ }
+
+
+ public DhcpService getDhcpServer() throws Exception
+ {
+ EqualityNode filter = new EqualityNode( "objectClass", new ClientStringValue( "ads-dhcpServer" ) );
+ SearchControls controls = new SearchControls();
+ controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+
+ IndexCursor cursor = se.cursor( configPartition.getSuffixDn(), AliasDerefMode.NEVER_DEREF_ALIASES, filter,
+ controls );
+
+ if ( !cursor.next() )
+ {
+ throw new Exception( "No DHCP server was configured under the DN " + configPartition.getSuffixDn() );
+ }
+
+ ForwardIndexEntry<Long, Long> forwardEntry = ( ForwardIndexEntry<Long, Long> ) cursor.get();
+ cursor.close();
+
+ ClonedServerEntry dhcpEntry = configPartition.lookup( forwardEntry.getId() );
+ LOG.debug( "DHCP server entry {}", dhcpEntry );
+ if( !isEnabled( dhcpEntry ) )
+ {
+ return null;
+ }
+
+ DhcpStore dhcpStore = new SimpleDhcpStore();
+ DhcpService dhcpService = new StoreBasedDhcpService( dhcpStore );
+
+ return dhcpService;
+ }
+
+
+ public NtpServer getNtpServer() throws Exception
+ {
+ EqualityNode filter = new EqualityNode( "objectClass", new ClientStringValue( "ads-ntpServer" ) );
+ SearchControls controls = new SearchControls();
+ controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+
+ IndexCursor cursor = se.cursor( configPartition.getSuffixDn(), AliasDerefMode.NEVER_DEREF_ALIASES, filter,
+ controls );
+
+ if ( !cursor.next() )
+ {
+ throw new Exception( "No NTP server was configured under the DN " + configPartition.getSuffixDn() );
+ }
+
+ ForwardIndexEntry<Long, Long> forwardEntry = ( ForwardIndexEntry<Long, Long> ) cursor.get();
+ cursor.close();
+
+ ClonedServerEntry ntpEntry = configPartition.lookup( forwardEntry.getId() );
+ LOG.debug( "NTP server entry {}", ntpEntry );
+ if( !isEnabled( ntpEntry ) )
+ {
+ return null;
+ }
+
+ NtpServer ntpServer = new NtpServer();
+
+ ntpServer.setServiceId( getString( "ads-serverId", ntpEntry ) );
+
+ LdapDN transportsDN = new LdapDN( getString( "ads-transports", ntpEntry ) );
+ transportsDN.normalize( schemaManager.getNormalizerMapping() );
+ Transport[] transports = getTransports( transportsDN );
+ ntpServer.setTransports( transports );
+
+ return ntpServer;
+ }
+
/**
*