├── .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 |
57 |
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 |
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 |
14 |
15 |
16 |
17 |
18 |
19 |
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 |
37 | getMiners()) > 0) {
40 | include("templates/modals/manage_rig.php");
41 |
42 | include("templates/panels/overview.php");
43 |
44 | // Miners
45 | foreach ($cryptoGlance->getMiners() as $minerId => $miner) {
46 | $minerId++; // Doing this because minerID 0 means all devices in ajax calls
47 | include("templates/panels/rig.php");
48 | }
49 | include("templates/modals/switch-pool.php");
50 | }
51 | ?>
52 |
53 | getPools() as $poolId => $pool) {
55 | $poolId++;
56 | include("templates/panels/pool.php");
57 | }
58 | ?>
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | getWallets()) > 0) {
68 | include("templates/panels/wallet.php");
69 | }
70 |
71 | if (count($cryptoGlance->getMiners()) > 0 || count($cryptoGlance->getPools()) > 0) {
72 | include("templates/modals/delete_prompt.php");
73 | }
74 |
75 | include("templates/modals/add_rig.php");
76 | include("templates/modals/add_pool.php");
77 | ?>
78 |
79 |
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 | '

' +
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 | '
' +
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 |
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 | Name |
14 | Algorithm |
15 | Hashrate avg |
16 | Hashrate 5s |
17 | Active Pool |
18 | Uptime |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/templates/panels/pool.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Pool Stats
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/templates/panels/rig.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Rig Stats
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | |
22 | DEV # |
23 | Temperature |
24 | Hashrate 5s |
25 | Accepted |
26 | Rejected |
27 | Utility |
28 | HW Errors |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/templates/panels/subreddit_feed.php:
--------------------------------------------------------------------------------
1 |
2 |
Subreddit Reader
3 |
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 |
14 |
--------------------------------------------------------------------------------
/user_data/.htaccess:
--------------------------------------------------------------------------------
1 | Deny from all
--------------------------------------------------------------------------------