added the tax method
[freeside.git] / FS / FS / svc_acct.pm
index 79104b8..4b7ec98 100644 (file)
@@ -2,12 +2,12 @@ package FS::svc_acct;
 
 use strict;
 use vars qw( @ISA $nossh_hack $conf $dir_prefix @shells $usernamemin
-             $usernamemax $passwordmin
+             $usernamemax $passwordmin $username_letter $username_letterfirst
              $shellmachine $useradd $usermod $userdel 
              @saltset @pw_set);
 use Carp;
 use FS::Conf;
-use FS::Record qw( qsearchs fields );
+use FS::Record qw( qsearch qsearchs fields );
 use FS::svc_Common;
 use Net::SSH qw(ssh);
 use FS::part_svc;
@@ -46,6 +46,8 @@ $FS::UID::callback{'FS::svc_acct'} = sub {
                     'rm -rf $old_dir'.
                   ')';
   }
+  $username_letter = $conf->exists('username-letter');
+  $username_letterfirst = $conf->exists('username-letterfirst');
 };
 
 @saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
@@ -381,7 +383,11 @@ sub check {
   $recref->{username} =~ /^([a-z0-9_\-\.]{$usernamemin,$ulen})$/
     or return "Illegal username";
   $recref->{username} = $1;
-  $recref->{username} =~ /[a-z]/ or return "Illegal username";
+  if ( $username_letterfirst ) {
+    $recref->{username} =~ /^[a-z]/ or return "Illegal username";
+  } elsif ( $username_letter ) {
+    $recref->{username} =~ /[a-z]/ or return "Illegal username";
+  }
 
   $recref->{popnum} =~ /^(\d*)$/ or return "Illegal popnum: ".$recref->{popnum};
   $recref->{popnum} = $1;
@@ -473,6 +479,8 @@ sub check {
     $recref->{_password} = $1.$3;
   } elsif ( $recref->{_password} eq '*' ) {
     $recref->{_password} = '*';
+  } elsif ( $recref->{_password} eq '!!' ) {
+    $recref->{_password} = '!!';
   } else {
     return "Illegal password";
   }
@@ -532,11 +540,11 @@ sub radius_check {
   } grep { /^rc_/ && $self->getfield($_) } fields( $self->table );
 }
 
-=cut
+=back
 
 =head1 VERSION
 
-$Id: svc_acct.pm,v 1.15 2001-04-22 01:56:15 ivan Exp $
+$Id: svc_acct.pm,v 1.19 2001-07-30 07:34:41 ivan Exp $
 
 =head1 BUGS