RT 83251 - moved script
[freeside.git] / bin / svc_acct.import
index c2ef4fd..aff26b9 100755 (executable)
@@ -1,52 +1,10 @@
 #!/usr/bin/perl -Tw
-#
-# $Id: svc_acct.import,v 1.9 2000-06-28 12:03:53 ivan Exp $
-#
-# ivan@sisd.com 98-mar-9
-#
-# changed 'password' field to '_password' because PgSQL 6.3 reserves this word
-#      bmccane@maxbaud.net  98-Apr-3
-#
-# generalized svcparts (still needs radius import) ivan@sisd.com 98-mar-23
-#
-# radius import, now an interactive script.  still needs erpcd import?
-# ivan@sisd.com 98-jun-24
-#
-# arbitrary radius attributes ivan@sisd.com 98-aug-9
-#
-# don't import /var/spool/freeside/conf/shells!  ivan@sisd.com 98-aug-13
-#
-# $Log: svc_acct.import,v $
-# Revision 1.9  2000-06-28 12:03:53  ivan
-# make svc_acct more forgiving about RADIUS users files
-#
-# Revision 1.8  2000/02/03 05:16:52  ivan
-# beginning of DNS and Apache support
-#
-# Revision 1.7  1999/07/08 02:32:26  ivan
-# import fix, noticed by Ben Leibig and Joel Griffiths
-#
-# Revision 1.6  1999/07/08 01:49:00  ivan
-# updates to avoid -w warnings from Joel Griffiths <griff@aver-computer.com>
-#
-# Revision 1.5  1999/03/25 08:42:19  ivan
-# import stuff uses Term::Query and spits out (some kinds of) nonsensical input
-#
-# Revision 1.4  1999/03/24 00:43:38  ivan
-# die if no relevant services
-#
-# Revision 1.3  1998/12/10 07:23:16  ivan
-# use FS::Conf, need user (for datasrc)
-#
-# Revision 1.2  1998/10/13 12:07:51  ivan
-# Assigns password from the shadow file for RADIUS password "UNIX"
-#
 
 use strict;
 use vars qw(%part_svc);
 use Date::Parse;
 use Term::Query qw(query);
-use FS::SSH qw(iscp);
+use Net::SCP qw(iscp);
 use FS::UID qw(adminsuidsetup datasrc);
 use FS::Record qw(qsearch);
 use FS::svc_acct;
@@ -55,6 +13,8 @@ use FS::part_svc;
 my $user = shift or die &usage;
 adminsuidsetup $user;
 
+push @FS::svc_acct::shells, qw(/bin/sync /sbin/shuddown /bin/halt); #others?
+
 my($spooldir)="/usr/local/etc/freeside/export.". datasrc;
 
 $FS::svc_acct::nossh_hack = 1;
@@ -151,10 +111,10 @@ while (<USERS>) {
   next if /^\s*$/;
   next if /^\s*#/;
   if ( /^\S/ ) {
-    /^(\w+)\s+Password\s+=\s+"([^"]+)"(,\s+Expiration\s+=\s+"([^"]*")\s*)?$/
+    /^(\w+)\s+(Auth-Type\s+=\s+Local,\s+)?Password\s+=\s+"([^"]+)"(,\s+Expiration\s+=\s+"([^"]*")\s*)?$/
       or die "1Unexpected line in users.import: $_";
     my($password,$expiration);
-    ($username,$password,$expiration)=(lc($1),$2,$4);
+    ($username,$password,$expiration)=(lc($1),$3,$5);
     $password = '' if $password eq 'UNIX';
     $upassword{$username}=$password;
     undef %param;
@@ -194,6 +154,8 @@ my(%password);
 while (<SHADOW>) {
   chop;
   my($username,$password)=split(/:/);
+  #$password =~ s/^\!$/\*/;
+  #$password =~ s/\!+/\*SUSPENDED\* /;
   $password{$username}=$password;
 }
 
@@ -219,15 +181,15 @@ while (<PASSWD>) {
   }
 
   my($svc_acct) = new FS::svc_acct ({
-    'svcpart'  => $svcpart,
-    'username' => $username,
-    'password' => $password,
-    'uid'      => $uid,
-    'gid'      => $gid,
-    'finger'   => $finger,
-    'dir'      => $dir,
-    'shell'    => $shell,
-    'slipip'   => $ip{$username},
+    'svcpart'   => $svcpart,
+    'username'  => $username,
+    '_password' => $password,
+    'uid'       => $uid,
+    'gid'       => $gid,
+    'finger'    => $finger,
+    'dir'       => $dir,
+    'shell'     => $shell,
+    'slipip'    => $ip{$username},
     %{$allparam{$username}},
   });
   my($error);
@@ -253,10 +215,10 @@ foreach $username ( keys %upassword ) {
   }
 
   my($svc_acct) = new FS::svc_acct ({
-    'svcpart'  => $svcpart,
-    'username' => $username,
-    'password' => $password,
-    'slipip'   => $ip{$username},
+    'svcpart'   => $svcpart,
+    'username'  => $username,
+    '_password' => $password,
+    'slipip'    => $ip{$username},
     %{$allparam{$username}},
   });
   my($error);