diff options
| author | WebX11 SysOp <darkmotox11@gmail.com> | 2026-11-05 22:26:25 +0100 |
|---|---|---|
| committer | WebX11 SysOp <darkmotox11@gmail.com> | 2026-11-05 22:26:25 +0100 |
| commit | 2efbcea4785402134c4db09d3febda0e82aab71e (patch) | |
| tree | 23b58bb76090bba34a88f46ab841cd64425d124c /modules/test/test-memory-graph-recovery.js | |
| parent | 4f279d975c8aa55f44934a2ab6af67ebd3f7d454 (diff) | |
feat(git): contrib push surface with automated moderation
Users push to push.newos.webx11.duckdns.org with a per-user token; the read-only
host is untouched. http.receivepack is unset so git only allows receive-pack when
REMOTE_USER is present, which only that vhost sets. A pre-receive hook (installed
by the publisher every run) allows refs/heads/contrib/* only and refuses banned
paths, credential-shaped blobs, >200 files or >2MB, logging user+ref+decision.
moderate-contrib.py triages every 10 min: deletes hard violations, stamps the
rest ready-docs/review/stale into a queue rendered at /admin/git-contrib.html.
A human still decides what merges.
Verified end to end: contrib push accepted, main refused, credential file
refused, accepted ref visible on the read-only host; guard extended (push host
401, hook present+executable, receivepack unset) and proven RED by removing the
hook.
Diffstat (limited to 'modules/test/test-memory-graph-recovery.js')
0 files changed, 0 insertions, 0 deletions