This will suspend any dashboard updates if the system load exceeds a
configurable threshold. Graphs will not update until the system load is
again below the threshold.
See dist config for new option.
Should help those pools suffering from too many live update users.
Will fix an issue with users receiving wrong mails, e.g. during password
resets ONLY IF smarty cache is enabled.
Please update ASAP if you have smarty caches enabled! This is a very big
issue. By default smarty caches are disabled and not recommended to be
used. See configuration file.
Fixes#899 once merged.
Allows pools to disable the dashboard and dashboard API completely.
Useful if you are not running a master/load(/load/load) setup to deal
with frequent live queries.
Fixes#876 once merged.
This should address issues with pools finishing very long rounds where
hashrate statistics suddenly dramatically increased. This was caused due
to both shares and archived shares being added before they they were
deleted from shares.
* adds the proper way to calculate user based hash- and sharerates.
* replaces `UNION ALL` with `UNION`
Fixes#642 once merged.
* We must ignore the last debit transaction to find the proper TX ID
that has been archived
This should now complete the fix for #853 - needs live testing but I am
confident it will work as intended. Deploying to my live FST pool for
testing.
Fixes issues with coins that did not implement a proper array index into
their `getmininginfo` output. Currently supported keys are
* networkhashps
* hashespersec
* netmhashps
If none of there are found or `getmininginfo` fails itself, we now
default to `0` to ensure the webfrontend still works.
Fixes#847 and also fixes#834 which has not reported back the
required information.
This will skip any updates if we detect the default string in our
settings table. Otherwise the script will return an error and disable
itself.
Fixes#839 once merged
* [ADDED] Block over times stats to blocks stats page
* [CHANGED] Split default block stats page template up into subtemplates
* [IMPROVED] Single SQL Query for all Block Stats over Time
* [UPDATED] Templates for new SQL Data
* [ADDED] More error codes
* [MODIFIED] Class updates to use Base Class all the time
* [MODIFIED] Cronjobs have been slightly adjusted
* [ADDED] More base class features
* [ADDED] new monitoring method : endCronjob
* [IMPROVED] Use newly added error codes
* [ADDED] mail notifications, enabled by default
* [ADDED] cron disable on fatal errors with exit code != 0
* [ADDED] Command line swtich: -f = Force running crons even if disabled
* [ADDED] Disabled status in monitoring site
This will improve error handling in our cronjobs. Fatal errors now
require manual intervention by explicityly running crons with the force
option (`-f`). Until they are forced to run, crons will stay disabled.
Fixes#773 once merged
* [FIX] Estimated shares on various places
* [ADDED] Calculate estimated shares based on network diff in stats
class
* [UPDATED] Themes updated as needed
Fixes#819 once merged
* [IMPROVED] Removed uneeded data array from round page
* [IMRPOVED] Sorted round shares via User ID as key for easier access
* [IMPROVED] Added share count to transaction list in prop
* [ADDED] New Config Option: Algorithm
* scrypt and sha256d supported right now
* might add SHA coin support across MPOS
* Compatible with previous implementation
* [REMOVED] config option: pps_target
* Replaced by config option: algorithm
* Please update your config, defaults to srypt now!
* [ADDED] Unpaid Shares in Dashboard
* [MODIFIED] User estshares from DB query instead template math
* [ADDED] Proper PPS caclulations to statistics getUserEstimates
* [IMPROVED] Updated themes to use new estimates format in global smarty
* [IMPROVED] Updated PPS Dashboard to update estimates via Ajax
* [IMPROVED] Added PPS estimates to getdashboarddata API
This will require theme updates for those sites relying on the
est_<value> format for user payout estimates!
Fixes#743 once merged.
* [ADDED] Allow findblocks to detect and fix out of order shares
* [IMPROVED] Share class extends Base class for common functions
* [IMPROVED] Added more debugging and logging output to cronjob
* [ADDED] Added various new methods to blocks, share, base classes
For an overview of errors thrown in crons, please check:
https://github.com/TheSerapher/php-mpos/wiki/Error-CodesFixes#759 once merged.
* `.htaccess` is used to re-define the error documents
* redirects to `index.php?page=error&action=<code>`
* does not work for MPOS inside subfolders yet
Addresses #734. If this works we can add this to all the other themes.
* Adjusted mmcfe-ng occurences in code
* Adjusted Database strucutre to only supply the full structure
* Adjusted default template to MPOS
Addresses #643
* [FEATURE] Allow in-class checking for user permissions
* [FEATURE] Allow in-class creation of the JSON data for coherence
* [FEATURE} Added API version in JSON data for client side checks
* [IMPROVEMENT] Adjusted all API calls to use the new JSON layout
**NOTE**: This is breaking backwads compatibility with the old API!
Please adjust your client application to support this new version.
The data array should not change much more other than added features.
* [FEATURE] Allow for PoS/PoW Detecion in getdifficulty
* [FEATURE] Allow for SHA detecion in getnetworkhashps
* [IMRPOVEMENT] Added caching for bitcoin values (30s only)
* Will reduce the amount of RPC calls for high load pages
* [FEATURE] Display both pool and personal hashrate
* [FEATURE] Use EnhancedLegendRendere to toggle lines in graph
* [IMPROVEMENT] Unified Ajax call for graph and gauges
* [IMPROVEMENT] Allow `getdashboarddata` to supply raw hashrate values
* [IMRPOVEMENT] Do not include smarty globals, they are not needed on the API
* [IMPROVEMENT] Display correct runtimeinformation of entire script, not
just the SQL queries
* Allows Admins to change the SQL Interval used in queries
* Default: 300 seconds / 5 minutes
* Allowed: 1 minute, 5 minutes, 10 minutes
* Tooltop in admin panel explains this setting
* Added data interval to API call for dashboard
* Added additional output to gauges footer
Addresses #444
* Allow to redirect to referrer page when access is denied
* Logout user and point towards login, add redirect
* Logout user as usual but added save redirects
* Adjusted templates and page codes
* Adding live-updates for gauges
* Adding new API calls
* Updated statistics to allow custom intervals
* Disabled caching for API calls for now
* Added new hashrate graph with auto-update
Addresses #444
This is just a WiP to test a new website template. Taken online from
source referenced in the sidebar footer.
Very nice and clean look, have not had the time to add all features yet
and is only used to demonstrate it.
* Added new configuration option `$config['network_confirmations']` to
dist config
* Default to 120 if not set
This will allow us to define a different confirmation level for user
transactions but still display blocks at their approriate unconfirmed
value when displaying them in the wallet information for admins. Risky
for pool owners but still a viable option.
Fixes#610
* Migrated configuration options to admin panel
* Removed configuration options from config file
* Added help text for each configuration option into panel
Addresses #622 and needs extensive testing by pools. A lot has changed
so pool owners might have to adjust their own templates to match this
new system.
First attempt addressing #610, still missing a detection for the actual
confirmation limit required for each block in case one lowers it in the
config.
* Properly sort the array prior to sending it back
* Sort from current to one hour earlier for proper data display
* Adjusted templates to use new sorted arrays
Fixes#606
* Added: API String QR Code for #582 and #591
This will allow more QRCodes being added that are specific to an
account. The require library is added and the API string can be used as
an example how codes are generated.
Fixes#582
* Fix hashrate calculations and include archived shares
* Fix worker activity to only check for our_result = Y shares
* Mark as active if worker has a hashrate > 0, removes a query
Addresses #561, crons need to be updated to remove the active flag from
as the worker activity and check the hashrate instead.
This will allow easier integration of new settings managed by the admin
panel. Includes setting types, tooltips, tabs etc.
No open ticket, just figured I'd add this.
* Added new column to transactions table (`007_transactions.sql`)
* Added setArchived method to mark old transactions as archived
* Honor archived flag in getBalance and getLockedBalance
This will further address and fix#536 once merged.
* Removed getAllTransactions method
* Unified getTransactions for users and admins
* Added filter abilities to user transaction view
This should speed up things a fair bit for transaction heavy pools.
Addresses #536
This addresses #497 and allows the admins to disable notifications
through the admin panel. Might be used by those relying on clients using
the API instead.
Once merged it will fix#497.
This will avoid double payouts via the website. Payouts will be
requested by users and processed by a cron. If, for whatever reason,
users do add two requests (it is checked if a payout exists) they would
only have one successful payout until their account balance is back up
to a save value to trigger the payout.
This should fix any issues with manual payouts being exploited through
the website. Will require some testing by others to ensure things work
as expected.
* Changed blockexplorer URL to use Blockhash instead of height
* Added calls to find current networks blocks blockhash
* Propagated changes onto temmplate
* Added new dist configuration for new blockexplorer URL
Fixes#446
Invitations can now be configured through admin panel settings. By
default, invitations are enabled. Invitation system is also available if
registrations are disabled. To completely remove the ability of new
users to sign up, disable both registration and invitations.
Fixes#330
This will allow users to send invitations to other people via email.
Each account will still need to confirm the email address if the option
is enabled.
Addresses #330, will need to allow pool operators to enable this feature
even with registrations turned off.
* Adding mail verification during account registration
* Added new dist file option for mail verification
* Added account confirmation page using tokens
* Added mail class into user class for password resets
* Moved password reset template
* Adjusted account registration page
* Adjusted user class for email confirmation
Also fixed a bug with smarty_cache_key not being used properly if smarty
is disabled. Key still needs to be available even if caching is disabled
Addresses #330 and prepare the ticket for invitation only system.
* Added token type class
* Storing Token Type as ID not varchar
* Added new system to user class and fixed issues with it
* Started on mail verification process in user class
* Updated autoloader
* Updated change password template
Addresses #330
* Added anonymous flag to accounts table
* Added checkbox for anonymous flag in edit account page
* Updated user class to support new flag
* Updated statistics class to support anonymous and donations
* Updated all templates showing usernames to show anonymous instead
* Added new SQL `ALTER TABLE` file for upgrading the table
Fixes#419 once merged.
This will fix an issue with templates of other users being applied to
different users logged in. Basically the first cached page would be
displayed for all users.
Created a new cache key for smarty to allow the user ID to be reference
in the cache key. Hence each user has their own cached file which will
be used.
Improved caching by creating subdirectories for cached files. This way
we won't run into a file limit per directory with a lot of cached files.
This fixes#430 and the mentioned issue in that report.
If no workers are found false is returned. Smarty is not able to set a
default on `false` values so we have to set it to 0 if the query failed.
Fixes#418
This will allow pages to skip loading data from backends like the
database or the wallet RPC server. If a cached page is detected and
valid, all dynamic content generation will be skipped completely.
Other pages that have not been adjusted in this commit will still fetch
backend data all the time. This will ensure clients always see the most
recent data, like worker information or account changes.
This should fix#309 completely but needs some testing.
Instead of just making it availble document the smarty cache feature.
It might work for users, but it's advised to rely on the memcache
instead.
Fixes#309
* Renamed configuration array to `smarty` => `cache`
* Added `smarty` => `cache_lifetime` to expire cache files properly
This should be safe to use, be aware that each page request is cached!
That includes any POST/GET calls to the site.
It does help in speeding up the site, up to 100% on some requests. For a
high traffic site it probably makes sense to enable this option with a
low cache lifetime to ensure most recent data.
Addresses #309
Instead of just making it availble document the smarty cache feature.
It might work for users, but it's advised to rely on the memcache
instead.
Fixes#309
* Added monitoring class to deal with monitoring events
* Added event calls to all important cronjobs
* Added cron_end include file for monitoring cleanups on successful runs
* Added Monitoring to autoloader
* Modified account page to check for running auto_payout in monitoring
* Added monitoring to Navigation bar
* Added monitoring controller page
Fixes#415
Now shares are calculated proper with
`id > ? AND id <= ?`
as boundaries. This will ensure the upstream result is also calculated
for the round.
Addresses #143
* Rebased with next to add logging functions
* Added block method to fetch specific block
* Modified getArchive shares method to be more constistent
* Added new global configuration
* Adjusted smarty globals with new configuration
* More verbose pplns cron with logging
* Re-target the round in case of PPLNS not being matched by archive
Fixes#143
* Based PPLNS on Prop Payout script
* Using defaults from prop payout, no class adjustments
* Added more methods required for PPLNS
* Added block methods for dynamic payout calculations
* Added PPLNS Sidebar that also displays the PPLNS Target
* Shares beyond this target will not be included in payouts
* Shares missing to this target will be added from archives
* Enabled archiving by default for PPLNS
* Added configuration options for PPLNS
* Documented the usage for PPLNS, defaults are sane
* Added pplns_payout to run-crons
Addresses #143 and if accepted will fix it
Even though memcache can be disabled, the memcache library is a
requirement as listed in the README.md. I clarified that in the
configuration file itself to ensure people install it even though they
might be disabling it for debugging purpose.
Fixes#409
This will allow pool owners to make certain pages public accessible
without user registration or login. Please check the config dist file
for details.
Fixes#408
This will finally fix all block finding issues with a 4 way detection.
The find upstream method will continue to try other ways to find a
proper share until they are all exhausted or a match was found.
* Use stratum solution, create scrypt hash from block header
* Use pushpoold solution, create solution string from block header
* Use first available upstream share in timerange of block time
* Use *any* first available valid share older than time of block
This will fix#405 - no more unknown blocks. Ever.
This will allow us to start checking a blockhash against a solution
submitted to the database.
Details on this in the ticket. Just a WIP to save file states.
Addresses #405
This will ensure data is available for those pages relying on global
data. A better step might be to load template specific data always on
the pages that require the data instead of relying on global data to be
available.
Fixes#309
This will allow pages to skip loading data from backends like the
database or the wallet RPC server. If a cached page is detected and
valid, all dynamic content generation will be skipped completely.
Other pages that have not been adjusted in this commit will still fetch
backend data all the time. This will ensure clients always see the most
recent data, like worker information or account changes.
This should fix#309 completely but needs some testing.
Instead of just making it availble document the smarty cache feature.
It might work for users, but it's advised to rely on the memcache
instead.
Fixes#309
* Renamed configuration array to `smarty` => `cache`
* Added `smarty` => `cache_lifetime` to expire cache files properly
This should be safe to use, be aware that each page request is cached!
That includes any POST/GET calls to the site.
It does help in speeding up the site, up to 100% on some requests. For a
high traffic site it probably makes sense to enable this option with a
low cache lifetime to ensure most recent data.
Addresses #309
Instead of just making it availble document the smarty cache feature.
It might work for users, but it's advised to rely on the memcache
instead.
Fixes#309
Implemented a fallback method in case no upstream share can be found for
a block. This will result in same strange behaviour especially if a
later block has properly added a valid share and this will be used for a
previous block. At least now even the last block will be properly found
and marked as discovered by a user, even though no actual upstream share
was involved in this.
This is a dirty workaround for pools having payout issues. After all
blocks are processed and assuming upstream shares continue to work as
expected, this will *skip* broken blocks/shares.
Workaround fix for #392
* Added 3rd party logger library KLogger
* Adjusted all cronjobs from verbose output to logging
* Added new logs folder for crons to write to
* Added new .gitignore for logs folder data
* Updated blocks class to only fetch blocks with no share_id
* Adjusted findblocks to use no blocks class method
When shares are inserted with a delay for performance optimizations,
this will cause block timestamps to be completely off with share
timestamps. Hence the timestamp limited search is now removed, it would
cause too many issues for Stratum users/pools.
Addresses #392
* display an error if user tries to re-use an email address
* moved SQL files to indicate the order of SQL import
* added unique email index SQL file
This will address #389, still needs email validation.
This should fix#312 and fix#256 where hashrates are reset on quick rounds.
Users are not able to properly view their past 24h hashrates.
Will be merged once confirmed working.
While at it, I also extracted the hash function into it's own getHash
method. This will allow easy changes to hashing for string in the
future.
Fixes#382
This will fix an issue with blocks being assigned upstream shares that
are marked as valid but are not the actual solution for a block.
Only shares inserted when or after the block timestamp are now looked
at. This will ensure other shares inserted earlier and marked as
upstream valid are skipped.
This will not fix edge cases where many shares are inserted at the same
time and are all in the same timeframe of the block. Then the first
valid share in that time is used.
This worked fine on a testnet with a number of blocks found and false
shares inserted by hand.
Fixes#352
If the shares archive table is used via config option, those shares are
included when calculating the users hashrate. This will help on very
short rounds where each round end deletes all shares and users will not
be able to track their hashrates. They will be very jumpy and change to
0 all the time.
Still missing this implementation for the hourly hashrate function to
ensure the graphs are always kept up-to-date.
Addresses #331
* Fix API Key generation not using SALT when creating hash
* This should not affect existing API keys since hashes are compared
* Fix PHP Warning for RECAPTCHA if disabled
Fixes#328
This will add the block reward typw to PPS systems. Prior to this, each
PPS value was hard coded to 50. Not only are other coins not based on
this but changing it would require code. Changed it that
* Default for fixed type is config reward
* Default for block type is **previous** blocks amount
** Fallback for first round is the fixed reward value
See in-line documentation of dist configuration. This should help new
pool owners to get setup and clarify things.
Fixes#308
Since plenty scrypt based currencies are supported, changed error
message to say `wallet` instead of `litecoind` when failing to connect
to RPC service.
This will remove any template content related to the trade currency if
that one is left empty in the configuration.
While going through the templates I also cleaned up the PHP Warnings
left. The code and templates should now process without throwing any PHP
warnings.
Fixes#305 and further addresses #301
Added reference to trade header removal. This allows users to disable
the trade header at the top of the page by setting currency to an empty
string.
Addresses #305
If pool has no valid shares, display 0 as the estimated payout. This
will avoid a PHP Warning devision by zero.
Fixes#296, do not run into Divide by zero error when missing round
shares
* Added more inline documentation
* Removed array notation for config
* Added defaults to documentation
This should help newcomers get setup. All options are now documented and
explained throughout the configuration file.
* Removed old registration configuration option from config file
* Changed database registration option to allow registrations by default
* Changed admin settings template for new DB option
* Changed registration controllers for new DB option
Fixes an issue with registrations not working if settings table is
empty.
This will allow any admin to enable or disable a pool maintenance mode.
Regular users that are still logged in will not be kicked out (yet). New
users that are trying to login and are not admins will be denied access.
Also added registration option to Admin Settings via WebUI. You can now
disable new accounts via web option or configuration setting.
Fixes#259 but also adds an additional feature.
This will prevent PHP OOM errors due to a large amount of transactions.
You can find navigation arrows at the top and fetch 30 transactions at a
time.
Fixes#267
* Login to mobile version to enable sidebar
* Swipe right to display your old dashboard
* Modified `home.inc.php` to default to news at all times again
* Modified sidebar implementation to change via config setting
* Modified mobile navigation bar and header
* Added `sidebar_prop.tpl` file for both themes
Some breaking changes might be introduced here if you are running your
own template implementation. Please ensure that `home/default.tpl` will
display the news posts. `sidebar.tpl` is now `sidebar_prop.tpl`.
If the files are missing you will get a PHP error. Check your logs what
file is missing and create them from my original samples.
Fixes#283
* Do not show dashboard if user is not logged in
* Show news on Mobile and Desktop by default
* Show Dasboard on mobile once logged in
* Make News Navbar item default for unauthed users on mobile
* Add Dash Navbar item for authed users on mobile
* Adding mobile detection to home page
* Allow home page to default to news for desktops
* Use payout specific sidebar for mobile homescreen
* Added News navigation option to mobile
Fixes#278Fixes#279
* Added mobile device detection PHP library
* Call PHP library to decide which theme to use
* Added theme as a configuration option into global config
* Selectable Desktop theme (default: mmcFE)
* Selectable Mobile theme (default: mobile)
* Disable mobile theme support entirely
**NOTE**: This requires updates to the `global.inc.php` so please check
the dist file and update your config before filing a new issue!
Addresses #25
This will fetch all user shares in a single run, not user by user as
done previously. Saves one query and can possibly increase SQL execution
time.
Addresses #246
Warn a user with an error that there have been failed login attempts
for their account. Login errors can be cleared by clicking on the URL in
the message itself.
Fixes#240
This will allow users to change the API url, added coinchose as an
example as pointed out by @vias79 .
* tools class detects the API type
* getPrice returns the price based on API URL parsed
Fixes#236
* Adding dynamic news posts from DB
* Support Adding, Editing, Activating, Deactivating through admin panel
* Display all active posts on news page
* Implemented Markdown Library by Michelf
Fixes#61
* Warn user if they exceeded the configured AP max thresholds for their
account balance
This will address #220. There does not seem a perfect solution for this
but this should help.
* Adding PPS sidebar to seperate the HTML code
* Added PPS specific globals section if need be some day
* Added payout detection to master template for sidebar
* Added 7 days and 14 days estimates
Fixes#160
This will add back the transaction fees. Prior to this commit the pool
had to cover the transaction fees. Now for each transaction the full
balance is transferred (RPC Daemon will remove the TX Fee) but two
transactions are added. One for the Debig and one TXFee.
Fixes#203.
**Requires database upgrade with supplied SQL file**
Since some altcoins are not listed with USD yet @vias79 suggested adding
different API target currencies. This commit will add the feature and
closes#201.
This will fix#199 and help on loading times for the website in case
caches are empty. Caches are pre-filled by a cron so the website only
does it as a fall back. Check Ticket for details.