]> lifelog.hopto.org Git - LifeLog.git/commitdiff
DBI_LOG_VAR_SIZE, further PG. dev.
authorWill Budicm <redacted>
Thu, 10 Dec 2020 13:02:26 +0000 (00:02 +1100)
committerWill Budicm <redacted>
Thu, 10 Dec 2020 13:02:26 +0000 (00:02 +1100)
htdocs/cgi-bin/images/WelloffHighlevelAlpinegoat.webp [new file with mode: 0644]
htdocs/cgi-bin/system/modules/Settings.pm

diff --git a/htdocs/cgi-bin/images/WelloffHighlevelAlpinegoat.webp b/htdocs/cgi-bin/images/WelloffHighlevelAlpinegoat.webp
new file mode 100644 (file)
index 0000000..bb428f0
Binary files /dev/null and b/htdocs/cgi-bin/images/WelloffHighlevelAlpinegoat.webp differ
index 1d21b57ec59e2c7e71d2ec20abe445bf462f7356..97c1e83df748df6a0f08be0b0ed989f1c567dd18 100644 (file)
@@ -8,7 +8,7 @@ package Settings;
 use v5.10;
 use strict;
 use warnings;
-use Exception::Class ('SettingsException');
+use Exception::Class ('SettingsException','LifeLogException');
 use Syntax::Keyword::Try;
 use CGI;
 use CGI::Session '-ip_match';
@@ -45,13 +45,13 @@ our $TRACK_LOGINS = 1;
 our $KEEP_EXCS    = 0;
 our $COMPRESS_ENC = 0; #HTTP Compressed encoding.
 our $DBI_SOURCE   = "DBI:SQLite:";
+our $DBI_LVAR_SZ  = 1024;
 our $DSN;
 our $DBFILE;
 our $IS_PG_DB     = 0;
 
 my ($cgi, $sss, $sid, $alias, $pass, $dbname, $pub);
 
-
 #Annons here, variables that could be overiden in  code or database, per need.
 our %anons = ();
 our %tz_map;
@@ -98,12 +98,21 @@ sub compressPage   {return $COMPRESS_ENC}
 sub debug          {my $r = shift; if(!$r){$r = $DEBUG}else{$DEBUG=$r}  return $r}
 sub dbSrc          {my $r = shift; if($r) {$DBI_SOURCE=$r; $IS_PG_DB = 1 if(index (uc $r, 'DBI:PG') ==0)}  
                     return $DBI_SOURCE}
+sub dbVLSZ         {my $r = shift; if(!$r){$r = $DBI_LVAR_SZ}else{$r=128 if($r<128);$DBI_LVAR_SZ=$r}  return $r}
 sub dbFile         {my $r = shift; if($r) {$DBFILE=$r} return $DBFILE}
 sub dbName         {return $dbname;}
 sub dsn            {return $DSN}
 sub isProgressDB   {return $IS_PG_DB}
 sub sqlPubors      {return $SQL_PUB}
 
