This commit is contained in:
2025-11-02 11:14:40 +01:00
parent 6cfccbefd2
commit 8f5c0a5016
13 changed files with 84 additions and 118 deletions

View File

@@ -29,6 +29,9 @@ logger = logging.getLogger(__name__)
class ASEHandler(FTPHandler):
"""Custom FTP handler that extends FTPHandler with custom commands and file handling."""
# Permetti connessioni dati da indirizzi IP diversi (importante per NAT/proxy)
permit_foreign_addresses = True
def __init__(self: object, conn: object, server: object, ioloop: object = None) -> None:
"""Initializes the handler, adds custom commands, and sets up command permissions.
@@ -155,13 +158,27 @@ def main():
handler = ASEHandler
handler.cfg = cfg
handler.authorizer = authorizer
handler.masquerade_address = cfg.proxyaddr
# Set masquerade address only if configured (importante per HA con VIP)
# Questo è l'IP che il server FTP pubblicherà ai client per le connessioni passive
if cfg.proxyaddr and cfg.proxyaddr.strip():
handler.masquerade_address = cfg.proxyaddr
logger.info(f"FTP masquerade address configured: {cfg.proxyaddr}")
else:
logger.info("FTP masquerade address not configured - using server's default IP")
# Set the range of passive ports for the FTP server
_range = list(range(cfg.firstport, cfg.firstport + cfg.portrangewidth))
handler.passive_ports = _range
passive_ports_range = list(range(cfg.firstport, cfg.firstport + cfg.portrangewidth))
handler.passive_ports = passive_ports_range
# Log configuration
logger.info(f"Starting FTP server on port {cfg.service_port} with DatabaseAuthorizer")
logger.info(
f"FTP passive ports configured: {cfg.firstport}-{cfg.firstport + cfg.portrangewidth - 1} "
f"({len(passive_ports_range)} ports)"
)
logger.info(f"FTP permit_foreign_addresses: {handler.permit_foreign_addresses}")
logger.info(f"Database connection: {cfg.dbuser}@{cfg.dbhost}:{cfg.dbport}/{cfg.dbname}")
# Create and start the FTP server
server = FTPServer(("0.0.0.0", cfg.service_port), handler)