Static page with one-click copy buttons. No Markdown/JS rendering required.
/var/www/pandawill.net/index.html
/var/www/pandawill.net/sitemap.html
/usr/local/bin/add-service-card
/usr/local/bin/remove-service-card
/usr/local/bin/list-service-cards
/usr/local/bin/rebuild-sitemap
sudo /usr/local/bin/add-service-card "Name" "host.or.url" "Badge"
Example:
sudo /usr/local/bin/add-service-card "qBittorrent" "qbit.pandawill.net" "Torrents"
Duplicate-safe: skips if host already exists; still rebuilds sitemap.
sudo /usr/local/bin/remove-service-card --host "sab.pandawill.net"
sudo /usr/local/bin/remove-service-card --name "Plex"
sudo /usr/local/bin/remove-service-card --url "https://plex.pandawill.net"
index.html
.rebuild-sitemap
after.list-service-cards
Outputs table of Name | URL | Badge.
sudo /usr/local/bin/rebuild-sitemap
Re-extracts cards from index.html
into sitemap.html
. Use if you edit index.html
by hand.
Count cards:
grep -c '<a[^>]*class="[^"]*card\b' /var/www/pandawill.net/index.html
Preview last few cards:
awk -v RS="</a>" '/class="[^"]*card/ {print $0 "\n</a>\n----"}' \
/var/www/pandawill.net/index.html | tail -n 60
Verify sitemap matches homepage:
awk -v RS="</a>" '/class="[^"]*card/ && match($0,/href="([^"]+)"/,m){print m[1] }' \
/var/www/pandawill.net/index.html | sort -u > /tmp/index.links
grep -Eo 'href="https?://[^"]+"' /var/www/pandawill.net/sitemap.html \
| sed -E 's/^href="(https?:\/\/[^"]+)".*$/\1/' \
| sort -u > /tmp/sitemap.links
diff -u /tmp/index.links /tmp/sitemap.links || true
0644
.index.html.bak.YYYYMMDDHHMMSS
.