<
Filter
>
User
>007</
</
using
Microsoft.MetadirectoryServices;
Microsoft.Win32;
System;
System.Collections.Generic;
System.IO;
System.Linq;
System.Xml.Linq;
private
const
string
CONFDIR =
"Extensions"
;
FIM_SUBKEY = @
"SYSTEM\CurrentControlSet\Services\FIMSynchronizationService\Parameters"
FIM_SUBKEY_VAR =
"Path"
filterFile =
"mobileFilter.xml"
List<
> mobileFilter;
/// <summary>
/// FIM Extensions folder path. (Microsoft Forefront Identity Manager\2010\Synchronization Service\Extensions)
/// </summary>
public
SourceDirectory
{
get
sourceDirectory =
.Empty;
(RegistryKey key = Registry.LocalMachine.OpenSubKey(FIM_SUBKEY,
false
))
if
(key !=
null
)
sourceDirectory = key.GetValue(FIM_SUBKEY_VAR).ToString();
}
(
.IsNullOrEmpty(sourceDirectory))
throw
new
Exception(
"Error while reading registry"
);
return
Path.Combine(sourceDirectory, CONFDIR);
/// Initialization of the rules extension object.
void
IMASynchronization.Initialize()
XDocument mobiles = XDocument.Load(Path.Combine(SourceDirectory, filterFile));
mobileFilter = mobiles.Root.Elements(
"User"
).Select(user => user.Value).ToList();
/// Import mobile number if not on the list of numbers to filter.
/// <param name="mventry">Destination metaverse entry.</param>
/// <param name="csentry">Source connector space entry.</param>
importMobile(MVEntry mventry, CSEntry csentry)
(csentry[
"mobile"
].IsPresent && !mobileFilter.Contains(csentry.DN.ToString()))
mventry[
].Value = csentry[
].Value;
else
].Delete();