From 10ad428575792fbc701003156bdaabf39f51ab75 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Fri, 21 Mar 2014 14:06:31 +0100 Subject: [PATCH 1/6] [UPDATED] Logrotate conf --- cronjobs/etc/logrotate.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cronjobs/etc/logrotate.conf b/cronjobs/etc/logrotate.conf index 341b89e7..5ec8786e 100644 --- a/cronjobs/etc/logrotate.conf +++ b/cronjobs/etc/logrotate.conf @@ -1,4 +1,4 @@ -"./logs/*.txt" { +"./logs/*/*.txt" { copytruncate rotate 7 compress From bc42963c755c695e9b69c6cd5a925a2b560a8b84 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Fri, 21 Mar 2014 14:06:46 +0100 Subject: [PATCH 2/6] [DEPRECATED] run-crons throws a warning now --- cronjobs/run-crons.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cronjobs/run-crons.sh b/cronjobs/run-crons.sh index d1cca24b..90fe718f 100755 --- a/cronjobs/run-crons.sh +++ b/cronjobs/run-crons.sh @@ -1,5 +1,7 @@ #!/bin/bash +echo "Please be aware: This cron is deprecated and will be removed. Please read: https://github.com/MPOS/php-mpos/wiki/Cronjobs#setup" +sleep 2 ######################### # # From f9cba03c689cd8af2f085daffc327bd3eda71bd4 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Fri, 21 Mar 2014 15:12:13 +0100 Subject: [PATCH 3/6] [IMPROVED] Advanced upgrade structure --- upgrade/db_version_0.0.8.php | 36 ---------------------- upgrade/definitions/0.0.7_to_0.0.8.inc.php | 32 +++++++++++++++++++ upgrade/run_upgrades.php | 33 ++++++++++++++++++++ 3 files changed, 65 insertions(+), 36 deletions(-) delete mode 100755 upgrade/db_version_0.0.8.php create mode 100755 upgrade/definitions/0.0.7_to_0.0.8.inc.php create mode 100755 upgrade/run_upgrades.php diff --git a/upgrade/db_version_0.0.8.php b/upgrade/db_version_0.0.8.php deleted file mode 100755 index de58dd30..00000000 --- a/upgrade/db_version_0.0.8.php +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/php -getValue('DB_VERSION'); // Our actual version installed - -// Upgrade specific variables -$dDifficulty = POW(2, ($config['difficulty'] - 16)); -$aSql[] = "UPDATE " . $statistics->getTableName() . " SET valid = valid * $dDifficulty, invalid = invalid * $dDifficulty, pplns_valid = pplns_valid * $dDifficulty, pplns_invalid = pplns_invalid * $dDifficulty"; -$aSql[] = "UPDATE " . $block->getTableName() . " SET shares = shares * $dDifficulty"; -$aSql[] = "UPDATE " . $setting->getTableName() . " SET value = '0.0.8' WHERE name = 'DB_VERSION'"; - -if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { - // Run the upgrade - echo 'Starting database migration to version ' . $db_version_new . PHP_EOL; - foreach ($aSql as $sql) { - echo ' Preparing: ' . $sql . PHP_EOL; - $stmt = $mysqli->prepare($sql); - if ($stmt && $stmt->execute()) { - echo ' success' . PHP_EOL; - } else { - echo ' failed: ' . $mysqli->error . PHP_EOL; - exit(1); - } - } -} -?> diff --git a/upgrade/definitions/0.0.7_to_0.0.8.inc.php b/upgrade/definitions/0.0.7_to_0.0.8.inc.php new file mode 100755 index 00000000..623af7e1 --- /dev/null +++ b/upgrade/definitions/0.0.7_to_0.0.8.inc.php @@ -0,0 +1,32 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $dDifficulty = POW(2, ($config['difficulty'] - 16)); + $aSql[] = "UPDATE " . $statistics->getTableName() . " SET valid = valid / $dDifficulty, invalid = invalid / $dDifficulty, pplns_valid = pplns_valid / $dDifficulty, pplns_invalid = pplns_invalid / $dDifficulty"; + $aSql[] = "UPDATE " . $block->getTableName() . " SET shares = shares / $dDifficulty"; + $aSql[] = "UPDATE " . $setting->getTableName() . " SET value = '0.0.8' WHERE name = 'DB_VERSION'"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + // Run the upgrade + echo '- Starting database migration to version ' . $db_version_new . PHP_EOL; + foreach ($aSql as $sql) { + echo '- Preparing: ' . $sql . PHP_EOL; + $stmt = $mysqli->prepare($sql); + if ($stmt && $stmt->execute()) { + echo '- success' . PHP_EOL; + } else { + echo '- failed: ' . $mysqli->error . PHP_EOL; + exit(1); + } + } + } +} +?> diff --git a/upgrade/run_upgrades.php b/upgrade/run_upgrades.php new file mode 100755 index 00000000..dd949c8a --- /dev/null +++ b/upgrade/run_upgrades.php @@ -0,0 +1,33 @@ +#!/usr/bin/php +getValue('DB_VERSION'); + +// Helper function +function run_db_upgrade($db_version_now) { + // Find upgrades + $files = glob(dirname(__FILE__) . "/definitions/${db_version_now}_to_*"); + if (count($files) == 0) die('No upgrade definitions found for ' . $db_version_now . PHP_EOL); + foreach ($files as $file) { + $db_version_to = preg_replace("/(.*)\/definitions\/${db_version_now}_to_/", '', $file); + $db_version_to = preg_replace("/.inc.php/", '', $db_version_to); + $run_string = preg_replace("/\./", '', $db_version_to); + if (!require_once($file)) die('Failed to load upgrade definition: ' . $file); + echo "+ Running upgrade from $db_version_now to $db_version_to" . PHP_EOL; + $run = "run_$run_string"; + $run(); + run_db_upgrade($db_version_to); + } +} + +// Initial caller +run_db_upgrade($db_version_now); +?> From 8b28b25e1812d2dcd6dcc147042a77f4115ca6eb Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Fri, 21 Mar 2014 15:49:30 +0100 Subject: [PATCH 4/6] [CHANGE] Moved SQL files into upgrade script --- sql/012_accounts_update.sql | 3 --- sql/013_tokentype_update.sql | 6 ------ sql/014_accounts_update.sql | 5 ----- sql/015_accounts_update.sql | 3 --- sql/016_transactions_update.sql | 2 -- sql/017_blocks_update.sql | 2 -- upgrade/definitions/0.0.1_to_0.0.2.inc.php | 19 ++++++++++++++++++ upgrade/definitions/0.0.2_to_0.0.3.inc.php | 23 ++++++++++++++++++++++ upgrade/definitions/0.0.3_to_0.0.4.inc.php | 22 +++++++++++++++++++++ upgrade/definitions/0.0.4_to_0.0.5.inc.php | 21 ++++++++++++++++++++ upgrade/definitions/0.0.5_to_0.0.6.inc.php | 19 ++++++++++++++++++ upgrade/definitions/0.0.6_to_0.0.7.inc.php | 19 ++++++++++++++++++ upgrade/run_upgrades.php | 17 +++++++++++++++- 13 files changed, 139 insertions(+), 22 deletions(-) delete mode 100644 sql/012_accounts_update.sql delete mode 100644 sql/013_tokentype_update.sql delete mode 100644 sql/014_accounts_update.sql delete mode 100644 sql/015_accounts_update.sql delete mode 100644 sql/016_transactions_update.sql delete mode 100644 sql/017_blocks_update.sql create mode 100755 upgrade/definitions/0.0.1_to_0.0.2.inc.php create mode 100755 upgrade/definitions/0.0.2_to_0.0.3.inc.php create mode 100755 upgrade/definitions/0.0.3_to_0.0.4.inc.php create mode 100755 upgrade/definitions/0.0.4_to_0.0.5.inc.php create mode 100755 upgrade/definitions/0.0.5_to_0.0.6.inc.php create mode 100755 upgrade/definitions/0.0.6_to_0.0.7.inc.php diff --git a/sql/012_accounts_update.sql b/sql/012_accounts_update.sql deleted file mode 100644 index 2ba7cbbe..00000000 --- a/sql/012_accounts_update.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE `accounts` CHANGE `sessionTimeoutStamp` `last_login` INT( 10 ) NULL DEFAULT NULL ; -INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.2') ON DUPLICATE KEY UPDATE `value` = '0.0.2'; -INSERT INTO `settings` (`name`, `value`) VALUES ('db_upgrade_required', 0) ON DUPLICATE KEY UPDATE `value` = 0; diff --git a/sql/013_tokentype_update.sql b/sql/013_tokentype_update.sql deleted file mode 100644 index 8445e2f7..00000000 --- a/sql/013_tokentype_update.sql +++ /dev/null @@ -1,6 +0,0 @@ -INSERT INTO `token_types` (`name`, `expiration`) VALUES ('account_edit', 360); -INSERT INTO `token_types` (`name`, `expiration`) VALUES ('change_pw', 360); -INSERT INTO `token_types` (`name`, `expiration`) VALUES ('withdraw_funds', 360); -CREATE INDEX `account_id` ON `notification_settings` (`account_id`); -CREATE UNIQUE INDEX `account_id_type` ON `notification_settings` (`account_id`,`type`); -INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.3') ON DUPLICATE KEY UPDATE `value` = '0.0.3'; diff --git a/sql/014_accounts_update.sql b/sql/014_accounts_update.sql deleted file mode 100644 index ed7802c0..00000000 --- a/sql/014_accounts_update.sql +++ /dev/null @@ -1,5 +0,0 @@ -ALTER TABLE `accounts` ADD COLUMN `signup_timestamp` INT( 10 ) NOT NULL DEFAULT '0' AFTER `failed_pins`; -ALTER TABLE `accounts` ADD COLUMN `notify_email` VARCHAR( 255 ) NULL DEFAULT NULL AFTER `email`; -TRUNCATE TABLE `token_types`; -INSERT INTO `token_types` (`id`, `name`, `expiration`) VALUES (1, 'password_reset', 3600), (2, 'confirm_email', 0), (3, 'invitation', 0), (4, 'account_unlock', 0), (5, 'account_edit', 3600), (6, 'change_pw', 3600), (7, 'withdraw_funds', 3600); -INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.4') ON DUPLICATE KEY UPDATE `value` = '0.0.4'; diff --git a/sql/015_accounts_update.sql b/sql/015_accounts_update.sql deleted file mode 100644 index 3ff16668..00000000 --- a/sql/015_accounts_update.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE `accounts` SET `coin_address` = NULL WHERE `coin_address` = ''; -ALTER TABLE `accounts` ADD UNIQUE INDEX ( `coin_address` ) ; -INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.5') ON DUPLICATE KEY UPDATE `value` = '0.0.5'; diff --git a/sql/016_transactions_update.sql b/sql/016_transactions_update.sql deleted file mode 100644 index 6458aab8..00000000 --- a/sql/016_transactions_update.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE INDEX `account_id_archived` ON `transactions` (`account_id`,`archived`); -INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.6') ON DUPLICATE KEY UPDATE `value` = '0.0.6'; diff --git a/sql/017_blocks_update.sql b/sql/017_blocks_update.sql deleted file mode 100644 index 0e87da9b..00000000 --- a/sql/017_blocks_update.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE `blocks` CHANGE `share_id` `share_id` BIGINT( 30 ) NULL DEFAULT NULL ; -INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.7') ON DUPLICATE KEY UPDATE `value` = '0.0.7'; diff --git a/upgrade/definitions/0.0.1_to_0.0.2.inc.php b/upgrade/definitions/0.0.1_to_0.0.2.inc.php new file mode 100755 index 00000000..1b24ca56 --- /dev/null +++ b/upgrade/definitions/0.0.1_to_0.0.2.inc.php @@ -0,0 +1,19 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $aSql[] = "ALTER TABLE `accounts` CHANGE `sessionTimeoutStamp` `last_login` INT( 10 ) NULL DEFAULT NULL"; + $aSql[] = "INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.2') ON DUPLICATE KEY UPDATE `value` = '0.0.2'"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + execute_db_upgrade($aSql); + } +} +?> diff --git a/upgrade/definitions/0.0.2_to_0.0.3.inc.php b/upgrade/definitions/0.0.2_to_0.0.3.inc.php new file mode 100755 index 00000000..c7025fcb --- /dev/null +++ b/upgrade/definitions/0.0.2_to_0.0.3.inc.php @@ -0,0 +1,23 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $aSql[] = "INSERT INTO `token_types` (`name`, `expiration`) VALUES ('account_edit', 360)"; + $aSql[] = "INSERT INTO `token_types` (`name`, `expiration`) VALUES ('change_pw', 360)"; + $aSql[] = "INSERT INTO `token_types` (`name`, `expiration`) VALUES ('withdraw_funds', 360)"; + $aSql[] = "CREATE INDEX `account_id` ON `notification_settings` (`account_id`)"; + $aSql[] = "CREATE UNIQUE INDEX `account_id_type` ON `notification_settings` (`account_id`,`type`)"; + $aSql[] = "INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.3') ON DUPLICATE KEY UPDATE `value` = '0.0.3'"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + execute_db_upgrade($aSql); + } +} +?> diff --git a/upgrade/definitions/0.0.3_to_0.0.4.inc.php b/upgrade/definitions/0.0.3_to_0.0.4.inc.php new file mode 100755 index 00000000..d843a4aa --- /dev/null +++ b/upgrade/definitions/0.0.3_to_0.0.4.inc.php @@ -0,0 +1,22 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $aSql[] = "ALTER TABLE `accounts` ADD COLUMN `signup_timestamp` INT( 10 ) NOT NULL DEFAULT '0' AFTER `failed_pins`"; + $aSql[] = "ALTER TABLE `accounts` ADD COLUMN `notify_email` VARCHAR( 255 ) NULL DEFAULT NULL AFTER `email`"; + $aSql[] = "TRUNCATE TABLE `token_types`"; + $aSql[] = "INSERT INTO `token_types` (`id`, `name`, `expiration`) VALUES (1, 'password_reset', 3600), (2, 'confirm_email', 0), (3, 'invitation', 0), (4, 'account_unlock', 0), (5, 'account_edit', 3600), (6, 'change_pw', 3600), (7, 'withdraw_funds', 3600)"; + $aSql[] = "INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.4') ON DUPLICATE KEY UPDATE `value` = '0.0.4'"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + execute_db_upgrade($aSql); + } +} +?> diff --git a/upgrade/definitions/0.0.4_to_0.0.5.inc.php b/upgrade/definitions/0.0.4_to_0.0.5.inc.php new file mode 100755 index 00000000..fb5d87fb --- /dev/null +++ b/upgrade/definitions/0.0.4_to_0.0.5.inc.php @@ -0,0 +1,21 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $aSql[] = "ALTER TABLE `accounts` ADD COLUMN `signup_timestamp` INT( 10 ) NOT NULL DEFAULT '0' AFTER `failed_pins`"; + $aSql[] = "UPDATE `accounts` SET `coin_address` = NULL WHERE `coin_address` = ''"; + $aSql[] = "ALTER TABLE `accounts` ADD UNIQUE INDEX ( `coin_address` )"; + $aSql[] = "INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.5') ON DUPLICATE KEY UPDATE `value` = '0.0.5'"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + execute_db_upgrade($aSql); + } +} +?> diff --git a/upgrade/definitions/0.0.5_to_0.0.6.inc.php b/upgrade/definitions/0.0.5_to_0.0.6.inc.php new file mode 100755 index 00000000..a87658c5 --- /dev/null +++ b/upgrade/definitions/0.0.5_to_0.0.6.inc.php @@ -0,0 +1,19 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $aSql[] = "CREATE INDEX `account_id_archived` ON `transactions` (`account_id`,`archived`)"; + $aSql[] = "INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.6') ON DUPLICATE KEY UPDATE `value` = '0.0.6'"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + execute_db_upgrade($aSql); + } +} +?> diff --git a/upgrade/definitions/0.0.6_to_0.0.7.inc.php b/upgrade/definitions/0.0.6_to_0.0.7.inc.php new file mode 100755 index 00000000..2b5bebfe --- /dev/null +++ b/upgrade/definitions/0.0.6_to_0.0.7.inc.php @@ -0,0 +1,19 @@ +getValue('DB_VERSION'); // Our actual version installed + + // Upgrade specific variables + $aSql[] = "ALTER TABLE `blocks` CHANGE `share_id` `share_id` BIGINT( 30 ) NULL DEFAULT NULL"; + $aSql[] = "INSERT INTO `settings` (`name`, `value`) VALUES ('DB_VERSION', '0.0.7') ON DUPLICATE KEY UPDATE `value` = '0.0.7'"; + + if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) { + execute_db_upgrade($aSql); + } +} +?> diff --git a/upgrade/run_upgrades.php b/upgrade/run_upgrades.php index dd949c8a..c0d02298 100755 --- a/upgrade/run_upgrades.php +++ b/upgrade/run_upgrades.php @@ -11,7 +11,7 @@ require_once('shared.inc.php'); // Fetch current version $db_version_now = $setting->getValue('DB_VERSION'); -// Helper function +// Helper functions function run_db_upgrade($db_version_now) { // Find upgrades $files = glob(dirname(__FILE__) . "/definitions/${db_version_now}_to_*"); @@ -27,6 +27,21 @@ function run_db_upgrade($db_version_now) { run_db_upgrade($db_version_to); } } +function execute_db_upgrade($aSql) { + global $mysqli; + // Run the upgrade + echo '- Starting database migration to version ' . $db_version_new . PHP_EOL; + foreach ($aSql as $sql) { + echo '- Preparing: ' . $sql . PHP_EOL; + $stmt = $mysqli->prepare($sql); + if ($stmt && $stmt->execute()) { + echo '- success' . PHP_EOL; + } else { + echo '- failed: ' . $mysqli->error . PHP_EOL; + exit(1); + } + } +} // Initial caller run_db_upgrade($db_version_now); From 3223e40cc6aed3a8548da01659185cfb9e197630 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Fri, 21 Mar 2014 16:05:59 +0100 Subject: [PATCH 5/6] [FIXED] Charset on payouts table, non-critical --- sql/000_base_structure.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/000_base_structure.sql b/sql/000_base_structure.sql index 29432c22..38580220 100644 --- a/sql/000_base_structure.sql +++ b/sql/000_base_structure.sql @@ -111,7 +111,7 @@ CREATE TABLE IF NOT EXISTS `payouts` ( `completed` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `account_id` (`account_id`,`completed`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `pool_worker` ( `id` int(255) NOT NULL AUTO_INCREMENT, From 7945b87213095e1125c609d11c5ef21663e96e5e Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Fri, 21 Mar 2014 18:28:12 +0100 Subject: [PATCH 6/6] [FIX] 0.0.8 Upgrade SQL --- upgrade/definitions/0.0.7_to_0.0.8.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/upgrade/definitions/0.0.7_to_0.0.8.inc.php b/upgrade/definitions/0.0.7_to_0.0.8.inc.php index 623af7e1..b2bae79f 100755 --- a/upgrade/definitions/0.0.7_to_0.0.8.inc.php +++ b/upgrade/definitions/0.0.7_to_0.0.8.inc.php @@ -10,8 +10,8 @@ function run_008() { // Upgrade specific variables $dDifficulty = POW(2, ($config['difficulty'] - 16)); - $aSql[] = "UPDATE " . $statistics->getTableName() . " SET valid = valid / $dDifficulty, invalid = invalid / $dDifficulty, pplns_valid = pplns_valid / $dDifficulty, pplns_invalid = pplns_invalid / $dDifficulty"; - $aSql[] = "UPDATE " . $block->getTableName() . " SET shares = shares / $dDifficulty"; + $aSql[] = "UPDATE " . $statistics->getTableName() . " SET valid = valid * $dDifficulty, invalid = invalid * $dDifficulty, pplns_valid = pplns_valid * $dDifficulty, pplns_invalid = pplns_invalid * $dDifficulty"; + $aSql[] = "UPDATE " . $block->getTableName() . " SET shares = shares * $dDifficulty"; $aSql[] = "UPDATE " . $setting->getTableName() . " SET value = '0.0.8' WHERE name = 'DB_VERSION'"; if ($db_version_now == $db_version_old && version_compare($db_version_now, DB_VERSION, '<')) {