new changes
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
"""YakPanel - FTP API"""
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
import os
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import select, func
|
||||
from pydantic import BaseModel
|
||||
@@ -103,6 +104,25 @@ async def ftp_delete(
|
||||
return {"status": True, "msg": "FTP account deleted"}
|
||||
|
||||
|
||||
@router.get("/logs")
|
||||
async def ftp_logs(
|
||||
lines: int = Query(default=200, ge=1, le=5000),
|
||||
current_user: User = Depends(get_current_user),
|
||||
):
|
||||
"""Tail common Pure-FTPd log paths if readable (non-destructive)."""
|
||||
candidates = [
|
||||
"/var/log/pure-ftpd/pure-ftpd.log",
|
||||
"/var/log/pureftpd.log",
|
||||
"/var/log/messages",
|
||||
]
|
||||
for path in candidates:
|
||||
if os.path.isfile(path):
|
||||
out, err = exec_shell_sync(f'tail -n {int(lines)} "{path}" 2>/dev/null', timeout=15)
|
||||
text = (out or "") + (err or "")
|
||||
return {"path": path, "content": text[-800000:] or "(empty)"}
|
||||
return {"path": None, "content": "No known FTP log file found on this server."}
|
||||
|
||||
|
||||
@router.get("/count")
|
||||
async def ftp_count(
|
||||
current_user: User = Depends(get_current_user),
|
||||
|
||||
Reference in New Issue
Block a user