Changes for version 3.022 - 2026-08-25

  • Hardened the helper script defaults for the built-in WebDyne indexer. webdyne.psgi, webdyne.pagi, and webdyne.apache now leave index handling disabled by default unless DOCUMENT_DEFAULT, a user option file, or an explicit --index option enables it.
  • Added WEBDYNE_INDEX_SOURCE_ENABLE and --view-source support for the helper scripts. The built-in index page source viewer is now disabled unless both index handling and source viewing are explicitly enabled, preserving the directory listing/debugging workflow without exposing page source by default.
  • Added PSGI and PAGI application builder support for wrapper-style initialization, including optional static handling and document-root .webdyne.conf.pl loading via the new constructor options. The helper scripts now opt in to this behaviour while direct WebDyne::PSGI->new(...)->to_app and WebDyne::PAGI->new(...)->to_app construction retains conservative defaults.
  • Fixed PSGI API fallback path traversal by rejecting dot path segments before route discovery and verifying discovered API files remain inside the document root using canonical relative-path checks. Added regression coverage for traversal attempts and normal API routing.
  • Restored end-of-string matching for WebDyne PSP filenames so files such as report.psp.pdf are not treated as executable PSP pages. This fixes a double-extension execution regression introduced when WEBDYNE_PSP_EXT became configurable.
  • Re-enabled CGI form value escaping by default and fixed the WebDyne::HTML::Tiny entity encoder override so WEBDYNE_CGI_AUTOESCAPE works as documented. Sticky text, password, and file form fields now escape request-derived values before rendering them into HTML attributes.
  • Applied automatic HTML escaping to request, environment, and method substitution operators (+{...}, *{...}, and ^{...}) when WEBDYNE_CGI_AUTOESCAPE is enabled. The raw ${...} substitution operator remains available for trusted, already-rendered values.
  • Added secure session cookie defaults and configuration constants for Secure, HttpOnly, and SameSite attributes. WebDyne sessions now emit Secure, HttpOnly, and SameSite=Lax cookies by default, with documented constants for deployments that need to adjust those attributes.
  • Preserved <start_html> shortcut version overrides and added regression coverage for local-configuration isolation so tests are not affected by a developer's document-root .webdyne.conf.pl.
  • Updated the XML documentation, markdown sidecars, MANIFEST, and test suite for the new helper defaults, index source controls, escaping behaviour, PSP extension matching, PSGI/PAGI initialization, API traversal checks, and session cookie flags.

Documentation

Install or uninstall WebDyne Apache configuration files
parse and display internal data representation of WebDyne files
enable or disable debugging in the WebDyne packages
dump the data structure of a WebDyne page in the cache directory
check Perl syntax embedded in a WebDyne file
parse and render WebDyne files

Modules

Primary runtime module for the WebDyne framework, with support for standalone .psp to HTML rendering
Provides abstracted access to GET and POST parameters and file upload objects.
CGI-style parameter wrapper used by WebDyne request handling
WebDyne module to cache dynamic output for improved performance.
WebDyne chaining module, allows extension of base WebDyne handler pipeline with additional modules.
constant namespace for WebDyne::Chain
compiler for WebDyne .psp source files
WebDyne module that sets constants and defaults for WebDyne processing
error rendering and eval-error support for WebDyne
error-template and low-level error-mode constants for WebDyne
request and response filter module for the WebDyne handler chain
request and response filter callback constants for WebDyne
HTML::Tiny subclass with WebDyne page and form helpers
HTML::TreeBuilder subclass used by the WebDyne compiler
WebDyne handler module, forces use non-chained WebDyne handler.
base installation helper for WebDyne cache setup
Apache configuration installer for WebDyne
Apache-install discovery and template constants for WebDyne
installer defaults used by WebDyne installation helpers
PAGI application wrapper for WebDyne
PAGI runtime constants for WebDyne
PSGI application wrapper for WebDyne
PSGI runtime constants for WebDyne
Apache mod_perl request adapter for WebDyne
helper functions for building normalized WebDyne request adapters
synthetic request/response object used for direct WebDyne rendering
PAGI request adapter for WebDyne
PSGI request adapter for WebDyne
request-adapter constants for the PSGI request layer
simple static-file responder for WebDyne PSGI request flows
simple session-cookie module for the WebDyne handler chain
session-cookie constants for WebDyne
WebDyne module to flag pages as static and compile once to HTML
wrapper-template module for embedding WebDyne page output
debugging and error-stack utility functions for WebDyne

Provides

in lib/WebDyne/CGI/Simple.pm
in lib/WebDyne/Request/Apache.pm
in lib/WebDyne.pm
in t.error/error_require.pm

Examples