X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct.pm;h=46208aa227778c5aac475f3aa22dd9a069924060;hp=a9c93afe33e46c8734637d782bc63c105eda48ae;hb=310a027b9b72cf7d98c7f3e05b3bd1164077f2ab;hpb=091f86cf5f5da77e72ce5512c7ef61594c964929 diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index a9c93afe3..46208aa22 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -6,6 +6,7 @@ use vars qw( @ISA $nossh_hack $conf $dir_prefix @shells $usernamemin $username_noperiod $shellmachine $useradd $usermod $userdel $mydomain $cyrus_server $cyrus_admin_user $cyrus_admin_pass + $dirhash $icradius_dbh @saltset @pw_set); use Carp; @@ -72,6 +73,7 @@ $FS::UID::callback{'FS::svc_acct'} = sub { } else { $icradius_dbh = ''; } + $dirhash = $conf->config('dirhash') || 0; }; @saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' ); @@ -708,10 +710,21 @@ sub check { $recref->{dir} =~ /^([\/\w\-]*)$/ or return "Illegal directory"; - $recref->{dir} = $1 || - $dir_prefix . '/' . $recref->{username} - #$dir_prefix . '/' . substr($recref->{username},0,1). '/' . $recref->{username} + $recref->{dir} = $1; + unless ( $recref->{dir} ) { + $recref->{dir} = $dir_prefix . '/'; + if ( $dirhash > 0 ) { + for my $h ( 1 .. $dirhash ) { + $recref->{dir} .= substr($recref->{username}, $h-1, 1). '/'; + } + } elsif ( $dirhash < 0 ) { + for my $h ( reverse $dirhash .. -1 ) { + $recref->{dir} .= substr($recref->{username}, $h, 1). '/'; + } + } + $recref->{dir} .= $recref->{username}; ; + } unless ( $recref->{username} eq 'sync' ) { if ( grep $_ eq $recref->{shell}, @shells ) { @@ -881,7 +894,8 @@ sub ssh { my $output_stream = <$writer>; my $error_stream = <$error>; if ( length $error_stream ) { - warn "[FS::svc_acct::ssh] STDERR $error_stream"; + #warn "[FS::svc_acct::ssh] STDERR $error_stream"; + die "[FS::svc_acct::ssh] STDERR $error_stream"; } if ( length $output_stream ) { warn "[FS::svc_acct::ssh] STDOUT $output_stream"; @@ -894,7 +908,7 @@ sub ssh { =head1 VERSION -$Id: svc_acct.pm,v 1.45 2001-09-19 19:41:28 ivan Exp $ +$Id: svc_acct.pm,v 1.46 2001-09-19 21:06:17 ivan Exp $ =head1 BUGS