]> lifelog.hopto.org Git - LifeLog.git/commitdiff
Initial multi-driver support.
authorWill Budicm <redacted>
Thu, 17 Sep 2020 00:16:11 +0000 (10:16 +1000)
committerWill Budicm <redacted>
Thu, 17 Sep 2020 00:16:11 +0000 (10:16 +1000)
htdocs/cgi-bin/stats.cgi
htdocs/cgi-bin/system/modules/Settings.pm

index 094a6593efd06bd20c37663965db2ef94a4a75f8..ab611b745eae4d5d465df8341ce8f04985f501b9 100755 (executable)
@@ -7,8 +7,10 @@ use warnings;
 #no warnings 'uninitialized';
 use Switch;
 
-#use CGI::Pretty ":standard";
+use CGI;
+use CGI::Pretty ":standard"; #Influde style subroutine for inline CSS
 use CGI::Session '-ip_match';
+use CGI::Carp qw ( fatalsToBrowser );
 use DBI;
 use DateTime;
 use DateTime::Format::SQLite;
@@ -20,7 +22,7 @@ use lib "system/modules";
 use lib $ENV{'PWD'}.'/htdocs/cgi-bin/system/modules';
 require Settings;
 
-my $cgi = CGI->new;
+my $cgi = CGI->new();
 my $session = new CGI::Session("driver:File",$cgi, {Directory=>&Settings::logPath});
 my $sid=$session->id();
 my $dbname  =$session->param('database');
