X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fglobal.cpp;h=7889810626b10a988a1c34907f02561ee2de170f;hb=b4f4686250878cdf4fcb2986a2ea6546cba867d1;hp=aa87b990d81cfdff9fc47402e1f13981b3b99c1a;hpb=107bd97018964d48425306026d06afd038e84db0;p=fms.git diff --git a/src/global.cpp b/src/global.cpp index aa87b99..7889810 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -19,6 +19,22 @@ bool wantshutdown=false; +std::string CreateShortIdentityName(const std::string &name, const std::string &publickey) +{ + std::string result=""; + std::vector keyparts; + + StringFunctions::SplitMultiple(publickey,"@,",keyparts); + + result+=name; + if(keyparts.size()>1 && keyparts[1].size()>8) + { + result+="@"+keyparts[1].substr(0,4)+"..."; + } + + return result; +} + void SetupDB() { @@ -27,7 +43,7 @@ void SetupDB() db->Open("fms.db3"); db->SetBusyTimeout(10000); // set timeout to 10 seconds - db->Execute("VACUUM;"); + //db->Execute("VACUUM;"); // not needed every startup db->Execute("CREATE TABLE IF NOT EXISTS tblDBVersion(\ Major INTEGER,\ @@ -192,6 +208,35 @@ void SetupDB() Inserted BOOL CHECK(Inserted IN('true','false')) DEFAULT 'false'\ );"); + db->Execute("CREATE TABLE IF NOT EXISTS tblIdentityTrust(\ + LocalIdentityID INTEGER,\ + IdentityID INTEGER,\ + LocalMessageTrust INTEGER CHECK(LocalMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\ + MessageTrustComment TEXT,\ + LocalTrustListTrust INTEGER CHECK(LocalTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL,\ + TrustListTrustComment TEXT\ + );"); + + db->Execute("CREATE UNIQUE INDEX IF NOT EXISTS idxIdentityTrust_IDs ON tblIdentityTrust(LocalIdentityID,IdentityID);"); + + db->Execute("CREATE TRIGGER IF NOT EXISTS trgInsertOnIdentityTrust AFTER INSERT ON tblIdentityTrust \ + FOR EACH ROW \ + BEGIN \ + UPDATE tblIdentity SET LocalMessageTrust=(SELECT MAX(LocalMessageTrust) FROM tblIdentityTrust WHERE tblIdentityTrust.IdentityID=new.IdentityID GROUP BY tblIdentityTrust.IdentityID), LocalTrustListTrust=(SELECT MAX(LocalTrustListTrust) FROM tblIdentityTrust WHERE tblIdentityTrust.IdentityID=new.IdentityID GROUP BY tblIdentityTrust.IdentityID) WHERE tblIdentity.IdentityID=new.IdentityID; \ + END;"); + + db->Execute("CREATE TRIGGER IF NOT EXISTS trgUpdateOnIdentityTrust AFTER UPDATE OF LocalMessageTrust,LocalTrustListTrust ON tblIdentityTrust \ + FOR EACH ROW \ + BEGIN \ + UPDATE tblIdentity SET LocalMessageTrust=(SELECT MAX(LocalMessageTrust) FROM tblIdentityTrust WHERE tblIdentityTrust.IdentityID=new.IdentityID GROUP BY tblIdentityTrust.IdentityID), LocalTrustListTrust=(SELECT MAX(LocalTrustListTrust) FROM tblIdentityTrust WHERE tblIdentityTrust.IdentityID=new.IdentityID GROUP BY tblIdentityTrust.IdentityID) WHERE tblIdentity.IdentityID=new.IdentityID; \ + END;"); + + db->Execute("CREATE TRIGGER IF NOT EXISTS trgDeleteOnIdentityTrust AFTER DELETE ON tblIdentityTrust \ + FOR EACH ROW \ + BEGIN \ + UPDATE tblIdentity SET LocalMessageTrust=(SELECT MAX(LocalMessageTrust) FROM tblIdentityTrust WHERE tblIdentityTrust.IdentityID=old.IdentityID GROUP BY tblIdentityTrust.IdentityID), LocalTrustListTrust=(SELECT MAX(LocalTrustListTrust) FROM tblIdentityTrust WHERE tblIdentityTrust.IdentityID=old.IdentityID GROUP BY tblIdentityTrust.IdentityID) WHERE tblIdentity.IdentityID=old.IdentityID; \ + END;"); + db->Execute("CREATE TABLE IF NOT EXISTS tblPeerTrust(\ IdentityID INTEGER,\ TargetIdentityID INTEGER,\ @@ -386,6 +431,7 @@ void SetupDB() DELETE FROM tblTrustListRequests WHERE IdentityID=old.IdentityID;\ END;"); + db->Execute("DROP TRIGGER IF EXISTS trgDeleteLocalIdentity;"); db->Execute("CREATE TRIGGER IF NOT EXISTS trgDeleteLocalIdentity AFTER DELETE ON tblLocalIdentity \ FOR EACH ROW \ BEGIN \ @@ -395,6 +441,7 @@ void SetupDB() DELETE FROM tblMessageInserts WHERE LocalIdentityID=old.LocalIdentityID;\ DELETE FROM tblMessageListInserts WHERE LocalIdentityID=old.LocalIdentityID;\ DELETE FROM tblTrustListInserts WHERE LocalIdentityID=old.LocalIdentityID;\ + DELETE FROM tblIdentityTrust WHERE LocalIdentityID=old.LocalIdentityID;\ END;"); db->Execute("CREATE TRIGGER IF NOT EXISTS trgDeleteBoard AFTER DELETE ON tblBoard \