 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
owtp全称OpenWallet Transfer Protocol,OpenWallet的一种点对点的分布式私有通信协议。
owtp全称OpenWallet Transfer Protocol,OpenWallet的一种点对点的分布式私有通信协议。
Index ¶
- Constants
- Variables
- func ClientIP(req *http.Request) string
- func GenerateRangeNum(min, max int) int
- func HttpListenAddr(addr string, enableSignature bool, handler PeerHandler) (*httpListener, error)
- func NewOWTPPeerstore() *owtpPeerstore
- func RandomPrivateKey() string
- func WSListenAddr(addr string, cert Certificate, enableSignature bool, handler PeerHandler) (*wsListener, error)
- type Authorization
- type AuthorizationBase
- func (base *AuthorizationBase) DecryptData(data []byte, key []byte) ([]byte, error)
- func (base *AuthorizationBase) DecryptDataPacket(data *DataPacket, key []byte) error
- func (base *AuthorizationBase) EnableAuth() bool
- func (base *AuthorizationBase) EnableKeyAgreement() bool
- func (base *AuthorizationBase) EncryptData(data []byte, key []byte) ([]byte, error)
- func (base *AuthorizationBase) EncryptDataPacket(data *DataPacket, key []byte) error
- func (base *AuthorizationBase) GenerateSignature(data *DataPacket) bool
- func (base *AuthorizationBase) InitKeyAgreement(keyAgreement *KeyAgreement) error
- func (base *AuthorizationBase) RequestKeyAgreement(keyAgreement *KeyAgreement) error
- func (base *AuthorizationBase) ResponseKeyAgreement(keyAgreement *KeyAgreement) error
- func (base *AuthorizationBase) VerifyKeyAgreement(keyAgreement *KeyAgreement) bool
- func (base *AuthorizationBase) VerifySignature(data *DataPacket) bool
 
- type Certificate
- type ConnectConfig
- type ConnectType
- type Context
- func (ctx *Context) DelSession(name string)
- func (ctx *Context) DestroySession()
- func (ctx *Context) GetSession(name string) interface{}
- func (ctx *Context) Params() gjson.Result
- func (ctx *Context) Response(result interface{}, status uint64, msg string)
- func (ctx *Context) ResponseStopRun(result interface{}, status uint64, msg string)
- func (ctx *Context) SetSession(name string, value interface{})
 
- type DataPacket
- type HTTPClient
- func HTTPDial(pid, url string, handler PeerHandler, header map[string]string, ...) (*HTTPClient, error)
- func NewHTTPClient(pid string, responseWriter http.ResponseWriter, request *http.Request, ...) (*HTTPClient, error)
- func NewHTTPClientWithHeader(responseWriter http.ResponseWriter, request *http.Request, hander PeerHandler, ...) (*HTTPClient, error)
 
- func (c *HTTPClient) ConnectConfig() ConnectConfig
- func (c *HTTPClient) EnableKeyAgreement() bool
- func (c *HTTPClient) HandleRequest() error
- func (c *HTTPClient) IsConnected() bool
- func (c *HTTPClient) IsHost() bool
- func (c *HTTPClient) LocalAddr() net.Addr
- func (c *HTTPClient) PID() string
- func (c *HTTPClient) RemoteAddr() net.Addr
 
- type HandlerFunc
- type KeyAgreement
- type Listener
- type MQClient
- type MqAddr
- type NodeConfig
- type OWTPAuth
- func (auth *OWTPAuth) DecryptData(data []byte, key []byte) ([]byte, error)
- func (auth *OWTPAuth) DecryptDataPacket(packet *DataPacket, key []byte) error
- func (auth *OWTPAuth) EnableAuth() bool
- func (auth *OWTPAuth) EnableKeyAgreement() bool
- func (auth *OWTPAuth) EncryptData(data []byte, key []byte) ([]byte, error)
- func (auth *OWTPAuth) EncryptDataPacket(packet *DataPacket, key []byte) error
- func (auth *OWTPAuth) GenerateSignature(data *DataPacket) bool
- func (auth *OWTPAuth) HTTPAuthHeader() map[string]string
- func (auth *OWTPAuth) InitKeyAgreement(keyAgreement *KeyAgreement) error
- func (auth *OWTPAuth) LocalPID() string
- func (auth *OWTPAuth) RemotePID() string
- func (auth *OWTPAuth) RequestKeyAgreement(keyAgreement *KeyAgreement) error
- func (auth *OWTPAuth) ResponseKeyAgreement(keyAgreement *KeyAgreement) error
- func (auth *OWTPAuth) VerifyKeyAgreement(keyAgreement *KeyAgreement) bool
- func (auth *OWTPAuth) VerifySignature(data *DataPacket) bool
 
- type OWTPNode
- func (node *OWTPNode) AddOnlinePeer(peer Peer)
- func (node *OWTPNode) Call(pid string, method string, params interface{}, sync bool, reqFunc RequestFunc) error
- func (node *OWTPNode) CallSync(pid string, method string, params interface{}) (*Response, error)
- func (node *OWTPNode) Certificate() *Certificate
- func (node *OWTPNode) Close()
- func (node *OWTPNode) CloseListener(connectType string)
- func (node *OWTPNode) ClosePeer(pid string)
- func (node *OWTPNode) Connect(pid string, config ConnectConfig) (Peer, error)
- func (node *OWTPNode) ConnectAndCall(pid string, config ConnectConfig, method string, params interface{}, sync bool, ...) error
- func (node *OWTPNode) GetOnlinePeer(id string) Peer
- func (node *OWTPNode) GetValueForPeer(peer Peer, key string) interface{}
- func (node *OWTPNode) HandleFinishFunc(handler HandlerFunc)
- func (node *OWTPNode) HandleFunc(method string, handler HandlerFunc)
- func (node *OWTPNode) HandlePrepareFunc(handler HandlerFunc)
- func (node *OWTPNode) IsConnectPeer(pid string) bool
- func (node *OWTPNode) KeyAgreement(pid string, consultType string) error
- func (node *OWTPNode) Listen(config ConnectConfig) error
- func (node *OWTPNode) Listening(connectType string) bool
- func (node *OWTPNode) NodeID() string
- func (node *OWTPNode) OnPeerClose(peer Peer, reason string)
- func (node *OWTPNode) OnPeerNewDataPacketReceived(peer Peer, packet *DataPacket)
- func (node *OWTPNode) OnPeerOpen(peer Peer)
- func (node *OWTPNode) OnlinePeers() []Peer
- func (node *OWTPNode) Peerstore() Peerstore
- func (node *OWTPNode) PutValueForPeer(peer Peer, key string, val interface{}) error
- func (node *OWTPNode) RemoveOfflinePeer(id string)
- func (node *OWTPNode) Run() error
- func (node *OWTPNode) SetCloseHandler(h func(n *OWTPNode, peer PeerInfo))
- func (node *OWTPNode) SetOpenHandler(h func(n *OWTPNode, peer PeerInfo))
- func (node *OWTPNode) SetPeerstore(store Peerstore)
 
- type Param
- type Peer
- type PeerAttribute
- type PeerHandler
- type PeerInfo
- type Peerstore
- type RequestFunc
- type RequestQueue
- type Response
- type SecretData
- type ServeMux
- func (mux *ServeMux) AddRequest(peer Peer, nonce uint64, time int64, method string, reqFunc RequestFunc, ...) error
- func (mux *ServeMux) HandleFunc(method string, handler HandlerFunc)
- func (mux *ServeMux) RemoveRequest(pid string, nonce uint64) error
- func (mux *ServeMux) ResetRequestQueue(pid string)
- func (mux *ServeMux) ServeOWTP(pid string, ctx *Context)
 
- type SessionManager
- func (store *SessionManager) Delete(id string, key string) error
- func (store *SessionManager) Destroy(id string) error
- func (store *SessionManager) GC()
- func (store *SessionManager) Get(id string, key string) interface{}
- func (store *SessionManager) GetActiveSession() int
- func (store *SessionManager) GetProvider() session.Provider
- func (store *SessionManager) GetSessionStore(pid string) (sessions session.Store, err error)
- func (store *SessionManager) GetString(id string, key string) string
- func (store *SessionManager) PeerInfo(id string) PeerInfo
- func (store *SessionManager) Put(id string, key string, val interface{}) error
- func (store *SessionManager) SavePeer(peer Peer)
- func (store *SessionManager) SessionDestroy(pid string)
 
