feat: redis integration

This commit is contained in:
forust committed 2025-11-26 20:53:53 +01:00
1 parent 7cbc5bf4f3
commit bfbe841154
4 files changed
+80 -17

No files matched your search

+4 -1
View File
@@ -2,8 +2,11 @@ FROM python:3.11-slim
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y redis-tools && rm -rf /var/lib/apt/lists/*
# Install dependencies
RUN pip install requests
RUN pip install requests redis
# Copy application code
COPY . .
+23 -8
View File
@@ -2,6 +2,7 @@ import os
import time
import requests
import logging
import redis
from datetime import datetime
# Configure logging
@@ -16,9 +17,10 @@ LOGIN = os.getenv('EDU_LOGIN')
PASSWORD = os.getenv('EDU_PASSWORD')
URL_LOGIN = os.getenv('EDU_URL_LOGIN', 'https://edu.edu.vn.ua/user/login')
URL_VERIFY = os.getenv('EDU_URL_VERIFY', 'https://edu.edu.vn.ua/course/userlist')
INTERVAL = int(os.getenv('EDU_INTERVAL', 10))
USER_AGENT = os.getenv('EDU_USER_AGENT', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36')
INITIAL_PHPSESSID = os.getenv('EDU_PHPSESSID')
INTERVAL = int(os.getenv('PHPSESSID_INTERVAL', 10))
USER_AGENT = os.getenv('USER_AGENT', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36')
REDIS_HOST = os.getenv('REDIS_HOST', 'redis')
REDIS_PORT = int(os.getenv('REDIS_PORT', 6379))
SUCCESS_FILE = '/tmp/last_success'
@@ -33,6 +35,15 @@ def touch_success_file():
def main():
logger.info("Starting Session Keeper Bot")
# Connect to Redis
try:
redis_client = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, decode_responses=True)
redis_client.ping()
logger.info(f"Connected to Redis at {REDIS_HOST}:{REDIS_PORT}")
except Exception as e:
logger.error(f"Failed to connect to Redis: {e}")
return
session = requests.Session()
# Set headers
@@ -54,11 +65,6 @@ def main():
}
session.headers.update(headers)
# If an initial PHPSESSID is provided, set it in the session
if INITIAL_PHPSESSID:
logger.info(f"Setting initial PHPSESSID: {INITIAL_PHPSESSID}")
session.cookies.set('PHPSESSID', INITIAL_PHPSESSID, domain='edu.edu.vn.ua')
while True:
try:
logger.info("Attempting login...")
@@ -88,6 +94,15 @@ def main():
if verify_response.status_code == 200:
logger.info("Session verification SUCCESS (200 OK).")
touch_success_file()
# Save PHPSESSID to Redis
phpsessid = session.cookies.get('PHPSESSID')
if phpsessid:
try:
redis_client.set('EDU_PHPSESSID', phpsessid)
logger.info(f"Saved PHPSESSID to Redis: {phpsessid}")
except Exception as e:
logger.error(f"Failed to save PHPSESSID to Redis: {e}")
elif verify_response.status_code == 302:
logger.warning("Session verification FAILED (302 Redirect). Session might be invalid.")
else: