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';
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;
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 {
##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>) {
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;
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();
}
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,
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,
)}
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
}
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
)}
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,
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);)
}
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');");
}