#!/usr/bin/env python3
"""
Syslog forwarder: receives datagrams from /dev/log and writes each
directly to /proc/1/fd/2 (container stderr) with zero buffering.

This bypasses supervisor's pipe buffering so each Drupal syslog entry
appears as its own CloudWatch log event immediately.
"""
import socket
import os
import sys

SOCKET_PATH = '/dev/log'
STDERR_FD = '/proc/1/fd/2'

# Remove stale socket
try:
    os.unlink(SOCKET_PATH)
except OSError:
    pass

# Create Unix datagram socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
sock.bind(SOCKET_PATH)
os.chmod(SOCKET_PATH, 0o666)

# Open container stderr (unbuffered)
out = open(STDERR_FD, 'wb', 0)

while True:
    try:
        data = sock.recv(65536)
        if data:
            out.write(data + b'\n')
    except Exception as e:
        sys.stderr.write(f'syslog-forward error: {e}\n')
