# CheckCle Microservice Operation A Go-based microservice for service operations including ICMP ping, DNS resolution, and TCP connectivity testing. ## Features - **ICMP Ping**: Full ping functionality with packet statistics - **DNS Resolution**: A, AAAA, MX, and TXT record lookups - **TCP Connectivity**: Port connectivity testing - **SSL Certificate**: SSL Certificate Check - REST API endpoints - Health check endpoint - Configurable via environment variables - Comprehensive operation statistics ## API Endpoints ### POST /operation Perform various network operations (ping, dns, tcp). **Ping Request:** ```json { "type": "ping", "host": "google.com", "count": 4, "timeout": 3 } ``` **DNS Request:** ```json { "type": "dns", "host": "google.com", "query": "A", "timeout": 3 } ``` **TCP Request:** ```json { "type": "tcp", "host": "google.com", "port": 443, "timeout": 3 } ``` **Response:** ```json { "type": "ping", "host": "google.com", "success": true, "response_time": "20ms", "packets_sent": 4, "packets_recv": 4, "packet_loss": 0, "min_rtt": "15ms", "max_rtt": "25ms", "avg_rtt": "20ms", "rtts": ["15ms", "20ms", "25ms", "18ms"], "start_time": "2023-12-01T10:00:00Z", "end_time": "2023-12-01T10:00:03Z" } ``` ### GET /operation/quick Quick operation test with query parameters. **Examples:** - `/operation/quick?type=ping&host=google.com&count=1` - `/operation/quick?type=dns&host=google.com&query=A` - `/operation/quick?type=tcp&host=google.com&port=443` ### GET /health Health check endpoint. ### Legacy Endpoints - `POST /ping` - Legacy ping endpoint (backward compatibility) - `GET /ping/quick` - Legacy quick ping endpoint ## Operation Types ### Ping (ICMP) - **Type**: `ping` - **Parameters**: `host`, `count`, `timeout` - **Features**: Packet loss calculation, RTT statistics, multiple packets ### DNS Resolution - **Type**: `dns` - **Parameters**: `host`, `query` (A, AAAA, MX, TXT), `timeout` - **Features**: Multiple record types, resolution time tracking ### TCP Connectivity - **Type**: `tcp` - **Parameters**: `host`, `port`, `timeout` - **Features**: Connection testing, response time measurement ## Configuration Environment variables: - `PORT` - Service port (default: 8080) - `DEFAULT_COUNT` - Default ping count (default: 4) - `DEFAULT_TIMEOUT` - Default timeout (default: 3s) - `MAX_COUNT` - Maximum ping count (default: 20) - `MAX_TIMEOUT` - Maximum timeout (default: 30s) - `ENABLE_LOGGING` - Enable logging (default: true) ## Running ### Local Development ```bash go run main.go ``` ## Requirements - Go 1.21+ - Root privileges for ICMP (on Linux) ## Note This service requires elevated privileges to send ICMP packets. Run with sudo on Linux systems or use capabilities: ```bash sudo setcap cap_net_raw=+ep ./service-operation ```