diff options
author | Mystery Man <unknown@mandriva.org> | 2000-11-08 00:01:16 +0000 |
---|---|---|
committer | Mystery Man <unknown@mandriva.org> | 2000-11-08 00:01:16 +0000 |
commit | d5c526273db473a7d87a26000585900fc10dda7d (patch) | |
tree | 0fdaabe7a00921b6cc556601b103d344fc7ac781 /perl-install/standalone/adduserdrake | |
parent | 9c164312d4bfff6d93e1c4529de6b992f2bebc44 (diff) | |
download | drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar.gz drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar.bz2 drakx-d5c526273db473a7d87a26000585900fc10dda7d.tar.xz drakx-d5c526273db473a7d87a26000585900fc10dda7d.zip |
This commit was manufactured by cvs2svn to create branch
'unlabeled-1.1.1'.
Diffstat (limited to 'perl-install/standalone/adduserdrake')
-rwxr-xr-x | perl-install/standalone/adduserdrake | 73 |
1 files changed, 23 insertions, 50 deletions
diff --git a/perl-install/standalone/adduserdrake b/perl-install/standalone/adduserdrake index 6cd88bf32..52fbdfd68 100755 --- a/perl-install/standalone/adduserdrake +++ b/perl-install/standalone/adduserdrake @@ -4,34 +4,23 @@ use lib qw(/usr/lib/libDrakX); use common qw(:common :functional :system :file); use interactive; -use any; local $_ = join '', @ARGV; -/-h/ and die "usage: adduserdrake [--beginner] [--expert] [<users...>]\n"; +/-h/ and die "usage: adduserdrake [--beginner] [--expert]\n"; -$::beginner = /-beginner/; -$::expert = /-expert/; +$::beginner = /--beginner/; +$::expert = /--expert/; $::isStandalone = 1; +my $in = vnew interactive('su'); + my @etc_pass_fields = qw(name pw uid gid realname home shell); -my @shells = grep { -x $_ } map { "/bin/$_" } qw(bash tcsh zsh ash ksh); +my @shells = map { "/bin/$_" } qw(bash tcsh zsh ash ksh); my $isMD5 = cat_("/etc/pam.d/passwd") =~ /md5/; -my $isShadow = cat_("/etc/pam.d/passwd") =~ /shadow/; -my $security = $ENV{SECURE_LEVEL}; - - - -if (my @l = grep { ! /^-/ } @ARGV) { - addusers(map {{ name => $_, realname => $_ }} @l); - exit 0; -} - -my $in = vnew interactive('su'); -my @users; +my $security = $ENV{SECURITY_LEVEL}; new: -$u = { icon => translate('automagic') }; if ($in->ask_from_entries_refH( [ _("Add user"), _("Accept user"), _("Done") ], _("Enter a user\n%s", $users ? _("(already added %s)", join(", ", map { $_->{realname} || $_->{name} } @users)) : ''), @@ -43,8 +32,6 @@ if ($in->ask_from_entries_refH( _("Password (again)") => {val => \$u->{password2}, hidden => 1}, ), $::beginner ? () : ( _("Shell") => {val => \$u->{shell}, list => \@shells, not_edit => !$::expert} - ), $security > 3 ? () : ( - _("Icon") => {val => \$u->{icon}, list => [ map { translate($_) } @any::users ], not_edit => 1 }, ), ], focus_out => sub { @@ -53,43 +40,29 @@ if ($in->ask_from_entries_refH( } }, complete => sub { - $u->{password} eq $u->{password2} or $in->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return (1,3); - $security > 3 && length($u->{password}) < 6 and $in->ask_warn('', _("This password is too simple")), return (1,2); - $u->{name} or $in->ask_warn('', _("Please give a user name")), return (1,0); - $u->{name} =~ /^[a-z0-9_-]+$/ or $in->ask_warn('', _("The user name must contain only lower cased letters, numbers, `-' and `_'")), return (1,0); - member($u->{name}, map { $_->{name} } @users) and $in->ask_warn('', _("This user name is already added")), return (1,0); - $u->{icon} = untranslate($u->{icon}, @any::users); + $u->{password} eq $u->{password2} or $o->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return (1,3); + $security > 3 && length($u->{password}) < 6 and $o->ask_warn('', _("This password is too simple")), return (1,2); + $u->{name} or $o->ask_warn('', _("Please give a user name")), return (1,0); + $u->{name} =~ /^[a-z0-9_-]+$/ or $o->ask_warn('', _("The user name must contain only lower cased letters, numbers, `-' and `_'")), return (1,0); + member($u->{name}, map { $_->{name} } @users) and $o->ask_warn('', _("This user name is already added")), return (1,0); return 0; }, )) { push @users, $u; - goto new; -} - -addusers(@users); - -sub addusers { - my @u = map { $_->{name} } my @users = @_; - - foreach (@users) { - $_->{pw} = any::crypt($_->{password}, $isMD5); - $_->{shell} ||= "/bin/bash"; - } - - system("adduser $_") foreach @u; - any::addUsers('', @_); - + $u->{pw} = $isMD5 ? c::crypt_md5($u->{password}, salt(8)) : crypt($u->{password}, salt(2)); + system("adduser $u->{name}"); substInFile { - foreach my $u (@users) { - if (/^$u->{name}:/) { - chomp; - my %l; @l{@etc_pass_fields} = split ':'; - add2hash($u, \%l); - $_ = join(':', @$u{@etc_pass_fields}) . "\n"; - } + if (/^$u->{name}:/) { + chomp; + my %l; @l{@etc_pass_fields} = split ':'; + add2hash($u, \%l); + $_ = join(':', @$u{@etc_pass_fields}) . "\n"; } } "/etc/passwd"; - system("pwconv") if $isShadow; + + $u = {}; + goto new; } + $in->exit(0); |