Skip to content

Latest commit

 

History

History
44 lines (34 loc) · 1.15 KB

File metadata and controls

44 lines (34 loc) · 1.15 KB

🌐 日本語 | ← Back to README

Plugins

Drop a plugin directory into plugins/<name>/. H-awk auto-discovers and loads plugins at startup.

# plugins/logger/manifest.awk
function plugin_logger_manifest(meta) {
  meta["name"]        = "logger"
  meta["version"]     = "0.1.0"
  meta["description"] = "Per-request stdout logger"
  meta["hooks"]       = "post_request"
}
# plugins/logger/logger.awk
function plugin_logger_post_request(req, res) {
  log_info(sprintf("%s %s %d", req["method"], req["path"], res["status"]))
}

Plugin hooks

Hook Signature Notes
init (meta) Called once at startup
pre_request (req, res) Before dispatch; return 1 to short-circuit
post_request (req, res) After response is sent
shutdown (meta) Called once at teardown

Disable a plugin without removing it:

touch plugins/logger/.disabled

Plugins are distributed as standalone git repositories and added via git submodule:

git submodule add https://github.com/<owner>/hawk-plugin-csrf plugins/csrf
git submodule update --init plugins/csrf