1###############################################################################
2# Sessions.pm                                                                 #
3# $Date: 12.02.14 $                                                           #
4###############################################################################
5# YaBB: Yet another Bulletin Board                                            #
6# Open-Source Community Software for Webmasters                               #
7# Version:        YaBB 2.6.11                                                 #
8# Packaged:       December 2, 2014                                            #
9# Distributed by: http://www.yabbforum.com                                    #
10# =========================================================================== #
11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved.     #
12# Software by:  The YaBB Development Team                                     #
13#               with assistance from the YaBB community.                      #
14###############################################################################
15our $VERSION = '2.6.11';
16
17$sessionspmver = 'YaBB 2.6.11 $Revision: 1611 $';
18if ( $action eq 'detailedversion' ) { return 1; }
19
20LoadLanguage('Sessions');
21get_micon();
22get_template('Other');
23
24sub SessionReval {
25    if (   ${ $uid . $username }{'sesquest'} eq q{}
26        || ${ $uid . $username }{'sesquest'} eq 'password' )
27    {
28        $sesremark =
29          qq~<br /><br /><fieldset><i>$session_txt{'10'}</i></fieldset>~;
30        $sesquestion = 'password';
31        $sestype     = 'password';
32    }
33    else {
34        $sesremark   = q{};
35        $sesquestion = "${$uid.$username}{'sesquest'}";
36        $sestype     = 'text';
37    }
38
39    $yymain .= $my_sessions;
40    $yymain =~ s/{yabb sesremark}/$sesremark/sm;
41    $yymain =~ s/{yabb sestype}/$sestype/sm;
42    $yymain =~ s/{yabb sesstext3}/$session_txt{'3'}/sm;
43    $yymain =~ s/{yabb sesstext4}/$session_txt{'4'}/sm;
44    $yymain =~ s/{yabb sesquestion}/$sesquest_txt{$sesquestion}/sm;
45    $yymain =~ s/{yabb sesredir}/$INFO{'sesredir'}/sm;
46    $yytitle   = "$img_txt{'34a'}";
47    template();
48    return;
49}
50
51sub SessionReval2 {
52#    require Sources::Decoder;
53    $FORM{'cookielength'}   = 360;
54    $FORM{'cookieneverexp'} = 1;
55    if ( $FORM{'sesanswer'} eq q{} ) { fatal_error('no_secret_answer'); }
56    if (   ${ $uid . $username }{'sesquest'} eq q{}
57        || ${ $uid . $username }{'sesquest'} eq 'password' )
58    {
59        $question = ${ $uid . $username }{'password'};
60        $answer   = encode_password("$FORM{'sesanswer'}");
61        chomp $answer;
62    }
63    else {
64        $question = encode_password( ${ $uid . $username }{'sesanswer'} );
65        $answer =   encode_password( $FORM{'sesanswer'} );
66
67        #       bug fix courtesy Derek Barnstorm;
68        chomp $answer;
69    }
70    if ( $answer ne $question ) {
71        UpdateCookie('delete');
72
73        $username = 'Guest';
74        $iamguest = '1';
75        $iamadmin = q{};
76        $iamgmod  = q{};
77        $password = q{};
78        $yyim     = q{};
79        local $ENV{'HTTP_COOKIE'} = q{};
80        $yyuname     = q{};
81        $formsession = cloak("$mbname$username");
82
83        require Sources::LogInOut;
84        $sharedLogin_text = $session_txt{'6'};
85        $action           = 'login';
86        Login();
87    }
88    else {
89        $iamadmin =
90          ${ $uid . $username }{'position'} eq 'Administrator' ? 1 : 0;
91        $iamgmod =
92          ${ $uid . $username }{'position'} eq 'Global Moderator' ? 1 : 0;
93        $sessionvalid = 1;
94    }
95    if ( $FORM{'cookielength'} < 1 || $FORM{'cookielength'} > 9999 ) {
96        $FORM{'cookielength'} = $Cookie_Length;
97    }
98    if ( !$FORM{'cookieneverexp'} ) { $ck{'len'} = "\+$FORM{'cookielength'}m"; }
99    else { $ck{'len'} = 'Sunday, 17-Jan-2038 00:00:00 GMT'; }
100    ${ $uid . $username }{'session'} = encode_password($user_ip);
101    chomp ${ $uid . $username }{'session'};
102    UserAccount( $username, 'update' );
103    UpdateCookie(
104        'write', $username,
105        ${ $uid . $username }{'password'},
106        ${ $uid . $username }{'session'},
107        q{/}, $ck{'len'}
108    );
109
110    $redir = q{};
111    if ( $FORM{'sredir'} ) {
112        my $tmpredir = $FORM{'sredir'};
113        $tmpredir =~ s/\~/\=/gxsm;
114        $tmpredir =~ s/x3B/;/gxsm;
115        $tmpredir =~ s/search2/search/gxsm;
116        $redir = qq~?$tmpredir~;
117    }
118    $yySetLocation = qq~$scripturl$redir~;
119    redirectexit();
120    return;
121}
122
1231;
124