<?php
require ('ktv_api.php');

//Services
define(SERVICE_KARTINA, 1);

define(SERVICE_PREMIUM, SERVICE_KARTINA);

define(SERVICE_PLUS,3);

define(SERVICE_STANDARD,2);

define(SERVICE_USA,4);

define(SERVICE_POLSKY,5);

//CONSTS
define(EMPTY_CODE, "0\t0");

define(SERVICE_ACTIVATED, '1');

define(SERVICE_DISABLED, '0');

define(KTV_DEFAULT_BITRATE, 1300);

define(KTV_STREAM_SERVER,'217.19.223.2');

define(KTV_TIMESHIFT,8);

define(POLSKY_STREAM_SERVER, '217.19.223.2');

define(POLSKY_TIMESHIFT, 6);

define(DEF_PASSWORD, '1');

//Tables
define(TABLE_BOX, 'mozdune_status');
define(TABLE_BOXSERIVES, 'mozbox_service');
define(TABLE_CODES, 'mozcodes');
define(TABLE_BOX_SETTINGS, 'mozbox_settings');

//DB
define(USE_ORIGINAL_KTV_PLUGIN , 1);
define(HOSTNAME , "localhost");
define(USERNAME , "subscr5_dunechsv");//subscr5_dunechsv
define(PASSWORD , "qf^,Zp=gL&Cm");//qf^,Zp=gL&Cm
define(DBNAME, "subscr5_dealer");//subscr5_dealer
/*
$username = "subscr5_dunechsv";
$password = "qf^,Zp=gL&Cm";
$dbname = "subscr5_dealer";
$table= "mozdune_status";
*/

function getBoxId ($proc_id){
	
	$query = "SELECT serial_number_id AS box_id FROM " . TABLE_BOX . " WHERE serial_proc = '".mysql_real_escape_string($proc_id)."' LIMIT 1";
	$res=mysql_query($query);	
	$row=mysql_fetch_array($res);
	return isset($row['box_id']) ? $row['box_id']: -1;  
}


function  isServiceActive($box_id,$service_id){	
	$query = "SELECT count(*) AS c FROM " .TABLE_BOXSERIVES . " WHERE box_id = '".mysql_real_escape_string($box_id)."' AND  service_id='".mysql_real_escape_string($service_id)."' LIMIT 1";
	$res=mysql_query($query);

	$row=mysql_fetch_array($res);
	
	if (isset($row['c']) and $row['c'])
	return SERVICE_ACTIVATED;
	else return  SERVICE_DISABLED;
	
}

function get_settings($box_id, $service){
	$query = "SELECT  bitrate, server_ip AS stream_server, timeshift FROM " . TABLE_BOX_SETTINGS  . " WHERE box_id=$box_id AND service_id=$service AND is_dirty=TRUE LIMIT 1";	
	$res=mysql_query($query);
	if (!$res)
		return array();
	
	$row=mysql_fetch_array($res);

	$row['bitrate'] =  
				empty($row['bitrate'])?
					KTV_DEFAULT_BITRATE
					:$row['bitrate'];
	$row['stream_server'] = 
				empty($row['stream_server'])?
					KTV_STREAM_SERVER
					:$row['stream_server'];
	
	$row['timeshift'] =
			empty($row['timeshift'])?
	KTV_TIMESHIFT
	:$row['timeshift'];
	
	$query = "UPDATE " . TABLE_BOX_SETTINGS  . " SET is_dirty=FALSE WHERE box_id=$box_id AND service_id=$service AND is_dirty=TRUE LIMIT 1";
	mysql_query($query);
	
	return $row;
}

function get_settings_pl($box_id, $service){
	$query = "SELECT  bitrate, server_ip AS stream_server, timeshift FROM " . TABLE_BOX_SETTINGS  . " WHERE box_id=$box_id AND service_id=$service AND is_dirty=TRUE LIMIT 1";	
	$res=mysql_query($query);
	if (!$res)
		return array();

	$row=mysql_fetch_array($res);

	$row['bitrate'] =
				empty($row['bitrate'])?
					KTV_DEFAULT_BITRATE
					:$row['bitrate'];
	$row['stream_server'] = 
				empty($row['stream_server'])?
					POLSKY_STREAM_SERVER
					:$row['stream_server'];
	
	$row['timeshift'] =
			empty($row['timeshift'])?
	POLSKY_TIMESHIFT
	:$row['timeshift'];
	
	$query = "UPDATE " . TABLE_BOX_SETTINGS  . " SET is_dirty=FALSE WHERE box_id=$box_id AND service_id=$service AND is_dirty=TRUE LIMIT 1";
	mysql_query($query);
	
	return $row;
}

