Comprehensive Reference for SignalDock v2.0.4

Joomla 4 + 5 Webhook Testing Traffic Debugging Ops Controls

SignalDock is a lightweight request listener and traffic debugging component for Joomla. It captures incoming requests, headers, payloads, and response status codes so you can validate webhook and API behavior quickly.

Core capabilities

  • Real-time traffic dashboard for incoming request inspection.
  • Listener ON/OFF control for safe testing windows.
  • Built-in status and response-text mocking for retry/failure testing.
  • Advanced mock controls: delay, format, custom headers, scenario presets.

Security and operations

  • IP allow-list and shared secret protection.
  • Per-IP rate limiting (HTTP 429 when exceeded).
  • Retention + max-log-size pruning controls.
  • Sensitive key masking (password, token, authorization, etc.).

Listener Endpoint

Endpoint
https://protechnow.net/index.php?option=com_signaldock

1. Quick Start

  1. Enable Listener in the Traffic Dashboard.
  2. Send a request to the endpoint shown above.
  3. Open Traffic Dashboard and verify new rows appear in real time.
  4. Use query params to simulate status/error conditions.
  5. Configure secret, allow-list, rate limit, retention, and masking for production-like testing.
Health Check
curl -i "https://protechnow.net/index.php?option=com_signaldock"

2. Request Examples

POST JSON webhook

cURL
curl -X POST "https://protechnow.net/index.php?option=com_signaldock" \ 
-H "Content-Type: application/json" \ 
-d '{"event":"order.created","amount":250.00,"currency":"USD"}'

POST JSON with signature header

cURL
curl -X POST "https://protechnow.net/index.php?option=com_signaldock" \ 
-H "Content-Type: application/json" \ 
-H "X-Signature: sha256=testsignature" \ 
-d '{"event":"subscription.renewed","user_id":42}'

POST form data

cURL
curl -X POST "https://protechnow.net/index.php?option=com_signaldock" \ 
-d "username=admin&token=xyz123&action=delete"

GET with authorization header

cURL
curl -X GET "https://protechnow.net/index.php?option=com_signaldock" \ 
-H "Authorization: Bearer 1a2b3c4d5e6f" \ 
-H "X-Custom-Source: Joomla-App"

3. Error Testing

Use query params to force a status code and optional response text to validate retry/error behavior.

Scenario Status Request
Unauthorized token401...&mock=401
Forbidden source403...&mock=403
Endpoint not found404...&mock=404
Server failure simulation500...&mock=500
Custom error text body500...&mock=500&mock_text=Gateway+timeout+from+upstream

Retry test script (500 then retry)

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&mock=500" 
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
# first call should return 500, second should return 200

Alternate param name

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&status=404"

Custom text response

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&mock=403&mock_text=Access+denied+for+test+key"

4. Response Reference

Success response

Request + Example JSON
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
{"status":200,"capture":"v2.0.4"}

Listener disabled response

Request + Example JSON
# With Listener turned OFF in Traffic Dashboard: 
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
{"status":503,"error":"listener_disabled","capture":"v2.0.4"}

Custom text response

Request + Plain Text
curl -i "https://protechnow.net/index.php?option=com_signaldock&mock=500&mock_text=Gateway+timeout+from+upstream" 
Gateway timeout from upstream

5. Advanced Mocking (v2.0)

Delay response (timeout simulation)

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&mock=504&mock_delay_ms=5000&mock_text=Gateway+Timeout"

Force response format

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&mock=500&mock_text=%3Ch1%3EServer+Error%3C%2Fh1%3E&mock_format=html"

Inject custom response header

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&mock=429&mock_text=Slow+down&mock_header[]=Retry-After: 30"

Scenario presets

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&preset=payment_500" 
curl -i "https://protechnow.net/index.php?option=com_signaldock&preset=auth_401" 
curl -i "https://protechnow.net/index.php?option=com_signaldock&preset=webhook_404"

6. Security and Operations (v2.0)

  • Allowed IPs: set one IP per line in component config to restrict listener access.
  • Shared Secret: set config secret and pass via secret=... or header X-SignalDock-Secret.
  • Rate Limit Per Minute: per-IP request caps return HTTP 429 when exceeded.
  • Log Retention + Max Log Size: automatic pruning controls request log growth.
  • Sensitive Keys To Mask: redact keys like password, token, and authorization.

Allowed IPs: config example

Config
# Settings -> Allowed IPs 
203.0.113.10 
198.51.100.24 
127.0.0.1

Allowed IPs: verification request

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
# From a non-allowed IP, expected: 
# HTTP 403 {"status":403,"error":"ip_not_allowed",...}

Shared secret: query param

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock&secret=YOUR_SECRET_HERE"

Shared secret: header

cURL
curl -i "https://protechnow.net/index.php?option=com_signaldock" \ 
-H "X-SignalDock-Secret: YOUR_SECRET_HERE"

Rate limit per minute: config + test

Config + cURL
# Settings -> Rate Limit Per Minute 
3 
 
# 4 quick requests from same IP: 
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
curl -i "https://protechnow.net/index.php?option=com_signaldock" 
# 4th request expected: HTTP 429 {"status":429,"error":"rate_limited",...}

Log retention + max log size: config example

Config
# Settings values: 
# Log Retention (Days): 7 
# Max Log Size (MB): 5 
# 
# Behavior: 
# - entries older than 7 days are pruned 
# - if log grows above 5MB, oldest entries are trimmed first

Sensitive keys to mask: config example

Config
# Settings -> Sensitive Keys To Mask 
password,token,authorization,api_key,secret,client_secret

Sensitive keys to mask: request example

cURL
curl -X POST "https://protechnow.net/index.php?option=com_signaldock" \ 
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer very-secret-token" \ 
-d '{"username":"admin","password":"P@ssw0rd!","api_key":"abc123"}' 
 
# In Traffic Dashboard logs, sensitive values are stored as ***MASKED***

7. Troubleshooting

  • No new rows in dashboard: confirm Listener is ON and send a fresh request.
  • Unexpected 503: Listener is OFF. Toggle it on from Traffic Dashboard.
  • Unexpected 401: shared secret is enabled and request secret/header is missing or incorrect.
  • Unexpected 403: client IP is not on the allow-list.
  • Unexpected 429: per-IP rate limit threshold has been exceeded.
  • Guide/menu changes not visible: clear Joomla cache and hard-refresh browser.
  • Copy button fails on HTTP pages: use HTTPS or copy fallback/manual copy.
Copy tips: each code section has a Copy button. If your editor strips scripts, keep this file as a reference page and paste blocks manually.