<?php

// Função para ligar autodj
if($acao == "ligar_autodj") {

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

	$porta = code_decode(query_string('2'),"D");
	$playlist = (query_string('3') == "") ? $dados_stm["ultima_playlist"] : query_string('3');
	$shuffle = (query_string('4') == "") ? $dados_stm["autodj_shuffle"] : query_string('4');
	$shuffle = ($shuffle == 0) ? "normal" : "random";	
	$bitrate = (query_string('5') == "") ? $dados_stm["bitrate_autodj"] : query_string('5');
	$xfade = (query_string('6') == "") ? $dados_stm["xfade"] : query_string('6');
	$samplerate = (query_string('7') == "") ? $dados_stm["autodj_samplerate"] : query_string('7');
	$canal = (query_string('8') == "") ? $dados_stm["autodj_channels"] : query_string('8');
	$encoder = (query_string('9') == "") ? $dados_stm["encoder"] : query_string('9');
	$agendamento = query_string('10');

	$canal = ($bitrate <= 48) ? 1 : $canal;
	$samplerate = ($bitrate <= 48) ? 48000 : $samplerate;
	
	$dados_stm = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where porta = '".$porta."'"));
	$dados_playlist = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM playlists where codigo = '".$playlist."'"));
	$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
	
	if($dados_servidor["status"] == "off") {	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_alerta_manutencao_servidor']."</div>";
	exit();	
	}
	
	$status_streaming = status_streaming($dados_servidor["ip"],$dados_stm["porta"]);
	
	if($status_streaming == "ligado") {
	
	// Verifica se o autodj esta ligado
	if($dados_stm["tipo_servidor"] == "icecast") {
	$status_autodj = status_autodj_icecast($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	} else {
	$status_autodj = status_autodj($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	}
	
	if($status_autodj == "ligado") {
	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_acao_ligar_autodj_resultado_alerta']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_ligar_autodj_resultado_alerta']."");

	} else {

	// Conexão SSH
	$ssh = new SSH();
	$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
	$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));
	
	// Verifica se o streaming ja tem um processo em execussao(por algum erro) e desliga
	$ssh->executar("echo OK;/bin/ps aux | /bin/grep '\<".$dados_stm["porta"].".conf\>' | /bin/grep liquidsoap | /bin/awk '{ print $2;}' | /usr/bin/xargs /bin/kill -9");

	$streaming_nome = ($dados_stm["streamtitle"]) ? $dados_stm["streamtitle"] : "Web Radio";
	$streaming_site = ($dados_stm["streamurl"]) ? $dados_stm["streamurl"] : "http://shoutcast.com";
	$streaming_genero = ($dados_stm["genre"]) ? $dados_stm["genre"] : "Various";
	$porta_dj_icecast = $dados_stm["porta"]+1;

	if(empty($dados_stm["streamurl"])) {
	mysqli_query($conexao,"Update streamings set streamurl = 'Web Radio' where codigo = '".$dados_stm["codigo"]."'");
	}

    $config_autodj = 'settings.log.file.path.set("/home/streaming/logs/autodj-'.$dados_stm["porta"].'.log")'."\n";
    $config_autodj .= 'settings.init.daemon.pidfile.path.set("/home/streaming/configs/autodj-'.$dados_stm["porta"].'.pid")'."\n";
    $config_autodj .= 'settings.init.allow_root.set(true)'."\n";
    $config_autodj .= 'settings.server.telnet.set(true)'."\n";
    $config_autodj .= 'settings.server.telnet.port.set('.$dados_stm["porta_telnet"].')'."\n";
    $config_autodj .= 'settings.log.level.set(3)'."\n";
    $config_autodj .= 'settings.log.stdout.set(true)'."\n";
    $config_autodj .= 'settings.harbor.max_connections.set(1)'."\n";
    $config_autodj .= 'settings.tag.encodings.set(["UTF-8","ISO-8859-1"])'."\n";
    $config_autodj .= 'settings.encoder.metadata.export.set(["artist","title","album","song"])'."\n";
    $config_autodj .= 'settings.decoder.file_extensions.taglib.set(["mp3"])'."\n";
    $config_autodj .= 'settings.init.daemon.set(true)'."\n";
    $config_autodj .= 'settings.scheduler.fast_queues.set(0)'."\n";
    $config_autodj .= 'settings.harbor.bind_addrs.set(["0.0.0.0"])'."\n";
	$config_autodj .= 'setenv("TZ", "America/Sao_Paulo")'."\n";

	$config_autodj .= 'painel_dominio = "'.$_SERVER['HTTP_HOST'].'"'."\n";
	$config_autodj .= 'porta = '.$dados_stm["porta"].''."\n";
	$config_autodj .= 'porta_dj = '.$dados_stm["porta_dj"].''."\n";
	$config_autodj .= 'playlist_modo = "'.$shuffle.'"'."\n";

	$config_autodj .= 'streaming_servidor = "127.0.0.1"'."\n";
	$config_autodj .= 'streaming_senha = "'.$dados_stm["senha"].'"'."\n";
	$config_autodj .= 'streaming_fade = '.$xfade.'.00'."\n";
	$config_autodj .= 'streaming_gain_dj = '.$dados_stm["autodj_gain_dj"].''."\n";
	$config_autodj .= 'streaming_nome = "'.$streaming_nome.'"'."\n";
	$config_autodj .= 'streaming_site = "'.$streaming_site.'"'."\n";
	$config_autodj .= 'streaming_genero = "'.$streaming_genero.'"'."\n";

	$config_autodj .= '%include "/home/streaming/liquidsoap/funcoes.conf"'."\n";

	$total_multipoint = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM multipoint where codigo_stm = '".$dados_stm["codigo"]."'"));
	
	if($total_multipoint > 0) {
	
		$sql_multipoint = mysqli_query($conexao,"SELECT * FROM multipoint where codigo_stm = '".$dados_stm["codigo"]."' ORDER by id ASC");
		while ($dados_ponto = mysqli_fetch_array($sql_multipoint)) {

			if($dados_stm["tipo_servidor"] == "icecast") {

				if($dados_ponto["encoder"] == "aacp") {
					$config_autodj .= 'output.icecast(%fdkaac(bitrate='.$dados_ponto["bitrate"].', samplerate='.$samplerate.', channels='.$canal.', aot="mpeg4_aac_lc"),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_metadata = "true", host=streaming_servidor,port = '.$porta_dj_icecast.',password = streaming_senha, mount = "'.$dados_ponto["id"].'", streaming)'."\n";
				} else {
					$config_autodj .= 'output.icecast(%mp3(bitrate='.$dados_ponto["bitrate"].', samplerate='.$samplerate.'),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_metadata = "true", host=streaming_servidor,port = '.$porta_dj_icecast.',password = streaming_senha, mount = "'.$dados_ponto["id"].'", streaming)'."\n";
				}

			} else {

				if($dados_ponto["encoder"] == "aacp") {
					$config_autodj .= 'output.shoutcast(%fdkaac(bitrate='.$dados_ponto["bitrate"].', samplerate='.$samplerate.', channels='.$canal.', aot="mpeg4_aac_lc"),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_reset=true, icy_id = '.$dados_ponto["id"].', icy_metadata = "true", host=streaming_servidor,port = porta,password = streaming_senha, streaming)'."\n";
				} else {
					$config_autodj .= 'output.shoutcast(%mp3(bitrate='.$dados_ponto["bitrate"].', samplerate='.$samplerate.'),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_reset=true, icy_id = '.$dados_ponto["id"].', icy_metadata = "true", host=streaming_servidor,port = porta,password = streaming_senha, streaming)'."\n";
				}

			}

		}

	} else {

		if($dados_stm["tipo_servidor"] == "icecast") {

			if($encoder == "aacp") {
				$config_autodj .= 'output.icecast(%fdkaac(bitrate='.$bitrate.', samplerate='.$samplerate.', channels='.$canal.', aot="mpeg4_aac_lc"),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_metadata = "true", host=streaming_servidor,port = '.$porta_dj_icecast.',password = streaming_senha, mount = "/stream", streaming)'."\n";
			} else {
				$config_autodj .= 'output.icecast(%mp3(bitrate='.$bitrate.', samplerate='.$samplerate.'),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_metadata = "true", host=streaming_servidor,port = '.$porta_dj_icecast.',password = streaming_senha, mount = "/stream", streaming)'."\n";
			}

		} else {

			if($encoder == "aacp") {
				$config_autodj .= 'output.shoutcast(%fdkaac(bitrate='.$bitrate.', samplerate='.$samplerate.', channels='.$canal.', aot="mpeg4_aac_lc"),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_reset=true, icy_id = 1, icy_metadata = "true", host=streaming_servidor,port = porta,password = streaming_senha, streaming)'."\n";
			} else {
				$config_autodj .= 'output.shoutcast(%mp3(bitrate='.$bitrate.', samplerate='.$samplerate.'),name=streaming_nome,url=streaming_site, genre=streaming_genero, public=true, icy_reset=true, icy_id = 1, icy_metadata = "true", host=streaming_servidor,port = porta,password = streaming_senha, mount = "/stream", streaming)'."\n";
			}
		}
	}
	
	$config_autodj = gerar_conf_autodj($dados_stm["porta"],$config_autodj);	
	
	$ssh->enviar_arquivo("/home/painel/public_html/temp/".$config_autodj."","/home/streaming/configs/".$config_autodj."",0777);
	
	$ssh->executar("rm -fv /home/streaming/playlists/".$dados_stm["porta"].".pls /home/streaming/configs/autodj-".$dados_stm["porta"].".pid /home/streaming/configs/calendar-".$dados_stm["porta"].".xml;echo OK");
	
	unlink("/home/painel/public_html/temp/".$config_autodj."");
	
	$ssh->executar("cp -fv /home/streaming/playlists/".$dados_playlist["arquivo"]." /home/streaming/playlists/".$dados_stm["porta"].".pls;echo OK");
	
	// Salva o ultimo log
	$ssh->executar("cp -fv /home/streaming/logs/autodj-".$dados_stm["porta"].".log /home/streaming/logs/autodj-salvo_".date("d-m-Y_H-i-s")."_".$dados_stm["porta"].".log;rm -f /home/streaming/logs/autodj-".$dados_stm["porta"].".log;echo ok");
	
	$resultado = $ssh->executar("/home/streaming/liquidsoap/liquidsoap /home/streaming/configs/autodj-".$dados_stm["porta"].".conf;cat /home/streaming/configs/autodj-".$dados_stm["porta"].".pid");
	
	$resultado = str_replace("\n","",$resultado);
	
	if(is_numeric($resultado)) {
	
	// Atualiza os dados selecionados ao ligar o autodj
	mysqli_query($conexao,"Update streamings set ultima_playlist = '".$dados_playlist["codigo"]."', bitrate_autodj = '".$bitrate."', xfade = '".$xfade."', autodj_samplerate = '".$samplerate."', autodj_channels = '".$canal."', autodj_shuffle = '".$shuffle."', encoder = '".$encoder."' where codigo = '".$dados_stm["codigo"]."'");
	
	echo "<div class='alert alert-success text-center' role='alert'>".$lang['lang_acao_ligar_autodj_resultado_ok']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_ligar_autodj_resultado_ok']."");
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>".$lang['lang_acao_ligar_autodj_resultado_erro']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_ligar_autodj_resultado_erro']."");
	
	}
	
	}
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>".$lang['lang_acao_ligar_autodj_resultado_erro_stm_desligado']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_ligar_autodj_resultado_erro_stm_desligado']."");
	
	}
	
	exit();
}

// Função para desligar autodj
if($acao == "desligar_autodj") {

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

	$porta = code_decode(query_string('2'),"D");
		
	$dados_stm = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where porta = '".$porta."'"));
	$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
	
	if($dados_servidor["status"] == "off") {	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_alerta_manutencao_servidor']."</div>";
	exit();	
	}
	
	// Conexão SSH
	$ssh = new SSH();
	$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
	$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));
	
	$ssh->executar("echo OK;/bin/ps aux | /bin/grep '\<autodj-".$dados_stm["porta"].".conf\>' | /bin/grep liquidsoap | /bin/awk '{ print $2;}' | /usr/bin/xargs /bin/kill -TERM");

	// Atualiza status para monitoramento
	@mysqli_query($conexao,"Update streamings set monitoramento_autodj = '0' where codigo = '".$dados_stm["codigo"]."'");

	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_desligar_autodj_resultado_ok']."");
	
	echo "<div class='alert alert-success text-center' role='alert'>".$lang['lang_acao_desligar_autodj_resultado_ok']."</div>";
	
	exit();
}

// Função para recarregar playlist no autodj
if($acao == "pular_musica") {

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

	$porta = code_decode(query_string('2'),"D");
		
	$dados_stm = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where porta = '".$porta."'"));
	$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
	
	if($dados_servidor["status"] == "off") {	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_alerta_manutencao_servidor']."</div>";
	exit();	
	}
	
	// Conexão SSH
	$ssh = new SSH();
	$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
	$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));
	
	// Verifica se o autodj esta ligado
	if($dados_stm["tipo_servidor"] == "icecast") {
	$status_autodj = status_autodj_icecast($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	} else {
	$status_autodj = status_autodj($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	}
	
	if($status_autodj == "ligado") {
	
	$resultado = $ssh->executar('(sleep 1; echo pular;sleep 1;quit) | netcat localhost '.$dados_stm["porta_telnet"].';echo OK');
	
	if(preg_match('/OK/i',$resultado)) {
	
	echo "<div class='alert alert-success text-center' role='alert'>".$lang['lang_acao_pular_musica_autodj_resultado_ok']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_pular_musica_autodj_resultado_ok']."");
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>0x001 ".$lang['lang_acao_pular_musica_autodj_resultado_erro']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_pular_musica_autodj_resultado_erro']."");
	
	}
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>0x002 ".$lang['lang_acao_pular_musica_autodj_resultado_erro']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_pular_musica_autodj_resultado_erro']."");
	
	}
	
	exit();
}

// Função para recarregar playlist no autodj
if($acao == "recarregar_playlist") {

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

	$porta = code_decode(query_string('2'),"D");
		
	$dados_stm = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where porta = '".$porta."'"));
	$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
	
	if($dados_servidor["status"] == "off") {	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_alerta_manutencao_servidor']."</div>";
	exit();	
	}
	
	// Conexão SSH
	$ssh = new SSH();
	$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
	$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));
	
	// Verifica se o autodj esta ligado
	if($dados_stm["tipo_servidor"] == "icecast") {
	$status_autodj = status_autodj_icecast($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	} else {
	$status_autodj = status_autodj($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	}
	
	if($status_autodj == "ligado") {
	
	$resultado = $ssh->executar('(sleep 1; echo '.$dados_stm["porta"].'.pls.reload;sleep 1;quit) | netcat localhost '.$dados_stm["porta_telnet"].'');
	
	if(preg_match('/OK/i',$resultado)) {
	
	echo "<div class='alert alert-success text-center' role='alert'>".$lang['lang_acao_recarregar_playlist_autodj_resultado_ok']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_recarregar_playlist_autodj_resultado_ok']."");
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>0x001 ".$lang['lang_acao_recarregar_playlist_autodj_resultado_erro']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_recarregar_playlist_autodj_resultado_erro']."");
	
	}
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>0x002 ".$lang['lang_acao_recarregar_playlist_autodj_resultado_alerta']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_recarregar_playlist_autodj_resultado_alerta']."");
	
	}
	
	exit();
}

// Função para trocar playlist no autodj sem reiniciar
if($acao == "trocar_playlist") {

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

	$porta = code_decode(query_string('2'),"D");
	$acao = query_string('3');
	$playlist = query_string('4');
		
	$dados_stm = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where porta = '".$porta."'"));
	$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
	
	if($dados_servidor["status"] == "off") {	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_alerta_manutencao_servidor']."</div>";
	exit();	
	}
	
	if($acao == "carregar_playlists") {
	
	$total_playlists = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM playlists where codigo_stm = '".$dados_stm["codigo"]."'"));
	
	if($total_playlists > 0) {
	
	$dados_ultima_playlist = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM playlists where codigo = '".$dados_stm["ultima_playlist"]."'"));
	$total_musicas_ultima_playlist = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM playlists_musicas where codigo_playlist = '".$dados_stm["ultima_playlist"]."'"));
	
	echo '<div id="quadro">
<div id="quadro-topo"><strong>'.$lang['lang_info_autodj_trocar_playlist_tab_titulo'].'</strong></div>
 <div class="texto_medio" id="quadro-conteudo">
    <table width="575" border="0" align="center" cellpadding="0" cellspacing="0" style="margin-bottom:5px; background-color:#FFFF66; border:#DFDF00 1px solid">
  	  <tr>
        <td width="30" height="25" align="center" scope="col"><img src="/admin/img/icones/dica.png" width="16" height="16" /></td>
        <td width="430" align="left" class="texto_pequeno_erro" scope="col">'.$lang['lang_info_autodj_trocar_playlist'].'</td>
     </tr>
    </table>
    <table width="575" border="0" align="center" cellpadding="0" cellspacing="0" style="background-color:#F4F4F7; border:#CCCCCC 1px solid;">
      <tr>
        <td height="30" align="center" class="texto_padrao_destaque" style="padding-left:5px;padding-right:5px;">';
	echo '<select name="playlist" id="playlist" style="width:100%;">';
	echo '<optgroup label="'.$lang['lang_info_autodj_ultima_playlist'].'">';
	if($dados_stm["ultima_playlist"] > 0) {
	echo '<option value="'.$dados_stm["ultima_playlist"].'">'.$dados_ultima_playlist["nome"].' ('.$total_musicas_ultima_playlist.')</option>';
	}
	echo '</optgroup>';
	echo '<optgroup label="'.$lang['lang_info_autodj_playlists'].'">';
	
	$query_playlists = mysqli_query($conexao,"SELECT * FROM playlists where codigo_stm = '".$dados_stm["codigo"]."' ORDER by codigo ASC");
	while ($dados_playlist = mysqli_fetch_array($query_playlists)) {
	
	$total_musicas = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM playlists_musicas where codigo_playlist = '".$dados_playlist["codigo"]."'"));

	echo '<option value="'.$dados_playlist["codigo"].'">'.$dados_playlist["nome"].' ('.$total_musicas.')</option>';
		
	}
	
	echo '</optgroup>';
	echo '</select>';		
	echo '</td>
      </tr>
      <tr>
        <td height="40" align="center">
          <input type="button" class="botao" value="'.$lang['lang_botao_titulo_trocar'].'" onClick="trocar_playlist(\''.query_string('2').'\',\'trocar\',document.getElementById(\'playlist\').value);" /></td>
      </tr>
	</table>
  </div>
</div>';
	
	} else {
	echo "<div class='alert alert-danger text-center' role='alert'>0x001 ".$lang['lang_info_autodj_sem_playlist']."</div>";
	}
	
	} else {
	
	$dados_playlist_selecionada = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM playlists where codigo = '".$playlist."'"));
	
	// Conexão SSH
	$ssh = new SSH();
	$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
	$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));
	
	// Verifica se o autodj esta ligado
	if($dados_stm["tipo_servidor"] == "icecast") {
	$status_autodj = status_autodj_icecast($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	} else {
	$status_autodj = status_autodj($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	}
	
	if($status_autodj == "ligado") {
	
	$resultado = $ssh->executar("cp -f /home/streaming/playlists/".$dados_playlist_selecionada["arquivo"]." /home/streaming/playlists/".$dados_stm["porta"].".pls;echo OK");
	$ssh->executar('(sleep 1; echo pular;sleep 1;quit) | netcat localhost '.$dados_stm["porta_telnet"].';echo OK');

	if(preg_match('/OK/i',$resultado)) {
	
	// Atualiza a última playlist tocada
	mysqli_query($conexao,"Update streamings set ultima_playlist = '".$dados_playlist_selecionada["codigo"]."' where codigo = '".$dados_stm["codigo"]."'");
	
	echo "<div class='alert alert-success text-center' role='alert'>".$lang['lang_acao_trocar_playlist_autodj_resultado_ok']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_trocar_playlist_autodj_resultado_ok']."");
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>0x001 ".$lang['lang_acao_trocar_playlist_autodj_resultado_erro']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_trocar_playlist_autodj_resultado_erro']."");
	
	}
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>0x002 ".$lang['lang_acao_trocar_playlist_autodj_resultado_alerta']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_trocar_playlist_autodj_resultado_alerta']."");
	
	}
	
	}
	
	exit();
}


// Função para diagnosticar erros no AutoDJ
if($acao == "diagnosticar_autodj") {

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

	$porta = code_decode(query_string('2'),"D");
		
	$dados_stm = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where porta = '".$porta."'"));
	$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
	
	if($dados_servidor["status"] == "off") {	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_alerta_manutencao_servidor']."</div>";
	exit();	
	}
	
	// Conexão SSH
	$ssh = new SSH();
	$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
	$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));
	
	// Verifica os logs do AutoDJ a procura de erros	
	$checagem_erro1 = $ssh->executar("grep ' read playlist' /home/streaming/logs/autodj-".$dados_stm["porta"].".log | wc -l");
	
	$checagem_erro2 = $ssh->executar("grep 'Address already in use' /home/streaming/logs/autodj-".$dados_stm["porta"].".log | wc -l");
	
	if($checagem_erro1 > 0) {

	$ssh->executar("echo OK;/bin/ps aux | /bin/grep '\<".$dados_stm["porta"].".conf\>' | /bin/grep liquidsoap | /bin/awk '{ print $2;}' | /usr/bin/xargs /bin/kill -TERM");
	
	die("<div class='alert alert-warning text-center' role='alert'>".$lang['lang_acao_diagnosticar_autodj_resultado_erro_playlist']."</div>");

	} elseif($checagem_erro2 > 0) {

	$ssh->executar("echo OK;/bin/ps aux | /bin/grep '\<".$dados_stm["porta"].".conf\>' | /bin/grep liquidsoap | /bin/awk '{ print \$2;}' | /usr/bin/xargs /bin/kill -TERM");

	$porta_dj = $dados_stm["porta_dj"];
	$porta_dj_listen = $dados_stm["porta_dj"]+1;

	$pid_processo_erro1 = $ssh->executar("echo -n `netstat -anp | grep :".$porta_dj." | awk '{ print \$7;}' | cut -d '/' -f 1`");
	$porta_processo_erro1 = $ssh->executar("echo -n `/bin/ps aux | /bin/grep '\<".$pid_processo_erro1."\>' | grep liquidsoap | awk {'print \$12'} | cut -d '-' -f 2 | cut -d . -f 1`");

	$ssh->executar("echo OK;kill -TERM ".$pid_processo_erro1.";/home/streaming/liquidsoap/liquidsoap /home/streaming/configs/autodj-".$porta_processo_erro1.".conf");

	$pid_processo_erro2 = $ssh->executar("echo -n `netstat -anp | grep :".$porta_dj_listen." | awk '{ print \$7;}' | cut -d '/' -f 1`");
	$porta_processo_erro2 = $ssh->executar("echo -n `/bin/ps aux | /bin/grep '\<".$pid_processo_erro2."\>' | grep liquidsoap | awk {'print \$12'} | cut -d '-' -f 2 | cut -d . -f 1`");

	$ssh->executar("echo OK;kill -TERM ".$pid_processo_erro2.";/home/streaming/liquidsoap/liquidsoap /home/streaming/configs/autodj-".$porta_processo_erro2.".conf");
	
	die("<div class='alert alert-warning text-center' role='alert'>".$lang['lang_acao_diagnosticar_autodj_resultado_erro_porta']."</div>");
	
	} else {
	
	die("<div class='alert alert-success text-center' role='alert'>".$lang['lang_acao_diagnosticar_autodj_resultado_sem_erros']."</div>");
	
	}
	
}
// Função para iniciar transmissão de uma playlist pelo gerenciador de playlists
if($acao == "iniciar_playlist") {

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

	$playlist = code_decode(query_string('2'),"D");
	
	$dados_playlist_selecionada = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM playlists where codigo = '".$playlist."'"));
	$dados_stm = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM streamings where codigo = '".$dados_playlist_selecionada["codigo_stm"]."'"));
	$dados_servidor = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
	
	if($dados_servidor["status"] == "off") {	
	echo "<span class='texto_status_alerta'>".$lang['lang_alerta_manutencao_servidor']."</span>";
	exit();	
	}
	
	// Conexão SSH
	$ssh = new SSH();
	$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
	$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));
	
	// Verifica se o autodj esta ligado
	if($dados_stm["tipo_servidor"] == "icecast") {
	$status_autodj = status_autodj_icecast($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	} else {
	$status_autodj = status_autodj($dados_servidor["ip"],$dados_stm["porta"],$dados_stm["senha_admin"]);
	}
	
	if($status_autodj == "ligado") {
	
	$resultado = $ssh->executar('(echo '.$dados_stm["porta"].'.pls.uri /home/streaming/playlists/'.$dados_playlist_selecionada["arquivo"].';echo quit;echo quit) | curl telnet://localhost:'.$dados_stm["porta_telnet"].';echo OK');
	$ssh->executar('(echo '.$dados_stm["porta"].'.pls.fush_queue;echo quit;echo quit) | curl telnet://localhost:'.$dados_stm["porta_telnet"].';echo OK');

	if(preg_match('/OK/i',$resultado)) {
	
	// Atualiza a última playlist tocada e o bitrate do autodj
	mysqli_query($conexao,"Update streamings set ultima_playlist = '".$dados_playlist_selecionada["codigo"]."' where codigo = '".$dados_stm["codigo"]."'");
	
	echo "<div class='alert alert-success text-center' role='alert'>".$lang['lang_acao_trocar_playlist_autodj_resultado_ok']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_trocar_playlist_autodj_resultado_ok']."");
	
	} else {
	
	echo "<div class='alert alert-danger text-center' role='alert'>".$lang['lang_acao_trocar_playlist_autodj_resultado_erro']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_trocar_playlist_autodj_resultado_erro']."");
	
	}
	
	} else {
	
	echo "<div class='alert alert-warning text-center' role='alert'>".$lang['lang_acao_trocar_playlist_autodj_resultado_alerta']."</div>";
	
	// Insere a ação executada no registro de logs.
	logar_acao_streaming($conexao,"".$dados_stm["codigo"]."","".$lang['lang_acao_trocar_playlist_autodj_resultado_alerta']."");
	
	}
	
	exit();
}