head	1.1;
branch	1.1.1;
access;
symbols
	pkgsrc-2026Q1:1.1.1.1.0.148
	pkgsrc-2026Q1-base:1.1.1.1
	pkgsrc-2025Q4:1.1.1.1.0.146
	pkgsrc-2025Q4-base:1.1.1.1
	pkgsrc-2025Q3:1.1.1.1.0.144
	pkgsrc-2025Q3-base:1.1.1.1
	pkgsrc-2025Q2:1.1.1.1.0.142
	pkgsrc-2025Q2-base:1.1.1.1
	pkgsrc-2025Q1:1.1.1.1.0.140
	pkgsrc-2025Q1-base:1.1.1.1
	pkgsrc-2024Q4:1.1.1.1.0.138
	pkgsrc-2024Q4-base:1.1.1.1
	pkgsrc-2024Q3:1.1.1.1.0.136
	pkgsrc-2024Q3-base:1.1.1.1
	pkgsrc-2024Q2:1.1.1.1.0.134
	pkgsrc-2024Q2-base:1.1.1.1
	pkgsrc-2024Q1:1.1.1.1.0.132
	pkgsrc-2024Q1-base:1.1.1.1
	pkgsrc-2023Q4:1.1.1.1.0.130
	pkgsrc-2023Q4-base:1.1.1.1
	pkgsrc-2023Q3:1.1.1.1.0.128
	pkgsrc-2023Q3-base:1.1.1.1
	pkgsrc-2023Q2:1.1.1.1.0.126
	pkgsrc-2023Q2-base:1.1.1.1
	pkgsrc-2023Q1:1.1.1.1.0.124
	pkgsrc-2023Q1-base:1.1.1.1
	pkgsrc-2022Q4:1.1.1.1.0.122
	pkgsrc-2022Q4-base:1.1.1.1
	pkgsrc-2022Q3:1.1.1.1.0.120
	pkgsrc-2022Q3-base:1.1.1.1
	pkgsrc-2022Q2:1.1.1.1.0.118
	pkgsrc-2022Q2-base:1.1.1.1
	pkgsrc-2022Q1:1.1.1.1.0.116
	pkgsrc-2022Q1-base:1.1.1.1
	pkgsrc-2021Q4:1.1.1.1.0.114
	pkgsrc-2021Q4-base:1.1.1.1
	pkgsrc-2021Q3:1.1.1.1.0.112
	pkgsrc-2021Q3-base:1.1.1.1
	pkgsrc-2021Q2:1.1.1.1.0.110
	pkgsrc-2021Q2-base:1.1.1.1
	pkgsrc-2021Q1:1.1.1.1.0.108
	pkgsrc-2021Q1-base:1.1.1.1
	pkgsrc-2020Q4:1.1.1.1.0.106
	pkgsrc-2020Q4-base:1.1.1.1
	pkgsrc-2020Q3:1.1.1.1.0.104
	pkgsrc-2020Q3-base:1.1.1.1
	pkgsrc-2020Q2:1.1.1.1.0.100
	pkgsrc-2020Q2-base:1.1.1.1
	pkgsrc-2020Q1:1.1.1.1.0.80
	pkgsrc-2020Q1-base:1.1.1.1
	pkgsrc-2019Q4:1.1.1.1.0.102
	pkgsrc-2019Q4-base:1.1.1.1
	pkgsrc-2019Q3:1.1.1.1.0.98
	pkgsrc-2019Q3-base:1.1.1.1
	pkgsrc-2019Q2:1.1.1.1.0.96
	pkgsrc-2019Q2-base:1.1.1.1
	pkgsrc-2019Q1:1.1.1.1.0.94
	pkgsrc-2019Q1-base:1.1.1.1
	pkgsrc-2018Q4:1.1.1.1.0.92
	pkgsrc-2018Q4-base:1.1.1.1
	pkgsrc-2018Q3:1.1.1.1.0.90
	pkgsrc-2018Q3-base:1.1.1.1
	pkgsrc-2018Q2:1.1.1.1.0.88
	pkgsrc-2018Q2-base:1.1.1.1
	pkgsrc-2018Q1:1.1.1.1.0.86
	pkgsrc-2018Q1-base:1.1.1.1
	pkgsrc-2017Q4:1.1.1.1.0.84
	pkgsrc-2017Q4-base:1.1.1.1
	pkgsrc-2017Q3:1.1.1.1.0.82
	pkgsrc-2017Q3-base:1.1.1.1
	pkgsrc-2017Q2:1.1.1.1.0.78
	pkgsrc-2017Q2-base:1.1.1.1
	pkgsrc-2017Q1:1.1.1.1.0.76
	pkgsrc-2017Q1-base:1.1.1.1
	pkgsrc-2016Q4:1.1.1.1.0.74
	pkgsrc-2016Q4-base:1.1.1.1
	pkgsrc-2016Q3:1.1.1.1.0.72
	pkgsrc-2016Q3-base:1.1.1.1
	pkgsrc-2016Q2:1.1.1.1.0.70
	pkgsrc-2016Q2-base:1.1.1.1
	pkgsrc-2016Q1:1.1.1.1.0.68
	pkgsrc-2016Q1-base:1.1.1.1
	pkgsrc-2015Q4:1.1.1.1.0.66
	pkgsrc-2015Q4-base:1.1.1.1
	pkgsrc-2015Q3:1.1.1.1.0.64
	pkgsrc-2015Q3-base:1.1.1.1
	pkgsrc-2015Q2:1.1.1.1.0.62
	pkgsrc-2015Q2-base:1.1.1.1
	pkgsrc-2015Q1:1.1.1.1.0.60
	pkgsrc-2015Q1-base:1.1.1.1
	pkgsrc-2014Q4:1.1.1.1.0.58
	pkgsrc-2014Q4-base:1.1.1.1
	pkgsrc-2014Q3:1.1.1.1.0.56
	pkgsrc-2014Q3-base:1.1.1.1
	pkgsrc-2014Q2:1.1.1.1.0.54
	pkgsrc-2014Q2-base:1.1.1.1
	pkgsrc-2014Q1:1.1.1.1.0.52
	pkgsrc-2014Q1-base:1.1.1.1
	pkgsrc-2013Q4:1.1.1.1.0.50
	pkgsrc-2013Q4-base:1.1.1.1
	pkgsrc-2013Q3:1.1.1.1.0.48
	pkgsrc-2013Q3-base:1.1.1.1
	pkgsrc-2013Q2:1.1.1.1.0.46
	pkgsrc-2013Q2-base:1.1.1.1
	pkgsrc-2013Q1:1.1.1.1.0.44
	pkgsrc-2013Q1-base:1.1.1.1
	pkgsrc-2012Q4:1.1.1.1.0.42
	pkgsrc-2012Q4-base:1.1.1.1
	pkgsrc-2012Q3:1.1.1.1.0.40
	pkgsrc-2012Q3-base:1.1.1.1
	pkgsrc-2012Q2:1.1.1.1.0.38
	pkgsrc-2012Q2-base:1.1.1.1
	pkgsrc-2012Q1:1.1.1.1.0.36
	pkgsrc-2012Q1-base:1.1.1.1
	pkgsrc-2011Q4:1.1.1.1.0.34
	pkgsrc-2011Q4-base:1.1.1.1
	pkgsrc-2011Q3:1.1.1.1.0.32
	pkgsrc-2011Q3-base:1.1.1.1
	pkgsrc-2011Q2:1.1.1.1.0.30
	pkgsrc-2011Q2-base:1.1.1.1
	pkgsrc-2011Q1:1.1.1.1.0.28
	pkgsrc-2011Q1-base:1.1.1.1
	pkgsrc-2010Q4:1.1.1.1.0.26
	pkgsrc-2010Q4-base:1.1.1.1
	pkgsrc-2010Q3:1.1.1.1.0.24
	pkgsrc-2010Q3-base:1.1.1.1
	pkgsrc-2010Q2:1.1.1.1.0.22
	pkgsrc-2010Q2-base:1.1.1.1
	pkgsrc-2010Q1:1.1.1.1.0.20
	pkgsrc-2010Q1-base:1.1.1.1
	pkgsrc-2009Q4:1.1.1.1.0.18
	pkgsrc-2009Q4-base:1.1.1.1
	pkgsrc-2009Q3:1.1.1.1.0.16
	pkgsrc-2009Q3-base:1.1.1.1
	pkgsrc-2009Q2:1.1.1.1.0.14
	pkgsrc-2009Q2-base:1.1.1.1
	pkgsrc-2009Q1:1.1.1.1.0.12
	pkgsrc-2009Q1-base:1.1.1.1
	pkgsrc-2008Q4:1.1.1.1.0.10
	pkgsrc-2008Q4-base:1.1.1.1
	pkgsrc-2008Q3:1.1.1.1.0.8
	pkgsrc-2008Q3-base:1.1.1.1
	cube-native-xorg:1.1.1.1.0.6
	cube-native-xorg-base:1.1.1.1
	pkgsrc-2008Q2:1.1.1.1.0.4
	pkgsrc-2008Q2-base:1.1.1.1
	cwrapper:1.1.1.1.0.2
	pkgsrc-base:1.1.1.1
	TNF:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2008.06.16.16.04.25;	author taca;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2008.06.16.16.04.25;	author taca;	state Exp;
branches;
next	;


desc
@@



1.1
log
@Initial revision
@
text
@$NetBSD$

--- 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";
@


1.1.1.1
log
@Importing smbldap-tools version 0.9.5.  It has still experimental phase.


Smbldap-tools is a set of scripts designed to help integrate Samba and
a LDAP directory.  They target both users and administrators of unix
systems.

Users can change their password in a way similar to the standard
`passwd' command.

Administrators can perform user and group management command line
actions and synchronise Samba account management consistently.

A version of these tools are bundled with samba, but this set is from
the master development site and is generally more up to date.
@
text
@@
