DO open a database connection in the parent process, this cached the $dbdef and speed...
[freeside.git] / FS / bin / freeside-selfservice-server
index ad100e8..c045893 100644 (file)
@@ -41,7 +41,6 @@ my $tag = scalar(@ARGV) ? shift : '';
 my $pid_file = "/var/run/freeside-selfservice-server.$user.$machine.pid";
 
 my $lock_file = "/usr/local/etc/freeside/selfservice.$machine.writelock";
-open(LOCKFILE,">$lock_file") or die "can't open $lock_file: $!";
 
 &init($user);
 
@@ -138,6 +137,7 @@ while (1) {
       }
       $rv->{_token} = $packet->{_token}; #identifier
 
+      open(LOCKFILE,">$lock_file") or die "can't open $lock_file: $!";
       lock_write;
       warn "sending response\n" if $Debug;
       nstore_fd($rv, $writer) or die "FATAL: can't send response: $!";
@@ -200,6 +200,10 @@ sub init {
   #false laziness w/freeside-queued
   my $freeside_gid = scalar(getgrnam('freeside'))
     or die "can't setgid to freeside group\n";
+
+  open(LOCKFILE,">$lock_file") or die "can't open $lock_file: $!";
+  chown $FS::UID::freeside_uid, $freeside_gid, $lock_file;
+
   $) = $freeside_gid;
   $( = $freeside_gid;
   #if freebsd can't setuid(), presumably it can't setgid() either.  grr fleabsd
@@ -214,7 +218,7 @@ sub init {
   #eslaf
 
   $ENV{HOME} = (getpwuid($>))[7]; #for ssh
-  #adminsuidsetup $user;
+  adminsuidsetup $user;
 
   #$log_file = "/usr/local/etc/freeside/selfservice.". $FS::UID::datasrc; #MACHINE NAME
   $log_file = "/usr/local/etc/freeside/selfservice.$machine.log";