Part of #212. Found in review of #369, which lets a tag's canonical_url through; this builds on it.
The canonical URL of a post or a page keeps every rule. The admin sends it as canonical_url whenever it saves a post or a page, at /ghost/api/admin/posts/ID/ and /ghost/api/admin/pages/ID/. Two rules refuse ordinary addresses in it:
in internal/coreruleset/ghost.conf, make json.posts.N.canonical_url and json.pages.N.canonical_url skip 930120 and 932120 under /ghost/api/admin/posts/ and /ghost/api/admin/pages/, as url and a tag's canonical_url do, and only when the query has no field of that name;
record a post saved with such an address, sent to Ghost 6.76.0, in internal/coreruleset/testdata/ghost-requests.txt;
add a test, a narrowness case and a line in SPEC.md.
Model: opus-5-5
Part of https://git.eeqj.de/sneak/smallwebwaf/issues/212. Found in review of https://git.eeqj.de/sneak/smallwebwaf/pulls/369, which lets a tag's `canonical_url` through; this builds on it.
The canonical URL of a post or a page keeps every rule. The admin sends it as `canonical_url` whenever it saves a post or a page, at `/ghost/api/admin/posts/ID/` and `/ghost/api/admin/pages/ID/`. Two rules refuse ordinary addresses in it:
- 932120 refuses `https://example.com/blog/powershell/`;
- 930120 refuses `https://example.com/blog/.htaccess/`.
To fix:
- in `internal/coreruleset/ghost.conf`, make `json.posts.N.canonical_url` and `json.pages.N.canonical_url` skip 930120 and 932120 under `/ghost/api/admin/posts/` and `/ghost/api/admin/pages/`, as `url` and a tag's `canonical_url` do, and only when the query has no field of that name;
- record a post saved with such an address, sent to Ghost 6.76.0, in `internal/coreruleset/testdata/ghost-requests.txt`;
- add a test, a narrowness case and a line in `SPEC.md`.
Model: opus-5-5
#376, branch issue-374-ghost-canonical-url: the canonical URL of a post or a page skips 930120 and 932120, each only on its own path under /ghost/api/admin/posts/ or /ghost/api/admin/pages/. A post save and a page save sent to Ghost 6.76.0 are recorded.
Cut from next alone, since #369 is still open; SPEC.md and ghost_test.go conflict textually with it, and whichever lands second resolves.
Model: opus-5-5
https://git.eeqj.de/sneak/smallwebwaf/pulls/376, branch `issue-374-ghost-canonical-url`: the canonical URL of a post or a page skips 930120 and 932120, each only on its own path under `/ghost/api/admin/posts/` or `/ghost/api/admin/pages/`. A post save and a page save sent to Ghost 6.76.0 are recorded.
- Cut from `next` alone, since https://git.eeqj.de/sneak/smallwebwaf/pulls/369 is still open; `SPEC.md` and `ghost_test.go` conflict textually with it, and whichever lands second resolves.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #212. Found in review of #369, which lets a tag's
canonical_urlthrough; this builds on it.The canonical URL of a post or a page keeps every rule. The admin sends it as
canonical_urlwhenever it saves a post or a page, at/ghost/api/admin/posts/ID/and/ghost/api/admin/pages/ID/. Two rules refuse ordinary addresses in it:https://example.com/blog/powershell/;https://example.com/blog/.htaccess/.To fix:
internal/coreruleset/ghost.conf, makejson.posts.N.canonical_urlandjson.pages.N.canonical_urlskip 930120 and 932120 under/ghost/api/admin/posts/and/ghost/api/admin/pages/, asurland a tag'scanonical_urldo, and only when the query has no field of that name;internal/coreruleset/testdata/ghost-requests.txt;SPEC.md.Model: opus-5-5
#376, branch
issue-374-ghost-canonical-url: the canonical URL of a post or a page skips 930120 and 932120, each only on its own path under/ghost/api/admin/posts/or/ghost/api/admin/pages/. A post save and a page save sent to Ghost 6.76.0 are recorded.nextalone, since #369 is still open;SPEC.mdandghost_test.goconflict textually with it, and whichever lands second resolves.Model: opus-5-5