2023-07-31
- gomodule: bump go packages to latest
- gomodule: bump package golang.org/x/crypto and golang.org/x/sync to fix building error
- gomodule: update dependencies version
- makefile: add darwin-arm64 building in Makefile
- npm: bump react-scripts to v5 to fix "error:0308010C:digital envelope routines::unsupported"
- status: bump dependencies version in yarn.lock
- status: bump evergreen-ui to 6.5.1
- github-action: bump gh-actions version: go, node, actions of setup-go, setup-node and checkout
- github-action: create Release via github action
- github-action: bump node to 16.x and go to 1.18 in github action
- changelog: add changelog for version 0.6.0
- client: remove the unused parameter
*sync.Once
inHandles.Wait
of client - client: add ability to catch error from any tasks in main goroutine
- version: bump version to v0.6.0
- client: fix the incorrect error passing in client side data transmission
- server: fix bug of server side crashing when using http/https proxy
- client: Merge pull request #69 from genshen/remove-client-Wait-parameter
- client: Merge pull request #68 from genshen/fix-error-passing-in-client
- client: Merge pull request #54 from genshen/feature-client-wait-with-error
- github-action: Merge pull request #67 from genshen/ci-create-release
- server: Merge pull request #57 from genshen/fix-http-proxy-panic
- status: Merge pull request #45 from genshen/bump-status-web-dependencies
2021-01-25
- docker: upgrade go/node/alpine versions in Dockerfile for docker building
- npm: bump react dependency of status web page to v17 via cra, and enable pwa
- gh-action: upgrade go and node versions in github action building
- changelog: add changelog for version 0.5.0
- version: bump version to v0.5.0
2021-01-08
- logs: add description to func ProgressLog.SetLogBuffer
- changelog: add changelog for version 0.5.0-rc.3
- client: better error when there is error in Client.ListenAndServe (in wss/wssocks_client.go)
- plugin: add "connection option" plugin interface
- version: bump version to v0.5.0-rc.3
- plugin: rename struct type "Plugin" to "Plugins"
- version: set protocol version back to 0x004, because it has been set in v0.5.0-beta
2021-01-02
- docker: fix docker build error of "../web-build: no such file or directory"
- changelog: add changelog for version 0.5.0-rc.2
- plugin: return error, instead of calling log.Fatal, when the adding plugin exists
- version: bump version to v0.5.0-rc.2 and increase version code
- server: fix compiling error of no package "github.com/genshen/wssocks/cmd/server/statik"
- plugin: rename plugin api: AddPluginRedirect -> AddPluginRequest
2021-01-02
- npm: upgrade npm dependencies
- status: update dependencies (axios and evergreen-ui) for status page
- action: fix building error in github action while performing static files to go code generation
- changelog: add changelog for version 0.5.0-rc.1
- client: use http.DefaultTransport based Transport in http client for http dialing
- plugin: we can change value of http transport (used for websocket dialing) in request plugin
- version: bump version to v0.5.0-rc.1
- client: fix unexpected closing of client by using lock to Write and context canceling
- status: fix building error of "data Object is possibly 'undefined'."
- cli: move/split cli implementation of client and server to cmd directory
- client: use more semantic variable names in client Options
- client: move client connections closing to func
NotifyClose
in struct Handles - client: move sync.WaiitGroup passed to StartClient and Wait as a field of type Handles
- client: split client setting-up func StartClient into multiple function calls
- plugin: rename plugin ServerRedirect to RequestPlugin
2020-10-03
- docker: update go version in docker building, and specific alpine version
- gomodule: update dependencies version
- add go code report badge
- changelog: add changelog for version 0.5.0-beta.3
- version: bump version to v0.5.0-beta.3
- server: increase server read limit to 8 MiB to fix client exit with error "StatusMessageTooBig"
- format project code: use tab as indent
2020-08-23
- status: update dependencies in status page: evergreen-ui to 5.x and typescript to 3.9
- fix typo of UI (one for status page and one for connections table of client)
- changelog: add changelog for version 0.5.0-beta.2
- changelog: add changelog generated by git-chglog tool
- readme: add badges of docker image size, version and pulls
- readme: add document of "connection key", "TSL/SSL support" and "server status"
- client: add flag for passing user defined http headers to websocket request and send to remote
- server: add flags to server sub-command to support HTTPS/tls: -tls -tls-cert-file -tls-key-file
- server: add ability of setting websocket serving path in server cli
- status: show correct server address (including proctocol and base path) in status page
- version: update version to v0.5.0-beta.2
- server: remove channel usage in server side to avoid panic "send on closed channel"
- Merge pull request #25 from genshen/feature-ssl-tsl-support
- Merge pull request #27 from genshen/fix-server-crashed-if-client-killed
2020-08-06
- docker: update Dockerfile to inject git revision, build data, go ver into output of 'version'
- docker: update Dockerfile to build static files of status-web and embed them into go binary
- gomodule: update package github.com/genshen/cmds to avoid to call exist(2) in subcommand help
- gomodule: update dependencies version
- makefile: make target
clean
andall
as '.PHONY'
- status: remove unused import in tsx files of 'status-web' for passing CI job
- action: update github action config to build 'status-web' and generate build files to go file
- readme: update building document in README.md
- readme: add github action badge to README.md file
- use nhooyr.io/websocket as websocket lib to replace gorilla/websocket lib
- client: set timeout for sending heartbeat to wssocks server
- client: add skip-tls-verify to client to ignore tsl verification if server ssl/tls is enabled
- client: use more specified context in establish and http proxy client to send data to server
- client: use timeout context or cancel context to writing data to server
- logs: log only proxy connecting and closing message when a TTY is not attached on client side
- server: user can provide a user-specified connection key for authentication if auth is enabled
- server: add hub collection to store all hubs and websocket connections created at server side
- server: add --status flage to server cli to enable/disable status page
- server: let func DefaultProxyEst.establish return ConnCloseByClient err it is closed by client
- status: add static page for showing service status (not req data from server)
- status: fetch server info (not include statistics data) from server and show in info board
- status: show real server address and can copy address in status page
- status: fetch statistics data (e.g. uptime, clients) from server and shown in status page
- status: serve statis files of status page at server side
- status: fxi theme color and github libk stype of status page
- status: add logo files for status page
- version: add ability to show git commit hash in version sub-command
- version: write buildTime and go build version to version info when building via makefile
- version: update version to v0.5.0-beta
- fix bug of
client close due to message too big
by increasing message read limit - logs: dont show proxy connections dashboard/table when a TTY is not attached on client side
- server: add missing return statement in ServeHTTP after func websocker.Accept returns an error
- server: fix bug of infinite run loop after closing websocket/hub
- server: also perform tellClose if establish function return a non-ConnCloseByClient error
- server: fix "send on closed channel" error by removing tellClose with channel
- server: close proxy instances when closing hub (hub is closed when websocket is finished)
- status: git axios url of requesting status data of server, it should be '/api/status'
- server: generate random connection key in server side if connection key is enabled
- Merge pull request #18 from genshen/feature-more-specified-context
- Merge pull request #15 from genshen/feature-web-status
- Merge pull request #13 from genshen/fix-send-on-closed-channel
- rename file wss/client.go to wss/proxy_client_interface.go, move proxy client of https to new file
- client: call Client.Reply without onDial function as callback, move onDial out of Reply
- client: refactor func NewWebSocketClient: create WebSocketClient at the last line of func
- client: declare *net.TCPConn forward and pass to client.Reply in incoming socks5 handle
- client: use context to close heartbeat loop and client websocket income message listening
- client: move inlined onDial callback in Client.ListenAndServe in wssocks_client.go as func
- logs: refactor clear lines: move check IsTerminal to Writer from OS-platform's clearLines
- server: rm ctx passed to establish in ProxyEstablish, use timeout ctx in establish instead
- server: implement ServeHTTP interface for websocket serving to replace func handle
- server: implement BufferedWR using more elegant approach
- server: extract interface of establishing connections for socks5 and http proxy
- server: move proxy connections maintaining in server side to hub
- Merge pull request #10 from genshen/websocket-lib-nhooyr.io/websocket
- Merge pull request #8 from DefinitlyEvil/master
change first parameter in func BeforeRequest of ServerRedirect interface: from gorilla websocket dialer to pointer of http.Client.
We also update the minimal go building version to 1.13 due to the usage of feature errors.Is
to
handle results of command line parsing.
go version less then 1.12 (including 1.12) is not supported from this commit.
2020-02-24
- docker: update version of golang docker image to 1.13.8
- gomodule: update go.sum file
- client: log error, instead of fatal, when httpserver listener returns error
- version: fix core version not update, now update it to 0.4.1
2020-02-11
- gomodule: update dependencies: go-isatty and crypto
- client: handel kill signal in client closing
- client: stop all connections or tasks and exit if one of tasks is finished
- client: we can close client listener and heartbeat loop
- logs: split connection reecords updating and log writing
- server: code formating, change to use error wrapping
2019-09-01
- gomodule: update dependenies.
- update readme document and help messages.
- client: add basic feature of http proxy by http protocol.
- http: add Hijacker http Proxy.
- log: better log to show http proxy size and welcome messages.
- version: add version negotiation plugin.
- version: send and check compatible version code in version negotiation.
- version: update version to 0.3.0 and protocol version to 0x003.
- rename ServerData.Type to ServerData.Tag and rename unused param conn in WebSocketClient.NewProxy.
- replace net.TCPConn with ReadWriteCloser in proxy connections container.
- client: use callback(not channel) to receive data from server.
- client: use channel to handle data received from proxy server.
- server: remove server channel, use callback instead.
- server: use channel to handle data received from proxy client.
2019-08-27
- readme: update README, add document of http proxy.
- logs: better logs for version negotiation.
- version: update version to 0.3.0-alpha.2
- logs: better server logs of connections size.
2019-08-26
- add github workflows for building go.
- http: add http proxy support.
- http: add https proxy support.
- version: update version to 0.3.0-alpha.
- Merge pull request #7 from genshen/feature-http-proxy
- ticker: Merge pull request #6 from genshen/remove-ticker
- ticker: remove ticker support in both client and server.
- client: reorganize data types and functions in client implementation.
- client: add interface for different proxy(socks5, http, https) in client.
2019-06-16
- makefile: add linux arm64 building in makefile.
- docker: add Dockerfile.
- logs: better view for proxy connections dashboard.
- logs: adapte client normal running logs to progress logs.
- logs: add feature of progress logs of proxy connections.
- logs: add logrus lib as log lib.
- version: update version to 0.2.1
- windows: fix windows building problems.
- logs: Merge pull request #5 from genshen/dev
- log: use ssh/terminal pacakge to get terminal size.
2019-04-11
- makefile: add PACKAGE option to makefile and go build command.
- license: add MIT license.
- plugin: add *websocket.Dialer as func param in client plugin interface ServerRedirect.
- version: change version name to v0.2.0
- version: client also sends its version information to server now.
- client: refactor client code: move socks listerning code to file wss/wssocks.go
- Merge pull request #2 from genshen/dev
2019-03-03
- socks5: add more legality checking for socks5 server side.
- readme: add README
- heartbeat: add feature of websocket heart beat.
- log: add log for parsing error of cli.
- plugin: add client Plugin interface.
- protocol: add check of protocol version incompatibility.
- close: add more connection close calling.
- server: fix connection lose error(read connection EOF)
- Merge pull request #1 from genshen/dev
- datatypes: rename WriteProxyMessage func in ConcurrentWebSocket and move type Base64WSBuff
- datatypes: combine data typeRequestMessage anf ProxyData into one type.
- server: return error in dispatchMessage not nil and move mutex forward in Flush.
- server: remove unnercessary terms in ServerWS.map[]Connector
- server: add function NewServerWS and rename NewConn to AddConn.
- reorganize the code structural.
- move code position like println and comments.
- move directory from ws-socks to wssocks.
2019-02-08
- cmd: add user command line option to set ticker.
- server: add ticker and non-ticker option implementation for proxy server.
- fixed known bugs
- websocket: use one websocket for all connections, instead of one websocket for one socks.
- rename and remove variables
- client: rename client command variable, and rename ws-socks/client.go -> ws-socks/socks5_server.go