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

require_once("inc/protecao-admin.php");

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

// Verifica se a login já esta em uso
$total_streamings = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM streamings WHERE login = '".$_POST["login"]."'"));

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

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

$senha_admin = gera_id(12);

if($_POST["srt_status"]) {
$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;
}

mysqli_query($conexao,"INSERT INTO streamings (codigo_cliente,codigo_servidor,login,senha,senha_transmissao,espectadores,bitrate,espaco,ftp_dir,identificacao,data_cadastro,idioma_painel,email,aplicacao,lives,autenticar_live,
transcoder,srt_status,srt_porta) VALUES ('1','".$_POST["servidor"]."','".strtolower($_POST["login"])."','".$_POST["senha"]."','".$_POST["senha"]."','".$_POST["espectadores"]."','".$_POST["bitrate"]."','".$_POST["espaco"]."','/home/streaming/".strtolower($_POST["login"])."','".$_POST["identificacao"]."',NOW(),'".$_POST["idioma_painel"]."','".$_POST["email"]."','".$_POST["aplicacao"]."','".$lives."','".$autenticar_live."','".$transcoder."','".$srt_status."','".$srt_porta."')") or die("Erro ao processar query.<br>Mensagem do servidor: ".mysqli_error($conexao));
$codigo_streaming = mysqli_insert_id($conexao);

// Cria o streaming no servidor Wowza
$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$_POST["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"));

if($_POST["aplicacao"] != 'live') {

// Cria a home do streaming
$ssh->executar("/bin/mkdir -v /home/streaming/".strtolower($_POST["login"]).";/bin/chown streaming.streaming /home/streaming/".strtolower($_POST["login"])."");

}

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

// Copia a playlist demo para home do streaming
$ssh->executar("/bin/cp -vp /home/streaming/demo.mp4 /home/streaming/".strtolower($_POST["login"])."/;/bin/cp -vp /home/streaming/demo.smil /home/streaming/".strtolower($_POST["login"])."/playlists_agendamentos.smil");
// Configura a playlist demo
$ssh->executar("/usr/bin/replace LOGIN ".strtolower($_POST["login"])." -- /home/streaming/".strtolower($_POST["login"])."/playlists_agendamentos.smil;echo OK");
}

$aplicacao_xml = $_POST["aplicacao"];

if($autenticar_live == "nao") {

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

}

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

// Ativa o streaming no Wowza
$ssh->executar("/usr/local/WowzaMediaServer/ativar ".strtolower($_POST["login"])." '".$_POST["senha"]."' ".$_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/".$_POST["login"]."/Application.xml;echo OK");
}

if($_POST["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($_POST["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 ".$_POST["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 ".$_POST["login"]."");

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

$ssh->executar("mkdir /home/streaming/".$_POST["login"].";echo 'srt://0.0.0.0:".$srt_porta."' > /home/streaming/".$_POST["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_cadastrar_streaming_resultado_ok."</div>";

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