123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package conn
- import "time"
- type Secret struct {
- Password string
- Conn *Conn
- }
- func NewSecret(p string, conn *Conn) *Secret {
- return &Secret{
- Password: p,
- Conn: conn,
- }
- }
- type Link struct {
- ConnType string //连接类型
- Host string //目标
- Crypt bool //加密
- Compress bool
- LocalProxy bool
- RemoteAddr string
- Option Options
- }
- type Option func(*Options)
- type Options struct {
- Timeout time.Duration
- }
- var defaultTimeOut = time.Second * 5
- func NewLink(connType string, host string, crypt bool, compress bool, remoteAddr string, localProxy bool, opts ...Option) *Link {
- options := newOptions(opts...)
- return &Link{
- RemoteAddr: remoteAddr,
- ConnType: connType,
- Host: host,
- Crypt: crypt,
- Compress: compress,
- LocalProxy: localProxy,
- Option: options,
- }
- }
- func newOptions(opts ...Option) Options {
- opt := Options{
- Timeout: defaultTimeOut,
- }
- for _, o := range opts {
- o(&opt)
- }
- return opt
- }
- func LinkTimeout(t time.Duration) Option {
- return func(opt *Options) {
- opt.Timeout = t
- }
- }
|