Merge pull request #2402 from MPOS/development

UPDATE : Development to Master
This commit is contained in:
Sebastian Grewe 2015-04-28 19:56:31 +02:00
commit 50af83680c
211 changed files with 4383 additions and 17205 deletions

View File

@ -1,3 +1,36 @@
1.0.2 (Apr 28th 2015)
---------------------
* Allow SSO accross MPOS pools
* Added a new config options
* `$config['db']['shared']['acounts']`, defaults to `$config['db']['name']`
* `$config['db']['shared']['workers']`, defaults to `$config['db']['name']`
* `$config['db']['shared']['news']`, defaults to `$config['db']['name']`
* Will access `accounts`, `pool_workers` and `news` on shared table
* Does not allow splitting `accounts` and `pool_woker` across database hosts
* Required `$config['cookie']['domain']` to be set
* You need to use the top domain shared between hosts as the setting
* e.g. `ltc.thepool.com` and `btc.thepool.com` it has to be `.thepool.com` (NOTE the leading .)
* Increased information on `Admin -> Wallet Info`
* Added block count to Wallet Status
* Added number of accounts to Wallet Status
* Added Peer information
* Added last 25 transactions
* Can be changed via Admin System Settings -> Wallet
* Always show all accounts
* Updated Auto Payout Threshold to be stored in `coin_address` table
* Existing thresholds will be migrated when upgrading
* Update to `1.0.1` for the database using the upgrade script supplied in MPOS
* Updated Bootstrap to 3.3.4
* Updated MorrisJS to 0.5.1
* Updated RaphaelJS to 2.1.2
* Updated Bootstrap Switch to 3.3.2
* Updated CLEditor to 1.4.5
* Removed unneeded JS files
* Removed unneeded CSS files
* Fixed ding for block notifications not playing on Safari
* Fixed manual payout warning to show when account balance is too low
1.0.1 (Apr 15th 2015)
---------------------

View File

