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
- Enable Listener in the Traffic Dashboard.
- Send a request to the endpoint shown above.
- Open Traffic Dashboard and verify new rows appear in real time.
- Use query params to simulate status/error conditions.
- 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 token | 401 | ...&mock=401 |
| Forbidden source | 403 | ...&mock=403 |
| Endpoint not found | 404 | ...&mock=404 |
| Server failure simulation | 500 | ...&mock=500 |
| Custom error text body | 500 | ...&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.