#!/usr/bin/env python3
from pathlib import Path
from datetime import datetime
import subprocess, sys
p=Path('/etc/caddy/Caddyfile')
s=p.read_text()
bak=p.with_name('Caddyfile.bak.portal-login-gate.' + datetime.now().strftime('%Y%m%d%H%M%S'))
old='''    @public_portal host sotlab.co.uk www.sotlab.co.uk
    handle @public_portal {
        root * /srv/www/webpi
        file_server
    }
'''
new='''    @public_portal host sotlab.co.uk www.sotlab.co.uk
    handle @public_portal {
        @portal_login path /login /logout
        handle @portal_login {
            reverse_proxy 127.0.0.1:8090
        }

        root * /srv/www/webpi
        file_server
    }
'''
if new in s:
    print('Caddyfile already contains persistent portal login gate block')
elif old in s:
    bak.write_text(s)
    p.write_text(s.replace(old, new))
    print(f'Patched /etc/caddy/Caddyfile; backup={bak}')
else:
    print('ERROR: expected public_portal block not found; not modifying Caddyfile', file=sys.stderr)
    sys.exit(2)
subprocess.run(['caddy','validate','--config','/etc/caddy/Caddyfile'], check=True)
subprocess.run(['systemctl','reload','caddy'], check=True)
print('Caddy validated and reloaded')
