A modern desktop application built with Wails v2 for sending syslog messages to remote servers via TCP or UDP protocols.
- Multi-Protocol Support: Send logs via TCP or UDP
- TLS/SSL Encryption: Secure syslog transmission over TLS (RFC 5425)
- Support for self-signed certificates
- Configurable certificate verification
- TLS 1.2 and 1.3 support
- RFC Compliance: Supports both RFC 5424 (modern) and RFC 3164 (legacy) formats
- TCP Framing (RFC 6587):
- β Octet Counting (recommended): Efficient length-prefixed framing
- Non-Transparent Framing: LF-delimited for legacy compatibility
- Professional Implementation:
- Modular architecture with separated concerns
- Efficient memory usage with pre-calculated buffers
- Comprehensive validation (UTF-8, message length, framing rules)
- Robust error handling with detailed messages
- Modern UI: Built with Next.js, React, and shadcn/ui components
- Dark/Light Theme: System-aware theme switching
- Real-time Connection: Test and maintain persistent connections
- Desktop Optimized: Fixed window size (950x720) for optimal UX
- Fully Tested: Comprehensive test suite with benchmarks
The application features a clean, card-based interface with:
- Connection settings panel with real-time status
- Message configuration with facility and severity selectors
- Message composition area
- Toast notifications for feedback
- Go - Application logic and syslog protocol implementation
- Wails v2 - Go + Web frontend framework
- Next.js - React framework
- TypeScript - Type-safe development
- shadcn/ui - Modern UI components
- Tailwind CSS - Utility-first styling
- React Hook Form - Form management
- Zod - Schema validation
- Go 1.21+
- Node.js 18+
- pnpm
- Clone the repository:
git clone https://github.com/yllada/Send-Log-TCP.git
cd Send-Log-TCP- Install Wails CLI:
./scripts/install-wails-cli.sh- Install frontend dependencies:
cd frontend
pnpm installRun in development mode:
wails dev./scripts/build-windows.sh./scripts/build-macos-arm.sh./scripts/build-macos-intel.sh-
Configure Connection:
- Enter server IP address
- Set port (default: 514 for plain, 6514 for TLS)
- Select protocol (TCP/UDP)
- TLS Options (TCP only):
- Enable "Use TLS/SSL" for encrypted connections
- Disable "Verify Certificate" to accept self-signed certificates
- Connect to server
-
Configure Message Format:
- Choose RFC format (5424 or 3164)
- Set facility (0-23)
- Set severity (0-7)
- Optional: custom hostname and app name
-
Send Messages:
- Enter log messages (one per line)
- Click "Send Syslog Messages"
- Port 6514: Standard port for syslog over TLS (RFC 5425)
- Certificate Verification:
- β Enabled: Verifies server certificate using system CA (recommended for production)
β οΈ Disabled: Accepts self-signed certificates (useful for testing/development)
- TLS Versions: Supports TLS 1.2 and TLS 1.3
- UDP: TLS is only available for TCP connections
Width: 900 // Fixed width
Height: 780 // Fixed height
MinWidth: 900
MinHeight: 780
MaxWidth: 1100
MaxHeight: 900- 0-15: System facilities
- 16-23: Local use (local0-local7)
- 0: Emergency
- 1: Alert
- 2: Critical
- 3: Error
- 4: Warning
- 5: Notice
- 6: Informational
- 7: Debug
For detailed technical documentation about the RFC 6587 implementation, see TECHNICAL_DOCUMENTATION.md.
Run the test suite:
go test -vRun benchmarks:
go test -bench=. -benchmemThis project is licensed under the MIT License - see the LICENSE file for details.
Yadian Llada Lopez
- Email: [email protected]
- GitHub: @yllada
Contributions, issues, and feature requests are welcome!