Coder Social home page Coder Social logo

relaybaton's Introduction

relaybaton

A pluggable transport to circumvent Internet censorship with Encrypted SNI.

License: MIT GoDoc Go Report Card

Getting Started

Prerequisites

Install

go get github.com/iyouport-org/relaybaton

Build

CGO_ENABLED=1 should be set in cross-compiling

make

Deployment

For supporting ESNI features and hiding the IP address of the server from interception, the server should have a valid domain name and behind Cloudflare CDN.

Cloudflare CDN will provide TLS encryption with ESNI extension.

A MaxMind GeoLite2 Country database should be provided for GeoIP-based routing.

Server

sudo is required for listening on port 80

sudo relaybation server --config /path/to/server/config.toml

Client

relaybation client --config /path/to/client/config.toml

A local SOCKS5 proxy server will listen on the local port which is given in the configuration file.

Configuration

config.toml is the default configuration file, it should be located in the same path of the excutable binary file.

Example

[client]
port = 1080
server = "example.com"
username = "username"
password = "password"
proxy_all = true

[dns]
type = "doh"
server = "cloudflare-dns.com"
addr = "1.1.1.1"

[log]
file = "./log.xml"
level = "trace"

[server]
port=80
pretend="https://www.kernel.org"
timeout=15
secure=false
cert_file=""
key_file=""

[db]
type="sqlite3"
username="root"
password="password"
host="localhost"
port=1433
database="relaybaton.db"

Description of the fields

Field TOML Type Go Type Description
log.file String os.File filename of log file
log.level String github.com/sirupsen/logrus logrus.Level minimum log level to write
dns.type String github.com/iyouport-org/relaybaton config.DNSType type of DNS resolver
dns.server String string server name of the DNS server
dns.addr String net.Addr IP address of the DNS server
client.port Integer uint16 local port that client listen to
client.server String string domain name of the server
client.username String string username of the client
client.password String string password of the client
client.proxy_all Boolean bool if proxy all traffic
server.port Integer uint16 port that server listen to
server.pretend String url.URL domain name of the website that the server pretend to be
server.timeout Integer time.Duration timeout for no response
server.secure Boolean bool if the server running with TLS
server.cert_file String os.FileInfo cert file of a TLS server
server.key_file String os.FileInfo key file of a TLS server
db.type String github.com/iyouport-org/relaybaton config.dbType type of the database
db.username String string username for database connection
db.password String string password for database connection
db.host String string hostname for database connection
db.port Integer uint16 port for database connection
db.database String string name of database

Built With

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

  • onoketa

See also the list of contributors who participated in this project.

License

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

Acknowledgments

  • Cloudflare

relaybaton's People

Contributors

onoketa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.