proxy

package
v0.0.0-...-d3ed2aa Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 11, 2016 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// FilterHTTPAccess access log filter
	FilterHTTPAccess = "HTTP-ACCESS"
	// FilterHeader header filter
	FilterHeader = "HEAD" // process header fiter
	// FilterXForward xforward fiter
	FilterXForward = "XFORWARD"
	// FilterBlackList blacklist filter
	FilterBlackList = "BLACKLIST"
	// FilterWhiteList whitelist filter
	FilterWhiteList = "WHITELIST"
	// FilterAnalysis analysis filter
	FilterAnalysis = "ANALYSIS"
	// FilterRateLimiting limit filter
	FilterRateLimiting = "RATE-LIMITING"
	// FilterCircuitBreake circuit breake filter
	FilterCircuitBreake = "CIRCUIT-BREAKE"
	// FilterValidation validation request filter
	FilterValidation = "VALIDATION"
)
View Source
const (
	// RateBase base rate
	RateBase = 100
)
View Source
const (
	// TimerPrefix timer prefix
	TimerPrefix = "Circuit-"
)

Variables

View Source
var (
	// ErrCircuitClose server is in circuit close
	ErrCircuitClose = errors.New("server is in circuit close")
	// ErrCircuitHalf server is in circuit half
	ErrCircuitHalf = errors.New("server is in circuit half")
	// ErrCircuitHalfLimited server is in circuit half, traffic limit
	ErrCircuitHalfLimited = errors.New("server is in circuit half, traffic limit")
)
View Source
var (
	// ErrPrefixRequestCancel user cancel request error
	ErrPrefixRequestCancel = "request canceled"
	// ErrNoServer no server
	ErrNoServer = errors.New("has no server")
	// ErrRewriteNotMatch rewrite not match request url
	ErrRewriteNotMatch = errors.New("rewrite not match request url")
)
View Source
var (
	// MergeContentType merge operation using content-type
	MergeContentType = "application/json; charset=utf-8"
	// MergeRemoveHeaders merge operation need to remove headers
	MergeRemoveHeaders = []string{
		"Content-Length",
		"Content-Type",
		"Date",
	}
)
View Source
var (
	// ErrBlacklist target ip in black list
	ErrBlacklist = errors.New("Err, target ip in black list")
)
View Source
var (
	// ErrKnownFilter known filter error
	ErrKnownFilter = errors.New("unknow filter")
)
View Source
var (
	// ErrTraffixLimited traffic limit
	ErrTraffixLimited = errors.New("traffic limit")
)
View Source
var (
	// ErrValidationFailure validation failure
	ErrValidationFailure = errors.New("request validation failure")
)
View Source
var (
	// ErrWhitelist target ip not in in white list
	ErrWhitelist = errors.New("Err, target ip not in in white list")
)

Functions

func GetRealClientIP

func GetRealClientIP(ctx *fasthttp.RequestCtx) string

GetRealClientIP get read client ip

Types

type AccessFilter

type AccessFilter struct {
	// contains filtered or unexported fields
}

AccessFilter record the http access log log format: $remoteip "$method $path" $code "$agent" $svr $cost

func (AccessFilter) Name

func (f AccessFilter) Name() string

Name return name of this filter

func (AccessFilter) Post

