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

$total_avisos_ativos = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM avisos WHERE area = 'streaming'"));
$checar_status_aviso = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM avisos_desativados WHERE area = 'streaming' AND codigo_usuario = '".$dados_stm["porta"]."'"));
$total_avisos_exibir = ($total_avisos_ativos > $checar_status_aviso) ? $total_avisos_ativos-$checar_status_aviso : 0;

$servidor = strtolower($dados_servidor["nome"]).".".$dados_config["dominio_padrao"];

$source_shoutcast = "http://".$servidor.":".$dados_stm["porta"]."/;";

if($dados_stm["idioma_painel"] == "en") {
$lang_calendar = "en";
} elseif($dados_stm["idioma_painel"] == "es") {
$lang_calendar = "es";
} else {
$lang_calendar = "pt";
}

if($_POST) {

$exibir_capa = ($_POST["exibir_capa"] == "sim") ? "sim" : "nao";

// Verifica se todos os campos foram preenchidos
if(empty($_POST["servidor_rtmp"]) || empty($_POST["servidor_rtmp_chave"])) {
// Cria o sessão do status das ações executadas e redireciona.
$_SESSION["status_acao"] = '<div class="alert alert-danger text-center" role="alert">Voc&ecirc; deixou campos em branco.</div>';

header("Location: /gerenciar-lives");
exit();
}

$servidor_live = (substr($_POST["servidor_rtmp"],-1) == "/") ? $_POST["servidor_rtmp"].$_POST["servidor_rtmp_chave"] : $_POST["servidor_rtmp"]."/".$_POST["servidor_rtmp_chave"];

$data_inicio = ($_POST["data_inicio"]) ? preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $_POST["data_inicio"]) : date("Y-m-d H:i");

$data_fim = ($_POST["data_fim"]) ? preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $_POST["data_fim"]) : date("Y-m-d H:i",mktime (0, 0, 0, date("m")  , date("d")+1, date("Y"))); 

mysqli_query($conexao,"INSERT INTO lives (codigo_stm,data_inicio,data_fim,tipo,servidor_stm,servidor_live,status,exibir_capa) VALUES ('".$dados_stm["codigo"]."','".$data_inicio.":00','".$data_fim.":00','".$_POST["tipo"]."','".$source_shoutcast."','".$servidor_live."','2','".$exibir_capa."')");
$codigo_live = mysqli_insert_id($conexao);

// Envia a imagem de fundo e inicia a transmissao
// Conexao SSH
$ssh = new SSH();
$ssh->conectar($dados_servidor["ip"],$dados_servidor["porta_ssh"]);
$ssh->autenticar("root",code_decode($dados_servidor["senha"],"D"));

$ssh->executar("mkdir -v /home/streaming/lives;echo OK");
$ssh->enviar_arquivo($_FILES["capa"]["tmp_name"],"/home/streaming/lives/capa-".$dados_stm["porta"].".jpg",0777);
$ssh->enviar_arquivo($_FILES["capa"]["tmp_name"],"/home/streaming/lives/capa-live-".$dados_stm["porta"].".jpg",0777);

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

$ssh->executar('echo OK;screen -dmS '.$dados_stm["porta"].'_'.$codigo_live.' bash -c "/usr/local/bin/ffmpeg -re -stream_loop -1 -framerate 2 -f image2 -i /home/streaming/lives/capa-live-'.$dados_stm["porta"].'.jpg -i \''.$source_shoutcast.'\' -r 24 -g 48 -pix_fmt yuv420p -x264-params keyint=48:min-keyint=48:scenecut=-1 -s 1920x1080 -b:v 1024k -b:a 128k -ar 44100 -acodec aac -vcodec libx264 -preset superfast -bufsize 1024k -maxrate 1024k -crf 28 -threads 2 -f flv \''.$servidor_live.'\'; exec sh"');


sleep(5);

$resultado = $ssh->executar("/bin/ps aux | /bin/grep ffmpeg | /bin/grep http | /bin/grep ".$dados_stm["porta"]." | /bin/grep ".$_POST["tipo"]." | /usr/bin/wc -l");

if($resultado > 0) {

if($exibir_capa == "nao") {
  $ssh->executar("touch /home/streaming/lives/".$dados_stm["porta"].".lock;echo OK");
}

mysqli_query($conexao,"Update lives set status = '1' where codigo = '".$codigo_live."'");

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

} else {

mysqli_query($conexao,"Update lives set status = '3' where codigo = '".$codigo_live."'");

// Cria o sessão do status das ações executadas e redireciona.
$_SESSION["status_acao"] = '<div class="alert alert-danger text-center" role="alert">Erro ao iniciar live, tente novamente.</div>';

}

