From 07734d8fbab7e9a40e2fc7250f8594a989241a4b Mon Sep 17 00:00:00 2001 From: Ladar Levison Date: Mon, 6 Aug 2018 18:13:56 -0500 Subject: Major version bump, because of incompatible changes to the magma schema. A `magma.version` host config value was added to the schema scripts so magma can check for incompatible schema version revisions at launch. Additional users were added to the SQL data file that is used to seed the sandbox with data for unit testing. The schema shell scripts were tweaked. The schema.init.sh script no longer loads the sandbox seed data. --- Makefile | 2 +- dev/scripts/database/schema.init.sh | 22 ++++++++---- dev/scripts/database/schema.reset.sh | 25 ++++++++----- res/sql/Data.sql | 69 ++++++++++++++++++++++++++++-------- res/sql/Hostname.sql | 2 +- res/sql/Version.sql | 1 + src/engine/config/global/global.c | 5 +-- 7 files changed, 93 insertions(+), 33 deletions(-) create mode 100644 res/sql/Version.sql diff --git a/Makefile b/Makefile index 45747f59..15ae4081 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ MAKEFLAGS = --output-sync=target # Identity of this package. PACKAGE_NAME = Magma Daemon PACKAGE_TARNAME = magma -PACKAGE_VERSION = 6.4 +PACKAGE_VERSION = 7.0 PACKAGE_STRING = $(PACKAGE_NAME) $(PACKAGE_VERSION) PACKAGE_BUGREPORT = support@lavabit.com PACKAGE_URL = https://lavabit.com diff --git a/dev/scripts/database/schema.init.sh b/dev/scripts/database/schema.init.sh index d6c291df..ea0cc7b2 100755 --- a/dev/scripts/database/schema.init.sh +++ b/dev/scripts/database/schema.init.sh @@ -63,35 +63,43 @@ if [ ! -d $MAGMA_RES_SQL ]; then exit 1 fi -# Generate Start.sql from the user-provided Schema -echo "CREATE DATABASE IF NOT EXISTS \`${MYSQL_SCHEMA}\`; +# Generate a Start.sql file using the user-provided schema name. +cat <<-EOF > $MAGMA_RES_SQL/Start.sql +CREATE DATABASE IF NOT EXISTS \`${MYSQL_SCHEMA}\`; USE \`${MYSQL_SCHEMA}\`; SET SESSION sql_mode = 'ALLOW_INVALID_DATES'; SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; -SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;" > $MAGMA_RES_SQL/Start.sql +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +EOF if [ -z "$HOSTNAME" ]; then HOSTNAME=$(hostname) fi -# Generate Hostname.sql with the system's Hostname -echo "UPDATE Hosts SET hostname = '$HOSTNAME' WHERE hostnum = 1;" > $MAGMA_RES_SQL/Hostname.sql +# Generate the Hostname.sql file using the system host name. +echo "INSERT INTO \`Hosts\` (\`hostnum\`, \`hostname\`, \`timestamp\`) VALUES (1,'$HOSTNAME',NOW());" > $MAGMA_RES_SQL/Hostname.sql + +# Generate Version.sql file with the correct version number. +MAGMA_VERSION=`grep --extended-regexp "^PACKAGE_VERSION" Makefile | awk --field-separator='=' '{print \$2}' | awk --field-separator='.' '{print \$1}' | tr --delete [:blank:]` +echo "INSERT INTO \`Host_Config\` (\`confignum\`, \`hostnum\`, \`application\`, \`name\`, \`value\`, \`timestamp\`) VALUES (1,NULL,'magmad','magma.version','$MAGMA_VERSION',NOW());" > $MAGMA_RES_SQL/Version.sql # Tell git to skip checking for changes to these SQL files, but we only do this if git is on the system and the files # are stored inside a repo. GIT_IS_AVAILABLE=`which git &> /dev/null && git log &> /dev/null && echo 1` if [[ "$GIT_IS_AVAILABLE" == "1" ]]; then git update-index --skip-worktree "$MAGMA_RES_SQL/Start.sql" + git update-index --skip-worktree "$MAGMA_RES_SQL/Version.sql" git update-index --skip-worktree "$MAGMA_RES_SQL/Hostname.sql" fi +# Add -vvv to the mysql command line option when the batch fails to assist in troubleshooting. cat $MAGMA_RES_SQL/Start.sql \ $MAGMA_RES_SQL/Schema.sql \ - $MAGMA_RES_SQL/Data.sql \ $MAGMA_RES_SQL/Migration.sql \ - $MAGMA_RES_SQL/Finish.sql \ $MAGMA_RES_SQL/Hostname.sql \ + $MAGMA_RES_SQL/Version.sql \ + $MAGMA_RES_SQL/Finish.sql \ | mysql --batch -u "${MYSQL_USER}" --password="${MYSQL_PASSWORD}" diff --git a/dev/scripts/database/schema.reset.sh b/dev/scripts/database/schema.reset.sh index 2708d404..0311fe33 100755 --- a/dev/scripts/database/schema.reset.sh +++ b/dev/scripts/database/schema.reset.sh @@ -74,37 +74,46 @@ if [ ! -d $MAGMA_RES_STORAGE ]; then echo "The local storage directory appears to be missing. It will be created. { path = $MAGMA_RES_STORAGE }" fi -# Generate Start.sql from the user-provided Schema -echo "DROP DATABASE IF EXISTS \`${MYSQL_SCHEMA}\`; +# Generate a Start.sql file using the user-provided schema name. +cat <<-EOF > $MAGMA_RES_SQL/Start.sql +DROP DATABASE IF EXISTS \`${MYSQL_SCHEMA}\`; CREATE DATABASE IF NOT EXISTS \`${MYSQL_SCHEMA}\`; USE \`${MYSQL_SCHEMA}\`; SET SESSION sql_mode = 'ALLOW_INVALID_DATES'; SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; -SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;" > $MAGMA_RES_SQL/Start.sql +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +EOF if [ -z "$HOSTNAME" ]; then HOSTNAME=$(hostname) fi -# Generate Hostname.sql with the system's Hostname -echo "UPDATE Hosts SET hostname = '$HOSTNAME' WHERE hostnum = 1;" > $MAGMA_RES_SQL/Hostname.sql +# Generate the Hostname.sql file using the system host name. +echo "INSERT INTO \`Hosts\` (\`hostnum\`, \`hostname\`, \`timestamp\`) VALUES (1,'$HOSTNAME',NOW());" > $MAGMA_RES_SQL/Hostname.sql + +# Generate Version.sql file with the correct version number. +MAGMA_VERSION=`grep --extended-regexp "^PACKAGE_VERSION" Makefile | awk --field-separator='=' '{print \$2}' | awk --field-separator='.' '{print \$1}' | tr --delete [:blank:]` +echo "INSERT INTO \`Host_Config\` (\`confignum\`, \`hostnum\`, \`application\`, \`name\`, \`value\`, \`timestamp\`) VALUES (1,NULL,'magmad','magma.version','$MAGMA_VERSION',NOW());" > $MAGMA_RES_SQL/Version.sql # Tell git to skip checking for changes to these SQL files, but we only do this if git is on the system and the files # are stored inside a repo. GIT_IS_AVAILABLE=`which git &> /dev/null && git log &> /dev/null && echo 1` if [[ "$GIT_IS_AVAILABLE" == "1" ]]; then git update-index --skip-worktree "$MAGMA_RES_SQL/Start.sql" + git update-index --skip-worktree "$MAGMA_RES_SQL/Version.sql" git update-index --skip-worktree "$MAGMA_RES_SQL/Hostname.sql" fi +# Add -vvv to the mysql command line option when the batch fails to assist in troubleshooting. cat $MAGMA_RES_SQL/Start.sql \ $MAGMA_RES_SQL/Schema.sql \ - $MAGMA_RES_SQL/Data.sql \ $MAGMA_RES_SQL/Migration.sql \ - $MAGMA_RES_SQL/Finish.sql \ $MAGMA_RES_SQL/Hostname.sql \ -| mysql --batch -u "${MYSQL_USER}" --password="${MYSQL_PASSWORD}" + $MAGMA_RES_SQL/Version.sql \ + $MAGMA_RES_SQL/Data.sql \ + $MAGMA_RES_SQL/Finish.sql \ +| mysql -vvv --batch -u "${MYSQL_USER}" --password="${MYSQL_PASSWORD}" # Remove the storage tanks. rm --force "$MAGMA_RES_TANKS/system.data" diff --git a/res/sql/Data.sql b/res/sql/Data.sql index 5e920df5..0e50d146 100644 --- a/res/sql/Data.sql +++ b/res/sql/Data.sql @@ -79,7 +79,7 @@ INSERT INTO `Domains` VALUES (1,'dark.lavabit.com',0,0,0,0,0,'2010-05-18 02:08:5 -- ORDER BY: `foldernum` /*!40000 ALTER TABLE `Folders` DISABLE KEYS */; -INSERT INTO `Folders` VALUES (1,1,'Inbox',0,NULL),(2,2,'Inbox',0,NULL),(3,3,'Inbox',0,NULL),(4,4,'Inbox',0,NULL); +INSERT INTO `Folders` (`foldernum`, `usernum`, `foldername`, `order`, `parent`) VALUES (1,1,'Inbox',0,NULL),(2,2,'Inbox',0,NULL),(3,3,'Inbox',0,NULL),(4,4,'Inbox',0,NULL); /*!40000 ALTER TABLE `Folders` ENABLE KEYS */; -- @@ -96,18 +96,9 @@ INSERT INTO `Folders` VALUES (1,1,'Inbox',0,NULL),(2,2,'Inbox',0,NULL),(3,3,'Inb -- ORDER BY: `confignum` /*!40000 ALTER TABLE `Host_Config` DISABLE KEYS */; -INSERT INTO `Host_Config` VALUES (1,NULL,'magmad','magma.system.increase_resource_limits','false','2009-12-16 04:32:54'),(2,NULL,'magmad','magma.storage.default','local','2011-03-24 12:11:22'),(3,NULL,'magmad','magma.smtp.blacklist','bl.spamcop.net.','2011-04-13 16:03:55'); +INSERT INTO `Host_Config` (`hostnum`,`application`,`name`,`value`,`timestamp`) VALUES (NULL,'magmad','magma.system.increase_resource_limits','false','2009-12-16 04:32:54'),(NULL,'magmad','magma.storage.default','local','2011-03-24 12:11:22'),(NULL,'magmad','magma.smtp.blacklist','bl.spamcop.net.','2011-04-13 16:03:55'); /*!40000 ALTER TABLE `Host_Config` ENABLE KEYS */; --- --- Dumping data for table `Hosts` --- --- ORDER BY: `hostnum` - -/*!40000 ALTER TABLE `Hosts` DISABLE KEYS */; -INSERT INTO `Hosts` VALUES (1,'dark.lavabit.com','2009-12-16 04:32:54'); -/*!40000 ALTER TABLE `Hosts` ENABLE KEYS */; - -- -- Dumping data for table `Keys` -- @@ -140,7 +131,7 @@ INSERT INTO `Limits` VALUES ('BASIC','The Lavabit basic account plan.',0,0,0,0,1 -- ORDER BY: `usernum` /*!40000 ALTER TABLE `Log` DISABLE KEYS */; -INSERT INTO `Log` VALUES (1,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:15:59','0.0.0.0'),(2,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:16:03','0.0.0.0'),(3,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:16:09','0.0.0.0'),(4,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:15:59','0.0.0.0'); +INSERT INTO `Log` VALUES (1,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:15:59','0.0.0.0'),(2,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:16:03','0.0.0.0'),(3,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:16:09','0.0.0.0'),(4,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2011-05-05 14:15:59','127.0.0.1'); /*!40000 ALTER TABLE `Log` ENABLE KEYS */; -- @@ -149,7 +140,7 @@ INSERT INTO `Log` VALUES (1,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00 -- ORDER BY: `address` /*!40000 ALTER TABLE `Mailboxes` DISABLE KEYS */; -INSERT INTO `Mailboxes` VALUES ('magma@lavabit.com',1),('magma@example.com',1),('princess@lavabit.com',2),('princess@example.com',2),('ladar@mailshack.com',3),('ladar@nerdshack.com',3),('ladar@lavabit.com',3),('ladar@example.com',3),('stacie@lavabit.com',4),('stacie@example.com',4); +INSERT INTO `Mailboxes` (`address`, `usernum`) VALUES ('magma@lavabit.com',1),('magma@example.com',1),('princess@lavabit.com',2),('princess@example.com',2),('ladar@mailshack.com',3),('ladar@nerdshack.com',3),('ladar@lavabit.com',3),('ladar@example.com',3),('stacie@lavabit.com',4),('stacie@example.com',4); /*!40000 ALTER TABLE `Mailboxes` ENABLE KEYS */; -- @@ -231,4 +222,54 @@ INSERT INTO `Users` VALUES (1,'magma',NULL, NULL,0,'42a7ead6550ee52360222a0e8783 INSERT INTO `Codes` VALUES (1,'A',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(2,'B',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(3,'C',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(4,'D',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(5,'E',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(6,'F',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(7,'G',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(8,'H',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(9,'I',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(10,'J',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(11,'K',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(12,'L',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(13,'M',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(14,'N',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(15,'O',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(16,'P',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(17,'Q',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(18,'R',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(19,'S',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(20,'T',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(21,'U',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(22,'V',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(23,'W',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(24,'X',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(25,'Y',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(26,'Z',NULL,'MANUAL','STANDARD',NULL,'0000-00-00 00:00:00',NOW()),(27,'AA',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(28,'BB',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(29,'CC',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(30,'DD',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(31,'EE',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(32,'FF',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(33,'GG',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(34,'HH',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(35,'II',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(36,'JJ',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(37,'KK',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(38,'LL',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(39,'MM',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(40,'NN',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(41,'OO',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(42,'PP',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(43,'QQ',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(44,'RR',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(45,'SS',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(46,'TT',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(47,'UU',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(48,'VV',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(49,'WW',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(50,'XX',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(51,'YY',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()),(52,'ZZ',NULL,'MANUAL','PREMIER',NULL,'0000-00-00 00:00:00',NOW()); /*!40000 ALTER TABLE `Codes` ENABLE KEYS */; - +-- +-- The User Accounts Needed to Test Account Locking +-- + +INSERT INTO `Users` (`usernum`, `userid`, `salt`, `auth`, `bonus`, `legacy`, `tls`, `plan`, `locked`, `advertising`, `domain`, `email`, `chat`, `timezone`, `size`, `quota`, `overquota`, `plan_expiration`, `lock_expiration`) VALUES (5,'lock_inactive','JDIjkrTqVJi1a4UQeJdxpak6Z23_mA1UXLeMBQ-0vT0OVztYpXL4UKscyF-CZzWbrHLNFAsBjWWPkZyXchNythFrpJ051tdtjapKCQ0lb_dLDTeU8OxMj_E5RcnVU9ewzslBwwXSgGr2DUB4EJ2ELqPwMpddJYDg1jnFTabXPIw','G1_5u-jdaY4V8R4rNPtCfXNT7oGRcXdy3Z5KgPgXkGDiscu-kMetqLX2_J2MUe3PmCY7Uklyz6b3GNzZhzXtzg',0,NULL,0,'STANDARD',1,1,NULL,1,1,0,0,134217728,0,DATE(NOW()),DATE_ADD(DATE(NOW()),INTERVAL 120 DAY)); +INSERT INTO `Users` (`usernum`, `userid`, `salt`, `auth`, `bonus`, `legacy`, `tls`, `plan`, `locked`, `advertising`, `domain`, `email`, `chat`, `timezone`, `size`, `quota`, `overquota`, `plan_expiration`, `lock_expiration`) VALUES (6,'lock_expired','MZ5-PVVxojRkV6HSnb-GOY5_hQbH-uH4M8COwrhNs7ozOtqThR8XOxzNLU7RnTGDoCjzzAmCcBvpz2gy3n3x9qSEpFpB60p33xEwPlJcuFLGeTj3976z79MDu_nGb50P4Y2DNqM0I9-UW-hKq45uvPvOJc2yAzChm4ut2EIlPQM','OI7fmRBNBwhGaM4e4vwTRBNEnXw6Amd2DShn7GzMkr34s7tGE46uGjzQq4JF4vSHGMtRDWcogDxu685MtGywbg',0,NULL,0,'STANDARD',2,1,NULL,1,1,0,0,134217728,0,DATE(NOW()),DATE_ADD(DATE(NOW()),INTERVAL 120 DAY)); +INSERT INTO `Users` (`usernum`, `userid`, `salt`, `auth`, `bonus`, `legacy`, `tls`, `plan`, `locked`, `advertising`, `domain`, `email`, `chat`, `timezone`, `size`, `quota`, `overquota`, `plan_expiration`, `lock_expiration`) VALUES (7,'lock_admin','Lw0ba4RDXRkamDBDFWgvRif_EQ7GYaBR7c0ALg12EkFW-MNDOHuAf3SVGIRqJpXLqEnhDEHtO1zpoA49oW46nDU9CwBZjPoPKKDOUKJ2ziGp6iGCTRaaK8xTcjqUGpKxELV59QMcJe7JglaKqANOSiKSc0Oyhd1jSFIUmeWQLfg','rORS460yz49n9KqgD1CvkCDXKXqbXBNKmm8OeQ3HknqGbeXHpEnvTP_wvgVM3kUxkl8jO0G4jiMRTCgWFemGKw',0,NULL,0,'STANDARD',3,1,NULL,1,1,0,0,134217728,0,DATE(NOW()),DATE_ADD(DATE(NOW()),INTERVAL 120 DAY)); +INSERT INTO `Users` (`usernum`, `userid`, `salt`, `auth`, `bonus`, `legacy`, `tls`, `plan`, `locked`, `advertising`, `domain`, `email`, `chat`, `timezone`, `size`, `quota`, `overquota`, `plan_expiration`, `lock_expiration`) VALUES (8,'lock_abuse','JQ9l3rf3V78HjBgTRbmLFGt0ez-uifQoDjUQEnTq02CaM3by3iwIJNd8VMks6J2c1R3DDpbYclUdLV7NviBw9u3bUMdVE1yThhYWuCIslcvNd5v7GXdIJFRretWpgsumpBCBHtjubpnaoHumlkWG-BXrcTafI60DEd9_YRfUoG0','oOh6Ti-oIr2aveFofBwoXYBBYWDcG4e1lzS44g43vBskmcoazItOVlwPjV9LCrraOqZhUN-R2T12W8lpnw0mEg',0,NULL,0,'PREMIER',4,1,NULL,1,1,0,0,134217728,0,DATE(NOW()),DATE_ADD(DATE(NOW()),INTERVAL 120 DAY)); +INSERT INTO `Users` (`usernum`, `userid`, `salt`, `auth`, `bonus`, `legacy`, `tls`, `plan`, `locked`, `advertising`, `domain`, `email`, `chat`, `timezone`, `size`, `quota`, `overquota`, `plan_expiration`, `lock_expiration`) VALUES (9,'lock_user','8z7c-S7Jh_dfWhEe66rQ9_9JjnhJZCHfwnRYTcTK2ix-Ma23Jy68wU87-xsuZnwjEd0KeA8wCmhnBbcuVnEZyxqi1AgMTi_wwXs1pfkEdSwwiUoaAWHeXiPR00_79g2pBvAaKzFdQDxYiTqrTwbndgmO9vXXEkB47Ef6o2_RVEQ','F86hxmgFnGDksS4JtQ_dwt2C3R6d6spmLMBVn3aTlD2dzeEP0LYQmaS6fuwVEF119j6W5jhoFmH1iaBZGbaDbw',0,NULL,0,'PREMIER',5,1,NULL,1,1,0,0,134217728,0,DATE(NOW()),DATE_ADD(DATE(NOW()),INTERVAL 120 DAY)); + +INSERT INTO `Dispatch` (`usernum`, `secure`, `forwarded`, `rollout`, `bounces`, `greylist`, `greytime`, `rbl`, `rblaction`, `spf`, `spfaction`, `dkim`, `dkimaction`, `spam`, `spamaction`, `spamfolder`, `virus`, `virusaction`, `phish`, `phishaction`, `filters`, `autoreply`, `inbox`, `send_size_limit`, `recv_size_limit`, `daily_send_limit`, `daily_recv_limit`, `daily_recv_limit_ip`, `class`) VALUES (5,1,'',0,1,0,1,0,'REJECT',0,'REJECT',0,'MARK',0,'MARK',5,1,'DELETE',1,'DELETE',0,NULL,5,33554432,33554432,256,1024,1024,0); +INSERT INTO `Dispatch` (`usernum`, `secure`, `forwarded`, `rollout`, `bounces`, `greylist`, `greytime`, `rbl`, `rblaction`, `spf`, `spfaction`, `dkim`, `dkimaction`, `spam`, `spamaction`, `spamfolder`, `virus`, `virusaction`, `phish`, `phishaction`, `filters`, `autoreply`, `inbox`, `send_size_limit`, `recv_size_limit`, `daily_send_limit`, `daily_recv_limit`, `daily_recv_limit_ip`, `class`) VALUES (6,1,'',0,1,0,1,0,'REJECT',0,'REJECT',0,'MARK',0,'MARK',6,1,'DELETE',1,'DELETE',0,NULL,6,33554432,33554432,256,1024,1024,0); +INSERT INTO `Dispatch` (`usernum`, `secure`, `forwarded`, `rollout`, `bounces`, `greylist`, `greytime`, `rbl`, `rblaction`, `spf`, `spfaction`, `dkim`, `dkimaction`, `spam`, `spamaction`, `spamfolder`, `virus`, `virusaction`, `phish`, `phishaction`, `filters`, `autoreply`, `inbox`, `send_size_limit`, `recv_size_limit`, `daily_send_limit`, `daily_recv_limit`, `daily_recv_limit_ip`, `class`) VALUES (7,1,'',0,1,0,1,0,'REJECT',0,'REJECT',0,'MARK',0,'MARK',7,1,'DELETE',1,'DELETE',0,NULL,7,33554432,33554432,256,1024,1024,0); +INSERT INTO `Dispatch` (`usernum`, `secure`, `forwarded`, `rollout`, `bounces`, `greylist`, `greytime`, `rbl`, `rblaction`, `spf`, `spfaction`, `dkim`, `dkimaction`, `spam`, `spamaction`, `spamfolder`, `virus`, `virusaction`, `phish`, `phishaction`, `filters`, `autoreply`, `inbox`, `send_size_limit`, `recv_size_limit`, `daily_send_limit`, `daily_recv_limit`, `daily_recv_limit_ip`, `class`) VALUES (8,1,'',0,1,0,1,0,'REJECT',0,'REJECT',0,'MARK',0,'MARK',8,1,'DELETE',1,'DELETE',0,NULL,8,33554432,33554432,256,1024,1024,0); +INSERT INTO `Dispatch` (`usernum`, `secure`, `forwarded`, `rollout`, `bounces`, `greylist`, `greytime`, `rbl`, `rblaction`, `spf`, `spfaction`, `dkim`, `dkimaction`, `spam`, `spamaction`, `spamfolder`, `virus`, `virusaction`, `phish`, `phishaction`, `filters`, `autoreply`, `inbox`, `send_size_limit`, `recv_size_limit`, `daily_send_limit`, `daily_recv_limit`, `daily_recv_limit_ip`, `class`) VALUES (9,1,'',0,1,0,1,0,'REJECT',0,'REJECT',0,'MARK',0,'MARK',9,1,'DELETE',1,'DELETE',0,NULL,9,33554432,33554432,256,1024,1024,0); + +INSERT INTO `Folders` (`foldernum`, `usernum`, `foldername`, `order`, `type`, `parent`) VALUES (5,5,'Inbox',0,1,0); +INSERT INTO `Folders` (`foldernum`, `usernum`, `foldername`, `order`, `type`, `parent`) VALUES (6,6,'Inbox',0,1,0); +INSERT INTO `Folders` (`foldernum`, `usernum`, `foldername`, `order`, `type`, `parent`) VALUES (7,7,'Inbox',0,1,0); +INSERT INTO `Folders` (`foldernum`, `usernum`, `foldername`, `order`, `type`, `parent`) VALUES (8,8,'Inbox',0,1,0); +INSERT INTO `Folders` (`foldernum`, `usernum`, `foldername`, `order`, `type`, `parent`) VALUES (9,9,'Inbox',0,1,0); + +INSERT INTO `Keys` (`usernum`, `signet`, `key`) VALUES (5,'Bv0AAMcBICcoIIlYlOHp6VdaGEvEXN-UqJAT2cb-8WowPihsy0DvAiEC8jqMxQunZdsiUawkOYdtM1A-N9JM5xswQqqug7Wp6LUFttNrqGHydY6lmPE35KzX4RNKtop5KoBcP3zg-01Disjomea6zKaY-tnwULXCV8Uj3y1hmw_6Rt_EHgNiTQvDDAb6z1w5Il-FBjF_nPMO-os8zbIgmniobKF1kkWBn8LRYYhVGR0FkIJYXA6fPEDIp9PdXTOIly72D4RJSptzwWYO','B7gAAABwzM_6qBfFNEGEPY5mCa3s25BqpP05vk7UZH1h8i28aBu0zRyQtGbMi4kChFbO-5uGtwUJwnYuYCqi7ACSmgyZFrrQj557wI-wm3heHVxdOCl6B0XBZst_kqpDVrZasAn0fn2W4ZXTXnqmv9on3eD3KA'); +INSERT INTO `Keys` (`usernum`, `signet`, `key`) VALUES (6,'Bv0AAMcBIGjq9I1m8mw-fbxNzdUHaQqMfAr-zq0_gSs1Hl5XuFD7AiECLoiw3N4j-rlqg1EptpTjUKMu8rjKoWJWv_Zz04U2AxQFCY9T25b0pPCwgYYqyal_-TTVHSgCWY18xmTaqrk9o7C07lZxKnUWl0_onELSDVoaFloJmlrcRJeujK-2qiGiBgaSHvbXZtf6fePTQHwc2_D1KgcYZL1Nui4tX5I6l9rZkLxBVbVKfaEF4H7E1usRD504hvDyXSNbMEXKq3mUWjAI','B7gAAABww6rMYLCkmrT9mmNZavsy4ekH1CchJMA4D2LDHeJf1zsVqXfBS-T8Qlu4dcq2jBT3ZP1443DBWnNNVhlMjOO-hSfWi7KCCdNqydqocdqTWVcp_XMLsn6vdz_OCkwzckK73-5E3cW_t8zq5nR9Cnx3og'); +INSERT INTO `Keys` (`usernum`, `signet`, `key`) VALUES (7,'Bv0AAMcBIHv8SGmB2PaDyXVX49wsfnn9p2Tkf-jFfm6ykKSaFY0zAiEDc_Q1aKqcZKQf5EPC0AJP6tVFvgfKzmNqNVLcarTjV_sFMhOwQ1gyggO-Zk5wi7Ay4FmJSETcMkr0aR1q_NskOocQn5XVoLb_I_0AEVq2BdMNx6K8WilwKzbNJ-POLmC9Dgbr7kq8mvObKd234DSO-8NNA8ZWAj5hqeIQdDifhuYXXuLA0XRmQJg9vvd6L-ldcKEAb8GsGZTkfbCziByHwyUC','B7gAAABwnFuBNqYlG5mN0p10Q3CAhvv8rwldAT8lRGiCxr3CmGdnJ-ZSL0VKvSD_NH4r-QGsTR1mDTAg8dEPVUFEfBE6mn1jekUwFQwYPmV4PM6IBEVZds6z8H-FMu_pHz4jlBnrr9vx6xVn9k72pPtW0j_y_w'); +INSERT INTO `Keys` (`usernum`, `signet`, `key`) VALUES (8,'Bv0AAMcBIGvSUm1_jMfKTyz5AzpzP8YY5MHjDiC0iDhigsijoMxnAiECdpYzZi2cvo_KVsQmIfeBXcaJPPH3Qo1b3LyV0qL_d7wFKN0MYCRbJ6GdSJnfn40z-UdLhVHCQmZut9SrQ4F6A45QRy8m6_-eCnZBQqydC_MgApHYffaxieGxTS0q4HGUBgaEquhsypHqPTb6WP4-i5KtleTQa4vdgL5EwhLgO5XyvnCqItvMJNDKax5M1aWzcEuDyVJiGhfO1_W7ZCFPFqYD','B7gAAABwS-LvSjwjeyCYsy_T0RFAHoi-Rst38JDl3kf4tZyXE6RBD64l2nucsVz5cN2V6nZt_2e0P6lSHmR1Eh2mgPjM1Zcl7eskWfew98cLTfhCLcTs6rdXnIM9MTqHXtaUVz95o_7l7ZBPSsg_6apA7XvOQw'); +INSERT INTO `Keys` (`usernum`, `signet`, `key`) VALUES (9,'Bv0AAMcBIGyoHRHDS_ExrEOvd41pZVbqjTL9r5qvmIi--bzhFqmMAiECQh7-Y3SeSa5Yw0ncNnEw4bOcH8y9EawwmbhczHXUotwFkwdlFVYjRB0EIBHCPjxvf5OmQX_p1xhCr3s0l8GChg0KlJcMjZUZfVWzKRrK2RA6f7bMQ5NtEUCkyxfDY6VHBAa6tMsBWAqCzI9NANVBwHdEbjWAUjd_yYaPtRm51ROhsLwljHWJBPn1tlsKAOKqd_c85pdInIePfBeZXITjLGYI','B7gAAABw_7LafljuUhrjp8i5xWiD6MBX7HkAhC_ZzyXuFxpDEmLhl3ftyXjDtX4OnzKBoQI-MZ3OAKWSB2Cge-F_C794Go-cZDO31aWtQH_ZAZ0OU_wuVA3Jc3RIyH33dxqIfBVTdQ9qgls3IFRXxe6yrK-pnw'); + +INSERT INTO `Log` (`usernum`, `lastpop`, `lastmap`, `lastweb`, `lastchat`, `lastsent`, `lastreceived`, `popsessions`, `mapsessions`, `websessions`, `chatsessions`, `totalsent`, `totalreceived`, `totalbounces`, `created`, `created_ip`) VALUES (5,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2018-08-06 16:59:46','127.0.0.1'); +INSERT INTO `Log` (`usernum`, `lastpop`, `lastmap`, `lastweb`, `lastchat`, `lastsent`, `lastreceived`, `popsessions`, `mapsessions`, `websessions`, `chatsessions`, `totalsent`, `totalreceived`, `totalbounces`, `created`, `created_ip`) VALUES (6,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2018-08-06 16:59:46','127.0.0.1'); +INSERT INTO `Log` (`usernum`, `lastpop`, `lastmap`, `lastweb`, `lastchat`, `lastsent`, `lastreceived`, `popsessions`, `mapsessions`, `websessions`, `chatsessions`, `totalsent`, `totalreceived`, `totalbounces`, `created`, `created_ip`) VALUES (7,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2018-08-06 16:59:46','127.0.0.1'); +INSERT INTO `Log` (`usernum`, `lastpop`, `lastmap`, `lastweb`, `lastchat`, `lastsent`, `lastreceived`, `popsessions`, `mapsessions`, `websessions`, `chatsessions`, `totalsent`, `totalreceived`, `totalbounces`, `created`, `created_ip`) VALUES (8,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2018-08-06 16:59:46','127.0.0.1'); +INSERT INTO `Log` (`usernum`, `lastpop`, `lastmap`, `lastweb`, `lastchat`, `lastsent`, `lastreceived`, `popsessions`, `mapsessions`, `websessions`, `chatsessions`, `totalsent`, `totalreceived`, `totalbounces`, `created`, `created_ip`) VALUES (9,'0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00',0,0,0,0,0,0,0,'2018-08-06 16:59:46','127.0.0.1'); + +INSERT INTO `Mailboxes` (`mailboxnum`, `address`, `usernum`) VALUES (11,'lock_inactive@lavabit.com',5); +INSERT INTO `Mailboxes` (`mailboxnum`, `address`, `usernum`) VALUES (12,'lock_expired@lavabit.com',6); +INSERT INTO `Mailboxes` (`mailboxnum`, `address`, `usernum`) VALUES (13,'lock_admin@lavabit.com',7); +INSERT INTO `Mailboxes` (`mailboxnum`, `address`, `usernum`) VALUES (14,'lock_abuse@lavabit.com',8); +INSERT INTO `Mailboxes` (`mailboxnum`, `address`, `usernum`) VALUES (15,'lock_user@lavabit.com',9); + +INSERT INTO `Profile` (`usernum`, `name`, `address_one`, `address_two`, `city`, `state`, `zip`, `country`, `profile`, `phone`, `mobile`, `fax`, `gender`, `language`, `birthdate`, `industry`, `website`, `accessible`) VALUES (5,'','','','','',0,'',NULL,'','','',NULL,'','0000-00-00','','',0); +INSERT INTO `Profile` (`usernum`, `name`, `address_one`, `address_two`, `city`, `state`, `zip`, `country`, `profile`, `phone`, `mobile`, `fax`, `gender`, `language`, `birthdate`, `industry`, `website`, `accessible`) VALUES (6,'','','','','',0,'',NULL,'','','',NULL,'','0000-00-00','','',0); +INSERT INTO `Profile` (`usernum`, `name`, `address_one`, `address_two`, `city`, `state`, `zip`, `country`, `profile`, `phone`, `mobile`, `fax`, `gender`, `language`, `birthdate`, `industry`, `website`, `accessible`) VALUES (7,'','','','','',0,'',NULL,'','','',NULL,'','0000-00-00','','',0); +INSERT INTO `Profile` (`usernum`, `name`, `address_one`, `address_two`, `city`, `state`, `zip`, `country`, `profile`, `phone`, `mobile`, `fax`, `gender`, `language`, `birthdate`, `industry`, `website`, `accessible`) VALUES (8,'','','','','',0,'',NULL,'','','',NULL,'','0000-00-00','','',0); +INSERT INTO `Profile` (`usernum`, `name`, `address_one`, `address_two`, `city`, `state`, `zip`, `country`, `profile`, `phone`, `mobile`, `fax`, `gender`, `language`, `birthdate`, `industry`, `website`, `accessible`) VALUES (9,'','','','','',0,'',NULL,'','','',NULL,'','0000-00-00','','',0); + +INSERT INTO `Realms` (`usernum`, `serial`, `label`, `shard`, `rotated`) VALUES (5,0,'mail','LWreVSWaVRKV4Xdw9GlsqlcPFbxythMTGtzO5xCoQWlaIjH5vLjE9rXTuOhaLBVsxOxbvtQNeUXILBZm0JfJKQ',1); +INSERT INTO `Realms` (`usernum`, `serial`, `label`, `shard`, `rotated`) VALUES (6,0,'mail','WBHWPFx2khiY7uChvtpWIeXfHXJXSuTBsdyHjUPmusy5IvmOCKJ2BPSQrADXhFjhYnmOdr340ZNRRQXfurtZrQ',1); +INSERT INTO `Realms` (`usernum`, `serial`, `label`, `shard`, `rotated`) VALUES (7,0,'mail','bOdEnn0D6YpNNnFFA-lcvCFnJJqz20VDRc7TJfNj7RahfaXonIb0lQd8ZXlJQvQyx-P1HpmWUO19ofhdx1ENTw',1); +INSERT INTO `Realms` (`usernum`, `serial`, `label`, `shard`, `rotated`) VALUES (8,0,'mail','mL7galUcnyDDTHMNHJuLxuqINhqzASqz9PIeKbSPGwLV3rCbzzfVsvbX_iXPkvhv4RforM_QgswhQ7u27ZA6wg',1); +INSERT INTO `Realms` (`usernum`, `serial`, `label`, `shard`, `rotated`) VALUES (9,0,'mail','vRVBZSMt4iw3_7bhhs2V51roTBePg6nnt7oxdha1cOzPaRXP2xcua12Fr7XQ8OXDQghI1gvbheFTlpz4TTF6Ww',1); diff --git a/res/sql/Hostname.sql b/res/sql/Hostname.sql index 20b36e39..99c4c31b 100644 --- a/res/sql/Hostname.sql +++ b/res/sql/Hostname.sql @@ -1 +1 @@ -UPDATE Hosts SET hostname = 'dark.local' WHERE hostnum = 1; +INSERT INTO `Hosts` (`hostnum`, `hostname`, `timestamp`) VALUES (1,'dark.local',NOW()); diff --git a/res/sql/Version.sql b/res/sql/Version.sql new file mode 100644 index 00000000..0df298f2 --- /dev/null +++ b/res/sql/Version.sql @@ -0,0 +1 @@ +INSERT INTO `Host_Config` (`confignum`, `hostnum`, `application`, `name`, `value`, `timestamp`) VALUES (1,NULL,'magmad','magma.version','6',NOW()); diff --git a/src/engine/config/global/global.c b/src/engine/config/global/global.c index c2cbf255..8603a3d0 100644 --- a/src/engine/config/global/global.c +++ b/src/engine/config/global/global.c @@ -897,8 +897,9 @@ bool_t config_load_database_settings(void) { cache_config(name, value); } - // Otherwise if we still haven't matched a value, report an error. - else { + // Otherwise if we still haven't matched a value, and it's not one of the valid keys that aren't stored in the + // global configuration, we print the error and exit. + else if (st_cmp_ci_eq(name, CONSTANT("magma.version"))) { log_critical("%.*s is not a valid setting.", st_length_int(name), st_char_get(name)); res_table_free(database_pairs); return false; -- cgit v1.2.3