Mercurial > pidgin
comparison src/gaimrc.c @ 5681:46d7ad0dfa26
[gaim-migrate @ 6100]
Rewrote the proxy code. It should now work with the new prefs, and it has a
namespace and API too!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Tue, 03 Jun 2003 02:00:33 +0000 |
parents | 5c5678c7b900 |
children | b61520e71679 |
comparison
equal
deleted
inserted
replaced
5680:71cc0d5376c2 | 5681:46d7ad0dfa26 |
---|---|
658 p = parse_line(buf, &parse_buffer); | 658 p = parse_line(buf, &parse_buffer); |
659 | 659 |
660 if (strcmp(p->option, "proxy_opts")) | 660 if (strcmp(p->option, "proxy_opts")) |
661 return account; | 661 return account; |
662 | 662 |
663 if(atoi(p->value[0]) != PROXY_USE_GLOBAL) { | 663 if(atoi(p->value[0]) != GAIM_PROXY_USE_GLOBAL) { |
664 account->gpi = g_new0(struct gaim_proxy_info, 1); | 664 GaimProxyInfo *info; |
665 account->gpi->proxytype = atoi(p->value[0]); | 665 |
666 g_snprintf(account->gpi->proxyhost, sizeof(account->gpi->proxyhost), | 666 info = gaim_proxy_info_new(); |
667 "%s", p->value[1]); | 667 gaim_proxy_info_set_type(info, atoi(p->value[0])); |
668 account->gpi->proxyport = atoi(p->value[2]); | 668 gaim_proxy_info_set_host(info, p->value[1]); |
669 g_snprintf(account->gpi->proxyuser, sizeof(account->gpi->proxyuser), | 669 gaim_proxy_info_set_port(info, atoi(p->value[2])); |
670 "%s", p->value[3]); | 670 gaim_proxy_info_set_username(info, p->value[3]); |
671 g_snprintf(account->gpi->proxypass, sizeof(account->gpi->proxypass), | 671 gaim_proxy_info_set_password(info, p->value[4]); |
672 "%s", p->value[4]); | |
673 } | 672 } |
674 | 673 |
675 return account; | 674 return account; |
676 | 675 |
677 } | 676 } |
1141 } | 1140 } |
1142 } | 1141 } |
1143 | 1142 |
1144 static gboolean gaimrc_parse_proxy_uri(const char *proxy) | 1143 static gboolean gaimrc_parse_proxy_uri(const char *proxy) |
1145 { | 1144 { |
1145 GaimProxyInfo *info; | |
1146 | |
1146 char *c, *d; | 1147 char *c, *d; |
1147 char buffer[2048]; | 1148 char buffer[2048]; |
1148 | 1149 |
1149 char host[128]; | 1150 char host[128]; |
1150 char user[128]; | 1151 char user[128]; |
1219 | 1220 |
1220 c++; | 1221 c++; |
1221 } | 1222 } |
1222 | 1223 |
1223 /* NOTE: HTTP_PROXY takes precendence. */ | 1224 /* NOTE: HTTP_PROXY takes precendence. */ |
1224 if (host[0]) | 1225 info = gaim_global_proxy_get_info(); |
1225 strcpy(global_proxy_info.proxyhost, host); | 1226 |
1226 else | 1227 if (*host) gaim_proxy_info_set_host(info, host); |
1227 *global_proxy_info.proxyhost = '\0'; | 1228 if (*user) gaim_proxy_info_set_username(info, user); |
1228 | 1229 if (*pass) gaim_proxy_info_set_password(info, pass); |
1229 if (user[0]) | 1230 |
1230 strcpy(global_proxy_info.proxyuser, user); | 1231 gaim_proxy_info_set_port(info, port); |
1231 else | |
1232 *global_proxy_info.proxyuser = '\0'; | |
1233 | |
1234 if (pass[0]) | |
1235 strcpy(global_proxy_info.proxypass, pass); | |
1236 else | |
1237 *global_proxy_info.proxypass = '\0'; | |
1238 | |
1239 global_proxy_info.proxyport = port; | |
1240 | 1232 |
1241 gaim_debug(GAIM_DEBUG_MISC, "gaimrc", | 1233 gaim_debug(GAIM_DEBUG_MISC, "gaimrc", |
1242 "Host: '%s', User: '%s', Password: '%s', Port: %d\n", | 1234 "Host: '%s', User: '%s', Password: '%s', Port: %d\n", |
1243 global_proxy_info.proxyhost, global_proxy_info.proxyuser, | 1235 gaim_proxy_info_get_host(info), |
1244 global_proxy_info.proxypass, global_proxy_info.proxyport); | 1236 gaim_proxy_info_get_username(info), |
1237 gaim_proxy_info_get_password(info), | |
1238 gaim_proxy_info_get_port(info)); | |
1245 | 1239 |
1246 return TRUE; | 1240 return TRUE; |
1247 } | 1241 } |
1248 | 1242 |
1249 static void gaimrc_read_proxy(FILE *f) | 1243 static void gaimrc_read_proxy(FILE *f) |
1250 { | 1244 { |
1251 char buf[2048]; | 1245 char buf[2048]; |
1252 struct parse parse_buffer; | 1246 struct parse parse_buffer; |
1253 struct parse *p; | 1247 struct parse *p; |
1248 GaimProxyInfo *info; | |
1249 | |
1250 info = gaim_global_proxy_get_info(); | |
1254 | 1251 |
1255 buf[0] = 0; | 1252 buf[0] = 0; |
1256 global_proxy_info.proxyhost[0] = 0; | |
1257 gaim_debug(GAIM_DEBUG_MISC, "gaimrc", "gaimrc_read_proxy\n"); | 1253 gaim_debug(GAIM_DEBUG_MISC, "gaimrc", "gaimrc_read_proxy\n"); |
1258 | 1254 |
1259 while (buf[0] != '}') { | 1255 while (buf[0] != '}') { |
1260 if (buf[0] == '#') | 1256 if (buf[0] == '#') |
1261 continue; | 1257 continue; |
1264 return; | 1260 return; |
1265 | 1261 |
1266 p = parse_line(buf, &parse_buffer); | 1262 p = parse_line(buf, &parse_buffer); |
1267 | 1263 |
1268 if (!strcmp(p->option, "host")) { | 1264 if (!strcmp(p->option, "host")) { |
1269 g_snprintf(global_proxy_info.proxyhost, | 1265 gaim_proxy_info_set_host(info, p->value[0]); |
1270 sizeof(global_proxy_info.proxyhost), "%s", p->value[0]); | |
1271 gaim_debug(GAIM_DEBUG_MISC, "gaimrc", | 1266 gaim_debug(GAIM_DEBUG_MISC, "gaimrc", |
1272 "Set proxyhost %s\n", global_proxy_info.proxyhost); | 1267 "Set proxyhost %s\n", p->value[0]); |
1273 } else if (!strcmp(p->option, "port")) { | 1268 } else if (!strcmp(p->option, "port")) { |
1274 global_proxy_info.proxyport = atoi(p->value[0]); | 1269 gaim_proxy_info_set_port(info, atoi(p->value[0])); |
1275 } else if (!strcmp(p->option, "type")) { | 1270 } else if (!strcmp(p->option, "type")) { |
1276 global_proxy_info.proxytype = atoi(p->value[0]); | 1271 gaim_proxy_info_set_type(info, atoi(p->value[0])); |
1277 } else if (!strcmp(p->option, "user")) { | 1272 } else if (!strcmp(p->option, "user")) { |
1278 g_snprintf(global_proxy_info.proxyuser, | 1273 gaim_proxy_info_set_username(info, p->value[0]); |
1279 sizeof(global_proxy_info.proxyuser), "%s", p->value[0]); | |
1280 } else if (!strcmp(p->option, "pass")) { | 1274 } else if (!strcmp(p->option, "pass")) { |
1281 g_snprintf(global_proxy_info.proxypass, | 1275 gaim_proxy_info_set_password(info, p->value[0]); |
1282 sizeof(global_proxy_info.proxypass), "%s", p->value[0]); | 1276 } |
1283 } | 1277 } |
1284 } | 1278 |
1285 if (global_proxy_info.proxyhost[0]) | 1279 if (gaim_proxy_info_get_host(info) != NULL) |
1286 proxy_info_is_from_gaimrc = 1; | 1280 gaim_global_proxy_set_from_prefs(TRUE); |
1287 else { | 1281 else { |
1282 const char *host; | |
1288 gboolean getVars = TRUE; | 1283 gboolean getVars = TRUE; |
1289 proxy_info_is_from_gaimrc = 0; | 1284 |
1290 | 1285 if ((host = g_getenv("HTTP_PROXY")) != NULL || |
1291 if (g_getenv("HTTP_PROXY")) | 1286 (host = g_getenv("http_proxy")) != NULL || |
1292 g_snprintf(global_proxy_info.proxyhost, | 1287 (host = g_getenv("HTTPPROXY")) != NULL) { |
1293 sizeof(global_proxy_info.proxyhost), "%s", | 1288 |
1294 g_getenv("HTTP_PROXY")); | 1289 gaim_proxy_info_set_host(info, host); |
1295 else if (g_getenv("http_proxy")) | 1290 } |
1296 g_snprintf(global_proxy_info.proxyhost, | 1291 |
1297 sizeof(global_proxy_info.proxyhost), "%s", | 1292 if (gaim_proxy_info_get_host(info) != NULL) |
1298 g_getenv("http_proxy")); | 1293 getVars = !gaimrc_parse_proxy_uri(gaim_proxy_info_get_host(info)); |
1299 else if (g_getenv("HTTPPROXY")) | |
1300 g_snprintf(global_proxy_info.proxyhost, | |
1301 sizeof(global_proxy_info.proxyhost), "%s", | |
1302 g_getenv("HTTPPROXY")); | |
1303 | |
1304 if (*global_proxy_info.proxyhost != '\0') | |
1305 getVars = !gaimrc_parse_proxy_uri(global_proxy_info.proxyhost); | |
1306 | 1294 |
1307 if (getVars) | 1295 if (getVars) |
1308 { | 1296 { |
1309 if (g_getenv("HTTP_PROXY_PORT")) | 1297 const char *port_str, *user, *pass; |
1310 global_proxy_info.proxyport = atoi(g_getenv("HTTP_PROXY_PORT")); | 1298 |
1311 else if (g_getenv("http_proxy_port")) | 1299 if ((port_str = g_getenv("HTTP_PROXY_PORT")) != NULL || |
1312 global_proxy_info.proxyport = atoi(g_getenv("http_proxy_port")); | 1300 (port_str = g_getenv("http_proxy_port")) != NULL || |
1313 else if (g_getenv("HTTPPROXYPORT")) | 1301 (port_str = g_getenv("HTTPPROXYPORT")) != NULL) { |
1314 global_proxy_info.proxyport = atoi(g_getenv("HTTPPROXYPORT")); | 1302 |
1315 | 1303 gaim_proxy_info_set_port(info, atoi(port_str)); |
1316 if (g_getenv("HTTP_PROXY_USER")) | 1304 } |
1317 g_snprintf(global_proxy_info.proxyuser, | 1305 |
1318 sizeof(global_proxy_info.proxyuser), "%s", | 1306 if ((user = g_getenv("HTTP_PROXY_USER")) != NULL || |
1319 g_getenv("HTTP_PROXY_USER")); | 1307 (user = g_getenv("http_proxy_user")) != NULL || |
1320 else if (g_getenv("http_proxy_user")) | 1308 (user = g_getenv("HTTPPROXYUSER")) != NULL) { |
1321 g_snprintf(global_proxy_info.proxyuser, | 1309 |
1322 sizeof(global_proxy_info.proxyuser), "%s", | 1310 gaim_proxy_info_set_username(info, user); |
1323 g_getenv("http_proxy_user")); | 1311 } |
1324 else if (g_getenv("HTTPPROXYUSER")) | 1312 |
1325 g_snprintf(global_proxy_info.proxyuser, | 1313 if ((pass = g_getenv("HTTP_PROXY_PASS")) != NULL || |
1326 sizeof(global_proxy_info.proxyuser), "%s", | 1314 (pass = g_getenv("http_proxy_pass")) != NULL || |
1327 g_getenv("HTTPPROXYUSER")); | 1315 (pass = g_getenv("HTTPPROXYPASS")) != NULL) { |
1328 | 1316 |
1329 if (g_getenv("HTTP_PROXY_PASS")) | 1317 gaim_proxy_info_set_password(info, pass); |
1330 g_snprintf(global_proxy_info.proxypass, | 1318 } |
1331 sizeof(global_proxy_info.proxypass), "%s", | |
1332 g_getenv("HTTP_PROXY_PASS")); | |
1333 else if (g_getenv("http_proxy_pass")) | |
1334 g_snprintf(global_proxy_info.proxypass, | |
1335 sizeof(global_proxy_info.proxypass), "%s", | |
1336 g_getenv("http_proxy_pass")); | |
1337 else if (g_getenv("HTTPPROXYPASS")) | |
1338 g_snprintf(global_proxy_info.proxypass, | |
1339 sizeof(global_proxy_info.proxypass), "%s", | |
1340 g_getenv("HTTPPROXYPASS")); | |
1341 } | 1319 } |
1342 } | 1320 } |
1343 } | 1321 } |
1344 | 1322 |
1345 static void set_defaults() | 1323 static void set_defaults() |