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 \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;
}
?>