@ -1,4 +1,4 @@
[![Build Status](https://travis-ci.org/MPOS/php-mpos.png?branch=master)](https://travis-ci.org/MPOS/php-mpos) [![Code Coverage](https://scrutinizer-ci.com/g/MPOS/php-mpos/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/MPOS/php-mpos/?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/MPOS/php-mpos/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/MPOS/php-mpos/?branch=master) master<br />
[![Build Status](https://travis-ci.org/MPOS/php-mpos.png?branch=master)](https://travis-ci.org/MPOS/php-mpos) [![Code Climate](https://codeclimate.com/github/MPOS/php-mpos/badges/gpa.svg)](https://codeclimate.com/github/MPOS/php-mpos) [![Code Coverage](https://scrutinizer-ci.com/g/MPOS/php-mpos/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/MPOS/php-mpos/?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/MPOS/php-mpos/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/MPOS/php-mpos/?branch=master) master<br />
[![Build Status](https://travis-ci.org/MPOS/php-mpos.png?branch=development)](https://travis-ci.org/MPOS/php-mpos) [![Code Coverage](https://scrutinizer-ci.com/g/MPOS/php-mpos/badges/coverage.png?b=development)](https://scrutinizer-ci.com/g/MPOS/php-mpos/?branch=development) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/MPOS/php-mpos/badges/quality-score.png?b=development)](https://scrutinizer-ci.com/g/MPOS/php-mpos/?branch=development) development

View File

@ -80,4 +80,3 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
}
require_once('cron_end.inc.php');
?>

View File

@ -22,4 +22,3 @@ limitations under the License.
$monitoring->endCronjob($cron_name, 'OK', 0, false, false);
$monitoring->setStatus($cron_name . "_runtime", "time", microtime(true) - $cron_start[$cron_name]);
$monitoring->setStatus($cron_name . "_endtime", "date", time());
?>

View File

@ -178,4 +178,3 @@ if (empty($aAllBlocks)) {
}
require_once('cron_end.inc.php');
?>

View File

@ -75,4 +75,3 @@ if ($setting->getValue('notifications_disable_idle_worker') != 1) {
}
require_once('cron_end.inc.php');
?>

View File

@ -289,4 +289,3 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
}
require_once('cron_end.inc.php');
?>

View File

@ -200,4 +200,3 @@ if ($aAllBlocks = $block->getAllUnaccounted('ASC')) {
$log->logInfo("Completed PPS Payout");
require_once('cron_end.inc.php');
?>

View File

@ -169,4 +169,3 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
}
require_once('cron_end.inc.php');
?>

View File

@ -87,5 +87,3 @@ if ($setting->getValue('DB_VERSION') != DB_VERSION || $config['version'] != CONF
$log->logFatal('Cronjob is currently disabled due to required upgrades. Import any outstanding SQL files and check your configuration file.');
$monitoring->endCronjob($cron_name, 'E0075', 0, true, false);
}
?>

View File

@ -55,4 +55,3 @@ $statistics->getCurrentHashrate() ? $status = 'OK' : $status = 'ERROR';
$log->logInfo(sprintf($strLogMask, 'getTopContributors(shares)', number_format(microtime(true) - $start, 3), $status));
require_once('cron_end.inc.php');
?>

View File

@ -89,4 +89,3 @@ $log->logInfo(sprintf($strLogMask, 'purgeUserStats', $affected, number_format(mi
// Cron cleanup and monitoring
require_once('cron_end.inc.php');
?>

View File

@ -76,4 +76,3 @@ if ($api_keys = $setting->getValue('monitoring_uptimerobot_api_keys')) {
$log->logInfo(sprintf($strLogMask, 'Uptime Robot', 'n/a', number_format(microtime(true) - $start, 3), $status, $message));
require_once('cron_end.inc.php');
?>

View File

@ -148,5 +148,3 @@ if (@$_SESSION['USERDATA']['is_admin'] && $user->isAdmin(@$_SESSION['USERDATA'][
}
}
}
?>

View File

@ -80,5 +80,3 @@ require_once(CLASS_DIR . '/news.class.php');
require_once(CLASS_DIR . '/api.class.php');
require_once(INCLUDE_DIR . '/lib/Michelf/Markdown.php');
require_once(INCLUDE_DIR . '/lib/scrypt.php');
?>

View File

@ -14,6 +14,16 @@ $quickstartlink = "<a href='https://github.com/MPOS/php-mpos/wiki/Quick-Start-Gu
if (!include_once(INCLUDE_DIR . '/config/global.inc.dist.php')) die('Unable to load base global config from ['.INCLUDE_DIR. '/config/global.inc.dist.php' . '] - '.$quickstartlink);
if (!@include_once(INCLUDE_DIR . '/config/global.inc.php')) die('Unable to load your global config from ['.INCLUDE_DIR. '/config/global.inc.php' . '] - '.$quickstartlink);
// Check for a shared account database and set to default DB if unset
if (!isset($config['db']['shared']['accounts']))
$config['db']['shared']['accounts'] = $config['db']['name'];
// Check for a shared worker database and set to default DB if unset
if (!isset($config['db']['shared']['workers']))
$config['db']['shared']['workers'] = $config['db']['name'];
// Check for a shared news database and set to default DB if unset
if (!isset($config['db']['shared']['news']))
$config['db']['shared']['news'] = $config['db']['name'];
// load our security configs
if (!include_once(INCLUDE_DIR . '/config/security.inc.dist.php')) die('Unable to load base security config from ['.INCLUDE_DIR. '/config/security.inc.dist.php' . '] - '.$quickstartlink);
if (@file_exists(INCLUDE_DIR . '/config/security.inc.php')) include_once(INCLUDE_DIR . '/config/security.inc.php');
@ -43,5 +53,3 @@ $master_template = 'master.tpl';
// Load Classes, they name defines the $ variable used
// We include all needed files here, even though our templates could load them themself
require_once(INCLUDE_DIR . '/autoloader.inc.php');
?>

View File

@ -284,4 +284,3 @@ class Base {
return $array;
}
}
?>

View File

@ -3,7 +3,17 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
class CoinAddress extends Base {
protected $table = 'coin_addresses';
private $cache = array();
/**
* We allow changing the database for shared accounts across pools
* Load the config on construct so we can assign the DB name
* @param config array MPOS configuration
* @return none
**/
public function __construct($config) {
$this->setConfig($config);
$this->table = $this->config['db']['shared']['accounts'] . '.' . $this->table;
}
/**
* Fetch users coin address for a currency
@ -27,6 +37,29 @@ class CoinAddress extends Base {
return $this->sqlError();
}
/**
* Fetch users Auto Payout Threshold for a currency
* @param UserID int UserID
* @return mixed Float value for threshold, false on error
**/
public function getAPThreshold($userID, $currency=NULL) {
if ($currency === NULL) $currency = $this->config['currency'];
$this->debug->append("STA " . __METHOD__, 4);
$stmt = $this->mysqli->prepare("
SELECT ap_threshold
FROM " . $this->getTableName() . "
WHERE account_id = ? AND currency = ?
");
if ( $this->checkStmt($stmt) && $stmt->bind_param('is', $userID, $currency) && $stmt->execute() && $result = $stmt->get_result()) {
if ($result->num_rows == 1) {
return $result->fetch_object()->ap_threshold;
}
}
$this->debug->append("Unable to fetch users auto payout threshold for " . $currency);
return $this->sqlError();
}
/**
* Check if a coin address is already set
* @param address string Coin Address to check for
@ -76,23 +109,24 @@ class CoinAddress extends Base {
* Update a coin address record for a user and a currency
* @param userID int Account ID
* @param address string Coin Address
* @param ap_threshold float Threshold for auto payouts for this currency
* @param currency string Currency short handle, defaults to config option
* @return bool true or false
**/
public function update($userID, $address, $currency=NULL) {
public function update($userID, $address, $ap_threshold, $currency=NULL) {
if ($currency === NULL) $currency = $this->config['currency'];
if ($address != $this->getCoinAddress($userID) && $this->existsCoinAddress($address)) {
$this->setErrorMessage('Unable to update coin address, address already exists');
return false;
}
if ($this->getCoinAddress($userID) != NULL) {
$stmt = $this->mysqli->prepare("UPDATE " . $this->getTableName() . " SET coin_address = ? WHERE account_id = ? AND currency = ?");
if ( $this->checkStmt($stmt) && $stmt->bind_param('sis', $address, $userID, $currency) && $stmt->execute()) {
$stmt = $this->mysqli->prepare("UPDATE " . $this->getTableName() . " SET coin_address = ?, ap_threshold = ? WHERE account_id = ? AND currency = ?");
if ( $this->checkStmt($stmt) && $stmt->bind_param('sdis', $address, $ap_threshold, $userID, $currency) && $stmt->execute()) {
return true;
}
} else {
$stmt = $this->mysqli->prepare("INSERT INTO " . $this->getTableName() . " (coin_address, account_id, currency) VALUES (?, ?, ?)");
if ( $this->checkStmt($stmt) && $stmt->bind_param('sis', $address, $userID, $currency) && $stmt->execute()) {
$stmt = $this->mysqli->prepare("INSERT INTO " . $this->getTableName() . " (coin_address, ap_threshold, account_id, currency) VALUES (?, ?, ?, ?)");
if ( $this->checkStmt($stmt) && $stmt->bind_param('sdis', $address, $ap_threshold, $userID, $currency) && $stmt->execute()) {
return true;
}
}
@ -100,8 +134,7 @@ class CoinAddress extends Base {
}
}
$coin_address = new CoinAddress();
$coin_address = new CoinAddress($config);
$coin_address->setDebug($debug);
$coin_address->setConfig($config);
$coin_address->setMysql($mysqli);
$coin_address->setErrorCodes($aErrorCodes);

View File

@ -85,5 +85,3 @@ class CoinBase extends Base {
}
}
}
?>

View File

@ -9,5 +9,3 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
class Coin extends CoinBase {
protected $target_bits = 16;
}
?>

View File

@ -12,5 +12,3 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
class Coin extends CoinBase {
protected $target_bits = 16;
}
?>

View File

@ -10,5 +10,3 @@ class Coin extends CoinBase {
protected $target_bits = 32;
protected $coin_value_precision = 20;
}
?>

View File

@ -10,5 +10,3 @@ class Coin extends CoinBase {
protected $target_bits = 24;
protected $share_difficulty_precision = 4;
}
?>

View File

@ -104,4 +104,3 @@ $csrftoken->setUser($user);
$csrftoken->setToken($oToken);
$csrftoken->setConfig($config);
$csrftoken->setErrorCodes($aErrorCodes);
?>

View File

@ -111,4 +111,3 @@ class Debug {
// Instantiate this class
$debug = new Debug($log, $config['DEBUG']);
?>

View File

@ -139,4 +139,3 @@ $invitation->setUser($user);
$invitation->setToken($oToken);
$invitation->setConfig($config);
$invitation->setErrorCodes($aErrorCodes);
?>

View File

@ -57,4 +57,3 @@ class Logger {
}
}
$log = new Logger($config);
?>

View File

@ -117,4 +117,3 @@ $mail->setSmarty($smarty);
$mail->setConfig($config);
$mail->setSetting($setting);
$mail->setErrorCodes($aErrorCodes);
?>

View File

@ -81,5 +81,3 @@ class MemcacheAntiDos
return $new;
}
}
?>

View File

@ -4,6 +4,17 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
class News extends Base {
protected $table = 'news';
/**
* We allow changing the database for shared accounts across pools
* Load the config on construct so we can assign the DB name
* @param config array MPOS configuration
* @return none
**/
public function __construct($config) {
$this->setConfig($config);
$this->table = $this->config['db']['shared']['news'] . '.' . $this->table;
}
/**
* Get activation status of post
* @param id int News ID
@ -96,9 +107,8 @@ class News extends Base {
}
}
$news = new News();
$news = new News($config);
$news->setDebug($debug);
$news->setMysql($mysqli);
$news->setUser($user);
$news->setErrorCodes($aErrorCodes);
?>

View File

@ -195,4 +195,3 @@ $notification->setSmarty($smarty);
$notification->setConfig($config);
$notification->setSetting($setting);
$notification->setErrorCodes($aErrorCodes);
?>

View File

@ -67,5 +67,3 @@ $oPayout->setMysql($mysqli);
$oPayout->setConfig($config);
$oPayout->setToken($oToken);
$oPayout->setErrorCodes($aErrorCodes);
?>

View File

@ -2,11 +2,6 @@
$defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
class RoundStats extends Base {
private $tableTrans = 'transactions';
private $tableStats = 'statistics_shares';
private $tableBlocks = 'blocks';
private $tableUsers = 'accounts';
/**
* Get next block for round stats
**/
@ -79,7 +74,7 @@ class RoundStats extends Base {
b.id, height, blockhash, amount, confirmations, difficulty, FROM_UNIXTIME(time) as time, shares,
IF(a.is_anonymous, 'anonymous', a.username) AS finder,
ROUND(difficulty * POW(2, 32 - " . $this->coin->getTargetBits() . "), 0) AS estshares,
(time - (SELECT time FROM $this->tableBlocks WHERE height < ? ORDER BY height DESC LIMIT 1)) AS round_time
(time - (SELECT time FROM " . $this->block->getTableName() . " WHERE height < ? ORDER BY height DESC LIMIT 1)) AS round_time
FROM " . $this->block->getTableName() . " as b
LEFT JOIN " . $this->user->getTableName() . " AS a ON b.account_id = a.id
WHERE b.height = ? LIMIT 1");

View File

@ -927,4 +927,3 @@ $statistics->setConfig($config);
$statistics->setBitcoin($bitcoin);
$statistics->setErrorCodes($aErrorCodes);
$statistics->setCoin($coin);
?>

View File

@ -35,5 +35,3 @@ class mysqli_strict extends mysqli {
}
}
}
?>

View File

@ -355,7 +355,7 @@ class Transaction extends Base {
SELECT
a.id,
a.username,
a.ap_threshold,
ca.ap_threshold,
ca.coin_address,
IFNULL(
(
@ -371,9 +371,9 @@ class Transaction extends Base {
ON t.account_id = a.id
LEFT JOIN " . $this->coin_address->getTableName() . " AS ca
ON ca.account_id = a.id
WHERE t.archived = 0 AND a.ap_threshold > 0 AND ca.coin_address IS NOT NULL AND ca.coin_address != '' AND ca.currency = ?
WHERE t.archived = 0 AND ca.ap_threshold > 0 AND ca.coin_address IS NOT NULL AND ca.coin_address != '' AND ca.currency = ?
GROUP BY t.account_id
HAVING confirmed > a.ap_threshold AND confirmed > " . $this->config['txfee_auto'] . "
HAVING confirmed > ca.ap_threshold AND confirmed > " . $this->config['txfee_auto'] . "
LIMIT ?");
if ($this->checkStmt($stmt) && $stmt->bind_param('si', $this->config['currency'], $limit) && $stmt->execute() && $result = $stmt->get_result())
return $result->fetch_all(MYSQLI_ASSOC);
@ -446,7 +446,7 @@ class Transaction extends Base {
SELECT
a.id,
a.username,
a.ap_threshold,
ca.ap_threshold,
ca.coin_address,
p.id AS payout_id,
IFNULL(
@ -488,4 +488,3 @@ $transaction->setBlock($block);
$transaction->setUser($user);
$transaction->setPayout($oPayout);
$transaction->setErrorCodes($aErrorCodes);
?>

View File

@ -6,6 +6,17 @@ class User extends Base {
private $userID = false;
private $user = array();
/**
* We allow changing the database for shared accounts across pools
* Load the config on construct so we can assign the DB name
* @param config array MPOS configuration
* @return none
**/
public function __construct($config) {
$this->setConfig($config);
$this->table = $this->config['db']['shared']['accounts'] . '.' . $this->table;
}
// get and set methods
private function getHash($string, $version=0, $pepper='') {
switch($version) {
@ -340,11 +351,11 @@ class User extends Base {
$this->debug->append("STA " . __METHOD__, 4);
$stmt = $this->mysqli->prepare("
SELECT
a.id, a.username, ca.coin_address AS coin_address, a.ap_threshold
a.id, a.username, ca.coin_address AS coin_address, ca.ap_threshold
FROM " . $this->getTableName() . " AS a
LEFT JOIN " . $this->coin_address->getTableName() . " AS ca
ON a.id = ca.account_id
WHERE ap_threshold > 0 AND ca.currency = ?
WHERE ca.ap_threshold > 0 AND ca.currency = ?
AND ca.coin_address IS NOT NULL
");
if ( $this->checkStmt($stmt) && $stmt->bind_param('s', $this->config['currency']) && $stmt->execute() && $result = $stmt->get_result()) {
@ -544,12 +555,12 @@ class User extends Base {
if ($email == 'hidden' || $email == NULL)
$email = $this->getUserEmailById($userID);
// We passed all validation checks so update the account
$stmt = $this->mysqli->prepare("UPDATE $this->table SET ap_threshold = ?, donate_percent = ?, email = ?, timezone = ?, is_anonymous = ? WHERE id = ?");
if ($this->checkStmt($stmt) && $stmt->bind_param('ddssii', $threshold, $donate, $email, $timezone, $is_anonymous, $userID) && $stmt->execute()) {
$stmt = $this->mysqli->prepare("UPDATE $this->table SET donate_percent = ?, email = ?, timezone = ?, is_anonymous = ? WHERE id = ?");
if ($this->checkStmt($stmt) && $stmt->bind_param('dssii', $donate, $email, $timezone, $is_anonymous, $userID) && $stmt->execute()) {
$this->log->log("info", $this->getUserName($userID)." updated their account details");
// Update coin address too
// Update coin address and ap_threshold if coin_address is set
if ($address) {
if ($this->coin_address->update($userID, $address)) {
if ($this->coin_address->update($userID, $address, $threshold)) {
return true;
}
} else {
@ -698,12 +709,13 @@ class User extends Base {
$stmt = $this->mysqli->prepare("
SELECT
id AS id, username, pin, api_key, is_admin, is_anonymous, email, timezone, no_fees,
IFNULL(donate_percent, '0') as donate_percent, ap_threshold
IFNULL(donate_percent, '0') as donate_percent
FROM " . $this->getTableName() . "
WHERE id = ? LIMIT 0,1");
if ($this->checkStmt($stmt) && $stmt->bind_param('i', $userID) && $stmt->execute() && $result = $stmt->get_result()) {
$aData = $result->fetch_assoc();
$aData['coin_address'] = $this->coin_address->getCoinAddress($userID);
$aData['ap_threshold'] = $this->coin_address->getAPThreshold($userID);
$stmt->close();
return $aData;
}
@ -983,13 +995,12 @@ public function isAuthenticated($logout=true) {
}
// Make our class available automatically
$user = new User();
$user = new User($config);
$user->setDebug($debug);
$user->setLog($log);
$user->setMysql($mysqli);
$user->setSalt($config['SALT']);
$user->setSmarty($smarty);
$user->setConfig($config);
$user->setMail($mail);
$user->setToken($oToken);
$user->setBitcoin($bitcoin);

View File

@ -4,6 +4,17 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
class Worker extends Base {
protected $table = 'pool_worker';
/**
* We allow changing the database for shared accounts across pools
* Load the config on construct so we can assign the DB name
* @param config array MPOS configuration
* @return none
**/
public function __construct($config) {
$this->setConfig($config);
$this->table = $this->config['db']['shared']['workers'] . '.' . $this->table;
}
/**
* Update worker list for a user
* @param account_id int User ID
@ -294,13 +305,11 @@ class Worker extends Base {
}
}
$worker = new Worker();
$worker = new Worker($config);
$worker->setDebug($debug);
$worker->setMysql($mysqli);
$worker->setMemcache($memcache);
$worker->setShare($share);
$worker->setConfig($config);
$worker->setUser($user);
$worker->setErrorCodes($aErrorCodes);
$worker->setCoin($coin);
?>

View File

@ -146,6 +146,13 @@ $aSettings['wallet'][] = array(
'name' => 'wallet_cold_coins', 'value' => $setting->getValue('wallet_cold_coins'),
'tooltip' => 'Amount of coins held in a pools cold wallet.'
);
$aSettings['wallet'][] = array(
'display' => 'Transaction Limit', 'type' => 'text',
'size' => 6,
'default' => 25,
'name' => 'wallet_transaction_limit', 'value' => $setting->getValue('wallet_transaction_limit'),
'tooltip' => 'Maximum amount of transactions to list in Admin Wallet Info.'
);
$aSettings['statistics'][] = array(
'display' => 'Ajax Refresh Interval', 'type' => 'select',
'options' => array('5' => '5', '10' => '10', '15' => '15', '30' => '30', '60' => '60' ),

View File

@ -78,4 +78,3 @@ $aErrorCodes['E0079'] = 'Wallet does not cover payouts total amount';
$aErrorCodes['E0080'] = 'No new unaccounted shares since last run';
$aErrorCodes['E0081'] = 'Failed to insert new block into database';
$aErrorCodes['E0082'] = 'Block does not supply any usable confirmation information';
?>

View File

@ -6,7 +6,7 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
* Also the URL to check for the most recent upstream versions available
* https://github.com/MPOS/php-mpos/wiki/Config-Setup#wiki-config-version
**/
$config['version'] = '1.0.0';
$config['version'] = '1.0.1';
$config['version_url'] = 'https://raw.githubusercontent.com/MPOS/php-mpos/master/include/version.inc.php';
/**
@ -54,6 +54,11 @@ $config['db']['user'] = 'someuser';
$config['db']['pass'] = 'somepass';
$config['db']['port'] = 3306;
$config['db']['name'] = 'mpos';
// Disabled by default and set in bootstrap if unset, but left in here so
// people know it exists
// $config['db']['shared']['accounts'] = $config['db']['name'];
// $config['db']['shared']['workers'] = $config['db']['name'];
// $config['db']['shared']['news'] = $config['db']['name'];
/**
* Local wallet RPC
@ -297,5 +302,3 @@ $config['smarty']['cache_lifetime'] = 30;
* https://github.com/MPOS/php-mpos/wiki/Config-Setup#wiki-system-load
**/
$config['system']['load']['max'] = 10.0;
?>

View File

@ -4,4 +4,3 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
define('STATISTICS_ALL_USER_SHARES', 'STATISTICS_ALL_USER_SHARES');
define('STATISTICS_ALL_USER_HASHRATES', 'STATISTICS_ALL_USER_HASHRATES');
define('STATISTICS_ROUND_SHARES', 'STATISTICS_ROUND_SHARES');
?>

View File

@ -11,5 +11,3 @@ switch ($config['payout_system']) {
}
$aMonitorCrons = array('statistics','tickerupdate','notifications','tables_cleanup','findblock',$sPayoutSystem,'blockupdate','payouts');
?>

View File

@ -59,5 +59,3 @@ $config['twofactor']['options']['changepw'] = true;
**/
$config['maxfailed']['login'] = 3;
$config['maxfailed']['pin'] = 3;
?>

View File

@ -17,5 +17,3 @@ if ($mysqli->query('/* MYSQLND_MS_MASTER_SWITCH */SELECT @@global.read_only AS r
if (mysqli_connect_errno()) {
die("Failed to connect to database");
}
?>

View File

@ -3091,4 +3091,3 @@ class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
}
}
?>

View File

@ -35,6 +35,3 @@ class MarkdownExtra extends \Michelf\_MarkdownExtra_TmpImpl {
# See note above.
}
?>

View File

@ -272,6 +272,3 @@ function recaptcha_mailhide_html($pubkey, $privkey, $email) {
"' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
}
?>

View File

@ -532,5 +532,3 @@ function word_reverse($str) {
}
return $ret;
}
?>

View File

@ -31,4 +31,3 @@ function check_acl_access($params, $smarty)
break;
}
}
?>

View File

@ -3,4 +3,3 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -3,4 +3,3 @@ $defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -5,4 +5,3 @@ if ($user->isAuthenticated()) {
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
}
?>

View File

@ -19,5 +19,3 @@ if ($user->isAuthenticated() AND !$setting->getValue('disable_transactionsummary
} else {
$smarty->assign('CONTENT', 'disabled.tpl');
}
?>

View File

@ -103,7 +103,7 @@ if ($user->isAuthenticated()) {
} else if ($config['twofactor']['enabled'] && $config['twofactor']['options']['withdraw'] && !$wf_editable) {
$_SESSION['POPUP'][] = array('CONTENT' => 'You have not yet unlocked account withdrawls.', 'TYPE' => 'alert alert-danger');
} else if ($aBalance['confirmed'] < $config['mp_threshold']) {
$_SESSION['POPUP'][] = array('CONTENT' => 'Payout must be greater or equal than ' . $config['mp_threshold'] . '.', 'TYPE' => 'info');
$_SESSION['POPUP'][] = array('CONTENT' => 'Account balance must be >= ' . $config['mp_threshold'] . ' to do a Manual Payout.', 'TYPE' => 'alert alert-warning');
} else if (!$coin_address->getCoinAddress($_SESSION['USERDATA']['id'])) {
$_SESSION['POPUP'][] = array('CONTENT' => 'You have no payout address set.', 'TYPE' => 'alert alert-danger');
} else {
@ -181,7 +181,7 @@ if ($config['twofactor']['enabled'] && $user->isAuthenticated()) {
$wf_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $wf_token, 7);
$wf_sent = $user->token->doesTokenExist('withdraw_funds', $_SESSION['USERDATA']['id']);
}
// display token info per each - only when sent and editable or just sent, not by default
(!empty($eaprep_sent) && !empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $eaprep_sent, 'TYPE' => 'alert alert-success'):"";
(!empty($eaprep_sent) && empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['ea'], 'TYPE' => 'alert alert-success'):"";
@ -206,4 +206,3 @@ $smarty->assign("DONATE_THRESHOLD", $config['donate_threshold']);
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -24,4 +24,3 @@ if ($user->isAuthenticated()) {
}
}
$smarty->assign('CONTENT', 'default.tpl');
?>

View File

@ -35,5 +35,3 @@ if ($user->isAuthenticated()) {
$smarty->assign('CONTENT', 'default.tpl');
}
}
?>

View File

@ -12,4 +12,3 @@ case '1':
$smarty->assign("CONTENT", "");
break;
}
?>

View File

@ -11,4 +11,3 @@ if ($user->isAuthenticated()) {
}
// Somehow we still need to load this empty template
$smarty->assign("CONTENT", "empty");
?>

View File

@ -15,4 +15,3 @@ if ($user->isAuthenticated()) {
$smarty->assign('DISABLE_TRANSACTIONSUMMARY', $setting->getValue('disable_transactionsummary'));
}
$smarty->assign('CONTENT', 'default.tpl');
?>

View File

@ -15,5 +15,3 @@ if (!isset($_GET['token']) || empty($_GET['token'])) {
}
}
$smarty->assign('CONTENT', 'default.tpl');
?>

View File

@ -55,6 +55,3 @@ if ($user->isAuthenticated()) {
$smarty->assign('CONTENT', 'default.tpl');
}
}
?>

View File

@ -9,4 +9,3 @@ if (!$user->isAuthenticated() || !$user->isAdmin($_SESSION['USERDATA']['id'])) {
// Tempalte specifics
$smarty->assign("CONTENT", "");
?>

View File

@ -18,4 +18,3 @@ if ($user->isAuthenticated()) {
}
$smarty->assign('CONTENT', 'default.tpl');
?>

View File

@ -21,4 +21,3 @@ if (!$setting->getValue('disable_invitations')) {
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -26,4 +26,3 @@ $smarty->assign("CRONSTATUS", $aCronStatus);
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -46,4 +46,3 @@ foreach ($aNews as $key => $aData) {
}
$smarty->assign("NEWS", $aNews);
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -24,4 +24,3 @@ if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->val
$aNews = $news->getEntry($_REQUEST['id']);
$smarty->assign("NEWS", $aNews);
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -38,4 +38,3 @@ if ($setting->getValue('notifications_disable_pool_newsletter', 0) == 1) {
}
$smarty->assign("CONTENT", "default.tpl");
}
?>

View File

@ -19,5 +19,3 @@ $smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notificat
$smarty->assign('LIMIT', $iLimit);
$smarty->assign('WORKERS', $aWorkers);
$smarty->assign('CONTENT', 'default.tpl');
?>

View File

@ -18,4 +18,3 @@ $smarty->assign("LASTREGISTEREDUSERS", $aLastRegisteredUsers);
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -81,4 +81,3 @@ if ($user->isAuthenticated(false)) {
} else {
$smarty->assign("CONTENT", "empty");
}
?>

View File

@ -27,4 +27,3 @@ $smarty->assign("SETTINGS", $aSettings);
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -37,4 +37,3 @@ if (isset($_REQUEST['filter'])) {
$smarty->assign('FILTERS', $strFilters);
}
$smarty->assign('CONTENT', 'default.tpl');
?>

View File

@ -83,4 +83,3 @@ if (isset($_REQUEST['filter'])) {
// Tempalte specifics
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -21,4 +21,3 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
}
$smarty->assign('CONTENT', 'default.tpl');
?>

View File

@ -22,6 +22,8 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
}
$aGetInfo = $bitcoin->getinfo();
$aGetPeerInfo = $bitcoin->getpeerinfo();
$aGetTransactions = $bitcoin->listtransactions('', (int)$setting->getValue('wallet_transaction_limit', 25));
if (is_array($aGetInfo) && array_key_exists('newmint', $aGetInfo)) {
$dNewmint = $aGetInfo['newmint'];
} else {
@ -32,6 +34,8 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
$dAddressCount = 0;
$dAccountAddresses = array();
$aGetInfo = array('errors' => 'Unable to connect');
$aGetPeerInfo = array();
$aGetTransactions = array();
$dBalance = 0;
$dNewmint = -1;
$_SESSION['POPUP'][] = array('CONTENT' => 'Unable to connect to wallet RPC service: ' . $bitcoin->can_connect(), 'TYPE' => 'alert alert-danger');
@ -48,6 +52,8 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
// Cold wallet balance
if (! $dColdCoins = $setting->getValue('wallet_cold_coins')) $dColdCoins = 0;
// Tempalte specifics
$smarty->assign("UNCONFIRMED", $dBlocksUnconfirmedBalance);
$smarty->assign("BALANCE", $dBalance);
$smarty->assign("ADDRESSCOUNT", $dAddressCount);
@ -57,11 +63,11 @@ if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
$smarty->assign("LOCKED", $dLockedBalance);
$smarty->assign("NEWMINT", $dNewmint);
$smarty->assign("COININFO", $aGetInfo);
// Tempalte specifics
$smarty->assign("PEERINFO", $aGetPeerInfo);
$smarty->assign('PRECISION', $coin->getCoinValuePrevision());
$smarty->assign("TRANSACTIONS", $aGetTransactions);
} else {
$debug->append('Using cached page', 3);
}
$smarty->assign("CONTENT", "default.tpl");
?>

View File

@ -9,4 +9,3 @@ $id = $user->checkApiKey(@$_REQUEST['api_key']);
header('HTTP/1.1 400 Bad Request');
die('400 Bad Request');
?>

View File

@ -18,4 +18,3 @@ echo $api->get_json($iBlock);
// Supress master template
$supress_master = 1;
?>

View File

@ -24,4 +24,3 @@ echo $api->get_json($aBlocks);
// Supress master template
$supress_master = 1;
?>

View File

@ -14,4 +14,3 @@ echo $api->get_json($blocks);
// Supress master template
$supress_master = 1;
?>

View File

@ -43,5 +43,3 @@ echo $api->get_json($aCronStatus);
// Supress master template
$supress_master = 1;
?>

View File

@ -12,4 +12,3 @@ echo $api->get_json($worker->getCountAllActiveWorkers());
// Supress master template
$supress_master = 1;
?>

View File

@ -119,4 +119,3 @@ $data = array(
);
echo $api->get_json($data);
?>

View File

@ -15,4 +15,3 @@ echo $api->get_json($dDifficulty);
// Supress master template
$supress_master = 1;
?>

View File

@ -16,4 +16,3 @@ echo $api->get_json($dEstimatedTime);
// Supress master template
$supress_master = 1;
?>

View File

@ -18,4 +18,3 @@ echo $api->get_json($data);
// Supress master template
$supress_master = 1;
?>

View File

@ -19,4 +19,3 @@ echo $api->get_json($dPoolHashrate);
// Supress master template
$supress_master = 1;
?>

View File

@ -36,4 +36,3 @@ echo $api->get_json($data);
// Supress master template
$supress_master = 1;
?>

View File

@ -15,4 +15,3 @@ echo json_encode(array('getpoolsharerate' => $statistics->getCurrentShareRate())
// Supress master template
$supress_master = 1;
?>

View File

@ -66,4 +66,3 @@ echo $api->get_json($data);
// Supress master template
$supress_master = 1;
?>

View File

@ -19,4 +19,3 @@ echo $api->get_json($dTimeSinceLast);
// Supress master template
$supress_master = 1;
?>

View File

@ -60,4 +60,3 @@ echo $api->get_json($data);
// Supress master template
$supress_master = 1;
?>

View File

@ -12,4 +12,3 @@ echo $api->get_json($transaction->getBalance($user_id));
// Supress master template
$supress_master = 1;
?>

View File

@ -22,4 +22,3 @@ echo $api->get_json($hashrate);
// Supress master template
$supress_master = 1;
?>

View File

@ -22,4 +22,3 @@ echo $api->get_json($sharerate);
// Supress master template
$supress_master = 1;
?>

View File

@ -28,4 +28,3 @@ echo $api->get_json($data);
// Supress master template
$supress_master = 1;
?>

View File

@ -27,4 +27,3 @@ echo $api->get_json($data);
// Supress master template
$supress_master = 1;
?>

View File

@ -15,4 +15,3 @@ echo $api->get_json($worker->getWorkers($user_id, $interval));
// Supress master template
$supress_master = 1;
?>

View File

@ -27,4 +27,3 @@ echo json_encode(
// Supress master template
$supress_master = 1;
?>

Some files were not shown because too many files have changed in this diff Show More