blinksocks/CHANGELOG.md

22 KiB

Change Log

3.3.8 (2019-03-24)

🚀 Features & Improvements

  • ci: cancel nightly release when ci done.

🐛 Bug Fixes:

  • package: update package.lock to fix potential security vulnerability in dependencies.

Migrating from 3.3.7 to 3.3.8

$ npm install -g blinksocks@3.3.8

3.3.7 (2018-11-03)

🚀 Features & Improvements

  • package: upgrade js-sha3 to 0.8.0.
  • package: upgrade winston to 3.1.0, winston-daily-rotate-file to 3.4.1.
  • package: upgrade ws to 6.1.0.

🐛 Bug Fixes:

  • package: fix a potential security vulnerability in merge dependency.
  • proxies: fix http parsing error and 401 status code.

Migrating from 3.3.6 to 3.3.7

$ npm install -g blinksocks@3.3.7

3.3.6 (2018-07-28)

🚀 Features & Improvements

  • package: upgrade ws to 6.0.0.
  • package: upgrade jest and fix test environment.
  • src: reduce MaxListenersExceededWarnings.
  • src: load libsodium-wrappers on demand.

🐛 Bug Fixes:

  • core: fix TypeError: Cannot read property 'push' of null.

Migrating from 3.3.5 to 3.3.6

$ npm install -g blinksocks@3.3.6

3.3.5 (2018-07-14)

🚀 Features & Improvements

  • benchmark: refactor.
  • package: upgrade ws to 5.2.2 and winston-daily-rotate-file to 3.3.0.
  • src: reduce memory usage when enable multiplexing.
  • src: weakly dependent on http2 module.

Migrating from 3.3.4 to 3.3.5

$ npm install -g blinksocks@3.3.5

3.3.4 (2018-07-07)

Notable Changes

  • presets:
    • Add new encryption algorithms(aes-128-ccm, aes-192-ccm and aes-256-ccm) to ss-aead-cipher.

🚀 Features & Improvements

  • package: add semver to compare versions.
  • ci: log curl error message.
  • core: remove mux related things from Pipe.
  • core: move core/speed-tester.js to utils/speed-tester.js.
  • docs: add a basic example.
  • docs: add an example of using kcptun with blinksocks.
  • transports: refactor ws transport.
  • transports: remove dependency on http2session for h2 transport.
  • transports: decouple drain event from other bounds.
  • transports: reduce memory usage of ws and wss.
  • transports: disable the Nagle algorithm and enable keep-alive functionality of tcp.

🐛 Bug Fixes:

  • core: fix connection status record of Hub.
  • core: check writable of inbound before using it in MuxRelay.
  • transports: fix crash when error occurred in http2stream. #105

Migrating from 3.3.3 to 3.3.4

$ npm install -g blinksocks@3.3.4

3.3.3 (2018-06-24)

🚀 Features & Improvements

  • src: refactor multiplexing to pass pressure test.
  • test: add test case for https and redirect.
  • deps: upgrade ws to v5.2.1, winston-daily-rotate-file to v3.2.3.

🐛 Bug Fixes:

  • presets: fail() should return undefined.

Migrating from 3.3.2 to 3.3.3

$ npm install -g blinksocks@3.3.3

3.3.2 (2018-06-17)

Notable Changes

http2 transport is added in version. For usage please refer to examples/http2.

🚀 Features & Improvements

  • src: refactor handling presets failure.
  • docs: add examples of using http2 and http2/caddy.

🐛 Bug Fixes:

  • core: fix wss multiplexing.
  • transports: fix tcp error logging.
  • proxies: fix a vulnerability in log output.

Migrating from 3.3.1 to 3.3.2

$ npm install -g blinksocks@3.3.2

3.3.1 (2018-06-15)

🚀 Features & Improvements

  • package: upgrade winston to v3.0.0.
  • proxies: add https support.
  • transport: set handshake timeout of ws to 10s.
  • docs: add Test Using curl.
  • docs: add a batch of examples.

🐛 Bug Fixes:

  • config: fix default port issue.

Migrating from 3.3.0 to 3.3.1

$ npm install -g blinksocks@3.3.1

3.3.0 (2018-06-12)

Notable Changes

If you encounter the following warning, and the certificate is self-signed, please add "tls_cert_self_signed": true to client configuration and provide server certificate in "tls_cert" as well:

