Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use Win32::OLE 'in';
- use Win32::OLE::Const 'Active DS Type Library';
- # $Win32::OLE::Warn = 3;
- @classes = @ARGV;
- $RootObj = bind_object("RootDSE");
- $SchemaClasses = bind_object($RootObj->get("schemaNamingContext"));
- $SchemaClasses->{filter} = ["attributeSchema"];
- %attributes;
- foreach $attribute (in $SchemaClasses){
- my $abstractAttribute = bind_object("schema/" . $attribute->{ldapdisplayname});
- if(lc($abstractAttribute->{syntax}) eq "octetstring"){
- # printf "%-15s - %s\n", "octetstring", $attribute->{ldapdisplayname};
- $attributes{$attribute->{ldapdisplayname}} = undef;
- }
- if($attribute->{rangeUpper} && $attribute->{rangeUpper} == $attribute->{rangeLower}){
- # printf "%-15s - %s\n", "ranges", $attribute->{ldapdisplayname};
- $attributes{$attribute->{ldapdisplayname}} = undef;
- }
- }
- foreach $class (@classes){
- my $abstractClass = bind_object("schema/" . $class);
- print "classe $class:\n\n";
- foreach $prop (@{$abstractClass->{MandatoryProperties}}, @{$abstractClass->{OptionalProperties}}){
- next unless exists $attributes{$prop};
- printf "%s\n", $prop;
- }
- print "-------------------------------\n";
- }
- sub bind_object{
- $parameter=shift;
- $ip = "satan.hogent.be";
- $moniker = ( (substr( uc($parameter), 0, 7) ) eq "LDAP://" ? "" : "LDAP://$ip/" ) . $parameter;
- # print $moniker,"\n";
- $dso = Win32::OLE->GetObject("LDAP:");
- $user = "Interim A";
- return $dso->OpenDSObject($moniker, $user, $user, ADS_SECURE_AUTHENTICATION);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement