From b2e54eb834e2d5a79d03f12a818d68f82c0e3d13 Mon Sep 17 00:00:00 2001 From: Valentin Vidic Date: Mon, 15 Feb 2016 15:28:41 +0100 Subject: [PATCH] Add Postgres support to -starttls Reviewed-by: Rich Salz Reviewed-by: Tim Hudson --- apps/s_client.c | 23 ++++++++++++++++++++++- doc/apps/s_client.pod | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/apps/s_client.c b/apps/s_client.c index 0442aecf96..c2a00f539d 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -739,7 +739,8 @@ typedef enum PROTOCOL_choice { PROTO_XMPP, PROTO_XMPP_SERVER, PROTO_CONNECT, - PROTO_IRC + PROTO_IRC, + PROTO_POSTGRES } PROTOCOL_CHOICE; static const OPT_PAIR services[] = { @@ -751,6 +752,7 @@ static const OPT_PAIR services[] = { {"xmpp-server", PROTO_XMPP_SERVER}, {"telnet", PROTO_TELNET}, {"irc", PROTO_IRC}, + {"postgres", PROTO_POSTGRES}, {NULL, 0} }; @@ -2084,6 +2086,25 @@ int s_client_main(int argc, char **argv) goto shut; } } + break; + case PROTO_POSTGRES: + { + static const unsigned char ssl_request[] = { + /* Length SSLRequest */ + 0, 0, 0, 8, 4, 210, 22, 47 + }; + int bytes; + + /* Send SSLRequest packet */ + BIO_write(sbio, ssl_request, 8); + (void)BIO_flush(sbio); + + /* Reply will be a single S if SSL is enabled */ + bytes = BIO_read(sbio, sbuf, BUFSIZZ); + if (bytes != 1 || sbuf[0] != 'S') + goto shut; + } + break; } for (;;) { diff --git a/doc/apps/s_client.pod b/doc/apps/s_client.pod index 7ad9811118..4a2a28021c 100644 --- a/doc/apps/s_client.pod +++ b/doc/apps/s_client.pod @@ -420,7 +420,7 @@ command for more information. send the protocol-specific message(s) to switch to TLS for communication. B is a keyword for the intended protocol. Currently, the only supported keywords are "smtp", "pop3", "imap", "ftp", "xmpp", "xmpp-server", -and "irc." +"irc" and "postgres." =item B<-xmpphost hostname> -- 2.25.1