Categorygithub.com/yaproxy/yap
modulepackage
0.1.0
Repository: https://github.com/yaproxy/yap.git
Documentation: pkg.go.dev

# README

[WIP] Yap - Yet Another Proxy powered by Golang

Linux Build Status Go Report Card Apache License Version 2.0

Yap is a HTTP1.1/HTTP2 proxy which forked and refactored from branch vps of Goproxy

Usage

First of all, download the latest Yap program from Release page according to your os and arch.

Prepare for Server

  • A domain: example.org
  • Certificate for the domain: example.org.cer
  • Key of the certificate for the domain: example.org.key

Create a config file yap.toml

[default]
reject_nil_sni = false

[[http2]]
listen = ":443"
# server name for http2 proxy
server_name = ["example.org"]
# cert file
cert_file = "example.org.cer"
# key file
key_file = "example.org.key"

[http]
listen = ":8088"

Start Yap Server

./yap yap.toml

Use Yap

1. Use HTTP2 Proxy in Chrome or Firefox

Create a new pac proxy configuration for you browser and setting:

function FindProxyForURL(url, host) {
  return "HTTPS example.org:443";
}

2. Use Yap in Proxy Chain

[http]
listen = "localhost:8088"
upstream_proxy = "https://example.org:443"
./yap yap.toml

Config HTTP Proxy localhost:8088 for you application.

Enjoy you life

Configuration

Yap supports multiple format configuration file such as toml, yaml and so on.

Section - default

TBD

Section - http2

http2 section contains a list for HTTP2 proxy.

  • network - optional

    The network must be a stream-oriented network:

    "tcp", "tcp4", "tcp6", "unix" or "unixpacket".

    Currently, only support tcp, tcp4, tcp6.

  • listen

    The syntax of listen is "host:port", e.g. ":443"

  • server_name

    The server name for http2 proxy, should be a list, such as ["example.org", "yap.example.org"]

  • proxy_fallback - optional

    The fallback URL for non-proxy request

  • pem - optional

    The pem file location for key pair contains cert and key, if pem is setting, the cert_file and key_file will be not used.

  • cert_file - optional

    The certificate file location

  • key_file - optional

    The key file location

  • upstream_proxy - optional

    The upstream proxy URL, used for proxy chain.

  • proxy_auth_method - optional

    The proxy authenticate method, currently contains two option: "pam", "htpasswd".

    Leave it blank for disable proxy authenticate

  • proxy_auth_htpasswd_path - optional

    The htpasswd file location.

    Only used when proxy_auth_method is set to htpasswd.

Section - http

  • network - optional

    The network must be a stream-oriented network:

    "tcp", "tcp4", "tcp6", "unix" or "unixpacket".

    Currently, only support tcp, tcp4, tcp6.

  • listen

    The syntax of listen is "host:port", e.g. ":443"

  • upstream_proxy - optional

    The upstream proxy URL, used for proxy chain.

  • proxy_auth_method - optional

    The proxy authenticate method, currently contains two option: "pam", "htpasswd".

    Leave it blank for disable proxy authenticate

  • proxy_auth_htpasswd_path - optional

    The htpasswd file location.

    Only used when proxy_auth_method is set to htpasswd.

Use Yap in Docker

Quick start:

docker run -d \
    -v /path/to/yap.toml:/yap.toml \
    -v /path/to/example.cert:/example.cert \
    -v /path/to/example.key:/example.key \
    -v /path/to/htpasswd:/htpasswd \
    -p 443:443 \
    -p 8088:8088 \
    yaproxy/yap

You can find more details from Yap in Docker hub.

Contributing

Contributions are welcome.

Copyright / License

Copyright 2013-2017 Yaproxy

This software is licensed under the terms of the Apache License Version 2. See the LICENSE file.

# Packages

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

# Functions

Main loads config and start Yap.

# Structs

No description provided by the author
Config contains the configuration for Yap.
FlushWriter is a wrapper for io.Writer.
No description provided by the author
HTTP2Handler serves as a HTTP2 proxy.
HTTPHandler serves as a HTTP proxy.
MultiSNHandler contains multiple server name and their handler.
No description provided by the author
TCPListener customize net.TCPListener for Yap.

# Interfaces

No description provided by the author