base
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
package TTXSession;
|
||||
#
|
||||
# This module is a part of Trouble Ticket Express package
|
||||
# http://www.troubleticketexpress.com
|
||||
#
|
||||
# COPYRIGHT: 2002-2005, United Web Coders
|
||||
# http://www.unitedwebcoders.com
|
||||
#
|
||||
# $Revision: 182 $
|
||||
# $Date: 2006-06-07 02:46:21 -0400 (Wed, 07 Jun 2006) $
|
||||
#
|
||||
|
||||
$TTXSession::VERSION='2.22';
|
||||
BEGIN {
|
||||
$TTXSession::REVISION = '$Revision: 182 $';
|
||||
if ($TTXSession::REVISION =~ /(\d+)/) {
|
||||
$TTXSession::REVISION = $1;
|
||||
}
|
||||
};
|
||||
|
||||
use strict;
|
||||
use TTXConfig;
|
||||
use TTXData;
|
||||
use vars qw(@ISA);
|
||||
@ISA = qw(TTXConfig);
|
||||
|
||||
my %errmsgs = (
|
||||
NOFILENAME => 'Missing file name',
|
||||
NOFILE => 'File does not exist',
|
||||
OPENERR => 'Error reading file',
|
||||
WRERR => 'Error writing file'
|
||||
);
|
||||
|
||||
# ========================================================================== new
|
||||
|
||||
sub new {
|
||||
my $class = $_[0];
|
||||
my $self = $class->SUPER::new();
|
||||
if ($_[1] ne undef && $self->load(TTXData::get('CONFIG')->get('basedir')."/sid/$_[1].cgi")) {
|
||||
$self->{_SID} = $_[1];
|
||||
}
|
||||
return $self;
|
||||
}
|
||||
|
||||
# ====================================================================== refresh
|
||||
|
||||
sub refresh {
|
||||
my $self = shift;
|
||||
my $exptime = TTXData::get('CONFIG')->get('exptime');
|
||||
$exptime = 3600 * 10 if !$exptime;
|
||||
$self->{expires} = time() + $exptime;
|
||||
$self->save();
|
||||
}
|
||||
# ====================================================================== expired
|
||||
|
||||
sub expired {
|
||||
my $self = shift;
|
||||
return 1 if $self->{login} ne undef && $self->{expires} < time();
|
||||
return 0;
|
||||
}
|
||||
# ======================================================================= logout
|
||||
|
||||
sub logout {
|
||||
my $self = shift;
|
||||
if ($self->{login} ne undef) {
|
||||
my $fn = TTXData::get('CONFIG')->get('basedir')."/sid/".$self->sid().".cgi";
|
||||
$fn =~ /(.*)/; $fn = $1;
|
||||
unlink($fn);
|
||||
}
|
||||
}
|
||||
# ========================================================================== sid
|
||||
|
||||
sub sid {
|
||||
my $self = shift;
|
||||
return $self->{_SID};
|
||||
}
|
||||
# ==================================================================== errortext
|
||||
|
||||
sub errortext {
|
||||
my $self = shift;
|
||||
return $errmsgs{$self->{_ERROR_CODE}}." [session]";
|
||||
}
|
||||
# ====================================================================== cleanup
|
||||
|
||||
sub cleanup {
|
||||
if (opendir(DIR, TTXData::get('CONFIG')->get('basedir')."/sid")) {
|
||||
my @dirlist = readdir(DIR);
|
||||
closedir(DIR);
|
||||
my $killtm = time() - 3600 * 24 * 7; # one week ago
|
||||
foreach my $file (@dirlist) { # quick and dirty cleanup
|
||||
next if $file !~ /^\d+Z\d+\.cgi$/;
|
||||
my ($tm) = split(/Z/, $file);
|
||||
if ($tm < $killtm) {
|
||||
$file =~ /(.*)/; $file = $1;
|
||||
unlink TTXData::get('CONFIG')->get('basedir')."/sid/$file";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# ======================================================================== login
|
||||
|
||||
sub login {
|
||||
my $self = shift;
|
||||
my $uid = shift;
|
||||
if ($uid eq undef) {
|
||||
warn "uid eq undef";
|
||||
return 0;
|
||||
}
|
||||
cleanup();
|
||||
my $sid = time()."Z".$$.int(rand(900000) + 100000);
|
||||
$self->file(TTXData::get('CONFIG')->get('basedir')."/sid/$sid.cgi");
|
||||
$self->set('login', $uid);
|
||||
my $exptime = TTXData::get('CONFIG')->get('exptime');
|
||||
$exptime = 3600 * 10 if !$exptime;
|
||||
$self->set('expires', time() + $exptime);
|
||||
if ($self->save()) {
|
||||
$self->{_SID} = $sid;
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
# ====================================================================== qexpand
|
||||
|
||||
sub qexpand {
|
||||
my ($self, $query, $cmd) = @_;
|
||||
my @vars = $self->vars();
|
||||
foreach my $id (@vars) {
|
||||
next if $id !~ /^$cmd\.(\w+)$/;
|
||||
my $var = $1;
|
||||
if ($query->param($var) eq undef && $self->get("$id") ne undef) {
|
||||
$query->param(-name => $var, -value => $self->get("$id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# ======================================================================== qsave
|
||||
|
||||
sub qsave {
|
||||
my ($self, $query, $cmd, $list) = @_;
|
||||
my $dosave = 0;
|
||||
foreach my $id (@{$list}) {
|
||||
if ($self->get("$cmd.$id") ne $query->param($id)) {
|
||||
$self->set("$cmd.$id", $query->param($id));
|
||||
$dosave = 1;
|
||||
}
|
||||
}
|
||||
if ($dosave) {
|
||||
$self->save() ;
|
||||
if (TTXData::get('_USECACHE')) {
|
||||
eval "use TTXCache";
|
||||
TTXCache::purge() if $@ eq undef;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user