From 09b4a881253d4703312045b8dc61900725cac3ec Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Tue, 7 Jul 2009 15:39:47 -0300 Subject: [PATCH] Added option server_ssl to indicate whether server is SSL enabled. --- popproxy.c | 22 ++++++++++++++++++---- popproxy.conf | 2 ++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/popproxy.c b/popproxy.c index a10b61b..f5f88bd 100644 --- a/popproxy.c +++ b/popproxy.c @@ -38,10 +38,11 @@ struct pop_address { char *server; char *port; + int ssl; }; static HCConn * -server_conn_new (char *server, char *port) +server_conn_new (char *server, char *port, int ssl) { int fd; HCConn *conn; @@ -54,15 +55,16 @@ server_conn_new (char *server, char *port) return NULL; } conn = hc_conn_new (NULL, NULL); - ssl_conn = hc_conn_new (NULL, NULL); r = hc_conn_set_driver_channel (conn, fd); if (r != 0) { - hc_conn_close (ssl_conn); hc_conn_close (conn); close (fd); return NULL; } + if (!ssl) + return conn; + ssl_conn = hc_conn_new (NULL, NULL); r = hc_conn_set_driver_ssl_client (ssl_conn, conn); if (r != 0) { @@ -141,7 +143,8 @@ new_client (int fd, struct sockaddr *addr, socklen_t saddr, gpointer data) g_message ("Received connection from %s.", inet_ntoa (((struct sockaddr_in *) addr)->sin_addr)); - server_conn = server_conn_new (address->server, address->port); + server_conn = server_conn_new (address->server, address->port, + address->ssl); if (server_conn == NULL) { return; @@ -181,6 +184,7 @@ int main (int argc, char **argv) gchar *port; gchar *server_address; gchar *server_port; + int server_ssl; gchar *certfile; gchar *ssl_keyfile; struct pop_address pop_address; @@ -264,9 +268,19 @@ int main (int argc, char **argv) server_port = g_strdup ("995"); g_error_free (error); } + error = NULL; + server_ssl = g_key_file_get_boolean (keyfile, "global", "server_ssl", + &error); + if (server_ssl == 0 && error != NULL) + { + server_ssl = 0; + g_error_free (error); + } + pop_address.server = server_address; pop_address.port = server_port; + pop_address.ssl = server_ssl; server_fd = hc_tcp_server (port); if (server_fd < 0) diff --git a/popproxy.conf b/popproxy.conf index d93b0eb..d899073 100644 --- a/popproxy.conf +++ b/popproxy.conf @@ -3,5 +3,7 @@ address = 0.0.0.0 port = 1100 server = 127.0.0.1 +server_port = 995 +server_ssl = 1 certfile = "cert.pem" keyfile = "key.pem" -- 2.20.1