warn: [xxx:outbound] [x.x.x.x:xxxxx] self signed certificate
--- a/blinksocks.client.old.json
+++ b/blinksocks.client.new.json
 {
   "service": "socks5://127.0.0.1:1081",
   "server": {
     "service": "tls://localhost:1082",
     "key": "AuM3R$]Pnj^Cqg^9",
     "presets": [
@@ -18,11 +17,10 @@
     "mux": false,
     "mux_concurrency": 10,
     "tls_cert": "cert.pem",
+    "tls_cert_self_signed": true
   },
   "dns": [],
   "dns_expire": 3600,
   "timeout": 300,

🚀 Features & Improvements

  • config: add tls_cert_self_signed option.

🐛 Bug Fixes:

  • transports/tls: require "tls_cert_self_signed": true if use self-singed certificate.

Migrating from 3.2.2 to 3.3.0

$ npm install -g blinksocks@3.3.0

3.2.2 (2018-06-10)

Notable Changes

For security reason, executables are no longer uploaded in the following releases, we only publish npm packages.

🚀 Features & Improvements

  • deploy: add install-run-debian.sh.
  • transports: add pathname support for websocket.

🐛 Bug Fixes:

  • proxies: fix a security bug of authorization bypass when use socks or http protocol.

Migrating from 3.2.1 to 3.2.2

$ npm install -g blinksocks@3.2.2

3.2.1 (2018-05-12)

🚀 Features & Improvements

  • benchmark: add test for chacha20-ietf.
  • hub: set a timer to prune udp relays.
  • src: move constants from presets/actions.js to src/constants.js.
  • src: remove preset.js, implement _write() in IPreset.
  • test: add udp test for obfs-tls1.2-ticket.

🐛 Bug Fixes:

  • core: add speed-tester.js, fix speed measurement.

Migrating from 3.2.0 to 3.2.1

$ npm install -g blinksocks@3.2.1

3.2.0 (2018-04-28)

Node.js 10 is supported in this version!

Notable Changes

  • src: support socks4(a), socks5, http basic authorization(username/password).
  • presets: add IPresetAddressing::onInitTargetAddress() and IPresetAddressing::resolveTargetAddress().
  • presets: add chacha20-ietf method for ss-stream-cipher, but require Node.js 10.x.
  • presets: deprecated IPreset::onNotified().
  • presets: deprecated auto-conf preset.

🚀 Features & Improvements

  • core: add Pipe::initTargetAddress().
  • utils: add uint64ToBuffer(), incrementLE() and incrementBE().
  • package: upgrade ws from v3.3.3 to v5.1.1.
  • package: use WHATWG URL API instead of legacy qs api.
  • package: add package-lock.json.
  • package: remove unused dependencies.
  • ci: add test on the latest stable Node.js.

🐛 Bug Fixes:

  • hub: fix sequence between calling relay::on() and relay.init().
  • hub: patch server.getConnections() for ws.

Migrating from 3.1.1 to 3.2.0

$ npm install -g blinksocks@3.2.0

3.1.1 (2018-04-10)

🚀 Features & Improvements

  • api: remove Hub::getPerformance().
  • api: add Hub::getUploadSpeed(), Hub::getDownloadSpeed() and Hub::getConnStatuses().
  • benchmark: enlarge wait time before kill iperf server.
  • package: upgrade winston logger to v3.
  • package: remove husky and precommit hook, it's annoying.
  • test: add udp tests for multiplexing.
  • docs: add usage for systemd.

🐛 Bug Fixes:

  • src: fix crash when onConnected() triggered after ss-base is destroyed.

Migrating from 3.0.0 to 3.1.1

$ npm install -g blinksocks@3.1.1

3.1.0 (2018-03-11)

The minimal version of Node.js required is 8.x now, please upgrade your Node.js if necessary.

🚀 Features & Improvements

  • lib: compiled to Node.js 8.
  • core: start udp server only when use socks protocol on client.
  • core: add performance.js to collect upload/download speed.
  • core: add Hub::getConnections(), Hub::getTotalRead(), Hub::getTotalWritten() and Hub::getPerformance().
  • test: add tests for udp relay.
  • test: add tests for multiplexing over ws and tls.

🐛 Bug Fixes:

  • src: reduce error rate when enable multiplexing on server.
  • core: include target address in tracker's log when enable multiplexing.
  • core: avoid putting duplicate target address in tracker's log.

Migrating from 3.0.0 to 3.1.0

$ npm install -g blinksocks@3.1.0

3.0.0 (2018-02-27)

💥 Breaking Changes:

  • bin/init: remove "workers".
  • bin/init: replace "servers: []" to "server: {}".
  • core: remove balancer.
  • presets: remove stats preset.
  • presets: remove tracker preset, re-implement in core.
  • presets: remove access-control preset, re-implement in core.

🚀 Features & Improvements

  • bin/init: add "acl" and "acl_conf" on server side.
  • src: refactor src/dns-cache.js and move it to utils/.
  • src: move config items from global to local.
  • core: expose Config::getLogFilePath().
  • benchmark: use json output of iperf.
  • presets/mux: discretize cid and other improvements.
  • ci: add scripts to do nightly release automatically.
  • test: add e2e tests.

🐛 Bug Fixes:

  • src: fix "send() is not a function" when using mux though http proxy.
  • core: fix "cannot read property 'remoteInfo' of null" of mux-relay.js.
  • core: fix sub connection id collision.
  • core: handle listen "error" event.

Committers: 2

Migrating from 2.9.0 to 3.0.0

$ npm install -g blinksocks@3.0.0

After v3, blinksocks no longer support multiple servers and cluster mode, so you should make some changes in your client config.json after upgrade:

--- a/blinksocks.client.old.json
+++ b/blinksocks.client.new.json
 {
   "service": "socks5://127.0.0.1:1081?forward=127.0.0.1:1083",
-  "servers": [{
-    "enabled": true,
+  "server": {
     "service": "tcp://localhost:1082",
     "key": "AuM3R$]Pnj^Cqg^9",
     "presets": [
@@ -18,11 +17,10 @@
     "mux": false,
     "mux_concurrency": 10,
     "tls_cert": "cert.pem"
-  }],
+  },
   "dns": [],
   "dns_expire": 3600,
   "timeout": 300,
-  "workers": 0,
   "log_path": "bs-client.log",
   "log_level": "debug",
   "log_max_days": 1

access-control preset was removed in v3 as well, if you want to enable ACL on server side, please add acl and acl_conf to server.json:

--- a/blinksocks.server.old.json
+++ b/blinksocks.server.new.json
@@ -14,12 +14,13 @@
   ],
   "tls_key": "key.pem",
   "tls_cert": "cert.pem",
+  "acl": true,
+  "acl_conf": "acl.txt",
   "mux": false,
   "dns": [],
   "dns_expire": 3600,
   "timeout": 300,
   "redirect": "",
-  "workers": 0,
   "log_path": "bs-server.log",
   "log_level": "debug",
   "log_max_days": 1

2.9.0 (2018-02-03)

TCP/TLS/WS multiplexing is introduced in this version.

💥 Breaking Changes:

  • presets: remove base-auth-stream and base-with-padding.
  • config: remove "dstaddr", use uri querystring "?forward" instead.

🚀 Features & Improvements

  • core: add mux-relay.
  • benchmark: archive reports of 2017.
  • package: upgrade pkg to v4.3.0.
  • package: compile before running benchmark.
  • presets: add mux preset.
  • transports: refactor and optimize websocket transport.
  • transports: add this.ctx.
  • transports: add mux transport.
  • utils: add a faster version of crypto.randomBytes(). **

🐛 Bug Fixes:

  • proxies: fix crash when client reset the socks connection later.
  • utils: fix getRandomInt().
  • utils: remove generateMutexId().

Upgrade from 2.8.5 to 2.9.0

$ npm install -g blinksocks@2.9.0

2.8.5 (2017-12-13)

🚀 Features & Improvements

  • bin/init: add obfs-random-padding to presets by default.
  • benchmark: use project version rather than installed version.
  • core: pre-init presets at startup.
  • package: bundle Node.js runtime v8.9.0 to binaries.
  • package: run compile before benchmark.
  • presets/ss-stream-cipher: add none method for ssr-auth-chain-*.
  • presets/auto-conf: protocol change: UTC field is now encrypted by rc4.
  • presets/auto-conf: allow to load suites from remote.

🐛 Bug Fixes:

  • balancer: fix undefined bug when only use service in configuration.
  • transports/tcp: handle half-close correctly.
  • transports/udp: fix a bug when use auto-conf preset.

Upgrade from 2.8.4 to 2.8.5

$ npm install -g blinksocks@2.8.5

2.8.4 (2017-11-22)

dynamic protocol is introduced in this version, it's an experimental feature.

To use dynamic protocol, prepare a suites.json or pick one from the official versions, then change your preset list(on both client and server) to:

"presets": [
  {
    "name": "auto-conf",
    "params": {
      "suites": "suites.json"
    }
  },
  // no other presets
]

🚀 Features & Improvements

  • core: support dynamic protocol.
  • presets: add auto-conf.

🐛 Bug Fixes:

  • core: prevent calling onReceive() on null inbound during udp relay.
  • transports: wait until connection established before reply to peer.
  • transports: fix RangeError [ERR_SOCKET_BAD_PORT] when sending data via udp socket.

Upgrade from 2.8.3 to 2.8.4

$ npm install -g blinksocks@2.8.4

2.8.3 (2017-11-07)

🐛 Bug Fixes:

  • presets: fix hard coded "userKey" in ssr-auth-xxx.

Upgrade from 2.8.2 to 2.8.3

$ npm install -g blinksocks@2.8.3

2.8.2 (2017-11-07)

🚀 Features & Improvements

  • presets: add ssr-auth-aes128-md5, ssr-auth-aes128-sha1.
  • presets: add ssr-auth-chain-a, ssr-auth-chain-b.
  • presets: add rc4-md5, rc4-md5-6 methods to ss-stream-cipher.
  • presets: refactor obfs-http.
  • presets: apply a padding strategy to reduce heavy bandwidth usage of obfs-random-padding.
  • presets: add getName() interface and readProperty() helper function.
  • presets: expose headSize getter of ss-base, expose iv getter of ss-stream-cipher.
  • benchmark: add test cases for ssr-*.
  • utils: add dumpHex().

🐛 Bug Fixes:

  • core: destroy relay when inbound closed.
  • benchmark: bypass error cases.

Upgrade from 2.8.1 to 2.8.2

$ npm install -g blinksocks@2.8.2

2.8.1 (2017-10-28)

🚀 Features & Improvements

  • presets: print transport type in tracker preset.

🐛 Bug Fixes:

  • transports: fix verbose log for udp transport.

Upgrade from 2.8.0 to 2.8.1

$ npm install -g blinksocks@2.8.1

2.8.0 (2017-10-27)

UDP relay is now available for testing! 🍻

💥 Breaking Changes:

  • presets: deprecated base-auth-stream and base-with-padding presets, please use base-auth instead.

🚀 Features & Improvements

  • bin: add "-w" option to force overwrite exist jsons.
  • src: expose all api interfaces to the top package level.
  • core: add UDP relay support.
  • core: disable json output to reduce log size.
  • core: refactor presets creation.
  • core: convert port to Number after parsed by url.parse().
  • proxies: log error details when received invalid requests.
  • transports: reduce memory grow for websocket.
  • transports: pause inbound receiving before remote connection established.
  • presets: allow to use external presets.
  • presets: add base-auth preset.
  • presets: implement protocols for UDP.
  • test: add test for base-auth preset.

🐛 Bug Fixes:

  • package: fix pkg command.

Upgrade from 2.7.0 to 2.8.0

$ npm install -g blinksocks@2.8.0

To use external presets, please read presets.

2.7.0 (2017-10-17)

💥 Breaking Changes:

  • preset: remove over designed "proxy" and "tunnel" preset.
  • preset: remove useless "exp-compress" preset.
  • package: remove unnecessary webpack bundle.
  • transports: change "websocket" to "ws".

🚀 Features & Improvements:

  • core: add "service" and "dstaddr" option.
  • core: refactor service creation of hub.
  • benchmark: rearrange test cases.
  • proxies: refactor http, socks4(a) and socks5, use more lightweight approach.
  • proxies: add "tcp" transparent proxy.
  • presets: add chacha20-poly1305, chacha20-ietf-poly1305, xchacha20-ietf-poly1305 support for ss-aead-cipher.
  • presets: add chacha20-poly1305 support for v2ray-vmess.
  • utils: remove unsafe parseURI().

🐛 Fixes:

  • core: destroy socket when "end" emitted.
  • presets: fix "invalid length: 0" error caused by obfs-random-padding.
  • test: fix preset runner.

Upgrade from 2.6.3 to 2.7.0

$ npm install -g blinksocks@2.7.0

Notice

  1. blinksocks client no longer handle both http and socks proxy connections at the same port now, please specify only one of them using service:
// client.json
{
  "service": "socks5://<host>:<port>"
  // or "service": "http://<host>:<port>"
}
  1. If you are using websocket transport, please change websocket to ws:
// client.json
{
  "servers": [{
    "service": "ws://<host>:<port>",
    // or "transport": "ws"
  }]
}

// server.json
{
  "service": "ws://<host>:<port>"
  // or "transport": "ws"
}

2.6.3 (2017-10-09)

🚀 Features & Improvements:

  • benchmark: rank by bitrate instead of transfer.
  • core: add "log_max_days" option to configuration.
  • core: improve pipe performance.
  • package: bundle node runtime v8.6.0 to binaries.

To keep the last 30 days logs, add log_max_days to your configuration:

{
  "log_max_days": 30
}

🐛 Fixes:

  • core: clear preset cache after switched to another server.
  • core: fix compatibility to node v6.x.
  • doc: fix links of benchmark.
  • transports: make context sync return.
  • transports: fix TypeError: Cannot read property 'send' of null when using websocket.
  • package: fix "main" field.

2.6.2 (2017-09-21)

Notable Changes

Two experimental presets are ready for production use:

exp-base-with-padding is linked to base-with-padding. exp-base-auth-stream is linked to base-auth-stream.

For backward compatibility, you can still use exp-xxx without changing configurations.

💥 Breaking Changes:

  • core: deprecated IS_TLS, you should make judgement by TRANSPORT instead.

🚀 Features & Improvements:

  • core: display dns cache hitting info in verbose log level.
  • transports: abstract transport layer, and add websocket.
  • presets: refactor exp-compress, expose "threshold" and "options" parameters.
  • test: refactor preset runner, run preset through Middleware directly.

🐛 Fixes:

  • presets: fix an "out-of-range" bug in v2ray-vmess.
  • presets: fix access to static members.

2.6.1 (2017-09-15)

🚀 Features & Improvements:

  • benchmark: print blinksocks version before running tests.
  • benchmark: add v2ray-vmess benchmark.
  • utils: add clear() method to AdvancedBuffer.
  • utils: split common module into separated modules.
  • presets: add v2ray vmess support.
  • presets: info now removed from ss-aead-cipher, always use "ss-subkey".
  • presets: info now has a default value bs-subkey for aead-random-cipher.
  • presets: add static onInit(), next() method to IPreset and remove PRESET_INIT action.
  • presets: improve performance and reduce memory usage.
  • tests: add e2e tests for presets.

🐛 Fixes:

  • core: fix a typo in action-handler.js.

2.6.0 (2017-09-06)

💥 Breaking Changes:

  • bin: remove .js configuration file support, now you can only use .json file.
  • core: remove behaviours because it's not as convenient as I thought.
  • package: now lib/ is back.

🚀 Features & Improvements:

  • benchmark: add tests for obfs-random-padding.
  • bin: try to load config file from the first argument.
  • core: refactor relay and change MAX_BUFFERED_SIZE to 512KB.
  • core: refactor pipe.js.
  • core: refactor middleware.js.
  • presets: add a new class IPresetStatic which extends from IPreset.
  • presets: add static checkParams() to IPreset and move all parameters check logic to it.
  • presets: add onDestroy() lifecycle hook to IPreset.
  • presets: add fail() and broadcast() convenience methods to IPreset.
  • presets: add access-control.
  • presets: add exp-compress.
  • presets: add obfs-random-padding.
  • presets: allow to set relative path to save_to of stats preset.

🐛 Fixes:

  • benchmark: ranking by SUM of receiver transfer.
  • benchmark: remove log_path in generated jsons.
  • core: prevent calling close() on null in hub.
  • core: prevent onNotified() emitter itself.
  • presets: fix several indicators of stats preset.
  • utils: fix getRandomInt() and isValidPort().