View | Details | Raw Unified | Return to bug 17427
Collapse All | Expand All

(-)a/C4/Auth.pm (-22 / +26 lines)
Lines 23-29 use Digest::MD5 qw(md5_base64); Link Here
23
use File::Spec;
23
use File::Spec;
24
use JSON qw/encode_json/;
24
use JSON qw/encode_json/;
25
use URI::Escape;
25
use URI::Escape;
26
use CGI::Session;
26
use Data::Session;
27
27
28
require Exporter;
28
require Exporter;
29
use C4::Context;
29
use C4::Context;
Lines 1088-1094 sub checkauth { Link Here
1088
                    $session->param( 'branchname',   $branchname );
1088
                    $session->param( 'branchname',   $branchname );
1089
                    $session->param( 'flags',        $userflags );
1089
                    $session->param( 'flags',        $userflags );
1090
                    $session->param( 'emailaddress', $emailaddress );
1090
                    $session->param( 'emailaddress', $emailaddress );
1091
                    $session->param( 'ip',           $session->remote_addr() );
1091
                    $session->param( 'ip',           $ENV{REMOTE_ADDR} );
1092
                    $session->param( 'lasttime',     time() );
1092
                    $session->param( 'lasttime',     time() );
1093
                    $session->param( 'shibboleth',   $shibSuccess );
1093
                    $session->param( 'shibboleth',   $shibSuccess );
1094
                    $debug and printf STDERR "AUTH_4: (%s)\t%s %s - %s\n", map { $session->param($_) } qw(cardnumber firstname surname branch);
1094
                    $debug and printf STDERR "AUTH_4: (%s)\t%s %s - %s\n", map { $session->param($_) } qw(cardnumber firstname surname branch);
Lines 1106-1112 sub checkauth { Link Here
1106
                    $session->param( 'branchname',   'NO_LIBRARY_SET' );
1106
                    $session->param( 'branchname',   'NO_LIBRARY_SET' );
1107
                    $session->param( 'flags',        1 );
1107
                    $session->param( 'flags',        1 );
1108
                    $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1108
                    $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1109
                    $session->param( 'ip',           $session->remote_addr() );
1109
                    $session->param( 'ip',           $ENV{REMOTE_ADDR} );
1110
                    $session->param( 'lasttime',     time() );
1110
                    $session->param( 'lasttime',     time() );
1111
                }
1111
                }
1112
                C4::Context->set_userenv(
1112
                C4::Context->set_userenv(
Lines 1128-1134 sub checkauth { Link Here
1128
                    C4::Context->_unset_userenv($sessionID);
1128
                    C4::Context->_unset_userenv($sessionID);
1129
                }
1129
                }
1130
                $session->param( 'lasttime', time() );
1130
                $session->param( 'lasttime', time() );
1131
                $session->param( 'ip',       $session->remote_addr() );
1131
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1132
                $session->param( 'sessiontype', 'anon' );
1132
                $session->param( 'sessiontype', 'anon' );
1133
            }
1133
            }
1134
        }    # END if ( $userid    = $query->param('userid') )
1134
        }    # END if ( $userid    = $query->param('userid') )
Lines 1139-1145 sub checkauth { Link Here
1139
            $debug and warn "Initiating an anonymous session...";
1139
            $debug and warn "Initiating an anonymous session...";
1140
1140
1141
            # setting a couple of other session vars...
1141
            # setting a couple of other session vars...
1142
            $session->param( 'ip',          $session->remote_addr() );
1142
            $session->param( 'ip', $ENV{REMOTE_ADDR} );
1143
            $session->param( 'lasttime',    time() );
1143
            $session->param( 'lasttime',    time() );
1144
            $session->param( 'sessiontype', 'anon' );
1144
            $session->param( 'sessiontype', 'anon' );
1145
        }
1145
        }
