SQLite3DB::DB *db=SQLite3DB::DB::Instance();\r
\r
db->Open("fms.db3");\r
- db->SetBusyTimeout(10000); // set timeout to 10 seconds\r
-\r
- tempval="";\r
- Option::Instance()->Get("VacuumOnStartup",tempval);\r
- if(tempval=="true")\r
- {\r
- db->Execute("VACUUM;");\r
- }\r
+ db->SetBusyTimeout(20000); // set timeout to 20 seconds\r
+ db->Execute("PRAGMA synchronous = FULL;");\r
\r
db->Execute("CREATE TABLE IF NOT EXISTS tblDBVersion(\\r
Major INTEGER,\\r
major=1;\r
minor=12;\r
}\r
+ if(major==1 && minor==12)\r
+ {\r
+ ConvertDB0112To0113();\r
+ major=1;\r
+ minor=13;\r
+ }\r
}\r
else\r
{\r
- db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,12);");\r
+ db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,13);");\r
}\r
\r
- db->Execute("UPDATE tblDBVersion SET Major=1, Minor=12;");\r
+ db->Execute("UPDATE tblDBVersion SET Major=1, Minor=13;");\r
+\r
+ db->Execute("CREATE TABLE IF NOT EXISTS tblFMSVersion(\\r
+ Major INTEGER,\\r
+ Minor INTEGER,\\r
+ Release INTEGER,\\r
+ Notes TEXT,\\r
+ Changes TEXT,\\r
+ PageKey TEXT,\\r
+ SourceKey TEXT\\r
+ );");\r
+\r
+ db->Execute("CREATE UNIQUE INDEX IF NOT EXISTS idxFMSVersion_Version ON tblFMSVersion(Major,Minor,Release);");\r
\r
db->Execute("CREATE TABLE IF NOT EXISTS tblOption(\\r
Option TEXT UNIQUE,\\r
FoundSolution BOOL CHECK(FoundSolution IN('true','false')) DEFAULT 'false'\\r
);");\r
\r
+ /*\r
+ PurgeDate is not used yet\r
+ */\r
db->Execute("CREATE TABLE IF NOT EXISTS tblIdentity(\\r
IdentityID INTEGER PRIMARY KEY,\\r
PublicKey TEXT UNIQUE,\\r
Found BOOL CHECK(Found IN('true','false')) DEFAULT 'false'\\r
);");\r
\r
+ /*\r
+ Key is for anonymous messages (future)\r
+ */\r
db->Execute("CREATE TABLE IF NOT EXISTS tblMessageRequests(\\r
IdentityID INTEGER,\\r
Day DATE,\\r
RequestIndex INTEGER,\\r
FromMessageList BOOL CHECK(FromMessageList IN('true','false')) DEFAULT 'false',\\r
- Found BOOL CHECK(Found IN('true','false')) DEFAULT 'false'\\r
+ Found BOOL CHECK(Found IN('true','false')) DEFAULT 'false',\\r
+ Tries INTEGER DEFAULT 0,\\r
+ Key TEXT\\r
);");\r
\r
db->Execute("CREATE UNIQUE INDEX IF NOT EXISTS idxMessageRequest ON tblMessageRequests(IdentityID,Day,RequestIndex);");\r
LocalIdentityID INTEGER\\r
);");\r
\r
+ // Temporary table for form passwords\r
+ db->Execute("CREATE TEMPORARY TABLE IF NOT EXISTS tmpFormPassword(\\r
+ Date DATETIME,\\r
+ Password TEXT\\r
+ );");\r
+\r
// low / high / message count for each board\r
db->Execute("CREATE VIEW IF NOT EXISTS vwBoardStats AS \\r
SELECT tblBoard.BoardID AS 'BoardID', IFNULL(MIN(MessageID),0) AS 'LowMessageID', IFNULL(MAX(MessageID),0) AS 'HighMessageID', COUNT(MessageID) AS 'MessageCount' \\r
db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,LocalTrustListTrust,AddedMethod) VALUES('SSK@NuBL7aaJ6Cn4fB7GXFb9Zfi8w1FhPyW3oKgU9TweZMw,iXez4j3qCpd596TxXiJgZyTq9o-CElEuJxm~jNNZAuA,AQACAAE/','"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"',50,'Initial Identity');");\r
// insert Shadow Panther's public key - haven't seen in a while - disabling for now\r
//db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES('SSK@~mimyB1kmH4f7Cgsd2wM2Qv2NxrZHRMM6IY8~7EWRVQ,fxTKkR0TYhgMYb-vEGAv55sMOxCGD2xhE4ZxWHxdPz4,AQACAAE/','"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"','Initial Identity');");\r
- // insert garfield's public key\r
- db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES('SSK@T8l1IEGU4-PoASFzgc2GYhIgRzUvZsKdoQWeuLHuTmM,QLxAPfkGis8l5NafNpSCdbxzXhBlu9WL8svcqJw9Mpo,AQACAAE/','"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"','Initial Identity');");\r
- // insert alek's public key\r
- db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES('SSK@lTjeI6V0lQsktXqaqJ6Iwk4TdsHduQI54rdUpHfhGbg,0oTYfrxxx8OmdU1~60gqpf3781qzEicM4Sz97mJsBM4,AQACAAE/','"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"','Initial Identity');");\r
+ // insert garfield's public key -haven't seen in a while - disabling for now\r
+ //db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES('SSK@T8l1IEGU4-PoASFzgc2GYhIgRzUvZsKdoQWeuLHuTmM,QLxAPfkGis8l5NafNpSCdbxzXhBlu9WL8svcqJw9Mpo,AQACAAE/','"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"','Initial Identity');");\r
+ // insert alek's public key - haven't seen in a while - disabling for now\r
+ //db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES('SSK@lTjeI6V0lQsktXqaqJ6Iwk4TdsHduQI54rdUpHfhGbg,0oTYfrxxx8OmdU1~60gqpf3781qzEicM4Sz97mJsBM4,AQACAAE/','"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"','Initial Identity');");\r
// insert Luke771's public key\r
db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES('SSK@mdXK~ZVlfTZhF1SLBrvZ--i0vOsOpa~w9wv~~psQ-04,gXonsXKc7aexKSO8Gt8Fwre4Qgmmbt2WueO7VzxNKkk,AQACAAE/','"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"','Initial Identity');");\r
// insert falafel's public key\r
db->Execute("ANALYZE;");\r
\r
}\r
+\r
+const bool VerifyDB()\r
+{\r
+ SQLite3DB::DB *db=SQLite3DB::DB::Instance();\r
+ SQLite3DB::Statement st=db->Prepare("PRAGMA integrity_check;");\r
+ st.Step();\r
+ if(st.RowReturned())\r
+ {\r
+ std::string res="";\r
+ st.ResultText(0,res);\r
+ if(res=="ok")\r
+ {\r
+ return true;\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+}\r