Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit bc0f39be authored by vernada's avatar vernada
Browse files

tidy

parent afeb8081
No related branches found
No related tags found
No related merge requests found
......@@ -12,9 +12,9 @@ use File::Basename;
use Net::LDAP;
use lib (
new Config::IniFiles(
-file => "/opt/etc/ini/global.ini"
)->val( 'APPLICATION', 'LIBRARY' )
new Config::IniFiles(
-file => "/opt/etc/ini/global.ini"
)->val( 'APPLICATION', 'LIBRARY' )
);
use SNET::LdapNS qw(:all);
......@@ -23,138 +23,110 @@ my $global_iniFile = new Config::IniFiles( -file => "/opt/etc/ini/global.ini" );
my $ldap_iniFile = new Config::IniFiles( -file => $global_iniFile->val( 'INI', 'LDAP' ) );
my $ldap_server = {
'uri' => $ldap_iniFile->val( 'LDAP_SNET', 'SERVER' ),
'base' => $ldap_iniFile->val( 'LDAP_SNET', 'BASE' ),
'user' => $ldap_iniFile->val( 'LDAP_CREDENTIALS', 'USER' ),
'password' => $ldap_iniFile->val( 'LDAP_CREDENTIALS', 'PASSWORD' ),
'uri' => $ldap_iniFile->val( 'LDAP_SNET', 'SERVER' ),
'base' => $ldap_iniFile->val( 'LDAP_SNET', 'BASE' ),
'user' => $ldap_iniFile->val( 'LDAP_CREDENTIALS', 'USER' ),
'password' => $ldap_iniFile->val( 'LDAP_CREDENTIALS', 'PASSWORD' ),
};
my $ldap_server_ng = {
'uri' => $ldap_iniFile->val( 'LDAP_NG', 'SERVER' ),
'base' => $ldap_iniFile->val( 'LDAP_NG', 'BASE' ),
'user' => $ldap_iniFile->val( 'LDAP_NG_CREDENTIALS', 'USER' ),
'password' => $ldap_iniFile->val( 'LDAP_NG_CREDENTIALS', 'PASSWORD' ),
'uri' => $ldap_iniFile->val( 'LDAP_NG', 'SERVER' ),
'base' => $ldap_iniFile->val( 'LDAP_NG', 'BASE' ),
'user' => $ldap_iniFile->val( 'LDAP_NG_CREDENTIALS', 'USER' ),
'password' => $ldap_iniFile->val( 'LDAP_NG_CREDENTIALS', 'PASSWORD' ),
};
sub synchronize($$) {
sub synchronize($$)
{
my ($cfrom, $cto) = @_;
my ( $cfrom, $cto ) = @_;
die 'missing parameters' unless (
(defined($cfrom) && defined($cto))
&&
(ref($cfrom) eq 'HASH')
&&
(ref($cto) eq 'HASH')
);
die 'missing parameters' unless ( ( defined( $cfrom ) && defined( $cto ) )
&& ( ref( $cfrom ) eq 'HASH' )
&& ( ref( $cto ) eq 'HASH' ) );
my $from = $cfrom->{'userInfos'};
my $to = $cto->{'userInfos'};
my $from = $cfrom->{'userInfos'};
my $to = $cto->{'userInfos'};
die 'missing userInfos' unless (
defined($from)
&&
defined($to)
);
die 'missing userInfos' unless ( defined( $from )
&& defined( $to ) );
while ( my ( $k, $v ) = each %{$from} ) {
while (my ($k, $v) = each %{$from}) {
my $uid = $cfrom->{'connection'}->clean_dn( $k );
my $dn = 'uid=' . $uid . ',ou=People,' . $cto->{'base'};
my $uid = $cfrom->{'connection'}->clean_dn($k);
my $dn = 'uid='.$uid.',ou=People,'.$cto->{'base'};
if ( !defined( $to->{$dn} ) ) {
print STDERR "$0: [warning] user `$dn' not found\n";
next;
}
if (!defined($to->{$dn})) {
print STDERR "$0: [warning] user `$dn' not found\n";
next;
}
my $entry = Net::LDAP::Entry->new( $dn );
$entry->changetype( 'modify' );
my $changes = 0;
my $entry = Net::LDAP::Entry->new($dn);
$entry->changetype('modify');
my $changes = 0;
foreach my $attr ( 'userpassword', 'uidnumber' ) {
foreach my $attr ('userpassword', 'uidnumber') {
next unless ( defined( $v->{$attr} )
&& defined( $to->{$dn}->{$attr} ) );
next unless (
defined($v->{$attr})
&&
defined($to->{$dn}->{$attr})
);
my $from_attr = ${$v->{$attr}}[0];
my $to_attr = ${$to->{$dn}->{$attr}}[0];
my $from_attr = ${ $v->{$attr} }[0];
my $to_attr = ${ $to->{$dn}->{$attr} }[0];
if ($from_attr ne $to_attr) {
$changes++;
$entry->replace($attr => $from_attr);
}
if ( $from_attr ne $to_attr ) {
$changes++;
$entry->replace( $attr => $from_attr );
}
}
}
if ($changes > 0) {
my $result = $entry->update($cto->{'connection'}->{'connection'});
if ($result->is_error()) {
print STDERR "$0: [error] unable to synchronize $uid:".(
defined($result->error_desc) ? $result->error_desc : $result->error()
)."\n";
}
else {
print STDERR "$0: [success] $uid synchronized\n";
}
}
if ( $changes > 0 ) {
my $result = $entry->update( $cto->{'connection'}->{'connection'} );
if ( $result->is_error() ) {
print STDERR "$0: [error] unable to synchronize $uid:" . ( defined( $result->error_desc ) ? $result->error_desc : $result->error() ) . "\n";
} else {
print STDERR "$0: [success] $uid synchronized\n";
}
}
}
}
}
eval {
foreach my $server ($ldap_server, $ldap_server_ng) {
my $uri = $server->{'uri'};
die "invalid uri `$uri'" unless ($uri =~ m/^(?:ldap:\/\/)?([^:]+)(?::389)?$/i);
$server->{'server'} = $1;
}
SNET::LdapNS::ldapns_add_dn_exception($ldap_server->{'user'});
SNET::LdapNS::ldapns_bind(
$ldap_server->{'server'},
$ldap_server->{'user'},
$ldap_server->{'password'},
$ldap_server->{'uri'},
'LDAPISS',
0, 0, 0
);
$ldap_server->{'connection'} = SNET::LdapNS::get_connection($ldap_server->{'uri'});
$ldap_server->{'userInfos'} = $ldap_server->{'connection'}->search(
base => 'ou=People,'.$ldap_server->{'base'},
scope => 'sub',
filter => '(objectClass=posixAccount)',
attrs => ['uid', 'uidNumber', 'userPassword' ]
);
SNET::LdapNS::ldapns_del_dn_exception($ldap_server->{'user'});
SNET::LdapNS::ldapns_bind(
$ldap_server_ng->{'server'},
$ldap_server_ng->{'user'},
$ldap_server_ng->{'password'},
$ldap_server_ng->{'uri'},
'LDAPISS',
1, 0, 0
);
$ldap_server_ng->{'connection'} = SNET::LdapNS::get_connection($ldap_server_ng->{'uri'});
$ldap_server_ng->{'userInfos'} = $ldap_server_ng->{'connection'}->search(
base => 'ou=People,'.$ldap_server_ng->{'base'},
scope => 'sub',
filter => '(objectClass=posixAccount)',
attrs => ['uid', 'uidNumber', 'userPassword' ]
);
synchronize($ldap_server, $ldap_server_ng);
foreach my $server ( $ldap_server, $ldap_server_ng ) {
my $uri = $server->{'uri'};
die "invalid uri `$uri'" unless ( $uri =~ m/^(?:ldap:\/\/)?([^:]+)(?::389)?$/i );
$server->{'server'} = $1;
}
SNET::LdapNS::ldapns_add_dn_exception( $ldap_server->{'user'} );
SNET::LdapNS::ldapns_bind( $ldap_server->{'server'}, $ldap_server->{'user'}, $ldap_server->{'password'}, $ldap_server->{'uri'}, 'LDAPISS', 0, 0, 0 );
$ldap_server->{'connection'} = SNET::LdapNS::get_connection( $ldap_server->{'uri'} );
$ldap_server->{'userInfos'} = $ldap_server->{'connection'}->search(
base => 'ou=People,' . $ldap_server->{'base'},
scope => 'sub',
filter => '(objectClass=posixAccount)',
attrs => [ 'uid', 'uidNumber', 'userPassword' ]
);
SNET::LdapNS::ldapns_del_dn_exception( $ldap_server->{'user'} );
SNET::LdapNS::ldapns_bind( $ldap_server_ng->{'server'}, $ldap_server_ng->{'user'}, $ldap_server_ng->{'password'}, $ldap_server_ng->{'uri'}, 'LDAPISS', 1, 0, 0 );
$ldap_server_ng->{'connection'} = SNET::LdapNS::get_connection( $ldap_server_ng->{'uri'} );
$ldap_server_ng->{'userInfos'} = $ldap_server_ng->{'connection'}->search(
base => 'ou=People,' . $ldap_server_ng->{'base'},
scope => 'sub',
filter => '(objectClass=posixAccount)',
attrs => [ 'uid', 'uidNumber', 'userPassword' ]
);
synchronize( $ldap_server, $ldap_server_ng );
};
if ($@) {
print STDERR $@;
exit 1;
if ( $@ ) {
print STDERR $@;
exit 1;
}
exit 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment