<?php
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'])) {
$_SESSION["status_acao"] = '<div class="alert alert-danger text-center" role="alert">Atenção! Acesso não autorizado, favor entrar em contato com nosso atendimento para maiores informações!</div>';
header("Location: /admin/revenda");
}

if(empty($_POST["ouvintes"]) 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: /admin/revenda-cadastrar-streaming");
exit;
}

// Portas inválidas/bloqueadas
$portas_invalidas = array("6000","6665","6666","6667","6668","6669","6984","6985");

// Verifica a última gerada e gera a próxima
$porta_livre_stm = false;
$porta_livre_dj = false;

$nova_porta_stm = 6998;
$nova_porta_dj = 34998;

// Porta Streaming
while(!$porta_livre_stm) {

$nova_porta_stm += 2;

if(!in_array($nova_porta_stm, $portas_invalidas)) {

$total_porta_livre_stm = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM streamings WHERE porta = '".$nova_porta_stm."' ORDER BY porta"));

if($total_porta_livre_stm == 0) {
$porta_livre_stm = true;
}

}

}

// Porta DJ
while(!$porta_livre_dj) {

$nova_porta_dj += 2;

$total_porta_livre_dj = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM streamings WHERE porta_dj = '".$nova_porta_dj."' ORDER BY porta_dj"));

if($total_porta_livre_dj == 0) {
$porta_livre_dj = true;
}

}

// Portas inválidas/bloqueadas
	$portas_telnet_invalidas = array("55","555","1443","8080","443");

	// Verifica a última gerada e gera a próxima
	$porta_livre_telnet = false;

	$nova_porta_telnet = 1000;

	// Porta telnet
	while(!$porta_livre_telnet) {

		$nova_porta_telnet += 1;
		
		if(!in_array($nova_porta_telnet, $portas_telnet_invalidas)) {

			$total_porta_telnet_livre = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM streamings WHERE porta_telnet = '".$nova_porta_telnet."' ORDER BY porta_telnet"));

			if($total_porta_telnet_livre == 0) {
				$porta_livre_telnet = true;
			}

		}
		
	}

	$porta_telnet = $nova_porta_telnet;

$porta = $nova_porta_stm;
$porta_dj = $nova_porta_dj;

// Verifica os limites do cliente
$dados_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM revendas WHERE codigo = '".$_SESSION["code_user_logged"]."'"));

$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"]."'"));
$ouvintes_subrevenda_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT SUM(ouvintes) as total FROM revendas WHERE codigo_revenda = '".$dados_revenda["codigo"]."' AND tipo = '2'"));
$ouvintes_stm_revenda = mysqli_fetch_array(mysqli_query($conexao,"SELECT SUM(ouvintes) 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"]."'"));
$total_sites_adm_instalados = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM streamings WHERE codigo_revenda = '".$dados_revenda["codigo"]."' AND site_adm = 'sim'"));

// Verifica se excedeu o limite de streamings do cliente
$total_streamings_revenda = $total_streamings_revenda+$total_streamings_subrevenda["total"]+1;

if($total_streamings_revenda > $dados_revenda["streamings"] && $dados_revenda["streamings"] != 999999) {
$_SESSION["status_acao"] = '<div class="alert alert-warning text-center" role="alert">'.lang_info_pagina_cadastrar_streaming_resultado_alerta_limite_streamings.'</div>';
header("Location: /admin/revenda-cadastrar-streaming");
exit;
}

// Verifica se excedeu o limite de ouvintes do cliente
$total_ouvintes_revenda = $ouvintes_revenda["total"]+$ouvintes_subrevenda_revenda["total"]+$_POST["ouvintes"];

if($total_ouvintes_revenda > $dados_revenda["ouvintes"] && $dados_revenda["ouvintes"] != 999999) {
$_SESSION["status_acao"] = '<div class="alert alert-warning text-center" role="alert">'.lang_info_pagina_cadastrar_streaming_resultado_alerta_limite_ouvintes.'</div>';
header("Location: /admin/revenda-cadastrar-streaming");
exit;
}

// Verifica se excedeu o limite de ouvintes do cliente
$total_espaco_revenda = $espaco_revenda["total"]+$espaco_subrevenda_revenda["total"]+$_POST["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_autodj.'</div>';
header("Location: /admin/revenda-cadastrar-streaming");
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: /admin/revenda-cadastrar-streaming");
exit;
}

// Verifica se excedeu o limite de sites adm do cliente
if($_POST["site_adm"] == "sim" && $total_sites_adm_instalados > $dados_revenda["site_adm"]) {
$_SESSION["status_acao"] = '<div class="alert alert-warning text-center" role="alert">Limite de site adm excedido em seu plano.</div>';
header("Location: ".$_SERVER['HTTP_REFERER']."");
exit;
}

$dados_config = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM configuracoes"));

if($dados_config["codigo_servidor_aacplus_atual"] && $_POST["encoder_aacplus"] == 'sim') {
$encoder = "aacp";
$servidor_aacplus = $dados_config["codigo_servidor_aacplus_atual"];
} else {
$encoder = "mp3";
$servidor_aacplus = 0;
}

$permitir_alterar_senha = ($_POST["permitir_alterar_senha"] == "sim") ? "sim" : "nao";
$exibir_app_android = ($_POST["exibir_app_android"] == "sim") ? "sim" : "nao";
$exibir_mini_site = ($_POST["exibir_mini_site"] == "sim") ? "sim" : "nao";
$encoder_mp3 = ($_POST["encoder_mp3"] == "sim") ? "sim" : "nao";
$encoder_aacplus = ($_POST["encoder_aacplus"] == "sim") ? "sim" : "nao";
$programas = ($_POST["programas"]) ? "sim" : "nao";
$programetes = ($_POST["programetes"]) ? "sim" : "nao";
$download_programetes_programas = ($_POST["download_programetes_programas"]) ? "sim" : "nao";
$camera_studio = ($_POST["camera_studio"]) ? "sim" : "nao";
$site_adm = ($_POST["site_adm"]) ? "sim" : "nao";

if($_POST["senha"] == $_POST["senha_admin"]) {
$_SESSION["status_acao"] = '<div class="alert alert-warning text-center" role="alert">'.lang_info_config_stm_senha_admin_info_ajuda.'</div>';
header("Location: /admin/revenda-cadastrar-streaming");
exit;
}

$senha_admin = gera_id(12);

$codido_servidor = ($dados_revenda["codigo_servidor_privado"] > 0) ? $dados_revenda["codigo_servidor_privado"] : $dados_config["codigo_servidor_atual"];

mysqli_query($conexao,"INSERT INTO streamings (codigo_cliente,codigo_servidor,codigo_servidor_aacplus,porta,porta_dj,porta_telnet,ouvintes,bitrate,bitrate_autodj,encoder_mp3,encoder_aacplus,encoder,espaco,senha,senha_admin,ftp_dir,identificacao,aacplus,data_cadastro,hora_cadastro,local_cadastro,ip_cadastro,idioma_painel,email,exibir_app_android,exibir_mini_site,permitir_alterar_senha,autodj,publicserver,programetes,programas,download_programetes_programas,camera_studio,site_adm,tipo_servidor) VALUES ('".$dados_revenda["codigo"]."','".$codido_servidor."','".$servidor_aacplus."','".$porta."','".$porta_dj."','".$porta_telnet."','".$_POST["ouvintes"]."','".$_POST["bitrate"]."','".$_POST["bitrate"]."','".$encoder_mp3."','".$encoder_aacplus."','".$encoder."','".$_POST["espaco"]."','".$_POST["senha"]."','".$senha_admin."','/home/streaming/".$porta."','".$_POST["identificacao"]."','".$_POST["aacplus"]."',NOW(),NOW(),'painel-revenda','".$_SERVER['REMOTE_ADDR']."','".$_POST["idioma_painel"]."','".$_POST["email"]."','".$exibir_app_android."','".$exibir_mini_site."','".$permitir_alterar_senha."','".$_POST["autodj"]."','never','".$programetes."','".$programas."','".$download_programetes_programas."','".$camera_studio."','".$site_adm."','".$_POST["tipo_servidor"]."')") or die("Erro ao processar query.<br>Mensagem do servidor: ".mysqli_error($conexao));
$codigo_streaming = mysqli_insert_id($conexao);

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

// Ativa o relay no servidor aacplus
if($dados_config["codigo_servidor_aacplus_atual"]) {

$dados_servidor_aacplus = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_config["codigo_servidor_aacplus_atual"]."'"));

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

$ssh->executar("/usr/local/WowzaMediaServer/ativar-aacplus ".$porta." ".$dados_servidor["ip"]." ".$_POST["ouvintes"]."");
}

// Loga a ação executada
mysqli_query($conexao,"INSERT INTO logs (acao,data,ip,log) VALUES ('cadastro_streaming',NOW(),'".$_SERVER['REMOTE_ADDR']."','Cadastrado streaming ".$porta." no servidor ".$dados_servidor["ip"]." pela revenda ".$dados_revenda["id"]."')");

// 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_cadastrar_streaming_resultado_ok,$porta).'</div>';
header("Location: /admin/revenda-streamings/resultado/porta/".$porta."");
exit;
?>
