├── .editorconfig ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── Michelf ├── Markdown.inc.php ├── Markdown.php ├── MarkdownExtra.inc.php ├── MarkdownExtra.php ├── MarkdownInterface.inc.php └── MarkdownInterface.php ├── README.md ├── ajax.php ├── changelog.php ├── css ├── animate.min.css ├── bootstrap-modal-bs3patch.css ├── bootstrap-modal.css ├── bootstrap-switch.min.css ├── bootstrap.min.css ├── cryptoglance-base.css ├── jquery.toastmessage.css ├── slider.css └── whhg.css ├── debug.php ├── favicon.png ├── fonts ├── BebasNeue-webfont.eot ├── BebasNeue-webfont.svg ├── BebasNeue-webfont.ttf ├── BebasNeue-webfont.woff ├── Capture_it-webfont.eot ├── Capture_it-webfont.svg ├── Capture_it-webfont.ttf ├── Capture_it-webfont.woff ├── Capture_it_2-webfont.eot ├── Capture_it_2-webfont.svg ├── Capture_it_2-webfont.ttf ├── Capture_it_2-webfont.woff ├── Roboto-Black-webfont.eot ├── Roboto-Black-webfont.svg ├── Roboto-Black-webfont.ttf ├── Roboto-Black-webfont.woff ├── Roboto-BlackItalic-webfont.eot ├── Roboto-BlackItalic-webfont.svg ├── Roboto-BlackItalic-webfont.ttf ├── Roboto-BlackItalic-webfont.woff ├── Roboto-Bold-webfont.eot ├── Roboto-Bold-webfont.svg ├── Roboto-Bold-webfont.ttf ├── Roboto-Bold-webfont.woff ├── Roboto-BoldItalic-webfont.eot ├── Roboto-BoldItalic-webfont.svg ├── Roboto-BoldItalic-webfont.ttf ├── Roboto-BoldItalic-webfont.woff ├── Roboto-Italic-webfont.eot ├── Roboto-Italic-webfont.svg ├── Roboto-Italic-webfont.ttf ├── Roboto-Italic-webfont.woff ├── Roboto-Light-webfont.eot ├── Roboto-Light-webfont.svg ├── Roboto-Light-webfont.ttf ├── Roboto-Light-webfont.woff ├── Roboto-LightItalic-webfont.eot ├── Roboto-LightItalic-webfont.svg ├── Roboto-LightItalic-webfont.ttf ├── Roboto-LightItalic-webfont.woff ├── Roboto-Medium-webfont.eot ├── Roboto-Medium-webfont.svg ├── Roboto-Medium-webfont.ttf ├── Roboto-Medium-webfont.woff ├── Roboto-MediumItalic-webfont.eot ├── Roboto-MediumItalic-webfont.svg ├── Roboto-MediumItalic-webfont.ttf ├── Roboto-MediumItalic-webfont.woff ├── Roboto-Regular-webfont.eot ├── Roboto-Regular-webfont.svg ├── Roboto-Regular-webfont.ttf ├── Roboto-Regular-webfont.woff ├── Roboto-Thin-webfont.eot ├── Roboto-Thin-webfont.svg ├── Roboto-Thin-webfont.ttf ├── Roboto-Thin-webfont.woff ├── Roboto-ThinItalic-webfont.eot ├── Roboto-ThinItalic-webfont.svg ├── Roboto-ThinItalic-webfont.ttf ├── Roboto-ThinItalic-webfont.woff ├── RobotoCondensed-Bold-webfont.eot ├── RobotoCondensed-Bold-webfont.svg ├── RobotoCondensed-Bold-webfont.ttf ├── RobotoCondensed-Bold-webfont.woff ├── RobotoCondensed-BoldItalic-webfont.eot ├── RobotoCondensed-BoldItalic-webfont.svg ├── RobotoCondensed-BoldItalic-webfont.ttf ├── RobotoCondensed-BoldItalic-webfont.woff ├── RobotoCondensed-Italic-webfont.eot ├── RobotoCondensed-Italic-webfont.svg ├── RobotoCondensed-Italic-webfont.ttf ├── RobotoCondensed-Italic-webfont.woff ├── RobotoCondensed-Light-webfont.eot ├── RobotoCondensed-Light-webfont.svg ├── RobotoCondensed-Light-webfont.ttf ├── RobotoCondensed-Light-webfont.woff ├── RobotoCondensed-LightItalic-webfont.eot ├── RobotoCondensed-LightItalic-webfont.svg ├── RobotoCondensed-LightItalic-webfont.ttf ├── RobotoCondensed-LightItalic-webfont.woff ├── RobotoCondensed-Regular-webfont.eot ├── RobotoCondensed-Regular-webfont.svg ├── RobotoCondensed-Regular-webfont.ttf ├── RobotoCondensed-Regular-webfont.woff ├── webhostinghub-glyphs.eot ├── webhostinghub-glyphs.svg └── webhostinghub-glyphs.ttf ├── help.php ├── images ├── ajax-loader.gif ├── ajax-saver.png ├── background │ ├── black_denim.png │ ├── black_denim_@2X.png │ ├── dark_mosaic.png │ ├── dark_mosaic_@2X.png │ ├── darkdenim3.png │ ├── darkdenim3_@2X.png │ ├── denim.png │ ├── denim_@2X.png │ ├── handle.png │ ├── inflicted.png │ ├── inflicted_@2X.png │ ├── office.png │ ├── office_@2X.png │ └── track.png ├── coin │ ├── bitcoin.png │ ├── burstcoin.png │ ├── darkcoin.png │ ├── dogecoin.png │ ├── dogecoindark.png │ ├── fiat.png │ ├── litecoin.png │ ├── neoscoin.png │ ├── paycoin.png │ ├── reddcoin.png │ └── vertcoin.png ├── cryptoGlance-thread-header.png ├── cryptoGlance-video-intro-landscape.png ├── icon │ ├── cryptoglance.png │ ├── google-plus.png │ ├── reddit.png │ └── twitter.png ├── logo-landscape.png ├── qr │ ├── donate-btc.png │ ├── donate-doge.png │ ├── donate-ltc.png │ ├── donate-rdd.png │ └── donate-vtc.png ├── toast │ ├── close-hover.png │ ├── close.png │ ├── error.png │ ├── notice.png │ ├── success.png │ └── warning.png └── watermark.png ├── includes ├── .htaccess ├── autoloader.inc.php ├── classes │ ├── bitcoinindex.php │ ├── class.phpmailer.php │ ├── config │ │ ├── abstract.php │ │ ├── pools.php │ │ ├── rigs.php │ │ ├── rss.php │ │ └── wallets.php │ ├── email.php │ ├── filehandler.php │ ├── firstrally.php │ ├── login.php │ ├── miners │ │ ├── abstract.php │ │ └── cgminer.php │ ├── mobileminer.php │ ├── pools.php │ ├── pools │ │ ├── abstract.php │ │ ├── antpool.php │ │ ├── bitcoinaffiliatenetwork.php │ │ ├── bitminter.php │ │ ├── btcguild.php │ │ ├── burstninja.php │ │ ├── ckpool.php │ │ ├── eclipse.php │ │ ├── eligius.php │ │ ├── magicpool.php │ │ ├── mpos.php │ │ ├── multipoolus.php │ │ ├── nicehash.php │ │ ├── nomp.php │ │ ├── p2pool.php │ │ ├── simplecoin.php │ │ ├── slush.php │ │ ├── trademybit.php │ │ ├── wafflepool.php │ │ └── westhash.php │ ├── rigs.php │ ├── rss.php │ ├── rss │ │ ├── abstract.php │ │ └── reddit.php │ ├── update.php │ ├── wallets.php │ └── wallets │ │ ├── abstract.php │ │ ├── bitcoin.php │ │ ├── burstcoin.php │ │ ├── darkcoin.php │ │ ├── dogecoin.php │ │ ├── dogecoindark.php │ │ ├── litecoin.php │ │ ├── neoscoin.php │ │ ├── paycoin.php │ │ ├── reddcoin.php │ │ └── vertcoin.php ├── config.php ├── cryptoglance.php ├── footer.php ├── functions.php ├── head.php ├── header.php ├── inc.php ├── login-head.php ├── login-header.php ├── menu-active_panels.php ├── scripts.php └── simplepie-1.3.1-min.php ├── index.php ├── install-linux-dependencies.sh ├── js ├── Util.js ├── cryptoglance-ui.js ├── dashboard │ ├── Device.js │ ├── DeviceCollection.js │ ├── MobileMiner.js │ ├── Pool.js │ ├── PoolCollection.js │ ├── Rig.js │ ├── RigCollection.js │ ├── Wallet.js │ ├── WalletCollection.js │ └── script.js ├── packages │ ├── bootstrap-modal.js │ ├── bootstrap-modalmanager.js │ ├── bootstrap-switch.min.js │ ├── bootstrap.min.js │ ├── highstock.js │ ├── jquery-1.10.2.min.js │ ├── jquery-ui-1.10.3.custom.min.js │ ├── jquery.cookie.js │ ├── jquery.scrollTo.min.js │ ├── jquery.toastmessage.js │ ├── jquery.ui.touch-punch.min.js │ └── masonry.pkgd.min.js ├── rig │ └── script.js ├── settings.js ├── version.js └── wallet │ └── script.js ├── login.php ├── logout.php ├── permissionfix.sh ├── rig.php ├── settings.php ├── templates ├── .htaccess ├── modals │ ├── add_panel.php │ ├── add_pool.php │ ├── add_rig.php │ ├── coming_soon.php │ ├── delete_prompt.php │ ├── manage_rig.php │ ├── prompt_remove_wallet.php │ ├── qrcode-donate-btc.php │ └── switch-pool.php └── panels │ ├── coinwatcher.php │ ├── news_feed.php │ ├── overview.php │ ├── pool.php │ ├── rig.php │ ├── subreddit_feed.php │ └── wallet.php ├── update.php ├── user_data └── .htaccess └── wallet.php /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | # Tab indentation (no size specified) 6 | [*.js] 7 | indent_style = space 8 | indent_size = 4 9 | end_of_line = lf 10 | charset = utf-8 11 | insert_final_newline = true 12 | trim_trailing_whitespace = true -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | user_data/configs/* 2 | user_data/currencies/* 3 | user_data/dev/* 4 | user_data/fiat/* 5 | user_data/pools/* 6 | user_data/wallets/* 7 | pure-assets/ 8 | vectorstock/ 9 | .idea/ 10 | web.config 11 | *.bak 12 | Thumbs.db 13 | example-*.* 14 | node_modules 15 | .DS_Store 16 | -------------------------------------------------------------------------------- /Michelf/Markdown.inc.php: -------------------------------------------------------------------------------- 1 | 8 | # 9 | # Original Markdown 10 | # Copyright (c) 2004-2006 John Gruber 11 | # 12 | # 13 | namespace Michelf; 14 | 15 | 16 | # Just force Michelf/Markdown.php to load. This is needed to load 17 | # the temporary implementation class. See below for details. 18 | \Michelf\Markdown::MARKDOWNLIB_VERSION; 19 | 20 | # 21 | # Markdown Extra Parser Class 22 | # 23 | # Note: Currently the implementation resides in the temporary class 24 | # \Michelf\MarkdownExtra_TmpImpl (in the same file as \Michelf\Markdown). 25 | # This makes it easier to propagate the changes between the three different 26 | # packaging styles of PHP Markdown. Once this issue is resolved, the 27 | # _MarkdownExtra_TmpImpl will disappear and this one will contain the code. 28 | # 29 | 30 | class MarkdownExtra extends \Michelf\_MarkdownExtra_TmpImpl { 31 | 32 | ### Parser Implementation ### 33 | 34 | # Temporarily, the implemenation is in the _MarkdownExtra_TmpImpl class. 35 | # See note above. 36 | 37 | } 38 | 39 | -------------------------------------------------------------------------------- /Michelf/MarkdownInterface.inc.php: -------------------------------------------------------------------------------- 1 | 8 | # 9 | # Original Markdown 10 | # Copyright (c) 2004-2006 John Gruber 11 | # 12 | # 13 | namespace Michelf; 14 | 15 | 16 | # 17 | # Markdown Parser Interface 18 | # 19 | 20 | interface MarkdownInterface { 21 | 22 | # 23 | # Initialize the parser and return the result of its transform method. 24 | # This will work fine for derived classes too. 25 | # 26 | public static function defaultTransform($text); 27 | 28 | # 29 | # Main function. Performs some preprocessing on the input text 30 | # and pass it through the document gamut. 31 | # 32 | public function transform($text); 33 | 34 | } 35 | 36 | 37 | ?> -------------------------------------------------------------------------------- /ajax.php: -------------------------------------------------------------------------------- 1 | $action(); 36 | header('Content-Type: application/json'); 37 | echo json_encode($result); 38 | ?> 39 | -------------------------------------------------------------------------------- /changelog.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/changelog.php -------------------------------------------------------------------------------- /css/bootstrap-modal-bs3patch.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Modal 3 | * 4 | * Copyright Jordan Schroter 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Boostrap 3 patch for for bootstrap-modal. Include BEFORE bootstrap-modal.css! 9 | */ 10 | 11 | body.modal-open, 12 | .modal-open .navbar-fixed-top, 13 | .modal-open .navbar-fixed-bottom { 14 | margin-right: 0; 15 | } 16 | 17 | .modal { 18 | left: 50%; 19 | bottom: auto; 20 | right: auto; 21 | padding: 0; 22 | width: 500px; 23 | margin-left: -250px; 24 | background-color: #ffffff; 25 | border: 1px solid #999999; 26 | border: 1px solid rgba(0, 0, 0, 0.2); 27 | border-radius: 6px; 28 | -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); 29 | box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); 30 | background-clip: padding-box; 31 | } 32 | 33 | .modal.container { 34 | max-width: none; 35 | } -------------------------------------------------------------------------------- /css/jquery.toastmessage.css: -------------------------------------------------------------------------------- 1 | .toast-container { 2 | width: 100%; 3 | z-index: 10000; 4 | } 5 | 6 | 7 | * html .toast-container { 8 | position: absolute; 9 | } 10 | 11 | .toast-item { 12 | height: auto; 13 | background: #333; 14 | opacity: 1; 15 | color: #eee; 16 | padding: 14px 1%; 17 | border: 1px solid #999; 18 | border-width: 1px 0; 19 | display: block; 20 | position: relative; 21 | margin: 0; 22 | box-shadow: 0 0 15px #000; 23 | } 24 | 25 | .toast-item p { 26 | text-align: left; 27 | text-shadow: 0 1px 2px #222; 28 | margin: 0 15px 0 45px; 29 | } 30 | 31 | 32 | .toast-item-close { 33 | background:url(../images/toast/close.png); 34 | width:22px; 35 | height:22px; 36 | position: absolute; 37 | top:0; 38 | right:0; 39 | cursor: pointer; 40 | } 41 | 42 | .toast-item-close:hover { 43 | background:url(../images/toast/close-hover.png); 44 | } 45 | 46 | .toast-item span { 47 | display: block; 48 | text-align: center; 49 | margin: 7px 0px -5px; 50 | } 51 | 52 | .toast-item-image { 53 | width:32px; 54 | height: 32px; 55 | position: absolute; 56 | top: 20%; 57 | left: 10px; 58 | } 59 | 60 | .toast-item-image-notice { 61 | background:url(../images/toast/notice.png); 62 | } 63 | 64 | .toast-item-image-success { 65 | background:url(../images/toast/success.png); 66 | } 67 | 68 | .toast-item-image-warning { 69 | background:url(../images/toast/warning.png); 70 | } 71 | 72 | .toast-item-image-error { 73 | background:url(../images/toast/error.png); 74 | } 75 | 76 | 77 | /** 78 | * toast types 79 | * 80 | * pattern: toast-type-[value] 81 | * where 'value' is the real value of the plugin option 'type' 82 | * 83 | */ 84 | .toast-type-notice { 85 | color: #D2F3FF; 86 | background: rgba(4, 113, 149, 0.95); 87 | border-color: #33b5e5; 88 | } 89 | 90 | .toast-type-notice b { 91 | color: #90E1FF; 92 | } 93 | 94 | .toast-type-success { 95 | background: rgba(0, 90, 0, 0.95); 96 | color: #afa; 97 | border-color: #0c0; 98 | } 99 | 100 | .toast-type-success b { 101 | color: #dfd; 102 | } 103 | 104 | .toast-type-warning { 105 | background: rgba(223, 138, 0, 0.95); 106 | color: #FFE8C3; 107 | border-color: #FCBD57; 108 | } 109 | 110 | .toast-type-error { 111 | background: rgba(150, 0, 0, 0.95); 112 | color: #FFD0D0; 113 | border-color: #c00; 114 | } 115 | 116 | /** 117 | * positions 118 | * 119 | * pattern: toast-position-[value] 120 | * where 'value' is the real value of the plugin option 'position' 121 | * 122 | */ 123 | .toast-position-top-left { 124 | position: fixed; 125 | left: 20px; 126 | top: 20px; 127 | } 128 | 129 | .toast-position-top-center { 130 | position: fixed; 131 | top: 50px; 132 | } 133 | 134 | .toast-position-top-right { 135 | position: fixed; 136 | top: 20px; 137 | right: 20px; 138 | } 139 | 140 | .toast-position-middle-left { 141 | position: fixed; 142 | top: 50px; 143 | } 144 | 145 | .toast-position-middle-center { 146 | position: fixed; 147 | left: 50%; 148 | margin-left: -140px; 149 | margin-top: -40px; 150 | top: 50%; 151 | } 152 | 153 | .toast-position-middle-right { 154 | position: fixed; 155 | right: 20px; 156 | margin-left: -140px; 157 | margin-top: -40px; 158 | top: 50%; 159 | } 160 | 161 | /* X-Small devices (small tablets, 680px and up) */ 162 | @media (min-width: 480px) { 163 | 164 | .toast-container { 165 | width: 420px; 166 | } 167 | 168 | .toast-item { 169 | margin: 0 0 12px 0; 170 | padding: 14px 6px; 171 | border-radius: 7px; 172 | border-width: 1px; 173 | } 174 | 175 | .toast-item-close { 176 | top:-7px; 177 | right:-7px; 178 | } 179 | 180 | .toast-position-top-center { 181 | top: 20px; 182 | left: 50%; 183 | margin-left: -210px; 184 | } 185 | 186 | } 187 | 188 | -------------------------------------------------------------------------------- /css/slider.css: -------------------------------------------------------------------------------- 1 | #slider{ 2 | border-width: 1px; 3 | border-style: solid; 4 | border-color: #333 #333 #777 #333; 5 | border-radius: 25px; 6 | width: 120px; 7 | position: relative; 8 | height: 13px; 9 | background-color: #8e8d8d; 10 | background: url('../images/background/track.png') repeat top left; 11 | box-shadow: inset 0 1px 5px 0px rgba(0, 0, 0, .5), 12 | 0 1px 0 0px rgba(250, 250, 250, .5); 13 | left: 20px; 14 | margin-bottom: 17px; 15 | } 16 | .tooltip { 17 | opacity: 1; 18 | position: absolute; 19 | display: block; 20 | top: -5px; 21 | width: 35px; 22 | height: 20px; 23 | color: #fff; 24 | text-align: center; 25 | font: 10pt Tahoma, Arial, sans-serif ; 26 | border-radius: 3px; 27 | border: 1px solid #333; 28 | -webkit-box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, .3); 29 | box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, .3); 30 | -moz-box-sizing: border-box; 31 | -webkit-box-sizing: border-box; 32 | box-sizing: border-box; 33 | background: -moz-linear-gradient(top, rgba(69,72,77,0.5) 0%, rgba(0,0,0,0.5) 100%); /* FF3.6+ */ 34 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(69,72,77,0.5)), color-stop(100%,rgba(0,0,0,0.5))); /* Chrome,Safari4+ */ 35 | background: -webkit-linear-gradient(top, rgba(69,72,77,0.5) 0%,rgba(0,0,0,0.5) 100%); /* Chrome10+,Safari5.1+ */ 36 | background: -o-linear-gradient(top, rgba(69,72,77,0.5) 0%,rgba(0,0,0,0.5) 100%); /* Opera 11.10+ */ 37 | background: -ms-linear-gradient(top, rgba(69,72,77,0.5) 0%,rgba(0,0,0,0.5) 100%); /* IE10+ */ 38 | background: linear-gradient(top, rgba(69,72,77,0.5) 0%,rgba(0,0,0,0.5) 100%); /* W3C */ 39 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8045484d', endColorstr='#80000000',GradientType=0 ); /* IE6-9 */ 40 | } 41 | .ui-slider-handle { 42 | position: absolute; 43 | z-index: 2; 44 | width: 25px; 45 | height: 25px; 46 | cursor: pointer; 47 | background: url('../images/background/handle.png') no-repeat 50% 50%; 48 | font-weight: bold; 49 | color: #1C94C4; 50 | outline: none; 51 | top: -7px; 52 | margin-left: -12px; 53 | } 54 | .ui-slider-range { 55 | background: #ffffff; /* Old browsers */ 56 | background: -moz-linear-gradient(top, #ffffff 0%, #eaeaea 100%); /* FF3.6+ */ 57 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#eaeaea)); /* Chrome,Safari4+ */ 58 | background: -webkit-linear-gradient(top, #ffffff 0%,#eaeaea 100%); /* Chrome10+,Safari5.1+ */ 59 | background: -o-linear-gradient(top, #ffffff 0%,#eaeaea 100%); /* Opera 11.10+ */ 60 | background: -ms-linear-gradient(top, #ffffff 0%,#eaeaea 100%); /* IE10+ */ 61 | background: linear-gradient(top, #ffffff 0%,#eaeaea 100%); /* W3C */ 62 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eaeaea',GradientType=0 ); /* IE6-9 */ 63 | position: absolute; 64 | border: 0; 65 | top: 0; 66 | height: 100%; 67 | border-radius: 25px; 68 | } -------------------------------------------------------------------------------- /debug.php: -------------------------------------------------------------------------------- 1 | back and verify IP address and port.'); 18 | return null; 19 | } else { 20 | fwrite($socket, $cmd); 21 | while (!feof($socket)) { 22 | $response .= fgets($socket); 23 | } 24 | fclose($socket); 25 | } 26 | 27 | return str_replace("\0", '', $response); 28 | } 29 | 30 | ?> 31 | 32 | 33 | Rig/Minger Debug Info 34 | 35 | 36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 54 | 55 |
IP Address:
Port:
50 | 51 |  or  52 | 53 |
56 |
57 |
« Back to CryptoGlance.
58 |