header("Location: /gerenciar-lives");
exit();

} else {

// Cria o sessão do status das ações executadas e redireciona.
$_SESSION["status_acao"] = status_acao("Live agendada com sucesso.","ok");

header("Location: /gerenciar-lives");
exit();
}
}

// Funções de ações(finalizar/remover)
// Função para remover a acao
if(query_string('1') == "finalizar") {

    $codigo = code_decode(query_string('2'),"D");
    
    $dados_live = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM lives where codigo = '".$codigo."'"));

    mysqli_query($conexao,"Update lives set status = '0' where codigo = '".$dados_live["codigo"]."'");
    
    // Finaliza no servidor
    // Conexao 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;screen -ls | grep -o '[0-9]*\.".$dados_stm["porta"]."_".$dados_live["codigo"]."\>' | xargs -I{} screen -X -S {} quit");
    $ssh->executar("echo OK;rm -fv /home/streaming/lives/capa-*".$dados_stm["porta"]."*.jpg");
    
    echo '<div class="alert alert-success text-center" role="alert">Agora voc&ecirc; deve finalizar a tranmiss&atilde;o na sua conta do '.ucfirst($dados_stm["tipo"]).'</div>';
    
    exit();
}

// Função para remover a acao
if(query_string('1') == "remover") {

    $codigo = code_decode(query_string('2'),"D");
    
    $dados_live = mysqli_fetch_array(mysqli_query($conexao,"SELECT * FROM lives where codigo = '".$codigo."'"));

    // Finaliza no servidor
    // Conexao 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;screen -ls | grep -o '[0-9]*\.".$dados_stm["porta"]."_".$dados_live["codigo"]."\>' | xargs -I{} screen -X -S {} quit");
    $ssh->executar("echo OK;rm -fv /home/streaming/lives/capa-*".$dados_stm["porta"]."*.jpg");

    mysqli_query($conexao,"Delete From lives where codigo = '".$dados_live["codigo"]."'");

    echo '<div class="alert alert-success text-center" role="alert">Live removida com sucesso.</div>';
    
    exit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>Streaming <?php echo $dados_stm["porta"]; ?></title>
  <link rel="stylesheet" href="/inc/materialdesignicons.min.css">
  <link rel="stylesheet" href="/inc/font-awesome.min.css">
  <link rel="stylesheet" href="/inc/vendor.bundle.base.css">
  <link rel="stylesheet" href="/inc/vendor.bundle.addons.css">
  <link rel="stylesheet" href="/inc/theme.css">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.6.3/flatpickr.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.6.3/themes/material_red.css">
  <link rel="shortcut icon" href="/img/favicon.ico">
  <script type="text/javascript" src="/inc/ajax-streaming.js"></script>
  <script type="text/javascript" src="/inc/javascript.js"></script>
</head>

<body>
  <div class="container-scroller">
      <nav class="navbar col-lg-12 col-12 p-0 fixed-top d-flex flex-row">
      <div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-center">
        <?php if($dados_revenda["url_logo"]) { ?>
        <a class="navbar-brand brand-logo" href="/dashboard"><img id="logo" src="<?php echo $dados_revenda["url_logo"]; ?>" title="Painel" height="60" border="0"></a>
        <?php } else { ?>
        <a class="navbar-brand brand-logo" href="/dashboard"><span>Painel Streaming</span></a>
        <?php } ?>
        <a class="navbar-brand brand-logo-mini" href="/dashboard"><img src="/img/icones/img-icone-logo.png" title="Painel" width="32" height="32" border="0"></a>
      </div>
      <div class="navbar-menu-wrapper d-flex align-items-center justify-content-end justify-content-lg-start">
        <button class="navbar-toggler navbar-toggler align-self-center" type="button" data-toggle="minimize">
          <span class="mdi mdi-menu text-icones"></span>
        </button>
        <ul class="navbar-nav navbar-nav-right">
          <li class="nav-item nav-profile dropdown show">
            <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" id="profileDropdown" aria-expanded="true">
              <i class="fa fa-power-off f-18 text-icones" data-toggle="tooltip" data-placement="bottom" title="<?php echo $lang['lang_botao_titulo_ligar']; ?>/<?php echo $lang['lang_botao_titulo_desligar']; ?>"></i>
            </a>
            <div class="dropdown-menu dropdown-menu-right navbar-dropdown" aria-labelledby="profileDropdown">
              <a class="dropdown-item text-success" href="javascript:ligar_streaming('<?php echo $porta_code; ?>');"> <?php echo $lang['lang_botao_titulo_ligar']; ?> Streaming</a>
              <a class="dropdown-item text-danger" href="javascript:desligar_streaming('<?php echo $porta_code; ?>');"> <?php echo $lang['lang_botao_titulo_desligar']; ?> Streaming</a>
              <?php if($dados_stm["autodj"] == "sim") { ?>
              <div class="dropdown-divider"></div>              
              <a class="dropdown-item text-success" href="javascript:carregar_opcoes_ligar_autodj('<?php echo $porta_code; ?>');"> <?php echo $lang['lang_botao_titulo_ligar']; ?> AutoDJ</a>
              <a class="dropdown-item text-danger" href="javascript:desligar_autodj('<?php echo $porta_code; ?>');"> <?php echo $lang['lang_botao_titulo_desligar']; ?> AutoDJ</a>
              <?php } ?>
            </div>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link count-indicator dropdown-toggle d-flex align-items-center justify-content-center" id="notificationDropdown" href="#" data-toggle="dropdown" aria-expanded="false">
              <i class="mdi mdi-bell f-22 text-icones" data-toggle="tooltip" data-placement="bottom" title="<?php echo $lang['lang_info_pagina_informacoes_tab_avisos']; ?>"></i>
              <?php if($total_avisos_exibir > 0) { ?><span class="count bg-success"><?php echo $total_avisos_exibir; ?></span><?php } ?>           
            </a>
            <div class="dropdown-menu dropdown-menu-right navbar-dropdown preview-list" aria-labelledby="notificationDropdown">
              <a class="dropdown-item">
                <p class="mb-0 font-weight-normal float-left"><?php echo $lang['lang_info_pagina_informacoes_tab_avisos']; ?></p>
              </a>
              <div class="dropdown-divider"></div>
              <?php carregar_avisos_streaming($conexao,$dados_stm["porta"],$dados_servidor["codigo"]); ?>
            </div>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="/sair"><i class="mdi mdi-logout f-22 text-icones" data-toggle="tooltip" data-placement="bottom" title="Sair/logout"></i></a>
          </li>
          <li>
            <button type="button" class="btn btn-info" id="status-streaming" onClick="status_streaming('<?php echo $porta_code; ?>');" style="margin: 10px;min-width: 150px; min-height: 40px"><i class="fa fa-refresh"></i></button>
          </li>
        </ul>
        <button class="navbar-toggler navbar-toggler-right d-lg-none align-self-center" type="button" data-toggle="offcanvas">
          <span class="mdi mdi-menu text-icones"></span>
        </button>
      </div>
    </nav>

    <!-- modal -->
      <div class="modal fade" id="avisos" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title"><?php echo $lang['lang_info_pagina_informacoes_tab_avisos']; ?></h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                </div>
                <div class="modal-body" id="avisos-conteudo"><img src="/img/ajax-loader.gif" align="center" /></div>
            </div>
        </div>
      </div>
                
      <div class="modal fade" id="playlists-autodj" tabindex="-1" role="dialog" aria-hidden="true">
          <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">AutoDJ</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                </div>
                <div class="modal-body text-center" id="playlists-autodj-conteudo" style="text-align: center;"><img src="/img/ajax-loader.gif" /></div>
            </div>
          </div>
      </div>
                
      <div class="modal fade" id="log-sistema" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered" role="document">
            <div class="modal-content">
                <div class="modal-body" id="log-sistema-conteudo" style="text-align:center"><img src="/img/ajax-loader.gif" /></div>
            </div>
        </div>
      </div>
      
    <div class="container-fluid page-body-wrapper">      
    <?php require_once("menu.php"); ?>
      <div class="main-panel">
        <div class="content-wrapper">
          <div id="local-status-acoes"><?php echo $_SESSION['status_acao'];unset($_SESSION['status_acao']); ?></div>
          <div class="row">            

            <div class="col-lg-12">
              <div class="card">
                  <div class="card-header">
                    <header>Lives</header>
                  </div>
                <div class="card-body">
                    <table class="table table-hover mb-0">
                                                <thead>
                                                    <tr>
                                                        <th>Live</th>
                                                        <th>Data Inicio</th>
                                                        <th>Dura&ccedil;&atilde;o</th>
                                                        <th>Status</th>
                                                        <th>A&ccedil;&otilde;es</th>
                                                    </tr>
                                                </thead>
                                                <tbody>
<?php
$total_lives = mysqli_num_rows(mysqli_query($conexao,"SELECT * FROM lives where codigo_stm = '".$dados_stm["codigo"]."'"));

if($total_lives > 0) {

$sql = mysqli_query($conexao,"SELECT *, DATE_FORMAT(data_inicio,'%d/%m/%Y %H:%i:%s') AS data FROM lives where codigo_stm = '".$dados_stm["codigo"]."' ORDER by data_inicio DESC");
while ($dados_live = mysqli_fetch_array($sql)) {

$duracao_segundos1 = strtotime(date("Y-m-d H:i:s")) - strtotime($dados_live["data_inicio"]);
$duracao_segundos2 = strtotime($dados_live["data_fim"]) - strtotime($dados_live["data_inicio"]);

$duracao = ($dados_live["status"] == "0") ? tempo_conectado($duracao_segundos2) : tempo_conectado($duracao_segundos1);

$status = ($dados_live["status"] == "1") ? "Transmitindo" : "Finalizado";

$live_code = code_decode($dados_live["codigo"],"E");

echo "<tr id='".$live_code."'>
<td height='25' align='left' scope='col' class='texto_padrao'>&nbsp;".ucfirst($dados_live["tipo"])."</td>
<td height='25' align='left' scope='col' class='texto_padrao'>&nbsp;".$dados_live["data"]."</td>
<td height='25' align='left' scope='col' class='texto_padrao'>&nbsp;".$duracao."</td>
<td height='25' align='left' scope='col' class='texto_padrao'>&nbsp;".$status."</td>
<td height='25' align='left' scope='col' class='texto_padrao'>";

if($dados_live["status"] == "1") {
echo "<a href='javascript:executar_acao_gerenciar_lives(\"".$live_code."\",\"finalizar\");'><i class='fa-minus-circle text-warning'></i></a>&nbsp;";
}
echo "<a href='javascript:executar_acao_gerenciar_lives(\"".$live_code."\",\"remover\");'><i class='fa fa-trash-o text-danger'></i></a>
</td>
</tr>";

}

} else {

echo "<tr>
    <td height='23' colspan='5' align='center' class='texto_padrao'>".$lang['lang_info_sem_registros']."</td>
  </tr>";

}
?>
                                                </tbody>
                                            </table>
                </div>
              </div>
            </div>            

            <div class="col-lg-12">
              <div class="card">
                  <div class="card-header">
                    <header>Iniciar Live</header>
                  </div>
                <div class="card-body">
                    <div class="alert alert-info text-center" role="alert">O servidor e chave devem ser obtidos na conta da rede social escolhida. Tempo m&aacute;ximo de transmiss&atilde;o &eacute; 2 horas.</div>
                                    <form method="post" action="/gerenciar-lives" style="padding:0px; margin:0px" enctype="multipart/form-data" name="lives">
                                    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                                      <tr>
                                        <td width="150" height="50" align="left" style="padding-left:5px;"><strong>Live</strong></td>
                                        <td align="left">
                                        <select name="tipo" class="form-control" id="tipo" style="width:100%;" onchange="tipo_live(this.value);">
                                            <option value="youtube" selected="selected">YouTube</option>
                                            <option value="facebook">FaceBook</option>
                                            <option value="twitch">Twitch</option>
                                            <option value="periscope">Periscope</option>
                                            <option value="vimeo">Vimeo</option>
                                            <option value="steam">Steam Valve</option>
                                        </select>
                                        </td>
                                      </tr>
                                      <tr>
                                        <td width="150" height="50" align="left" style="padding-left:5px;"><strong>Imagem de Fundo</strong></td>
                                        <td width="540" align="left" class="texto_padrao_pequeno"><input name="capa" type="file" id="capa" style="width:100%" />(Deve ser JPG 1920x1080)</td>
                                      </tr>
                                      <tr>
                                        <td width="150" height="50" align="left" style="padding-left:5px;"><strong>URL RTMP</strong></td>
                                        <td width="540" align="left"><input name="servidor_rtmp" type="text" class="form-control" id="servidor_rtmp" style="width:100%;" value="rtmp://a.rtmp.youtube.com/live2/" /></td>
                                      </tr>
                                      <tr>
                                        <td height="50" align="left" style="padding-left:5px;"><strong>Chave/Key</strong></td>
                                        <td align="left"><input name="servidor_rtmp_chave" type="text" class="form-control" id="servidor_rtmp_chave" style="width:100%;" /></td>
                                      </tr>
                                      <tr>
                                            <td height="30" align="left" style="padding-left:5px;"><strong>Data Inicio</strong></td>
                                            <td align="left" class="texto_padrao_vermelho_destaque"><input name="data_inicio" type="text" id="data_inicio" placeholder="__/__/____ __:__" value="" style="width:135px;" class="form-control" />&nbsp;</td>
                                          </tr>
                                          <tr>
                                            <td height="30" align="left" style="padding-left:5px;"><strong>Data Fim</strong></td>
                                            <td align="left" class="texto_padrao_pequeno"><input name="data_fim" type="text" id="data_fim" placeholder="__/__/____ __:__" value="" style="width:135px;" class="form-control" /></td>
                                          </tr>
                                          <tr>
                                            <td height="35" align="left" style="padding-left:5px;"><strong>Inicio Imediato</strong></td>
                                            <td align="left" class="texto_padrao_pequeno"><input type="checkbox" id="inicio_imediato" name="inicio_imediato" value="sim" /></td>
                                          </tr>
                                          <tr>
                                            <td height="35" align="left" style="padding-left:5px;"><strong>Exibir Capa Artista</strong></td>
                                            <td align="left" class="texto_padrao_pequeno"><input type="checkbox" id="exibir_capa" name="exibir_capa" value="sim" checked="checked" />(marque esta op&ccedil;&atilde;o para exibir em tempo real a capa do artista e m&uacute;sica tocando)</td>
                                          </tr>
                                      <tr>
                                        <td height="50" colspan="2" align="right">
                                            <button type="button" class="btn btn-info" onClick="document.lives.submit();">Iniciar Live</button>
                                        </td>
                                      </tr>
                                    </table>
                                </form>
                </div>
              </div>
            </div>

          </div>
        </div>
      </div>      

    </div>
  </div>
  <script src="/inc/vendor.bundle.base.js"></script>
  <script src="/inc/vendor.bundle.addons.js"></script>
  <script src="/inc/theme.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.6.3/flatpickr.min.js"></script>
<script src="https://npmcdn.com/flatpickr@4.6.6/dist/l10n/<?php echo $lang_calendar; ?>.js"></script>
  <script>
  status_streaming('<?php echo $porta_code; ?>');
  setInterval("status_streaming('<?php echo $porta_code; ?>')",60000);

        function tipo_live(tipo) {

            if(tipo == "youtube") {
            document.getElementById("servidor_rtmp").value = "rtmp://a.rtmp.youtube.com/live2/";
            } else if(tipo == "twitch") {
            document.getElementById("servidor_rtmp").value = "rtmp://live-dfw.twitch.tv/app/";
            } else if(tipo == "periscope") {
            document.getElementById("servidor_rtmp").value = "rtmp://ca.pscp.tv:80/x/";
            } else if(tipo == "vimeo") {
            document.getElementById("servidor_rtmp").value = "rtmp://rtmp.cloud.vimeo.com/live/";
            } else if(tipo == "steam") {
            document.getElementById("servidor_rtmp").value = "rtmp://ingest-any-ord1.broadcast.steamcontent.com/app/";
            } else {
            document.getElementById("servidor_rtmp").value = "rtmps://live-api-s.facebook.com:443/rtmp/";   
            }

        }
        function executar_acao_gerenciar_lives( codigo, acao ) {
    
          document.getElementById("local-status-acoes").innerHTML = '<div class="alert alert-info text-center" role="alert"><img src="/img/ajax-loader.gif" /></div>';
          $("#local-status-acoes").show();
          
          var http = new Ajax();
          http.open("GET", "/gerenciar-lives/"+acao+"/"+codigo , true);
          http.onreadystatechange = function() {
            
          if(http.readyState == 4) {
          
            resultado = http.responseText;
            
            document.getElementById("local-status-acoes").innerHTML = resultado;
            $("#local-status-acoes").delay(15000).fadeOut(300); 
            if(acao == "remover") {
                $('#' + $.escapeSelector(codigo)).remove();
            }
            
            
          }
          
          }
          http.send(null);
          delete http;
        }
        $("#data_inicio").flatpickr({
        enableTime: true,
        time_24hr: true,
        dateFormat: "d/m/Y H:i",
        locale: "<?php echo $lang_calendar; ?>",
    });
    $("#data_fim").flatpickr({
        enableTime: true,
        time_24hr: true,
        dateFormat: "d/m/Y H:i",
        locale: "<?php echo $lang_calendar; ?>",
    });
  </script>
</body>
</html>