<?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);

define(SERVICE_PLATINUM,6);

define(SERVICE_GERMAN,7);

define(SERVICE_ISRAEL,8);


//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){
//echo "here";
	$query = "SELECT count(*) as count FROM " . TABLE_BOX_SETTINGS
		 . " WHERE box_id=$box_id AND service_id=$service";
	$res = mysql_query($query);
	$row = mysql_fetch_array($res);
	//var_dump($row);
	//die();
	if ($row['count'] == 0)
	{
		$query = "INSERT INTO  " . TABLE_BOX_SETTINGS
			 . " (box_id, service_id, bitrate, server_ip, timeshift) VALUES ($box_id, $service,"
			 . KTV_DEFAULT_BITRATE . ",'"
			 . KTV_STREAM_SERVER . "',"
			 . KTV_TIMESHIFT.")";

		mysql_query($query);
		
	}

	$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 count(*) as count FROM " . TABLE_BOX_SETTINGS
                 . " WHERE box_id=$box_id AND service_id=$service";
        $res = mysql_query($query);
        $row = mysql_fetch_array($res);
        if ($row['count'] == 0)
        {
                $query = " INSERT INTO  " . TABLE_BOX_SETTINGS
                         . " (bitrate, server_ip, timeshift) VALUES ("
                         . KTV_DEFAULT_BITRATE . ",'"
                         . KTV_STREAM_SERVER . "',"
                         . KTV_TIMESHIFT.")";
                
                mysql_query($query);
        }

	$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{
		$setting = get_settings($box_id, $service);
		$ktv = new KTV_API('iptv-kartina.tv');//(iptv.polsky.tv);
		$ktv->try_login($code);
		
	//	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,
				SERVICE_PLATINUM,
				SERVICE_GERMAN,
				SERVICE_ISRAEL				
		);
		
		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)){
			// remove after 10 min set_polsky_settings($box_id, SERVICE_POLSKY);
		}		
							
	}

	mysql_close($connection);
	//echo $result."	1	1	1";
	echo $result;
		
}

main();
?>
