From: Will Budicm Date: Thu, 10 Dec 2020 13:02:26 +0000 (+1100) Subject: DBI_LOG_VAR_SIZE, further PG. dev. X-Git-Url: https://lifelog.hopto.org/gitweb/?a=commitdiff_plain;h=48b7cd7598e88ceb6c04a9a8765f8a92cf7e6ad2;p=LifeLog.git DBI_LOG_VAR_SIZE, further PG. dev. --- diff --git a/htdocs/cgi-bin/images/WelloffHighlevelAlpinegoat.webp b/htdocs/cgi-bin/images/WelloffHighlevelAlpinegoat.webp new file mode 100644 index 0000000..bb428f0 Binary files /dev/null and b/htdocs/cgi-bin/images/WelloffHighlevelAlpinegoat.webp differ diff --git a/htdocs/cgi-bin/system/modules/Settings.pm b/htdocs/cgi-bin/system/modules/Settings.pm index 1d21b57..97c1e83 100644 --- a/htdocs/cgi-bin/system/modules/Settings.pm +++ b/htdocs/cgi-bin/system/modules/Settings.pm @@ -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');"); }