1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-26 10:04:02 +03:00

This patch is Vorlon's fault!

(This used to be commit 56d2049561e5d5c22ac9d76cb013643083d9644e)
This commit is contained in:
John Terpstra 2003-06-15 05:14:28 +00:00
parent 8f7e94e7e6
commit 5d4937c2b6

View File

@ -15,8 +15,8 @@ use Net::LDAP::LDIF;
my ( $domain, $domsid );
my ( $ldif, $ldif2 );
my ( $entry, @objclasses, $obj );
my ( $is_samba_account );
my ( %attr_map, $key );
my ( $is_samba_account, $is_samba_group );
my ( %attr_map, %group_attr_map, $key );
if ( $#ARGV != 2 ) {
print "Usage: convertSambaAccount domain_sid input_ldif output_ldif\n";
@ -41,6 +41,11 @@ if ( $#ARGV != 2 ) {
acctFlags => 'sambaAcctFlags',
);
%group_attr_map = (
ntSid => 'sambaSID',
ntGroupType => 'sambaGroupType',
);
$domsid = $ARGV[0];
$ldif = Net::LDAP::LDIF->new ($ARGV[1], "r")
@ -65,37 +70,44 @@ while ( !$ldif->eof ) {
##
@objclasses = $entry->get_value( "objectClass" );
undef ( $is_samba_account );
undef ( $is_samba_group );
foreach $obj ( @objclasses ) {
if ( "$obj" eq "sambaAccount" ) {
$is_samba_account = 1;
} elsif ( "$obj" eq "sambaGroupMapping" ) {
$is_samba_group = 1;
}
}
if ( !defined ( $is_samba_account ) ) {
$ldif2->write_entry( $entry );
next;
}
if ( defined ( $is_samba_account ) ) {
##
## start editing the sambaAccount
##
##
## start editing the sambaAccount
##
$entry->delete( 'objectclass' => [ 'sambaAccount' ] );
$entry->add( 'objectclass' => 'sambaSamAccount' );
$entry->delete( 'objectclass' => [ 'sambaAccount' ] );
$entry->add( 'objectclass' => 'sambaSamAccount' );
$entry->add( 'sambaSID' => $domsid."-".$entry->get_value( "rid" ) );
$entry->delete( 'rid' );
$entry->add( 'sambaSID' => $domsid."-".$entry->get_value( "rid" ) );
$entry->delete( 'rid' );
if ( $entry->get_value( "primaryGroupID" ) ) {
$entry->add( 'sambaPrimaryGroupSID' => $domsid."-".$entry->get_value( "primaryGroupID" ) );
$entry->delete( 'primaryGroupID' );
}
if ( $entry->get_value( "primaryGroupID" ) ) {
$entry->add( 'sambaPrimaryGroupSID' => $domsid."-".$entry->get_value( "primaryGroupID" ) );
$entry->delete( 'primaryGroupID' );
}
foreach $key ( keys %attr_map ) {
if ( defined($entry->get_value($key)) ) {
$entry->add( $attr_map{$key} => $entry->get_value($key) );
$entry->delete( $key );
foreach $key ( keys %attr_map ) {
if ( defined($entry->get_value($key)) ) {
$entry->add( $attr_map{$key} => $entry->get_value($key) );
$entry->delete( $key );
}
}
} elsif ( defined ( $is_samba_group ) ) {
foreach $key ( keys %group_attr_map ) {
if ( defined($entry->get_value($key)) ) {
$entry->add( $attr_map{$key} => $entry->get_value($key) );
$entry->delete( $key );
}
}
}