Categorygithub.com/echogy-io/echogy
modulepackage
0.0.0-20250107135046-6e4d8ead6972
Repository: https://github.com/echogy-io/echogy.git
Documentation: pkg.go.dev

# README

Echogy

A lightweight and efficient SSH reverse proxy tool implemented in Go, featuring a beautiful Terminal User Interface (TUI).

Features

Terminal User Interface (TUI)

  • Modern and responsive terminal interface
  • SSH session management
  • Real-time connection status monitoring
  • User-friendly interface for managing SSH connections

Core Features

  • SSH reverse proxy functionality
  • Multiple concurrent SSH connections support
  • TCP port forwarding
  • Secure session management
  • Built-in logging system

Quick Start

  1. Clone the repository:
git clone https://github.com/youkale/echogy.git
cd echogy
  1. Install dependencies:
go mod download
  1. Configure your settings in config.json:
{
  "addr": ":443",
  "ssh_addr": ":22",
  "domain": "your-domain.com",
  "idle_timeout": 300,
  "key": "YOUR_SSH_KEY"
}
  1. Build and run:
make build
./echogy

Project Structure

.
├── cmd/           # Command line tools
├── logger/        # Logging framework
├── tui/          # Terminal User Interface components
├── pprof/        # Performance profiling
├── echogy.go     # Core SSH implementation
├── conn.go       # Connection management
├── facade.go     # Facade pattern implementation
├── forward.go    # Port forwarding logic
└── util.go       # Utility functions

Key Components

  • SSH Server: Handles SSH connections and session management
  • Forward Proxy: Manages TCP port forwarding
  • TUI: Provides an interactive terminal interface
  • Logger: Structured logging with multiple output formats

Configuration

SSH Key Setup

ssh-keygen -b 2048 -f echogy_rsa
# Copy the private key content to config.json

Domain Configuration

# DNS A records
A your-domain.com YOUR_SERVER_IP
A *.your-domain.com YOUR_SERVER_IP

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

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

# Packages

No description provided by the author
No description provided by the author

# Functions

No description provided by the author
No description provided by the author

# Constants

AlphaNum Predefined character sets.
No description provided by the author
No description provided by the author
Lowercase Character sets for random string generation.
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author