service

package
v0.0.0-...-3ac3505 Latest Latest
Warning

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

Go to latest
Published: Sep 3, 2019 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	INVALID_CONFIG_FILE_TYPE   = errors.New("The configure file must be a json file with .json ext")
	INVALID_CONFIG_FILE_FORMAT = errors.New("The configure file content has invalid json format")
)

Functions

func CheckFileExist

func CheckFileExist(pidfile string) bool

func Handler404

func Handler404(w http.ResponseWriter, r *http.Request)

func Handler500

func Handler500(w http.ResponseWriter, r *http.Request)

func ReadPidFromFile

func ReadPidFromFile(pidfile string) (int, error)

func RemoveFile

func RemoveFile(pidfile string) error

func WritePidToFile

func WritePidToFile(pidfile string) error

Types

type App

type App struct {
	Domains   []*Domain  `json:"domains,omitempty" valid:"/^[a-z1-9-_\\.]+$a/,message_required=$name是必选项,message=$name($value)是非法域名"`
	Port      int        `json:"port,omitempty" valid:"[1,65535],message_required=$name是必选项,message=$name($value)是非法端口号"`
	CertFile  string     `json:"certfile,omitempty" valid:"optional,message=$name($value)文件路径不正确"`
	KeyFile   string     `json:"keyfile,omitempty" valid:"optional,message=$name($value)文件路径不正确"`
	Services  []*Service `json:"services,omitempty" valid:"optional,message_type=$name必须是service数组"`
	AccessLog *Log       `json:"access_log,omitempty" valid:"optional,message_type=$name必须是log数组"`
	ErrorLog  *Log       `json:"error_log,omitempty" valid:"optional,message_type=$name必须是log数组"`
	Logfmts   []*Logfmt  `json:"logfmts,omitempty" valid:"optional,message_type=$name必须是logfmt数组"`
}

type Check

type Check struct {
	Schema   string `json:"schema,omitempty" valid:"optional,{http,https},message=$name($value)不合法"`
	Path     string `json:"path,omitempty" valid:"[1,],message=$name($value)不合法"`
	Method   string `json:"method,omitempty" valid:"{POST,GET},message=$name($value)不合法"`
	Interval int    `json:"interval,omitempty" valid:"[1,3600],message=$name($value)不合法"`
	Timeout  int    `json:"timeout,omitempty" valid:"optional,[1,3600],message=$name($value)不合法"`
	Status   int    `json:"status,omitempty" valid:"optional,[100,600],message=$name($value)不合法"`
	Body     string `json:"body,omitempty" valid:"optional,message=$name{$value)不合法"`
	Window   int    `json:"window,omitempty" valid:"[1,3600],message=$name($value)不合法"`
	Down     int    `json:"down,omitempty" valid:"[1,3600],message=$name($value)不合法"`
	Up       int    `json:"up,omitempty" valid:"[1,3600],message=$name($value)不合法"`
}

type Cmd

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

Cmd 命令行参数对象 主要用于解析命令行命令 并根据命令执行对应的动作

func NewCmd

func NewCmd(server *Proxy) *Cmd

NewCmd 初始化一个命令行参数对象

func (*Cmd) Do

func (this *Cmd) Do()

Do 根据所解析的参数执行动作

func (*Cmd) Parse

func (this *Cmd) Parse()

Parse 解析命令行参数

type Config

type Config struct {
	Apps     []*App     `json:"apps,omitempty" valid:"message_required=$name是必选项,message_type=$name必须是app数组"`
	Services []*Service `json:"services,omitempty" valid:"optional,message_type=$name必须是service数组"`
	Logfmts  []*Logfmt  `json:"logfmts,omitempty" valid:"optional,message_type=$name必须是logfmt数组"`
	Syslog   *Log       `json:"syslog,omitempty" valid:"optional,message_type=$name非法的log对象"`
	// contains filtered or unexported fields
}

Config 系统配置对象

