directory hashing
authorivan <ivan>
Wed, 19 Sep 2001 21:06:17 +0000 (21:06 +0000)
committerivan <ivan>
Wed, 19 Sep 2001 21:06:17 +0000 (21:06 +0000)
remove jeff's lib patch from freeside-apply-credits
add freeside-apply-credits to MANIFEST
README for pre3-4

FS/FS/svc_acct.pm
FS/MANIFEST
FS/bin/freeside-apply-credits
README.1.4.0pre3-4 [new file with mode: 0644]
httemplate/docs/config.html

index a9c93af..46208aa 100644 (file)
@@ -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
 
index 69123db..b99250d 100644 (file)
@@ -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
index eb5c1f4..ea6a7bd 100755 (executable)
@@ -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);
diff --git a/README.1.4.0pre3-4 b/README.1.4.0pre3-4
new file mode 100644 (file)
index 0000000..d2fcf7f
--- /dev/null
@@ -0,0 +1,6 @@
+the following is necessary to upgrade from 1.4.0pre3 to pre4 or later.
+
+install the perl modules and httemplate as per install.html or upgrade8.html
+
+Run bin/dbdef-create
+
index b985ebe..424985b 100644 (file)
@@ -43,6 +43,13 @@ All further configuration files and directories are located in
   <li>cybercash3.2 - <a href="http://www.cybercash.com/cybercash/services/technology.html">CyberCash v3.2</a> support.  Two lines: the full path and name of your merchant_conf file, and the transaction type (`mauthonly' or `mauthcapture').  CCMckLib3_2.pm, CCMckDirectLib3_2.pm and CCMckErrno3_2 are required.
   <li>cyrus</li> - Integration with <a href="http://asg.web.cmu.edu/cyrus/imapd/">Cyrus IMAP Server</a>, three lines: IMAP server, admin username, and admin password.  Cyrus::IMAP::Admin should be installed locally and the connection to the server secured.
   <li><a name="deletecustomers">deletecustomers</a> - The existance of this file will enable customer deletions.  Be very careful!  Deleting a customer will remove all traces that this customer ever existed!  It should probably only be used when auditing a legacy database.  Normally, you cancel all of a customers' packages if they cancel service.
+  <li><a name="dirhash">dirhash</a> - Optional numeric value to control director hashing.  If positive, hashes directories for the specified number of levels from the front of the username.  If negative, hashes directories for the specified number of levels from the end of the username.  Some examples:
+    <ul>
+      <li>1: user -> <a href="#home">/home</a>/u/user
+      <li>2: user -> <a href="#home">/home</a>/u/s/user
+      <li>-1: user -> <a href="#home">/home</a>/r/user
+      <li>-2: user -> <a href="#home">home</a>/r/e/user
+    </ul>
   <li><a name="disable_customer_referrals">disable_customer_referrals</a> - The existance of this file will disable new customer-to-customer referrals in the web interface.
   <li><a name="domain"><font color="#ff0000">domain</font></a> - Your domain name.
   <li><a name="editreferrals">editreferrals</a> - The existance of this file will allow you to change the referral of existing customers.