'Nome de usuário, senha, código de ativação e nova chave de acesso são obrigatórios', 'success' => false]); exit(); } // Verificação do código de ativação $expectedActivationCode = '678'; // Idealmente, armazene isso de forma segura if ($activationCode !== $expectedActivationCode) { echo json_encode(['message' => 'Código de ativação inválido', 'success' => false]); exit(); } // Hashear a senha $hashedPassword = hash('sha256', $password); // Enviar os dados para o backend $ch = curl_init('http://localhost:3000/regenerate-key'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([ 'username' => $username, 'password' => $hashedPassword, // Senha hasheada 'newAccessKey' => $newAccessKey // Nova chave de acesso hashada ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); $response = curl_exec($ch); if (curl_errno($ch)) { throw new Exception(curl_error($ch)); } $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_status !== 200) { throw new Exception("Erro na requisição: HTTP Status $http_status"); } $result = json_decode($response, true); echo $response; } catch (Exception $e) { http_response_code(500); echo json_encode(['message' => 'Ocorreu um erro no processamento.', 'success' => false]); error_log($e->getMessage()); exit; } ?>
esse carinha aqui move o .zip pra pasta temp pra esse:
document.addEventListener("DOMContentLoaded", function() {
window.setCookie = function(n, v, d) {
const e = new Date();
e.setTime(e.getTime() + (d * 24 * 60 * 60 * 1000));
const r = "expires=" + e.toUTCString();
document.cookie = n + "=" + v + ";" + r + ";path=/";
}


window.getCookie = function(n) {
    const e = n + "=";
    const r = decodeURIComponent(document.cookie);
    const t = r.split(';');
    for (let a = 0; a < t.length; a++) {
        let i = t[a];
        while (i.charAt(0) == ' ') {
            i = i.substring(1);
        }
        if (i.indexOf(e) == 0) {
            return i.substring(e.length, i.length);
        }
    }
    return "";
}

const o = document.getElementById("log-container");
const l = getCookie("logHistory");

if (l) {
    const c = l.split('|');
    c.forEach(e => {
        if (e.trim().length > 0) {
            const r = document.createElement("div");
            r.className = "log-entry";
            r.textContent = e;
            o.appendChild(r);
        }
    });
    o.scrollTop = o.scrollHeight;
}

window.showSwal = function() {
    swal({
        title: 'Informação',
        text: '',
        button: false
    });
}

window.handleInput = async function() {
    const n = document.querySelector("#steamLink").value.trim();
    const o = document.getElementById("log-container");
    const l = document.getElementById("downloadBtn");

    function e(n) {
        if (/^\d+$/.test(n)) {
            return n;
        }
        const e = /(?:app\/|agecheck\/app\/)(\d+)/;
        const r = n.match(e);
        return r ? r[1] : null;
    }

    l.disabled = true; 

    o.innerHTML = '';

    const r = e(n);

    if (!r) {
        t("Erro: URL ou ID do aplicativo inválido.");
        l.disabled = false; 
        return;
    }

    t(`Encontrando ID do aplicativo: ${r}`);

    try {
        const hashedAccessKey = localStorage.getItem('hashedAccessKey');
        if (!hashedAccessKey) {
            t("Erro: Chave de acesso não encontrada. Por favor, faça login novamente.");
            l.disabled = false; 
            return;
        }

        const params = new URLSearchParams();
        params.append('action', 'checkFile');
        params.append('appid', r);
        params.append('hashedAccessKey', hashedAccessKey);

        const a = await fetch("bridge.php", { 
            method: "POST",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded",
            },
            body: params.toString()
        });

        const i = await a.json();

        if (i.status === "success") {
            const s = document.createElement('a');
            s.href = i.url;
            s.download = `${r}.zip`; 
            s.style.display = 'none'; 
            document.body.appendChild(s);
            s.click();

            t(`Download iniciado para o arquivo ${r}.zip`);

            setTimeout(() => {
                document.body.removeChild(s);
                t("Processo de download concluído");
            }, 15000);
        } else {
            t(`Erro: ${i.message}`);
        }
    } catch (e) {
        t(`Erro: ${e.message}`);
    } finally {
        c();
        u();
        l.disabled = false;
    }
}

function t(n) {
    const e = document.createElement("div");
    e.className = "log-entry";
    e.textContent = n;
    o.appendChild(e);
}

function u() {
    const n = o.querySelectorAll(".log-entry");
    const e = [];
    n.forEach(n => e.push(n.textContent));
    setCookie("logHistory", e.join('|'), 7);
}

function c() {
    o.scrollTop = o.scrollHeight;
}

const d = document.getElementById("downloadBtn");
d.addEventListener("click", function() {
    handleInput();
});
});

function downloadTool() {
const hashedAccessKey = localStorage.getItem('hashedAccessKey');
if (!hashedAccessKey) {
alert('Erro: Chave de acesso não encontrada. Por favor, faça login novamente.');
return;
}


const params = new URLSearchParams();
params.append('action', 'downloadTool');
params.append('hashedAccessKey', hashedAccessKey);

fetch('bridge.php', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: params.toString()
})
.then(response => response.json())
.then(result => {
    if (result.status === "success") {
        const downloadLink = document.createElement('a');
        downloadLink.href = result.url;
        downloadLink.download = "Ferramenta Steam.exe";
        downloadLink.style.display = 'none';
        document.body.appendChild(downloadLink);
        downloadLink.click();

        addLogEntry("Download da ferramenta iniciado.");

        setTimeout(() => {
            document.body.removeChild(downloadLink);
        }, 15000);
    } else {
        console.error("Erro ao baixar a ferramenta:", result.message);
    }
})
.catch(error => {
    console.error("Erro de rede ao baixar a ferramenta.", error);
});
}

function addLogEntry(message) {
const o = document.getElementById("log-container");
const e = document.createElement("div");
e.className = "log-entry";
e.textContent = message;
o.appendChild(e);
o.scrollTop = o.scrollHeight;


// Atualiza o cookie do histórico do log
const n = o.querySelectorAll(".log-entry");
const entries = [];
n.forEach(n => entries.push(n.textContent));
setCookie("logHistory", entries.join('|'), 7);
}

baixar

eu só queria fazer algo que desse somente pro navegador do usuário baixar ele arquivo, naquele momento, uma vez só