Access more HTTP ports over CDN with this application.

Overview

More-Ports

More Ports is a proxy service to establish all web-based applications on different ports on the server-side over a well known TCP port.

It is good to use while your CDN does not allow few ports or inside the restricted network such as school.

How it works ?

Firstly More-Ports runs as server mode on the server-side. Server applications start to listen to port 80 for HTTP and port 443 for HTTPS request. When the client tries to connect to non-regular HTTPS(80) and HTTP(443) ports, more-ports forward their request to localhost:8080. If the client requests different ports such as 3000, this request is handled by the more-ports client and forwarded to the more-ports server and the server redirects this request to the indicated port, for this example which is localhost:3000.

Work Logic

Server-Side

By default, the system starts a web server on port 80 and 443 for HTTP and HTTPS. If the request does not have a port information such as http://example.com or https://example.com, the request forwarded to http://localhost:8080 by default. If it has a port information, request forwarded to indicated port on localhost.

Note: server mode is only supported to Linux.

Configuration

Firstly start this service in host network mode to access shared ports if you use a container. If you don’t provide any certificate for https server, the program will create a self signed certificate.
To use your own certificates, you can mount your certificates inside a container with the docker mount option and provide the certificate locations with server-cert and server-key arguments.

If you want to use this software behind the CDN solution and authorize actions taken at edge, you can control whether a request comes from CDN or not with client-certificate check for HTTPS. Also don’t forget to set the server-name option, to prevent different domains from hitting your server from the same CDN and redirect all http requests to https with -https-redirect flag.
Cloudflare's 'Authenticated Origin Pulls’ cert is included by default in the container, to use add --client-cert /config/client-cloudflare.pem arg on your docker run command.

  -client-cert string
        Client certificate location to authorize the client.
  -default-port string
        Port not defined schemes redirect to this port. (default "8080")
  -h    Print help for server mode. (This)
  -http string
        HTTP server listen address. (default ":80")
  -https string
        HTTPS server listen address. (default ":443")
  -https-redirect
        Redirect all http requests to https.
  -remote string
        Remote address for forwarded ports. (default "127.0.0.1")
  -server-cert string
        Server cert location.
  -server-key string
        Server key location.
  -server-name string
        Server name check

Examples

  • Start with defaults
docker run -it --rm --network host ghcr.io/ahmetozer/more-ports server
  • Redirect http request to https
docker run -it --rm --network host ghcr.io/ahmetozer/more-ports server -https-redirect
  • With Cloudflare's 'Authenticated Origin Pulls’, server name control and https redirect
docker run -it --rm --network host ghcr.io/ahmetozer/more-ports server --server-name myserver.example.com --client-cert /config/client-cloudflare.pem --https-redirect
  • Custom certificate
docker run -it --rm --network host \
--mount type=bind,source="/data/certs/example.com/example.com.cert",target="/cert/my.cert",readonly \
 --mount type=bind,source="/data/keys/example.com/example.com.key",target="/cert/my.key",readonly \
 ghcr.io/ahmetozer/more-ports server --server-name myserver.example.com \
--client-cert /config/client-cloudflare.pem --https-redirect --server-cert /cert/my.cert --server-cert /cert/my.key

Client Side

If the clients only access regular ports like port 80 for HTTP or port 443 for HTTPS, they are not required to use this service but if they want to access different ports, they have to use the more-ports application on their system at the client mode.
You can access the precompiled application on the GitHub releases.

Configuration

In general, you don't need to make any changes for configurations on the client-side of the application, just set proxy configuration URL on your operating system from the program given URL.

  • Start the application
2021/05/07 01:25:48 More Ports Service
2021/05/07 01:25:48 Client mode
2021/05/07 01:25:48 Remote ports for http :80, https :443
2021/05/07 01:25:48 Client proxy server started at 127.0.0.1:8080
2021/05/07 01:25:48 Client proxy configuration located at http://127.0.0.1:8080/proxy.pac
  • Change settings on clients os. In this example for Windows.
    Client Windows configure
Releases(v1.0.0)
Owner
Ahmet ÖZER
Software Engineer Student ,Working on Linux Server, Network and IOT projects
Ahmet ÖZER
Access more HTTP ports over CDN with this application.

More-Ports More Ports is a proxy service to establish all web-based applications on different ports on the server-side over a well known TCP port. It

Ahmet ÖZER 3 May 16, 2021
CDN for the Tech With Tim website using Go

Tech With Tim - CDN CDN for the Tech With Tim website using Go ?? Table of Contents ?? Getting Started Environment variables Running ?? Running with D

Tech With Tim Inc. 4 Jul 21, 2021
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

frp README | 中文文档 What is frp? frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it s

null 47k Jul 22, 2021
Information Gathering tool - DNS / Subdomains / Ports / Directories enumeration

Information Gathering tool - DNS / Subdomains / Ports / Directories enumeration

gilfoyle97 222 Jul 26, 2021
HTTP(S)/WS(S)/TCP Tunnels to localhost using only SSH.

An open source serveo/ngrok alternative.

Antonio Mika 1.9k Jul 23, 2021
Tools for understanding, measuring, and applying network policies effectively in kubernetes

Cyclonus network policy explainer, prober, and test case generator! Parse, explain, and probe network policies to understand their implications and he

Matt Fenwick 45 Jul 15, 2021
httpx is a fast and multi-purpose HTTP toolkit allows to run multiple probers using retryablehttp library, it is designed to maintain the result reliability with increased threads.

Features • Installation • Usage • Running httpx • Notes • Join Discord httpx is a fast and multi-purpose HTTP toolkit allow to run multiple probers us

ProjectDiscovery 1.7k Jul 23, 2021
:vulcan_salute: Fast, modern, easy-to-use network scanner

sx is the command-line network scanner designed to follow the UNIX philosophy. The goal of this project is to create the fastest network scanner with

null 659 Jul 19, 2021
The fastest way to create self-hosted exit-servers

inletsctl - the fastest way to create self-hosted exit-servers inletsctl automates the task of creating an exit-server (tunnel server) on public cloud

inlets 349 Jul 21, 2021
Easily and securely send things from one computer to another :crocodile: :package:

This project is supported by: croc is a tool that allows any two computers to simply and securely transfer files and folders. AFAIK, croc is the only

Zack 14.4k Jul 21, 2021
Group peer to peer video calls for everyone written in Go and TypeScript

Peer Calls v4 WebRTC peer to peer calls for everyone. See it live in action at peercalls.com. The server has been completely rewriten in Go and all th

Peer Calls 947 Jul 25, 2021
Consul Load-Balancing made simple

Notes From release 1.5.15 onward, fabio changes the default GOGC from 800 back to the golang default of 100.

fabio 6.7k Jul 19, 2021
Consul Load-Balancing made simple

Notes From release 1.5.15 onward, fabio changes the default GOGC from 800 back to the golang default of 100. Apparently this made some sense back in t

fabio 6.7k Jul 22, 2021
netscanner - TCP/UDP scanner to find open or closed ports

netscanner netscanner - TCP/UDP scanner to find open or closed ports installation you have to run this command to install the program $ go get github.

R4yan 191 Jun 13, 2021