<?php
#
include_once('socket.php');
include_once('base.php');
#
global $send_sep, $fld_sep, $val_sep;
$send_sep = '.';
$fld_sep = Chr(0x9);
$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($cmd, $id, $fields)
{
 global $send_sep, $fld_sep, $val_sep;

 $msg = $cmd . $send_sep . $id;
 $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)
{
 if ($user === null)
	$msg = msgEncode('homepage', 'home', array());
 else
	$msg = msgEncode('homepage', 'home', array('username'=>$user));
 return $msg;
}
#
function homeInfo($user)
{
 $msg = getStats($user);
 $rep = sendsockreply('homepage', $msg);
 if ($rep === false)
	$ans = false;
 else
 {
	$ans = repDecode($rep);
	if ($ans['lastblock'] == '?')
	{
//		$ans['lastblock'] = 1401237522;
//		$ans['lastblock'] = 1403819191;
		$ans['lastblock'] = 1407113822;
	}
 }

 return $ans;
}
#
function checkpass($user, $pass)
{
 $passhash = myhash($pass);
 $flds = array('username' => $user, 'passwordhash' => $passhash);
 $msg = msgEncode('chkpass', 'log', $flds);
 $rep = sendsockreply('checkpass', $msg);
 if (!$rep)
	dbdown();
 return $rep;
}
#
function getAllUsers()
{
 $flds = array();
 $msg = msgEncode('allusers', 'all', $flds);
 $rep = sendsockreply('getAllUsers', $msg);
 if (!$rep)
	dbdown();
 return $rep;
}
#
function getWorkers($user)
{
 if ($user == false)
	showIndex();
 $flds = array('username' => $user, 'stats' => 'Y');
 $msg = msgEncode('workers', 'work', $flds);
 $rep = sendsockreply('getWorkers', $msg);
 if (!$rep)
	dbdown();
 return $rep;
}
#
function getPayments($user)
{
 if ($user == false)
	showIndex();
 $flds = array('username' => $user);
 $msg = msgEncode('payments', 'pay', $flds);
 $rep = sendsockreply('getPayments', $msg);
 if (!$rep)
	dbdown();
 return $rep;
}
#
?>