Lines 1532-1538 sub check_api_auth { Link Here
1532
                $session->param( 'branchname',   $branchname );
1532
                $session->param( 'branchname',   $branchname );
1533
                $session->param( 'flags',        $userflags );
1533
                $session->param( 'flags',        $userflags );
1534
                $session->param( 'emailaddress', $emailaddress );
1534
                $session->param( 'emailaddress', $emailaddress );
1535
                $session->param( 'ip',           $session->remote_addr() );
1535
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1536
                $session->param( 'lasttime',     time() );
1536
                $session->param( 'lasttime',     time() );
1537
            } elsif ( $return == 2 ) {
1537
            } elsif ( $return == 2 ) {
1538
1538
Lines 1546-1552 sub check_api_auth { Link Here
1546
                $session->param( 'branchname',   'NO_LIBRARY_SET' );
1546
                $session->param( 'branchname',   'NO_LIBRARY_SET' );
1547
                $session->param( 'flags',        1 );
1547
                $session->param( 'flags',        1 );
1548
                $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1548
                $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1549
                $session->param( 'ip',           $session->remote_addr() );
1549
                $session->param( 'ip', $ENV{REMOTE_ADDR} );
1550
                $session->param( 'lasttime',     time() );
1550
                $session->param( 'lasttime',     time() );
1551
            }
1551
            }
