erlang网络库
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.7 KiB

  1. -ifndef(UT_PROXY_PT_H).
  2. -define(UT_PROXY_PT_H, true).
  3. %%--------------------------------------------------------------------
  4. %% SSL socket wrapper
  5. %%--------------------------------------------------------------------
  6. -record(ssl_socket, {tcp :: inet:socket() | undefined, %% dtls
  7. ssl :: ssl:sslsocket()}).
  8. -define(IS_SSL(Sock), is_record(Sock, ssl_socket)).
  9. %%--------------------------------------------------------------------
  10. %% Proxy-Protocol Socket Wrapper
  11. %%--------------------------------------------------------------------
  12. -type(pp2_additional_ssl_field() :: {pp2_ssl_client, boolean()}
  13. | {pp2_ssl_client_cert_conn, boolean()}
  14. | {pp2_ssl_client_cert_sess, boolean()}
  15. | {pp2_ssl_verify, success | failed}
  16. | {pp2_ssl_version, binary()} % US-ASCII string
  17. | {pp2_ssl_cn, binary()} % UTF8-encoded string
  18. | {pp2_ssl_cipher, binary()} % US-ASCII string
  19. | {pp2_ssl_sig_alg, binary()} % US-ASCII string
  20. | {pp2_ssl_key_alg, binary()}).% US-ASCII string
  21. -type(pp2_additional_field() :: {pp2_alpn, binary()} % byte sequence
  22. | {pp2_authority, binary()} % UTF8-encoded string
  23. | {pp2_crc32c, integer()} % 32-bit number
  24. | {pp2_netns, binary()} % US-ASCII string
  25. | {pp2_ssl, list(pp2_additional_ssl_field())}).
  26. -record(proxy_socket, {inet :: inet4 | inet6 | 'unix' | 'unspec',
  27. socket :: inet:socket() | #ssl_socket{},
  28. src_addr :: inet:ip_address() | undefined,
  29. dst_addr :: inet:ip_address() | undefined,
  30. src_port :: inet:port_number() | undefined,
  31. dst_port :: inet:port_number() | undefined,
  32. %% Proxy protocol v2 addtional fields
  33. pp2_additional_info = [] :: list(pp2_additional_field())}).
  34. -define(IS_PROXY(Sock), is_record(Sock, proxy_socket)).
  35. -endif.