func NewConfig

func NewConfig() *Config

初始化一个系统配置

func (*Config) Load

func (this *Config) Load(filename string) error

Load 从文件中加载配置参数

type Context

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

func NewContext

func NewContext(w http.ResponseWriter, req *http.Request) *Context

type Domain

type Domain struct {
	Domain string  `json:"domain,omitempty" valid:"/^[a-z0-9-_\\.]+$/,message_required=$name是必选项,message=$name($value)是非法域名"`
	Rules  []*Rule `json:"rules,omitempty" valid:"message_required=$name是必选项,message_type=$name必须是rule数组"`
}

type Filter

type Filter struct {
	RequestURIs []string        `json:"request_uris,omitempty" valid:"optional,message=$name($value)不合法"`
	Headers     []*HeaderFilter `json:"headers,omitempty" valid:"optional,message=$name非法的header_filter对象"`
}

type HeaderFilter

type HeaderFilter struct {
	Key   string `json:"key,omitempty" valid:"/[A-Za-z0-9_\\-]+/,message=$name非法的Http Header Key"`
	Value string `json:"value,omitempty" valid:"message=$name非法的Http Header Value"`
}

type HeaderTransform

type HeaderTransform struct {
	When    string `json:"when,omitempty" valid:"{request,response},message=$name($value)不合法"`
	Method  string `json:"method,omitempty" valid:"{add,set,get},message=$name($value)不合法"`
	Key     string `json:"key,omitempty" valid:"/[A-Za-z0-9_\\-]+/,message=$name非法的Http Header Key"`
	Value   string `json:"value,omitempty" vaild:"optional,message=$name非法的Http Header Value"`
	Pattern string `json:"pattern,omitempty" vaild:"optional,message=$name非法的pattern"`
}

type Host

type Host struct {
	Host   string   `json:"host,omitempty" valid:"/[a-zA-Z0-9_\\:\\-]+/,message=$name不合法"`
	Weight int      `json:"weight,omitempty" valid:"[1-100],message=$name请填写1-100的整数"`
	Checks []*Check `json:"checks,omitempty" valid:"optional,message=$name必须是check数组"`
}

type HttpServer

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

func (*HttpServer) ServeHTTP

func (this *HttpServer) ServeHTTP(w http.ResponseWriter, req *http.Request)

type Log

type Log struct {
	File         string `json:"file,omitempty" valid:"message=$name($value)不合法"`
	Fmt          string `json:"fmt,omitempty" valid:"optional,message=$name($value)不合法"`
	RotateTime   string `json:"rotate_time,omitempty" valid:"optional,{hour|day},message=$name($value)不合法"`
	RotateSize   int64  `json:"rotate_size,omitempty" valid:"optional,(0,),message=$name($value)必须是正整数"`
	RotateNumber int    `json:"rotate_number,omitempty" valid:"optional,(0,),message=$name($value)必须是正整数"`
}

type Logfmt

type Logfmt struct {
	Name  string   `json:"name,omitempty" valid:"/[a-z0-9_]+/,message=$name不合法"`
	Lines []string `json:"lines,omitempty" valid:"message=$name必须是字符串数组"`
}

type Proxy

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

Proxy 代理服务对象 根据当前配置,启动代理服务

func NewProxy

func NewProxy() *Proxy

NewServer 新建代理服务对象

func (*Proxy) Reload

func (this *Proxy) Reload(pid int) error

Reload 重新加载服务配置 通过发送SIGHUP信号,通知服务进程

func (*Proxy) Start

func (this *Proxy) Start(configFilename string) error

Start 启动服务

func (*Proxy) Stop

func (this *Proxy) Stop(pid int) error

Stop 停止正在运行的服务 通过发送SIGINT信号,通知服务进程

type ProxyCheck

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

func NewProxyCheck

func NewProxyCheck(index int, host string, check *Check) *ProxyCheck

type ProxyDomain

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