@@ -28,7 +30,7 @@ my $userid  =$session->param('alias');
 my $password=$session->param('passw');
 
 if(!$userid||!$dbname){
-    if (&Settings::debug){
+    if (Settings::debug()){
         $userid ="admin";
         $dbname = "data_admin_log.db";
         $password = "admin";
@@ -41,12 +43,8 @@ if(!$userid||!$dbname){
 my $db = "";
 
 try{
-
-my $database = &Settings::logPath . $dbname;
-my @stat = stat $database;
-my $dsn  = "DBI:SQLite:dbname=$database";
-$db      = DBI->connect( $dsn, $userid, $password, { RaiseError => 1 } );
-
+$db = Settings::connectDB($userid, $password);
+my @stat = stat Settings::dbFile();
 Settings::getConfiguration($db);
 Settings::getTheme();
 
@@ -78,7 +76,7 @@ CSS
 
 
 print $cgi->header(-expires=>"+6os", -charset=>"UTF-8");
-print $cgi->start_html(-title => "Log Data Stats", -BGCOLOR=>&Settings::bgcol,
+print $cgi->start_html(-title => "Log Data Stats", -BGCOLOR=>Settings::bgcol(),
                        -script=> [{-type => 'text/javascript', -src => 'wsrc/main.js'},
                                   {-type => 'text/javascript', -src => 'wsrc/jquery.js'},
                                   {-type => 'text/javascript', -src => 'wsrc/jquery-ui.js'}],
@@ -154,7 +152,7 @@ my $tbl = qq(<table class="tbl" border="1px"><tr class="r0"><td colspan="5" styl
           <tr class="r1"><td># Sum of Expenses For Year $year</td><td>$expense</td></tr>
           <tr class="r0"><td># Sum of Income For Year $year</td><td>$income</td></tr>
           <tr class="r1"><td>Gross For Year $year</td><td>$gross</td></tr>
-          <tr class="r0"><td>$database</td><td>$dbSize</td></tr>
+          <tr class="r0"><td>$Settings::DBFILE</td><td>$dbSize</td></tr>
           <tr class="r1"><td>Public IP</td><td>$IPPublic</td></tr>
           <tr class="r0"><td>Private IP</td><td>$IPPrivate</td></tr>
 </table>);
@@ -190,9 +188,8 @@ $db->disconnect();
             my $err = $@;
             my $pwd = `pwd`;
             $pwd =~ s/\s*$//;
-            print $cgi->header,
-            "<font color=red><b>SERVER ERROR</b></font> on ".DateTime->now.
-            "<pre>".$pwd."/$0 -> &".caller." -> [$err]","\n</pre>",
+            print  "<font color=red><b>SERVER ERROR</b></font> on ".DateTime->now. "->".$err,
+            #"<pre>".$pwd."/$0 -> &".caller." -> [$err]","\n</pre>",
             $cgi->end_html;
  };
 
index 3db425f16c183dca25cdfde9fd3b14a8887d1545..477fabd8878d725c693d3702540fa0d3b18d778f 100644 (file)
@@ -36,6 +36,9 @@ our $THEME        = 'Standard';
 our $TRACK_LOGINS = 1;
 our $KEEP_EXCS    = 0;
 our $COMPRESS_ENC = 0; #HTTP Compressed encoding.
+our $DBI_DRV_PRFIX= "DBI:SQLite:dbname=";
+our $DSN;
+our $DBFILE;
 
 
 #Annons here, variables that could be overiden in  code or database, per need.
@@ -76,55 +79,91 @@ sub keepExcludes   {return $KEEP_EXCS}
 sub bgcol          {return $BGCOL}
 sub css            {return $TH_CSS}
 sub compressPage   {return $COMPRESS_ENC}
-sub debug          {my $ret=shift; if($ret){$DEBUG = $ret;}; return $DEBUG;}
+sub debug          {my $r = shift; if(!$r){$r = $DEBUG}else{$DEBUG=$r}  return $r}
+sub DBIPrefix      {my $r = shift; if(!$r){$r = $DBI_DRV_PRFIX}else{$DBI_DRV_PRFIX=$r}  return $r}
+sub dsn            {return $DSN}
+sub dbFile         {return $DBFILE}
+
+
 
 sub createCONFIGStmt {
 return qq(
     CREATE TABLE CONFIG(
-        ID TINY             PRIMARY KEY NOT NULL,
-        NAME VCHAR(16)      UNIQUE,
-        VALUE VCHAR(28),
-        DESCRIPTION VCHAR(128)
+        ID INT             PRIMARY KEY NOT NULL,
+        NAME VARCHAR(16)      UNIQUE,
+        VALUE VARCHAR(28),
+        DESCRIPTION VARCHAR(128)
     );
     CREATE INDEX idx_config_name ON CONFIG (NAME);
 )}
 sub createCATStmt {
 return qq(
     CREATE TABLE CAT(
-        ID TINY             PRIMARY KEY NOT NULL,
-        NAME                VCHAR(16),
-        DESCRIPTION         VCHAR(64)
+        ID INT             PRIMARY KEY NOT NULL,
+        NAME                VARCHAR(16),
+        DESCRIPTION         VARCHAR(64)
     );
     CREATE INDEX idx_cat_name ON CAT (NAME);
 )}
 sub createLOGStmt {
 return qq(
     CREATE TABLE LOG (
-        ID_CAT TINY        NOT NULL,
+        ID_CAT INT        NOT NULL,
         ID_RTF INTEGER     DEFAULT 0,
         DATE   DATETIME    NOT NULL,
-        LOG    VCHAR (128) NOT NULL,
+        LOG    VARCHAR (128) NOT NULL,
         AMOUNT INTEGER,
-        AFLAG TINY         DEFAULT 0,
+        AFLAG INT         DEFAULT 0,
         STICKY BOOL        DEFAULT 0
     );
 )}
+
+#pgSQL -> CREATE TABLE LOG (
+#         ID_CAT INT        NOT NULL,
+#         ID_RTF INTEGER     DEFAULT 0,
+#         DATE   TIMESTAMP    NOT NULL,
+#         LOG    VARCHAR (128) NOT NULL,
+#         AMOUNT INTEGER,
+#         AFLAG INT         DEFAULT 0,
+#         STICKY BOOL       DEFAULT FALSE 
+#     );
+
+
+
 sub createVW_LOGStmt {
 return qq(
 CREATE VIEW VW_LOG AS
     SELECT rowid as ID,*, (select count(rowid) from LOG as recount where a.rowid >= recount.rowid) as PID
-        FROM LOG as a ORDER BY Date(DATE) DESC, Time(DATE) DESC;'
+        FROM LOG as a ORDER BY Date(DATE) DESC, Time(DATE) DESC;
 )}
+
+#pgSQL -> CREATE VIEW VW_LOG AS
+    # SELECT ctid as ID,*, (select count(ctid) from LOG as recount where a.ctid >= recount.ctid) as PID
+    #     FROM LOG as a ORDER BY Date(DATE) DESC;
+
+
+
+
 sub createAUTHStmt {
 return qq(
     CREATE TABLE AUTH(
         ALIAS varchar(20)   PRIMARY KEY,
         PASSW TEXT,
         EMAIL               varchar(44),
-        ACTION TINY
+        ACTION INT
     ) WITHOUT ROWID;
     CREATE INDEX idx_auth_name_passw ON AUTH (ALIAS, PASSW);
 )}
+
+    #pgSQL -> CREATE TABLE AUTH(
+    #     ALIAS varchar(20)   PRIMARY KEY,
+    #     PASSW TEXT,
+    #     EMAIL               varchar(44),
+    #     ACTION INT
+    # );
+    # CREATE INDEX idx_auth_name_passw ON AUTH (ALIAS, PASSW);
+
+
 sub createNOTEStmt {
     return qq(CREATE TABLE NOTES (LID INTEGER PRIMARY KEY NOT NULL, DOC TEXT);)
 }
@@ -132,7 +171,7 @@ sub createLOGCATSREFStmt {
 return qq(
     CREATE TABLE LOGCATSREF (
         LID INTEGER NOT NULL,
-        CID TINY NOT NULL,
+        CID INT NOT NULL,
     FOREIGN KEY (LID) REFERENCES LOG(ID),
     FOREIGN KEY(CID) REFERENCES CAT(ID)
     );
@@ -145,25 +184,25 @@ sub getConfiguration {
            $st->execute();
         while ( my @r = $st->fetchrow_array() ){
                 switch ( $r[1] ) {
-                case "RELEASE_VER"  { $RELEASE_VER  = $r[2];}
-                case "TIME_ZONE"    { $TIME_ZONE    = $r[2];}
-                case "PRC_WIDTH"    { $PRC_WIDTH    = $r[2];}
-                case "SESSN_EXPR"   { $SESSN_EXPR   = $r[2];}
-                case "DATE_UNI"     { $DATE_UNI     = $r[2];}
-                case "LANGUAGE"     { $LANGUAGE     = $r[2];}
+                case "RELEASE_VER"  { $RELEASE_VER  = $r[2]}
+                case "TIME_ZONE"    { $TIME_ZONE    = $r[2]}
+                case "PRC_WIDTH"    { $PRC_WIDTH    = $r[2]}
+                case "SESSN_EXPR"   { $SESSN_EXPR   = $r[2]}
+                case "DATE_UNI"     { $DATE_UNI     = $r[2]}
+                case "LANGUAGE"     { $LANGUAGE     = $r[2]}
                 case "LOG_PATH"     {} #ommited and code static can't change for now.
-                case "IMG_W_H"      { $IMG_W_H      = $r[2];}
-                case "REC_LIMIT"    { $REC_LIMIT    = $r[2];}
-                case "AUTO_WRD_LMT" { $AUTO_WRD_LMT = $r[2];}
-                case "VIEW_ALL_LMT" { $VIEW_ALL_LMT = $r[2];}
-                case "FRAME_SIZE"   { $FRAME_SIZE   = $r[2];}
-                case "RTF_SIZE"     { $RTF_SIZE     = $r[2];}
-                case "THEME"        { $THEME        = $r[2];}
-                case "DEBUG"        { $DEBUG        = $r[2];}
-                case "KEEP_EXCS"    { $KEEP_EXCS    = $r[2];}
-                case "TRACK_LOGINS" { $TRACK_LOGINS = $r[2];}
-                case "COMPRESS_ENC" { $COMPRESS_ENC = $r[2];}
-                else                { $anons{$r[1]} = $r[2];}
+                case "IMG_W_H"      { $IMG_W_H      = $r[2]}
+                case "REC_LIMIT"    { $REC_LIMIT    = $r[2]}
+                case "AUTO_WRD_LMT" { $AUTO_WRD_LMT = $r[2]}
+                case "VIEW_ALL_LMT" { $VIEW_ALL_LMT = $r[2]}
+                case "FRAME_SIZE"   { $FRAME_SIZE   = $r[2]}
+                case "RTF_SIZE"     { $RTF_SIZE     = $r[2]}
+                case "THEME"        { $THEME        = $r[2]}
+                case "DEBUG"        { $DEBUG        = $r[2]}
+                case "KEEP_EXCS"    { $KEEP_EXCS    = $r[2]}
+                case "TRACK_LOGINS" { $TRACK_LOGINS = $r[2]}
+                case "COMPRESS_ENC" { $COMPRESS_ENC = $r[2]}                
+                else                { $anons{$r[1]} = $r[2]}
                 }
         }
         #Anons are murky grounds. -- @bud
@@ -398,5 +437,13 @@ sub configProperty {
     }
 }
 
+sub connectDB {
+    my ($a,$p) = @_;
+    $DBFILE = $LOG_PATH.'data_'.$a.'_log.db';
+    $DSN= $DBI_DRV_PRFIX.$DBFILE;  
+    return DBI->connect($DSN, $a, $p, { RaiseError => 1, PrintError => 0})
+                       or LifeLogException->throw(error=>"<p>Error->"& $DBI::errstri &"</p>$!",  show_trace=>1);
+}
+
 
 1;
\ No newline at end of file