|
|
- -define(nlTcpMgrSup, nlTcpMgrSup).
- -define(nlSslMgrSup, nlSslMgrSup).
- -define(nlUdpMgrSup, nlUdpMgrSup).
- -define(nlDtlsMgrSup, nlDtlsMgrSup).
-
- -define(miSockReady, miSockReady).
-
- -define(WARN(Tag, Format, Data), nlNetCom:warnMsg(Tag, Format, Data)).
- -define(getListValue(Key, List, Default), nlNetCom:getListValue(Key, List, Default)).
-
- -define(SSL_CLOSE_TIMEOUT, 5000).
- -define(SSL_HANDSHAKE_TIMEOUT, 15000).
- -define(PROXY_RECV_TIMEOUT, 5000).
-
- -type(listenOpt() ::
- {acceptors, non_neg_integer()} |
- {tcpOpts, [gen_tcp:listen_option()]} |
- {sslOpts, [ssl:ssl_option()]} |
- {udpOpts, [gen_udp:option()]} |
- {dtlsOpts, [gen_udp:option() | ssl:ssl_option()]}).
-
- -type(listenOn() :: inet:port_number() | {host(), inet:port_number()}).
-
- %%--------------------------------------------------------------------
- %% SSL socket wrapper
- %%--------------------------------------------------------------------
-
- -record(ssl_socket, {tcp :: inet:socket(), ssl :: ssl:sslsocket()}).
-
- -define(IS_SSL(Sock), is_record(Sock, ssl_socket)).
-
- %% 令牌桶相关定义
- -record(tokenBucket, {
- rate :: pos_integer() %% 速率
- , tokens :: non_neg_integer() %% 剩余tokens数量
- , lastTime :: pos_integer() %% 最后一次更新访问时间单位毫秒
- , bucketSize :: pos_integer() %% 桶大小 可以容纳的令牌数量
- }).
-
- %%--------------------------------------------------------------------
- %% Proxy-Protocol Socket Wrapper
- %%--------------------------------------------------------------------
-
- -export_type([listenOn/0]).
-
- -type(proto() :: atom()).
- -type(transport() :: module()).
- -type(udp_transport() :: {udp | dtls, pid(), inet:socket()}).
- -type(socket() :: esockd_transport:socket()).
- -type(mfargs() :: atom() | {atom(), atom()} | {module(), atom(), [term()]}).
- -type(sock_fun() :: fun((esockd_transport:socket()) -> {ok, esockd_transport:socket()} | {error, term()})).
-
- -type(host() :: inet:ip_address() | string()).
- -type(listen_on() :: inet:port_number() | {host(), inet:port_number()}).
-
- -type(pp2_additional_ssl_field() :: {pp2_ssl_client, boolean()}
- | {pp2_ssl_client_cert_conn, boolean()}
- | {pp2_ssl_client_cert_sess, boolean()}
- | {pp2_ssl_verify, success | failed}
- | {pp2_ssl_version, binary()} % US-ASCII string
- | {pp2_ssl_cn, binary()} % UTF8-encoded string
- | {pp2_ssl_cipher, binary()} % US-ASCII string
- | {pp2_ssl_sig_alg, binary()} % US-ASCII string
- | {pp2_ssl_key_alg, binary()}).% US-ASCII string
-
- -type(pp2_additional_field() :: {pp2_alpn, binary()} % byte sequence
- | {pp2_authority, binary()} % UTF8-encoded string
- | {pp2_crc32c, integer()} % 32-bit number
- | {pp2_netns, binary()} % US-ASCII string
- | {pp2_ssl, list(pp2_additional_ssl_field())}).
-
- -record(proxy_socket, {inet :: inet4 | inet6 | 'unix' | 'unspec',
- socket :: inet:socket() | #ssl_socket{},
- src_addr :: inet:ip_address() | undefined,
- dst_addr :: inet:ip_address() | undefined,
- src_port :: inet:port_number() | undefined,
- dst_port :: inet:port_number() | undefined,
- %% Proxy protocol v2 addtional fields
- pp2_additional_info = [] :: list(pp2_additional_field())}).
-
- -define(IS_PROXY(Sock), is_record(Sock, proxy_socket)).
-
|