Crate shadowsocks [] [src]

shadowsocks is a fast tunnel proxy that helps you bypass firewalls.

Currently it supports SOCKS5 and HTTP Proxy protocol.

Usage

Build shadowsocks and you will get at least 2 binaries: sslocal and ssserver

Write your servers in a configuration file. Format is defined in shadowsocks' documentation

For example:

{
   "server": "my_server_ip",
   "server_port": 8388,
   "local_address": "127.0.0.1",
   "local_port": 1080,
   "password": "mypassword",
   "timeout": 300,
   "method": "aes-256-cfb"
}

Save it in file shadowsocks.json and run local proxy server with

cargo run --bin sslocal -- -c shadowsocks.json

Now you can use SOCKS5 protocol to proxy your requests, for example:

curl --socks5-hostname 127.0.0.1:1080 https://www.google.com

On the server side, you can run the server with

cargo run --bin ssserver -- -c shadowsocks.json

Server should use the same configuration file as local, except the listen addresses for servers must be socket addresses.

Of course, you can also use cargo install to install binaries.

API Usage

Example to write a local server

use shadowsocks::{Config, ConfigType, run_local};

let config = Config::load_from_file("shadowsocks.json", ConfigType::Local).unwrap();
run_local(config).unwrap();

That's all! And let me show you how to run a proxy server

use shadowsocks::{Config, ConfigType, run_server};

let config = Config::load_from_file("shadowsocks.json", ConfigType::Server).unwrap();
run_server(config).unwrap();

Reexports

pub use self::config::Config;
pub use self::config::ServerConfig;
pub use self::config::ServerAddr;
pub use self::config::ClientConfig;
pub use self::config::ConfigType;
pub use self::relay::local::run as run_local;
pub use self::relay::server::run as run_server;
pub use self::relay::tcprelay::client::Socks5Client;

Modules

config

This is a mod for storing and parsing configuration

crypto

Crypto methods for shadowsocks

relay

Relay server in local and server side implementations.

Constants

VERSION

ShadowSocks version