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;