import rt 2.0.14
[freeside.git] / FS / bin / freeside-queued
index 846055d..83074b9 100644 (file)
@@ -8,14 +8,14 @@ use POSIX qw(setsid);
 use Date::Format;
 use IO::File;
 use FS::UID qw(adminsuidsetup forksuidsetup driver_name dbh);
-use FS::Record qw(qsearchs);
+use FS::Record qw(qsearch qsearchs);
 use FS::queue;
 use FS::queue_depend;
 
 # no autoloading just yet
 use FS::cust_main;
 use FS::svc_acct;
-use Net::SSH 0.05;
+use Net::SSH 0.06;
 use FS::part_export;
 
 $max_kids = '10'; #guess it should be a config file...
@@ -36,8 +36,20 @@ $sigint = 0;
 $SIG{INT} = sub { warn "SIGINT received; shutting down\n"; $sigint++; };
 $SIG{TERM} = sub { warn "SIGTERM received; shutting down\n"; $sigterm++; };
 
-$> = $FS::UID::freeside_uid unless $>;
-$< = $>;
+my $freeside_gid = scalar(getgrnam('freeside'))
+  or die "can't setgid to freeside group\n";
+$) = $freeside_gid;
+$( = $freeside_gid;
+#if freebsd can't setuid(), presumably it can't setgid() either.  grr fleabsd
+($(,$)) = ($),$();
+$) = $freeside_gid;
+
+$> = $FS::UID::freeside_uid;
+$< = $FS::UID::freeside_uid;
+#freebsd is sofa king broken, won't setuid()
+($<,$>) = ($>,$<);
+$> = $FS::UID::freeside_uid;
+
 $ENV{HOME} = (getpwuid($>))[7]; #for ssh
 adminsuidsetup $user;