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.
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.
--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.
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.