- type WSClient
- func Dial(pid, url string, handler PeerHandler, header map[string]string, ...) (*WSClient, error)
- func NewWSClient(pid string, conn *websocket.Conn, handler PeerHandler, auth Authorization, ...) (*WSClient, error)
- func NewWSClientWithHeader(header http.Header, cert Certificate, conn *websocket.Conn, ...) (*WSClient, error)
 
Constants ¶
const ( XForwardedFor = "X-Forwarded-For" XRealIP = "X-Real-IP" )
const ( WSRequest = 1 //请求标识 WSResponse = 2 //响应标识 )
const ( //成功标识 StatusSuccess uint64 = 200 //客户端请求错误 ErrBadRequest uint64 = 400 ErrUnauthorized uint64 = 401 //通信密钥不正确 ErrSecretKeyInvalid uint64 = 402 //找不到方法 ErrNotFoundMethod uint64 = 404 //重放攻击 ErrReplayAttack uint64 = 409 //请求超时 ErrRequestTimeout uint64 = 408 //网络断开 ErrNetworkDisconnected uint64 = 430 //服务器错误 ErrInternalServerError uint64 = 500 //请求与响应的方法不一致 ErrResponseMethodDiffer uint64 = 501 //协商失败 ErrKeyAgreementFailed uint64 = 502 //拒绝服务 ErrDenialOfService uint64 = 503 //60X: 自定义错误 ErrCustomError uint64 = 600 )
const ( Websocket string = "ws" MQ string = "mq" HTTP string = "http" )
连接方式
const ( //校验协商结果 KeyAgreementMethod = "internal_keyAgreement" //准备前执行的方 PrepareMethod = "internal_prepare" //结束时执行的方法 FinishMethod = "internal_finish" )
内置方法
const ( DataPacketVersionV1 = 1 //数据包版本v1 CurrentDataPacketVersion = DataPacketVersionV1 //当前的数据包版本 )
const ( WriteWait = 60 * time.Second PongWait = 30 * time.Second PingPeriod = (PongWait * 9) / 10 MaxMessageSize = 1 * 1024 )
局部常量
const (
	DefaultTimoutSEC = 60
)
    Variables ¶
var (
	Debug = false
)
    Functions ¶
func HttpListenAddr ¶
func HttpListenAddr(addr string, enableSignature bool, handler PeerHandler) (*httpListener, error)
ListenAddr 创建OWTP协议通信监听
func WSListenAddr ¶
func WSListenAddr(addr string, cert Certificate, enableSignature bool, handler PeerHandler) (*wsListener, error)
WSListenAddr 创建websocket通信监听
Types ¶
type Authorization ¶
type Authorization interface {
	//EnableAuth 开启授权
	EnableAuth() bool
	//GenerateSignature 生成签名,并把签名加入到DataPacket中
	GenerateSignature(data *DataPacket) bool
	//VerifySignature 校验签名,若验证错误,可更新错误信息到DataPacket中
	VerifySignature(data *DataPacket) bool
	//EnableKeyAgreement 开启密码协商
	EnableKeyAgreement() bool
	//InitKeyAgreement 发起协商
	InitKeyAgreement(keyAgreement *KeyAgreement) error
	//RequestKeyAgreement 请求协商,计算密钥
	RequestKeyAgreement(keyAgreement *KeyAgreement) error
	//ResponseKeyAgreement 响应协商,计算密钥
	ResponseKeyAgreement(keyAgreement *KeyAgreement) error
	//VerifyKeyAgreement 验证协商结果
	VerifyKeyAgreement(keyAgreement *KeyAgreement) bool
	//EncryptData 加密数据
	EncryptData(data []byte, key []byte) ([]byte, error)
	//DecryptData 解密数据
	DecryptData(data []byte, key []byte) ([]byte, error)
	//EncryptDataPacket 加密数据
	EncryptDataPacket(data *DataPacket, key []byte) error
	//DecryptDataPacket 解密数据
	DecryptDataPacket(data *DataPacket, key []byte) error
}
    Authorization 授权
type AuthorizationBase ¶
type AuthorizationBase struct{}
    func (*AuthorizationBase) DecryptData ¶
func (base *AuthorizationBase) DecryptData(data []byte, key []byte) ([]byte, error)
DecryptData 解密数据
func (*AuthorizationBase) DecryptDataPacket ¶
func (base *AuthorizationBase) DecryptDataPacket(data *DataPacket, key []byte) error
DecryptDataPacket 解密数据
func (*AuthorizationBase) EnableAuth ¶
func (base *AuthorizationBase) EnableAuth() bool
EnableAuth 开启授权
func (*AuthorizationBase) EnableKeyAgreement ¶
func (base *AuthorizationBase) EnableKeyAgreement() bool
EnableKeyAgreement 开启密码协商
func (*AuthorizationBase) EncryptData ¶
func (base *AuthorizationBase) EncryptData(data []byte, key []byte) ([]byte, error)
EncryptData 加密数据
func (*AuthorizationBase) EncryptDataPacket ¶
func (base *AuthorizationBase) EncryptDataPacket(data *DataPacket, key []byte) error
EncryptDataPacket 加密数据
func (*AuthorizationBase) GenerateSignature ¶
func (base *AuthorizationBase) GenerateSignature(data *DataPacket) bool
GenerateSignature 生成签名,并把签名加入到DataPacket中
func (*AuthorizationBase) InitKeyAgreement ¶
func (base *AuthorizationBase) InitKeyAgreement(keyAgreement *KeyAgreement) error
InitKeyAgreement 发起协商
func (*AuthorizationBase) RequestKeyAgreement ¶
func (base *AuthorizationBase) RequestKeyAgreement(keyAgreement *KeyAgreement) error
RequestKeyAgreement 请求协商,计算密钥
func (*AuthorizationBase) ResponseKeyAgreement ¶
func (base *AuthorizationBase) ResponseKeyAgreement(keyAgreement *KeyAgreement) error
ResponseKeyAgreement 响应协商,计算密钥
func (*AuthorizationBase) VerifyKeyAgreement ¶
func (base *AuthorizationBase) VerifyKeyAgreement(keyAgreement *KeyAgreement) bool
VerifyKeyAgreement 是否完成密码协商,验证协商结果
func (*AuthorizationBase) VerifySignature ¶
func (base *AuthorizationBase) VerifySignature(data *DataPacket) bool
VerifySignature 校验签名,若验证错误,可更新错误信息到DataPacket中
type Certificate ¶
type Certificate struct {
	// contains filtered or unexported fields
}
    func NewCertificate ¶
func NewCertificate(privateKey string, consultType ...string) (Certificate, error)
func (*Certificate) ID ¶
func (cert *Certificate) ID() string
func (*Certificate) KeyPair ¶
func (cert *Certificate) KeyPair() (priv string, pub string)
func (*Certificate) PrivateKeyBytes ¶
func (cert *Certificate) PrivateKeyBytes() []byte
func (*Certificate) PublicKeyBytes ¶
func (cert *Certificate) PublicKeyBytes() []byte
type ConnectConfig ¶
type ConnectConfig struct {
	Address            string `json:"address"`            //@required 连接IP地址
	ConnectType        string `json:"connectType"`        //@required 连接方式
	EnableSignature    bool   `json:"enableSignature"`    //是否开启owtp协议内签名,防重放
	Account            string `json:"account"`            //mq账户名
	Password           string `json:"password"`           //mq账户密码
	Exchange           string `json:"exchange"`           //mq需要字段
	WriteQueueName     string `json:"writeQueueName"`     //mq写入通道名
	ReadQueueName      string `json:"readQueueName"`      //mq读取通道名
	EnableSSL          bool   `json:"enableSSL"`          //是否开启链接SSL,https,wss
	ReadBufferSize     int    `json:"readBufferSize"`     //socket读取缓存
	WriteBufferSize    int    `json:"writeBufferSize"`    //socket写入缓存
	EnableKeyAgreement bool   `json:"enableKeyAgreement"` //是否开启协商密码
}
    节点主配置 作为json解析工具
type ConnectType ¶
type ConnectType int
type Context ¶
type Context struct {
	//节点ID
	PID string
	//传输类型,1:请求,2:响应
	Req uint64
	//请求的远程IP
	RemoteAddress string
	//方法
	Method string
	//响应
	Resp Response
	//节点指针
	Peer Peer
	//数据包版本
	Version int64
	// contains filtered or unexported fields
}
    func NewContext ¶
NewContext
func (*Context) DelSession ¶
DelSession removes value from session.
func (*Context) DestroySession ¶
func (ctx *Context) DestroySession()
DestroySession cleans session data
func (*Context) GetSession ¶
GetSession gets value from session.
func (*Context) ResponseStopRun ¶
ResponseStopRun 中断操作,Context.stop = true,将不再执行后面的绑定的业务 并完成Response处理
func (*Context) SetSession ¶
SetSession puts value into session.
type DataPacket ¶
type DataPacket struct {
	Req        uint64      `json:"r"`
	Method     string      `json:"m"`
	Nonce      uint64      `json:"n" storm:"id"`
	Timestamp  int64       `json:"t"`
	Data       interface{} `json:"d"`
	Signature  string      `json:"s"`
	SecretData SecretData  `json:"k"`
	Version    int64       `json:"v"`
}
    DataPacket 数据包
func NewDataPacket ¶
func NewDataPacket(json gjson.Result) *DataPacket
NewDataPacket 通过 gjson转为DataPacket
type HTTPClient ¶
type HTTPClient struct {
	ReadBufferSize  int
	WriteBufferSize int
	// contains filtered or unexported fields
}
    HTTPClient 基于http的通信服务端
func HTTPDial ¶
func HTTPDial( pid, url string, handler PeerHandler, header map[string]string, timeout time.Duration) (*HTTPClient, error)
func NewHTTPClient ¶
func NewHTTPClient(pid string, responseWriter http.ResponseWriter, request *http.Request, hander PeerHandler, auth Authorization) (*HTTPClient, error)
func NewHTTPClientWithHeader ¶
func NewHTTPClientWithHeader(responseWriter http.ResponseWriter, request *http.Request, hander PeerHandler, enableSignature bool) (*HTTPClient, error)
func (*HTTPClient) ConnectConfig ¶
func (c *HTTPClient) ConnectConfig() ConnectConfig
func (*HTTPClient) EnableKeyAgreement ¶
func (c *HTTPClient) EnableKeyAgreement() bool
func (*HTTPClient) IsConnected ¶
func (c *HTTPClient) IsConnected() bool
func (*HTTPClient) IsHost ¶
func (c *HTTPClient) IsHost() bool
func (*HTTPClient) PID ¶
func (c *HTTPClient) PID() string
type KeyAgreement ¶
type KeyAgreement struct {
	EncryptType            string //协商密码类型
	PublicKeyInitiator     string //发送方:本地公钥
	PrivateKeyInitiator    string //发送方:本地私钥
	TmpPublicKeyInitiator  string //发送方:临时公钥
	TmpPrivateKeyInitiator string //发送方:临时私钥
	PublicKeyResponder     string //响应方:本地公钥
	PrivateKeyResponder    string //响应方:本地私钥
	TmpPublicKeyResponder  string //响应方:临时公钥
	TmpPrivateKeyResponder string //响应方:临时私钥
	S2                     string //响应方:本地验证码,RequestKeyAgreement生成
	SB                     string //响应方:生成协商密码的必要验证码,RequestKeyAgreement生成
	SA                     string //发送方:本地验证码,ResponseKeyAgreement生成
	Key                    string //协商的密钥
}
    KeyAgreement 协商密码
type MQClient ¶
type MQClient struct {
	ReadBufferSize  int
	WriteBufferSize int
	// contains filtered or unexported fields
}
    MQClient 基于mq的通信客户端
func MQDial ¶
func MQDial(pid, url string, handler PeerHandler) (*MQClient, error)
Dial connects a client to the given URL.
func NewMQClient ¶
func NewMQClient(pid string, conn *amqp.Connection, channel *amqp.Channel, hander PeerHandler, auth Authorization, done func()) (*MQClient, error)
func (*MQClient) ConnectConfig ¶
func (c *MQClient) ConnectConfig() ConnectConfig
func (*MQClient) EnableKeyAgreement ¶
func (*MQClient) IsConnected ¶
type NodeConfig ¶
type NodeConfig struct {
	TimeoutSEC int         `json:"timeoutSEC"` //超时时间
	Cert       Certificate `json:"cert"`       //证书
	Peerstore  Peerstore   //会话缓存
}
    节点主配置 作为json解析工具
type OWTPAuth ¶
type OWTPAuth struct {
	AuthorizationBase
	// contains filtered or unexported fields
}
    Authorization 授权
func NewOWTPAuthWithCertificate ¶
func NewOWTPAuthWithCertificate(cert Certificate, enable bool) (*OWTPAuth, error)
func (*OWTPAuth) DecryptData ¶
DecryptData 解密数据
func (*OWTPAuth) DecryptDataPacket ¶
func (auth *OWTPAuth) DecryptDataPacket(packet *DataPacket, key []byte) error
DecryptDataPacket 解密数据
func (*OWTPAuth) EnableKeyAgreement ¶
EnableKeyAgreement 开启密码协商
func (*OWTPAuth) EncryptData ¶
EncryptData 加密数据
func (*OWTPAuth) EncryptDataPacket ¶
func (auth *OWTPAuth) EncryptDataPacket(packet *DataPacket, key []byte) error
EncryptDataPacket 加密数据
func (*OWTPAuth) GenerateSignature ¶
func (auth *OWTPAuth) GenerateSignature(data *DataPacket) bool
GenerateSignature 生成签名,并把签名加入到DataPacket中
func (*OWTPAuth) HTTPAuthHeader ¶
AuthHeader 返回授权头
func (*OWTPAuth) InitKeyAgreement ¶
func (auth *OWTPAuth) InitKeyAgreement(keyAgreement *KeyAgreement) error
InitKeyAgreement 发起协商
func (*OWTPAuth) RequestKeyAgreement ¶
func (auth *OWTPAuth) RequestKeyAgreement(keyAgreement *KeyAgreement) error
RequestKeyAgreement 请求协商
func (*OWTPAuth) ResponseKeyAgreement ¶
func (auth *OWTPAuth) ResponseKeyAgreement(keyAgreement *KeyAgreement) error
ResponseKeyAgreement 响应协商
func (*OWTPAuth) VerifyKeyAgreement ¶
func (auth *OWTPAuth) VerifyKeyAgreement(keyAgreement *KeyAgreement) bool
func (*OWTPAuth) VerifySignature ¶
func (auth *OWTPAuth) VerifySignature(data *DataPacket) bool
VerifySignature 校验签名,若验证错误,可更新错误信息到DataPacket中
type OWTPNode ¶
type OWTPNode struct {
	//Broadcast   chan BroadcastMessage
	Join  chan Peer
	Leave chan Peer
	Stop  chan struct{}
	// contains filtered or unexported fields
}
    OWTPNode 实现OWTP协议的节点
func NewOWTPNode ¶
func NewOWTPNode(cert Certificate, readBufferSize, writeBufferSize int) *OWTPNode
NewOWTPNode 创建OWTP协议节点
func (*OWTPNode) AddOnlinePeer ¶
AddOnlinePeer 添加在线节点
func (*OWTPNode) Call ¶
func (node *OWTPNode) Call( pid string, method string, params interface{}, sync bool, reqFunc RequestFunc) error
Call 向对方节点进行调用
func (*OWTPNode) CloseListener ¶
CloseListener 关闭监听
func (*OWTPNode) Connect ¶
func (node *OWTPNode) Connect(pid string, config ConnectConfig) (Peer, error)
Connect 建立长连接
func (*OWTPNode) ConnectAndCall ¶
func (node *OWTPNode) ConnectAndCall( pid string, config ConnectConfig, method string, params interface{}, sync bool, reqFunc RequestFunc) error
ConnectAndCall 通过连接配置并直接请求,如果节点在线使用当前连接请求
func (*OWTPNode) GetOnlinePeer ¶
GetOnlinePeer 获取当前在线的Peer
func (*OWTPNode) GetValueForPeer ¶
func (*OWTPNode) HandleFinishFunc ¶
func (node *OWTPNode) HandleFinishFunc(handler HandlerFunc)
HandleFinishFunc 绑定结束后的处理方法
func (*OWTPNode) HandleFunc ¶
func (node *OWTPNode) HandleFunc(method string, handler HandlerFunc)
HandleFunc 绑定路由器方法
func (*OWTPNode) HandlePrepareFunc ¶
func (node *OWTPNode) HandlePrepareFunc(handler HandlerFunc)
HandlePrepareFunc 绑定准备前的处理方法
func (*OWTPNode) IsConnectPeer ¶
IsConnectPeer 是否连接某个节点
func (*OWTPNode) KeyAgreement ¶
KeyAgreement 发起协商请求 这是一个同步请求
func (*OWTPNode) OnPeerClose ¶
OnPeerClose 节点关闭
func (*OWTPNode) OnPeerNewDataPacketReceived ¶
func (node *OWTPNode) OnPeerNewDataPacketReceived(peer Peer, packet *DataPacket)
OnPeerNewDataPacketReceived 节点获取新数据包
func (*OWTPNode) PutValueForPeer ¶
func (*OWTPNode) RemoveOfflinePeer ¶
RemoveOfflinePeer 移除不在线的节点
func (*OWTPNode) SetCloseHandler ¶
SetCloseHandler 设置关闭连接时的回调
func (*OWTPNode) SetOpenHandler ¶
SetCloseHandler 设置关闭连接时的回调
func (*OWTPNode) SetPeerstore ¶
SetPeerstore 设置一个Peerstore指针
type Peer ¶
type Peer interface {
	PID() string                  //节点ID
	IsHost() bool                 //是否主机,我方主动连接的节点
	IsConnected() bool            //是否已经连接
	LocalAddr() net.Addr          //本地节点地址
	RemoteAddr() net.Addr         //远程节点地址
	ConnectConfig() ConnectConfig // 返回配置信息
	EnableKeyAgreement() bool     //EnableKeyAgreement 开启密码协商
	// contains filtered or unexported methods
}
    Peer 节点
type PeerAttribute ¶
type PeerAttribute map[string]interface{}
type PeerHandler ¶
type PeerHandler interface {
	OnPeerOpen(peer Peer)                                      //节点连接成功
	OnPeerClose(peer Peer, reason string)                      //节点关闭
	OnPeerNewDataPacketReceived(peer Peer, packet *DataPacket) //节点获取新数据包
	GetValueForPeer(peer Peer, key string) interface{}
	PutValueForPeer(peer Peer, key string, val interface{}) error
}
    PeerHandler 节点监听器
type PeerInfo ¶
type PeerInfo struct {
	ID     string
	Config ConnectConfig
}
    type Peerstore ¶
type Peerstore interface {
	// SaveAddr 保存节点地址
	SavePeer(peer Peer)
	//PeerInfo 节点信息
	PeerInfo(id string) PeerInfo
	// Get 获取节点属性
	Get(id string, key string) interface{}
	// GetString
	GetString(id string, key string) string
	// Put 设置节点属性
	Put(id string, key string, val interface{}) error
	// Delete 设置节点属性
	Delete(id string, key string) error
	//Destroy 清空store数据
	Destroy(id string) error
}
    Peerstore 节点存储器
type Response ¶
type SecretData ¶
type SecretData struct {
	PublicKeyInitiator    string `json:"pk"`  //发起方公钥
	TmpPublicKeyInitiator string `json:"tpk"` //发起方临时公钥
	EncryptType           string `json:"et"`  //加密类型
	PublicKeyResponder    string `json:"pko"` //响应方公钥
	TmpPublicKeyResponder string `json:"tpo"` //响应方临时公钥
	SB                    string `json:"sb"`  //响应方发送给发起方的校验值
	SA                    string `json:"sa"`  //发起方发送给响应方的校验值
	S2                    string `json:"s2"`  //响应方协商密码计算的校验值
}
    KeyAgreement 协商密码
type ServeMux ¶
type ServeMux struct {
	// contains filtered or unexported fields
}
    ServeMux 多路复用服务
func NewServeMux ¶
func (*ServeMux) AddRequest ¶
func (mux *ServeMux) AddRequest(peer Peer, nonce uint64, time int64, method string, reqFunc RequestFunc, respChan chan Response, sync bool) error
AddRequest 添加请求到队列 @param nonce 递增不可重复 @param method API方法名 @param reqFunc 异步请求的回调函数 @param respChan 同步请求的响应通道 @param sync 是否同步
func (*ServeMux) HandleFunc ¶
func (mux *ServeMux) HandleFunc(method string, handler HandlerFunc)
HandleFunc 路由处理器绑定 @param method API方法名 @param handler 处理方法入口
func (*ServeMux) RemoveRequest ¶
RemoveRequest 移除请求
func (*ServeMux) ResetRequestQueue ¶
ResetRequestQueue 重置请求队列
type SessionManager ¶
type SessionManager struct {
	// contains filtered or unexported fields
}
    SessionManager contains Provider and its configuration.
func NewSessionManager ¶
func NewSessionManager(provideName string, cf *session.ManagerConfig) (*SessionManager, error)
NewManager Create new Manager with provider name and json config string. provider name: 1. cookie 2. file 3. memory 4. redis 5. mysql json config: 1. is https default false 2. hashfunc default sha1 3. hashkey default beegosessionkey 4. maxage default is none
func (*SessionManager) Delete ¶
func (store *SessionManager) Delete(id string, key string) error
Delete
func (*SessionManager) GC ¶
func (store *SessionManager) GC()
GC Start session gc process. it can do gc in times after gc lifetime.
func (*SessionManager) Get ¶
func (store *SessionManager) Get(id string, key string) interface{}
Get 获取节点属性
func (*SessionManager) GetActiveSession ¶
func (store *SessionManager) GetActiveSession() int
GetActiveSession Get all active sessions count number.
func (*SessionManager) GetProvider ¶
func (store *SessionManager) GetProvider() session.Provider
GetProvider return current manager's provider
func (*SessionManager) GetSessionStore ¶
func (store *SessionManager) GetSessionStore(pid string) (sessions session.Store, err error)
GetSessionStore Get SessionStore by its id.
func (*SessionManager) GetString ¶
func (store *SessionManager) GetString(id string, key string) string
GetString
func (*SessionManager) PeerInfo ¶
func (store *SessionManager) PeerInfo(id string) PeerInfo
PeerInfo 节点信息
func (*SessionManager) Put ¶
func (store *SessionManager) Put(id string, key string, val interface{}) error
Put 设置节点属性
func (*SessionManager) SessionDestroy ¶
func (store *SessionManager) SessionDestroy(pid string)
SessionDestroy Destroy session by its id in http request cookie.
type WSClient ¶
type WSClient struct {
	ReadBufferSize  int
	WriteBufferSize int
	// contains filtered or unexported fields
}
    WSClient 基于websocket的通信客户端
func Dial ¶
func Dial( pid, url string, handler PeerHandler, header map[string]string, ReadBufferSize, WriteBufferSize int) (*WSClient, error)
Dial connects a client to the given URL.
func NewWSClient ¶
func NewWSClient(pid string, conn *websocket.Conn, handler PeerHandler, auth Authorization, done func()) (*WSClient, error)
func NewWSClientWithHeader ¶
func NewWSClientWithHeader(header http.Header, cert Certificate, conn *websocket.Conn, handler PeerHandler, enableSignature bool, done func()) (*WSClient, error)
func (*WSClient) ConnectConfig ¶
func (c *WSClient) ConnectConfig() ConnectConfig