]> git.treefish.org Git - fex.git/blobdiff - bin/fac
Original release 20150615
[fex.git] / bin / fac
diff --git a/bin/fac b/bin/fac
index 0946704adbcb94c0ba54b6f011d5ef7c4a7aa7e1..cec687a3b81023d28153ea712c3a0ed157aaf0e7 100755 (executable)
--- a/bin/fac
+++ b/bin/fac
@@ -43,7 +43,7 @@ unless ($<) {
 umask 077;
 
 # import from fex.pp
 umask 077;
 
 # import from fex.pp
-our ($FEXHOME,$FHS,$hostname,$spooldir,$logdir,$akeydir,$docdir);
+our ($FEXHOME,$FHS,$hostname,$spooldir,@logdir,$akeydir,$docdir);
 our ($durl,@durl,$mdomain,$admin,$mailmode);
 our ($autodelete,$keep_default,$keep_max,$recipient_quota,$sender_quota);
 our (@local_rdomains);
 our ($durl,@durl,$mdomain,$admin,$mailmode);
 our ($autodelete,$keep_default,$keep_max,$recipient_quota,$sender_quota);
 our (@local_rdomains);
@@ -198,7 +198,7 @@ if ($opt_M) {
 
 # show logfile
 if ($opt_w) {
 
 # show logfile
 if ($opt_w) {
-  $log = "$logdir/fexsrv.log";
+  $log = $logdir[0]."/fexsrv.log";
   warn "$0: polling $log\n\n";
   exec "$FEXHOME/bin/logwatch",$log;
   die "$0: logwatch not found\n";
   warn "$0: polling $log\n\n";
   exec "$FEXHOME/bin/logwatch",$log;
   die "$0: logwatch not found\n";
@@ -401,10 +401,10 @@ if ($opt_A) {
 }
 
 # show config
 }
 
 # show config
-if ($opt_v) {
+if ($opt_v and not @ARGV) {
   print  "config from $FEXLIB/fex.ph :\n";
   print  "  spooldir        = $spooldir\n";
   print  "config from $FEXLIB/fex.ph :\n";
   print  "  spooldir        = $spooldir\n";
-  print  "  logdir          = $logdir\n";
+  print  "  logdir          = @logdir\n";
   print  "  docdir          = $docdir\n";
   print  "  durl            = @durl\n";
   print  "  admin           = $admin\n";
   print  "  docdir          = $docdir\n";
   print  "  durl            = @durl\n";
   print  "  admin           = $admin\n";
@@ -433,26 +433,27 @@ if ($opt_v) {
 
 # add user or show user config
 if ($opt_u) {
 
 # add user or show user config
 if ($opt_u) {
+  chdir $spooldir or die "$0: cannot chdir $spooldir = $!\n";
   if ($opt_u = shift @ARGV) {
     $user = lc $opt_u;
     $user .= '@'.$mdomain if $mdomain and $user !~ /@/;
     $id = shift @ARGV;
   if ($opt_u = shift @ARGV) {
     $user = lc $opt_u;
     $user .= '@'.$mdomain if $mdomain and $user !~ /@/;
     $id = shift @ARGV;
-    $idf = "$spooldir/$user/@";
+    $idf = "$user/@";
     if (open $idf,$idf) {
       chomp($ido = <$idf>||'');
       close $idf;
     }
     unless ($id) {
     if (open $idf,$idf) {
       chomp($ido = <$idf>||'');
       close $idf;
     }
     unless ($id) {
-      die "$0: $user is not a FEX user\n" unless -f "$spooldir/$user/@";
+      die "$0: $user is not a regular FEX user\n" unless -f "$user/@";
       showuser($user,$ido);
       exit;
     }
     unless ($user =~ /\w@[\w.-]+\.[a-z]+$/) {
       die "$0: $user is not a valid email-address!\n";
     }
       showuser($user,$ido);
       exit;
     }
     unless ($user =~ /\w@[\w.-]+\.[a-z]+$/) {
       die "$0: $user is not a valid email-address!\n";
     }
-    unless (-d "$spooldir/$user") {
-      mkdir "$spooldir/$user",0755
-        or die "$0: cannot mkdir $spooldir/$user - $!\n";
+    unless (-d $user) {
+      mkdir $user,0755
+        or die "$0: cannot mkdir $user - $!\n";
     }
     open F,">$idf" or die "$0: cannot write $idf - $!\n";
     print F $id,"\n";
     }
     open F,">$idf" or die "$0: cannot write $idf - $!\n";
     print F $id,"\n";
@@ -460,7 +461,7 @@ if ($opt_u) {
     showuser($user,$id);
   } else {
     print "Users in $spooldir:\n";
     showuser($user,$id);
   } else {
     print "Users in $spooldir:\n";
-    foreach $user (glob "$spooldir/*/@") {
+    foreach $user (glob "*/@") {
       $user =~ s:.*/(.+)/@:$1:;
       print "$user\n";
     }
       $user =~ s:.*/(.+)/@:$1:;
       print "$user\n";
     }
@@ -533,7 +534,7 @@ if ($opt_q) {
   $user = lc $opt_q;
   $user .= '@'.$mdomain if $mdomain and $user !~ /@/;
   unless (-d "$spooldir/$user") {
   $user = lc $opt_q;
   $user .= '@'.$mdomain if $mdomain and $user !~ /@/;
   unless (-d "$spooldir/$user") {
-    die "$0: $user is not a regular FEX user\n";
+    die "$0: $user is not a FEX user\n";
   }
   quota($user,@ARGV);
   exit;
   }
   quota($user,@ARGV);
   exit;
@@ -637,7 +638,7 @@ usage(3);
 sub showuser {
   my $user = shift;
   my $id = shift;
 sub showuser {
   my $user = shift;
   my $id = shift;
-  my ($keep,$autodelete,$notification);
+  my ($keep,$autodelete,$notification,$login);
 
   $user .= '@'.$mdomain if $mdomain and $user !~ /@/;
 
 
   $user .= '@'.$mdomain if $mdomain and $user !~ /@/;
 
@@ -646,6 +647,14 @@ sub showuser {
   printf "%s/%s\n",$fup,b64("from=$user&id=$id");
   # printf "%s/%s\n",$fup,b64("from=$user&to=$user&id=$id&submit=.");
   print "spool: $spooldir/$user/\n";
   printf "%s/%s\n",$fup,b64("from=$user&id=$id");
   # printf "%s/%s\n",$fup,b64("from=$user&to=$user&id=$id&submit=.");
   print "spool: $spooldir/$user/\n";
+  if ($login_check and $login = readlink "$user/.login") {
+    my $lc = &$login_check($login);
+    if ($lc) {
+      print "login: $login\n";
+    } else {
+      print "login: DELETED\n";
+    }
+  }
   printf "fex yourself web default: %s\n",
          -e "$spooldir/$user/\@FEXYOURSELF" ? 'yes' : 'no';
   printf "persistent: %s\n",
   printf "fex yourself web default: %s\n",
          -e "$spooldir/$user/\@FEXYOURSELF" ? 'yes' : 'no';
   printf "persistent: %s\n",
@@ -712,7 +721,7 @@ sub fupstat {
   my ($log,$u,$d,$z);
   my $Z = 0;
 
   my ($log,$u,$d,$z);
   my $Z = 0;
 
-  if (-t) { $log = "$logdir/fup.log" }
+  if (-t) { $log = $logdir[0].'/fup.log' }
   else    { $log = '>&=STDIN' }
   open $log,$log or die "$0: cannot open $log - $!\n";
 
   else    { $log = '>&=STDIN' }
   open $log,$log or die "$0: cannot open $log - $!\n";
 
@@ -749,7 +758,7 @@ sub fopstat {
   my ($log,$u,$d,$z);
   my (%user,%domain,%du);
 
   my ($log,$u,$d,$z);
   my (%user,%domain,%du);
 
-  if (-t) { $log = "$logdir/fop.log" }
+  if (-t) { $log = $logdir[0].'/fop.log' }
   else    { $log = '>&=STDIN' }
   open $log,$log or die "$0: cannot open $log - $!\n";
 
   else    { $log = '>&=STDIN' }
   open $log,$log or die "$0: cannot open $log - $!\n";
 
@@ -789,11 +798,6 @@ sub cpa {
 }
 
 
 }
 
 
-sub mtime {
-  my @s = lstat shift;
-  return @s ? $s[9] : undef;
-}
-
 sub check_admin {
   
   my $admin_id = slurp("$spooldir/$admin/@") or
 sub check_admin {
   
   my $admin_id = slurp("$spooldir/$admin/@") or