diff options
author | ivan <ivan> | 2001-09-19 21:06:17 +0000 |
---|---|---|
committer | ivan <ivan> | 2001-09-19 21:06:17 +0000 |
commit | 310a027b9b72cf7d98c7f3e05b3bd1164077f2ab (patch) | |
tree | be9e08468c6e8c0a03e1da56a8f37367e175e9ab /FS | |
parent | 091f86cf5f5da77e72ce5512c7ef61594c964929 (diff) |
directory hashing
remove jeff's lib patch from freeside-apply-credits
add freeside-apply-credits to MANIFEST
README for pre3-4
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/svc_acct.pm | 24 | ||||
-rw-r--r-- | FS/MANIFEST | 1 | ||||
-rwxr-xr-x | FS/bin/freeside-apply-credits | 1 |
3 files changed, 20 insertions, 6 deletions
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 diff --git a/FS/MANIFEST b/FS/MANIFEST index 69123dbfb..b99250d1b 100644 --- a/FS/MANIFEST +++ b/FS/MANIFEST @@ -7,6 +7,7 @@ bin/freeside-bill bin/freeside-email bin/freeside-print-batch bin/freeside-queued +fin/freeside-apply-credits FS.pm FS/CGI.pm FS/Conf.pm diff --git a/FS/bin/freeside-apply-credits b/FS/bin/freeside-apply-credits index eb5c1f489..ea6a7bdd0 100755 --- a/FS/bin/freeside-apply-credits +++ b/FS/bin/freeside-apply-credits @@ -1,7 +1,6 @@ #!/usr/bin/perl -Tw use strict; -use lib "/usr/lib/perl5/site_perl/5.005/FSTest2"; use vars qw( $user $cust_main @customers ); use FS::UID qw(adminsuidsetup); use FS::Record qw(qsearch); |