tebicap's picture
cambio ejecución del script, app.py
f969e71 verified
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import os
import json
import httpx
import subprocess
#import asyncio #alternativa a
#from waitress import serve #alternativa a
#import socket #para funcionalidad ipv6
import aiohttp
#import telebot #https://github.com/eternnoir/pyTelegramBotAPI
app = FastAPI()
# Configurar CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Cargar los códigos y configuración de Telegram desde las variables de entorno
@app.on_event("startup")
async def startup_event():
global codigos, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID
codigos_json = os.environ.get("codigos")
print("codigos recogidos pero no chequeados")
if codigos_json:
codigos = json.loads(codigos_json)
print("Códigos cargados correctamente")
else:
codigos = {}
print("No se encontraron códigos en las variables de entorno")
TELEGRAM_BOT_TOKEN = os.environ.get("T_bot")
TELEGRAM_CHAT_ID = os.environ.get("nroChat")
if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID:
print("Faltan configuraciones de Telegram")
else:
print("Claves de telegram cargados correctamente")
async def send_telegram_message(message):
#envio mensaje por medio de un script externo
subprocess.run(["python", "/code/envia_mensaje.py", message])
#url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
#params = {
# "chat_id": TELEGRAM_CHAT_ID,
# "text": message
#}
# async with httpx.AsyncClient() as client:
# await client.post(url, params=params)
@app.get("/verificar/{codigo}")
async def verificar_codigo(codigo: str):
if codigo in codigos:
if codigos[codigo] > 0:
# Enviar mensaje a Telegram
mensaje = f"Código utilizado: {codigo}\nConsultas restantes: {codigos[codigo]}"
print(f"\nmensaje:")
print(mensaje, end="\n\n")
#await send_telegram_message(mensaje)
#subprocess.run(["python", "envia_mensaje.py", mensaje])
#chequeo a ver si está el scirpt
print("averrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr")
print(os.getcwd())
print(os.listdir())
print("averrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr")
# Ejecuta el script Bash con el mensaje como argumento
result = subprocess.run(["ls"], capture_output=True, text=True)
result = subprocess.run(["./envia_mensaje.sh", mensaje], capture_output=True, text=True)
# Imprime la salida del script Bash
print("STDOUT:", result.stdout)
print("STDERR:", result.stderr)
if result.returncode != 0:
print(f"Ocurrió un Error: {result.returncode}")
return {"mensaje": "código encontrado", "consultas_restantes": codigos[codigo]}
else:
return {"mensaje": "código caducado"}
else:
return {"mensaje": "código no encontrado"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)