diff --git a/src/main.mjs b/src/main.mjs new file mode 100644 index 0000000..e0a0876 --- /dev/null +++ b/src/main.mjs @@ -0,0 +1,84 @@ +import express from 'express'; +import bodyParser from 'body-parser'; +import cors from 'cors'; +import axios from 'axios'; +import { dentroHorarioExpediente } from './utils.mjs'; + +const PORT = 3000; + +const app = express(); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); +app.use(cors()); + +// Rota para verificar status do dispositivo +app.get('/status/:serialNumber', async (req, res) => { + if (!dentroHorarioExpediente()) { + return res.status(200).json({ + error: "Fora do horĂ¡rio de expediente (07:30 - 17:30)", + permitido: false + }); + } + + const { serialNumber } = req.params; + let sendData = `tipo=verificarStatusEvo&sn=${serialNumber}`; + + let config = { + method: 'post', + maxBodyLength: Infinity, + url: 'https://ponteiro.online/Painel/Ajax', + headers: { + 'Accept': 'application/json, text/javascript, */*; q=0.01', + 'Accept-Language': 'pt-BR,pt;q=0.9', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'Origin': 'https://ponteiro.online', + 'Referer': 'https://ponteiro.online/Painel/DispositivoFacial/GetColaboradores/AYTC09023967', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'same-origin', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36', + 'X-Requested-With': 'XMLHttpRequest', + 'sec-ch-ua': '"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"Windows"', + 'Cookie': '_ga=GA1.2.1400579672.1762457415; _ga_CX37L3HT33=GS2.1.s1762517686$o2$g0$t1762517686$j60$l0$h0; PHPSESSID=55e0e1pes0u7hvida0eo9vgcf5; TawkConnectionTime=0; twk_uuid_5c87c6c4c37db86fcfcd5d3d=%7B%22uuid%22%3A%221.Ws3HlUz9SMuNtJ588HwbPzJoxT6Ym4uaMb2CeGR4vOCyNX03GtUb34AHmofIelEm6hiCzBPi89eDCX86ONCPS8NOzV3vKb4mzh5aV8aKL5EJJ8ibEkH4zsPka%22%2C%22version%22%3A3%2C%22domain%22%3A%22ponteiro.online%22%2C%22ts%22%3A1764702005679%7D; PHPSESSID=g2j2ktahk0ljcift84ultucl87' + }, + data: sendData + }; + + try { + const response = await axios.request(config); + + const data = response.data; + + if (data.ativo === true) { + return res.status(200).json({ + status: 'online', + sn: data.sn + }) + } + + if (data.ativo === false) { + return res.status(503).json({ + status: 'offline', + sn: data.sn + }) + } + + return res.status(500).json({ + error: 'Resposta inesperada da API externa', + data + }) + } catch (error) { + console.error("Erro na API:", error); + return res.status(500).json({ + error: "Erro ao consultar API externa", + details: error.message + }); + } +}); + +app.listen(PORT, () => { + console.log(`API rodando na porta ${PORT}`); +});