X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=FS%2FFS%2Fpart_export%2Fshellcommands.pm;h=53b814e8b271afbee5c542207dec9a03255d5ddd;hb=30925e53c865e27db217a3d8cdaa529970cda4c6;hp=665ec473f7e2c452cab96234b46617a0d12ef96d;hpb=3d4a3ffa131e07e53d40908a8bed38906c73445d;p=freeside.git diff --git a/FS/FS/part_export/shellcommands.pm b/FS/FS/part_export/shellcommands.pm index 665ec473f..53b814e8b 100644 --- a/FS/FS/part_export/shellcommands.pm +++ b/FS/FS/part_export/shellcommands.pm @@ -1,6 +1,6 @@ package FS::part_export::shellcommands; -use vars qw(@ISA %info @saltset); +use vars qw(@ISA %info) use Tie::IxHash; use String::ShellQuote; use FS::part_export; @@ -53,6 +53,10 @@ tie my %options, 'Tie::IxHash', 'unsuspend_stdin' => { label=>'Unsuspension command STDIN', default=>'', }, + 'crypt' => { label => 'Default password encryption', + type=>'select', options=>[qw(crypt md5)], + default => 'crypt', + }, ; %info = ( @@ -145,7 +149,7 @@ old_ for replace operations):
$username
$_password
$quoted_password
- unencrypted password quoted for the shell
- $crypt_password
- encrypted password
+ $crypt_password
- encrypted password (quoted for the shell)
$uid
$gid
$finger
- GECOS, already quoted for the shell (do not add additional quotes)
@@ -160,8 +164,6 @@ old_ for replace operations):
END
);
-@saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
-
sub rebless { shift; }
sub _export_insert {
@@ -229,16 +231,8 @@ sub _export_command {
$quoted_password = shell_quote $_password;
$domain = $svc_acct->domain;
- #eventually should check a "password-encoding" field
- if ( length($svc_acct->_password) == 13
- || $svc_acct->_password =~ /^\$(1|2a?)\$/ ) {
- $crypt_password = shell_quote $svc_acct->_password;
- } else {
- $crypt_password = crypt(
- $svc_acct->_password,
- $saltset[int(rand(64))].$saltset[int(rand(64))]
- );
- }
+ $crypt_password =
+ shell_quote( $svc_acct->crypt_password( $self->option('crypt') ) );
@radius_groups = $svc_acct->radius_groups;
@@ -270,15 +264,8 @@ sub _export_replace {
$old_domain = $old->domain;
$new_domain = $new->domain;
- #eventuall should check a "password-encoding" field
- if ( length($new->_password) == 13
- || $new->_password =~ /^\$(1|2a?)\$/ ) {
- $new_crypt_password = shell_quote $new->_password;
- } else {
- $new_crypt_password =
- crypt( $new->_password, $saltset[int(rand(64))].$saltset[int(rand(64))]
- );
- }
+ $new_crypt_password =
+ shell_quote( $new->crypt_password( $self->option('crypt') ) );
@old_radius_groups = $old->radius_groups;
@new_radius_groups = $new->radius_groups;