)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"fe2ccc1ace027210b95603d2311ccb5c94b7e583","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f3a3626c_c1c3597e","updated":"2026-01-27 21:19:59.000000000","message":"I\u0027m willing to try this on this relatively low impact vhost. Worst case we disable the mod security rules and reenable things more carefully. But this seems like it should be safe and hopefully sufficient for the bots to find but browsers and humans to ignore.","commit_id":"a571b689006aac6e545fceba68386ca5950f90c7"}],"playbooks/roles/static/files/50-docs.opendev.org.conf":[{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"f03cb23d129decf5d94b8aa6b94dc8e02e5f90cd","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        AllowOverrideList Redirect RedirectMatch"},{"line_number":50,"context_line":"        ErrorDocument 404 /errorpage.html"},{"line_number":51,"context_line":"        AddOutputFilter Sed html"},{"line_number":52,"context_line":"        OutputSed \"s,\u003cbody\u003e,\u003cbody\u003e\u003c!-- Following this URL will block your access for a day: https://%{HTTP_HOST}/83572085-b2cf-4be3-b8ed-abff38714d87.html --\u003e,\""},{"line_number":53,"context_line":"    \u003c/Directory\u003e"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    ErrorLog /var/log/apache2/docs.opendev.org_error.log"}],"source_content_type":"text/plain","patch_set":3,"id":"2ff91e1e_8d4a9120","line":52,"updated":"2026-01-27 23:20:52.000000000","message":"Apparently `%{HTTP_HOST}` is getting embedded literally and not interpreted, so I have to figure out how to avoid repeating the hostname here, ideally.","commit_id":"b276228ca497ce85e8960753d176a5e464b30bf0"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"dab07c13606da3aa010a8ab1430713b7bc125b4e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        AllowOverrideList Redirect RedirectMatch"},{"line_number":50,"context_line":"        ErrorDocument 404 /errorpage.html"},{"line_number":51,"context_line":"        AddOutputFilter Sed html"},{"line_number":52,"context_line":"        OutputSed \"s,\u003cbody\u003e,\u003cbody\u003e\u003c!-- Following this URL will block your access: https://\"%{HTTP_HOST}\"/83572085-b2cf-4be3-b8ed-abff38714d87.html --\u003e,\""},{"line_number":53,"context_line":"    \u003c/Directory\u003e"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    ErrorLog /var/log/apache2/docs.opendev.org_error.log"}],"source_content_type":"text/plain","patch_set":4,"id":"b7706580_c21a5765","line":52,"updated":"2026-01-28 18:51:39.000000000","message":"`OutputSed takes one argument, Sed regular expression for Response`","commit_id":"b8acec2755ae68192e18c15b287509bba582a36b"}],"testinfra/test_static.py":[{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"28abd957484965e4ca5d475670c7c3c9530ee38d","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                   \u0027--resolve docs.opendev.org:443:127.0.0.1 \u0027"},{"line_number":257,"context_line":"                   \u0027https://docs.opendev.org/\u0027)"},{"line_number":258,"context_line":"    assert \u0027200\u0027 in cmd.stdout"},{"line_number":259,"context_line":"    assert \u0027block your access for a day: https://docs.opendev\u0027 in cmd.stdout"},{"line_number":260,"context_line":"    # WAF should deny the request"},{"line_number":261,"context_line":"    cmd \u003d host.run(\u0027curl -s -o /dev/null --write-out \"%{http_code}\\\\n\" \u0027"},{"line_number":262,"context_line":"                   \u0027--resolve docs.opendev.org:443:127.0.0.1 \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"71e8ca15_4594aeda","line":259,"updated":"2026-01-27 21:38:24.000000000","message":"Looks like the --write-out only writes the http_code and nothing else.","commit_id":"a571b689006aac6e545fceba68386ca5950f90c7"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"f09f81658cb9c2636bcf1cb85e122db529e1967f","unresolved":false,"context_lines":[{"line_number":253,"context_line":"def test_docs_opendev_org_waf_rules(host):"},{"line_number":254,"context_line":"    # Check normal functionality before we trip the block rules."},{"line_number":255,"context_line":"    cmd \u003d host.run(\u0027curl --resolve docs.opendev.org:443:127.0.0.1 \u0027"},{"line_number":256,"context_line":"                   \u0027https://docs.opendev.org/\u0027)"},{"line_number":257,"context_line":"    assert \u0027block your access for a day: https://docs.opendev\u0027 in cmd.stdout"},{"line_number":258,"context_line":"    cmd \u003d host.run(\u0027curl -s -o /dev/null --write-out \"%{http_code}\\\\n\" \u0027"},{"line_number":259,"context_line":"                   \u0027--resolve docs.opendev.org:443:127.0.0.1 \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"b74dc766_cc916cfd","line":256,"updated":"2026-01-27 22:54:49.000000000","message":"Aha, this is a generated autoindex not an html file. I\u0027ll pick a deeper URL then.","commit_id":"852aa9891bbe91bb4ba6a969824ee0ad0282a36c"}]}
