tor-router/CHANGELOG.md

7.7 KiB

Changelog

[4.0.13] - 2019-11-23

Added

  • Added a mechanism to handle dynamically allocating numerous ports at the same time without collisions per jogli5er's suggestion in PR 15.

Changed

  • Switched 'granax' package to '@deadcanaries/granax' as suggested in issue 12.

[4.0.12] - 2019-11-21

Added

  • Added a entrypoint file so the node.js process is not the root process, so it responds to SIGINT calls (Ctrl+C).

[4.0.11] - 2019-01-15

Changed

  • Updates multi-rpc to version 1.5.5.

[4.0.10] - 2018-12-14

Changed

  • Updates multi-rpc to version 1.4.1.

[4.0.9] - 2018-12-14

Changed

  • Updates multi-rpc to version 1.4.0.

[4.0.7] - 2018-12-14

Changed

  • Updates multi-rpc to version 1.1.9.

[4.0.6] - 2018-12-14

Changed

  • Updates multi-rpc to version 1.1.1.

[4.0.5] - 2018-10-15

Changed

  • Prevents errors that occur when connecting to the destination in the SOCKS Proxy and HTTP Proxy from crashing the applications

[4.0.4] - 2018-09-24

Changed

  • Replaces jrpc2 with multi-rpc for providing the RPC Interface. No changes to the application or API

[4.0.3] - 2018-09-15

Changed

  • References granax in default_config.js to comply with licensing requirements

[4.0.2] - 2018-09-15

Added

  • Adds API documentation. To generate run npm run docs and open under docs/index.html

Changed

  • Much of the README has been moved to the wiki
  • Updates granax to 3.1.4 which fixes a bug on MacOS
  • The constructor on ControlServer now takes an nconf instance as the first argument and a logger as the second

[4.0.1] - 2018-09-11

[4.0.0] - 2018-09-09

Added

  • Instances can now added to one or more groups by setting the Group field in the instance definition to a single string or array
  • You can now proxy through a specific instance using the username field when connecting to a proxy by setting --proxyByName or -n to "individual" or true. For example: to connect to an instance named instance-1 via http use http://instance-1:@localhost:9080
  • You can also connect to a specific group of instances by setting --proxyByName or -n to "group". If enabled, requests made to ://foo:@localhost:9080 would be routed to instances in the foo group in round-robin fashion
  • The control server will accept WebSocket connections if the --websocketControlHost or -w argument is set. If the argument is used without a hostname it will default to 9078 on all interfaces
  • All servers (DNS, HTTP, SOCKS and Control) all have a listen method which takes a port and optionally a host. It will return a Promise that will resolve when the server is listening
  • Application configuration can be changed at runtime using the getConfig and setConfig RPC methods
  • Application configuration can be saved and loaded from disk using the saveConfig and loadConfig RPC methods

Changes

  • All "Port" config options (e.g. socksPort) have been replaced with "Host", and can take a full host (e.g. 127.0.0.1:9050) for its value. This allows you to bind Tor Router to a specific hostname. If just a port is given it will bind to all interfaces
  • All methods now return promises instead of accepting callbacks
  • The logger argument to the constructor of all classes is now optional
  • The Config property of instance definitions will now inherit all properties from TorPool.default_tor_config
  • The mocha test has been split into individual files all under test/
  • DNS shows the source/destination hostname/port in logs instead of what the query was resolved to
  • TorProcess takes an instance definition as the second argument in its constructor

Removes

  • The new_ips and new_ip_at TorPool and new_ip TorProcess have been removed. Use new_identites, new_identity_at and new_identity instead.
  • The getDefaultTorConfig and setDefaultTorConfig RPC methods have removed. Use getConfig('torConfig') and setConfig('torConfig', value) instead.

[3.4.3] - 2018-08-10

Added

  • Adds a changelog
  • Adds queryInstanceByName and queryInstanceAt RPC methods to retrieve individual instances

Changes

  • Makes changes to ensure compatibility on Windows

[3.4.2] - 2018-08-09

Added

  • Test suites for DNSServer, HTTPServer, SOCKSServer and ControlServer
  • Added TorPool.set_config_all method to change configuration of all active instances

Changed

  • Cleans up test suites for TorPool and TorProcess
  • Removes potential security vulnerability
  • setTorConfig rpc method will now change the configuration of active instances, setDefaultTorConfig and getDefaultTorConfig will set or get the configuration of future instances
  • The default Tor Configuration will be applied to instances when the Config property on the instance definition is not set

[3.4.1] - 2018-07-19

Changed

  • Fixes bug with the application not binding to port numbers specified on the command line

[3.4.0] - 2018-05-11

Added

  • Bundles the Tor executable with the application. Tor will be downloaded during npm install
  • Signals and Configuration changes can be sent to live Tor instances via the Tor Control Protocol. Serveral RPC and TorPool methods have been added.

Changed

  • By default Tor Router will use the Tor executable bundled with the application, to override use the TOR_PATH environment variable
  • Deprecates the TorPool.new_ips and TorProcess.new_ip functions use TorPool.new_identitescand TorProcess.new_identity function respectively.

[3.3.0] - 2018-05-10

Added

  • Adds documentation on all available RPC Methods
  • Allows different load-balance methods to be defined, and changed at runtime and via RPC
  • Each instance can have started with a specific configuration (torrc) by setting the Config property in the definition

Changed

  • If the Name property in the definition was not set the data directory will be deleted when the Tor Process exits
  • Switches from "commander" to "nconf"/"yargs" for command line processing, switches however will remain the same

[3.2.2] - 2018-05-08

Changed

  • Tor Router and child Tor processes are run as an unprivilieged user in the Docker container
  • Fixes Issue #4 which affects dynamically created Tor Instances
  • Network traffic is only logged when logLevel is set to "verbose"

[3.2.1] - 2017-12-08

Changed

  • Fixes typo bug in Control Server

[3.2.0] - 2017-12-07

Changed

  • Replaced socket.io with JSON-RPC 2 as the RPC protocol
  • The Dockerfile includes an ENTRYPOINT for Tor Router

[3.1.0] - 2017-12-07

Added

  • Adds an HTTP Proxy Server HTTPServer which can HTTP-Connect requests (HTTPS traffic).
  • Adds a queryInstances RPC function as requested in Issue #3

Removed

  • Removes the "docker-compose.yml" file

[3.0.7] - 2017-11-12

Changes

  • The Dockerfile will now use Node.js version 8

[3.0.6] - 2017-07-25

Changes

  • Fixes a bug that occures on OS X

[3.0.5] - 2017-04-05

Changes

  • Fixes a bug with an RPC Method

[3.0.4] - 2017-04-05

Changes

  • Changes the arguments tor-router will be launched with when run using npm start

[3.0.3] - 2017-03-25

Added

  • Adds the Apache Licence Version 2 as the project's licence

[3.0.2] - 2017-03-25

Changed

  • Data sent in a request before a Tor instance comes online is held in a buffer.

[3.0.1] - 2017-03-25

Added

  • In SOCKSServer waits for a Tor instance in the pool to come online before making a connection.

[3.0.0] - 2017-03-24

Changed

  • Rewrites the application as a proxy server written as a node.js app.