Files
go-meta-listener/mirror/README.md

56 lines
1.7 KiB
Markdown
Raw Normal View History

2025-04-10 19:05:32 -04:00
# Mirror Listener
A network listener implementation that simultaneously listens on clearnet (TLS), Tor onion services, and I2P garlic services.
## Overview
Mirror Listener is a wrapper around the [go-meta-listener](https://github.com/go-i2p/go-meta-listener) package that provides a simplified interface for setting up multi-protocol listeners. It automatically configures:
- TLS-secured clearnet connections with Let's Encrypt certificates
- Tor onion service endpoints
- I2P garlic service endpoints
This allows you to run a single service that's accessible through multiple network layers and protocols.
## Installation
```bash
go get github.com/go-i2p/go-meta-listener/mirror
```
## Usage
```go
import (
"github.com/go-i2p/go-meta-listener/mirror"
"net/http"
)
func main() {
// Create a multi-protocol listener
listener, err := mirror.Listen(
"yourdomain.com", // Domain name for TLS
"your.email@example.com", // Email for Let's Encrypt
"./certs", // Certificate directory
false, // Enable/disable TLS on hidden services
)
if err != nil {
panic(err)
}
defer listener.Close()
// Use with standard library
http.Serve(listener, yourHandler)
}
```
## Configuration Options
- **Domain Name**: Required for TLS certificate issuance through Let's Encrypt
- **Email Address**: Used for Let's Encrypt registration
- **Certificate Directory**: Where TLS certificates will be stored
- **Hidden TLS**: When set to true, enables TLS for Tor and I2P services as well
## Example: Connection Forwarding
See the [example directory](./example) for a complete example of using Mirror Listener to forward connections to a local service.