1552
            C4::Context->set_userenv(
1552
            C4::Context->set_userenv(
Lines 1682-1691 sub check_cookie_auth { Link Here
1682
1682
1683
=head2 get_session
1683
=head2 get_session
1684
1684
1685
  use CGI::Session;
1686
  my $session = get_session($sessionID);
1685
  my $session = get_session($sessionID);
1687
1686
1688
Given a session ID, retrieve the CGI::Session object used to store
1687
Given a session ID, retrieve the Data::Session object used to store
1689
the session's state.  The session object can be used to store
1688
the session's state.  The session object can be used to store
1690
data that needs to be accessed by different scripts during a
1689
data that needs to be accessed by different scripts during a
1691
user's session.
1690
user's session.
Lines 1701-1720 sub get_session { Link Here
1701
    my $dbh            = C4::Context->dbh;
1700
    my $dbh            = C4::Context->dbh;
1702
    my $session;
1701
    my $session;
1703
    if ( $storage_method eq 'mysql' ) {
1702
    if ( $storage_method eq 'mysql' ) {
1704
        $session = new CGI::Session( "driver:MySQL;serializer:yaml;id:md5", $sessionID, { Handle => $dbh } );
1703
        # Note that the doc is wrong, type is required, if not provided it default to File
1705
    }
1704
        $session = Data::Session->new( dbh => $dbh, type => 'driver:mysql;id:MD5;serialize:YAML' ) or die $Data::Session::errstr;
1706
    elsif ( $storage_method eq 'Pg' ) {
1705
    } elsif ( $storage_method eq 'Pg' ) {
1707
        $session = new CGI::Session( "driver:PostgreSQL;serializer:yaml;id:md5", $sessionID, { Handle => $dbh } );
1706
        warn "The system preference SessionStorage is set to 'Pg' but this is not supported yet!";
1708
    }
1707
    } elsif ( $storage_method eq 'memcached' and my $memcached = Koha::Caches->get_instance->memcached_cache ) {
1709
    elsif ( $storage_method eq 'memcached' && Koha::Caches->get_instance->memcached_cache ) {
1708
        $session = Data::Session->new(
1710
        my $memcached = Koha::Caches->get_instance()->memcached_cache;
1709
            type  => 'driver:Memcached;id:SHA1;serialize:DataDumper',
1711
        $session = new CGI::Session( "driver:memcached;serializer:yaml;id:md5", $sessionID, { Memcached => $memcached } );
1710
            cache => $memcached,
1711
        );
1712
    } elsif ( $storage_method ne 'tmp' ) {
1713
        warn "The system preference SessionStorage is set to an invalid value '$storage_method'";
1712
    }
1714
    }
1713
    else {
1715
    if ( $storage_method eq 'tmp' or not $session ) {
1714
        # catch all defaults to tmp should work on all systems
1716
        if ( $storage_method ne 'tmp' ) {
1715
        my $dir = File::Spec->tmpdir;
1717
            warn "The session has not been correctly retrieved, defaulting to temporary storage: " . $Data::Session::errstr;
1716
        my $instance = C4::Context->config( 'database' ); #actually for packages not exactly the instance name, but generally safer to leave it as it is
1718
        }
1717
        $session = new CGI::Session( "driver:File;serializer:yaml;id:md5", $sessionID, { Directory => "$dir/cgisess_$instance" } );
1719
        my $dir      = '/tmp/';                            #File::Spec->tmpdir;
1720
        my $instance = C4::Context->config('database');    #actually for packages not exactly the instance name, but generally safer to leave it as it is
1721
        $session = Data::Session->new( type => 'driver:File;id:MD5;serialize:YAML', directory => "$dir/cgisess_$instance" ) or die $Data::Session::errstr;
1718
    }
1722
    }
1719
    return $session;
1723
    return $session;
1720
}
1724
}
(-)a/C4/Context.pm (-3 / +1 lines)
Lines 858-866 set_userenv is called in Auth.pm Link Here
858
#'
858
#'
859
sub set_userenv {
859
sub set_userenv {
860
    shift @_;
860
    shift @_;
861
    my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $shibboleth)=
861
    my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $shibboleth) = @_;
862
    map { Encode::is_utf8( $_ ) ? $_ : Encode::decode('UTF-8', $_) } # CGI::Session doesn't handle utf-8, so we decode it here
863
    @_;
864
    my $var=$context->{"activeuser"} || '';
862
    my $var=$context->{"activeuser"} || '';
865
    my $cell = {
863
    my $cell = {
866
        "number"     => $usernum,
864
        "number"     => $usernum,
(-)a/C4/InstallAuth.pm (-7 / +12 lines)
Lines 20-32 package C4::InstallAuth; Link Here
20
use strict;
20
use strict;
21
#use warnings; FIXME - Bug 2505
21
#use warnings; FIXME - Bug 2505
22
use Digest::MD5 qw(md5_base64);
22
use Digest::MD5 qw(md5_base64);
23
use Data::Session;
24
use File::Spec;
23
25
24
require Exporter;
26
require Exporter;
25
use C4::Context;
27
use C4::Context;
26
use C4::Output;
28
use C4::Output;
27
use C4::Templates;
29
use C4::Templates;
28
use C4::Koha;
30
use C4::Koha;
29
use CGI::Session;
30
31
31
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
32
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
32
33
Lines 239-249 sub checkauth { Link Here
239
    my %info;
240
    my %info;
240
    my ( $userid, $cookie, $sessionID, $flags, $envcookie );
241
    my ( $userid, $cookie, $sessionID, $flags, $envcookie );
241
    my $logout = $query->param('logout.x');
242
    my $logout = $query->param('logout.x');
243
    my $dir = File::Spec->tmpdir;
242
    if ( $sessionID = $query->cookie("CGISESSID") ) {
244
    if ( $sessionID = $query->cookie("CGISESSID") ) {
243
        C4::Context->_new_userenv($sessionID);
245
        C4::Context->_new_userenv($sessionID);
244
        my $session =
246
        my $session = Data::Session->new(
245
          new CGI::Session( "driver:File;serializer:yaml", $sessionID,
247
            type => 'driver:File;id:MD5;serialize:YAML',
246
            { Directory => '/tmp' } );
248
            directory => $dir
249
        ) or die $Data::Session::errstr;
247
        if ( $session->param('cardnumber') ) {
250
        if ( $session->param('cardnumber') ) {
248
            C4::Context->set_userenv(
251
            C4::Context->set_userenv(
249
                $session->param('number'),
252
                $session->param('number'),
Lines 282-289 sub checkauth { Link Here
282
        }
285
        }
283
    }
286
    }
284
    unless ($userid) {
287
    unless ($userid) {
285
        my $session =
288
        my $session = Data::Session->new(
286
          new CGI::Session( "driver:File;serializer:yaml", undef, { Directory => '/tmp' } );
289
            type => 'driver:File;id:MD5;serialize:YAML',
290
            directory => $dir
291
        ) or die $Data::Session::errstr;
287
        $sessionID = $session->id;
292
        $sessionID = $session->id;
288
        $userid    = $query->param('userid');
293
        $userid    = $query->param('userid');
289
        C4::Context->_new_userenv($sessionID);
294
        C4::Context->_new_userenv($sessionID);
Lines 324-330 sub checkauth { Link Here
324
                $session->param( 'flags',      1 );
329
                $session->param( 'flags',      1 );
325
                $session->param( 'emailaddress',
330
                $session->param( 'emailaddress',
326
                    C4::Context->preference('KohaAdminEmailAddress') );
331
                    C4::Context->preference('KohaAdminEmailAddress') );
327
                $session->param( 'ip',       $session->remote_addr() );
332
                $session->param( 'ip',         $ENV{REMOTE_ADDR} );
328
                $session->param( 'lasttime', time() );
333
                $session->param( 'lasttime', time() );
329
                $userid = C4::Context->config('user');
334
                $userid = C4::Context->config('user');
330
            }
335
            }
(-)a/C4/Installer/PerlDependencies.pm (-15 / +15 lines)
Lines 322-332 our $PERL_DEPS = { Link Here
322
        'required' => '1',
322
        'required' => '1',
323
        'min_ver'  => '5.43'
323
        'min_ver'  => '5.43'
324
    },
324
    },
325
    'CGI::Session::Serialize::yaml' => {
326
        'usage'    => 'Core',
327
        'required' => '1',
328
        'min_ver'  => '4.2'
329
    },
330
    'CGI::Carp' => {
325
    'CGI::Carp' => {
331
        'usage'    => 'Core',
326
        'usage'    => 'Core',
332
        'required' => '1',
327
        'required' => '1',
Lines 432-447 our $PERL_DEPS = { Link Here
432
        'required' => '1',
427
        'required' => '1',
433
        'min_ver'  => '2'
428
        'min_ver'  => '2'
434
    },
429
    },
435
    'CGI::Session' => {
436
        'usage'    => 'Core',
437
        'required' => '1',
438
        'min_ver'  => '4.2'
439
    },
440
    'CGI::Session::Driver::memcached' => {
441
        'usage'    => 'Memcached Feature (Experimental)',
442
        'required' => '0',
443
        'min_ver'  => '0.04',
444
    },
445
    'POSIX' => {
430
    'POSIX' => {
446
        'usage'    => 'Core',
431
        'usage'    => 'Core',
447
        'required' => '1',
432
        'required' => '1',
Lines 852-857 our $PERL_DEPS = { Link Here
852
        required => 1,
837
        required => 1,
853
        min_ver => '0.28',
838
        min_ver => '0.28',
854
    },
839
    },
840
    'Data::Session' => {
841
        usage => 'core',
842
        required => 1,
843
        min_version => '1.17',
844
    },
845
    'Data::Session::Driver::Memcached' => {
846
        usage => 'core',
847
        required => 1,
848
        min_version => '1.17',
849
    },
850
    'Data::Session::Driver::mysql' => {
851
        usage => 'core',
852
        required => 1,
853
        min_version => '1.17',
854
    },
855
};
855
};
856
856
857
1;
857
1;
(-)a/circ/circulation.pl (-1 / +1 lines)
Lines 40-46 use MARC::Record; Link Here
40
use C4::Reserves;
40
use C4::Reserves;
41
use Koha::Holds;
41
use Koha::Holds;
42
use C4::Context;
42
use C4::Context;
43
use CGI::Session;
43
use Data::Session;
44
use C4::Members::Attributes qw(GetBorrowerAttributes);
44
use C4::Members::Attributes qw(GetBorrowerAttributes);
45
use Koha::AuthorisedValues;
45
use Koha::AuthorisedValues;
46
use Koha::Patron;
46
use Koha::Patron;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref (-1 lines)
Lines 94-100 Administration: Link Here
94
              default: mysql
94
              default: mysql
95
              choices:
95
              choices:
96
                  mysql: MySQL database
96
                  mysql: MySQL database
97
                  Pg: PostgreSQL database (not supported)
98
                  tmp: Temporary files
97
                  tmp: Temporary files
99
                  memcached: Memcached server
98
                  memcached: Memcached server
100
        -
99
        -
(-)a/members/routing-lists.pl (-1 lines)
Lines 27-33 use C4::Members::Attributes qw(GetBorrowerAttributes); Link Here
27
use C4::Context;
27
use C4::Context;
28
use C4::Serials;
28
use C4::Serials;
29
use Koha::Patron::Images;
29
use Koha::Patron::Images;
30
use CGI::Session;
31
30
32
my $query = new CGI;
31
my $query = new CGI;
33
32
(-)a/tools/background-job-progress.pl (-2 lines)
Lines 23-29 use strict; Link Here
23
# standard or CPAN modules used
23
# standard or CPAN modules used
24
use IO::File;
24
use IO::File;
25
use CGI qw ( -utf8 );
25
use CGI qw ( -utf8 );
26
use CGI::Session;
27
use C4::Context;
26
use C4::Context;
28
use C4::Auth qw/check_cookie_auth/;
27
use C4::Auth qw/check_cookie_auth/;
29
use C4::BackgroundJob;
28
use C4::BackgroundJob;
30
- 

Return to bug 17427