Add NNTP support (RFC 4642) to s_client ("-starttls nntp")
Reviewed-by: Andy Polyakov <appro@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2310)
This commit is contained in:
parent
bc1dba2095
commit
8f85aa6bd3
2 changed files with 31 additions and 2 deletions
|
@ -746,7 +746,8 @@ typedef enum PROTOCOL_choice {
|
|||
PROTO_CONNECT,
|
||||
PROTO_IRC,
|
||||
PROTO_POSTGRES,
|
||||
PROTO_LMTP
|
||||
PROTO_LMTP,
|
||||
PROTO_NNTP
|
||||
} PROTOCOL_CHOICE;
|
||||
|
||||
static const OPT_PAIR services[] = {
|
||||
|
@ -760,6 +761,7 @@ static const OPT_PAIR services[] = {
|
|||
{"irc", PROTO_IRC},
|
||||
{"postgres", PROTO_POSTGRES},
|
||||
{"lmtp", PROTO_LMTP},
|
||||
{"nntp", PROTO_NNTP},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
|
@ -2172,6 +2174,33 @@ int s_client_main(int argc, char **argv)
|
|||
goto shut;
|
||||
}
|
||||
break;
|
||||
case PROTO_NNTP:
|
||||
{
|
||||
int foundit = 0;
|
||||
BIO *fbio = BIO_new(BIO_f_buffer());
|
||||
|
||||
BIO_push(fbio, sbio);
|
||||
BIO_gets(fbio, mbuf, BUFSIZZ);
|
||||
/* STARTTLS command requires CAPABILITIES... */
|
||||
BIO_printf(fbio, "CAPABILITIES\r\n");
|
||||
(void)BIO_flush(fbio);
|
||||
/* wait for multi-line CAPABILITIES response */
|
||||
do {
|
||||
mbuf_len = BIO_gets(fbio, mbuf, BUFSIZZ);
|
||||
if (strstr(mbuf, "STARTTLS"))
|
||||
foundit = 1;
|
||||
} while (mbuf_len > 1 && mbuf[0] != '.');
|
||||
(void)BIO_flush(fbio);
|
||||
BIO_pop(fbio);
|
||||
BIO_free(fbio);
|
||||
if (!foundit)
|
||||
BIO_printf(bio_err,
|
||||
"Didn't find STARTTLS in server response,"
|
||||
" trying anyway...\n");
|
||||
BIO_printf(sbio, "STARTTLS\r\n");
|
||||
BIO_read(sbio, sbuf, BUFSIZZ);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
|
|
|
@ -437,7 +437,7 @@ command for more information.
|
|||
send the protocol-specific message(s) to switch to TLS for communication.
|
||||
B<protocol> is a keyword for the intended protocol. Currently, the only
|
||||
supported keywords are "smtp", "pop3", "imap", "ftp", "xmpp", "xmpp-server",
|
||||
"irc", "postgres" and "lmtp".
|
||||
"irc", "postgres", "lmtp" and "nntp".
|
||||
|
||||
=item B<-xmpphost hostname>
|
||||
|
||||
|
|
Loading…
Reference in a new issue