add debug logs
This commit is contained in:
parent
48520621e5
commit
8a88b1aba0
40
main.py
40
main.py
@ -4,12 +4,15 @@ FastAPI server for the VPN Access Server.
|
|||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
import os
|
import os
|
||||||
|
import logging
|
||||||
from fastapi import FastAPI, HTTPException
|
from fastapi import FastAPI, HTTPException
|
||||||
from fastapi.responses import FileResponse
|
from fastapi.responses import FileResponse
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from util.client.generate_client import generate_client_config
|
from util.client.generate_client import generate_client_config
|
||||||
from util.email import send_vpn_config
|
from util.email import send_vpn_config
|
||||||
|
from access.config import config
|
||||||
|
from access.utils import setup_logging
|
||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="VPN Access Server API",
|
title="VPN Access Server API",
|
||||||
@ -17,6 +20,16 @@ app = FastAPI(
|
|||||||
version="1.0.0",
|
version="1.0.0",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Set up logging - use local logs directory if system log path is not writable
|
||||||
|
log_file = config.server.log_file
|
||||||
|
if log_file and not os.path.exists(os.path.dirname(log_file)):
|
||||||
|
log_file = "logs/vpn-access-server.log"
|
||||||
|
|
||||||
|
logger = setup_logging(
|
||||||
|
log_level=config.server.log_level,
|
||||||
|
log_file=log_file
|
||||||
|
)
|
||||||
|
|
||||||
class ClientRequest(BaseModel):
|
class ClientRequest(BaseModel):
|
||||||
username: str
|
username: str
|
||||||
email: str
|
email: str
|
||||||
@ -32,29 +45,54 @@ def generate_client(request: ClientRequest):
|
|||||||
3. Save the file to the server's client configuration directory.
|
3. Save the file to the server's client configuration directory.
|
||||||
4. Send the .ovpn file and user guide via email to the provided email address.
|
4. Send the .ovpn file and user guide via email to the provided email address.
|
||||||
"""
|
"""
|
||||||
|
logger.info(f"Client generation request for user: {request.username}, email: {request.email}")
|
||||||
|
|
||||||
success, message = generate_client_config(request.username, request.email)
|
success, message = generate_client_config(request.username, request.email)
|
||||||
if not success:
|
if not success:
|
||||||
|
logger.error(f"Client generation failed for user {request.username}: {message}")
|
||||||
raise HTTPException(status_code=500, detail=message)
|
raise HTTPException(status_code=500, detail=message)
|
||||||
|
|
||||||
|
logger.info(f"Client generation successful for user {request.username}: {message}")
|
||||||
|
|
||||||
|
# Check if email configuration is valid
|
||||||
|
if not config.email.smtp_username or not config.email.smtp_password:
|
||||||
|
logger.warning(f"Email not configured - skipping email send for user {request.username}")
|
||||||
|
return {
|
||||||
|
"message": f"{message} Note: Email not sent - SMTP credentials not configured in .env file.",
|
||||||
|
"email_sent": False,
|
||||||
|
"warning": "Configure SMTP_USERNAME and SMTP_PASSWORD in .env to enable email notifications"
|
||||||
|
}
|
||||||
|
|
||||||
# Send email with VPN config and user guide
|
# Send email with VPN config and user guide
|
||||||
vpn_config_path = os.path.join("generated-clients", f"{request.username}.ovpn")
|
vpn_config_path = os.path.join("generated-clients", f"{request.username}.ovpn")
|
||||||
user_guide_path = "material/sample-ppt.pptx"
|
user_guide_path = "material/sample-ppt.pptx"
|
||||||
|
|
||||||
|
logger.info(f"Attempting to send email to {request.email} for user {request.username}")
|
||||||
|
|
||||||
|
try:
|
||||||
email_success = send_vpn_config(
|
email_success = send_vpn_config(
|
||||||
to_email=request.email,
|
to_email=request.email,
|
||||||
username=request.username,
|
username=request.username,
|
||||||
vpn_config_path=vpn_config_path,
|
vpn_config_path=vpn_config_path,
|
||||||
user_guide_path=user_guide_path
|
user_guide_path=user_guide_path
|
||||||
)
|
)
|
||||||
|
except Exception as e:
|
||||||
|
# Email sending failed with exception
|
||||||
|
logger.error(f"Email sending failed for user {request.username}: {str(e)}")
|
||||||
|
return {
|
||||||
|
"message": f"{message} Warning: Failed to send email - {str(e)}",
|
||||||
|
"email_sent": False
|
||||||
|
}
|
||||||
|
|
||||||
if not email_success:
|
if not email_success:
|
||||||
# Configuration was generated successfully, but email failed
|
# Configuration was generated successfully, but email failed
|
||||||
# Return success with warning about email
|
logger.warning(f"Email sending returned false for user {request.username}")
|
||||||
return {
|
return {
|
||||||
"message": f"{message} Warning: Failed to send email with configuration files.",
|
"message": f"{message} Warning: Failed to send email with configuration files.",
|
||||||
"email_sent": False
|
"email_sent": False
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.info(f"Email sent successfully to {request.email} for user {request.username}")
|
||||||
return {
|
return {
|
||||||
"message": f"{message} Configuration files sent to {request.email}",
|
"message": f"{message} Configuration files sent to {request.email}",
|
||||||
"email_sent": True
|
"email_sent": True
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user