Skip to content

Releases: SirZeck/ping-gopher

PingGopher v1.1.0 — Multi-Channel Alerting & Advanced Synthetic Probes 🚀

Choose a tag to compare

@SirZeck SirZeck released this 23 Aug 13:12

🔔 PingGopher Technical Release Report (v1.1.0)

Target Repository: github.com/SirZeck/ping-gopher
Release Tag: v1.1.0 (Feature Release)
Date: August 23, 2026
Auditing & Architecture Reference: docs/branching_and_release_strategy.md


1. Executive Summary

This technical release report documents PingGopher Release v1.1.0, introducing multi-channel webhook alerting (Slack & Discord), advanced synthetic probe types (TCP socket connections and DNS resolution lookups), HTTP status/keyword assertions, and Web UI dashboard controls.

All code changes were developed under isolated Git Flow feature branches (feature/multi-channel-alerting, feature/tcp-dns-probes, feature/web-ui-enhancements), integrated on develop, and verified via v1.1.0-beta.1 pre-release testing.


2. Feature & Capabilities Breakdown (v1.1.0)

🔔 Multi-Channel Alerting Engine (internal/notifier)

  • Slack Block-Kit Webhooks (internal/notifier/slack.go): Formats outage and recovery notifications into Slack Block-Kit JSON with status header icons, target details, and outage block quotes.
  • Discord Embed Webhooks (internal/notifier/discord.go): Formats notifications into color-coded Discord Embed cards (0xE74C3C Red for Outages, 0x2ECC71 Green for Recovery).
  • SSRF Endpoint Guard: Evaluates incoming Slack & Discord webhook endpoints against validator.ValidateSafeURL before dispatch.

⚡ Advanced Synthetic Probe Engine (internal/worker)

  • TCP Socket Probes (ExecuteTCPProbe): Dials raw TCP ports (e.g. Postgres :5432, Redis :6379, SSH :22) with connect-time socket SSRF validation (SafeDialContext) and latency metrics.
  • DNS Resolution Probes (ExecuteDNSProbe): Performs live DNS lookups for A, AAAA, MX, and TXT records via net.DefaultResolver.
  • HTTP Keyword & Status Assertions (ExecuteHTTPAssertionProbe): Asserts exact status code expectations (e.g., 200, 201) and response body keyword matches.

🎨 Web UI Dashboard & Status Page Enhancements (web/)

  • Target Creation Modal: Added Probe Type selector (HTTP, SSL, TCP, DNS), Expected HTTP Status, Keyword Assertion, Slack Webhook URL, and Discord Webhook URL input fields.
  • Target Component Badges: Renders interactive HTTP, SSL, TCP, DNS, Slack, and Discord badges on dashboard target cards and public status pages.

3. Automated Test Suite Verification

Executed go test -count=1 ./...100% PASS:

ok  	github.com/SirZeck/ping-gopher/cmd/pinggopher-cli	1.950s
ok  	github.com/SirZeck/ping-gopher/internal/api	3.490s
ok  	github.com/SirZeck/ping-gopher/internal/auth	0.742s
ok  	github.com/SirZeck/ping-gopher/internal/db	1.661s
ok  	github.com/SirZeck/ping-gopher/internal/notifier	2.402s
ok  	github.com/SirZeck/ping-gopher/internal/scheduler	2.882s
ok  	github.com/SirZeck/ping-gopher/internal/worker	2.723s

PingGopher v1.0.0 — Production General Availability Release 🚀

Choose a tag to compare

@SirZeck SirZeck released this 23 Aug 10:50

🛡️ PingGopher Production General Availability Technical Release Report (v1.0.0)

Target Repository: github.com/SirZeck/ping-gopher
Release Tag: v1.0.0 (Official Production GA Release)
Date: August 23, 2026
Auditing References: docs/audit_report_final.md, docs/audit_report_v1.md, docs/audit_report_v2.md, docs/audit_report_v3.md, docs/audit_report_v4_adversarial.md


1. Executive Summary

This technical report marks the official General Availability (GA) Release v1.0.0 of PingGopher.

Following 4 rigorous auditing cycles (including Senior Staff verification and independent adversarial re-audits), PingGopher is officially APPROVED FOR PRODUCTION LAUNCH. All 28 security vulnerabilities, concurrency bottlenecks, multi-tenant isolation defects, and operational failure modes identified during pre-launch reviews have been 100% remediated and verified.


2. Complete Summary of Remediations (v1.0.0)

🔴 Security & SSRF Protection

  • Double-Layered SSRF Defense Engine: Incoming probe targets and webhook URLs are pre-validated via ValidateSafeURL() and socket connections are validated at TCP connect time via SafeDialContext(timeout) for both HTTP and SSL probes.
  • TOCTOU DNS Rebinding Elimination: Resolves host DNS and evaluates CIDR blocklists (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8, 169.254.169.254) at exact TCP socket dial time.
  • IPv4-Mapped IPv6 Normalization: Normalizes addresses like ::ffff:169.254.169.254 via ip.To4() before CIDR evaluation.
  • Creation & Update Webhook SSRF Enforcer: Rejects prohibited internal webhook URLs on monitor creation and updates with HTTP 400 Bad Request.

🔐 Multi-Tenant Data Isolation & Privacy

  • Tenant Status Isolation: Public status queries require explicit tenant scoping or authenticated session tokens (?tenant_id=<uuid>).
  • IsPublic Privacy Toggle: Added IsPublic bool field to Monitor struct. Status pages filter monitors (is_public = true) and active incidents (monitors.is_public = true), keeping private telemetry strictly isolated.

⚡ Concurrency & Database Resilience

  • SQLite WAL Mode & Lock Management: Pragmas enable Write-Ahead Logging (WAL mode), 5000ms busy timeouts, and SetMaxOpenConns(1) connection pool boundaries to eliminate database lock panics.
  • Worker Pool Semaphore: Bounded 50-slot worker pool channel semaphore prevents goroutine explosion during check cycles.
  • Automatic Telemetry Pruner: Daily background ticker executes db.PruneOldLogs(s.DB, 30) to purge ping logs older than 30 days.

🛡️ Middleware, Rate Limiting & Operations

  • Proxy-Aware Sliding-Window Rate Limiting: Enforces 5 req/sec ceiling per client IP on /v1/auth/signup and /v1/auth/login, parsing X-Forwarded-For and X-Real-IP headers behind reverse proxies.
  • Memory Map Cleanup: Background ticker evicts stale rate-limiter IP map entries every 5 minutes.
  • Production Secret Guard: Startup check exits process boot with FATAL error if default JWT secret key is detected when ENVIRONMENT=production.
  • Docker Container Healthcheck: Updated HEALTHCHECK to probe http://localhost:8080/health.

3. Automated Test Suite Final Verification

Executed go test -count=1 ./...100% PASS:

ok  	github.com/SirZeck/ping-gopher/cmd/pinggopher-cli	2.632s
ok  	github.com/SirZeck/ping-gopher/internal/api	4.230s
ok  	github.com/SirZeck/ping-gopher/internal/auth	1.511s
ok  	github.com/SirZeck/ping-gopher/internal/db	2.222s
ok  	github.com/SirZeck/ping-gopher/internal/notifier	2.926s
ok  	github.com/SirZeck/ping-gopher/internal/scheduler	3.551s
ok  	github.com/SirZeck/ping-gopher/internal/worker	3.215s