* Add Ping-Pong bloom filter
* Refine bloom filter insertion
* Reduce the error rate to 0.00001
* Avoid alignment issue in murmurhash2
* Fix a memory leak
* Fix build on non-GPU targets
* Detect get_current_dir_name in configure
* Update README.md
* Remove redudant bfree()
* Reduce the memory usage for local client
* Fix#1275
* Refine #1275
* Use IP when bypassing SNI domains
* Also apply replay detector on UDP traffic
* Update deb build script
Now build script is able to auto detect system and choose libraries
necessary to build.
Also update the README accordingly.
* Update build script to enable jessie/stretch etc
Also include a few cleanup that simplified pkg installation from
backports repository.
* ss-libev: Introduce mode parameter for start_plugin
Since obfsproxy handles client and server in different ways, no matter
standalone or manged mode, so introduce the mode for start_plugin() to
support obfsproxy.
With more comments added to plugin.h for later developers.
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: Move SS protocol plugin initialization code to start_ss_plugin
Move SS protocol plugin initialization to start_ss_plugin() function, as
the support for obfsproxy will not use that environment.
Also, remove the use of get_current_dir_name() which is a glibc
extension, such macro hack will just make code less readable.
Not to mention it already screw up code folding of vim.
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: Introduce obfsproxy standalone mode support as plugin
Now shadowsocks-libev supports to use obfsproxy as plugin.
Currently we only support to use standalone(proxy) mode of obfsproxy, as
managed mode needs to use SOCKS5 as upstream forward, while ss-libev
doesn't support it yet.
And the output from plugin is just trashed for now.
Support to pipe them into stdout/stderr will be added later.
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: doc: Fix wrong cmdline parameter for plugin options
Command line option for plugin options is "--plugin-opts", not the json
option "--plugin_opts"
Fix it.
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: local: Use enum number for val of long options
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: manager: Use enum number for val of long options
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: redir: Use enum number for val of long options
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: server: Use enum number for val of long options
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
* ss-libev: tunnel: Use enum number for val of long options
Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
Add experimental HTTP/TLS obfuscating as an **optional extension** of shadowsocks protocol.
More discussions can be found here: https://github.com/shadowsocks/shadowsocks-org/issues/26
As this feature is still a SIP (Shadowsocks Improvement Proposal), it's very unstable and experimental. So,
1. Don't enable it unless you know what it is.
2. Be very careful when using it in production environment.
In Mac OS X 10.10, `launch_activate_socket` was introduced.
So whenever the port is requested, the `launchd` can launch the program
dynamically. A possible plist may like this:
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.github.shadowsocks</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/ss-local</string>
<string>-s</string>
<string>server host</string>
<string>-p</string>
<string>server port</string>
<!-- the -l and -b can be ommited, as launchd takes over it -->
<string>-k</string>
<string>password</string>
<string>-m</string>
<string>method</string>
<string>-t</string>
<string>timeout</string>
<string>-A</string>
</array>
<key>Sockets</key>
<dict>
<!-- the name is hard coded in ss-local -->
<key>Listeners</key>
<dict>
<key>SockNodeName</key>
<string>127.0.0.1</string>
<key>SockServiceName</key>
<string>socks</string>
</dict>
</dict>
</dict>
</plist>
```
The magic is `launchd` will listen to the `SockServiceName`, when the port
is requested, the `ss-local` will be launched.
- GNU treats void* as char* when doing pointer arithmetic, so let's make it clear
- Fix memory leak, save copy from malloc() and pass the original pointer to free()
- minor type mismatches
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>