#!/usr/bin/perl
-
-use List::MoreUtils qw(any);
-
use strict;
my $exe_dir;
BEGIN {
use FindBin;
- use lib "$FindBin::Bin/..";
-
- use SL::System::Process;
- $exe_dir = SL::System::Process::exe_dir;
-
- unshift @INC, "${exe_dir}/modules/override"; # Use our own versions of various modules (e.g. YAML).
- push @INC, "${exe_dir}/modules/fallback"; # Only use our own versions of modules if there's no system version.
- unshift @INC, $exe_dir;
- chdir($exe_dir) || die "Cannot change directory to ${exe_dir}\n";
+ unshift(@INC, $FindBin::Bin . '/../modules/override'); # Use our own versions of various modules (e.g. YAML).
+ push (@INC, $FindBin::Bin . '/..'); # '.' will be removed from @INC soon.
+ push (@INC, $FindBin::Bin . '/../modules/fallback'); # Only use our own versions of modules if there's no system version.
}
use CGI qw( -no_xhtml);
use Daemon::Generic;
use Data::Dumper;
use DateTime;
-use Encode qw();
use English qw(-no_match_vars);
use File::Spec;
+use List::MoreUtils qw(any);
use List::Util qw(first);
use POSIX qw(setuid setgid);
use SL::Auth;
+use SL::DBUpgrade2;
use SL::DB::AuthClient;
use SL::DB::BackgroundJob;
use SL::BackgroundJob::ALL;
use SL::LxOfficeConf;
use SL::Locale;
use SL::Mailer;
+use SL::System::Process;
use SL::System::TaskServer;
use Template;
package main;
- Form::disconnect_standard_dbh;
$::lxdebug = LXDebug->new;
$::locale = Locale->new($::lx_office_conf{system}->{language});
$::form = Form->new;
}
sub cleanup_kivitendo {
- eval { SL::DB::Auth->new->db->dbh->rollback; };
- eval { SL::DB::BackgroundJob->new->db->dbh->rollback; };
+ eval { SL::DB->client->dbh->rollback; };
$::auth->save_session;
$::auth->expire_sessions;
}
sub clean_before_sleeping {
- Form::disconnect_standard_dbh;
SL::DBConnect::Cache->disconnect_all_and_clear;
SL::DB->db_cache->clear;
+
+ File::Temp::cleanup();
}
sub drop_privileges {
EVAL_PERL => 0,
ABSOLUTE => 1,
CACHE_SIZE => 0,
+ ENCODING => 'utf8',
});
return debug("Could not create Template instance") unless $template;
subject => $cfg->{email_subject},
content_type => 'text/plain',
charset => 'utf-8',
- message => Encode::decode('utf-8', $body),
+ message => $body,
)->send;
1;
exit 2;
}
+ initialize_kivitendo();
+
+ my $dbupdater_auth = SL::DBUpgrade2->new(form => $::form, auth => 1)->parse_dbupdate_controls;
+ if ($dbupdater_auth->unapplied_upgrade_scripts($::auth->dbconnect)) {
+ print STDERR <<EOT;
+The authentication database requires an upgrade. Please login to
+kivitendo's administration interface in order to apply it. The task
+server cannot start until the upgrade has been applied.
+EOT
+ exit 2;
+ }
+
drop_privileges();
return ();
sub gd_run {
while (1) {
+ $SIG{'ALRM'} = 'IGNORE';
+
run_once_for_all_clients();
debug("Sleeping");
my $seconds = 60 - (localtime)[0];
if (!eval {
- local $SIG{'ALRM'} = sub {
+ $SIG{'ALRM'} = sub {
+ $SIG{'ALRM'} = 'IGNORE';
debug("Got woken up by SIGALRM");
die "Alarm!\n"
};
}
}
-sub end_of_request {
- $main::lxdebug->show_backtrace();
- die <<EOF;
-Job called ::end_of_request()!
-
-This usually indicates success but should not be used by background jobs. A
-backtrace has been logged. Please tell the job author to have a look at it.
-EOF
-
-}
-
-chdir $exe_dir;
+$exe_dir = SL::System::Process->exe_dir;
+chdir($exe_dir) || die "Cannot change directory to ${exe_dir}\n";
mkdir SL::System::TaskServer::PID_BASE() if !-d SL::System::TaskServer::PID_BASE();