From 18c672de54acf336cce0c70533869ddb3c479d64 Mon Sep 17 00:00:00 2001 From: Metabox Date: Tue, 23 Apr 2019 03:15:48 +1000 Subject: [PATCH] Uodated to use sessions and system settings. --- htdocs/cgi-bin/config.cgi | 13 +++++- htdocs/cgi-bin/remove.cgi | 98 ++++++++++++++++++++++++++++----------- 2 files changed, 81 insertions(+), 30 deletions(-) diff --git a/htdocs/cgi-bin/config.cgi b/htdocs/cgi-bin/config.cgi index 8742769..1a42708 100755 --- a/htdocs/cgi-bin/config.cgi +++ b/htdocs/cgi-bin/config.cgi @@ -119,10 +119,19 @@ $dbs = $db->prepare( $stm ); $rv = $dbs->execute() or die or die "

Error->"& $DBI::errstri &"

"; while(my @row = $dbs->fetchrow_array()) { + my $n = $row[0]; + my $v = $row[1]; + if($n eq "TIME_ZONE"){ + $n = ''.$n.''; + $v = ''; + + }elsif($n ne "RELEASE_VER"){ + $v = ''; + } $tbl = $tbl. ' - '.$row[0].' - + '.$n.' + '.$v.' '; } diff --git a/htdocs/cgi-bin/remove.cgi b/htdocs/cgi-bin/remove.cgi index aafa7e2..3920d92 100755 --- a/htdocs/cgi-bin/remove.cgi +++ b/htdocs/cgi-bin/remove.cgi @@ -6,25 +6,51 @@ use strict; use warnings; +use Try::Tiny; +use Switch; + use CGI; +use CGI::Session '-ip_match'; use DBI; use DateTime qw(); use DateTime::Format::SQLite; use DateTime::Format::Human::Duration; -my $q = CGI->new; -my $driver = "SQLite"; -my $database = "../../dbLifeLog/data_log.db"; -my $dsn = "DBI:$driver:dbname=$database"; -my $userid = ""; -my $password = ""; -my $db = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) - or die "

Error->"& $DBI::errstri &"

"; +#DEFAULT SETTINGS HERE! +our $REC_LIMIT = 25; +our $TIME_ZONE = 'Australia/Sydney'; +our $PRC_WIDTH = '60'; +our $LOG_PATH = '../../dbLifeLog/'; +our $SESSN_EXPR = '+2m'; +our $RELEASE_VER = '1.3'; +#END OF SETTINGS + + +##################### + &getConfiguration; +##################### + +my $cgi = CGI->new; +my $session = new CGI::Session("driver:File",$cgi, {Directory=>$LOG_PATH}); +my $sid=$session->id(); +my $dbname =$session->param('database'); +my $userid =$session->param('alias'); +my $password=$session->param('passw'); + +if(!$userid||!$dbname){ + print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid"); + exit; +} + +my $database = '../../dbLifeLog/'.$dbname; +my $dsn= "DBI:SQLite:dbname=$database"; +my $db = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die "

Error->"& $DBI::errstri &"

"; + my $today = DateTime->now; - $today->set_time_zone( 'Australia/Sydney' ); + $today->set_time_zone( $TIME_ZONE ); my $stm; my $stmtCat = "SELECT * FROM CAT;"; @@ -34,13 +60,6 @@ my $rv = $st->execute() or die or die "

Error->"& $DBI::errstri &"

"; my %hshCats; my $tbl_rc =0; - -#SETTINGS HERE! -our $REC_LIMIT = 25; -our $TIME_ZONE = 'Australia/Sydney'; -our $PRC_WIDTH = '60'; -#END OF SETTINGS - while(my @row = $st->fetchrow_array()) { $hshCats{$row[0]} = $row[1]; } @@ -53,19 +72,19 @@ my $tbl = '
DateTimeLogCategory'; -my $datediff = $q->param("datediff"); -my $confirmed = $q->param('confirmed'); +my $datediff = $cgi->param("datediff"); +my $confirmed = $cgi->param('confirmed'); if ($datediff){ - print $q->header(-expires=>"+6os"); - print $q->start_html(-title => "Date Difference Report", + print $cgi->header(-expires=>"+6os"); + print $cgi->start_html(-title => "Date Difference Report", -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, -style =>{-type => 'text/css', -src => 'wsrc/main.css'} ); &DisplayDateDiffs; }elsif (!$confirmed){ - print $q->header(-expires=>"+6os"); - print $q->start_html(-title => "Personal Log Record Removal", + print $cgi->header(-expires=>"+6os"); + print $cgi->start_html(-title => "Personal Log Record Removal", -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, -style =>{-type => 'text/css', -src => 'wsrc/main.css'} @@ -77,7 +96,7 @@ if ($datediff){ } -print $q->end_html; +print $cgi->end_html; $db->disconnect(); exit; @@ -86,7 +105,7 @@ sub DisplayDateDiffs{ * DATE DIFFERENCES *'; $stm = 'SELECT DATE, LOG FROM LOG WHERE '; -my @prms = $q->param('chk'); +my @prms = $cgi->param('chk'); foreach (@prms){ $stm .= "rowid = '" . $_ ."'"; @@ -133,7 +152,7 @@ sub ConfirmedDelition{ my $stmS = 'DELETE FROM LOG WHERE '; - foreach my $prm ($q->param('chk')){ + foreach my $prm ($cgi->param('chk')){ $stm = $stmS . "rowid = '" . $prm ."';"; $st = $db->prepare( $stm ); $rv = $st->execute() or die or die "

Error->"& $DBI::errstri &"

"; @@ -145,7 +164,7 @@ sub ConfirmedDelition{ $st->finish; - print $q->redirect('main.cgi'); + print $cgi->redirect('main.cgi'); } @@ -153,7 +172,7 @@ sub NotConfirmed{ #Get prms and build confirm table and check my $stm = $stmS ." "; - foreach my $prm ($q->param('chk')){ + foreach my $prm ($cgi->param('chk')){ $stm = $stm . "rowid = '" . $prm . "' OR "; } #rid=0 hack! ;) @@ -170,7 +189,7 @@ if($rv < 0) { my $r_cnt = 0; while(my @row = $st->fetchrow_array()) { - my $ct = $hshCats{@row[1]}; + my $ct = $hshCats{$row[1]}; my $dt = DateTime::Format::SQLite->parse_datetime( $row[2] ); $tbl = $tbl . ''. $dt->ymd . "" . @@ -200,3 +219,26 @@ print '
' . $tbl .'
'; $st->finish; } +sub getConfiguration{ + try{ + my $dbs = $db->prepare("SELECT * FROM CONFIG;"); + $dbs->execute(); + + while (my @r=$dbs->fetchrow_array()){ + + switch ($r[1]) { + + case "REC_LIMIT" {$REC_LIMIT=$r[2]} + case "TIME_ZONE" {$TIME_ZONE=$r[2]} + case "PRC_WIDTH" {$PRC_WIDTH=$r[2]} + case "SESSN_EXPR" {$SESSN_EXPR=$r[2]} + else {print "Unknow variable setting: ".$r[1]. " == ". $r[2]} + + } + + } + } + catch{ + print "SERVER ERROR:".$_; + } +} \ No newline at end of file -- 2.34.1