summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorivan <ivan>2001-09-19 21:06:17 +0000
committerivan <ivan>2001-09-19 21:06:17 +0000
commit310a027b9b72cf7d98c7f3e05b3bd1164077f2ab (patch)
treebe9e08468c6e8c0a03e1da56a8f37367e175e9ab /FS
parent091f86cf5f5da77e72ce5512c7ef61594c964929 (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.pm24
-rw-r--r--FS/MANIFEST1
-rwxr-xr-xFS/bin/freeside-apply-credits1
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);