diff options
author | Vicent Guardiola <vguardiola@mandriva.com> | 2004-08-12 16:41:39 +0000 |
---|---|---|
committer | Vicent Guardiola <vguardiola@mandriva.com> | 2004-08-12 16:41:39 +0000 |
commit | ded45138404ae5e2e3f02b69a3c2fde462a866f3 (patch) | |
tree | 11242b3d5eaaf81bff5d08f335f06d751bc024ec /ldap_wizard | |
parent | bf58e166497824150b2d283375d8d5e055755d94 (diff) | |
download | drakwizard-ded45138404ae5e2e3f02b69a3c2fde462a866f3.tar drakwizard-ded45138404ae5e2e3f02b69a3c2fde462a866f3.tar.gz drakwizard-ded45138404ae5e2e3f02b69a3c2fde462a866f3.tar.bz2 drakwizard-ded45138404ae5e2e3f02b69a3c2fde462a866f3.tar.xz drakwizard-ded45138404ae5e2e3f02b69a3c2fde462a866f3.zip |
.
Diffstat (limited to 'ldap_wizard')
-rw-r--r-- | ldap_wizard/ldap.pm | 341 |
1 files changed, 0 insertions, 341 deletions
diff --git a/ldap_wizard/ldap.pm b/ldap_wizard/ldap.pm deleted file mode 100644 index e3e11533..00000000 --- a/ldap_wizard/ldap.pm +++ /dev/null @@ -1,341 +0,0 @@ -#!/usr/bin/perl -# version 0.1 -# GPL like -# aginies@mandrakesoft.com - -package MDK::Wizard::ldap; -use lib qw(/usr/lib/libDrakX); -use ugtk2; -use strict; -use ldapdef; -use common; -use standalone; -use MDK::Wizard::Varspaceval; -use MDK::Wizard::Wizcommon; -use Expect; -require Net::LDAP; -use Net::LDAP::Util qw(ldap_error_text); - -#unless ($> == 0) { -# die "You are not root Exiting\n"; -#} - - - -my $o = { - name => N("Add POSIX account"), - var => { - defou => 'ou=Users', - srv => '', - dom => 'mandrakesoft.com', - suffix => '', - rootdn => '', - rootpass => '', - rootpass2 => '', - cn => '', - sn => '', - uid => '', - uidpass => '', - lshell => '/bin/bash', - home => '/home/', - uidnb => '1004', - gidnb => '1004', - container => 'container', - objectclass => 'top,account,posixaccount', - shadowmax => '99999', - shadowmin => '-1', - plop => '', - tmp => '', - nom => '', - prenom => '', - }, - needed_rpm => [ 'squid' ], - defaultimage => "/usr/share/wizards/proxy_wizard/images/proxy.png" - }; - - - -my $ldap_suffix=join(',dc=', split(/\./, chomp_(`hostname -f`))); -$ldap_suffix =~ s/[^,]*,//; -my $conf_file = "/etc/sysconfig/ldapconf"; -my $LDAPCONF = "/etc/openldap/slapd.conf"; - -##### Read conf file is exist - -my $hostname = `hostname`; -$o->{var}{srv} = $hostname; - -if (-f $conf_file) { - - my %conf = getVarsFromSh($conf_file); - $o->{var}{suffix} = $conf{suffix}; - $o->{var}{rootdn} = $conf{rootdn}; - $o->{var}{rootpass} = $conf{rootpass}; - $o->{var}{srv} = $conf{srv}; - $o->{var}{defou} = $conf{users}; - -} else { - my $hostname = chomp_(`hostname`); - $o->{var}{srv} = $hostname; - $o->{var}{suffix} = $ldap_suffix; -} - - -my %level = ( - 1 => N("Server - Set configuration of LDAP server"), - 2 => N("Add - Add user in LDAP server"), - ); - -$o->{pages} = { - welcome => { - name => N("LDAP configuration wizard") . "\n\n" . N("Setup a LDAP server."), - no_back => 1, - pre => sub { - $o->{var}{wiz_level} ||= 1; - }, - post => sub { - if ($o->{var}{wiz_level} == 2) { - return 'check_conffile'; - } - }, - data => [ - { - label => N("Your choice:") . "\n\n", val => \$o->{var}{wiz_level}, type => 'list', list => [ keys %level ], format => sub { $level{$_[0]} } }, - ], - next => 'set_srv', - }, - check_conffile => { name => N("Config Server "), - data => [ - { label => N("Server Name: "), val => \$o->{var}{srv} }, - { label => N("Server RootDN: "), val => \$o->{var}{rootdn} }, - { label => N("RootDN Password: "), val => \$o->{var}{rootpass}, hidden => 1 }, - { label => N("Server Suffix: "), val => \$o->{var}{suffix} }, - { label => N("Server Default Users OU: "), val => \$o->{var}{defou} }, - ], - next => 'add_userposix' - }, - add_userposix => { - name => N("LDAP User Add") . "\n\n" . N("User Create in: ") . $o->{var}{defou} . "," . $o->{var}{suffix}, - data => [ - { - label => N("First Name:"), val => \$o->{var}{sn} }, - { - label => N("Name:"), val => \$o->{var}{cn} }, - { - label => N("User Name:"), val => \$o->{var}{uid} }, - ], - next => 'password' - }, - password => { - name => N("LDAP User Password") . "\n\n" . N("Password for Users: ") . $o->{var}{sn} . "," . $o->{var}{sn} . "," . $o->{var}{cn} . $o->{var}{defou} . "," . $o->{var}{suffix}, - data => [ - { - label => N("Password:"), val => \$o->{var}{uidpass}, hidden => 1 }, - { - label => N("Password (again):"), val => \$o->{var}{uidpass2}, hidden => 1 }, - ], - complete => sub { - if (!$o->{var}{uidpass}) { - $::in->ask_warn(N("Error"), N("You must enter a password for LDAP.")); - return 1; - } - if (!($o->{var}{uidpass} eq $o->{var}{uidpass2})) { - $::in->ask_warn(N("Error"), N("The passwords do not match")); - return 1; - } - }, - - next => 'summary_add_user' - }, - - set_srv => { - name => N("Configuring LDAP"), - data => [ - { - label => N("LDAP Suffix:"), val => \$o->{var}{suffix} }, - { - label => N("LDAP Administrator:"), val => \$o->{var}{rootdn} }, - { - label => N("LDAP Password:"), hidden => 1, val => \$o->{var}{rootpass} }, - { - label => N("LDAP Password (again):"), hidden => 1, val => \$o->{var}{rootpass2} }, - ], - complete => sub { - if (!$o->{var}{suffix}) { - $::in->ask_warn(N("Error"), N("You must enter a suffix for LDAP.")); - return 1; - } - if (!$o->{var}{rootpass}) { - $::in->ask_warn(N("Error"), N("You must enter a password for LDAP.")); - return 1; - } - if (!($o->{var}{rootpass} eq $o->{var}{rootpass2})) { - $::in->ask_warn(N("Error"), N("The passwords do not match")); - return 1; - } - }, - next => 'summary_set_srv', - - }, - summary_add_user => { - name => N("Confirmation of the user to create"), - data => [ - { - label => N("Name:"), type => 'field', fixed_val => \$o->{var}{sn} }, - { - label => N("First name:"), type => 'field', fixed_val => \$o->{var}{cn} }, - { - label => N("User Name:"), type => 'field', fixed_val => \$o->{var}{uid} }, - { - label => N("Create in:"), type => 'field', val => $o->{var}{defou}.$o->{var}{suffix} }, - ], - post => \&do_it_user_add, - next => 'endadd' - }, - summary_set_srv => { - name => N("Confirmation of the user to create"), - data => [ - { - label => N("LDAP Suffix:"), type => 'field', val => $o->{var}{suffix} }, - ], - post => \&do_it_setldap, - next => 'end' - }, - end => { - name => N("Congratulations"), - data => [ { label => N("The wizard successfully configured the LDAP.") } ], - no_back => 1, - end => 1, - next => 0 - }, - endadd => { - name => N("Successfully added User"), - data => [ { label => N("The wizard successfully added an user in LDAP") } ], - no_back => 1, - end => 1, - next => 0, - }, - }; - -sub do_it_setldap { - if (!-f $LDAPCONF) { - die "no $LDAPCONF found"; - } - cp_af($LDAPCONF, $LDAPCONF . '.save'); - if (!-f "$LDAPCONF.example") { - cp_af($LDAPCONF, $LDAPCONF . '.example'); - } - cp_af($LDAPCONF . '.example', $LDAPCONF); - print "$o->{var}{suffix}\n"; - # set suffix - if (any { /^suffix/ } cat_($LDAPCONF)) { - substInFile { - s/suffix.*/suffix\t"$o->{var}{suffix}"/; - } $LDAPCONF; - } else { - append_to_file($LDAPCONF, qq(suffix\t"$o->{var}{suffix}")); - } - - # s/example/$dcall - substInFile { - s/example/$o->{var}{suffix}/g; - } $LDAPCONF; - - # set rootdn - if (any { /^rootdn/ } cat_($LDAPCONF)) { - substInFile { - s/rootdn.*/rootdn\t"cn=$o->{var}{rootdn},$o->{var}{suffix}"/; - } $LDAPCONF; - } else { - append_to_file($LDAPCONF, qq(rootdn\t"$o->{var}{rootdn},$o->{var}{suffix}")); - } - - # set rootpass - my $cryptpass = crypt($o->{var}{rootpass}, "crypt"); - if (any { /^rootpw/ } cat_($LDAPCONF)) { - substInFile { - #s/rootpw.*/rootpw $cryptpass/; - s/rootpw.*/rootpw $o->{var}{rootpass}/; - } $LDAPCONF; - } else { - #append_to_file($LDAPCONF, "rootpw {CRYPT}$cryptpass"); - append_to_file($LDAPCONF, "rootpw $o->{var}{rootpass}"); - } - - - # create config file in /etc/sysconfig/ldapconf - - output($conf_file, <<EOF); -srv=$o->{var}{srv} -suffix=$o->{var}{suffix} -rootdn=$o->{var}{rootdn} -rootpass=$o->{var}{rootpass} -users=$o->{var}{defou} -EOF - - # reset premisions - system("chown -R root.ldap /etc/openldap"); - system("service ldap restart"); - init_ldap(); -} - - -sub init_ldap { - my $root_cn = (split('=', (split(/,/, $o->{var}{rootdn}))[0]))[1]; - my $ldap_dc = (split('=', (split(/,/, $o->{var}{suffix}))[0]))[1]; - - my $LDAP; - open($LDAP, "| ldapadd -x -D 'cn=$o->{var}{rootdn},$o->{var}{suffix}' -w $o->{var}{rootpass}"); - - print $LDAP <<RootLdif; -dn: $o->{var}{suffix} -dc: $ldap_dc -objectClass: dcObject -objectClass: organization -o: Company - -dn: cn=$o->{var}{rootdn},$o->{var}{suffix} -objectClass: organizationalRole -cn: $o->{var}{rootdn} - -dn: ou=Hosts,$o->{var}{suffix} -ou: Hosts -description: OU Hosts -objectClass: top -objectClass: organizationalUnit - -dn: ou=Users,$o->{var}{suffix} -ou: Users -description: OU Users -objectClass: top -objectClass: organizationalUnit - -dn: ou=Group,$o->{var}{suffix} -ou: Group -description: OU Group -objectClass: top -objectClass: organizationalUnit - - -RootLdif - - close($LDAP) -} - - - - -sub do_it_user_add { - return if $::testing; - my $ldap = ldap_connect($o); - my $mesg = add_user($o); -} - -sub new { - my ($class) = @_; - bless { - o => $o, - }, $class; -} - -1; |