https://github.com/encodeous/horizon
Horizon is a high performance port tunneling program and tcp proxy powered by WebSockets.
https://github.com/encodeous/horizon
encryption http port-tunneling websockets
Last synced: 5 months ago
JSON representation
Horizon is a high performance port tunneling program and tcp proxy powered by WebSockets.
- Host: GitHub
- URL: https://github.com/encodeous/horizon
- Owner: encodeous
- Created: 2020-04-05T23:15:54.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-11-14T02:48:48.000Z (about 4 years ago)
- Last Synced: 2025-08-17T11:41:44.487Z (6 months ago)
- Topics: encryption, http, port-tunneling, websockets
- Language: C#
- Homepage:
- Size: 4.72 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Horizon - High performance TCP Proxy and Port Tunneling over WebSockets.

## About Horizon
[](https://ci.appveyor.com/project/Encodeous/horizon/branch/master) | **[Quick Download](https://github.com/encodeous/horizon/releases)**
Horizon is a _gateway_ that allows a client to map a remote tcp resource to a local port through a _proxy_ server.
### Functionality
Horizon is useful if either end of the connection is _restricted_ to HTTP/S connections (like behind a firewall).
For example, if you want to access a SSH server through a _Firewall_ , Horizon can _Obfuscate_ the SSH data through WebSockets and on the server, Horizon will _mirror_ the data sent by the client and connect to the SSH server as if the client was directly connecting to it.
### Main Features
- Access a resource through a **firewall**
- **Blazingly fast**! (Tested to handle ~5Gbit/s with iperf)
- Built in **Authentication** (With an intuitive configuration wizard)
- **Simple to use** Command Line Interface
- Supports both **Windows** and **Linux**
- Portable, **no dependencies**
- _Could_ tunnel through **CDNs** like **CloudFlare** _(Not Officially Supported)_
## Getting Started
Horizon has a simple cli, the commands are as follows:
```
-a, --about About horizon
-s, --server [Server] Start horizon as a server
-q, --authfile [Server] Specify a custom path to an auth file
-p, --port [Server] Specify a port to listen to
-c, --client [Client] Start horizon as a client and connect to the specified horizon server --client
-m, --portmap [Client] Maps local ports to remote addresses. :: Example:
22:ssh.example.com:22
-u, --user [Client] Authentication username
-t, --token [Client] Authentication token (secret)
-b, --buffer [Client/Server] I/O buffer size
-g, --config [Util] Generate an auth file through a wizard
--help Display this help screen.
--version Display version information.
```
Here is an example of hosting a Horizon server on port 1234:
```
horizon-cli -s -p 1234
```
Here is another example of connecting to the server above and mirroring port 1235 (Client) to localhost:1236 (on the server) with Horizon.
```
horizon-cli -c ws://10.10.10.3:1234 -m 1235:localhost:1236
```
Connections can be made through the client on port 1234, and Horizon will tunnel the data and automagically mirror it on the Server side on port 1236.