'; 62 | 63 | if ($_POST['submit'] == 'one') { 64 | $config = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"config"}'), true); 65 | $debug = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"debug"}'), true); 66 | $summary = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"summary"}'), true); 67 | $dev = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"devs"}'), true); 68 | $devdetails = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"devdetails"}'), true); 69 | $stats = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"stats"}'), true); 70 | $eStats = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"estats","parameter":1}'), true); 71 | $pools = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"pools"}'), true); 72 | $ascset = json_decode(runCMD($_POST['address'], $_POST['port'], '{"command":"ascset","parameter":"0, help"}'), true); 73 | 74 | echo "
config:";
 75 |         print_r($config);
 76 |         echo "
"; 77 | echo "
debug:";
 78 |         print_r($debug);
 79 |         echo "
"; 80 | echo "
SUMMARY:";
 81 |         print_r($summary);
 82 |         echo "
"; 83 | echo "
------------

"; 84 | echo "
DEVICES:";
 85 |         print_r($dev);
 86 |         echo "
"; 87 | echo "
devdetails:";
 88 |         print_r($devdetails);
 89 |         echo "
"; 90 | echo "
stats:";
 91 |         print_r($stats);
 92 |         echo "
"; 93 | echo "
eStats:";
 94 |         print_r($eStats);
 95 |         echo "
"; 96 | echo "
------------

"; 97 | echo "
POOLS:";
 98 |         print_r($pools);
 99 |         echo "
"; 100 | echo "
ascset:";
101 |         print_r($ascset);
102 |         echo "
"; 103 | } else if ($_POST['submit'] == 'all') { 104 | // Show errors 105 | ini_set("display_errors", 1); 106 | 107 | // Get all custom classes 108 | require_once('includes/inc.php'); 109 | require_once('includes/autoloader.inc.php'); 110 | 111 | $rigClass = new Rigs(); 112 | $overview = $rigClass->getOverview(); 113 | $update = $rigClass->getUpdate(); 114 | 115 | echo "
RIGS OVERVIEW:";
116 |         print_r($overview);
117 |         echo "
"; 118 | echo "
------------

