From 7c546ab673f4ba2c6aaff5c9a8f5d3acc7d818fd Mon Sep 17 00:00:00 2001 From: cato447 Date: Sun, 30 Aug 2026 14:25:56 +0200 Subject: [PATCH] added nextloud tracker --- .gitignore | 3 + README.md | 110 ++++++++ ctf-status.service | 12 + ctf-status.timer | 13 + ctf_status.env.example | 14 + ctf_status.py | 618 +++++++++++++++++++++++++++++++++++++++++ install-timer.sh | 35 +++ 7 files changed, 805 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 ctf-status.service create mode 100644 ctf-status.timer create mode 100644 ctf_status.env.example create mode 100755 ctf_status.py create mode 100755 install-timer.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..276e14a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +__pycache__/ +ctf_status.env +*.md.out diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f4cd79 --- /dev/null +++ b/README.md @@ -0,0 +1,110 @@ +# ctf_status.py + +Reads the per-author challenge folders straight off the Nextcloud share (WebDAV, +no sync, no mount) and tells you who to scream at. + +## Setup + +```sh +cp ctf_status.env.example ctf_status.env && chmod 600 ctf_status.env +$EDITOR ctf_status.env # app password from Nextcloud → Settings → Security +``` + +## Use + +```sh +./ctf_status.py # terminal summary +./ctf_status.py -o overview.md # + HedgeDoc markdown to a file +./ctf_status.py --stdout | wl-copy # straight to clipboard, paste into HedgeDoc +./ctf_status.py --update # overwrite the note in HEDGEDOC_NOTE +./ctf_status.py --update # ... or an explicit one +``` + +## Keeping a HedgeDoc note up to date + +`--update` overwrites an **existing** note in place, so the URL you share stays the +same. Every run rewrites the whole body, starting with + +``` +--- +tags: Logistics, h4tum CTF 2026 +--- +``` + +and a `**Last updated:**