X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDispatcher.pm;h=b485063421f6a68de0820b5d1be5f02b9c06ab6f;hb=606e7e2575ff6112e8e45acf0e74e87faa5cfa7c;hp=3624cecef4d7a8db49352f85defbef49d5df0d01;hpb=be6f6cfd8dc7def5356edd0c5aacb814b4baded1;p=kivitendo-erp.git diff --git a/SL/Dispatcher.pm b/SL/Dispatcher.pm index 3624cecef..b48506342 100644 --- a/SL/Dispatcher.pm +++ b/SL/Dispatcher.pm @@ -5,7 +5,6 @@ use strict; BEGIN { unshift @INC, "modules/override"; # Use our own versions of various modules (e.g. YAML). push @INC, "modules/fallback"; # Only use our own versions of modules if there's no system version. - push @INC, "SL"; # FCGI won't find modules that are not properly named. Help it by inclduging SL } use CGI qw( -no_xhtml); @@ -15,10 +14,11 @@ use Encode; use English qw(-no_match_vars); use SL::Auth; use SL::LXDebug; +use SL::LxOfficeConf; use SL::Locale; use SL::Common; +use SL::Form; use SL::Helper::DateTime; -use Form; use List::Util qw(first); use File::Basename; @@ -35,6 +35,11 @@ sub new { return $self; } +sub interface_type { + my ($self) = @_; + return $self->{interface} eq 'cgi' ? 'CGI' : 'FastCGI'; +} + sub pre_request_checks { if (!$::auth->session_tables_present) { if ($::form->{script} eq 'admin.pl') { @@ -66,17 +71,7 @@ sub show_error { } sub pre_startup_setup { - eval { - package main; - require "config/lx-erp.conf"; - }; - eval { - package main; - require "config/lx-erp-local.conf"; - } if -f "config/lx-erp-local.conf"; - - read_config 'config/lx_office.conf' => %::lx_office_conf; - _decode_recursively(\%::lx_office_conf); + SL::LxOfficeConf->read; _init_environment(); eval { @@ -88,9 +83,7 @@ sub pre_startup_setup { # canonial globals. if it's not here, chances are it will get refactored someday. { no warnings 'once'; - $::menufile = "menu.ini"; $::lxdebug = LXDebug->new; - $::auth = SL::Auth->new; $::form = undef; %::myconfig = (); %::called_subs = (); # currently used for recursion detection @@ -163,6 +156,7 @@ sub handle_request { $self->unrequire_bin_mozilla; + $::auth = SL::Auth->new; $::cgi = CGI->new(''); $::locale = Locale->new($::lx_office_conf{system}->{language}); $::form = Form->new; @@ -204,11 +198,11 @@ sub handle_request { $::locale = Locale->new($::myconfig{countrycode}); - show_error('login/password_error', 'password') if SL::Auth::OK != $::auth->authenticate($::form->{login}, $::form->{password}, 0); + show_error('login/password_error', 'password') if SL::Auth::OK != $::auth->authenticate($::form->{login}, $::form->{password}); $::auth->set_session_value('login', $::form->{login}, 'password', $::form->{password}); $::auth->create_or_refresh_session; - $::auth->delete_session_value('FLASH')->save_session(); + $::auth->delete_session_value('FLASH'); delete $::form->{password}; if ($action) { @@ -238,7 +232,9 @@ sub handle_request { $::locale = undef; $::form = undef; $::myconfig = (); - Form::disconnect_standard_dbh unless $self->_interface_is_fcgi; + Form::disconnect_standard_dbh; + $::auth->expire_session_keys->save_session; + $::auth->dbdisconnect; $::lxdebug->end_request; $::lxdebug->leave_sub; @@ -322,18 +318,6 @@ sub get_standard_filehandles { return $self->{interface} =~ m/f(?:ast)cgi/i ? $self->{request}->GetHandles() : (\*STDIN, \*STDOUT, \*STDERR); } -sub _decode_recursively { - my ($obj) = @_; - - while (my ($key, $value) = each %{ $obj }) { - if (ref($value) eq 'HASH') { - _decode_recursively($value); - } else { - $obj->{$key} = decode('UTF-8', $value); - } - } -} - sub _init_environment { my %key_map = ( lib => { name => 'PERL5LIB', append_path => 1 }, path => { name => 'PATH', append_path => 1 },