function getCode($box_id, $service_id, $concat=true){	
	$query = "SELECT  ";
	if ($concat)
		$query .= "CONCAT(codes.login,'\t',codes.password) as account ";
	else
		$query .= "codes.login as username ,codes.password as password ";
	
	$query .=	" FROM " . TABLE_CODES . " as codes," . TABLE_BOXSERIVES . " AS bs  WHERE bs.box_id = '"
			  .mysql_real_escape_string($box_id)
			  ."' AND  service_id='".mysql_real_escape_string($service_id)."' AND codes.id=bs.code_id LIMIT 1";
	$res=mysql_query($query);
	if ($res == false)
		return EMPTY_CODE;
	
	$row=mysql_fetch_array($res);
	if ($concat)
		return ( isset($row['account'])) ? $row['account']: EMPTY_CODE;
	else{
		return $row;	
	}
	
}

function update_code_exp_time($code_id, $exp_time){
	//echo 'update exp time';
	$query = "UPDATE " . TABLE_CODES . " SET expire_date='$exp_time' WHERE id=$code_id LIMIT 1";
	//echo $query;
	$r =mysql_query($query);
//	echo $r;
	
}

function set_premium_settings($box_id, $service){
	
	$code = getCode($box_id, $service, false);
//	
	$query = "SELECT bs.code_id FROM " . TABLE_BOXSERIVES . " AS bs  WHERE bs.box_id = '"
			  .mysql_real_escape_string($box_id)
			  ."' AND  service_id=".mysql_real_escape_string($service)." LIMIT 1";
	$res=mysql_query($query);	
	$row=mysql_fetch_array($res);
	$code_id = 	$row['code_id'];
	//echo $code_id; 
	if (!is_array($code)) 
		return false;
	
	try{
		$ktv = new KTV_API('iptv-kartina.tv');//(iptv.polsky.tv);
		$ktv->try_login($code);
		$setting = get_settings($box_id, $service);
	//	var_dump($setting);
		$account  = $ktv->getAccount();
	//	var_dump($account);
		$exp_time = date('Y-m-d',$account->packet_expire);
		update_code_exp_time($code_id,$exp_time);

		foreach ($setting as $key=>$value)
			$ktv->api_set_setting($key, $value);
		$ktv->api_set_private_password($code['password'], DEF_PASSWORD, DEF_PASSWORD);


	} catch (Exception $e){
		return false;
	}
	return true;
}

function set_polsky_settings($box_id, $service){

	$code = getCode($box_id, $service, false);
	//$code = array('username'=>'1917892','password'=>'585950');
	$query = "SELECT bs.code_id FROM " . TABLE_BOXSERIVES . " AS bs  WHERE bs.box_id = '"
			  .mysql_real_escape_string($box_id)
			  ."' AND  service_id=".mysql_real_escape_string($service)." LIMIT 1";
	$res=mysql_query($query);	
	$row=mysql_fetch_array($res);
	$code_id = 	$row['code_id'];
	//echo $code_id;
	if (!is_array($code))
		return false;

	try{
		$ktv = new KTV_API('iptv.polsky.tv');//(iptv.polsky.tv);
		$ktv->try_login($code);
		$setting = get_settings_pl($box_id, $service);		
	//	var_dump($setting);
		$account  = $ktv->getAccount();
		//var_dump($account);
		$exp_time = date('Y-m-d',$account->packet_expire);
		update_code_exp_time($code_id,$exp_time);
	
		foreach ($setting as $key=>$value)			
			$ktv->api_set_setting($key, $value);
		 $ktv->api_set_private_password($code['password'], DEF_PASSWORD, DEF_PASSWORD);
		
		
	} catch (Exception $e){
		return false;
	}
	return true;
}

//function /*void*/ set_password ($box_id, $service){
//
//}

function /*void*/ main()
{
	$serial_proc = $_GET['serial'];
	$result = '';
	
	if (isset($serial_proc))
	{
	
		
		$connection = mysql_connect(HOSTNAME, USERNAME, PASSWORD);
		mysql_select_db(DBNAME);
		
		$result .=  USE_ORIGINAL_KTV_PLUGIN;
		
		$box_id = getBoxId ($serial_proc);
	
		$services_list = array(
				SERVICE_PREMIUM, 
				SERVICE_STANDARD,
				SERVICE_PLUS, 				 
				SERVICE_USA, 
				SERVICE_POLSKY 
		);
		
		foreach ($services_list as $service)
			$result .= "\t".isServiceActive($box_id, $service);
	
		foreach ($services_list as $service)		
			$result .= "\t".getCode($box_id, $service);
		
		
		if (isServiceActive($box_id, SERVICE_PREMIUM)){
			set_premium_settings($box_id, SERVICE_PREMIUM);
		}

		if (isServiceActive($box_id, SERVICE_POLSKY)){
			set_polsky_settings($box_id, SERVICE_POLSKY);
		}		
		
		
	}
	mysql_close($connection);
	echo $result;
		
}

main();
?>
