<?php
ini_set("memory_limit", "128M");
ini_set("max_execution_time", 600);

// Inclusão de classes
require_once("inc/protecao-revenda.php");
require_once("inc/classe.ssh.php");

// Proteção contra acesso direto
if(!preg_match("/".str_replace("http://","",str_replace("www.","",$_SERVER['HTTP_HOST']))."/i",$_SERVER['HTTP_REFERER'])) {
die("<span class='texto_status_erro'>Atenção! Acesso não autorizado, favor entrar em contato com nosso atendimento para maiores informações!</span>");
}

// Proteção contra usuario não logados
if(empty($_SESSION["code_user_logged"])) {
die("<span class='texto_status_erro'>0x005 - Atenção! Acesso não autorizado, favor entrar em contato com nosso atendimento para maiores informações!</span>");
}

if(empty($_POST["login"]) or empty($_POST["bitrate"]) or empty($_POST["senha"])) {
$_SESSION["status_acao"] = '<div class="alert alert-danger text-center" role="alert">'.lang_info_campos_vazios.'</div>';
header("Location: ".$_SERVER['HTTP_REFERER']."");
exit();
}

$dados_config = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM configuracoes"));
$dados_stm_atual = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where login = '".$_POST["login"]."'"));

// Verifica os limites da revenda
$dados_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM revendas WHERE codigo = '".$_SESSION["code_user_logged"]."'"));
$dados_subrevenda_atual = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM revendas WHERE (codigo_revenda = '".$dados_revenda["codigo"]."' AND codigo = '".code_decode($_POST["codigo_subrevenda"],"D")."') AND tipo = '2'"));

$total_subrevendas = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM revendas WHERE codigo_revenda = '".$dados_revenda["codigo"]."' AND tipo = '2'"));
$total_streamings_subrevenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT SUM(streamings) as total FROM revendas WHERE codigo_revenda = '".$dados_revenda["codigo"]."' AND tipo = '2'"));
$total_streamings_revenda = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM streamings WHERE codigo_cliente = '".$dados_revenda["codigo"]."'"));
$espectadores_subrevenda_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT SUM(espectadores) as total FROM revendas WHERE codigo_revenda = '".$dados_revenda["codigo"]."' AND tipo = '2'"));
$espectadores_stm_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT SUM(espectadores) as total FROM streamings WHERE codigo_cliente = '".$dados_revenda["codigo"]."'"));
$espaco_subrevenda_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT SUM(espaco) as total FROM revendas WHERE codigo_revenda = '".$dados_revenda["codigo"]."' AND tipo = '2'"));
$espaco_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT SUM(espaco) as total FROM streamings WHERE codigo_cliente = '".$dados_revenda["codigo"]."'"));

// Verifica se excedeu o limite de espectadores do cliente
$total_espectadores_revenda = $espectadores_revenda["total"]+$espectadores_subrevenda_revenda["total"];
$total_espectadores_revenda = $total_espectadores_revenda+$_POST["espectadores"];
$total_espectadores_revenda = $total_espectadores_revenda-$dados_stm_atual["espectadores"];

if($total_espectadores_revenda > $dados_revenda["espectadores"] && $dados_revenda["espectadores"] != 999999) {
$_SESSION["status_acao"] = '<div class="alert alert-warning text-center" role="alert">'.lang_info_pagina_cadastrar_streaming_resultado_alerta_limite_espectadores.'</div>';
header("Location: ".$_SERVER['HTTP_REFERER']."");
exit();
}

// Verifica se excedeu o limite de espectadores do cliente
$total_espaco_revenda = $espaco_revenda["total"]+$espaco_subrevenda_revenda["total"];
$total_espaco_revenda = $total_espaco_revenda+$_POST["espaco"];
$total_espaco_revenda = $total_espaco_revenda-$dados_stm_atual["espaco"];

if($total_espaco_revenda > $dados_revenda["espaco"]) {
$_SESSION["status_acao"] = '<div class="alert alert-warning text-center" role="alert">'.lang_info_pagina_cadastrar_streaming_resultado_alerta_limite_espaco_ftp.'</div>';
header("Location: ".$_SERVER['HTTP_REFERER']."");
exit();
}

// Verifica se excedeu o limite de bitrate do cliente
if($_POST["bitrate"] > $dados_revenda["bitrate"]) {
$_SESSION["status_acao"] = '<div class="alert alert-warning text-center" role="alert">'.lang_info_pagina_cadastrar_streaming_resultado_alerta_limite_bitrate.'</div>';
header("Location: ".$_SERVER['HTTP_REFERER']."");
exit();
}

$permitir_alterar_senha = ($_POST["permitir_alterar_senha"]) ? "sim" : "nao";
$exibir_app_android = ($_POST["exibir_app_android"]) ? "sim" : "nao";
$lives = ($_POST["lives"]) ? "sim" : "nao";
$autenticar_live = ($_POST["autenticar_live"]) ? "sim" : "nao";
$srt_status = ($_POST["srt_status"]) ? "sim" : "nao";

if($_POST["srt_status"] && $dados_stm_atual["srt_porta"] == 0) {
$dados_ultima_porta_srt = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where srt_porta > 0 ORDER by srt_porta DESC LIMIT 1"));

$srt_porta = $dados_ultima_porta_srt["srt_porta"]+1;
} else {
$srt_porta = $dados_stm_atual["srt_porta"];
}

