X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fdbsetup.cpp;h=5f4c1290bae24f44ece8ce46d3c5d7844d82a6c8;hb=d5c9f7e6c1dd263dfc85a3cb5941a378a5ddd923;hp=bc197cc84f777f0fdebdf741c0d19d8c149b4af4;hpb=dec33c63afafabf83c3039e916725cac6faef9b3;p=fms.git diff --git a/src/dbsetup.cpp b/src/dbsetup.cpp index bc197cc..5f4c129 100644 --- a/src/dbsetup.cpp +++ b/src/dbsetup.cpp @@ -15,14 +15,8 @@ void SetupDB() SQLite3DB::DB *db=SQLite3DB::DB::Instance(); db->Open("fms.db3"); - db->SetBusyTimeout(10000); // set timeout to 10 seconds - - tempval=""; - Option::Instance()->Get("VacuumOnStartup",tempval); - if(tempval=="true") - { - db->Execute("VACUUM;"); - } + db->SetBusyTimeout(20000); // set timeout to 20 seconds + db->Execute("PRAGMA synchronous = FULL;"); db->Execute("CREATE TABLE IF NOT EXISTS tblDBVersion(\ Major INTEGER,\ @@ -104,13 +98,31 @@ void SetupDB() major=1; minor=12; } + if(major==1 && minor==12) + { + ConvertDB0112To0113(); + major=1; + minor=13; + } } else { - db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,12);"); + db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,13);"); } - db->Execute("UPDATE tblDBVersion SET Major=1, Minor=12;"); + db->Execute("UPDATE tblDBVersion SET Major=1, Minor=13;"); + + db->Execute("CREATE TABLE IF NOT EXISTS tblFMSVersion(\ + Major INTEGER,\ + Minor INTEGER,\ + Release INTEGER,\ + Notes TEXT,\ + Changes TEXT,\ + PageKey TEXT,\ + SourceKey TEXT\ + );"); + + db->Execute("CREATE UNIQUE INDEX IF NOT EXISTS idxFMSVersion_Version ON tblFMSVersion(Major,Minor,Release);"); db->Execute("CREATE TABLE IF NOT EXISTS tblOption(\ Option TEXT UNIQUE,\ @@ -176,6 +188,9 @@ void SetupDB() FoundSolution BOOL CHECK(FoundSolution IN('true','false')) DEFAULT 'false'\ );"); + /* + PurgeDate is not used yet + */ db->Execute("CREATE TABLE IF NOT EXISTS tblIdentity(\ IdentityID INTEGER PRIMARY KEY,\ PublicKey TEXT UNIQUE,\ @@ -314,12 +329,17 @@ void SetupDB() Found BOOL CHECK(Found IN('true','false')) DEFAULT 'false'\ );"); + /* + Key is for anonymous messages (future) + */ db->Execute("CREATE TABLE IF NOT EXISTS tblMessageRequests(\ IdentityID INTEGER,\ Day DATE,\ RequestIndex INTEGER,\ FromMessageList BOOL CHECK(FromMessageList IN('true','false')) DEFAULT 'false',\ - Found BOOL CHECK(Found IN('true','false')) DEFAULT 'false'\ + Found BOOL CHECK(Found IN('true','false')) DEFAULT 'false',\ + Tries INTEGER DEFAULT 0,\ + Key TEXT\ );"); db->Execute("CREATE UNIQUE INDEX IF NOT EXISTS idxMessageRequest ON tblMessageRequests(IdentityID,Day,RequestIndex);"); @@ -382,6 +402,12 @@ void SetupDB() LocalIdentityID INTEGER\ );"); + // Temporary table for form passwords + db->Execute("CREATE TEMPORARY TABLE IF NOT EXISTS tmpFormPassword(\ + Date DATETIME,\ + Password TEXT\ + );"); + // low / high / message count for each board db->Execute("CREATE VIEW IF NOT EXISTS vwBoardStats AS \ SELECT tblBoard.BoardID AS 'BoardID', IFNULL(MIN(MessageID),0) AS 'LowMessageID', IFNULL(MAX(MessageID),0) AS 'HighMessageID', COUNT(MessageID) AS 'MessageCount' \ @@ -499,10 +525,10 @@ void SetupDB() 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');"); // insert Shadow Panther's public key - haven't seen in a while - disabling for now //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');"); - // insert garfield's public key - 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');"); - // insert alek's public key - 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');"); + // insert garfield's public key -haven't seen in a while - disabling for now + //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');"); + // insert alek's public key - haven't seen in a while - disabling for now + //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');"); // insert Luke771's public key 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');"); // insert falafel's public key @@ -523,3 +549,27 @@ void SetupDB() db->Execute("ANALYZE;"); } + +const bool VerifyDB() +{ + SQLite3DB::DB *db=SQLite3DB::DB::Instance(); + SQLite3DB::Statement st=db->Prepare("PRAGMA integrity_check;"); + st.Step(); + if(st.RowReturned()) + { + std::string res=""; + st.ResultText(0,res); + if(res=="ok") + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +}