from pathlib import Path
import secrets, subprocess, shutil
p=Path('/etc/caddy/Caddyfile')
original=p.read_text()
assert 'higgsfield.archivedpiece.com {' not in original
password=secrets.token_urlsafe(24)
login=Path('/root/workspace/higgsfield-login.txt')
login.touch(mode=0o600, exist_ok=False)
login.write_text('URL: https://higgsfield.archivedpiece.com\nUsername: studio\nPassword: '+password+'\n')
hash_value=subprocess.check_output(['caddy','hash-password','--plaintext',password],text=True).strip()
shutil.copy2(p, '/etc/caddy/Caddyfile.before-higgsfield')
candidate=Path('/root/workspace/Caddyfile.higgsfield')
candidate.write_text(original+'\n\nhiggsfield.archivedpiece.com {\n\tbasicauth {\n\t\tstudio '+hash_value+'\n\t}\n\treverse_proxy 127.0.0.1:3000\n}\n')
subprocess.run(['caddy','validate','--config',str(candidate),'--adapter','caddyfile'],check=True)
shutil.copyfile(candidate,p)
try:
 subprocess.run(['systemctl','reload','caddy'],check=True)
except Exception:
 p.write_text(original)
 raise
print('Proxy installed; login saved to protected higgsfield-login.txt')
