kanoi
11 years ago
10 changed files with 1203 additions and 0 deletions
@ -0,0 +1,269 @@
|
||||
<?php |
||||
# |
||||
include_once('page.php'); |
||||
# |
||||
global $dbg, $dbgstr; |
||||
$dbg = false; |
||||
$dbgstr = ''; |
||||
# |
||||
function adddbg($str) |
||||
{ |
||||
global $dbg, $dbgstr; |
||||
|
||||
if ($dbg === true) |
||||
{ |
||||
if ($dbgstr != '') |
||||
$dbgstr .= "\n"; |
||||
$dbgstr .= $str; |
||||
} |
||||
} |
||||
# |
||||
function btcfmt($amt) |
||||
{ |
||||
$amt /= 100000000; |
||||
return number_format($amt, 8); |
||||
} |
||||
# |
||||
function emailStr($str) |
||||
{ |
||||
$all = '/[^A-Za-z0-9_+\.@-]/'; // no space = trim |
||||
$beg = '/^[\.@+-]+/'; |
||||
$fin = '/[\.@+_-]+$/'; |
||||
return preg_replace(array($all,$beg,$fin), '', $str); |
||||
} |
||||
# |
||||
function loginStr($str) |
||||
{ |
||||
$all = '/[^!-~]/'; // no spaces |
||||
return preg_replace($all, '', $str); |
||||
} |
||||
# |
||||
function trn($str) |
||||
{ |
||||
$rep = str_replace(array('<', '>'), array('<', '>'), $str); |
||||
return $rep; |
||||
} |
||||
# |
||||
function htmler($str) |
||||
{ |
||||
$srch = array('<','>',"\r\n","\n","\r"); |
||||
$rep = array('<','>','<br>','<br>','<br>'); |
||||
return str_replace($srch, $rep, $str); |
||||
} |
||||
# |
||||
function cvtdbg() |
||||
{ |
||||
global $dbg, $dbgstr; |
||||
|
||||
if ($dbg === false || $dbgstr == '') |
||||
$rep = ''; |
||||
else |
||||
$rep = htmler($dbgstr).'<br>'; |
||||
|
||||
return $rep; |
||||
} |
||||
# |
||||
function safeinput($txt, $len = 1024, $lf = true) |
||||
{ |
||||
$ret = trim($txt); |
||||
if ($ret != '') |
||||
{ |
||||
if ($lf === true) |
||||
$ret = preg_replace("/[^ -~\r\n]/", '', $ret); |
||||
else |
||||
$ret = preg_replace('/[^ -~]/', '', $ret); |
||||
|
||||
if ($len > 0) |
||||
$ret = substr($ret, 0, $len); |
||||
} |
||||
return trim($ret); |
||||
} |
||||
# |
||||
function safetext($txt, $len = 1024) |
||||
{ |
||||
$tmp = substr($txt, 0, $len); |
||||
|
||||
$res = ''; |
||||
for ($i = 0; $i < strlen($tmp); $i++) |
||||
{ |
||||
$ch = substr($tmp, $i, 1); |
||||
if ($ch >= ' ' && $ch <= '~') |
||||
$res .= $ch; |
||||
else |
||||
{ |
||||
$c = ord($ch); |
||||
$res .= sprintf('0x%02x', $c); |
||||
} |
||||
} |
||||
|
||||
if (strlen($txt) > $len) |
||||
$res .= '...'; |
||||
|
||||
return $res; |
||||
} |
||||
# |
||||
function dbd($data) |
||||
{ |
||||
return "<font color=red size=+10><br>Web site is currently down</font>"; |
||||
} |
||||
# |
||||
function dbdown() |
||||
{ |
||||
gopage(NULL, 'dbd', NULL, '', true, false); |
||||
} |
||||
# |
||||
function f404($data) |
||||
{ |
||||
return "<font color=red size=+10><br>404</font>"; |
||||
} |
||||
# |
||||
function do404() |
||||
{ |
||||
gopage(NULL, 'f404', NULL, '', true, false); |
||||
} |
||||
# |
||||
function showPage($page, $menu, $name) |
||||
{ |
||||
# If you are doing development, use without '@' |
||||
# Then switch to '@' when finished |
||||
# @include_once("page_$page.php"); |
||||
include_once("page_$page.php"); |
||||
|
||||
$fun = 'show_' . $page; |
||||
if (function_exists($fun)) |
||||
$fun($menu, $name); |
||||
else |
||||
do404(); |
||||
} |
||||
# |
||||
function showIndex() |
||||
{ |
||||
showPage('index', NULL, ''); |
||||
} |
||||
# |
||||
function offline() |
||||
{ |
||||
if (file_exists('./maintenance.txt')) |
||||
{ |
||||
$ip = $_SERVER['REMOTE_ADDR']; |
||||
if ($ip != '192.168.7.74') |
||||
gopage(NULL, file_get_contents('./maintenance.txt'), NULL, '', false, false); |
||||
} |
||||
} |
||||
# |
||||
offline(); |
||||
# |
||||
session_start(); |
||||
# |
||||
include_once('db.php'); |
||||
# |
||||
function validUserPass($user, $pass) |
||||
{ |
||||
$rep = checkpass($user, $pass); |
||||
$ans = repDecode($rep); |
||||
usleep(100000); // Max 10x per second |
||||
if ($ans['STATUS'] == 'ok') |
||||
{ |
||||
$key = 'ckp'.rand(1000000,9999999); |
||||
$_SESSION['ckpkey'] = $key; |
||||
$_SESSION[$key] = array('who' => $user, 'id' => $user); |
||||
} |
||||
} |
||||
# |
||||
function logout() |
||||
{ |
||||
if (isset($_SESSION['ckpkey'])) |
||||
{ |
||||
$key = $_SESSION['ckpkey']; |
||||
|
||||
if (isset($_SESSION[$key])) |
||||
unset($_SESSION[$key]); |
||||
|
||||
unset($_SESSION['ckpkey']); |
||||
} |
||||
} |
||||
# |
||||
function requestRegister() |
||||
{ |
||||
$reg = getparam('Register', false); |
||||
if ($reg !== NULL) |
||||
{ |
||||
logout(); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
# |
||||
function tryLogInOut() |
||||
{ |
||||
// If already logged in, it will ignore User/Pass |
||||
if (isset($_SESSION['ckpkey'])) |
||||
{ |
||||
$logout = getparam('Logout', false); |
||||
if (!nuem($logout) && $logout == 'Logout') |
||||
logout(); |
||||
} |
||||
else |
||||
{ |
||||
$user = getparam('User', false); |
||||
if ($user !== NULL) |
||||
$user = loginStr($user); |
||||
if (nuem($user)) |
||||
return; |
||||
|
||||
$pass = getparam('Pass', false); |
||||
if (nuem($pass)) |
||||
return; |
||||
|
||||
$login = getparam('Login', false); |
||||
if (nuem($login)) |
||||
return; |
||||
|
||||
validUserPass($user, $pass); |
||||
} |
||||
} |
||||
# |
||||
function validate() |
||||
{ |
||||
$who = ''; |
||||
$whoid = ''; |
||||
|
||||
if (!isset($_SESSION['ckpkey'])) |
||||
return false; |
||||
|
||||
$key = $_SESSION['ckpkey']; |
||||
if (!isset($_SESSION[$key])) |
||||
{ |
||||
logout(); |
||||
return array(false, NULL); |
||||
} |
||||
|
||||
if (!isset($_SESSION[$key]['who'])) |
||||
{ |
||||
logout(); |
||||
return array(false, NULL); |
||||
} |
||||
|
||||
$who = $_SESSION[$key]['who']; |
||||
|
||||
if (!isset($_SESSION[$key]['id'])) |
||||
{ |
||||
logout(); |
||||
return array(false, NULL); |
||||
} |
||||
|
||||
$whoid = $_SESSION[$key]['id']; |
||||
|
||||
return array($who, $whoid); |
||||
} |
||||
# |
||||
function loggedIn() |
||||
{ |
||||
list($who, $whoid) = validate(); |
||||
if ($who == false) |
||||
return false; |
||||
|
||||
return true; |
||||
} |
||||
# |
||||
?> |
@ -0,0 +1,127 @@
|
||||
<?php |
||||
# |
||||
include_once('socket.php'); |
||||
include_once('base.php'); |
||||
# |
||||
global $send_sep, $fld_sep, $val_sep; |
||||
$send_sep = '.'; |
||||
$fld_sep = Chr(0x2); |
||||
$val_sep = '='; |
||||
# |
||||
function myhash($str) |
||||
{ |
||||
return strtolower(hash('sha256', $str)); |
||||
} |
||||
# |
||||
function repDecode($rep) |
||||
{ |
||||
global $send_sep, $fld_sep, $val_sep; |
||||
|
||||
$fix = preg_replace("/[\n\r]*$/",'',$rep); |
||||
$major = explode($send_sep, $fix, 4); |
||||
if (count($major) < 3) |
||||
return false; |
||||
|
||||
$ans = array(); |
||||
if (count($major) > 3) |
||||
{ |
||||
$flds = explode($fld_sep, $major[3]); |
||||
foreach ($flds as $fld) |
||||
{ |
||||
if (strlen($fld) > 0) |
||||
{ |
||||
$nameval = explode($val_sep, $fld, 2); |
||||
if (count($nameval) > 1) |
||||
$ans[$nameval[0]] = $nameval[1]; |
||||
else |
||||
$ans[$nameval[0]] = ''; |
||||
} |
||||
} |
||||
} |
||||
|
||||
$ans['ID'] = $major[0]; |
||||
$ans['STAMP'] = $major[1]; |
||||
$ans['STATUS'] = $major[2]; |
||||
|
||||
return $ans; |
||||
} |
||||
# |
||||
function msgEncode($id, $cmd, $fields) |
||||
{ |
||||
global $send_sep, $fld_sep, $val_sep; |
||||
|
||||
$msg = $id . $send_sep . $cmd; |
||||
$first = true; |
||||
foreach ($fields as $name => $value) |
||||
{ |
||||
if ($first === true) |
||||
{ |
||||
$msg .= $send_sep; |
||||
$first = false; |
||||
} |
||||
else |
||||
$msg .= $fld_sep; |
||||
|
||||
$msg .= $name . $val_sep . $value; |
||||
} |
||||
return $msg; |
||||
} |
||||
# |
||||
function getStats($user) |
||||
{ |
||||
global $fld_sep; |
||||
if ($user === null) |
||||
$msg = "s$fld_sep"; |
||||
else |
||||
$msg = "s$fld_sep$user"; |
||||
return $msg; |
||||
} |
||||
# |
||||
function homeInfo($user) |
||||
{ |
||||
$msg = getStats($user); |
||||
/* |
||||
$rep = sendsockreply('homeInfo', $msg); |
||||
if ($rep === false) |
||||
$ans = false; |
||||
else |
||||
$ans = repDecode($rep); |
||||
|
||||
return $ans; |
||||
*/ |
||||
if ($user !== null) |
||||
$uhr = rand(500, 2500); |
||||
else |
||||
$uhr = 0; |
||||
|
||||
$plb = 1401237522; |
||||
|
||||
$nlb = time() - rand(200,500); |
||||
|
||||
return array('PoolHashRate' => '250', 'PoolLastBlock' => "$plb", 'NetLastBlock' => "$nlb", 'UserHashRate' => "$uhr"); |
||||
} |
||||
# |
||||
function checkpass($user, $pass) |
||||
{ |
||||
$passhash = myhash($pass); |
||||
$flds = array('username' => $user, 'passwordhash' => $passhash); |
||||
$msg = msgEncode('log', 'chkpass', $flds); |
||||
$rep = sendsockreply('checkpass', $msg); |
||||
if (!$rep) |
||||
dbdown(); |
||||
return $rep; |
||||
} |
||||
# |
||||
function getpayments() |
||||
{ |
||||
list($who, $whoid) = validate(); |
||||
if ($who == false) |
||||
showIndex(); |
||||
$flds = array('username' => $who); |
||||
$msg = msgEncode('pay', 'payments', $flds); |
||||
$rep = sendsockreply('getpayments', $msg); |
||||
if (!$rep) |
||||
dbdown(); |
||||
return $rep; |
||||
} |
||||
?> |
@ -0,0 +1,62 @@
|
||||
<?php |
||||
# |
||||
include_once('param.php'); |
||||
include_once('base.php'); |
||||
# |
||||
function process($p) |
||||
{ |
||||
$menu = array( |
||||
'Home' => array( |
||||
'Home' => '' |
||||
), |
||||
'Account' => array( |
||||
'Workers' => 'workers', |
||||
'Payments' => 'payments', |
||||
'Settings' => 'settings' |
||||
), |
||||
'Pool' => array( |
||||
'Stats' => 'stats' |
||||
), |
||||
'gap' => NULL, |
||||
'Help' => array( |
||||
'Help' => 'help' |
||||
) |
||||
); |
||||
$page = ''; |
||||
$n = ''; |
||||
foreach ($menu as $item => $options) |
||||
if ($options !== NULL) |
||||
foreach ($options as $name => $pagename) |
||||
if ($pagename === $p) |
||||
{ |
||||
$page = $p; |
||||
$n = " - $name"; |
||||
} |
||||
|
||||
if ($page === '') |
||||
showPage('index', $menu, ''); |
||||
else |
||||
showPage($page, $menu, $n); |
||||
} |
||||
# |
||||
function check() |
||||
{ |
||||
tryLogInOut(); |
||||
$in = loggedIn(); |
||||
if ($in == false) |
||||
{ |
||||
if (requestRegister() == true) |
||||
showPage('reg', NULL, ''); |
||||
else |
||||
showIndex(); |
||||
} |
||||
else |
||||
{ |
||||
$p = getparam('k', true); |
||||
process($p); |
||||
} |
||||
} |
||||
# |
||||
check(); |
||||
# |
||||
?> |
@ -0,0 +1,351 @@
|
||||
<?php |
||||
# |
||||
global $site_title; |
||||
global $page_title; |
||||
global $page_scripts; |
||||
# |
||||
$site_title = 'CKPool'; |
||||
$page_title = $site_title; |
||||
$page_scripts = ''; |
||||
# |
||||
global $dont_trm; |
||||
$dont_trm = false; |
||||
# |
||||
// work out the page from ?k=page |
||||
function getPage() |
||||
{ |
||||
$uri = $_SERVER["REQUEST_URI"]; |
||||
|
||||
$names = explode('k=', trim($uri)); |
||||
if (count($names) < 2) |
||||
return ''; |
||||
|
||||
$vals = explode('&', trim($names[1])); |
||||
if ($count($vals) < 1) |
||||
return ''; |
||||
|
||||
return trim($vals[0]); |
||||
} |
||||
# |
||||
function addScript($script) |
||||
{ |
||||
global $page_scripts; |
||||
|
||||
if ($script != null and trim($script) != '') |
||||
{ |
||||
if ($page_scripts == '') |
||||
$page_scripts = "<script type='text/javascript'><!--\n"; |
||||
|
||||
$page_scripts .= trim($script); |
||||
} |
||||
} |
||||
# |
||||
function makeLink($page, $rest = '') |
||||
{ |
||||
if ($page != '') |
||||
$page = '?k='.$page; |
||||
$href = "<a href='index.php$page'"; |
||||
if ($rest != '') |
||||
$href .= " $rest"; |
||||
$href .= '>'; |
||||
|
||||
return $href; |
||||
} |
||||
# |
||||
function dotrm($html, $dontdoit) |
||||
{ |
||||
if ($dontdoit === true) |
||||
return $html; |
||||
else |
||||
return preg_replace('/ *\n */', '', $html); |
||||
} |
||||
# |
||||
function trm($html) |
||||
{ |
||||
global $dont_trm; |
||||
|
||||
return dotrm($html, $dont_trm); |
||||
} |
||||
# |
||||
function trm_force($html) |
||||
{ |
||||
return dotrm($html, false); |
||||
} |
||||
# |
||||
function pghead($script_marker, $name) |
||||
{ |
||||
global $page_title; |
||||
|
||||
$head = "<!DOCTYPE html>\n"; |
||||
|
||||
$head .= "<html><head><title>$page_title$name</title><meta content='text/html; charset=iso-8859-1' http-equiv='Content-Type'>"; |
||||
|
||||
$head .= "<style type='text/css'> |
||||
form {display: inline-block;} |
||||
html, body {height: 100%; font-family:Arial, Verdana, sans-serif; font-size:12pt; background-color:#eff; text-align: center;} |
||||
.page {min-height: 100%; height: auto !important; height: 100%; margin: 0 auto -50px; position: relative;} |
||||
div.jst {color:red; background-color: #ffa; font-weight: font-size: 8; bold; border-style: solid; border-width: 2px; vertical-align: top;} |
||||
div.topd {background-color:#cff; border-color: #cff; border-style: solid; border-width: 9px;} |
||||
span.topdes {color:blue;} |
||||
span.topwho {color:black; font-weight: bold; margin-right: 8px;} |
||||
span.topdat {margin-left: 8px; margin-right: 24px; color:green; font-weight: bold;} |
||||
span.login {float: right; margin-left: 8px; margin-right: 24px;} |
||||
#n42 {margin:0; position: relative; color:#fff; background:#07e;} |
||||
#n42 a {color:#fff; text-decoration:none; margin: 4px;} |
||||
#n42 td {min-width: 100px; float: left; vertical-align: top; padding: 2px;} |
||||
#n42 td.navboxr {float: right;} |
||||
#n42 td.nav {position: relative;} |
||||
#n42 div.sub {left: 0px; z-index: 42; position: absolute; visibility: hidden;} |
||||
#n42 td.ts {border-width: 1px; border-color: #02e; border-style: solid none none none;} |
||||
#n42 td.nav:hover {background:#09e;} |
||||
#n42 td.nav:hover div.sub {background:#07e; visibility: visible;} |
||||
h1 {margin-top: 20px; float:middle; font-size: 20px;} |
||||
.foot, .push {height: 50px; font-size: 10pt;} |
||||
.title {background-color: #909090;} |
||||
.even {background-color: #cccccc;} |
||||
.odd {background-color: #a8a8a8;} |
||||
.dl {text-align: left; padding: 2px 8px;} |
||||
.dr {text-align: right; padding: 2px 8px;} |
||||
.dc {text-align: center; padding: 2px 8px;} |
||||
</style>\n"; |
||||
|
||||
$head .= '<meta name="robots" content="noindex">'; |
||||
|
||||
$head .= $script_marker; // where to put the scripts |
||||
|
||||
$head .= '</head>'; |
||||
|
||||
return $head; |
||||
} |
||||
# |
||||
function pgtop($dotop, $user, $douser) |
||||
{ |
||||
global $site_title; |
||||
|
||||
$info = homeInfo($user); |
||||
$phr = ' '; |
||||
$plb = ' '; |
||||
$nlb = ' '; |
||||
$uhr = ' '; |
||||
if ($info !== false) |
||||
{ |
||||
$now = time(); |
||||
|
||||
if (isset($info['PoolHashRate'])) |
||||
$phr = $info['PoolHashRate'].'TH/s'; |
||||
|
||||
if (isset($info['PoolLastBlock'])) |
||||
{ |
||||
$sec = $now - $info['PoolLastBlock']; |
||||
if ($sec < 60) |
||||
$plb = $sec.'s'; |
||||
else |
||||
{ |
||||
if ($sec < 3600) |
||||
{ |
||||
$min = round($sec / 60); |
||||
$plb = $min.'m'; |
||||
} |
||||
else |
||||
{ |
||||
$min = round(($sec % 3600) / 60); |
||||
$hr = round($sec / 3600); |
||||
$plb = $hr.'h'; |
||||
if ($min != 0) |
||||
$plb .= ' '.$min.'m'; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (isset($info['NetLastBlock'])) |
||||
{ |
||||
$sec = $now - $info['NetLastBlock']; |
||||
$min = round($sec / 60); |
||||
$nlb = $min.'m'; |
||||
} |
||||
|
||||
if (isset($info['UserHashRate'])) |
||||
{ |
||||
$uhr = $info['UserHashRate']; |
||||
if ($uhr < 1000) |
||||
$uhr .= 'GHs'; |
||||
else |
||||
$uhr = (round($uhr/10)/100).'THs'; |
||||
} |
||||
} |
||||
|
||||
addscript("function jst(){document.getElementById('jst').style.visibility='hidden';}"); |
||||
$top = "<div class=jst id=jst> Javascript isn't enabled."; |
||||
$top .= " You need to enable javascript to use"; |
||||
$top .= " the $site_title web site.</div>"; |
||||
$top .= '<div class=topd>'; |
||||
if ($dotop === true) |
||||
{ |
||||
$top .= '<span class=topdes>CKPool:</span>'; |
||||
$top .= "<span class=topdat>$phr</span>"; |
||||
$top .= '<span class=topdes>Pool, Last Block:</span>'; |
||||
$top .= "<span class=topdat>$plb</span>"; |
||||
$top .= '<span class=topdes>Network, Last Block:</span>'; |
||||
$top .= "<span class=topdat>$nlb</span>"; |
||||
|
||||
if ($douser === true) |
||||
{ |
||||
$top .= '<span class=login>'; |
||||
list($who, $whoid) = validate(); |
||||
if ($who == false) |
||||
{ |
||||
$top .= " |
||||
<form action=index.php method=POST> |
||||
User: <input type=text name=User size=10 value=''> |
||||
Pass: <input type=password name=Pass size=10 value=''> |
||||
<input type=submit name=Login value=Login> |
||||
<input type=submit name=Register value=Register> |
||||
</form>"; |
||||
} |
||||
else |
||||
{ |
||||
$top .= " |
||||
<span class=topwho>$who </span> |
||||
<span class=topdes>Hash Rate:</span> |
||||
<span class=topdat>$uhr</span> |
||||
<form action=index.php method=POST> |
||||
<input type=submit name=Logout value=Logout> |
||||
</form>"; |
||||
} |
||||
|
||||
$top .= '</span>'; |
||||
} |
||||
} |
||||
else |
||||
$top .= ' '; |
||||
|
||||
$top .= '</div>'; |
||||
return $top; |
||||
} |
||||
# |
||||
function pgmenu($menus) |
||||
{ |
||||
if ($menus == NULL) |
||||
$menus = array('Home'=>array('Home'=>'')); |
||||
// $menus = array('Home'=>array('Home'=>''),'gap'=>NULL,'Help'=>array('Help'=>'help')); |
||||
|
||||
$ret = "\n<table cellpadding=0 cellspacing=0 border=0 width=100% id=n42>"; |
||||
$ret .= '<tr><td width=100%>'; |
||||
$ret .= '<table cellpadding=0 cellspacing=0 border=0 width=100%>'; |
||||
$ret .= '<tr>'; |
||||
$side = ''; |
||||
foreach ($menus as $menu => $submenus) |
||||
{ |
||||
if ($menu == 'gap') |
||||
{ |
||||
$side = 'r'; |
||||
continue; |
||||
} |
||||
$ret .= "<td class=navbox$side><table cellpadding=0 cellspacing=0 border=0>"; |
||||
$first = true; |
||||
foreach ($submenus as $submenu => $item) |
||||
{ |
||||
if ($first == true) |
||||
{ |
||||
$first = false; |
||||
if ($submenu == $menu) |
||||
{ |
||||
$ret .= "<tr><td class=nav>".makeLink($item)."$menu</a>"; |
||||
$ret .= '<div class=sub><table cellpadding=0 cellspacing=0 border=0 width=100%>'; |
||||
continue; |
||||
} |
||||
$ret .= "<tr><td class=nav><a>$menu</a>"; |
||||
$ret .= '<div class=sub><table cellpadding=0 cellspacing=0 border=0 width=100%>'; |
||||
} |
||||
$ret .= "<tr><td class=ts>".makeLink($item,'class=as')."$submenu</a></td></tr>"; |
||||
} |
||||
$ret .= '</table></div></td></tr></table></td>'; |
||||
} |
||||
$ret .= "</tr></table></td></tr></table>\n"; |
||||
return $ret; |
||||
} |
||||
# |
||||
function pgbody($menu, $dotop, $user, $douser) |
||||
{ |
||||
$body = '<body onload="jst()">'; |
||||
$body .= '<div class=page>'; |
||||
$body .= '<table border=0 cellpadding=0 cellspacing=0 width=100%>'; |
||||
|
||||
$body .= '<tr><td><center>'; |
||||
$body .= '<table border=0 cellpadding=0 cellspacing=0 width=94%>'; |
||||
|
||||
$body .= '<tr><td>'; |
||||
$body .= pgtop($dotop, $user, $douser); |
||||
$body .= '</td></tr>'; |
||||
|
||||
$body .= '<tr><td>'; |
||||
$body .= pgmenu($menu); |
||||
$body .= '</td></tr>'; |
||||
|
||||
$body .= '<tr><td><div align=center>'; |
||||
|
||||
return $body; |
||||
} |
||||
# |
||||
function pgfoot() |
||||
{ |
||||
$foot = '</div></td></tr>'; |
||||
$foot .= '</table>'; |
||||
$foot .= '</center></td></tr>'; |
||||
$foot .= '</table>'; |
||||
$foot .= '<div class=push></div></div>'; |
||||
$foot .= '<div class=foot><br>Copyright © Kano 2014'; |
||||
$now = date('Y'); |
||||
if ($now != '2014') |
||||
$foot .= "-$now"; |
||||
$foot .= '</div>'; |
||||
$foot .= "</body></html>\n"; |
||||
|
||||
return $foot; |
||||
} |
||||
# |
||||
function gopage($data, $page, $menu, $name, $ispage = true, $dotop = true, $douser = true) |
||||
{ |
||||
global $dbg; |
||||
global $page_scripts; |
||||
|
||||
$dbg_marker = '[@dbg@]'; |
||||
$script_marker = '[@scripts@]'; |
||||
|
||||
if ($dbg === true) |
||||
$pg = $dbg_marker.'<br>'; |
||||
else |
||||
$pg = ''; |
||||
|
||||
if ($ispage == true) |
||||
$pg .= $page($data); |
||||
else |
||||
$pg .= $page; |
||||
|
||||
// if (isset($_SESSION['logkey'])) |
||||
// unset($_SESSION['logkey']); |
||||
|
||||
$head = pghead($script_marker, $name); |
||||
$body = pgbody($menu, $dotop, $name, $douser); |
||||
$foot = pgfoot(); |
||||
|
||||
if ($dbg === true) |
||||
$pg = str_replace($dbg_marker, cvtdbg(), $pg); |
||||
|
||||
if ($page_scripts != '') |
||||
$page_scripts .= "//-->\n</script>"; |
||||
|
||||
$head = str_replace($script_marker, $page_scripts, $head); |
||||
|
||||
$all = $head; |
||||
$all .= trm_force($body); |
||||
$all .= trm($pg); |
||||
$all .= trm_force($foot); |
||||
|
||||
usleep(100000); |
||||
|
||||
echo $all; |
||||
|
||||
exit(0); |
||||
} |
||||
?> |
@ -0,0 +1,13 @@
|
||||
<?php |
||||
# |
||||
function dohelp($data) |
||||
{ |
||||
return '<h1>Helpless</h1>Helpless'; |
||||
} |
||||
# |
||||
function show_help($menu, $name) |
||||
{ |
||||
gopage(NULL, 'dohelp', $menu, $name); |
||||
} |
||||
# |
||||
?> |
@ -0,0 +1,17 @@
|
||||
<?php |
||||
# |
||||
function doindex($data) |
||||
{ |
||||
$pg = ' |
||||
<h1>CKPool</h1> |
||||
Welcome to CKPool the bestest mostest gnarliest poolest in the ...... south. |
||||
'; |
||||
return $pg; |
||||
} |
||||
# |
||||
function show_index($menu, $name) |
||||
{ |
||||
gopage(NULL, 'doindex', $menu, $name); |
||||
} |
||||
# |
||||
?> |
@ -0,0 +1,43 @@
|
||||
<?php |
||||
# |
||||
function dopayments($data) |
||||
{ |
||||
$pg = '<h1>Payments</h1>'; |
||||
|
||||
$rep = getPayments(); |
||||
$ans = repDecode($rep); |
||||
|
||||
$pg .= "<table callpadding=0 cellspacing=0 border=0>\n"; |
||||
$pg .= "<tr class=title>"; |
||||
$pg .= "<td class=dl>Date</td>"; |
||||
$pg .= "<td class=dl>Address</td>"; |
||||
$pg .= "<td class=dr>BTC</td>"; |
||||
$pg .= "</tr>\n"; |
||||
if ($ans['STATUS'] == 'ok') |
||||
{ |
||||
$count = $ans['rows']; |
||||
for ($i = 0; $i < $count; $i++) |
||||
{ |
||||
if (($i % 2) == 0) |
||||
$row = 'even'; |
||||
else |
||||
$row = 'odd'; |
||||
|
||||
$pg .= "<tr class=$row>"; |
||||
$pg .= '<td class=dl>'.$ans['paydate'.$i].'</td>'; |
||||
$pg .= '<td class=dl>'.$ans['payaddress'.$i].'</td>'; |
||||
$pg .= '<td class=dr>'.btcfmt($ans['amount'.$i]).'</td>'; |
||||
$pg .= "</tr>\n"; |
||||
} |
||||
} |
||||
$pg .= "</table>\n"; |
||||
|
||||
return $pg; |
||||
} |
||||
# |
||||
function show_payments($menu, $name) |
||||
{ |
||||
gopage(NULL, 'dopayments', $menu, $name); |
||||
} |
||||
# |
||||
?> |
@ -0,0 +1,128 @@
|
||||
<?php |
||||
# |
||||
include_once('socket.php'); |
||||
# |
||||
function doreg($data) |
||||
{ |
||||
if (isset($data['user'])) |
||||
$user = htmlspecialchars($data['user']); |
||||
else |
||||
$user = ''; |
||||
|
||||
if (isset($data['mail'])) |
||||
$mail = htmlspecialchars($data['mail']); |
||||
else |
||||
$mail = ''; |
||||
|
||||
$pg = '<h1>Register</h1>'; |
||||
if (isset($data['error'])) |
||||
$pg .= "<br><b>".$data['error']." - please try again</b><br><br>"; |
||||
$pg .= " |
||||
<form action=index.php method=POST> |
||||
<table> |
||||
<tr><td class=dr>Username:</td> |
||||
<td class=dl><input name=user value=\"$user\"></td></tr> |
||||
<tr><td class=dr>Email:</td> |
||||
<td class=dl><input name=mail value=\"$mail\"></td></tr> |
||||
<tr><td class=dr>Password:</td> |
||||
<td class=dl><input type=password name=pass></td></tr> |
||||
<tr><td class=dr>Retype Password:</td> |
||||
<td class=dl><input type=password name=pass2></td></tr> |
||||
<tr><td> </td> |
||||
<td class=dl><input type=submit name=Register value=Register></td></tr> |
||||
<tr><td colspan=2 class=dc><br><font size=-1>All fields are required</font></td></tr> |
||||
</table> |
||||
</form>"; |
||||
|
||||
return $pg; |
||||
} |
||||
# |
||||
function doreg2($data) |
||||
{ |
||||
$pg = '<h1>Registered</h1>'; |
||||
$pg .= '<br>You will receive an email shortly to verify your account'; |
||||
return $pg; |
||||
} |
||||
# |
||||
function safepass($pass) |
||||
{ |
||||
if (strlen($pass) < 6) |
||||
return false; |
||||
|
||||
# Invalid characters |
||||
$p2 = preg_replace('/[^ -~]/', '', $pass); |
||||
if ($p2 != $pass) |
||||
return false; |
||||
|
||||
# At least one lowercase |
||||
$p2 = preg_replace('/[a-z]/', '', $pass); |
||||
if ($p2 == $pass) |
||||
return false; |
||||
|
||||
# At least one uppercase |
||||
$p2 = preg_replace('/[A-Z]/', '', $pass); |
||||
if ($p2 == $pass) |
||||
return false; |
||||
|
||||
# At least one digit |
||||
$p2 = preg_replace('/[0-9]/', '', $pass); |
||||
if ($p2 == $pass) |
||||
return false; |
||||
|
||||
return true; |
||||
} |
||||
# |
||||
function show_reg($menu, $name) |
||||
{ |
||||
$user = getparam('user', false); |
||||
$mail = getparam('mail', false); |
||||
$pass = getparam('pass', false); |
||||
$pass2 = getparam('pass2', false); |
||||
|
||||
$data = array(); |
||||
$ok = true; |
||||
if ($user === NULL && $mail === NULL && $pass === NULL && $pass2 === NULL) |
||||
$ok = false; |
||||
else |
||||
{ |
||||
if ($user !== NULL) |
||||
$data['user'] = $user; |
||||
else |
||||
$ok = false; |
||||
if ($mail !== NULL) |
||||
$data['mail'] = $mail; |
||||
else |
||||
$ok = false; |
||||
if ($pass === NULL || safepass($pass) !== true) |
||||
{ |
||||
$ok = false; |
||||
$data['error'] = "Password is unsafe"; |
||||
} elseif ($pass2 === NULL || $pass2 != $pass) |
||||
{ |
||||
$ok = false; |
||||
$data['error'] = "Passwords don't match"; |
||||
} |
||||
} |
||||
|
||||
if ($ok === true) |
||||
{ |
||||
$passhash = myhash($pass); |
||||
$flds = array('username' => $user, |
||||
'emailaddress' => $mail, |
||||
'passwordhash' => $passhash); |
||||
$msg = msgEncode('reg', 'adduser', $flds); |
||||
$rep = sendsockreply('show_reg', $msg); |
||||
if (!$rep) |
||||
dbdown(); |
||||
|
||||
$ans = repDecode($rep); |
||||
if ($ans['STATUS'] == 'added') |
||||
gopage($data, 'doreg2', $menu, $name, true, true, false); |
||||
else |
||||
$data['error'] = "Invalid details"; |
||||
} |
||||
|
||||
gopage($data, 'doreg', $menu, $name, true, true, false); |
||||
} |
||||
# |
||||
?> |
@ -0,0 +1,30 @@
|
||||
<?php |
||||
# |
||||
function nuem($str) |
||||
{ |
||||
if (($str === null) or $str == '') |
||||
return true; |
||||
else |
||||
return false; |
||||
} |
||||
# |
||||
function getparam($name, $both) |
||||
{ |
||||
$a = null; |
||||
if (isset($_POST[$name])) |
||||
$a = $_POST[$name]; |
||||
|
||||
if (($both === true) and ($a === null)) |
||||
{ |
||||
if (isset($_GET[$name])) |
||||
$a = $_GET[$name]; |
||||
} |
||||
|
||||
if ($a == '' || $a == null) |
||||
return null; |
||||
|
||||
// limit to 1K just to be sure |
||||
return substr($a, 0, 1024); |
||||
} |
||||
# |
||||
?> |
@ -0,0 +1,163 @@
|
||||
<?php |
||||
# |
||||
# Note that $port in AF_UNIX should be the socket filename |
||||
function _getsock($fun, $port, $unix=true) |
||||
{ |
||||
$socket = null; |
||||
if ($unix === true) |
||||
$socket = socket_create(AF_UNIX, SOCK_STREAM, 0); |
||||
else |
||||
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); |
||||
if ($socket === false || $socket === null) |
||||
{ |
||||
$sockerr = socket_strerror(socket_last_error()); |
||||
$msg = "$fun() _getsock() create($port) failed"; |
||||
error_log("CKPERR: $msg '$sockerr'"); |
||||
return false; |
||||
} |
||||
|
||||
if ($unix === true) |
||||
$res = socket_connect($socket, $port, NULL); |
||||
else |
||||
$res = socket_connect($socket, '127.0.0.1', $port); |
||||
if ($res === false) |
||||
{ |
||||
// try 3x |
||||
if ($unix === true) |
||||
$res = socket_connect($socket, $port); |
||||
else |
||||
{ |
||||
sleep(2); |
||||
$res = socket_connect($socket, '127.0.0.1', $port); |
||||
} |
||||
if ($res === false) |
||||
{ |
||||
if ($unix === true) |
||||
$res = socket_connect($socket, $port); |
||||
else |
||||
{ |
||||
sleep(5); |
||||
$res = socket_connect($socket, '127.0.0.1', $port); |
||||
} |
||||
if ($res === false) |
||||
{ |
||||
$sockerr = socket_strerror(socket_last_error()); |
||||
if ($unix === true) |
||||
$msg = "$fun() _getsock() connect($port) failed 3x"; |
||||
else |
||||
$msg = "$fun() _getsock() connect($port) failed 3x (+2+5s sleep)"; |
||||
error_log("CKPERR: $msg '$sockerr'"); |
||||
socket_close($socket); |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
return $socket; |
||||
} |
||||
# |
||||
function getsock($fun) |
||||
{ |
||||
return _getsock($fun, '/opt/ckdb/listener'); |
||||
} |
||||
# |
||||
function readsockline($fun, $socket) |
||||
{ |
||||
$siz = socket_read($socket, 4); |
||||
if ($siz === false) |
||||
{ |
||||
$sockerr = socket_strerror(socket_last_error()); |
||||
$msg = "$fun() readsockline() failed"; |
||||
error_log("CKPERR: $msg '$sockerr'"); |
||||
return false; |
||||
} |
||||
if (strlen($siz) != 4) |
||||
{ |
||||
$msg = "$fun() readsockline() short read $siz vs ".strlen($siz); |
||||
error_log("CKPERR: $msg"); |
||||
return false; |
||||
} |
||||
$len = ord($siz[0]) + ord($siz[1])*256 + |
||||
ord($siz[2])*65536 + ord($siz[3])*16777216; |
||||
$line = socket_read($socket, $len); |
||||
if ($line === false) |
||||
{ |
||||
$sockerr = socket_strerror(socket_last_error()); |
||||
$msg = "$fun() readsockline() failed"; |
||||
error_log("CKPERR: $msg '$sockerr'"); |
||||
return false; |
||||
} |
||||
else |
||||
if (strlen($line) != $len) |
||||
{ |
||||
$msg = "$fun() readsockline() incomplete ($len)"; |
||||
error_log("CKPERR: $msg '$line'"); |
||||
return false; |
||||
} |
||||
|
||||
return $line; |
||||
} |
||||
# |
||||
function dosend($fun, $socket, $msg) |
||||
{ |
||||
$msg .= "\n"; |
||||
$len = strlen($msg); |
||||
|
||||
$sen = $len; |
||||
$siz = chr($sen % 256); |
||||
$sen = $sen >> 8; |
||||
$siz .= chr($sen % 256); |
||||
$sen = $sen >> 8; |
||||
$siz .= chr($sen % 256); |
||||
$sen = $sen >> 8; |
||||
$siz .= chr($sen % 256); |
||||
|
||||
$msg = $siz . $msg; |
||||
|
||||
$left = $len + 4; |
||||
while ($left > 0) |
||||
{ |
||||
$res = socket_write($socket, substr($msg, 0 - $left), $left); |
||||
if ($res === false) |
||||
{ |
||||
$sockerr = socket_strerror(socket_last_error()); |
||||
$msg = "$fun() sendsock() failed"; |
||||
error_log("CKPERR: $msg '$sockerr'"); |
||||
break; |
||||
} |
||||
else |
||||
$left -= $res; |
||||
} |
||||
if ($left == 0) |
||||
$ret = true; |
||||
|
||||
return $ret; |
||||
} |
||||
# |
||||
function sendsock($fun, $msg) |
||||
{ |
||||
$ret = false; |
||||
$socket = getsock($fun); |
||||
if ($socket !== false) |
||||
{ |
||||
$ret = dosend($fun, $socket, $msg); |
||||
socket_close($socket); |
||||
} |
||||
return $ret; |
||||
} |
||||
# |
||||
function sendsockreply($fun, $msg) |
||||
{ |
||||
$ret = false; |
||||
$socket = getsock($fun); |
||||
if ($socket !== false) |
||||
{ |
||||
$ret = dosend($fun, $socket, $msg); |
||||
if ($ret !== false) |
||||
$ret = readsockline($fun, $socket); |
||||
|
||||
socket_close($socket); |
||||
} |
||||
return $ret; |
||||
} |
||||
# |
||||
?> |
Loading…
Reference in new issue