tor.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Generated by IcedCoffeeScript 1.7.1-c
  2. (function() {
  3. var SocksHttpAgent, SocksHttpsAgent, agent, enabled, env, hidden_address, leaky, log, proxy, strict;
  4. SocksHttpAgent = require('socks5-http-client/lib/Agent');
  5. SocksHttpsAgent = require('socks5-https-client/lib/Agent');
  6. env = require('./env').env;
  7. log = require('./log');
  8. hidden_address = function(null_ok) {
  9. return env().get_tor_hidden_address(null_ok);
  10. };
  11. proxy = function(null_ok) {
  12. return env().get_tor_proxy(null_ok);
  13. };
  14. enabled = function() {
  15. return (env().get_tor() != null) || (proxy(true) != null) || (hidden_address(true) != null) || strict() || leaky();
  16. };
  17. leaky = function() {
  18. return env().get_tor_leaky();
  19. };
  20. strict = function() {
  21. return env().get_tor_strict() && !leaky();
  22. };
  23. agent = function(opts) {
  24. var chk, klass, px, tls, uri;
  25. if (enabled()) {
  26. px = proxy(false);
  27. uri = opts.uri || opts.url;
  28. chk = function(s) {
  29. return s.indexOf('https') === 0;
  30. };
  31. tls = typeof uri === 'string' && chk(uri) ? true : typeof uri === 'object' && chk(uri.protocol) ? true : false;
  32. log.debug("| Setting tor proxy to " + (JSON.stringify(px)) + "; tls=" + tls);
  33. klass = tls ? SocksHttpsAgent : SocksHttpAgent;
  34. return opts.agent = new klass({
  35. socksPort: px.port,
  36. socksHost: px.hostname
  37. });
  38. }
  39. };
  40. module.exports = {
  41. hidden_address: hidden_address,
  42. proxy: proxy,
  43. enabled: enabled,
  44. agent: agent,
  45. strict: strict,
  46. leaky: leaky
  47. };
  48. }).call(this);