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 2015/11/20 11:24:17 UTC
svn commit: r1715334 - in /directory/shared/trunk/ldap:
client/api/src/main/java/org/apache/directory/ldap/client/api/
model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/
Author: elecharny
Date: Fri Nov 20 10:24:16 2015
New Revision: 1715334
URL: http://svn.apache.org/viewvc?rev=1715334&view=rev
Log:
Added the TelephoneNumber anonymizer, to keep the value correct after anionymization.
Added:
directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/TelephoneNumberAnonymizer.java
Modified:
directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdifAnonymizer.java
directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/DefaultAnonymizer.java
directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/StringAnonymizer.java
Modified: directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdifAnonymizer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdifAnonymizer.java?rev=1715334&r1=1715333&r2=1715334&view=diff
==============================================================================
--- directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdifAnonymizer.java (original)
+++ directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdifAnonymizer.java Fri Nov 20 10:24:16 2015
@@ -52,6 +52,7 @@ import org.apache.directory.api.ldap.mod
import org.apache.directory.api.ldap.model.ldif.anonymizer.BinaryAnonymizer;
import org.apache.directory.api.ldap.model.ldif.anonymizer.IntegerAnonymizer;
import org.apache.directory.api.ldap.model.ldif.anonymizer.StringAnonymizer;
+import org.apache.directory.api.ldap.model.ldif.anonymizer.TelephoneNumberAnonymizer;
import org.apache.directory.api.ldap.model.name.Ava;
import org.apache.directory.api.ldap.model.name.Dn;
import org.apache.directory.api.ldap.model.name.Rdn;
@@ -226,7 +227,7 @@ public class LdifAnonymizer
attributeAnonymizers.put( SchemaConstants.HOME_DIRECTORY_AT_OID,
new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.HOME_PHONE_AT_OID,
- new StringAnonymizer() );
+ new TelephoneNumberAnonymizer() );
attributeAnonymizers.put( SchemaConstants.HOME_POSTAL_ADDRESS_AT_OID,
new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.HOST_AT_OID, new StringAnonymizer() );
@@ -242,12 +243,12 @@ public class LdifAnonymizer
attributeAnonymizers.put( SchemaConstants.MANAGER_AT_OID, new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.MEMBER_UID_AT_OID,
new StringAnonymizer() );
- attributeAnonymizers.put( SchemaConstants.MOBILE_AT_OID, new StringAnonymizer() );
+ attributeAnonymizers.put( SchemaConstants.MOBILE_AT_OID, new TelephoneNumberAnonymizer() );
attributeAnonymizers.put( SchemaConstants.ORGANIZATION_NAME_AT_OID,
new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.ORGANIZATIONAL_UNIT_NAME_AT_OID,
new StringAnonymizer() );
- attributeAnonymizers.put( SchemaConstants.PAGER_AT_OID, new StringAnonymizer() );
+ attributeAnonymizers.put( SchemaConstants.PAGER_AT_OID, new TelephoneNumberAnonymizer() );
attributeAnonymizers.put( SchemaConstants.POSTAL_ADDRESS_AT_OID,
new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.PHOTO_AT_OID, new StringAnonymizer() );
@@ -257,7 +258,7 @@ public class LdifAnonymizer
.put( SchemaConstants.SEE_ALSO_AT_OID, new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.SN_AT_OID, new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.TELEPHONE_NUMBER_AT_OID,
- new StringAnonymizer() );
+ new TelephoneNumberAnonymizer() );
attributeAnonymizers.put( SchemaConstants.UID_AT_OID, new StringAnonymizer() );
attributeAnonymizers.put( SchemaConstants.UID_NUMBER_AT_OID,
new IntegerAnonymizer() );
@@ -271,6 +272,8 @@ public class LdifAnonymizer
new BinaryAnonymizer() );
attributeAnonymizers.put( SchemaConstants.X500_UNIQUE_IDENTIFIER_AT_OID,
new BinaryAnonymizer() );
+ attributeAnonymizers.put( SchemaConstants.FACSIMILE_TELEPHONE_NUMBER_AT_OID,
+ new TelephoneNumberAnonymizer() );
}
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/DefaultAnonymizer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/DefaultAnonymizer.java?rev=1715334&r1=1715333&r2=1715334&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/DefaultAnonymizer.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/DefaultAnonymizer.java Fri Nov 20 10:24:16 2015
@@ -32,7 +32,7 @@ import org.apache.directory.api.ldap.mod
/**
- * A DefaultAnonymizer. It take a value and change it to a random String
+ * A DefaultAnonymizer. It takes a value and change it to a random String
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/StringAnonymizer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/StringAnonymizer.java?rev=1715334&r1=1715333&r2=1715334&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/StringAnonymizer.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/StringAnonymizer.java Fri Nov 20 10:24:16 2015
@@ -32,7 +32,7 @@ import org.apache.directory.api.ldap.mod
/**
- * A default anonymizer for attributes that are HR
+ * A default anonymizer for attributes that are HR. It covers DirectoryString, Ia5String, ...
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
Added: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/TelephoneNumberAnonymizer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/TelephoneNumberAnonymizer.java?rev=1715334&view=auto
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/TelephoneNumberAnonymizer.java (added)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/anonymizer/TelephoneNumberAnonymizer.java Fri Nov 20 10:24:16 2015
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.api.ldap.model.ldif.anonymizer;
+
+
+import java.util.Map;
+import java.util.Random;
+
+import org.apache.directory.api.ldap.model.entry.Attribute;
+import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
+import org.apache.directory.api.ldap.model.entry.StringValue;
+import org.apache.directory.api.ldap.model.entry.Value;
+import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
+
+
+/**
+ * An anonymizer for the TelephoneNumber attribute. We simply replace the digits by random digits.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TelephoneNumberAnonymizer extends AbstractAnonymizer<String>
+{
+ /** Create a random generator */
+ Random random = new Random( System.currentTimeMillis() );
+
+
+ /**
+ * Anonymize an attribute using pure random values (either chars of bytes, depending on the Attribute type)
+ */
+ public Attribute anonymize( Map<Value<String>, Value<String>> valueMap, Attribute attribute )
+ {
+ Attribute result = new DefaultAttribute( attribute.getAttributeType() );
+ random.setSeed( System.nanoTime() );
+
+ for ( Value<?> value : attribute )
+ {
+ Value<String> anonymized = valueMap.get( value );
+
+ if ( anonymized != null )
+ {
+ try
+ {
+ result.add( anonymized.getString() );
+ }
+ catch ( LdapInvalidAttributeValueException e )
+ {
+ // TODO : handle that
+ }
+ }
+ else
+ {
+ if ( value instanceof StringValue )
+ {
+ String strValue = value.getNormValue().toString();
+ int length = strValue.length();
+
+ // Same size
+ char[] newValue = new char[length];
+
+ for ( int i = 0; i < length; i++ )
+ {
+ char c = ( strValue.charAt( i ) );
+
+ if ( Character.isDigit( c ) )
+ {
+ newValue[i] = ( char ) ( random.nextInt( '9' - '0' ) + '0' );
+ }
+ else
+ {
+ newValue[i] = c;
+ }
+ }
+
+ try
+ {
+ String newValueStr = new String( newValue );
+ result.add( newValueStr );
+
+ Value<String> anonValue = new StringValue( attribute.getAttributeType(), newValueStr );
+ valueMap.put( ( Value<String> ) value, anonValue );
+ }
+ catch ( LdapInvalidAttributeValueException e )
+ {
+ // TODO : handle that
+ }
+ }
+ else
+ {
+ byte[] byteValue = value.getBytes();
+
+ // Same size
+ byte[] newValue = new byte[byteValue.length];
+
+ for ( int i = 0; i < byteValue.length; i++ )
+ {
+ newValue[i] = ( byte ) random.nextInt();
+ }
+
+ try
+ {
+ result.add( newValue );
+ }
+ catch ( LdapInvalidAttributeValueException e )
+ {
+ // TODO : handle that
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+}