+sub cgi     {return $cgi}
+sub session {return $sss}
+sub sid     {return $sid}
+sub dbname  {return $dbname}
+sub alias   {return $alias}
+sub pass    {return $pass}
+sub pub     {return $pub}
+
 sub trim {my $r=shift; $r=~s/^\s+|\s+$//g; return $r}
 
 sub fetchDBSettings {
@@ -120,7 +129,6 @@ try {
     ##From here we have data source set, currently Progress DB SQL and SQLite SQL compatible.
     dbSrc($sss->param('db_source'));
 
-
     if($pub){#we override session to obtain pub(alias)/pass from file main config.
         open(my $fh, '<', logPath().'main.cnf' ) or LifeLogException->throw("Can't open main.cnf: $!");        
         while (my $line = <$fh>) {
@@ -142,12 +150,15 @@ try {
         close $fh; 
         if(!$SQL_PUB){$alias=undef}       
     }
-    if(!$alias){
-        $alias = "admin"; $pass  = $alias; dbSrc('dbi:Pg:host=localhost;');
+    # if(!$alias){
+    #     $alias = "admin"; $pass  = $alias; dbSrc('dbi:Pg:host=localhost;');
+    # }
+     if(!$alias){
+        print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
+        exit;
     }
     my $ret  = connectDB($alias, $pass);
-    getConfiguration($ret);
-    
+    getConfiguration($ret);    
     getTheme();
     $sss->expire($SESSN_EXPR);
     return $ret;
@@ -156,13 +167,6 @@ try {
     exit;
 }
 }
-sub cgi     {return $cgi}
-sub session {return $sss}
-sub sid     {return $sid}
-sub dbname  {return $dbname}
-sub alias   {return $alias}
-sub pass    {return $pass}
-sub pub     {return $pub}
 
 sub today {
     my $ret = DateTime->now();
@@ -193,17 +197,16 @@ sub setTimezone {
 }
 
 sub createCONFIGStmt {
-if($IS_PG_DB){return qq(
-    CREATE TABLE CONFIG(
-        ID INT NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
-        NAME VARCHAR(28)  UNIQUE,
-        VALUE             VARCHAR(28),
-        DESCRIPTION       VARCHAR(128),
-        PRIMARY KEY(ID)
-    );
-    CREATE INDEX idx_config_name ON CONFIG (NAME);
-)}
-
+    if($IS_PG_DB){return qq(
+        CREATE TABLE CONFIG(
+            ID INT NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
+            NAME VARCHAR(28)  UNIQUE,
+            VALUE             VARCHAR(28),
+            DESCRIPTION       VARCHAR(128),
+            PRIMARY KEY(ID)
+        );
+        CREATE INDEX idx_config_name ON CONFIG (NAME);
+    )}
 return qq(
     CREATE TABLE CONFIG(
         ID INT  PRIMARY KEY NOT NULL,
@@ -212,21 +215,18 @@ return qq(
         DESCRIPTION VCHAR(128)
     );
     CREATE INDEX idx_config_name ON CONFIG (NAME);
-)
-}
-sub createCATStmt {
-
-if($IS_PG_DB){
-    return qq(    
-    CREATE TABLE CAT(
-        ID INT             GENERATED BY DEFAULT AS IDENTITY,
-        NAME               VARCHAR(16),
-        DESCRIPTION        VARCHAR(225),
-        PRIMARY KEY(ID)
-    );
-    CREATE INDEX idx_cat_name ON CAT (NAME);
 )}
-
+sub createCATStmt {
+    if($IS_PG_DB){
+        return qq(    
+        CREATE TABLE CAT(
+            ID INT             GENERATED BY DEFAULT AS IDENTITY,
+            NAME               VARCHAR(16),
+            DESCRIPTION        VARCHAR(225),
+            PRIMARY KEY(ID)
+        );
+        CREATE INDEX idx_cat_name ON CAT (NAME);
+    )}
 return qq(    
     CREATE TABLE CAT(
         ID INT             PRIMARY KEY NOT NULL,
@@ -237,25 +237,25 @@ return qq(
 )}
 sub createLOGStmt {
 if($IS_PG_DB){
-  return qq(
-    CREATE TABLE LOG (
-        ID INT UNIQUE GENERATED ALWAYS AS IDENTITY,
-        ID_CAT INT        NOT NULL,
-        ID_RTF INTEGER    DEFAULT 0,
-        DATE TIMESTAMP    NOT NULL,
-        LOG VARCHAR (1024) NOT NULL,
-        AMOUNT INTEGER,
-        AFLAG INT         DEFAULT 0,
-        STICKY BOOL       DEFAULT FALSE,
-        PRIMARY KEY(ID)
-    );)
-} 
+        return qq(
+        CREATE TABLE LOG (
+            ID INT UNIQUE GENERATED ALWAYS AS IDENTITY,
+            ID_CAT INT        NOT NULL,
+            ID_RTF INTEGER    DEFAULT 0,
+            DATE TIMESTAMP    NOT NULL,
+            LOG VARCHAR ($DBI_LVAR_SZ) NOT NULL,
+            AMOUNT INTEGER,
+            AFLAG INT         DEFAULT 0,
+            STICKY BOOL       DEFAULT FALSE,
+            PRIMARY KEY(ID)
+        );)} 
+
   return qq(
     CREATE TABLE LOG (
         ID_CAT INT        NOT NULL,
         ID_RTF INTEGER    DEFAULT 0,
         DATE DATETIME     NOT NULL,
-        LOG VARCHAR (128) NOT NULL,
+        LOG VARCHAR ($DBI_LVAR_SZ) NOT NULL,
         AMOUNT INTEGER,
         AFLAG INT         DEFAULT 0,
         STICKY BOOL       DEFAULT 0
@@ -273,13 +273,13 @@ sub selStartOfYear {
 }
 
 sub createViewLOGStmt {
-if($IS_PG_DB){
-  return qq(
-    CREATE VIEW public.VW_LOG AS
-     SELECT *, (select count(ID) from LOG as recount where a.id >= recount.id) as PID
-         FROM LOG as a ORDER BY Date(DATE) DESC;
-    );
-} 
+    if($IS_PG_DB){
+    return qq(
+        CREATE VIEW public.VW_LOG AS
+        SELECT *, (select count(ID) from LOG as recount where a.id >= recount.id) as PID
+            FROM LOG as a ORDER BY DATE DESC;
+        );
+    
 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
@@ -287,17 +287,16 @@ CREATE VIEW VW_LOG AS
 )}
 
 sub createAUTHStmt {
-
-if($IS_PG_DB){
-  return qq(
-    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);      
-)}
+    if($IS_PG_DB){
+    return qq(
+        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);      
+    )}
 return qq(
     CREATE TABLE AUTH(
         ALIAS varchar(20)   PRIMARY KEY,
@@ -308,8 +307,6 @@ return qq(
     CREATE INDEX idx_auth_name_passw ON AUTH (ALIAS, PASSW);
 )}
 
-
-
 sub createNOTEStmt {
     return qq(CREATE TABLE NOTES (LID INT PRIMARY KEY NOT NULL, DOC TEXT);)
 }
@@ -488,6 +485,7 @@ sub toLog {
             if(@arr){$cat = $arr[0];}else{$cat = 6;}
         }
        $log =~ s/'/''/g;
+       if(length($log)>$DBI_LVAR_SZ){SettingsLimitSizeException->throw("Log size limit ($DBI_LVAR_SZ) exceeded, log length is:".length($log))}
        $db->do("INSERT INTO LOG (ID_CAT, DATE, LOG) VALUES($cat,'$stamp', '$log');");
 }