Task-Server: PID-File nur aus relativem Konfigurationsdateinamen ableiten
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 30 Aug 2012 09:56:29 +0000 (11:56 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 30 Aug 2012 09:56:29 +0000 (11:56 +0200)
SL/System/TaskServer.pm
scripts/task_server.pl

index df67523..57d0ba8 100644 (file)
@@ -20,6 +20,8 @@ use constant {
   ERR_PROCESS  => -2,
 };
 
+use constant PID_BASE => "users/pid";
+
 sub status {
   my ($self) = @_;
 
@@ -65,8 +67,7 @@ sub _read_pid {
   my $exe_dir = SL::System::Process->exe_dir;
 
   foreach my $conf (qw(kivitendo.conf lx_office.conf kivitendo.conf.default)) {
-    my $pid_file_name = join '.', splitdir($exe_dir), "config.${conf}.pid";
-    my $pid_file_path = catfile(catdir($exe_dir, 'users', 'pid'), $pid_file_name);
+    my $pid_file_path = catfile(catdir($exe_dir, splitdir(PID_BASE())), "config.${conf}.pid");
 
     return join('', read_file($pid_file_path)) * 1 if -f $pid_file_path;
   }
index 513fa98..eb407cb 100755 (executable)
@@ -21,6 +21,7 @@ use Daemon::Generic;
 use Data::Dumper;
 use DateTime;
 use English qw(-no_match_vars);
+use File::Spec;
 use List::Util qw(first);
 use POSIX qw(setuid setgid);
 use SL::Auth;
@@ -32,6 +33,7 @@ use SL::InstanceConfiguration;
 use SL::LXDebug;
 use SL::LxOfficeConf;
 use SL::Locale;
+use SL::System::TaskServer;
 
 our %lx_office_conf;
 
@@ -141,15 +143,19 @@ sub gd_run {
   }
 }
 
-my $cwd     = getcwd();
-my $pidbase = "${cwd}/users/pid";
+chdir $exe_dir;
 
-mkdir($pidbase) if !-d $pidbase;
+mkdir SL::System::TaskServer::PID_BASE() if !-d SL::System::TaskServer::PID_BASE();
+
+my $file = first { -f } ("${exe_dir}/config/kivitendo.conf", "${exe_dir}/config/lx_office.conf", "${exe_dir}/config/kivitendo.conf.default");
+
+die "No configuration file found." unless $file;
+
+$file = File::Spec->abs2rel(Cwd::abs_path($file), Cwd::abs_path($exe_dir));
 
-my $file = first { -f } ("${cwd}/config/kivitendo.conf", "${cwd}/config/lx_office.conf", "${cwd}/config/kivitendo.conf.default");
 newdaemon(configfile => $file,
           progname   => 'kivitendo-task-server',
-          pidbase    => "${pidbase}/",
+          pidbase    => SL::System::TaskServer::PID_BASE() . '/',
           );
 
 1;