comparison mcabber/src/main.c @ 1421:0b8701386bde

Randomize the default resource
author Mikael Berthe <mikael@lilotux.net>
date Sun, 17 Feb 2008 19:15:50 +0100
parents 366ef500c522
children 757ebe4df0b9
comparison
equal deleted inserted replaced
1420:08f641e91f94 1421:0b8701386bde
68 68
69 void mcabber_connect(void) 69 void mcabber_connect(void)
70 { 70 {
71 const char *username, *password, *resource, *servername; 71 const char *username, *password, *resource, *servername;
72 const char *proxy_host; 72 const char *proxy_host;
73 char *bjid; 73 char *dynresource = NULL;
74 char *fjid;
74 int ssl; 75 int ssl;
75 int sslverify = -1; 76 int sslverify = -1;
76 const char *sslvopt = NULL, *cafile = NULL, *capath = NULL, *ciphers = NULL; 77 const char *sslvopt = NULL, *cafile = NULL, *capath = NULL, *ciphers = NULL;
77 static char *cafile_xp, *capath_xp; 78 static char *cafile_xp, *capath_xp;
78 unsigned int port; 79 unsigned int port;
98 } 99 }
99 if (!password) { 100 if (!password) {
100 scr_LogPrint(LPRINT_NORMAL, "Password has not been specified!"); 101 scr_LogPrint(LPRINT_NORMAL, "Password has not been specified!");
101 return; 102 return;
102 } 103 }
103 if (!resource)
104 resource = "mcabber";
105 104
106 port = (unsigned int) settings_opt_get_int("port"); 105 port = (unsigned int) settings_opt_get_int("port");
107 106
108 ssl = settings_opt_get_int("ssl"); 107 ssl = settings_opt_get_int("ssl");
109 sslvopt = settings_opt_get("ssl_verify"); 108 sslvopt = settings_opt_get("ssl_verify");
137 capath_xp = expand_filename(capath); 136 capath_xp = expand_filename(capath);
138 cw_set_ssl_options(sslverify, cafile_xp, capath_xp, ciphers, servername); 137 cw_set_ssl_options(sslverify, cafile_xp, capath_xp, ciphers, servername);
139 // We can't free the ca*_xp variables now, because they're not duplicated 138 // We can't free the ca*_xp variables now, because they're not duplicated
140 // in cw_set_ssl_options(). 139 // in cw_set_ssl_options().
141 140
141 if (!resource) {
142 unsigned int tab[2];
143 srand(time(NULL));
144 tab[0] = (unsigned int) (0xffff * (rand() / (RAND_MAX + 1.0)));
145 tab[1] = (unsigned int) (0xffff * (rand() / (RAND_MAX + 1.0)));
146 dynresource = g_strdup_printf("%s.%04x%04x", PACKAGE_NAME,
147 tab[0], tab[1]);
148 resource = dynresource;
149 }
150
142 /* Connect to server */ 151 /* Connect to server */
143 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, "Connecting to server: %s", 152 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, "Connecting to server: %s",
144 servername); 153 servername);
145 if (port) 154 if (port)
146 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using port %d", port); 155 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using port %d", port);
156 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " resource %s", resource);
147 157
148 if (proxy_host) { 158 if (proxy_host) {
149 int proxy_port = settings_opt_get_int("proxy_port"); 159 int proxy_port = settings_opt_get_int("proxy_port");
150 if (proxy_port <= 0 || proxy_port > 65535) { 160 if (proxy_port <= 0 || proxy_port > 65535) {
151 scr_LogPrint(LPRINT_LOGNORM, "Invalid proxy port: %d", proxy_port); 161 scr_LogPrint(LPRINT_LOGNORM, "Invalid proxy port: %d", proxy_port);
158 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using proxy %s:%d", 168 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using proxy %s:%d",
159 proxy_host, proxy_port); 169 proxy_host, proxy_port);
160 } 170 }
161 } 171 }
162 172
163 bjid = compose_jid(username, servername, resource); 173 fjid = compose_jid(username, servername, resource);
164 #if defined(HAVE_LIBOTR) 174 #if defined(HAVE_LIBOTR)
165 otr_init(bjid); 175 otr_init(fjid);
166 #endif 176 #endif
167 jc = jb_connect(bjid, servername, port, ssl, password); 177 jc = jb_connect(fjid, servername, port, ssl, password);
168 g_free(bjid); 178 g_free(fjid);
179 g_free(dynresource);
169 180
170 if (!jc) 181 if (!jc)
171 scr_LogPrint(LPRINT_LOGNORM, "Error connecting to (%s)", servername); 182 scr_LogPrint(LPRINT_LOGNORM, "Error connecting to (%s)", servername);
172 183
173 jb_reset_keepalive(); 184 jb_reset_keepalive();