Check-in by ben on 2025-08-01 07:01:15

 When blocking a client from an item detail, link to the original
 web page.

 INSERTED    DELETED
       13          3 src/cgi.awk
        1          1 src/details/index.dcgi.m4
       14          4 TOTAL over 2 changed files

Index: src/cgi.awk
==================================================================
--- src/cgi.awk
+++ src/cgi.awk
@@ -1,6 +1,6 @@
-function block_msg(ip) {
+function block_msg(ip, extra) {
    print "Access Denied"
    print "============="
    print ""
    print "This service only allows access from vetted client IP addresses."
    print "The intent is to thwart abusive bots and crawlers."
@@ -11,14 +11,15 @@
    print "    " contact
    print ""
    print "* Include the word \"friendly\" in your message."
    print ""
    print "Service admin will reply when granted."
+    print extra
    return
}

-function cgi_init(    ip) {
+function cgi_init(     extra, ip) {
    ip = ENVIRON["REMOTE_ADDR"]

    search = ARGV[1]
    arguments = ARGV[2]
    traversal = ARGV[5]
@@ -84,11 +85,20 @@
                break
            }
        }
        close(pass_list)
        if (blocked) {
-            block_msg(ip)
+            extra = ""
+            if (topdir == "details") {
+                extra = "\nIn the meanwhile, see:\n\n" \
+                    sprintf("[h|Web page|URL:%s/details/%s|%s|%s]\n",
+                    api_ssl_endpoint,
+                    uri_encode(parts[3]),
+                    server,
+                    port)
+            }
+            block_msg(ip, extra)
            exit(0)
        }
    }

    return

Index: src/details/index.dcgi.m4
==================================================================
--- src/details/index.dcgi.m4
+++ src/details/index.dcgi.m4
@@ -222,9 +222,9 @@
}

BEGIN {
    config_init()

-    cgi_init()
    uri_encode_init()
+    cgi_init()
    main()
}