diff --git a/README.md b/README.md new file mode 100644 index 0000000..65840ce --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +## Shadowsocks Bootstrap + +> A simple program to make the original shadowsocks support SIP003 plugins. + +### Quick Start + +As we all know, the [original shadowsocks](https://github.com/shadowsocks/shadowsocks) is written in python, this version does not support [SIP003](https://shadowsocks.org/en/wiki/Plugin.html) plugin, and [shadowsocks-libev](https://github.com/shadowsocks/shadowsocks-libev) or [shadowsocks-rust](https://github.com/shadowsocks/shadowsocks-rust) which support plugin lack some encryption methods (although they are insecure), so making the original shadowsocks support SIP003 plugin will be able to get better compatibility. + +The SIP003 plugin runs as a subroutine. In shadowsocks-bootstrap, both the shadowsocks program and the plugin will be executed as subroutines to assign ports and manage them. + +You can use shadowsocks-bootstrap just like shadowsocks, the only difference is the extra `--plugin` and `--plugin-opts` options. In addition, it will use `sslocal` or `ssserver` as shadowsocks program by default, if necessary you should specify a custom filename with `--shadowsocks` option. + +``` +A simple program to make the original shadowsocks support SIP003 plugins. + +-s Host name or IP address of your remote server. +-p Port number of your remote server. +-b Local address to bind. +-l Port number of your local server. +-c Path to JSON config file. +-k Password of your remote server. +-m Encrypt method. +-t Socket timeout in seconds. +--fast-open Enable TCP fast open (with Linux kernel 3.7+). +--plugin Enable SIP003 plugin. +--plugin-opts Set SIP003 plugin options. +--shadowsocks Set shadowsocks local or server program. +-h, --help Print this message. +``` + +You can also run via a JSON config file: + +``` +{ + "server": "...", + "server_port": 8388, + "local_address": "127.0.0.1", + "local_port": 1080, + "password": "...", + "timeout": 300, + "method": "aes-256-cfb", + "fast_open": false, + "plugin": "...", + "plugin_opts": "...", + "shadowsocks": "...", + "extra_opts": "..." +} +``` + +Example: + +```bash +shell> ss-bootstrap-server -s 0.0.0.0 -p 12345 -k dnomd343 -m aes-256-ctr --shadowsocks ss-python-server --plugin obfs-server --plugin-opts "obfs=http" +shell> ss-bootstrap-local -s 127.0.0.1 -p 12345 -b 0.0.0.0 -l 1080 -k dnomd343 -m aes-256-ctr --shadowsocks ss-python-local --plugin obfs-local --plugin-opts "obfs=http;obfs-host=www.bing.com" +``` + +### Compile + +You need to install `gcc` , `make` and `cmake` at first, and also need the `glib2.0` development environment. + +Example on Alpine: + +```bash +apk add build-base make cmake git glib-dev +git clone https://github.com/dnomd343/shadowsocks-bootstrap.git +cd shadowsocks-bootstrap/ +mkdir build && cd build/ +cmake .. && make +mv ../bin/* /usr/bin/ +``` + +### License + +MIT ©2022 [@dnomd343](https://github.com/dnomd343)