mysqli_query($conexao,"Update streamings set senha = '".$_POST["senha"]."', senha_transmissao = '".$_POST["senha_transmissao"]."', autenticar_live = '".$autenticar_live."', espectadores = '".$_POST["espectadores"]."', bitrate = '".$_POST["bitrate"]."', espaco = '".$_POST["espaco"]."', ipcameras = '".$_POST["ipcameras"]."', identificacao = '".$_POST["identificacao"]."', idioma_painel = '".$_POST["idioma_painel"]."', email = '".$_POST["email"]."', permitir_alterar_senha = '".$permitir_alterar_senha."', exibir_app_android = '".$exibir_app_android."', lives = '".$lives."', srt_porta = '".$srt_porta."', srt_status = '".$srt_status."' where codigo = '".$dados_stm_atual["codigo"]."'") or die(mysqli_error($conexao));

if($dados_stm_atual["senha_transmissao"] != $_POST["senha_transmissao"] || $dados_stm_atual["espectadores"] != $_POST["espectadores"] || $dados_stm_atual["bitrate"] != $_POST["bitrate"] || $dados_stm_atual["autenticar_live"] != $_POST["autenticar_live"]) {

$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm_atual["codigo_servidor"]."'"));

// Conexão SSH
$ssh = new SSH();
$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));

$aplicacao_xml = $dados_stm_atual["aplicacao"];

if($_POST["autenticar_live"] == "nao") {

if($dados_stm_atual["aplicacao"] == "tvstation" || $dados_stm_atual["aplicacao"] == "live") {
$aplicacao_xml = $dados_stm_atual["aplicacao"].'-sem-login';
}

}

$aplicacao_xml = ($_POST["srt_status"] == 'sim') ? "tvstation" : $aplicacao_xml;

$ssh->executar("/usr/local/WowzaMediaServer/sincronizar ".$dados_stm_atual["login"]." '".$_POST["senha_transmissao"]."' ".$_POST["bitrate"]." ".$_POST["espectadores"]." ".$aplicacao_xml."");

if($_POST["srt_status"] == "sim") {
$ssh->executar("perl -i -p -e \"s/<Value>live<\/Value>/<Value>srt.stream<\/Value>/\" /usr/local/WowzaStreamingEngine/conf/".$dados_stm_atual["login"]."/Application.xml;echo OK");
}

if($dados_stm_atual["aplicacao"] == 'webrtc') {

if($dados_servidor["nome_principal"]) {
$servidor = $dados_servidor["nome_principal"].".".$dados_config["dominio_padrao"];
} else {
$servidor = $dados_servidor["nome"].".".$dados_config["dominio_padrao"];
}

$ssh->executar("sed -i 's/HOSTNAME/".$servidor."/g' /usr/local/WowzaStreamingEngine/conf/".strtolower($dados_stm_atual["login"])."/Application.xml;echo OK");	
}

$ssh->executar("/usr/bin/java -cp /usr/local/WowzaMediaServer JMXCommandLine -jmx service:jmx:rmi://localhost:8084/jndi/rmi://localhost:8085/jmxrmi -user admin -pass admin shutdownAppInstance ".$dados_stm_atual["login"]."");

$ssh->executar("/usr/bin/java -cp /usr/local/WowzaMediaServer JMXCommandLine -jmx service:jmx:rmi://localhost:8084/jndi/rmi://localhost:8085/jmxrmi -user admin -pass admin startAppInstance ".$dados_stm_atual["login"]."");

}

if($_POST["srt_status"] == "sim") {

$ssh->executar("mkdir /home/streaming/".$dados_stm_atual["login"].";echo 'srt://0.0.0.0:".$srt_porta."' > /home/streaming/".$dados_stm_atual["login"]."/srt.stream;echo OK");
	

	// Inicia o streaming da camera
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, "http://".$dados_servidor["ip"].":555/streammanager/streamAction?action=startStream&vhostName=_defaultVHost_&appName=".$_POST["login"]."%2F_definst_&streamName=srt.stream&groupId=&mediaCasterType=srt");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	curl_setopt($ch, CURLOPT_USERPWD, "admin:".code_decode($dados_servidor["senha"],"D").""); 
	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); 
	curl_setopt($ch, CURLOPT_USERAGENT, 'Painel de Streaming 3.0.0');
	ob_start();
	$resultado = curl_exec($ch);
	curl_close($ch);
	
}

// Loga a ação executada
mysqli_query($conexao,"INSERT INTO logs (acao,data,ip,log) VALUES ('alterar_configuracoes_streaming',NOW(),'".$_SERVER['REMOTE_ADDR']."','Alteração nas configurações do streaming ".$dados_stm["login"]." pela revenda.')");

// Cria o sessão do status das ações executadas e redireciona.
$_SESSION["status_acao"] .= '<div class="alert alert-success text-center" role="alert">'.sprintf(lang_info_pagina_configurar_streaming_resultado_ok,strtolower($_POST["login"])).'</div>';
$_SESSION["status_acao"] .= '<div class="alert alert-warning text-center" role="alert">'.lang_info_pagina_configurar_streaming_resultado_alerta.'</div>';

header("Location: /admin/revenda-streamings");
?>