type ProxyHandle

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

func NewProxyHandle

func NewProxyHandle(rule *Rule, services *ProxyServices, accessLogger, errorLogger, sysLogger *ProxyLogger) *ProxyHandle

type ProxyHandleFilter

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

func NewProxyHandleFilter

func NewProxyHandleFilter(filter *Filter) *ProxyHandleFilter

type ProxyHandleFilterHeader

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

func NewProxyHandleFilterHeader

func NewProxyHandleFilterHeader(header *HeaderFilter) *ProxyHandleFilterHeader

type ProxyHandleFilterRequestURI

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

func NewProxyHandleFilterRequestURI

func NewProxyHandleFilterRequestURI(value string) *ProxyHandleFilterRequestURI

type ProxyHandles

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

func NewProxyHandles

func NewProxyHandles(logger *ProxyLogger) *ProxyHandles

func (*ProxyHandles) NewProxyDomain

func (this *ProxyHandles) NewProxyDomain(app *App, domain *Domain, services *ProxyServices, logfmts *ProxyLogfmts, syslog *ProxyLogger) *ProxyDomain

type ProxyHeaderTransform

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

func NewProxyHeaderTransform

func NewProxyHeaderTransform(headerTransform *HeaderTransform) *ProxyHeaderTransform

type ProxyLogfmts

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

func NewProxyLogfmts

func NewProxyLogfmts(logfmts []*Logfmt) *ProxyLogfmts

type ProxyLogger

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

func NewProxyLogger

func NewProxyLogger() *ProxyLogger

func (*ProxyLogger) Close

func (this *ProxyLogger) Close()

func (*ProxyLogger) Error

func (this *ProxyLogger) Error(msg ...interface{})

func (*ProxyLogger) Load

func (this *ProxyLogger) Load(config *Log) (*ProxyLogger, error)

func (*ProxyLogger) LoadFmt

func (this *ProxyLogger) LoadFmt(fmts *ProxyLogfmts) (*ProxyLogger, error)

func (*ProxyLogger) Log

func (this *ProxyLogger) Log(msg ...interface{})

func (*ProxyLogger) Logfmt

func (this *ProxyLogger) Logfmt(variables *ProxyVariable)

type ProxyService

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

func NewProxyService

func NewProxyService(service *Service) *ProxyService

type ProxyServices

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

func NewProxyServices

func NewProxyServices(services []*Service) *ProxyServices

type ProxyTarget

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

func NewProxyTarget

func NewProxyTarget(url string) *ProxyTarget

type ProxyVariable

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

func NewProxyVariable

func NewProxyVariable() *ProxyVariable

func (*ProxyVariable) Set

func (this *ProxyVariable) Set(key, value string)

type Rule

type Rule struct {
	Filters   []*Filter  `json:"filters,omitempty" valid:"optional,message_type=$name非法的filter对象"`
	To        string     `json:"to,omitempty" valid:"[1,],message=$name($value)不合法"`
	Transform *Transform `json:"transform,omitempty" valid:"optional,message_type=$name($value)非法的transform对象"`
}

type Service

type Service struct {
	Name   string   `json:"name,omitempty" valid:"/[a-z0-9_\\-]+/,message=$name($value)不合法"`
	Hosts  []*Host  `json:"hosts,omitempty" valid:"message=$name必须是host数组"`
	Checks []*Check `json:"checks,omitempty" valid:"optional,message=$name必须是check数组"`
}

type Transform

type Transform struct {
	Headers []*HeaderTransform `json:"headers,omitempty" valid:"optional,message_type=$name非法的header_transform对象"`
}

type ValidFunc

type ValidFunc func(raw []byte) bool

type VariableExpr

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

func NewVariableExpr

func NewVariableExpr(expr string) *VariableExpr

func (*VariableExpr) Load

func (this *VariableExpr) Load(params *ProxyVariable) string

Jump to

Keyboard shortcuts

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