confab is an asynchronous line-oriented interactive TCP client with TLS
support. Use it to connect to a TCP server, and you'll be able to send
messages line by line while lines received from the remote server are printed
above the prompt.
Usage
confab [<options>] <host> <port>
Open a TCP connection to the given host and port. Lines entered by the user at
the confab prompt are sent to the remote server and echoed locally with a ">"
prefix, while lines received from the remote server are printed out above the
prompt with a "<" prefix. Communication stops when the remote server closes
the connection or when the user presses Ctrl-D.
confab relies on
rustyline-async for its
readline-like capabilities; see there for the supported control sequences.
Options
-
--crlf— Append CR LF ("\r\n") to each line sent to the remote server instead of just LF ("\n") -
-E <encoding>,--encoding <encoding>— Set the text encoding for the connection. The available options are:-
utf8— Use UTF-8. If a line received from the remote server contains an invalid UTF-8 sequence, the sequence is replaced with U+FFFD REPLACEMENT CHARACTER (�). -
utf8-latin1— Use UTF-8. If a line received from the remote server contains an invalid UTF-8 sequence, the entire line is instead decoded as Latin-1. (Useful for IRC!) -
latin1— Use Latin-1 (a.k.a. ISO-8859-1). If a line sent to the remote server contains non-Latin-1 characters, they are replaced with question marks (?).
-
-
-M <LIMIT>,--max-line-length <LIMIT>— Set the maximum length in bytes of each line read from the remote server (including the terminating newline). If the server sends a line longer than this, the first<LIMIT>bytes will be split off and treated as a whole line, with the remaining bytes treated as the start of a new line. [default value: 65535] -
--servername <DOMAIN>— (with--tls) Use the given domain name for SNI and certificate hostname validation; defaults to the remote host name -
-t,--show-times— Prepend a timestamp of the form[HH:MM:SS]to each line printed to the terminal -
--tls— Connect using SSL/TLS -
-T <file>,--transcript <file>— Append a transcript of events to the given file. See Transcript Format below for more information.
Transcript Format
The session transcripts produced by the -T option take the form of JSON Lines
(a.k.a. newline-delimited JSON), that is, a series of lines with one JSON
object per line. Each JSON object represents an event such as a line sent, a
line received, or the start or end of the connection.
Each object contains, at minimum, a "timestamp" field containing a timestamp
for the event in the form "YYYY-MM-DDTHH:MM:SS.ssssss+HH:MM" and an "event"
field identifying the type of event. The possible values for the "event"
field, along with any accompanying further fields, are as follows:
-
"connection-start"— Emitted just before starting to connect to the remote server. The event object also contains"host"and"port"fields listing the remote host & port specified on the command line. -
"connection-complete"— Emitted after connecting successfully (but before negotiating TLS, if applicable). The event object also contains a"peer_ip"field listing the remote IP address that the connection was made to. -
"tls-start"— Emitted before starting the TLS handshake. The event object has no additional fields. -
"tls-complete"— Emitted after completing the TLS handshake. The event object has no additional fields. -
"recv"— Emitted whenever a line is received from the remote server. The event object also contains a"data"field giving the line received, including trailing newline (if any). -
"send"— Emitted whenever a line is send to the remote server. The event object also contains a"data"field giving the line sent, including trailing newline (if any). -
"disconnect"— Emitted when the connection is closed normally. The event object has no additional fields. -
"error"— Emitted when a fatal error occurs. The event object also contains a"data"field giving a human-readable error message.