"; 119 | echo "
RIGS UPDATE:";
120 |         print_r($update);
121 |         echo "
"; 122 | } 123 | } 124 | 125 | ?> 126 |
127 |
This tool was created for CryptoGlance.
128 | 129 | 130 | -------------------------------------------------------------------------------- /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/favicon.png -------------------------------------------------------------------------------- /fonts/BebasNeue-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/BebasNeue-webfont.eot -------------------------------------------------------------------------------- /fonts/BebasNeue-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/BebasNeue-webfont.ttf -------------------------------------------------------------------------------- /fonts/BebasNeue-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/BebasNeue-webfont.woff -------------------------------------------------------------------------------- /fonts/Capture_it-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Capture_it-webfont.eot -------------------------------------------------------------------------------- /fonts/Capture_it-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Capture_it-webfont.ttf -------------------------------------------------------------------------------- /fonts/Capture_it-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Capture_it-webfont.woff -------------------------------------------------------------------------------- /fonts/Capture_it_2-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Capture_it_2-webfont.eot -------------------------------------------------------------------------------- /fonts/Capture_it_2-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Capture_it_2-webfont.ttf -------------------------------------------------------------------------------- /fonts/Capture_it_2-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Capture_it_2-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-Black-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Black-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-Black-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Black-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Black-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Black-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-BlackItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-BlackItalic-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-BlackItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-BlackItalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-BlackItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-BlackItalic-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Bold-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-Bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Bold-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Bold-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-BoldItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-BoldItalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Italic-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-Italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Italic-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Italic-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Light-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-Light-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Light-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Light-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-LightItalic-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-LightItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-LightItalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-LightItalic-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-Medium-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Medium-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-Medium-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Medium-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Medium-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Medium-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-MediumItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-MediumItalic-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-MediumItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-MediumItalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-MediumItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-MediumItalic-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Regular-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-Regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Regular-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Regular-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-Thin-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Thin-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-Thin-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Thin-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Thin-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-Thin-webfont.woff -------------------------------------------------------------------------------- /fonts/Roboto-ThinItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-ThinItalic-webfont.eot -------------------------------------------------------------------------------- /fonts/Roboto-ThinItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-ThinItalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/Roboto-ThinItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/Roboto-ThinItalic-webfont.woff -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Bold-webfont.eot -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Bold-webfont.ttf -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Bold-webfont.woff -------------------------------------------------------------------------------- /fonts/RobotoCondensed-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /fonts/RobotoCondensed-BoldItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-BoldItalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/RobotoCondensed-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Italic-webfont.eot -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Italic-webfont.ttf -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Italic-webfont.woff -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Light-webfont.eot -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Light-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Light-webfont.ttf -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Light-webfont.woff -------------------------------------------------------------------------------- /fonts/RobotoCondensed-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-LightItalic-webfont.eot -------------------------------------------------------------------------------- /fonts/RobotoCondensed-LightItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-LightItalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/RobotoCondensed-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-LightItalic-webfont.woff -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Regular-webfont.eot -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Regular-webfont.ttf -------------------------------------------------------------------------------- /fonts/RobotoCondensed-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/RobotoCondensed-Regular-webfont.woff -------------------------------------------------------------------------------- /fonts/webhostinghub-glyphs.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/webhostinghub-glyphs.eot -------------------------------------------------------------------------------- /fonts/webhostinghub-glyphs.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/fonts/webhostinghub-glyphs.ttf -------------------------------------------------------------------------------- /help.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/help.php -------------------------------------------------------------------------------- /images/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/ajax-loader.gif -------------------------------------------------------------------------------- /images/ajax-saver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/ajax-saver.png -------------------------------------------------------------------------------- /images/background/black_denim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/black_denim.png -------------------------------------------------------------------------------- /images/background/black_denim_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/black_denim_@2X.png -------------------------------------------------------------------------------- /images/background/dark_mosaic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/dark_mosaic.png -------------------------------------------------------------------------------- /images/background/dark_mosaic_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/dark_mosaic_@2X.png -------------------------------------------------------------------------------- /images/background/darkdenim3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/darkdenim3.png -------------------------------------------------------------------------------- /images/background/darkdenim3_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/darkdenim3_@2X.png -------------------------------------------------------------------------------- /images/background/denim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/denim.png -------------------------------------------------------------------------------- /images/background/denim_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/denim_@2X.png -------------------------------------------------------------------------------- /images/background/handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/handle.png -------------------------------------------------------------------------------- /images/background/inflicted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/inflicted.png -------------------------------------------------------------------------------- /images/background/inflicted_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/inflicted_@2X.png -------------------------------------------------------------------------------- /images/background/office.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/office.png -------------------------------------------------------------------------------- /images/background/office_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/office_@2X.png -------------------------------------------------------------------------------- /images/background/track.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/background/track.png -------------------------------------------------------------------------------- /images/coin/bitcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/bitcoin.png -------------------------------------------------------------------------------- /images/coin/burstcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/burstcoin.png -------------------------------------------------------------------------------- /images/coin/darkcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/darkcoin.png -------------------------------------------------------------------------------- /images/coin/dogecoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/dogecoin.png -------------------------------------------------------------------------------- /images/coin/dogecoindark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/dogecoindark.png -------------------------------------------------------------------------------- /images/coin/fiat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/fiat.png -------------------------------------------------------------------------------- /images/coin/litecoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/litecoin.png -------------------------------------------------------------------------------- /images/coin/neoscoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/neoscoin.png -------------------------------------------------------------------------------- /images/coin/paycoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/paycoin.png -------------------------------------------------------------------------------- /images/coin/reddcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/reddcoin.png -------------------------------------------------------------------------------- /images/coin/vertcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/coin/vertcoin.png -------------------------------------------------------------------------------- /images/cryptoGlance-thread-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/cryptoGlance-thread-header.png -------------------------------------------------------------------------------- /images/cryptoGlance-video-intro-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/cryptoGlance-video-intro-landscape.png -------------------------------------------------------------------------------- /images/icon/cryptoglance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/icon/cryptoglance.png -------------------------------------------------------------------------------- /images/icon/google-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/icon/google-plus.png -------------------------------------------------------------------------------- /images/icon/reddit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/icon/reddit.png -------------------------------------------------------------------------------- /images/icon/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/icon/twitter.png -------------------------------------------------------------------------------- /images/logo-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/logo-landscape.png -------------------------------------------------------------------------------- /images/qr/donate-btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/qr/donate-btc.png -------------------------------------------------------------------------------- /images/qr/donate-doge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/qr/donate-doge.png -------------------------------------------------------------------------------- /images/qr/donate-ltc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/qr/donate-ltc.png -------------------------------------------------------------------------------- /images/qr/donate-rdd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/qr/donate-rdd.png -------------------------------------------------------------------------------- /images/qr/donate-vtc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/qr/donate-vtc.png -------------------------------------------------------------------------------- /images/toast/close-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/toast/close-hover.png -------------------------------------------------------------------------------- /images/toast/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/toast/close.png -------------------------------------------------------------------------------- /images/toast/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/toast/error.png -------------------------------------------------------------------------------- /images/toast/notice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/toast/notice.png -------------------------------------------------------------------------------- /images/toast/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/toast/success.png -------------------------------------------------------------------------------- /images/toast/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/toast/warning.png -------------------------------------------------------------------------------- /images/watermark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/images/watermark.png -------------------------------------------------------------------------------- /includes/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all -------------------------------------------------------------------------------- /includes/autoloader.inc.php: -------------------------------------------------------------------------------- 1 | lastTimeModified() >= 3600) { // updates every 1 minute 23 | $data = array(); 24 | 25 | $data = curlCall($this->_url . '/v0.1/conversions/' . strtolower($from) . '/' . strtolower($to)); // /v0.1/conversions/:from/:to 26 | 27 | $fileHandler->write(json_encode($data)); 28 | return $data; 29 | } 30 | 31 | return json_decode($fileHandler->read(), true); 32 | } 33 | 34 | 35 | } -------------------------------------------------------------------------------- /includes/classes/config/abstract.php: -------------------------------------------------------------------------------- 1 | _fileHandler = new FileHandler($this->_config); 17 | $this->_data = json_decode($this->_fileHandler->read(), true); 18 | 19 | if (isset($_GET['id']) || isset($_POST['id'])) { 20 | $id = (isset($_GET['id']) ? $_GET['id'] : $_POST['id']); 21 | $id = intval($id)-1; 22 | $this->add($this->_data[$id]); 23 | } else if (!empty($this->_data)) { 24 | foreach ($this->_data as $id => $obj) { 25 | $this->add($obj); 26 | } 27 | } 28 | } 29 | 30 | public function remove() { 31 | // Remove functionality is only available one at a time 32 | if (!isset($_POST['id'])) { 33 | header("HTTP/1.0 406 Not Acceptable"); 34 | return false; 35 | } 36 | 37 | $id = intval($_POST['id'])-1; 38 | 39 | unset($this->_data[$id]); 40 | $this->_data = array_values($this->_data); 41 | 42 | return $this->write(); 43 | } 44 | 45 | public function write() { 46 | $this->_fileHandler->write(json_encode($this->_data)); 47 | 48 | header("HTTP/1.0 202 Accepted"); 49 | return true; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /includes/classes/config/rss.php: -------------------------------------------------------------------------------- 1 | _host = $settings['smtpServer']; 20 | $this->_port = $settings['port']; 21 | $this->_username = $settings['username']; 22 | $this->_password = $settings['password']; 23 | $this->_tls = $settings['tls']; 24 | } 25 | 26 | // Return true on success or false (with message) on failure 27 | public function sendNotification($status, $time) { 28 | try { 29 | $mail = new PHPMailer(true); 30 | $mail->IsSMTP(); 31 | $mail->SMTPSecure = ($this->_tls == 1) ? 'tls' : ''; 32 | $mail->Host = $this->_host; 33 | $mail->Port = $this->_port; 34 | $mail->SMTPAuth = true; 35 | $mail->Username = $this->_username; 36 | $mail->Password = $this->_password; 37 | $mail->From = $this->_username; 38 | $mail->FromName = 'RigWatch Notification Center'; 39 | $mail->AddAddress($this->_username); 40 | $mail->Subject = 'System is ' . $status; 41 | // Define email content 42 | $mail->Body = $this->getBodyMessage(); 43 | $mail->MsgHTML($this->getBodyMessage()); 44 | $mail->Send(); 45 | } 46 | catch(phpmailerException $e) { 47 | echo $e->errorMessage(); 48 | return false; 49 | } 50 | catch(Exception $e) { 51 | echo $e->getMessage(); 52 | return false; 53 | } 54 | 55 | return true; 56 | } 57 | 58 | private function getBodyMessage($status) { 59 | $body = ''; 60 | 61 | // Implement time here later on 62 | if($status == 'online') { 63 | $body = 'System is online.'; 64 | } else { 65 | $body = 'System is offline.'; 66 | } 67 | 68 | return $body; 69 | } 70 | } -------------------------------------------------------------------------------- /includes/classes/filehandler.php: -------------------------------------------------------------------------------- 1 | _fullFilePath = trim(DATA_PATH . $fileName); 14 | } 15 | 16 | public function read() { 17 | return file_get_contents($this->_fullFilePath); 18 | } 19 | 20 | public function write($content) { 21 | if (file_put_contents($this->_fullFilePath, $content) === FALSE) { 22 | $dirPath = preg_replace('#[^/]*$#', '', $this->_fullFilePath); 23 | // $dirPath = preg_replace('#\/[^/]*$#', '', $this->_fullFilePath); 24 | 25 | if (!is_dir($dirPath)) { 26 | mkdir($dirPath, 0777, true); 27 | } 28 | chmod($this->_fullFilePath, 0777); 29 | file_put_contents($this->_fullFilePath, $content); 30 | } 31 | } 32 | 33 | /* 34 | * Get date/time last time file was modified 35 | * return (int) seconds since last file modification 36 | */ 37 | public function lastTimeModified() { 38 | try { 39 | $last_mod = filemtime($this->_fullFilePath) != false ? filemtime($this->_fullFilePath) : false; 40 | } catch (Exception $e) { 41 | $this->write(''); 42 | $last_mod = filemtime($this->_fullFilePath) != false ? filemtime($this->_fullFilePath) : false; 43 | } 44 | 45 | $timeDiff = (time() - $last_mod) - 218; 46 | 47 | return $timeDiff; 48 | } 49 | 50 | /* 51 | * Check if the file is writable or not. 52 | */ 53 | public function isWritable() { 54 | return is_writable($this->_fullFilePath); 55 | } 56 | 57 | /* 58 | * Check if the file exists or not. 59 | */ 60 | public function fileExists() { 61 | return file_exists($this->_fullFilePath); 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /includes/classes/firstrally.php: -------------------------------------------------------------------------------- 1 | lastTimeModified() >= 3600) { // updates every 1 minute 23 | $data = array(); 24 | 25 | $data = curlCall($this->_url . '/v0.1/conversions/' . strtolower($from) . '/' . strtolower($to)); // /v0.1/conversions/:from/:to 26 | 27 | $fileHandler->write(json_encode($data)); 28 | return $data; 29 | } 30 | 31 | return json_decode($fileHandler->read(), true); 32 | } 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /includes/classes/login.php: -------------------------------------------------------------------------------- 1 | _fh = new FileHandler('configs/account.json'); 11 | } 12 | 13 | public function login($username, $password) { 14 | $password = hash('sha512', $password); 15 | 16 | $login = json_decode($this->_fh->read(), true); 17 | 18 | if (!empty($login)) { 19 | if (strtolower($username) == strtolower($login['username']) && $password == $login['password']) { 20 | return true; 21 | } else { 22 | return false; 23 | } 24 | } else { 25 | return $this->register($username, $password); 26 | } 27 | } 28 | 29 | private function register($username, $password) { 30 | if (!empty($username) && !empty($password)) { 31 | $data = array( 32 | 'username' => $username, 33 | 'password' => $password 34 | ); 35 | 36 | $this->_fh->write(json_encode($data)); 37 | return true; 38 | } 39 | 40 | return false; 41 | } 42 | 43 | public function firstLogin() { 44 | return $this->_fh->fileExists(); 45 | } 46 | 47 | } -------------------------------------------------------------------------------- /includes/classes/miners/abstract.php: -------------------------------------------------------------------------------- 1 | 'SHA256', 11 | 'hwErrors' => array( 12 | 'enabled' => 1, 13 | 'type' => 'percent', 14 | 'danger' => array( 15 | 'percent' => '10', 16 | 'int' => '10', 17 | ), 18 | 'warning' => array( 19 | 'percent' => '5', 20 | 'int' => '5', 21 | ), 22 | ), 23 | 'temps' => array( 24 | 'enabled' => 1, 25 | 'danger' => '80', 26 | 'warning' => '75', 27 | ) 28 | ); 29 | 30 | public function __construct($rig) { 31 | $this->_name = $rig['name']; 32 | $this->_settings = array_merge($this->_settings, $rig['settings']); 33 | } 34 | 35 | public function getSettings() { 36 | return array( 37 | 'name' => $this->_name, 38 | 'settings' => $this->_settings 39 | ); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /includes/classes/pools.php: -------------------------------------------------------------------------------- 1 | _objs[$poolId])) { 27 | $data[] = $this->_objs[$poolId]->update(); 28 | } 29 | } else { 30 | foreach ($this->_objs as $pool) { 31 | $data[] = $pool->update(); 32 | } 33 | } 34 | 35 | return $data; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /includes/classes/pools/abstract.php: -------------------------------------------------------------------------------- 1 | _apiURL = $params['apiurl']; 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /includes/classes/pools/antpool.php: -------------------------------------------------------------------------------- 1 | 'https://antpool.com')); 25 | $this->_apiKey = $params['apikey']; 26 | $this->_apiSecret = $params['apisecret']; 27 | $this->_userId = $params['userid']; 28 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. $this->_type . '/' . hash('md4', $params['apikey']) .'.json'); 29 | } 30 | 31 | public function update() { 32 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 33 | $poolData = array(); 34 | foreach ($this->_actions as $action) { 35 | $nonce = number_format((time()*mt_rand()), 0, '', ''); 36 | $hmacSig = strtoupper(hash_hmac( 37 | 'sha256', 38 | ($this->_userId.$this->_apiKey.$nonce), 39 | $this->_apiSecret 40 | )); 41 | 42 | $postParams = http_build_query(array( 43 | 'key' => $this->_apiKey, 44 | 'nonce' => $nonce, 45 | 'signature' => $hmacSig 46 | )); 47 | 48 | $poolData[$action] = curlCall( 49 | $this->_apiURL . '/api/'.$action.'.htm', 50 | $postParams, 51 | 'application/x-www-form-urlencoded', 52 | array( 53 | 'key' => $this->_apiKey, 54 | 'sig' => $hmacSig 55 | ) 56 | ); 57 | $poolData[$action] = $poolData[$action]['data']; 58 | } 59 | 60 | // Offline Check 61 | if (empty($poolData[$this->_actions[0]])) { 62 | return; 63 | } 64 | 65 | // Data Order 66 | $data['type'] = $this->_type; 67 | 68 | $data['sent'] = number_format($poolData['account']['paidOut'], 8); 69 | $data['balance'] = number_format($poolData['account']['balance'], 8); 70 | $data['current_earnings'] = number_format($poolData['account']['earnTotal'], 8); 71 | 72 | $data['pool_hashrate'] = formatHashrate($poolData['poolStats']['poolHashrate']*1000); 73 | 74 | // User Hashrate 75 | $data['user_hashrate_(1_day)'] = formatHashrate($poolData['hashrate']['last1d']*1000); 76 | $data['user_hashrate_(1_hour)'] = formatHashrate($poolData['hashrate']['last1h']*1000); 77 | $data['user_hashrate_(10_minutes)'] = formatHashrate($poolData['hashrate']['last10m']*1000); 78 | 79 | $data['eta_on_block'] = formatTimeElapsed($poolData['poolStats']['estimateTime']); 80 | 81 | $data['url'] = $this->_apiURL; 82 | 83 | $this->_fileHandler->write(json_encode($data)); 84 | return $data; 85 | } 86 | 87 | return json_decode($this->_fileHandler->read(), true); 88 | } 89 | 90 | } 91 | -------------------------------------------------------------------------------- /includes/classes/pools/bitcoinaffiliatenetwork.php: -------------------------------------------------------------------------------- 1 | 'https://mining.bitcoinaffiliatenetwork.com')); 24 | $this->_apiKey = $params['apikey']; 25 | $this->_userId = $params['userid']; 26 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 27 | } 28 | 29 | public function update() { 30 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 31 | $poolData = array(); 32 | foreach ($this->_actions as $action) { 33 | $poolData[$action] = curlCall($this->_apiURL . '/index.php?page=api&id='. $this->_userId .'&api_key='. $this->_apiKey . '&action=' . $action); 34 | 35 | if ($action == 'getpoolstatus') { 36 | $poolData[$action] = $poolData[$action]['getpoolstatus']['data']; 37 | } else if ($action == 'getblockstats') { 38 | $poolData[$action] = $poolData[$action]['getblockstats']['data']; 39 | } else if ($action == 'getuserbalance') { 40 | $poolData[$action] = $poolData[$action]['getuserbalance']['data']; 41 | } else if ($action == 'getuserstatus') { 42 | $poolData[$action] = $poolData[$action]['getuserstatus']['data']; 43 | } 44 | } 45 | 46 | // Offline Check 47 | if (empty($poolData[$this->_actions[0]])) { 48 | return; 49 | } 50 | 51 | // Data Order 52 | $data['type'] = $this->_type; 53 | 54 | $data['pending_payout'] = number_format($poolData['getuserbalance']['pending_payout'], 8);; 55 | $data['payout_bonus'] = number_format($poolData['getuserbalance']['pending_bonus'], 8);; 56 | $data['bonus_%'] = $poolData['getuserbalance']['pending_bonus_pct'].'%'; 57 | 58 | if ($poolData['getuserbalance']['merged_mining']) { 59 | foreach ($poolData['getuserbalance']['merged_mining'] as $coin) { 60 | $data[$coin['coin'].'_balance'] = number_format($coin['balance'], 8);; 61 | } 62 | } 63 | 64 | $data['network_hashrate'] = formatHashrate($poolData['getpoolstatus']['nethashrate']/1000); 65 | 66 | $data['pool_hashrate'] = formatHashrate($poolData['getpoolstatus']['hashrate']); 67 | 68 | $data['user_hashrate'] = formatHashrate($poolData['getuserstatus']['hashrate']); 69 | 70 | $data['pool_workers'] = $poolData['getpoolstatus']['workers']; 71 | $data['efficiency'] = $poolData['getpoolstatus']['efficiency'] . '%'; 72 | $data['accepted'] = $poolData['public']['shares_this_round']; 73 | $data['rejected'] = round($poolData['public']['shares_this_round'] - ($poolData['public']['shares_this_round'] * ($poolData['getpoolstatus']['efficiency']/100))); 74 | $data['difficulty'] = round($poolData['getpoolstatus']['networkdiff'], 5); 75 | 76 | $timeSinceLastBlock = formatTimeElapsed($poolData['getpoolstatus']['timesincelast']); 77 | 78 | $data['time_since_last_block'] = $timeSinceLastBlock; 79 | $data['%_of_expected'] = round(($poolData['public']['shares_this_round'] / $poolData['getpoolstatus']['estshares']) * 100, 2) . '%'; 80 | $data['current_block'] = $poolData['getpoolstatus']['currentnetworkblock']; 81 | $data['last_block'] = $poolData['getpoolstatus']['lastblock']; 82 | 83 | $data['username'] = $poolData['getuserstatus']['username']; 84 | 85 | $data['url'] = $this->_apiURL; 86 | 87 | $this->_fileHandler->write(json_encode($data)); 88 | return $data; 89 | } 90 | 91 | return json_decode($this->_fileHandler->read(), true); 92 | } 93 | 94 | } 95 | -------------------------------------------------------------------------------- /includes/classes/pools/bitminter.php: -------------------------------------------------------------------------------- 1 | 'https://bitminter.com')); 15 | $this->_apiKey = $params['apikey']; 16 | $this->_userId = $params['userid']; 17 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 18 | } 19 | 20 | public function update() { 21 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 22 | $poolData['global'] = curlCall($this->_apiURL . '/api/pool/stats'); 23 | $poolData['user'] = curlCall($this->_apiURL . '/api/users/'.$this->_userId.'?key='. $this->_apiKey); 24 | 25 | 26 | // Offline Check 27 | if (empty($poolData['global']) || empty($poolData['user'])) { 28 | return; 29 | } 30 | 31 | // Payout Information 32 | $data['type'] = $this->_type; 33 | 34 | // Balances? 35 | $data['btc_balance'] = number_format($poolData['user']['balances']['BTC'], 8); 36 | $data['nmc_balance'] = number_format($poolData['user']['balances']['NMC'], 8); 37 | 38 | $data['user_hashrate'] = formatHashRate($poolData['user']['hash_rate']*1000); 39 | 40 | $data['network_hashrate'] = formatHashRate($poolData['global']['hash_rate']*1000000); 41 | 42 | $data['workers'] = $poolData['user']['active_workers']; 43 | 44 | $data['round_duration'] = formatTimeElapsed($poolData['user']['now']-$poolData['user']['round_start']['BTC']); 45 | 46 | $data['username'] = $poolData['user']['name']; 47 | 48 | $data['url'] = $this->_apiURL; 49 | 50 | $this->_fileHandler->write(json_encode($data)); 51 | return $data; 52 | } 53 | 54 | return json_decode($this->_fileHandler->read(), true); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /includes/classes/pools/btcguild.php: -------------------------------------------------------------------------------- 1 | 'https://www.btcguild.com')); 14 | $this->_apiKey = $params['apikey']; 15 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['address']) .'.json'); 16 | } 17 | 18 | public function update() { 19 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 20 | 21 | $poolData = curlCall($this->_apiURL . '/api.php?api_key='. $this->_apiKey); 22 | 23 | // Offline Check 24 | if (empty($poolData)) { 25 | return; 26 | } 27 | 28 | // Data Order 29 | $data['type'] = $this->_type; 30 | 31 | // Pool Speed 32 | $data['pool_hashrate'] = formatHashRate($poolData['pool']['pool_speed']*1000000000); 33 | $data['user_hashrate'] = 0; 34 | 35 | // BTC Payout 36 | // $data['total_BTC'] = $poolData['user']['total_rewards']; 37 | $data['paid_BTC'] = $poolData['user']['paid_rewards']; 38 | $data['unpaid_BTC'] = $poolData['user']['unpaid_rewards']; 39 | $data['past_24h_BTC'] = $poolData['user']['past_24h_rewards']; 40 | $data['BTC_difficulty'] = $poolData['pool']['difficulty']; 41 | $data['valid_BTC_shares'] = 0; 42 | $data['stale_BTC_shares'] = 0; 43 | $data['duplicate_BTC_shares'] = 0; 44 | $data['unknown_BTC_shares'] = 0; 45 | 46 | // NMC Payout 47 | // $data['total_NMC'] = $poolData['user']['total_rewards_nmc']; 48 | $data['paid_NMC'] = $poolData['user']['paid_rewards_nmc']; 49 | $data['unpaid_NMC'] = $poolData['user']['unpaid_rewards_nmc']; 50 | $data['past_24h_NMC'] = $poolData['user']['past_24h_rewards_nmc']; 51 | $data['NMC_difficulty'] = $poolData['pool']['difficulty_nmc']; 52 | $data['valid_NMC_shares'] = 0; 53 | $data['stale_NMC_shares'] = 0; 54 | $data['duplicate_NMC_shares'] = 0; 55 | $data['unknown_NMC_shares'] = 0; 56 | 57 | foreach ($poolData['workers'] as $worker) { 58 | $data['user_hashrate'] += $worker['hashrate']; 59 | 60 | // BTC 61 | $data['valid_BTC_shares'] += $worker['valid_shares']; 62 | $data['stale_BTC_shares'] += $worker['stale_shares']; 63 | $data['duplicate_BTC_shares'] += $worker['duplicate_shares']; 64 | $data['unknown_BTC_shares'] += $worker['unknown_shares']; 65 | 66 | // NMC 67 | $data['valid_NMC_shares'] += $worker['valid_shares_nmc']; 68 | $data['stale_NMC_shares'] += $worker['stale_shares_nmc']; 69 | $data['duplicate_NMC_shares'] += $worker['duplicate_shares_nmc']; 70 | $data['unknown_NMC_shares'] += $worker['unknown_shares_nmc']; 71 | } 72 | 73 | $data['active_workers'] = 0; 74 | if (!empty($poolData['workers'])) { 75 | foreach($poolData['workers'] as $worker) { 76 | if ($worker['hash_rate'] != 0) { 77 | $data['active_workers']++; 78 | } 79 | 80 | } 81 | } 82 | 83 | // Clear data if it's missing 84 | foreach ($data as $key => $value) { 85 | if ($value == 0) { 86 | unset($data[$key]); 87 | } 88 | } 89 | 90 | $data['url'] = $this->_apiURL; 91 | 92 | $this->_fileHandler->write(json_encode($data)); 93 | return $data; 94 | } 95 | 96 | return json_decode($this->_fileHandler->read(), true); 97 | } 98 | 99 | } 100 | -------------------------------------------------------------------------------- /includes/classes/pools/burstninja.php: -------------------------------------------------------------------------------- 1 | 'http://burst.ninja/webAPI/pool')); 14 | $this->_userId = $params['userid']; 15 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['userid']) .'.json'); 16 | } 17 | 18 | public function update() { 19 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 20 | $poolData = array(); 21 | $poolData = curlCall($this->_apiURL . '?accountId='.$this->_userId); 22 | 23 | // Offline Check 24 | if (empty($poolData)) { 25 | return; 26 | } 27 | 28 | // Data Order 29 | $data['type'] = $this->_type; 30 | 31 | $data['sent'] = $poolData['miner']['totalEarned']; 32 | $data['unconfirmed_balance'] = $poolData['miner']['unconfirmedPayouts']; 33 | 34 | $data['user_capacity'] = formatCapacity($poolData['miner']['estimatedCapacity']*1000000); 35 | $data['pool_capacity'] = formatCapacity($poolData['pool']['estimatedCapacity']*1000000); 36 | $data['pool_miners'] = $poolData['pool']['totalMiners']; 37 | 38 | $data['current_block'] = $poolData['current']['block']; 39 | $data['nonces_submitted'] = $poolData['current']['noncesSubmitted']; 40 | $data['best_deadline'] = formatTimeElapsed($poolData['current']['bestDeadline']); 41 | $data['round_duration'] = formatTimeElapsed(time()-$poolData['current']['timeBlockStarted']); 42 | $data['pool_blocks_won'] = $poolData['pool']['blocksWon']; 43 | 44 | $data['url'] = "http://burst.ninja"; 45 | 46 | $this->_fileHandler->write(json_encode($data)); 47 | return $data; 48 | } 49 | 50 | return json_decode($this->_fileHandler->read(), true); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /includes/classes/pools/ckpool.php: -------------------------------------------------------------------------------- 1 | _apiKey = $params['apikey']; 16 | $this->_userId = $params['userid']; 17 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 18 | } 19 | 20 | public function update() { 21 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 22 | $poolData = array(); 23 | $poolData['user'] = curlCall($this->_apiURL . '/index.php?k=api&json=y&username='.$this->_userId.'&api='.$this->_apiKey); 24 | $poolData['workers'] = curlCall($this->_apiURL . '/index.php?k=api&json=y&work=y&username='.$this->_userId.'&api='.$this->_apiKey); 25 | 26 | // Offline Check 27 | if (empty($poolData['user']) || empty($poolData['workers'])) { 28 | return; 29 | } 30 | 31 | // Data Order 32 | $data['type'] = $this->_type; 33 | 34 | $data['user_hashrate'] = formatHashrate($poolData['user']['u_hashrate5m']/1000); 35 | $data['pool_hashrate'] = formatHashrate($poolData['user']['p_hashrate5m']/1000); 36 | 37 | for ($i=0; $poolData['workers']['rows'] > $i; $i++) { 38 | $data[$poolData['workers']['workername:'.$i]] = formatHashrate($poolData['workers']['w_hashrate5m:'.$i]/1000); 39 | } 40 | $data['workers'] = $poolData['workers']['rows']; 41 | 42 | $data['round_duration'] = formatTimeElapsed(time() - $poolData['user']['lastblock']); 43 | 44 | $data['url'] = $this->_apiURL; 45 | 46 | $this->_fileHandler->write(json_encode($data)); 47 | return $data; 48 | } 49 | 50 | return json_decode($this->_fileHandler->read(), true); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /includes/classes/pools/eclipse.php: -------------------------------------------------------------------------------- 1 | 'https://eclipsemc.com')); 20 | // https://eclipsemc.com 21 | $this->_apiKey = $params['apikey']; 22 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 23 | } 24 | 25 | public function update() { 26 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 27 | $poolData = array(); 28 | foreach ($this->_actions as $action) { 29 | $poolData[$action] = curlCall($this->_apiURL . '/api.php?key='.$this->_apiKey.'&action='. $action); 30 | } 31 | 32 | // Offline Check 33 | if (empty($poolData[$this->_actions[0]])) { 34 | return; 35 | } 36 | 37 | // Data Order 38 | $data['type'] = $this->_type; 39 | 40 | $data['total_sent'] = $poolData['userstats']['data']['user']['total_payout']; 41 | $data['balance'] = $poolData['userstats']['data']['user']['confirmed_rewards']; 42 | $data['unconfirmed_balance'] = $poolData['userstats']['data']['user']['unconfirmed_rewards']; 43 | $data['estimated_rewards'] = $poolData['userstats']['data']['user']['estimated_rewards']; 44 | 45 | $data['pool_hashrate'] = $poolData['poolstats']['hashrate']; 46 | 47 | 48 | $data['user_hashrate'] = 0; 49 | $speedMultiplier = array( 50 | 'GH/s' => 1000, 51 | 'TH/s' => 1000000, 52 | ); 53 | foreach ($poolData['userstats']['workers'] as $worker) { 54 | if (!empty($worker['hash_rate'])) { 55 | $hashrate = strtok($worker['hash_rate'], ' '); 56 | $hashspeed = substr(strrchr($worker['hash_rate'], ' '), 1); 57 | $data['user_hashrate'] += $hashrate * $speedMultiplier[$hashspeed]; 58 | } 59 | } 60 | 61 | $data['user_hashrate'] = formatHashRate($data['user_hashrate']*1000); 62 | 63 | $data['pool_workers'] = $poolData['poolstats']['active_workers']; 64 | 65 | // how to get active user workers and total hashrate? 66 | $data['time_since_last_block'] = $poolData['poolstats']['round_duration']; // Would love to format this one day 67 | // $data['time_since_last_block'] = formatTimeElapsed(); // how to format? 00:52:44 68 | 69 | $data['url'] = $this->_apiURL; 70 | 71 | $this->_fileHandler->write(json_encode($data)); 72 | return $data; 73 | } 74 | 75 | return json_decode($this->_fileHandler->read(), true); 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /includes/classes/pools/eligius.php: -------------------------------------------------------------------------------- 1 | 'http://eligius.st/~wizkid057/newstats')); 22 | $this->_btcaddess = $params['address']; 23 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['address']) .'.json'); 24 | } 25 | 26 | public function update() { 27 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 28 | $poolData = array(); 29 | foreach ($this->_actions as $action) { 30 | if ($action == 'livedata') { 31 | $poolData[$action] = curlCall($this->_apiURL . '/instant.php/livedata.json'); 32 | continue; 33 | } 34 | 35 | $actionParam = $action; 36 | if ($action == 'getuserhashrate' || $action == 'getuserstat') { 37 | if ($action == 'getuserhashrate') { 38 | $actionParam = 'gethashrate'; 39 | } 40 | $actionParam .= '&username=' . $this->_btcaddess; 41 | } 42 | $poolData[$action] = curlCall($this->_apiURL . '/api.php?cmd='.$actionParam); 43 | } 44 | 45 | // Offline Check 46 | if (empty($poolData[$this->_actions[0]])) { 47 | return; 48 | } 49 | 50 | // Data Order 51 | $data['type'] = $this->_type; 52 | 53 | $data['sent'] = number_format($poolData['getuserstat']['output']['everpaid']*0.00000001, 8); 54 | $data['balance'] = number_format($poolData['getuserstat']['output']['lbal']*0.00000001, 8); 55 | $data['unconfirmed_balance'] = number_format(($poolData['getuserstat']['output']['bal'] - $poolData['getuserstat']['output']['lbal'])*0.00000001, 8); 56 | $data['total_balance'] = number_format($data['balance']+$data['unconfirmed_balance'], 8); 57 | 58 | $data['pool_hashrate_(64 seconds)'] = $poolData['gethashrate']['output']['av64']['pretty']; 59 | 60 | $data['user_hashrate_(3_hours)'] = $poolData['getuserhashrate']['output']['av10800']['pretty']; 61 | $data['user_hashrate_(22.5_minutes)'] = $poolData['getuserhashrate']['output']['av1350']['pretty']; 62 | $data['user_hashrate_(128_seconds)'] = $poolData['getuserhashrate']['output']['av128']['pretty']; 63 | 64 | $data['round_duration'] = formatTimeElapsed($poolData['livedata']['roundduration']); 65 | $data['round_luck'] = round(round(($poolData['livedata']['network_difficulty']*1000) / $poolData['livedata']['roundsharecount'], 2) / 10, 2).'%'; 66 | 67 | $data['last_block'] = $poolData['livedata']['lastblockheight']; 68 | $data['last_block_url'] = $this->_apiURL . '/blocks.php'; 69 | 70 | $data['url_name'] = 'http://eligius.st'; 71 | $data['url'] = $this->_apiURL . '/userstats.php/' . $this->_btcaddess; 72 | 73 | $this->_fileHandler->write(json_encode($data)); 74 | return $data; 75 | } 76 | 77 | return json_decode($this->_fileHandler->read(), true); 78 | } 79 | 80 | } 81 | -------------------------------------------------------------------------------- /includes/classes/pools/magicpool.php: -------------------------------------------------------------------------------- 1 | 'https://magicpool.org')); 14 | $this->_btcaddess = $params['address']; 15 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['address']) .'.json'); 16 | } 17 | 18 | public function update() { 19 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 20 | $poolData['pool'] = curlCall($this->_apiURL . '/api.php'); 21 | $poolData['user'] = curlCall($this->_apiURL . '/api.php?user='.$this->_btcaddess); 22 | 23 | // Offline Check 24 | if (empty($poolData['pool']) || empty($poolData['user'])) { 25 | return; 26 | } 27 | 28 | // Data Order 29 | $data['type'] = $this->_type; 30 | 31 | $data['total_paid'] = number_format($poolData['user']['totalPaid'], 8); 32 | $data['balance'] = number_format($poolData['user']['pending'], 8); 33 | 34 | $data['profitability_(BTC/MHs/day)'] = number_format($poolData['user']['lastProf'], 8); 35 | 36 | $data['pool_hashrate'] = formatHashrate($poolData['pool']['poolhashrate']*1000); 37 | $data['user_hashrate'] = formatHashrate($poolData['user']['hashrate']*1000); 38 | 39 | $data['url'] = $this->_apiURL; 40 | 41 | $this->_fileHandler->write(json_encode($data)); 42 | 43 | return $data; 44 | } 45 | 46 | return json_decode($this->_fileHandler->read(), true); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /includes/classes/pools/mpos.php: -------------------------------------------------------------------------------- 1 | _apiKey = $params['apikey']; 25 | $this->_userId = $params['userid']; 26 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 27 | } 28 | 29 | public function update() { 30 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 31 | $poolData = array(); 32 | foreach ($this->_actions as $action) { 33 | $poolData[$action] = curlCall($this->_apiURL . '/index.php?page=api&id='. $this->_userId .'&api_key='. $this->_apiKey . '&action=' . $action); 34 | 35 | if ($action == 'getpoolstatus') { 36 | $poolData[$action] = $poolData[$action]['getpoolstatus']['data']; 37 | } else if ($action == 'getblockstats') { 38 | $poolData[$action] = $poolData[$action]['getblockstats']['data']; 39 | } else if ($action == 'getuserbalance') { 40 | $poolData[$action] = $poolData[$action]['getuserbalance']['data']; 41 | } else if ($action == 'getuserstatus') { 42 | $poolData[$action] = $poolData[$action]['getuserstatus']['data']; 43 | } 44 | } 45 | 46 | // Offline Check 47 | if (empty($poolData[$this->_actions[0]])) { 48 | return; 49 | } 50 | 51 | // Data Order 52 | $data['type'] = $this->_type; 53 | 54 | $data['balance'] = number_format($poolData['getuserbalance']['confirmed'], 8); 55 | $data['unconfirmed_balance'] = number_format($poolData['getuserbalance']['unconfirmed'], 8); 56 | 57 | $data['network_hashrate'] = formatHashrate($poolData['getpoolstatus']['nethashrate']/1000); 58 | 59 | $data['pool_hashrate'] = formatHashrate($poolData['getpoolstatus']['hashrate']); 60 | 61 | $data['user_hashrate'] = formatHashrate($poolData['getuserstatus']['hashrate']); 62 | 63 | $data['pool_workers'] = $poolData['getpoolstatus']['workers']; 64 | $data['efficiency'] = $poolData['getpoolstatus']['efficiency'] . '%'; 65 | $data['accepted'] = $poolData['public']['shares_this_round']; 66 | $data['rejected'] = round($poolData['public']['shares_this_round'] - ($poolData['public']['shares_this_round'] * ($poolData['getpoolstatus']['efficiency']/100))); 67 | $data['difficulty'] = round($poolData['getpoolstatus']['networkdiff'], 5); 68 | 69 | $timeSinceLastBlock = formatTimeElapsed($poolData['getpoolstatus']['timesincelast']); 70 | 71 | $data['time_since_last_block'] = $timeSinceLastBlock; 72 | $data['%_of_expected'] = round(($poolData['public']['shares_this_round'] / $poolData['getpoolstatus']['estshares']) * 100, 2) . '%'; 73 | $data['current_block'] = $poolData['getpoolstatus']['currentnetworkblock']; 74 | $data['last_block'] = $poolData['getpoolstatus']['lastblock']; 75 | $data['last_block_url'] = $this->_apiURL.'/index.php?page=statistics&action=round&height='.$poolData['getpoolstatus']['lastblock']; 76 | $data['blocks_pool_found'] = $poolData['getblockstats']['TotalValid']; 77 | 78 | $data['username'] = $poolData['getuserstatus']['username']; 79 | 80 | $data['url'] = $this->_apiURL; 81 | 82 | $this->_fileHandler->write(json_encode($data)); 83 | return $data; 84 | } 85 | 86 | return json_decode($this->_fileHandler->read(), true); 87 | } 88 | 89 | } 90 | -------------------------------------------------------------------------------- /includes/classes/pools/multipoolus.php: -------------------------------------------------------------------------------- 1 | 'http://api.multipool.us/api.php')); 15 | $this->_apiKey = $params['apikey']; 16 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) . '.json'); 17 | } 18 | 19 | public function update() { 20 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 21 | $poolData = curlCall($this->_apiURL . '?api_key='. $this->_apiKey); 22 | 23 | 24 | // Offline Check 25 | if (empty($poolData)) { 26 | return; 27 | } 28 | 29 | // Payout Information 30 | $data['type'] = $this->_type; 31 | 32 | $poolHashrate = 0; 33 | $userHashrate = 0; 34 | foreach ($poolData['currency'] as $coin => $values) { 35 | if ($values['confirmed_rewards'] != 0) { 36 | $data[$coin.'_balance'] = number_format($values['confirmed_rewards'], 8); 37 | } 38 | if ($values['estimated_rewards'] != 0) { 39 | $data[$coin.'_unconfirmed_balance'] = number_format($values['estimated_rewards'], 8); 40 | } 41 | // removed until we find a better way to display this information. Right now it's way too cluttered 42 | // if ($values['hashrate'] != '0') { 43 | // $data[$coin.'_hashrate'] = formatHashrate($values['hashrate']); 44 | // } 45 | if ($values['hashrate'] != 0) { 46 | $userHashrate += $values['hashrate']; 47 | } 48 | $poolHashrate += $values['pool_hashrate']; 49 | } 50 | 51 | $data['pool_hashrate'] = $poolHashrate; 52 | $data['user_hashrate'] = $userHashrate; 53 | 54 | $userWorkers = array(); 55 | foreach ($poolData['workers'] as $coin => $workers) { 56 | foreach ($workers as $name => $worker) { 57 | if (!array_key_exists($name, $userWorkers)) { 58 | $userWorkers[$name] = 0; 59 | } 60 | if ($worker['hashrate'] != 0) { 61 | $userWorkers[$name] += $worker['hashrate']; 62 | } 63 | } 64 | } 65 | 66 | foreach ($userWorkers as $name => $worker) { 67 | $name = explode('.', $name); 68 | $data['worker_'.$name[1]] = formatHashrate($worker); 69 | } 70 | 71 | $data['pool_hashrate'] = formatHashrate($data['pool_hashrate']); 72 | $data['user_hashrate'] = formatHashrate($data['user_hashrate']); 73 | 74 | $data['url_name'] = 'https://multipool.us'; 75 | $data['url'] = 'https://multipool.us/'; 76 | 77 | $this->_fileHandler->write(json_encode($data)); 78 | 79 | return $data; 80 | } 81 | 82 | return json_decode($this->_fileHandler->read(), true); 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /includes/classes/pools/nicehash.php: -------------------------------------------------------------------------------- 1 | _btcaddess = $params['address']; 16 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['address']) .'.json'); 17 | } 18 | 19 | function getAlgo($algoId) { 20 | /* 21 | according to https://nicehash.com/?p=api 22 | values are 23 | 24 | 0 = Scrypt 25 | 1 = SHA256 26 | 2 = Scrypt-A.-Nf. 27 | 3 = X11 28 | 4 = X13 29 | 5 = Keccak 30 | 6 = X15 31 | 7 = Nist5 32 | 8 = NeoScrypt 33 | 9 = Lyra2RE 34 | 100 = Multi-algorithm (only valid for global statistics) 35 | */ 36 | $algoTypes = array ( 37 | 0 => 'Scrypt', 38 | 1 => 'SHA256', 39 | 2 => 'Scrypt-A.-Nf.', 40 | 3 => 'X11', 41 | 4 => 'X13', 42 | 5 => 'Keccak', 43 | 6 => 'X15', 44 | 7 => 'Nist5', 45 | 8 => 'NeoScrypt', 46 | 9 => 'Lyra2RE', 47 | 100=>'Multi-algorithm' 48 | ); 49 | if (array_key_exists($algoId, $algoTypes)) { 50 | return $algoTypes[$algoId]; 51 | } else { 52 | return "Undefined"; 53 | } 54 | } 55 | 56 | public function update() { 57 | if ($CACHED == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 58 | $poolData = array(); 59 | $poolData['user'] = curlCall($this->_apiURL . '/api?method=stats.provider&addr='. $this->_btcaddess); 60 | $poolData['global'] = curlCall($this->_apiURL . '/api?method=stats.global.current'); 61 | 62 | 63 | // Offline Check 64 | if (empty($poolData['user']) || empty($poolData['global'])) { 65 | return; 66 | } 67 | 68 | $algoNetSpeed = array(); 69 | foreach ($poolData['global']['result']['stats'] as $values) { 70 | $algoNetSpeed[$values['algo']] = $values['speed']; 71 | } 72 | 73 | $data = array(); 74 | 75 | $data['type'] = $this->_type; 76 | 77 | $data['total_balance'] = 0; 78 | 79 | foreach ($poolData['user']['result']['stats'] as $stats => $values) { 80 | if ($values['accepted_speed'] > 0 || $values['balance'] > 0.00000000) { 81 | $algo = $this->getAlgo($values['algo']); 82 | $data['total_balance'] += $values['balance']; 83 | $data[$algo.'_balance'] = $values['balance'] . ' BTC'; 84 | $data[$algo.'_accepted'] = formatHashrate($values['accepted_speed'] * 1000000); 85 | $data[$algo.'_rejected'] = formatHashrate($values['rejected_speed'] * 1000000); 86 | $data[$algo.'_network_speed'] = formatHashrate($algoNetSpeed[$values['algo']] * 1000000); 87 | } 88 | } 89 | 90 | $data['total_balance'] = number_format($data['total_balance'], 8) . ' BTC'; 91 | 92 | $data['address'] = $this->_btcaddess; 93 | 94 | $data['url'] = $this->_apiURL; 95 | 96 | $this->_fileHandler->write(json_encode($data)); 97 | 98 | return $data; 99 | } 100 | 101 | return json_decode( $this->_fileHandler->read(), true ); 102 | } 103 | 104 | } 105 | -------------------------------------------------------------------------------- /includes/classes/pools/nomp.php: -------------------------------------------------------------------------------- 1 | _address = $params['address']; 16 | $this->_coin = $params['coin']; 17 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. $this->_apiURL . '/' . hash('md4', $params['address']) .'.json'); 18 | } 19 | 20 | public function update() { 21 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 22 | $poolData = array(); 23 | $poolData = curlCall($this->_apiURL . '/api/stats'); 24 | 25 | 26 | // Offline Check 27 | if (empty($poolData)) { 28 | return; 29 | } 30 | 31 | if (empty($this->_coin)) { 32 | $this->findCoin($poolData); 33 | } 34 | $poolData = $poolData['pools'][$this->_coin]; 35 | 36 | $totalValidShares = 0; 37 | $totalInValidShares = 0; 38 | foreach ($poolData['workers'] as $address => $values) { 39 | $totalValidShares += $values['shares']; 40 | $totalInValidShares += $values['invalidshares']; 41 | } 42 | $totalShares = $totalValidShares+$totalInValidShares; 43 | 44 | // Data Order 45 | $data['type'] = $this->_type; 46 | 47 | $data['algorithm'] = $poolData['algorithm']; 48 | $data['coin'] = $poolData['name'] . ' (' . $poolData['symbol'] . ')'; 49 | 50 | $data['pool_hashrate'] = $poolData['hashrateString']; 51 | $data['pool_valid_shares'] = $totalValidShares; 52 | $data['pool_invalid_shares'] = $totalInValidShares; 53 | $data['pool_workers'] = $poolData['workerCount']; 54 | 55 | $data['user_hashrate'] = $poolData['workers'][$this->_address]['hashrateString']; 56 | $data['user_valid_shares'] = $poolData['workers'][$this->_address]['shares']; 57 | $data['user_invalid_shares'] = $poolData['workers'][$this->_address]['invalidshares']; 58 | 59 | $userTotalShares = $poolData['workers'][$this->_address]['shares']+$poolData['workers'][$this->_address]['invalidshares']; 60 | $data['round_share_%'] = round(($userTotalShares/$totalShares)*100, 4); 61 | 62 | $data['blocks_pool_found'] = $poolData['poolStats']['validBlocks']; 63 | $data['blocks_confirmed'] = $poolData['blocks']['confirmed']; 64 | $data['blocks_pending'] = $poolData['blocks']['pending']; 65 | 66 | if ($poolData['blocks']['orphaned'] != 0) { 67 | $data['blocks_orphaned'] = $poolData['blocks']['orphaned']; 68 | } 69 | 70 | $data['url'] = $this->_apiURL; 71 | 72 | $this->_fileHandler->write(json_encode($data)); 73 | return $data; 74 | } 75 | 76 | return json_decode($this->_fileHandler->read(), true); 77 | } 78 | 79 | private function findCoin($poolData) { 80 | foreach ($poolData['pools'] as $coin => $coinData) { 81 | if (array_key_exists($this->_address, $coinData['workers'])) { 82 | $this->_coin = $coin; 83 | return; 84 | } 85 | } 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /includes/classes/pools/p2pool.php: -------------------------------------------------------------------------------- 1 | _addess = $params['address']; 23 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['address']) .'.json'); 24 | } 25 | 26 | public function update() { 27 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 28 | $poolData = array(); 29 | foreach ($this->_actions as $action) { 30 | $poolData[$action] = curlCall($this->_apiURL . '/' . $action); 31 | } 32 | 33 | // Offline Check 34 | if (empty($poolData[$this->_actions[0]])) { 35 | return; 36 | } 37 | 38 | // Data Order 39 | $data['type'] = $this->_type; 40 | 41 | $data['coin'] = $poolData['web/currency_info']['symbol']; 42 | 43 | $data['balance'] = number_format($poolData['current_payouts'][$this->_addess], 8); 44 | 45 | $data['user_hashrate'] = formatHashrate($poolData['local_stats']['miner_hash_rates'][$this->_addess]/1000); 46 | $data['pool_hashrate'] = formatHashrate($poolData['global_stats']['pool_nonstale_hash_rate']/1000); 47 | 48 | $data['pool_uptime'] = formatTimeElapsed($poolData['local_stats']['uptime']); 49 | 50 | $data['pool_fee'] = $poolData['local_stats']['fee'] . '%'; 51 | 52 | $data['peers_in'] = $poolData['local_stats']['peers']['incoming']; 53 | $data['peers_out'] = $poolData['local_stats']['peers']['outgoing']; 54 | 55 | $data['url'] = $this->_apiURL; 56 | 57 | $this->_fileHandler->write(json_encode($data)); 58 | return $data; 59 | } 60 | 61 | return json_decode($this->_fileHandler->read(), true); 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /includes/classes/pools/simplecoin.php: -------------------------------------------------------------------------------- 1 | _apiKey = $params['apikey']; 20 | $this->_actions[] = $this->_apiKey; 21 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 22 | } 23 | 24 | public function update() { 25 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 26 | $poolData = array(); 27 | foreach ($this->_actions as $action) { 28 | $poolData[$action] = curlCall($this->_apiURL . '/api/'. $action); 29 | } 30 | 31 | // Offline Check 32 | if (empty($poolData[$this->_actions[0]])) { 33 | return; 34 | } 35 | 36 | // Data Order 37 | $data['type'] = $this->_type; 38 | 39 | $data['total_paid'] = (!empty($poolData[$this->_apiKey]['total_paid']) ? $poolData[$this->_apiKey]['total_paid']/100000000 : 0); 40 | 41 | $data['balance'] = (!empty($poolData[$this->_apiKey]['balance']) ? $poolData[$this->_apiKey]['balance']/100000000 : 0); 42 | $data['unconfirmed_balance'] = (!empty($poolData[$this->_apiKey]['unconfirmed_balance']) ? $poolData[$this->_apiKey]['unconfirmed_balance']/100000000 : 0); 43 | $data['estimated_round_payout'] = (!empty($poolData[$this->_apiKey]['est_round_payout']) ? number_format($poolData[$this->_apiKey]['est_round_payout'], 8) : 0); 44 | 45 | $data['pool_hashrate'] = formatHashrate($poolData['pool_stats']['hashrate']); 46 | 47 | $data['user_hashrate'] = formatHashrate($poolData[$this->_apiKey]['last_10_hashrate'] * 1000); 48 | 49 | $data['pool_workers'] = $poolData['pool_stats']['workers']; 50 | 51 | $data['accepted'] = 0; 52 | $data['rejected'] = 0; 53 | $data['efficiency'] = 0; 54 | $data['active_worker(s)'] = 0; 55 | foreach ($poolData[$this->_apiKey]['workers'] as $worker) { 56 | if ($worker['online']) { 57 | $data['efficiency'] += $worker['efficiency']; 58 | $data['accepted'] += $worker['accepted']; 59 | $data['rejected'] += $worker['rejected']; 60 | $data['active_worker(s)']++; 61 | } 62 | } 63 | if ($data['active_worker(s)'] > 0) { 64 | $data['efficiency'] = number_format($data['efficiency'] / $data['active_worker(s)'], 2); 65 | } else { 66 | $data['efficiency'] = 0.00; 67 | } 68 | $data['efficiency'] .= '%'; 69 | 70 | $data['time_since_last_block'] = gmdate('H\H i\M s\S', $poolData['pool_stats']['round_duration']); 71 | 72 | $data['last_block_found'] = $poolData['pool_stats']['last_block_found']; 73 | 74 | $data['url'] = $this->_apiURL; 75 | 76 | $this->_fileHandler->write(json_encode($data)); 77 | 78 | return $data; 79 | } 80 | 81 | return json_decode($this->_fileHandler->read(), true); 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /includes/classes/pools/slush.php: -------------------------------------------------------------------------------- 1 | 'https://mining.bitcoin.cz')); 15 | $this->_apiKey = $params['apikey']; 16 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 17 | } 18 | 19 | public function update() { 20 | if ($CACHED == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 21 | $poolData = array(); 22 | $poolData['global'] = curlCall($this->_apiURL . '/stats/json/'. $this->_apiKey); 23 | $poolData['user'] = curlCall($this->_apiURL . '/accounts/profile/json/'. $this->_apiKey); 24 | 25 | // Offline Check 26 | if (empty($poolData['global']) || empty($poolData['user'])) { 27 | return; 28 | } 29 | 30 | $data = array(); 31 | 32 | $data['type'] = $this->_type; 33 | 34 | $data['confirmed_balance'] = $poolData['user']['confirmed_reward']; 35 | $data['unconfirmed_balance'] = $poolData['user']['unconfirmed_reward']; 36 | $data['estimated_balance'] = $poolData['user']['estimated_reward']; 37 | 38 | $data['pool_hashrate'] = formatHashrate($poolData['global']['ghashes_ps']*1000000); 39 | $data['user_hashrate'] = formatHashrate($poolData['user']['hashrate']*1000); 40 | 41 | $data['workers'] = count($poolData['user']['workers']); 42 | 43 | $roundDuration = 0; 44 | $roundDurationVal = explode(':', $poolData['global']['round_duration']); 45 | $roundDuration += intval($roundDurationVal[0] * 60 * 60); 46 | $roundDuration += intval($roundDurationVal[1] * 60); 47 | $roundDuration += intval($roundDurationVal[2]); 48 | $data['round_duration'] = formatTimeElapsed($roundDuration); 49 | 50 | $data['username'] = $poolData['user']['username']; 51 | 52 | $data['url'] = $this->_apiURL; 53 | 54 | $this->_fileHandler->write(json_encode($data)); 55 | 56 | return $data; 57 | } 58 | 59 | return json_decode( $this->_fileHandler->read(), true ); 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /includes/classes/pools/trademybit.php: -------------------------------------------------------------------------------- 1 | 'https://pool.trademybit.com')); 15 | $this->_apiKey = $params['apikey']; 16 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['apikey']) .'.json'); 17 | } 18 | 19 | public function update() { 20 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 21 | $payoutData = curlCall($this->_apiURL . '/api/balance?key='. $this->_apiKey); 22 | $poolData = curlCall($this->_apiURL . '/api/hashinfo?key='. $this->_apiKey); 23 | 24 | // Offline Check 25 | if (empty($poolData)) { 26 | return; 27 | } 28 | 29 | // Payout Information 30 | $data['type'] = $this->_type; 31 | $data['unexchanged'] = $payoutData['autoexchange']['unexchanged']; 32 | $data['exchanged'] = $payoutData['autoexchange']['exchanged']; 33 | 34 | $data['est_payout'] = $payoutData['autoexchange']['est_total']; 35 | 36 | // Pool Speed 37 | $data['user_hash'] = formatHashRate($poolData['user_hash']*1000); 38 | 39 | 40 | // Clear data if it's missing 41 | foreach ($data as $key => $value) { 42 | if ($value == 0) { 43 | unset($data[$key]); 44 | } 45 | } 46 | 47 | $data['url'] = $this->_apiURL; 48 | 49 | $this->_fileHandler->write(json_encode($data)); 50 | return $data; 51 | } 52 | 53 | return json_decode($this->_fileHandler->read(), true); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /includes/classes/pools/wafflepool.php: -------------------------------------------------------------------------------- 1 | 'http://wafflepool.com')); 14 | $this->_btcaddess = $params['address']; 15 | $this->_fileHandler = new FileHandler('pools/' . $this->_type . '/'. hash('md4', $params['address']) .'.json'); 16 | } 17 | 18 | public function update() { 19 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) { // updates every 30 seconds 20 | $poolData = curlCall($this->_apiURL . '/tmp_api?address='. $this->_btcaddess); 21 | 22 | // Offline Check 23 | if (empty($poolData)) { 24 | return; 25 | } 26 | 27 | // Data Order 28 | $data['type'] = $this->_type; 29 | 30 | $data['sent'] = $poolData['balances']['sent']; 31 | $data['balance'] = $poolData['balances']['confirmed']; 32 | $data['unconfirmed_balance'] = number_format($poolData['balances']['unconverted'], 8); 33 | 34 | $data['hashrate'] = formatHashrate($poolData['hash_rate']/1000); 35 | 36 | $activeWorkers = 0; 37 | foreach ($poolData['worker_hashrates'] as $worker) { 38 | if ($worker['hashrate'] != 0) { 39 | $activeWorkers++; 40 | continue; 41 | } 42 | } 43 | $data['active_worker(s)'] = $activeWorkers; 44 | 45 | $data['url'] = $this->_apiURL; 46 | 47 | $this->_fileHandler->write(json_encode($data)); 48 | return $data; 49 | } 50 | 51 | return json_decode($this->_fileHandler->read(), true); 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /includes/classes/pools/westhash.php: -------------------------------------------------------------------------------- 1 | _objs)*3); // Total Rigs * 3 seconds 14 | } 15 | 16 | /* 17 | * POST 18 | */ 19 | 20 | public function restart() { 21 | $this->_objs[0]->restart(); 22 | } 23 | 24 | public function switchPool() { 25 | $result = $this->_objs[0]->switchPool(intval($_POST['pool'])-1); 26 | 27 | if ($_POST['reset']) { 28 | $this->_objs[0]->resetStats(); 29 | } 30 | 31 | return $result; 32 | } 33 | public function addPool() { 34 | $isValid = $this->postValidate('pools', $_POST['values']); 35 | if ($isValid !== true) { 36 | return $isValid; 37 | } 38 | 39 | $result = $this->_objs[0]->addPool($_POST['values']); 40 | return $result; 41 | } 42 | public function prioritizePool() { 43 | $result = $this->_objs[0]->prioritizePools($_POST['priority'], $_POST['poolId']); 44 | return $result; 45 | } 46 | public function editPool() { 47 | $isValid = $this->postValidate('pools', $_POST['values']); 48 | if ($isValid !== true) { 49 | return $isValid; 50 | } 51 | 52 | $result = $this->_objs[0]->editPool($_POST['poolId'], $_POST['values']); 53 | return $result; 54 | } 55 | public function removePool() { 56 | $result = $this->_objs[0]->removePool($_POST['poolId']); 57 | return $result; 58 | } 59 | public function changePoolStatus() { 60 | if ($_POST['active'] == 'true') { 61 | $result = $this->_objs[0]->enablePool($_POST['poolId']); 62 | } else { 63 | $result = $this->_objs[0]->disablePool($_POST['poolId']); 64 | } 65 | return $result; 66 | } 67 | 68 | public function changeDeviceStatus() { 69 | if ($_POST['enable'] == 'true') { 70 | $result = $this->_objs[0]->enableDevice(strtolower($_POST['devType']), $_POST['devId']); 71 | } else { 72 | $result = $this->_objs[0]->disableDevice(strtolower($_POST['devType']), $_POST['devId']); 73 | } 74 | return $result; 75 | } 76 | 77 | public function updateDevices() { 78 | if ($_POST['devices']) { 79 | return $this->_objs[0]->updateDevice($_POST['devices']); 80 | } 81 | } 82 | 83 | public function resetStats() { 84 | $this->_objs[0]->resetStats(); 85 | } 86 | 87 | 88 | /* 89 | * GET 90 | */ 91 | 92 | public function getPools() { 93 | $data = array(); 94 | foreach ($this->_objs as $rig) { 95 | $data[] = $rig->pools(); 96 | } 97 | 98 | return $data; 99 | } 100 | 101 | public function getDevices() { 102 | $data = array(); 103 | foreach ($this->_objs as $rig) { 104 | $data[] = $rig->devices(); 105 | } 106 | 107 | return $data; 108 | } 109 | 110 | public function getSettings() { 111 | $data = array(); 112 | foreach ($this->_objs as $rig) { 113 | $data[] = $rig->getSettings(); 114 | } 115 | 116 | return $data; 117 | } 118 | 119 | // Get Overview of Rigs 120 | public function getOverview() { 121 | $data = array(); 122 | foreach ($this->_objs as $rig) { 123 | $data[] = $rig->overview(); 124 | } 125 | 126 | return array('overview' => $data); 127 | } 128 | 129 | public function getUpdate() { 130 | foreach ($this->_objs as $rig) { 131 | $data[] = $rig->update(); 132 | } 133 | 134 | if (count($data) > 1) { 135 | return $data; 136 | } 137 | 138 | return $data[0]; 139 | } 140 | 141 | } 142 | -------------------------------------------------------------------------------- /includes/classes/rss.php: -------------------------------------------------------------------------------- 1 | _url = $params['url']; 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /includes/classes/rss/reddit.php: -------------------------------------------------------------------------------- 1 | getPools(); 13 | 14 | echo json_encode($data); 15 | } 16 | 17 | public function pool() { 18 | $data['pools'] = $this->getPools(intval($_GET['attr'])); 19 | 20 | echo json_encode($data); 21 | } 22 | 23 | public function addConfig() { 24 | if (isset($_POST['type'])) { 25 | $action = 'add' . ucwords(strtolower($_POST['type'])); 26 | require_once(dirname(__FILE__).'/../cryptoglance.php'); 27 | $cryptoglance = new CryptoGlance(); 28 | 29 | $cryptoglance->$action(); 30 | } 31 | } 32 | 33 | public function editConfig() { 34 | if (isset($_POST['type'])) { 35 | $action = 'edit' . ucwords(strtolower($_POST['type'])); 36 | require_once(dirname(__FILE__).'/../cryptoglance.php'); 37 | $cryptoglance = new CryptoGlance(); 38 | $cryptoglance->$action(); 39 | } 40 | } 41 | 42 | public function removeConfig() { 43 | if (isset($_POST['type'])) { 44 | $action = 'remove' . ucwords(strtolower($_POST['type'])); 45 | require_once(dirname(__FILE__).'/../cryptoglance.php'); 46 | $cryptoglance = new CryptoGlance(); 47 | $cryptoglance->$action(); 48 | } 49 | } 50 | 51 | // Private 52 | private function getPools($poolId = null) { 53 | $pools = new Pools(); 54 | $data = $pools->update($poolId); 55 | 56 | return $data; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /includes/classes/wallets.php: -------------------------------------------------------------------------------- 1 | 'BTC', 14 | 'burstcoin' => 'BURST', 15 | 'darkcoin' => 'DRK', 16 | 'dogecoin' => 'DOGE', 17 | 'dogecoindark' => 'DOGED', 18 | 'litecoin' => 'LTC', 19 | 'neoscoin' => 'NEOS', 20 | 'paycoin' => 'XPY', 21 | 'reddcoin' => 'RDD', 22 | // 'vertcoin' => 'VTC', // Disabled until blockchain explorer works 23 | ); 24 | 25 | protected $_fiat = array( 26 | 'CAD' => 'Canadian Dollar', 27 | 'EUR' => 'Euro', 28 | 'GBP' => 'British Pound', 29 | 'NZD' => 'New Zealand Dollar', 30 | 'USD' => 'US Dollar', 31 | ); 32 | 33 | 34 | /* 35 | * POST 36 | */ 37 | 38 | 39 | /* 40 | * GET 41 | */ 42 | 43 | public function getCurrencies() { 44 | return $this->_currencies; 45 | } 46 | public function getFiat() { 47 | return $this->_fiat; 48 | } 49 | 50 | public function getUpdate() { 51 | $data = array(); 52 | foreach ($this->_objs as $wallet) { 53 | // Exchange information 54 | $btcIndex = new FirstRally(); 55 | 56 | // Get FIAT rate 57 | $fiatPrice = $btcIndex->convert($wallet['fiat'], $this->_currencies[$wallet['currency']]); 58 | $fiatPrice = number_format($fiatPrice['result']['conversion'], 8, '.', ''); 59 | 60 | // Get COIN rate 61 | $coinPrice = $btcIndex->convert('btc', $this->_currencies[$wallet['currency']]); // 'btc' to be dynamic 62 | $coinPrice = number_format($coinPrice['result']['conversion'], 8, '.', ''); 63 | 64 | // Wallet information 65 | $walletAddressData = array(); 66 | $currencyBalance = 0.00000000; 67 | $fiatBalance = 0.00; 68 | $coinBalance = 0.00000000; 69 | 70 | // Wallet actually contains a bunch of addresses and associated data 71 | foreach ($wallet['addresses'] as $addrKey => $address) { 72 | $addressData = $address->update(); 73 | $walletAddressData[$addressData['address']] = array( 74 | 'id' => $addrKey+1, 75 | 'label' => $addressData['label'], 76 | 'balance' => str_replace('.00000000', '', number_format($addressData['balance'], 8)), 77 | 'fiat_balance' => number_format($fiatPrice * $addressData['balance'], 2), 78 | 'coin_balance' => str_replace('.00000000', '', number_format($coinPrice * $addressData['balance'], 8)), 79 | ); 80 | $currencyBalance += number_format($addressData['balance'], 8, '.', ''); 81 | $fiatBalance += number_format($fiatPrice * $addressData['balance'], 2, '.', ''); 82 | $coinBalance += number_format($coinPrice * $addressData['balance'], 8, '.', ''); 83 | } 84 | 85 | $data[] = array ( 86 | 'label' => $wallet['label'], 87 | 'currency' => $wallet['currency'], 88 | 'currency_balance' => str_replace('.00000000', '', number_format($currencyBalance, 8, '.', ',')), 89 | 'currency_code' => $this->_currencies[$wallet['currency']], 90 | 'coin_balance' => str_replace('.00000000', '', number_format($coinBalance, 8, '.', ',')), 91 | 'coin_price' => str_replace('.00000000', '', $coinPrice), 92 | 'coin_code' => 'BTC', 93 | 'coin_value' => number_format($fiatPrice, 4, '.', ','), 94 | 'fiat_balance' => number_format($fiatBalance, 2, '.', ','), 95 | 'fiat_code' => $wallet['fiat'], 96 | 'addresses' => $walletAddressData, 97 | ); 98 | } 99 | 100 | return $data; 101 | } 102 | 103 | } 104 | -------------------------------------------------------------------------------- /includes/classes/wallets/abstract.php: -------------------------------------------------------------------------------- 1 | _label = $label; 15 | $this->_address = $address; 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /includes/classes/wallets/bitcoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://blockchain.info/address/' . $address . '?format=json&limit=0'; 11 | $this->_apiURL = 'http://blockr.io/api/v1/address/balance/' . $address; 12 | $this->_fileHandler = new FileHandler('wallets/bitcoin/' . $this->_address . '.json'); 13 | } 14 | 15 | public function update() { 16 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 17 | $walletData = curlCall($this->_apiURL); 18 | 19 | $data = array ( 20 | 'label' => $this->_label, 21 | 'address' => $this->_address, 22 | // 'balance' => (float) $walletData['final_balance']/100000000 // for blockchain 23 | 'balance' => (float) $walletData['data']['balance'] // for blockr.io 24 | ); 25 | 26 | $this->_fileHandler->write(json_encode($data)); 27 | return $data; 28 | } 29 | 30 | return json_decode($this->_fileHandler->read(), true); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /includes/classes/wallets/burstcoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://api.burstcoin.eu/account/balance'; 11 | $this->_fileHandler = new FileHandler('wallets/burstcoin/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 16 | $data = curlCall($this->_apiURL, http_build_query(array('account' => $this->_address)), 'application/x-www-form-urlencoded'); 17 | 18 | $data = array ( 19 | 'label' => $this->_label, 20 | 'address' => $this->_address, 21 | 'balance' => (float) $data['balanceNQT']/100000000 22 | ); 23 | 24 | $this->_fileHandler->write(json_encode($data)); 25 | return $data; 26 | } 27 | 28 | return json_decode($this->_fileHandler->read(), true); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /includes/classes/wallets/darkcoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://explorer.darkcoin.io/chain/Darkcoin/q/addressbalance/' . $address; 11 | $this->_fileHandler = new FileHandler('wallets/darkcoin/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { 16 | // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 17 | $walletBalance = curlCall($this->_apiURL); 18 | 19 | $data = array ( 20 | 'label' => $this->_label, 21 | 'address' => $this->_address, 22 | 'balance' => (float) $walletBalance 23 | ); 24 | 25 | $this->_fileHandler->write(json_encode($data)); 26 | return $data; 27 | } 28 | 29 | return json_decode($this->_fileHandler->read(), true); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /includes/classes/wallets/dogecoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://dogechain.info/chain/Dogecoin/q/addressbalance/' . $address; 11 | $this->_fileHandler = new FileHandler('wallets/dogecoin/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 16 | $walletBalance = curlCall($this->_apiURL); // this comes back as a single value (total doge in the wallet) 17 | 18 | $data = array ( 19 | 'label' => $this->_label, 20 | 'address' => $this->_address, 21 | 'balance' => (float) $walletBalance 22 | ); 23 | 24 | $this->_fileHandler->write(json_encode($data)); 25 | return $data; 26 | } 27 | 28 | return json_decode($this->_fileHandler->read(), true); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /includes/classes/wallets/dogecoindark.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://blockexperts.com/api?coin=doged&action=getbalance&address=' . $address; 11 | $this->_fileHandler = new FileHandler('wallets/dogecoindark/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 16 | $walletBalance = curlCall($this->_apiURL); // this comes back as a single value (total doge in the wallet) 17 | 18 | $data = array ( 19 | 'label' => $this->_label, 20 | 'address' => $this->_address, 21 | 'balance' => (float) $walletBalance 22 | ); 23 | 24 | $this->_fileHandler->write(json_encode($data)); 25 | return $data; 26 | } 27 | 28 | return json_decode($this->_fileHandler->read(), true); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /includes/classes/wallets/litecoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://ltc.blockr.io/api/v1/address/balance/' . $address; 11 | $this->_fileHandler = new FileHandler('wallets/litecoin/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 16 | $walletData = curlCall($this->_apiURL); 17 | 18 | $data = array ( 19 | 'label' => $this->_label, 20 | 'address' => $this->_address, 21 | 'balance' => (float) $walletData['data']['balance'] 22 | ); 23 | 24 | $this->_fileHandler->write(json_encode($data)); 25 | return $data; 26 | } 27 | 28 | return json_decode($this->_fileHandler->read(), true); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /includes/classes/wallets/neoscoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://explorer.neoscoin.com:3000/chain/NeosCoin/q/addressbalance/' . $address; 11 | $this->_fileHandler = new FileHandler('wallets/neoscoin/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 16 | $addressBalance = curlCall($this->_apiURL); 17 | 18 | $data = array ( 19 | 'label' => $this->_label, 20 | 'address' => $this->_address, 21 | 'balance' => (float) $addressBalance 22 | ); 23 | 24 | $this->_fileHandler->write(json_encode($data)); 25 | return $data; 26 | } 27 | 28 | return json_decode($this->_fileHandler->read(), true); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /includes/classes/wallets/paycoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://chainz.cryptoid.info/xpy/api.dws?q=getbalance&key=6e1508c63640&a=' . $address; 11 | $this->_fileHandler = new FileHandler('wallets/paycoin/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 16 | $addressBalance = curlCall($this->_apiURL); 17 | 18 | $data = array ( 19 | 'label' => $this->_label, 20 | 'address' => $this->_address, 21 | 'balance' => (float) $addressBalance 22 | ); 23 | 24 | $this->_fileHandler->write(json_encode($data)); 25 | return $data; 26 | } 27 | 28 | return json_decode($this->_fileHandler->read(), true); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /includes/classes/wallets/reddcoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://live.reddcoin.com/api/addr/' . $address . '/balance'; 11 | 12 | $this->_fileHandler = new FileHandler('wallets/reddcoin/' . $this->_address . '.json'); 13 | } 14 | 15 | public function update() { 16 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 17 | $addressBalance = curlCall($this->_apiURL); 18 | 19 | $data = array ( 20 | 'label' => $this->_label, 21 | 'address' => $this->_address, 22 | 'balance' => (float) $addressBalance/100000000 23 | ); 24 | 25 | $this->_fileHandler->write(json_encode($data)); 26 | return $data; 27 | } 28 | 29 | return json_decode($this->_fileHandler->read(), true); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /includes/classes/wallets/vertcoin.php: -------------------------------------------------------------------------------- 1 | _apiURL = 'http://explorer.vertcoin.org/chain/Vertcoin/q/addressbalance/' . $address; 11 | $this->_fileHandler = new FileHandler('wallets/vertcoin/' . $this->_address . '.json'); 12 | } 13 | 14 | public function update() { 15 | if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 3600) { // updates every 60 minutes. How much are you being paid out that this must change? We take donations :) 16 | $addressBalance = curlCall($this->_apiURL); 17 | 18 | $data = array ( 19 | 'label' => $this->_label, 20 | 'address' => $this->_address, 21 | 'balance' => (float) $addressBalance 22 | ); 23 | 24 | $this->_fileHandler->write(json_encode($data)); 25 | return $data; 26 | } 27 | 28 | return json_decode($this->_fileHandler->read(), true); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /includes/config.php: -------------------------------------------------------------------------------- 1 | array( 9 | 'feed' => 'https://api.github.com/repos/cryptoGlance/cryptoGlance-web-app/branches/master', 10 | 'zip' => 'https://github.com/cryptoGlance/cryptoGlance-web-app/archive/master.zip', 11 | ), 12 | 'beta' => array( 13 | 'feed' => 'https://api.github.com/repos/cryptoGlance/cryptoGlance-web-app/branches/beta', 14 | 'zip' => 'https://github.com/cryptoGlance/cryptoGlance-web-app/archive/beta.zip', 15 | ), 16 | 'nightly' => array( 17 | 'feed' => 'https://api.github.com/repos/cryptoGlance/cryptoGlance-web-app/branches/nightly', 18 | 'zip' => 'https://github.com/cryptoGlance/cryptoGlance-web-app/archive/nightly.zip', 19 | ), 20 | ); -------------------------------------------------------------------------------- /includes/footer.php: -------------------------------------------------------------------------------- 1 | 30 | -------------------------------------------------------------------------------- /includes/functions.php: -------------------------------------------------------------------------------- 1 | diff($to); 71 | 72 | if ($difference->y) { 73 | $format = '%yY %mM %dD'; 74 | } else if ($difference->m) { 75 | $format = '%mM %dD %hH'; 76 | } else if ($difference->d) { 77 | $format = '%aD %hH %iM'; 78 | } else if ($difference->h) { 79 | $format = '%hH %iM %sS'; 80 | } else if ($difference->i) { 81 | $format = '0H %iM %sS'; 82 | } else if ($difference->s) { 83 | $format = '0H 0M %sS'; 84 | } 85 | 86 | $uptime = $difference->format($format); 87 | 88 | return $uptime; 89 | } 90 | 91 | return null; 92 | } 93 | -------------------------------------------------------------------------------- /includes/head.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | <?php echo ($currentPage == 'index') ? 'Dashboard' : '' ?> 14 | <?php echo ($currentPage == 'settings') ? 'Settings' : '' ?> 15 | <?php echo ($currentPage == 'help') ? 'README.md' : '' ?> 16 | <?php echo ($currentPage == 'changelog') ? 'CHANGELOG.md' : '' ?> 17 | <?php echo ($currentPage == 'wallet') ? 'Wallet Details' : '' ?> 18 | <?php echo ($currentPage == 'rig') ? 'Rig Details' : '' ?> 19 | <?php echo ($currentPage == 'update') ? 'Updating cryptoGlance...' : '' ?> 20 | :: cryptoGlance 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 41 | 42 | 64 | 65 | -------------------------------------------------------------------------------- /includes/inc.php: -------------------------------------------------------------------------------- 1 | getSettings(); 32 | 33 | // Current Build: 34 | define('CURRENT_VERSION', 'v2.1'); 35 | 36 | // Misc function used throughout cryptoglance 37 | require_once('functions.php'); 38 | -------------------------------------------------------------------------------- /includes/login-head.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | cryptoGlance - Login 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 27 | 28 | -------------------------------------------------------------------------------- /includes/login-header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 14 | -------------------------------------------------------------------------------- /includes/menu-active_panels.php: -------------------------------------------------------------------------------- 1 | 2 |
  • Overview
  • 3 |
  • Hostname-1
  • 4 |
  • CoinHuntr
  • 5 |
  • Address Balances
  • 6 |
  • CoinWatcher
  • 7 |
  • CoinDesk.com
  • 8 |
  • /r/litecoinmining
  • 9 | -------------------------------------------------------------------------------- /includes/scripts.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | '; 14 | } 15 | ?> 16 | 17 | 18 | 21 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /includes/simplepie-1.3.1-min.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptoGlance/cryptoGlance-web-app/7881b57477bf31e3286023652ef5e41e17364488/includes/simplepie-1.3.1-min.php -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 31 | 32 | 33 | getMiners()) == 0 && count($cryptoGlance->getPools()) == 0 && count($cryptoGlance->getWallets()) == 0) { ?> 34 |
    Start by adding a panel.
    The Dashboard is comprised of a variety of panels, each showing a certain type of info.
    35 | 36 | 80 | 81 | 82 | 83 |
    84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /install-linux-dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # cryptoGlance - Installs apache if never installed before 3 | 4 | sudo apt-get install apache2 5 | sudo apt-get install php5 6 | sudo apt-get install libapache2-mod-php5 7 | sudo apt-get install php5-json 8 | sudo apt-get install php5-curl -------------------------------------------------------------------------------- /js/Util.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | TODO: 4 | - continue to add to Util class 5 | 6 | **/ 7 | 8 | !function (root, $) { 9 | 10 | 'use strict'; 11 | 12 | /*=============================================== 13 | = Util Abstract Singleton = 14 | ===============================================*/ 15 | 16 | var Util = function () { 17 | throw 'Error:: Util is an abstract class, and should not be instantiated!' 18 | } 19 | 20 | /*----- End of Util Abstract Singleton ------*/ 21 | 22 | 23 | /*=========================================== 24 | = Util Public Methods = 25 | ===========================================*/ 26 | 27 | Util.getSpeed = function (value) { 28 | if (value > 1e9) { 29 | return parseFloat(value/1e9).toFixed(2) + ' PH/s' 30 | } 31 | else if (value > 1e6) { 32 | return parseFloat(value/1e6).toFixed(2) + ' TH/s' 33 | } 34 | else if (value > 1e3) { 35 | return parseFloat(value/1e3).toFixed(2) + ' GH/s' 36 | } 37 | else if (value < 1) { 38 | return parseFloat(value * 1e3).toFixed(2) + ' KH/s' 39 | } 40 | 41 | return value.toFixed(2) + ' MH/s' 42 | } 43 | 44 | Util.extractHashrate = function (hashrate) { 45 | if (!hashrate) { 46 | return 0 47 | } 48 | if ('number' === typeof hashrate) { 49 | return hashrate 50 | } 51 | 52 | var regex = /^(\d{1,}|\d{1,}\.\d{1,})?\s?(KH\/s|MH\/s|GH\/s)$/gi 53 | var value 54 | var unit 55 | 56 | if (regex.test(hashrate)) { 57 | var matches = hashrate.replace(regex, function (arr, v, u) { 58 | value = parseFloat(v) 59 | unit = u.toLowerCase() 60 | return arr 61 | }) 62 | 63 | switch (unit) { 64 | case 'ph/s': 65 | value = value * 1e9 66 | break 67 | case 'th/s': 68 | value = value * 1e6 69 | break 70 | case 'gh/s': 71 | value = value * 1e3 72 | break 73 | case 'kh/s': 74 | value = value / 1e3 75 | break 76 | case 'mh/s': 77 | default: 78 | value = value 79 | } 80 | 81 | return value 82 | } 83 | else { 84 | throw 'Error:: invalid value of { ' + hashrate + ' } for parameter hashrate' 85 | } 86 | } 87 | 88 | /*----- End of Util Public Methods ------*/ 89 | 90 | 91 | /*============================================ 92 | = Util Private Methods = 93 | ============================================*/ 94 | 95 | 96 | 97 | /*----- End of Util Private Methods ------*/ 98 | 99 | 100 | /*=================================== 101 | = Util Export = 102 | ===================================*/ 103 | 104 | root.Util = Util 105 | 106 | /*----- End of Util Export ------*/ 107 | 108 | 109 | 110 | }(window, window.jQuery) 111 | -------------------------------------------------------------------------------- /js/dashboard/DeviceCollection.js: -------------------------------------------------------------------------------- 1 | !function (root, $) { 2 | 3 | /*================================================================= 4 | = DeviceCollection Class/Object/Constructor = 5 | =================================================================*/ 6 | 7 | var DeviceCollection = function (rigID) { 8 | this.collection = [] 9 | this.rigID = rigID 10 | this.length = 0 11 | } 12 | 13 | /*----- End of DeviceCollection Class/Object/Constructor ------*/ 14 | 15 | 16 | /*======================================================= 17 | = DeviceCollection Public Methods = 18 | =======================================================*/ 19 | 20 | DeviceCollection.prototype.add = function(deviceID) { 21 | this.length++ 22 | this.collection.push(new this.SubClass(deviceID, this.rigID)) 23 | } 24 | 25 | DeviceCollection.prototype.update = function (deviceList) { 26 | var deviceUpdate 27 | var deviceSummary = [] 28 | var deviceNav = [] 29 | var deviceStatus = [] 30 | 31 | this.collection.forEach(function (device, index) { 32 | deviceUpdate = device.update(deviceList[index] || {}) 33 | deviceSummary.push(deviceUpdate.summary) 34 | deviceNav.push(deviceUpdate.nav) 35 | deviceStatus.push(deviceUpdate.status) 36 | }) 37 | 38 | return { 39 | nav: deviceNav.join(''), 40 | summary: deviceSummary.join(''), 41 | status: deviceStatus.join('') 42 | } 43 | } 44 | 45 | /*----- End of DeviceCollection Public Methods ------*/ 46 | 47 | 48 | /*======================================================== 49 | = DeviceCollection Private Methods = 50 | ========================================================*/ 51 | 52 | 53 | 54 | /*----- End of DeviceCollection Private Methods ------*/ 55 | 56 | 57 | /*=============================================== 58 | = DeviceCollection Export = 59 | ===============================================*/ 60 | 61 | root.DeviceCollection = DeviceCollection 62 | 63 | /*----- End of DeviceCollection Export ------*/ 64 | 65 | }(window, window.jQuery) 66 | -------------------------------------------------------------------------------- /js/dashboard/MobileMiner.js: -------------------------------------------------------------------------------- 1 | !function (root, $) { 2 | 3 | /*=============================================================== 4 | = MobileMiner Class/Object/Constructor = 5 | ===============================================================*/ 6 | 7 | var MobileMiner = function () { 8 | this.apiData = { type: 'mobile-miner', action: 'update' } 9 | } 10 | 11 | /*----- End of MobileMiner Class/Object/Constructor ------*/ 12 | 13 | 14 | /*===================================================== 15 | = MobileMiner Public Methods = 16 | =====================================================*/ 17 | 18 | MobileMiner.prototype.start = function () { 19 | var _self = this; 20 | 21 | /*========== Initial Poll ==========*/ 22 | _self._getData(); 23 | 24 | /*========== Setup polling ==========*/ 25 | setInterval(function () { 26 | _self._getData(); 27 | }, 40000); // every 40 seconds 28 | } 29 | 30 | /*----- End of MobileMiner Public Methods ------*/ 31 | 32 | 33 | /*====================================================== 34 | = MobileMiner Private Methods = 35 | ======================================================*/ 36 | 37 | MobileMiner.prototype._getData = function () { 38 | var _self = this; 39 | 40 | $.ajax({ 41 | url: 'ajax.php', 42 | data: _self.apiData, 43 | dataType: 'json' 44 | }) 45 | .fail(function (xhr, status, message) { 46 | //console.error(message) 47 | }) 48 | } 49 | 50 | /*----- End of MobileMiner Private Methods ------*/ 51 | 52 | 53 | /*============================================= 54 | = Export MobileMiner = 55 | =============================================*/ 56 | 57 | root.MobileMiner = MobileMiner 58 | 59 | /*----- End of Export MobileMiner ------*/ 60 | 61 | }(window, window.jQuery) 62 | -------------------------------------------------------------------------------- /js/dashboard/Pool.js: -------------------------------------------------------------------------------- 1 | !function (root, $) { 2 | 3 | /*===================================================== 4 | = Pool Class/Object/Constructor = 5 | =====================================================*/ 6 | 7 | var Pool = function (poolId) { 8 | this.poolId = poolId; 9 | this.$poolEl = $('#pool-' + poolId); 10 | this.$poolPanelLabel = $('#pool-' + poolId +' .pool-label'); 11 | this.$poolContentEl = $('#pool-' + poolId +' .panel-body-stats'); 12 | } 13 | 14 | /*----- End of Pool Class/Object/Constructor ------*/ 15 | 16 | 17 | /*=========================================== 18 | = Pool Public Methods = 19 | ===========================================*/ 20 | 21 | Pool.prototype.update = function (poolObj) { 22 | if (poolObj == null) { 23 | this.$poolEl.addClass('panel-offline'); 24 | this.$poolPanelLabel.text('Pool Offline'); 25 | this.$poolContentEl.find('img').remove(); 26 | return; 27 | } 28 | 29 | var summary = '' 30 | if (this.$poolPanelLabel.text() != 'Pool Stats') { 31 | this.$poolPanelLabel.text('Pool Stats'); 32 | } 33 | this.$poolEl.removeClass('panel-offline'); 34 | 35 | for (var key in poolObj) { 36 | if (null === poolObj[key]) { 37 | summary += this._buildStatusHtml('', key, 'n/a') 38 | continue 39 | } 40 | 41 | switch (key) { 42 | case 'type': 43 | case 'url_name': 44 | case 'last_block_url': 45 | break 46 | case 'last_block': 47 | if ('undefined' !== typeof poolObj[key+'_url']) { 48 | summary += this._buildStatusHtml('', key, '' + poolObj[key] + '') 49 | } else { 50 | summary += this._buildStatusHtml('', key, poolObj[key]) 51 | } 52 | break 53 | case 'url': 54 | var url_name = poolObj[key]; 55 | if ('undefined' !== typeof poolObj[key+'_name']) { 56 | url_name = poolObj[key+'_name']; 57 | } 58 | summary += this._buildStatusHtml('', key, '' + url_name + '') 59 | break 60 | default: 61 | if (key.match(/unconfirmed/i) || key.match(/unpaid/i)) { 62 | summary += this._buildStatusHtml('red', key, poolObj[key]) 63 | } else if (key.match(/balance/i) || key.match(/payout/i)) { 64 | summary += this._buildStatusHtml('green', key, poolObj[key]) 65 | } else { 66 | summary += this._buildStatusHtml('', key, poolObj[key]) 67 | } 68 | } 69 | } 70 | if (summary) { 71 | this.$poolContentEl.html(summary) 72 | } 73 | } 74 | 75 | /*----- End of Pool Public Methods ------*/ 76 | 77 | 78 | /*============================================ 79 | = Pool Private Methods = 80 | ============================================*/ 81 | 82 | Pool.prototype._buildStatusHtml = function (_class, name, value) { 83 | return '
    ' + 84 | '
    ' + 85 | '' + value + '' + 86 | '
    ' + 87 | '
    ' + name.replace(/_|-|\./g, ' ') + '
    ' + 88 | '
    ' 89 | } 90 | 91 | /*----- End of Pool Private Methods ------*/ 92 | 93 | 94 | /*=================================== 95 | = Export Pool = 96 | ===================================*/ 97 | 98 | // root.Pool = Pool 99 | root.PoolCollection.prototype.SubClass = Pool 100 | 101 | /*----- End of Export Pool ------*/ 102 | 103 | }(window, window.jQuery) 104 | -------------------------------------------------------------------------------- /js/dashboard/PoolCollection.js: -------------------------------------------------------------------------------- 1 | !function (root, $) { 2 | 3 | /*=============================================================== 4 | = PoolCollection Class/Object/Constructor = 5 | ===============================================================*/ 6 | 7 | var PoolCollection = function () { 8 | this.collection = [] 9 | this.apiData = { type: 'pools', action: 'update' } 10 | this.ready = true 11 | } 12 | 13 | /*----- End of PoolCollection Class/Object/Constructor ------*/ 14 | 15 | 16 | /*===================================================== 17 | = PoolCollection Public Methods = 18 | =====================================================*/ 19 | 20 | PoolCollection.prototype.start = function () { 21 | var _self = this // caching self ref for passing down in scope 22 | 23 | /*========== Generate collection ==========*/ 24 | $('.panel-pool').each(function () { 25 | _self._add(this.getAttribute('data-id')) 26 | }) 27 | 28 | /*========== Initial data call ==========*/ 29 | this._getData(function (pools) { 30 | 31 | /*========== Initial pools update in DOM ==========*/ 32 | _self._update(pools) 33 | 34 | /*========== Setup polling ==========*/ 35 | setInterval(function () { 36 | if (_self.ready) { 37 | _self.ready = false 38 | _self._getData(function (pools) { 39 | _self._update(pools) 40 | }) 41 | } 42 | }, root.poolUpdateTime) 43 | }) 44 | } 45 | 46 | /*----- End of PoolCollection Public Methods ------*/ 47 | 48 | 49 | /*====================================================== 50 | = PoolCollection Private Methods = 51 | ======================================================*/ 52 | 53 | PoolCollection.prototype._add = function (poolId) { 54 | this.collection.push(new this.SubClass(poolId)) 55 | } 56 | 57 | PoolCollection.prototype._update = function (pools) { 58 | var _self = this // caching self ref for passing down in scope 59 | 60 | this.collection.forEach(function (pool, index) { 61 | pool.update(pools[index]) 62 | }) 63 | this.ready = true 64 | } 65 | 66 | PoolCollection.prototype._getData = function (callback) { 67 | var _self = this // caching self ref for passing down in scope 68 | 69 | $.ajax({ 70 | url: 'ajax.php', 71 | data: _self.apiData, 72 | dataType: 'json' 73 | }) 74 | .fail(function (xhr, status, message) { 75 | //console.error(message) 76 | }) 77 | .done(callback) 78 | } 79 | 80 | /*----- End of PoolCollection Private Methods ------*/ 81 | 82 | 83 | /*============================================= 84 | = Export PoolCollection = 85 | =============================================*/ 86 | 87 | root.PoolCollection = PoolCollection 88 | 89 | /*----- End of Export PoolCollection ------*/ 90 | 91 | }(window, window.jQuery) 92 | -------------------------------------------------------------------------------- /js/dashboard/Wallet.js: -------------------------------------------------------------------------------- 1 | !function (root, $) { 2 | 3 | /*======================================================= 4 | = Wallet Class/Object/Constructor = 5 | =======================================================*/ 6 | 7 | var Wallet = function (walletId) { 8 | this.id = walletId 9 | this.label = '' 10 | this.currency = 'bitcoin' 11 | this.currency_balance = 0 12 | this.currency_code = 'BTC' 13 | this.coin_balance = 0 14 | this.coin_code = 'BTC' 15 | this.coin_price = 0 16 | this.coin_value = 0 17 | this.fiat_balance = 0 18 | this.fiat_code = 'USD' 19 | } 20 | 21 | /*----- End of Wallet Class/Object/Constructor ------*/ 22 | 23 | 24 | /*============================================= 25 | = Wallet Public Methods = 26 | =============================================*/ 27 | 28 | Wallet.prototype.update = function (walletObj) { 29 | this.label = walletObj.label 30 | this.currency = walletObj.currency 31 | this.currency_balance = walletObj.currency_balance 32 | this.currency_code = walletObj.currency_code 33 | this.coin_balance = walletObj.coin_balance 34 | this.coin_code = walletObj.coin_code 35 | this.coin_price = walletObj.coin_price 36 | this.coin_value = walletObj.coin_value 37 | this.fiat_balance = walletObj.fiat_balance 38 | this.fiat_code = walletObj.fiat_code 39 | 40 | return this._buildStatusHtml() 41 | } 42 | 43 | /*----- End of Wallet Public Methods ------*/ 44 | 45 | 46 | /*============================================== 47 | = Wallet Private Methods = 48 | ==============================================*/ 49 | 50 | Wallet.prototype._buildStatusHtml = function () { 51 | var output = '
    ' + 52 | '' + this.currency + '' + 53 | '
    ' + 54 | '' + this.currency_balance + ' ' + this.currency_code + ''; 55 | 56 | if (this.currency_code != this.coin_code) { 57 | output += '' + this.fiat_balance + ' ' + this.fiat_code + '' + 58 | '' + this.coin_balance + ' ' + this.coin_code +' @ (' + this.coin_price + ' ' + this.coin_code +')' + 59 | '1 ' + this.currency_code + ' = ' + this.coin_value + ' ' + this.fiat_code + ''; 60 | } else if (this.currency_code == this.coin_code) { 61 | output += '' + this.fiat_balance + ' ' + this.fiat_code + '' + 62 | '1 ' + this.currency_code + ' = ' + this.coin_value + ' ' + this.fiat_code + '' + 63 | ' '; 64 | } else { 65 | output += '' + this.fiat_balance + ' ' + this.fiat_code + ''; 66 | } 67 | 68 | output += '
    ' + 69 | '
    ' + 70 | '' + this.label + ' ' + 71 | '
    ' + 72 | '
    '; 73 | 74 | return output; 75 | } 76 | 77 | /*----- End of Wallet Private Methods ------*/ 78 | 79 | 80 | /*===================================== 81 | = Export Wallet = 82 | =====================================*/ 83 | 84 | // root.Wallet = Wallet 85 | root.WalletCollection.prototype.SubClass = Wallet 86 | 87 | /*----- End of Export Wallet ------*/ 88 | 89 | }(window, window.jQuery) 90 | -------------------------------------------------------------------------------- /js/dashboard/WalletCollection.js: -------------------------------------------------------------------------------- 1 | !function (root, $) { 2 | 3 | /*================================================================= 4 | = WalletCollection Class/Object/Constructor = 5 | =================================================================*/ 6 | 7 | var WalletCollection = function () { 8 | this.collection = [] 9 | 10 | this.apiData = { type: 'wallets', action: 'update' } 11 | this.walletOverviewHtml = '' 12 | this._ready = true 13 | 14 | this.$walletOverviewBody = $('#wallet .panel-body-addresses') 15 | } 16 | 17 | /*----- End of WalletCollection Class/Object/Constructor ------*/ 18 | 19 | /*======================================================= 20 | = WalletCollection Public Methods = 21 | =======================================================*/ 22 | 23 | WalletCollection.prototype.start = function () { 24 | var _self = this // caching self ref for passing down in scope 25 | 26 | /*========== Initial data call ==========*/ 27 | this._getData(function (wallets) { 28 | 29 | /*========== Generate collection ==========*/ 30 | wallets.forEach(function (wallet, index) { 31 | _self._add(index+1) 32 | }) 33 | 34 | /*========== Initial wallet update in DOM ==========*/ 35 | _self._update(wallets) 36 | 37 | /*========== Setup polling ==========*/ 38 | setInterval(function () { 39 | if (_self._ready) { 40 | _self._ready = false 41 | _self._getData(function (wallets) { 42 | _self._update(wallets) 43 | }) 44 | } 45 | }, root.walletUpdateTime) 46 | }) 47 | } 48 | 49 | WalletCollection.prototype.update = function () { 50 | var _self = this 51 | 52 | _self.apiData.cached = 0; 53 | 54 | _self._getData(function (wallets) { 55 | _self._update(wallets) 56 | }) 57 | 58 | delete _self.apiData.cached; 59 | } 60 | 61 | 62 | /*----- End of WalletCollection Public Methods ------*/ 63 | 64 | 65 | /*======================================================== 66 | = WalletCollection Private Methods = 67 | ========================================================*/ 68 | 69 | WalletCollection.prototype._add = function (walletId) { 70 | this.collection.push(new this.SubClass(walletId)) 71 | } 72 | 73 | WalletCollection.prototype._update = function (wallets) { 74 | var _self = this // caching self ref for passing down in scope 75 | 76 | this.walletOverviewHtml = '' 77 | this.collection.forEach(function (wallet, index) { 78 | _self.walletOverviewHtml += wallet.update(wallets[index]) 79 | }) 80 | this.$walletOverviewBody.html(this.walletOverviewHtml) 81 | this._ready = true 82 | } 83 | 84 | WalletCollection.prototype._getData = function (callback) { 85 | var _self = this // caching self ref for passing down in scope 86 | 87 | $.ajax({ 88 | url: 'ajax.php', 89 | data: _self.apiData, 90 | dataType: 'json', 91 | statusCode: { 92 | 401: function() { 93 | window.location.assign('login.php'); 94 | } 95 | } 96 | }) 97 | .fail(function (xhr, status, message) { 98 | //console.error(xhr, status, message) 99 | }) 100 | .done(callback) 101 | } 102 | 103 | /*----- End of WalletCollection Private Methods ------*/ 104 | 105 | 106 | /*=============================================== 107 | = Export WalletCollection = 108 | ===============================================*/ 109 | 110 | root.WalletCollection = WalletCollection 111 | 112 | /*----- End of Export WalletCollection ------*/ 113 | 114 | }(window, window.jQuery) 115 | -------------------------------------------------------------------------------- /js/packages/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.0 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2013 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | (function (factory) { 9 | if (typeof define === 'function' && define.amd) { 10 | // AMD. Register as anonymous module. 11 | define(['jquery'], factory); 12 | } else { 13 | // Browser globals. 14 | factory(jQuery); 15 | } 16 | }(function ($) { 17 | 18 | var pluses = /\+/g; 19 | 20 | function encode(s) { 21 | return config.raw ? s : encodeURIComponent(s); 22 | } 23 | 24 | function decode(s) { 25 | return config.raw ? s : decodeURIComponent(s); 26 | } 27 | 28 | function stringifyCookieValue(value) { 29 | return encode(config.json ? JSON.stringify(value) : String(value)); 30 | } 31 | 32 | function parseCookieValue(s) { 33 | if (s.indexOf('"') === 0) { 34 | // This is a quoted cookie as according to RFC2068, unescape... 35 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 36 | } 37 | 38 | try { 39 | // Replace server-side written pluses with spaces. 40 | // If we can't decode the cookie, ignore it, it's unusable. 41 | // If we can't parse the cookie, ignore it, it's unusable. 42 | s = decodeURIComponent(s.replace(pluses, ' ')); 43 | return config.json ? JSON.parse(s) : s; 44 | } catch(e) {} 45 | } 46 | 47 | function read(s, converter) { 48 | var value = config.raw ? s : parseCookieValue(s); 49 | return $.isFunction(converter) ? converter(value) : value; 50 | } 51 | 52 | var config = $.cookie = function (key, value, options) { 53 | 54 | // Write 55 | 56 | if (value !== undefined && !$.isFunction(value)) { 57 | options = $.extend({}, config.defaults, options); 58 | 59 | if (typeof options.expires === 'number') { 60 | var days = options.expires, t = options.expires = new Date(); 61 | t.setTime(+t + days * 864e+5); 62 | } 63 | 64 | return (document.cookie = [ 65 | encode(key), '=', stringifyCookieValue(value), 66 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 67 | options.path ? '; path=' + options.path : '', 68 | options.domain ? '; domain=' + options.domain : '', 69 | options.secure ? '; secure' : '' 70 | ].join('')); 71 | } 72 | 73 | // Read 74 | 75 | var result = key ? undefined : {}; 76 | 77 | // To prevent the for loop in the first place assign an empty array 78 | // in case there are no cookies at all. Also prevents odd result when 79 | // calling $.cookie(). 80 | var cookies = document.cookie ? document.cookie.split('; ') : []; 81 | 82 | for (var i = 0, l = cookies.length; i < l; i++) { 83 | var parts = cookies[i].split('='); 84 | var name = decode(parts.shift()); 85 | var cookie = parts.join('='); 86 | 87 | if (key && key === name) { 88 | // If second argument (value) is a function it's a converter... 89 | result = read(cookie, value); 90 | break; 91 | } 92 | 93 | // Prevent storing a cookie that we couldn't decode. 94 | if (!key && (cookie = read(cookie)) !== undefined) { 95 | result[name] = cookie; 96 | } 97 | } 98 | 99 | return result; 100 | }; 101 | 102 | config.defaults = {}; 103 | 104 | $.removeCookie = function (key, options) { 105 | if ($.cookie(key) === undefined) { 106 | return false; 107 | } 108 | 109 | // Must not alter options, thus extending a fresh object... 110 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); 111 | return !$.cookie(key); 112 | }; 113 | 114 | })); 115 | -------------------------------------------------------------------------------- /js/packages/jquery.scrollTo.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2007-2013 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com 3 | * Licensed under MIT 4 | * @author Ariel Flesler 5 | * @version 1.4.7 6 | */ 7 | (function(d){function h(b){return"object"==typeof b?b:{top:b,left:b}}var n=d.scrollTo=function(b,c,a){return d(window).scrollTo(b,c,a)};n.defaults={axis:"xy",duration:1.3<=parseFloat(d.fn.jquery)?0:1,limit:!0};n.window=function(b){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){if(this.nodeName&&-1==d.inArray(this.nodeName.toLowerCase(),["iframe","#document","html","body"]))return this;var b=(this.contentWindow||this).document||this.ownerDocument||this;return/webkit/i.test(navigator.userAgent)|| "BackCompat"==b.compatMode?b.body:b.documentElement})};d.fn.scrollTo=function(b,c,a){"object"==typeof c&&(a=c,c=0);"function"==typeof a&&(a={onAfter:a});"max"==b&&(b=9E9);a=d.extend({},n.defaults,a);c=c||a.duration;a.queue=a.queue&&1=e[f]?0:Math.min(e[f],r));!b&&a.queue&&(h!=e[f]&&q(a.onAfterFirst),delete e[f])});q(a.onAfter)}}).end()};n.max=function(b,c){var a="x"==c?"Width":"Height",h="scroll"+a;if(!d(b).is("html,body"))return b[h]-d(b)[a.toLowerCase()]();var a="client"+a,l=b.ownerDocument.documentElement,k=b.ownerDocument.body;return Math.max(l[h],k[h])-Math.min(l[a],k[a])}})(jQuery); 8 | -------------------------------------------------------------------------------- /js/packages/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI Touch Punch 0.2.2 3 | * 4 | * Copyright 2011, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); -------------------------------------------------------------------------------- /js/settings.js: -------------------------------------------------------------------------------- 1 | // BTN Updates 2 | $('button').click(function(e) { 3 | if ($(this).attr('name') == 'clearCookies') { 4 | e.preventDefault(); 5 | 6 | for (var cookie in $.cookie()) { 7 | $.removeCookie(cookie); 8 | } 9 | 10 | window.location.assign('logout.php'); 11 | } 12 | }); 13 | 14 | // Execute when the DOM is ready 15 | // 16 | $(document).ready(function() { 17 | 18 | // Toggle App Update Types 19 | // 20 | $('input[name="update"]', '#settings-wrap').on('switchChange.bootstrapSwitch', function(event, state) { 21 | $('.app-update-types').fadeToggle(); 22 | }); 23 | 24 | // Toggle Mobile Miner Reporting 25 | // 26 | $('input[name="mobileminer"]', '#settings-wrap').on('switchChange.bootstrapSwitch', function(event, state) { 27 | $('.mobileminer-settings').fadeToggle(); 28 | }); 29 | 30 | // Hide Manual Update check if setting has changed 31 | // 32 | $('input[name="updateType"]').change(function() { 33 | $('.checkForUpdates').fadeOut(); 34 | }); 35 | 36 | }); 37 | -------------------------------------------------------------------------------- /js/version.js: -------------------------------------------------------------------------------- 1 | $( window ).ready(function() { 2 | if (typeof updateType != 'undefined') { 3 | setTimeout(function() { 4 | var cookie = $.cookie('cryptoglance_version'); 5 | if (typeof cookie == 'undefined') { 6 | versionCheck(); 7 | } 8 | }, 2500); 9 | } 10 | }); 11 | 12 | function versionCheck(alwaysDisplayModal) { 13 | $.ajax({ 14 | type: 'get', 15 | url: updateType, 16 | dataType: 'json', 17 | crossDomain: 'true' 18 | }).done(function(data) { 19 | if (data.commit.commit.message != CURRENT_VERSION) { 20 | showToastUpdate(CURRENT_VERSION, data.commit.commit.message); 21 | $('.icon-update-available').show(); 22 | } else { 23 | if (typeof alwaysDisplayModal !== 'undefined' && alwaysDisplayModal == true) { 24 | showToastNoUpdate(CURRENT_VERSION); 25 | } 26 | $.removeCookie('cryptoglance_version'); 27 | $('.icon-update-available').hide(); 28 | } 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /logout.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /permissionfix.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # cryptoGlance permission fix script for most linux setups 3 | # http://cryptoglance.info 4 | 5 | sudo chown -R www-data:www-data . 6 | sudo chmod -R 777 user_data -------------------------------------------------------------------------------- /templates/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all -------------------------------------------------------------------------------- /templates/modals/add_panel.php: -------------------------------------------------------------------------------- 1 | 2 | 21 | -------------------------------------------------------------------------------- /templates/modals/add_rig.php: -------------------------------------------------------------------------------- 1 | 2 | 54 | -------------------------------------------------------------------------------- /templates/modals/coming_soon.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/modals/delete_prompt.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/modals/manage_rig.php: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /templates/modals/prompt_remove_wallet.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/modals/qrcode-donate-btc.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /templates/modals/switch-pool.php: -------------------------------------------------------------------------------- 1 | 2 | 38 | -------------------------------------------------------------------------------- /templates/panels/news_feed.php: -------------------------------------------------------------------------------- 1 |
    2 |

    Feed Headlines

    3 |
    4 | 5 | 6 |

    CoinDesk.com

    7 |
    8 |
    9 |
    10 | 13 |
    14 | December 10, 2013 15 |
    16 |
    17 |
    18 | 21 |
    22 | December 10, 2013 23 |
    24 |
    25 |
    26 | 29 |
    30 | December 10, 2013 31 |
    32 |
    33 |
    34 | 37 |
    38 | December 10, 2013 39 |
    40 |
    41 |
    42 | 45 |
    46 | December 10, 2013 47 |
    48 |
    49 |
    50 | 53 |
    54 | December 10, 2013 55 |
    56 |
    57 |
    58 | 62 |
    63 | 64 | -------------------------------------------------------------------------------- /templates/panels/overview.php: -------------------------------------------------------------------------------- 1 |
    2 |

    Overview

    3 |
    4 | 5 |

    Current Rigs

    6 |
    7 |
    8 |
    9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
    NameAlgorithmHashrate avgHashrate 5sActive PoolUptime
    23 |
    24 |
    25 |
    26 | -------------------------------------------------------------------------------- /templates/panels/pool.php: -------------------------------------------------------------------------------- 1 |
    2 |

    3 |
    4 | 5 | 6 |

    Pool Stats

    7 |
    8 |
    loading
    9 |
    10 | -------------------------------------------------------------------------------- /templates/panels/rig.php: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | 4 |
    5 | 6 | 7 | 8 |

    Rig Stats

    9 |
    10 | 11 |
    12 | 13 |
    14 |
    15 |
    16 |
    loading
    17 |
    18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
    34 |
    35 |
    36 |
    37 |
    38 | 39 |
    40 | -------------------------------------------------------------------------------- /templates/panels/subreddit_feed.php: -------------------------------------------------------------------------------- 1 |
    2 |

    Subreddit Reader

    3 |
    4 | 5 | 6 |

    /r/litecoinmining

    7 |
    8 |
    9 |
    10 | 13 |
    14 | December 10, 2013 15 |
    16 |
    17 |
    18 | 21 |
    22 | December 10, 2013 23 |
    24 |
    25 |
    26 | 29 |
    30 | December 10, 2013 31 |
    32 |
    33 |
    34 | 37 |
    38 | December 10, 2013 39 |
    40 |
    41 |
    42 | 45 |
    46 | December 10, 2013 47 |
    48 |
    49 |
    50 | 53 |
    54 | December 10, 2013 55 |
    56 |
    57 |
    58 | 62 |
    63 | 64 | -------------------------------------------------------------------------------- /templates/panels/wallet.php: -------------------------------------------------------------------------------- 1 |
    2 |

    Wallet

    3 |
    4 | 5 | 6 | 7 |

    Balances

    8 |
    9 |
    10 |
    loading
    11 |
    Conversions powered by https://firstrally.com/
    12 |
    13 |
    14 | -------------------------------------------------------------------------------- /user_data/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all --------------------------------------------------------------------------------