connect_error) { exit("Connection failed: " . $conexao->connect_error); } if (!isset($_SESSION["iduser"]) || $_SESSION["nivel"] < 2) { echo ""; exit; } if (!isset($_SESSION["login"]) || !isset($_SESSION["senha"])) { echo ""; exit; } if (isset($_SESSION["LAST_ACTIVITY"]) && 300 < time() - $_SESSION["LAST_ACTIVITY"]) { echo ""; exit; } if (!extension_loaded("ssh2")) { $_SESSION["error"] = "A extensão SSH2 não está instalada. Verifique sua configuração do PHP."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } $byid = $_SESSION["iduser"]; $mainid = $_SESSION["mainid"]; $query = "SELECT c.nome, c.subid \r\n FROM atribuidos a \r\n JOIN categorias c ON a.categoriaid = c.subid \r\n WHERE a.userid = ?"; $stmt = mysqli_prepare($conexao, $query); mysqli_stmt_bind_param($stmt, "s", $byid); mysqli_stmt_execute($stmt); $resultado = mysqli_stmt_get_result($stmt); if (0 < mysqli_num_rows($resultado)) { $categorias = []; while ($categoria = mysqli_fetch_assoc($resultado)) { $subid = $categoria["subid"]; $nome = $categoria["nome"]; $categorias[$subid][] = $nome; } } else { $query = "SELECT * FROM accounts WHERE id = ?"; $stmt = mysqli_prepare($conexao, $query); mysqli_stmt_bind_param($stmt, "s", $byid); mysqli_stmt_execute($stmt); $resultado = mysqli_stmt_get_result($stmt); if (0 < mysqli_num_rows($resultado)) { $account = mysqli_fetch_assoc($resultado); if ($account["id"] == 1) { $query = "SELECT nome, subid FROM categorias"; $resultado = mysqli_query($conexao, $query); $categorias = []; while ($categoria = mysqli_fetch_assoc($resultado)) { $subid = $categoria["subid"]; $nome = $categoria["nome"]; $categorias[$subid][] = $nome; } } else { echo "Usuário não encontrado."; } } } $_SESSION["LAST_ACTIVITY"] = time(); $resultado = mysqli_query($conexao, "SELECT maxcredit FROM config"); $minutos_maximos = mysqli_fetch_assoc($resultado)["maxcredit"]; $dias_minimos = 1; $dias_maximos = $minutos_maximos; if (isset($_POST["submit"])) { $login = $_POST["login"]; $senha = $_POST["senha"]; $limite = $_POST["limite"]; $minutos = mysqli_real_escape_string($conexao, $_POST["minutos"]); $categoriaid = mysqli_real_escape_string($conexao, $_POST["categoriaid"]); $sql = "SELECT maxtext FROM config WHERE byid = ?"; $stmt = $conexao->prepare($sql); $byiduser = 1; $stmt->bind_param("i", $byiduser); $stmt->execute(); $result = $stmt->get_result(); if (0 < $result->num_rows) { $row = $result->fetch_assoc(); $maxtext = $row["maxtext"]; } else { $maxtext = 255; } $stmt->close(); if ($maxtext < strlen($login)) { $_SESSION["error"] = "O login excede o limite de caracteres permitido (" . $maxtext . " caracteres)."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($maxtext < strlen($senha)) { $_SESSION["error"] = "A senha excede o limite de caracteres permitido (" . $maxtext . " caracteres)."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($_SESSION["iduser"] != 1) { $query = "SELECT categoriaid, suspenso, tipo, expira FROM atribuidos WHERE userid = ?"; $stmt = mysqli_prepare($conexao, $query); mysqli_stmt_bind_param($stmt, "s", $byid); mysqli_stmt_execute($stmt); $resultado = mysqli_stmt_get_result($stmt); $categoriaEncontrada = false; while ($atribuido = mysqli_fetch_assoc($resultado)) { if ($atribuido["categoriaid"] == $categoriaid) { $categoriaEncontrada = true; if ($atribuido["suspenso"] == 1) { $_SESSION["error"] = "A atribuição está suspensa temporariamente e não poderá criar novas contas. Por favor, entre em contato com o administrador para obter mais informações e resolver essa questão."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($atribuido["tipo"] == "Validade" && strtotime($atribuido["expira"]) < time()) { $_SESSION["error"] = "A atribuição está vencida. Por favor, entre em contato com o administrador para renová-la."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } } } if (!$categoriaEncontrada) { $_SESSION["error"] = "A categoria selecionada não corresponde à atribuição atual."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } } $resultado = mysqli_query($conexao, "SELECT maxtest FROM config"); $minutos_maximos = mysqli_fetch_assoc($resultado)["maxtest"]; $minutos_minimos = 60; if ($minutos === "") { $_SESSION["error"] = "Por favor, insira um valor de minutos."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($atribuido["tipo"] == "Credito" && ($minutos < $minutos_minimos || $minutos_maximos < $minutos)) { if ($minutos < $minutos_minimos) { $_SESSION["error"] = "Limite mínimo de minutos não é válido. Por favor, insira um valor mínimo de " . $minutos_minimos . " minutos."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($minutos_maximos < $minutos) { $_SESSION["error"] = "Limite máximo de minutos excedido. Por favor, insira um valor até " . $minutos_maximos . " minutos."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } } $horas = floor($minutos / 60); $data_expiracao_unix = strtotime("+" . $horas . " hours"); $data_expiracao_mysql = date("Y-m-d H:i:s", $data_expiracao_unix); $sql_ssh = "SELECT * FROM ssh_accounts WHERE login=?"; $stmt_ssh = $conexao->prepare($sql_ssh); $stmt_ssh->bind_param("s", $login); $stmt_ssh->execute(); $result_ssh = $stmt_ssh->get_result(); $sql_accounts = "SELECT * FROM accounts WHERE login=?"; $stmt_accounts = $conexao->prepare($sql_accounts); $stmt_accounts->bind_param("s", $login); $stmt_accounts->execute(); $result_accounts = $stmt_accounts->get_result(); if (0 < $result_ssh->num_rows || 0 < $result_accounts->num_rows) { $_SESSION["error"] = "Usuário já existe."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($_SESSION["iduser"] != 1) { $userid = $_SESSION["iduser"]; $sql_atribuidos = "SELECT * FROM atribuidos WHERE userid = ? AND categoriaid = ?"; $stmt_atribuidos = $conexao->prepare($sql_atribuidos); $stmt_atribuidos->bind_param("ii", $userid, $categoriaid); $stmt_atribuidos->execute(); $result_atribuidos = $stmt_atribuidos->get_result(); if (0 < $result_atribuidos->num_rows) { $atribuido = $result_atribuidos->fetch_assoc(); if ($atribuido["tipo"] == "Validade") { $sql_limite = "SELECT limite FROM atribuidos WHERE byid = ?"; $stmt_limite = $conexao->prepare($sql_limite); $stmt_limite->bind_param("i", $userid); $stmt_limite->execute(); $result_limite = $stmt_limite->get_result(); if (0 < $result_limite->num_rows) { $limite_atribuidos = $result_limite->fetch_assoc()["limite"]; $sql_usuarios = "SELECT SUM(limite) AS total_limite FROM ssh_accounts WHERE byid = ? AND categoriaid = ?"; $stmt_usuarios = $conexao->prepare($sql_usuarios); $stmt_usuarios->bind_param("ii", $userid, $categoriaid); $stmt_usuarios->execute(); $result_usuarios = $stmt_usuarios->get_result(); $usuarios_criados = $result_usuarios->fetch_assoc()["total_limite"]; $total_limite = $usuarios_criados + $limite_atribuidos; if ($atribuido["limite"] <= $total_limite) { $_SESSION["error"] = "Limite de usuários excedido para a categoria selecionada."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($atribuido["limite"] < $total_limite + $limite) { $_SESSION["error"] = "O limite fornecido excede o limite permitido para a categoria selecionada."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($limite_atribuidos < $limite) { $_SESSION["error"] = "O limite fornecido excede o limite de crédito disponível para a categoria selecionada."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } } else { $sql_usuarios = "SELECT SUM(limite) AS total_limite FROM ssh_accounts WHERE byid = ? AND categoriaid = ?"; $stmt_usuarios = $conexao->prepare($sql_usuarios); $stmt_usuarios->bind_param("ii", $userid, $categoriaid); $stmt_usuarios->execute(); $result_usuarios = $stmt_usuarios->get_result(); $usuarios_criados = $result_usuarios->fetch_assoc()["total_limite"]; if ($atribuido["limite"] <= $usuarios_criados) { $_SESSION["error"] = "Limite de usuários excedido para a categoria selecionada."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } if ($atribuido["limite"] < $usuarios_criados + $limite) { $_SESSION["error"] = "O limite fornecido excede o limite permitido para a categoria selecionada."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } } } else { if ($atribuido["tipo"] == "Credito") { if (1 <= $atribuido["limitetest"]) { $limite_ssh = $atribuido["limitetest"] - $limite; if ($atribuido["limitetest"] < $limite) { $_SESSION["error"] = "O limite fornecido excede o limite de Creditos disponíveis para a categoria selecionada."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } $sql_update = "UPDATE atribuidos SET limitetest = ? WHERE userid = ? AND categoriaid = ?"; $stmt_update = $conexao->prepare($sql_update); $stmt_update->bind_param("iii", $limite_ssh, $userid, $categoriaid); $stmt_update->execute(); $stmt_update->close(); } else { $_SESSION["error"] = "Usuário possui apenas " . $atribuido["limitetest"] . " Credito(s) disponível(is) para criar esse acesso."; header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } } } } } $dias1 = $dias; $dias1 = 2; $sqlServidores = "SELECT * FROM servidores WHERE subid = " . $categoriaid; $resultadoServidores = $conexao->query($sqlServidores); $file = fopen("../../home/modulos/CriarTesteSsh.sh", "w"); $command = "./SshturboMakeAccount.sh " . $login . " " . $senha . " " . $dias1 . " " . $limite . "\n"; fwrite($file, $command); fclose($file); if (0 < $resultadoServidores->num_rows) { $errors = []; while ($row = $resultadoServidores->fetch_assoc()) { if ($row["subid"] == $categoriaid) { try { $connection = ssh2_connect($row["ip"], $row["porta"]); if (!$connection) { $errors[] = "Não foi possível conectar ao servidor " . $row["ip"]; } else { if (!ssh2_auth_password($connection, $row["usuario"], $row["senha"])) { $errors[] = "Usuário ou senha do servidor " . $row["ip"] . " estão incorretos"; ssh2_disconnect($connection); } else { if (!function_exists("ssh2_scp_send")) { $errors[] = "A função ssh2_scp_send não está disponível no servidor"; ssh2_disconnect($connection); } else { if (!ssh2_scp_send($connection, "../../home/modulos/CriarTesteSsh.sh", "CriarTesteSsh.sh", 493)) { $errors[] = "Falha ao enviar o arquivo para o servidor"; ssh2_disconnect($connection); } else { $exec_command = "./CriarTesteSsh.sh >/dev/null 2>&1 &"; ssh2_exec($connection, $exec_command); ssh2_disconnect($connection); } } } } } catch (ErrorException $e) { $errors[] = "Erro de conexão no servidor " . $row["ip"] . ": " . $e->getMessage(); } } } if (!empty($errors)) { $_SESSION["error"] = implode("
", $errors); header("Location: " . $_SERVER["HTTP_REFERER"]); exit; } } $stmt = $conexao->prepare("INSERT INTO ssh_accounts (login, senha, limite, expira, byid, mainid, categoriaid) \r\n VALUES (?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("ssisisi", $login, $senha, $limite, $data_expiracao_mysql, $byid, $mainid, $categoriaid); $msg = []; $sql = "SELECT app FROM config WHERE byid = '" . $byid . "'"; $result = $conexao->query($sql); if (0 < $result->num_rows) { $row = $result->fetch_assoc(); $link = $row["app"]; } if ($stmt->execute()) { $stmtCategoria = $conexao->prepare("SELECT nome FROM categorias WHERE subid = ?"); $stmtCategoria->bind_param("i", $categoriaid); $stmtCategoria->execute(); $resultado = $stmtCategoria->get_result(); $categoria = $resultado->fetch_assoc()["nome"]; $stmtUsuario = $conexao->prepare("SELECT login, senha, limite, expira FROM ssh_accounts WHERE login = ?"); $stmtUsuario->bind_param("s", $login); $stmtUsuario->execute(); $resultadoUsuario = $stmtUsuario->get_result(); $usuario = $resultadoUsuario->fetch_assoc(); $logincp = $usuario["login"]; $senhacp = $usuario["senha"]; $limitecp = $usuario["limite"]; $html = "
Usuário criado com sucesso.

"; $html .= "
Login: " . $logincp . "
"; $html .= "
Senha: " . $senhacp . "
"; $html .= "
Limite: " . $limitecp . "
"; $html .= "
Validade: " . $horas . " Hrs
"; $html .= "
Categoria: " . $categoria . "


"; $html .= "
"; $html .= ""; $html .= "

"; $html .= "
"; $html .= ""; $html .= "
"; $msg = ["title" => "Sucesso!", "html" => $html, "icon" => "success", "showCloseButton" => true, "onClose" => "copyInformation()"]; echo ""; } } $hora_atual = date("H"); if (0 <= $hora_atual && $hora_atual < 5) { $saudacao = "Boa madrugada"; } else { if (5 <= $hora_atual && $hora_atual < 12) { $saudacao = "Bom dia"; } else { if (12 <= $hora_atual && $_atual < 18) { $saudacao = "Boa tarde"; } else { $saudacao = "Boa noite"; } } } echo "\r\n\r\n\r\n\r\n\r\n\r\n"; include "../../header.php"; echo "\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n "; include "../../menu.php"; echo " \r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n

Gerar Teste

\r\n
\r\n
\r\n \r\n \r\n "; if (isset($_SESSION["error"])) { echo ""; unset($_SESSION["error"]); } echo " \r\n "; $randomString = generaterandomstring(6); $login = "teste" . substr($randomString, 4); $senha = "1234" . substr($randomString, ); echo "\r\n\r\n \r\n
\r\n \r\n Categorias\r\n
\r\n
\r\n \r\n
\r\n Login\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Senha\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n Limite\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Minutos de acesso\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n\r\n

\r\n\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n"; function generateRandomString($length) { $letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $numbers = "0123456789"; $randomString = ""; for ($i = 0; $i < 3; $i++) { $randomString .= $letters[rand(0, strlen($letters) - 1)]; } for ($i = 0; $i < 3; $i++) { $randomString .= $numbers[rand(0, strlen($numbers) - 1)]; } return $randomString; } ?>