mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
This commit extends the documentation effort by adding detailed explanatory comments to key CLI components and core functionality throughout the cmd/ directory. The changes focus on explaining WHY certain logic is needed, not just WHAT the code does, improving code maintainability and helping developers understand complex business decisions. Key improvements: - Main entry points: Document CLI initialization, logging setup, and cache configuration with reasoning for design decisions - DNS proxy core: Explain DNS proxy constants, data structures, and core processing pipeline for handling DNS queries - Service management: Document service command structure, configuration patterns, and platform-specific service handling - Logging infrastructure: Explain log buffer management, level encoders, and log formatting decisions for different use cases - Metrics and monitoring: Document Prometheus metrics structure, HTTP endpoints, and conditional metric collection for performance - Network handling: Explain Linux-specific network interface filtering, virtual interface detection, and DNS configuration management - Hostname validation: Document RFC1123 compliance and DNS naming standards for system compatibility - Mobile integration: Explain HTTP retry logic, fallback mechanisms, and mobile platform integration patterns - Connection management: Document connection wrapper design to prevent log pollution during process lifecycle Technical details: - Added explanatory comments to 11 additional files in cmd/cli/ - Maintained consistent documentation style and format - Preserved all existing functionality while improving code clarity - Enhanced understanding of complex business logic and platform-specific behavior These comments help future developers understand the reasoning behind complex decisions, making the codebase more maintainable and reducing the risk of incorrect modifications during maintenance.
41 lines
978 B
Go
41 lines
978 B
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"net"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
// controlClient represents an HTTP client for communicating with the control server
|
|
type controlClient struct {
|
|
c *http.Client
|
|
}
|
|
|
|
// newControlClient creates a new control client with Unix socket transport
|
|
func newControlClient(addr string) *controlClient {
|
|
return &controlClient{c: &http.Client{
|
|
Transport: &http.Transport{
|
|
DialContext: func(ctx context.Context, _, _ string) (net.Conn, error) {
|
|
d := net.Dialer{}
|
|
return d.DialContext(ctx, "unix", addr)
|
|
},
|
|
},
|
|
Timeout: time.Second * 30,
|
|
}}
|
|
}
|
|
|
|
func (c *controlClient) post(path string, data io.Reader) (*http.Response, error) {
|
|
// for log/send, set the timeout to 5 minutes
|
|
if path == sendLogsPath {
|
|
c.c.Timeout = time.Minute * 5
|
|
}
|
|
return c.c.Post("http://unix"+path, contentTypeJson, data)
|
|
}
|
|
|
|
// deactivationRequest represents request for validating deactivation pin.
|
|
type deactivationRequest struct {
|
|
Pin int64 `json:"pin"`
|
|
}
|