Mercurial > ~mikael > mcabber > hg
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(); |