changeset 429:0bb3d37579aa

Enable proxy support
author Mikael Berthe <mikael@lilotux.net>
date Sat, 10 Sep 2005 14:53:01 +0200
parents 4470868f90e5
children d03663d2e7d9
files mcabber/mcabberrc.example mcabber/src/main.c
diffstat 2 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/mcabberrc.example	Sat Sep 10 14:51:57 2005 +0200
+++ b/mcabber/mcabberrc.example	Sat Sep 10 14:53:01 2005 +0200
@@ -19,6 +19,14 @@
 set resource = mcabber
 #set priority = 3
 
+# Proxy
+# mcabber can use a proxy if it supports the CONNECT method
+# The proxy_user/proxy_pass variables are optional.
+#set proxy_host = "proxy-hostname"
+#set proxy_port = 3128
+#set proxy_user = "username"
+#set proxy_pass = "password"
+
 # Keepalive
 # If you need a ping/keepalive to leave your connection open, you
 # can use the pinginterval.  Setting this option to 0 disables the ping.
--- a/mcabber/src/main.c	Sat Sep 10 14:51:57 2005 +0200
+++ b/mcabber/src/main.c	Sat Sep 10 14:53:01 2005 +0200
@@ -46,6 +46,7 @@
 void mcabber_connect(void)
 {
   const char *username, *password, *resource, *servername;
+  const char *proxy_host;
   char *jid;
   int ssl;
   unsigned int port;
@@ -54,6 +55,7 @@
   username   = settings_opt_get("username");
   password   = settings_opt_get("password");
   resource   = settings_opt_get("resource");
+  proxy_host = settings_opt_get("proxy_host");
 
   if (!servername) {
     scr_LogPrint(LPRINT_NORMAL, "Server name has not been specified!");
@@ -81,6 +83,21 @@
   if (port)
     scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using port %d", port);
 
+  if (proxy_host) {
+    int proxy_port = settings_opt_get_int("proxy_port");
+    if (proxy_port <= 0 || proxy_port > 65535) {
+      scr_LogPrint(LPRINT_LOGNORM, "Invalid proxy port: %d", proxy_port);
+    } else {
+      const char *proxy_user, *proxy_pass;
+      proxy_user = settings_opt_get("proxy_user");
+      proxy_pass = settings_opt_get("proxy_pass");
+      // Proxy initialization
+      cw_setproxy(proxy_host, proxy_port, proxy_user, proxy_pass);
+      scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using proxy %s:%d",
+                   proxy_host, proxy_port);
+    }
+  }
+
   jid = compose_jid(username, servername, resource);
   jc = jb_connect(jid, servername, port, ssl, password);
   g_free(jid);