38 lines
629 B
Go
38 lines
629 B
Go
package gost
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"net"
|
|
"net/url"
|
|
)
|
|
|
|
type Handler interface {
|
|
Handle(net.Conn)
|
|
}
|
|
|
|
type HandlerOptions struct {
|
|
Chain *Chain
|
|
Users []*url.Userinfo
|
|
TLSConfig *tls.Config
|
|
}
|
|
|
|
type HandlerOption func(opts *HandlerOptions)
|
|
|
|
func ChainHandlerOption(chain *Chain) HandlerOption {
|
|
return func(opts *HandlerOptions) {
|
|
opts.Chain = chain
|
|
}
|
|
}
|
|
|
|
func UsersHandlerOption(users ...*url.Userinfo) HandlerOption {
|
|
return func(opts *HandlerOptions) {
|
|
opts.Users = users
|
|
}
|
|
}
|
|
|
|
func TLSConfigHandlerOption(config *tls.Config) HandlerOption {
|
|
return func(opts *HandlerOptions) {
|
|
opts.TLSConfig = config
|
|
}
|
|
}
|