#!/usr/bin/env python3
from pathlib import Path
from datetime import datetime
p=Path('/srv/apps/sotlab-users/sotlab_users_app.py')
s=p.read_text()
bak=p.with_name(p.name + '.bak.music-post-proxy.' + datetime.now().strftime('%Y%m%d%H%M%S'))
bak.write_text(s)
old = """        svc = self.protected_service()
        if svc and path == '/login':
            p, err = authenticate(fields.get('username','').strip().lower(), fields.get('password',''), svc[0])
            if not p:
                self.send_html(render_login(svc[1], err, fields.get('next','/')), 401); return
            self.set_session_and_redirect(p['username'], fields.get('next','/') or '/')
            return
        if path == '/enrol':
"""
new = """        svc = self.protected_service()
        if svc and path == '/login':
            p, err = authenticate(fields.get('username','').strip().lower(), fields.get('password',''), svc[0])
            if not p:
                self.send_html(render_login(svc[1], err, fields.get('next','/')), 401); return
            self.set_session_and_redirect(p['username'], fields.get('next','/') or '/')
            return
        if svc:
            service_key, service_label, root = svc
            username = read_session(self.headers.get('Cookie'))
            ok, reason = user_can_access(username, service_key)
            if not ok:
                self.send_html(render_login(service_label, reason, self.path), 401); return
            if isinstance(root, str) and root.startswith('http://'):
                self.proxy_to_local(root); return
            self.send_html(page('Not found', '<section class="panel"><h1>Not found</h1></section>'), 404); return
        if path == '/enrol':
"""
if old not in s:
    raise SystemExit('do_POST protected block not found')
p.write_text(s.replace(old,new))
print(f'backup={bak}')
