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

require_once("inc/protecao-admin.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["espectadores"]) or empty($_POST["bitrate"]) or empty($_POST["senha"])) {
$_SESSION["status_acao"] = "<div class='alert alert-warning text-center' role='alert'>".lang_info_campos_vazios."</div>";
header("Location: ".$_SERVER['HTTP_REFERER']."");
exit();
}

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

$lives = ($_POST["lives"]) ? "sim" : "nao";
$autenticar_live = ($_POST["autenticar_live"]) ? "sim" : "nao";
$app_android = "sim";
$transcoder = ($_POST["transcoder"]) ? "sim" : "nao";
$transcoder_instalado = ($_POST["transcoder_instalado"] == "nao") ? "nao" : "sim";
$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 codigo_cliente = '".$_POST["codigo_cliente"]."', codigo_servidor = '".$_POST["servidor"]."', senha = '".$_POST["senha"]."', senha_transmissao = '".$_POST["senha_transmissao"]."', espectadores = '".$_POST["espectadores"]."', bitrate = '".$_POST["bitrate"]."', espaco = '".$_POST["espaco"]."', identificacao = '".$_POST["identificacao"]."', email = '".$_POST["email"]."', idioma_painel = '".$_POST["idioma_painel"]."', lives = '".$lives."', autenticar_live = '".$autenticar_live."', transcoder = '".$transcoder."', transcoder_instalado = '".$transcoder_instalado."', srt_porta = '".$srt_porta."', srt_status = '".$srt_status."' where codigo = '".$dados_stm_atual["codigo"]."'") or die(mysqli_error($conexao));

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

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

$aplicacao_xml = $dados_stm_atual["aplicacao"];

if($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;

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");
}

// Atualiza o limite de espectadores no servidor
if($dados_stm_atual["espectadores"] != $_POST["espectadores"]) {

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

}

// Atualiza autenticao no servidor
if($dados_stm_atual["espectadores"] != $_POST["espectadores"]) {

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

}

// Desativa no servdor antigo
if($dados_stm_atual["codigo_servidor"] != $_POST["servidor"]) {

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

	$ssh1->executar("/usr/local/WowzaMediaServer/desativar ".$dados_stm_atual["login"]."");

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

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

	// Cria a home do streaming
	$ssh2->executar("/bin/mkdir -v /home/streaming/".strtolower($dados_stm_atual["login"]).";/bin/chown streaming.streaming /home/streaming/".strtolower($senha_transmissao["login"])."");
	// Copia a playlist demo para home do streaming
	$ssh2->executar("/bin/cp -vp /home/streaming/demo.mp4 /home/streaming/".strtolower($senha_transmissao["login"])."/;/bin/cp -vp /home/streaming/demo.smil /home/streaming/".strtolower($senha_transmissao["login"])."/playlists_agendamentos.smil");
	// Configura a playlist demo
	$ssh2->executar("/usr/bin/replace LOGIN ".strtolower($dados_stm_atual["login"])." -- /home/streaming/".strtolower($senha_transmissao["login"])."/playlists_agendamentos.smil;echo OK");
	}

	// Ativa o streaming no novo servidor
	$ssh2->executar("/usr/local/WowzaMediaServer/ativar ".strtolower($dados_stm_atual["login"])." '".$_POST["senha_transmissao"]."' ".$_POST["bitrate"]." ".$_POST["espectadores"]." ".$aplicacao_xml."");

}


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

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

header("Location: /admin/admin-streamings/resultado/".$_POST["login"]."");
?>