func (f AccessFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (AccessFilter) PostErr

func (f AccessFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (AccessFilter) Pre

func (f AccessFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

type AnalysisFilter

type AnalysisFilter struct {
	// contains filtered or unexported fields
}

AnalysisFilter analysis filter

func (AnalysisFilter) Name

func (f AnalysisFilter) Name() string

Name return name of this filter

func (AnalysisFilter) Post

func (f AnalysisFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (AnalysisFilter) PostErr

func (f AnalysisFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (AnalysisFilter) Pre

func (f AnalysisFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

type BlackListFilter

type BlackListFilter struct {
	// contains filtered or unexported fields
}

BlackListFilter blacklist filter

func (BlackListFilter) Name

func (f BlackListFilter) Name() string

Name return name of this filter

func (BlackListFilter) Post

func (f BlackListFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (BlackListFilter) PostErr

func (f BlackListFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (BlackListFilter) Pre

func (f BlackListFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

type CircuitBreakeFilter

type CircuitBreakeFilter struct {
	// contains filtered or unexported fields
}

CircuitBreakeFilter CircuitBreakeFilter

func (CircuitBreakeFilter) Name

func (f CircuitBreakeFilter) Name() string

Name return name of this filter

func (CircuitBreakeFilter) Post

func (f CircuitBreakeFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (CircuitBreakeFilter) PostErr

func (f CircuitBreakeFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (CircuitBreakeFilter) Pre

func (f CircuitBreakeFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

type Filter

type Filter interface {
	Name() string

	Pre(c *filterContext) (statusCode int, err error)
	Post(c *filterContext) (statusCode int, err error)
	PostErr(c *filterContext)
}

Filter filter interface

type HeadersFilter

type HeadersFilter struct {
	// contains filtered or unexported fields
}

HeadersFilter HeadersFilter

func (HeadersFilter) Name

func (f HeadersFilter) Name() string

Name return name of this filter

func (HeadersFilter) Post

func (f HeadersFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (HeadersFilter) PostErr

func (f HeadersFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (HeadersFilter) Pre

func (f HeadersFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager support runtime remote interface

func (*Manager) AddAnalysisPoint

func (m *Manager) AddAnalysisPoint(req model.AddAnalysisPointReq, rsp *model.AddAnalysisPointRsp) error

AddAnalysisPoint add a point to analysis

func (*Manager) GetAnalysisPoint

func (m *Manager) GetAnalysisPoint(req model.GetAnalysisPointReq, rsp *model.GetAnalysisPointRsp) error

GetAnalysisPoint return analysis point data

func (*Manager) SetLogLevel

func (m *Manager) SetLogLevel(req model.SetLogReq, rsp *model.SetLogRsp) error

SetLogLevel set log level

type Proxy

type Proxy struct {
	// contains filtered or unexported fields
}

Proxy Proxy

func NewProxy

func NewProxy(config *conf.Conf) *Proxy

NewProxy create a new proxy

func (*Proxy) ReverseProxyHandler

func (p *Proxy) ReverseProxyHandler(ctx *fasthttp.RequestCtx)

ReverseProxyHandler http reverse handler

func (*Proxy) Start

func (p *Proxy) Start()

Start start proxy

type RateLimitingFilter

type RateLimitingFilter struct {
	// contains filtered or unexported fields
}

RateLimitingFilter RateLimitingFilter

func (RateLimitingFilter) Name

func (f RateLimitingFilter) Name() string

Name return name of this filter

func (RateLimitingFilter) Post

func (f RateLimitingFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (RateLimitingFilter) PostErr

func (f RateLimitingFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (RateLimitingFilter) Pre

func (f RateLimitingFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

type ValidationFilter

type ValidationFilter struct {
	// contains filtered or unexported fields
}

ValidationFilter validation request

func (ValidationFilter) Name

func (v ValidationFilter) Name() string

Name return name of this filter

func (ValidationFilter) Post

func (f ValidationFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (ValidationFilter) PostErr

func (f ValidationFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (ValidationFilter) Pre

func (v ValidationFilter) Pre(c *filterContext) (statusCode int, err error)

Pre pre filter, before proxy reuqest

type WhiteListFilter

type WhiteListFilter struct {
	// contains filtered or unexported fields
}

WhiteListFilter whitelist filter

func (WhiteListFilter) Name

func (f WhiteListFilter) Name() string

Name return name of this filter

func (WhiteListFilter) Post

func (f WhiteListFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (WhiteListFilter) PostErr

func (f WhiteListFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (WhiteListFilter) Pre

func (f WhiteListFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

type XForwardForFilter

type XForwardForFilter struct {
	// contains filtered or unexported fields
}

XForwardForFilter XForwardForFilter

func (XForwardForFilter) Name

func (f XForwardForFilter) Name() string

Name return name of this filter

func (XForwardForFilter) Post

func (f XForwardForFilter) Post(c *filterContext) (statusCode int, err error)

Post execute after proxy

func (XForwardForFilter) PostErr

func (f XForwardForFilter) PostErr(c *filterContext)

PostErr execute proxy has errors

func (XForwardForFilter) Pre

func (f XForwardForFilter) Pre(c *filterContext) (statusCode int, err error)

Pre execute before proxy

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL