Skip to content

yllada/Send-Log-TCP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

169 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SendLog Syslog

Release License GitHub release Go Version Platform

A modern, cross-platform desktop application for sending syslog messages to remote servers via TCP or UDP.

Built with Wails v2 (Go + Web Technologies) | RFC 5424 & RFC 3164 Compliant

Download β€’ Features β€’ Documentation β€’ Contributing


πŸ“‹ Table of Contents


✨ Features

  • 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
  • Cross-Platform: Windows, macOS (Intel & Apple Silicon), and Linux
  • Fully Tested: Comprehensive test suite with benchmarks

Tech Stack

Layer Technologies
Backend Go 1.22+, Wails v2
Frontend Next.js, React, TypeScript
UI shadcn/ui, Tailwind CSS
Forms React Hook Form, Zod

πŸ“₯ Download

Pre-built binaries are available in the Releases page.

Windows

Download Sendlog-Syslog-windows-amd64.exe and run it directly.

macOS

Download the appropriate version:

  • Apple Silicon (M1/M2/M3/M4): Sendlog-Syslog-darwin-arm64
  • Intel: Sendlog-Syslog-darwin-amd64

Linux

DEB Package (Recommended for Debian/Ubuntu)
# Download and install - automatically handles dependencies
sudo dpkg -i sendlog-syslog_*_amd64.deb
sudo apt-get install -f  # Install missing dependencies if any
AppImage (Portable)
chmod +x Sendlog-Syslog-*-x86_64.AppImage
./Sendlog-Syslog-*-x86_64.AppImage
Raw Binary
# Install dependencies first
sudo apt install -y libgtk-3-0 libwebkit2gtk-4.1-0  # Ubuntu 24.04+
# or
sudo apt install -y libgtk-3-0 libwebkit2gtk-4.0-37  # Ubuntu 22.04

# Then run the binary
chmod +x Sendlog-Syslog-linux-amd64
./Sendlog-Syslog-linux-amd64

πŸš€ Quick Start

  1. Download the appropriate binary for your platform from Releases
  2. Run the application
  3. Configure your syslog server connection:
    • Enter the server IP address
    • Set the port (default: 514 for plain, 6514 for TLS)
    • Select protocol (TCP or UDP)
  4. Send your log messages!

πŸ“– Usage

Connection Configuration

Setting Description Default
IP Address Syslog server address (IPv4 or IPv6) -
Port Server port 514 (plain) / 6514 (TLS)
Protocol TCP or UDP TCP
TLS/SSL Enable encrypted connection (TCP only) Off
Verify Certificate Validate server certificate On

Message Configuration

Setting Description Options
RFC Format Syslog message format RFC 5424 (modern) / RFC 3164 (legacy)
Facility Message category 0-23 (e.g., 16 = local0)
Severity Message priority 0-7 (e.g., 6 = informational)
Hostname Source hostname Auto-detected or custom
App Name Application identifier Custom

πŸ”’ TLS/SSL Security

Feature Description
Port 6514 Standard port for syslog over TLS (RFC 5425)
Certificate Verification βœ… Enabled: Validates using system CA (production)
⚠️ Disabled: Accepts self-signed certs (testing)
TLS Versions TLS 1.2 and TLS 1.3 supported

Note: TLS is only available for TCP connections. UDP does not support encryption.


πŸ› οΈ Development


3. Install frontend dependencies:
```bash
cd frontend
pnpm install

πŸš€ Development

Run in development mode:

wails dev

πŸ—οΈ Building

Linux (Ubuntu/Debian)

# First time: Install dependencies
./scripts/install-linux-deps.sh

# Build
./scripts/build-linux.sh

Windows

./scripts/build-windows.sh

macOS (ARM)

./scripts/build-macos-arm.sh

macOS (Intel)

./scripts/build-macos-intel.sh

πŸ“ Usage

  1. 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
  2. Configure Message Format:

    • Choose RFC format (5424 or 3164)
    • Set facility (0-23)
    • Set severity (0-7)
    • Optional: custom hostname and app name
  3. Send Messages:

    • Enter log messages (one per line)
    • Click "Send Syslog Messages"

πŸ”’ TLS/SSL Security Notes

  • 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

πŸ”§ Configuration

Window Settings (main.go)

Width:     900  // Fixed width
Height:    780  // Fixed height
MinWidth:  900
MinHeight: 780
MaxWidth:  1100
MaxHeight: 900

Syslog Facilities

  • 0-15: System facilities
  • 16-23: Local use (local0-local7)

Severity Levels

  • 0: Emergency
  • 1: Alert
  • 2: Critical
  • 3: Error
  • 4: Warning
  • 5: Notice
  • 6: Informational
  • 7: Debug

οΏ½ Technical Documentation

For detailed technical documentation about the RFC 6587 implementation, see TECHNICAL_DOCUMENTATION.md.

πŸ§ͺ Testing

Run the test suite:

go test -v

Run benchmarks:

go test -bench=. -benchmem

πŸ“š Documentation

Reference Standards

RFC Description
RFC 5424 The Syslog Protocol
RFC 3164 BSD Syslog Protocol (legacy)
RFC 5425 TLS Transport Mapping for Syslog
RFC 6587 Transmission of Syslog Messages over TCP

🀝 Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes using Conventional Commits:
    • feat: new feature
    • fix: bug fix
    • docs: documentation
    • refactor: code refactoring
  4. Push to your branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Reporting Issues

Found a bug or have a feature request? Open an issue!


πŸ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.


οΏ½ Authors

Yadian Llada Lopez
Yadian Llada Lopez

πŸ“§ Email
JocLRojas
JocLRojas

⭐ If you find this project useful, please consider giving it a star!

Made with ❀️ using Wails and Go

About

Tool written in Go and TypeScript to send logs to a Syslog server using tcp/udp.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors