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
to0.8.0
. - package: upgrade
winston
to3.1.0
,winston-daily-rotate-file
to3.4.1
. - package: upgrade
ws
to6.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
to6.0.0
. - package: upgrade
jest
and fix test environment. - src: reduce
MaxListenersExceededWarning
s. - 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
to5.2.2
andwinston-daily-rotate-file
to3.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
andaes-256-ccm
) toss-aead-cipher
.
- Add new encryption algorithms(
🚀 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
toutils/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
forh2
transport. - transports: decouple
drain
event from other bounds. - transports: reduce memory usage of
ws
andwss
. - 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
- transports: add
wss
(WebSocket/TLS).
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 useself-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
orhttp
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
tosrc/constants.js
. - src: remove
preset.js
, implement_write()
inIPreset
. - 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()
andIPresetAddressing::resolveTargetAddress()
. - presets: add
chacha20-ietf
method forss-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()
andincrementBE()
. - 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()
andrelay.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 forssr-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 useservice
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
- 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>"
}
- If you are using websocket transport, please change
websocket
tows
:
// 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 toAdvancedBuffer
. - 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 removePRESET_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
behavioursbecause 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()
andbroadcast()
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().