mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-16 16:00:55 -04:00
132 lines
4.1 KiB
Plaintext
132 lines
4.1 KiB
Plaintext
$NetBSD: patch-ai,v 1.1.1.1 2008/06/16 16:04:25 taca Exp $
|
|
|
|
--- smbldap_tools.pm.orig 2008-04-22 17:13:29.000000000 +0900
|
|
+++ smbldap_tools.pm
|
|
@@ -27,28 +27,9 @@ use Net::LDAP;
|
|
use Crypt::SmbHash;
|
|
use Unicode::MapUTF8 qw(to_utf8 from_utf8);
|
|
|
|
-my $smbldap_conf;
|
|
-if ( -e "/etc/smbldap-tools/smbldap.conf" ) {
|
|
- $smbldap_conf = "/etc/smbldap-tools/smbldap.conf";
|
|
-}
|
|
-else {
|
|
- $smbldap_conf = "/etc/opt/IDEALX/smbldap-tools/smbldap.conf";
|
|
-}
|
|
-
|
|
-my $smbldap_bind_conf;
|
|
-if ( -e "/etc/smbldap-tools/smbldap_bind.conf" ) {
|
|
- $smbldap_bind_conf = "/etc/smbldap-tools/smbldap_bind.conf";
|
|
-}
|
|
-else {
|
|
- $smbldap_bind_conf = "/etc/opt/IDEALX/smbldap-tools/smbldap_bind.conf";
|
|
-}
|
|
-my $samba_conf;
|
|
-if ( -e "/etc/samba/smb.conf" ) {
|
|
- $samba_conf = "/etc/samba/smb.conf";
|
|
-}
|
|
-else {
|
|
- $samba_conf = "/usr/local/samba/lib/smb.conf";
|
|
-}
|
|
+my $smbldap_conf = "@PKG_SYSCONFDIR@/smbldap.conf";
|
|
+my $smbldap_bind_conf = "@PKG_SYSCONFDIR@/smbldap_bind.conf";
|
|
+my $samba_conf = "@PREFIX@/etc/samba/smb.conf";
|
|
|
|
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
|
|
use Exporter;
|
|
@@ -267,6 +248,15 @@ $config{groupsdn} = get_parameter( "ldap
|
|
if ( $config{groupsdn} !~ m/,/ ) {
|
|
$config{groupsdn} = $config{groupsdn} . "," . $config{suffix};
|
|
}
|
|
+if ( ! defined $config{groupsclasses} ) {
|
|
+ $config{groupsclasses} = "top posixGroup";
|
|
+}
|
|
+if ( defined $config{groupsdefaultmember} ) {
|
|
+ if ( $config{groupsdefaultmember} !~ m/,/ ) {
|
|
+ $config{groupsdefaultmember} =
|
|
+ $config{groupsdefaultmember} . "," . $config{suffix};
|
|
+ }
|
|
+}
|
|
$config{computersdn} = get_parameter( "ldap machine suffix", "computersdn" );
|
|
if ( $config{computersdn} !~ m/,/ ) {
|
|
$config{computersdn} = $config{computersdn} . "," . $config{suffix};
|
|
@@ -606,8 +596,8 @@ sub add_posix_machine {
|
|
'uid' => "$user",
|
|
'uidNumber' => "$uid",
|
|
'gidNumber' => "$gid",
|
|
- 'homeDirectory' => '/dev/null',
|
|
- 'loginShell' => '/bin/false',
|
|
+ 'homeDirectory' => '/nonexistent',
|
|
+ 'loginShell' => '/sbin/nologin',
|
|
'description' => 'Computer',
|
|
'gecos' => 'Computer',
|
|
]
|
|
@@ -764,15 +754,22 @@ sub group_add {
|
|
if ( $nscd_status == 0 ) {
|
|
system "/etc/init.d/nscd start > /dev/null 2>&1";
|
|
}
|
|
- my $modify = $ldap->add(
|
|
- "cn=$gname,$config{groupsdn}",
|
|
- attrs => [
|
|
- objectClass => [ 'top', 'posixGroup' ],
|
|
- cn => "$gname",
|
|
- gidNumber => "$gid"
|
|
- ]
|
|
+
|
|
+ my $entry = Net::LDAP::Entry->new();
|
|
+ $entry->dn("cn=$gname,$config{groupsdn}");
|
|
+ $entry->add(
|
|
+ objectClass => [ split(' ', $config{groupsclasses}) ],
|
|
+ cn => "$gname",
|
|
+ gidNumber => "$gid"
|
|
);
|
|
|
|
+ if ($config{groupsdefaultmember}) {
|
|
+ $entry->add(
|
|
+ member => $config{groupsdefaultmember}
|
|
+ );
|
|
+ }
|
|
+ my $modify = $ldap->add($entry);
|
|
+
|
|
$modify->code && die "failed to add entry: ", $modify->error;
|
|
return $gid;
|
|
}
|
|
@@ -1159,6 +1156,22 @@ sub get_next_id($$) {
|
|
my $found = 0;
|
|
my $next_uid_mesg;
|
|
my $nextuid;
|
|
+
|
|
+ # retry number
|
|
+ my $retrv = 5;
|
|
+ # lock directory path
|
|
+ my $lockdir = "/tmp/smbldap-useradd";
|
|
+ # wait time
|
|
+ my $wtime = 3;
|
|
+ # create the lockdir
|
|
+ while (!mkdir($lockdir,0755)) {
|
|
+ if (--$retrv <= 0) {
|
|
+ die "System busy and failed to add entry";
|
|
+ }
|
|
+ # if exist the lockdir, wait x second
|
|
+ sleep($wtime);
|
|
+ }
|
|
+
|
|
if ( $ldap_base_dn =~ m/$config{usersdn}/i ) {
|
|
|
|
# when adding a new user, we'll check if the uidNumber available is not
|
|
@@ -1198,9 +1211,14 @@ sub get_next_id($$) {
|
|
# now, look if the id or gid is not already used in /etc/passwd or /etc/group
|
|
if ( !getpwuid($nextuid) ) {
|
|
$found = 1;
|
|
+
|
|
+ # remove the lockdir
|
|
+ rmdir($lockdir);
|
|
return $nextuid;
|
|
}
|
|
}
|
|
+ # remove the lockdir
|
|
+ rmdir($lockdir);
|
|
$tries++;
|
|
print
|
|
"Cannot confirm $attribute $nextuid is free: checking for the next one\n";
|