$::lxdebug->message(0, @_);
}
-sub lxinit {
+sub initialize_kivitendo {
+ chdir $exe_dir;
+
my $login = $lx_office_conf{task_server}->{login};
my $client = $lx_office_conf{task_server}->{client};
package main;
+ Form::disconnect_standard_dbh;
$::lxdebug = LXDebug->new;
$::locale = Locale->new($::lx_office_conf{system}->{language});
$::form = Form->new;
$::auth = SL::Auth->new;
die "No client configured or no client found with the name/ID '$client'" unless $::auth->set_client($client);
$::instance_conf = SL::InstanceConfiguration->new;
- $::request = { cgi => CGI->new({}) };
+ $::request = SL::Request->new(
+ cgi => CGI->new({}),
+ layout => SL::Layout::None->new,
+ );
die 'cannot reach auth db' unless $::auth->session_tables_present;
$::auth->restore_session;
-
- require "bin/mozilla/common.pl";
+ $::auth->create_or_refresh_session;
die "cannot find user $login" unless %::myconfig = $::auth->read_user(login => $login);
- die "cannot find locale for user $login" unless $::locale = Locale->new('de');
-}
+ die "cannot find locale for user $login" unless $::locale = Locale->new($::myconfig{countrycode} || $::lx_office_conf{system}->{language});
-sub per_job_initialization {
- $::locale = Locale->new($::myconfig{countrycode} || $::lx_office_conf{system}->{language});
- $::form = Form->new;
- $::instance_conf = SL::InstanceConfiguration->new;
- $::request = SL::Request->new(
- cgi => CGI->new({}),
- layout => SL::Layout::None->new,
- );
+ $::form->{__ERROR_HANDLER} = sub { die @_ };
+}
- $::auth->restore_session;
+sub cleanup_kivitendo {
+ eval { SL::DB::Auth->new->db->dbh->rollback; };
+ eval { SL::DB::BackgroundJob->new->db->dbh->rollback; };
- $::instance_conf->init;
+ $::auth->save_session;
+ $::auth->expire_sessions;
+ $::auth->reset;
- $::form->{__ERROR_HANDLER} = sub { die @_ };
+ $::form = undef;
+ $::myconfig = ();
+ $::request = undef;
+ Form::disconnect_standard_dbh;
}
sub drop_privileges {
die "Missing key 'client' in section [task_server] in config file" unless $lx_office_conf{task_server}->{client};
drop_privileges();
- lxinit();
+ initialize_kivitendo();
return ();
}
sub gd_run {
while (1) {
my $ok = eval {
+ initialize_kivitendo();
+
debug("Retrieving jobs");
my $jobs = SL::DB::Manager::BackgroundJob->get_all_need_to_run;
foreach my $job (@{ $jobs }) {
# Provide fresh global variables in case legacy code modifies
# them somehow.
- per_job_initialization();
-
- chdir $exe_dir;
+ initialize_kivitendo();
my $history = $job->run;
notify_on_failure(exception => $error);
}
+ cleanup_kivitendo();
+
debug("Sleeping");
my $seconds = 60 - (localtime)[0];