Skip to content

Commit

Permalink
new protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
txthinking committed Nov 1, 2017
1 parent c4c464c commit da2f11a
Show file tree
Hide file tree
Showing 13 changed files with 235 additions and 185 deletions.
125 changes: 65 additions & 60 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,22 @@
[![Build Status](https://travis-ci.org/txthinking/brook.svg?branch=master)](https://travis-ci.org/txthinking/brook) [![Go Report Card](https://goreportcard.com/badge/github.com/txthinking/brook)](https://goreportcard.com/report/github.com/txthinking/brook) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](http://www.gnu.org/licenses/gpl-3.0) [![Wiki](https://img.shields.io/badge/docs-wiki-blue.svg)](https://github.com/txthinking/brook/wiki)

<p align="center">
<img style="float: right;" src="https://storage.googleapis.com/txthinking-init/img/logo200.png" alt="Brook"/>
<img style="float: right;" src="https://storage.googleapis.com/txthinking-file/_/brook_200x200.png" alt="Brook"/>
</p>

### Table of Content
### NEW FEATURES v20171111

* **New Brook Protocol, TCP/UDP full supported**
* Brook Stream Protocol, TCP/UDP full supported
* Shadowsocks Protocol, TCP/UDP full supported

### BREAKING CHANGE v20171111

* Rename orignal brook protocol to `Brook Stream`, `$ brook streamserver`, `$ brook streamclient`. Music removed
* Many command arguments changed
* If you use shadowsocks protocol on Brook Android, your shadowsocks server must full support UDP

### Table of Contents

* [What is Brook](#what-is-brook)
* [Download](#download)
Expand All @@ -30,20 +42,20 @@ Brook's goal is to reduce the configuration steps. Keep it simple, stupid.

| Download | Server/Client | OS | Arch | Remark |
| --- | --- | --- | --- | --- |
| [brook](https://github.com/txthinking/brook/releases/download/v20170909/brook) | Server & Client | Linux | amd64 | CLI |
| [brook_linux_386](https://github.com/txthinking/brook/releases/download/v20170909/brook_linux_386) | Server & Client | Linux | 386 | CLI |
| [brook_linux_arm64](https://github.com/txthinking/brook/releases/download/v20170909/brook_linux_arm64) | Server & Client | Linux | arm64 | CLI |
| [brook_linux_arm5](https://github.com/txthinking/brook/releases/download/v20170909/brook_linux_arm5) | Server & Client | Linux | arm5 | CLI |
| [brook_linux_arm6](https://github.com/txthinking/brook/releases/download/v20170909/brook_linux_arm6) | Server & Client | Linux | arm6 | CLI |
| [brook_linux_arm7](https://github.com/txthinking/brook/releases/download/v20170909/brook_linux_arm7) | Server & Client | Linux | arm7 | CLI |
| [brook_macos_amd64](https://github.com/txthinking/brook/releases/download/v20170909/brook_macos_amd64) | Server & Client | MacOS | amd64 | CLI |
| [brook_windows_amd64.exe](https://github.com/txthinking/brook/releases/download/v20170909/brook_windows_amd64.exe) | Server & Client | Windows | amd64 | CLI |
| [brook_windows_386.exe](https://github.com/txthinking/brook/releases/download/v20170909/brook_windows_386.exe) | Server & Client | Windows | 386 | CLI |
| [Brook.app.zip](https://github.com/txthinking/brook/releases/download/v20170909/Brook.app.zip) | Client | MacOS | amd64 | GUI |
| [Brook.exe](https://github.com/txthinking/brook/releases/download/v20170909/Brook.exe) | Client | Windows | amd64 | GUI |
| [Brook.386.exe](https://github.com/txthinking/brook/releases/download/v20170909/Brook.386.exe) | Client | Windows | 386 | GUI |
| [brook](https://github.com/txthinking/brook/releases/download/v20171111/brook) | Server & Client | Linux | amd64 | CLI |
| [brook_linux_386](https://github.com/txthinking/brook/releases/download/v20171111/brook_linux_386) | Server & Client | Linux | 386 | CLI |
| [brook_linux_arm64](https://github.com/txthinking/brook/releases/download/v20171111/brook_linux_arm64) | Server & Client | Linux | arm64 | CLI |
| [brook_linux_arm5](https://github.com/txthinking/brook/releases/download/v20171111/brook_linux_arm5) | Server & Client | Linux | arm5 | CLI |
| [brook_linux_arm6](https://github.com/txthinking/brook/releases/download/v20171111/brook_linux_arm6) | Server & Client | Linux | arm6 | CLI |
| [brook_linux_arm7](https://github.com/txthinking/brook/releases/download/v20171111/brook_linux_arm7) | Server & Client | Linux | arm7 | CLI |
| [brook_macos_amd64](https://github.com/txthinking/brook/releases/download/v20171111/brook_macos_amd64) | Server & Client | MacOS | amd64 | CLI |
| [brook_windows_amd64.exe](https://github.com/txthinking/brook/releases/download/v20171111/brook_windows_amd64.exe) | Server & Client | Windows | amd64 | CLI |
| [brook_windows_386.exe](https://github.com/txthinking/brook/releases/download/v20171111/brook_windows_386.exe) | Server & Client | Windows | 386 | CLI |
| [Brook.app.zip](https://github.com/txthinking/brook/releases/download/v20171111/Brook.app.zip) | Client | MacOS | amd64 | GUI |
| [Brook.exe](https://github.com/txthinking/brook/releases/download/v20171111/Brook.exe) | Client | Windows | amd64 | GUI |
| [Brook.386.exe](https://github.com/txthinking/brook/releases/download/v20171111/Brook.386.exe) | Client | Windows | 386 | GUI |
| [App Store](https://itunes.apple.com/us/app/brook-brook-shadowsocks-vpn-proxy/id1216002642) | Client | iOS | - | GUI |
| [Google Play](https://play.google.com/store/apps/details?id=com.txthinking.brook) / [Brook.apk](https://github.com/txthinking/brook/releases/download/v20170909/Brook.apk) | Client | Android | - | GUI |
| [Google Play](https://play.google.com/store/apps/details?id=com.txthinking.brook) / [Brook.apk](https://github.com/txthinking/brook/releases/download/v20171111/Brook.apk) | Client | Android | - | GUI |

MacOS GUI Client

Expand All @@ -61,7 +73,6 @@ Windows GUI Client

Android Client

* Need Android version >= 5.0
* Follow this [pac white list](https://github.com/txthinking/pac) auto proxy rule
* Not tested on IPv6

Expand All @@ -80,27 +91,30 @@ USAGE:
brook [global options] command [command options] [arguments...]
VERSION:
20170909
20171111
AUTHOR:
Cloud <cloud@txthinking.com>
COMMANDS:
server Run as server mode
servers Run as multiple servers mode
client Run as client mode
ssserver Run as shadowsocks server mode, fixed method is aes-256-cfb
ssservers Run as shadowsocks multiple servers mode, fixed method is aes-256-cfb
ssclient Run as shadowsocks client mode, fixed method is aes-256-cfb
relay Run as relay mode
relays Run as multiple relays mode
qr Print brook server QR code
socks5 Run as raw socks5 server
socks5tohttp Convert socks5 to http proxy
help, h Shows a list of commands or help for one command
server Run as server mode
servers Run as multiple servers mode
client Run as client mode
streamserver Run as server mode
streamservers Run as multiple servers mode
streamclient Run as client mode
ssserver Run as shadowsocks server mode, fixed method is aes-256-cfb
ssservers Run as shadowsocks multiple servers mode, fixed method is aes-256-cfb
ssclient Run as shadowsocks client mode, fixed method is aes-256-cfb
socks5 Run as raw socks5 server
relay Run as relay mode
relays Run as multiple relays mode
qr Print brook server QR code
socks5tohttp Convert socks5 to http proxy
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug, -d Enable debug, more logs
--debug, -d Enable debug
--listen value, -l value Listen address for debug (default: ":6060")
--help, -h show help
--version, -v print the version
Expand All @@ -110,54 +124,47 @@ GLOBAL OPTIONS:

```
# Run as a brook server
$ brook bkserver -l :9999 -p password -t 10
$ brook server -l :9999 -p password
```

```
# Run as a brook server with music
$ brook bkserver -l :9999 -p password -t 10 -m music_name
# Run as a brook stream server
$ brook streamserver -l :9999 -p password
```

```
# Run as multiple brook servers
$ brook bkservers \
-l ":9999 password" \
-l ":8888 password" \
-l ":7777 password music_name" \
-l ":6666 password music_name" \
-t 10
```

[More about Brook Music](https://github.com/txthinking/brook/wiki/Music-List)

> If you run a public/shared server, do not forget this parameter --deadline 60 or -d 60
#### Shadowsocks Server

```
# Run as a shadowsocks server
$ brook ssserver -l :9999 -p password -t 10
$ brook ssserver -l :9999 -p password
```

```
# Run as multiple shadowsocks servers
$ brook ssservers \
-l ":9999 password" \
-l ":8888 password" \
-t 10
-l ":8888 password"
```

Fixed method is aes-256-cfb

> If you run a public/shared server, do not forget this parameter --deadline 60 or -d 60
> If you run a public/shared server, do not forget this parameter --tcpDeadline
#### Run as Daemon

With nohup

```
# Start
$ nohup brook bkserver -l :9999 -p password -t 10 &
$ nohup brook server -l :9999 -p password &
# Stop
$ killall brook
Expand Down Expand Up @@ -197,15 +204,14 @@ Relay Server

```
# Run as a relay server
$ brook relay -l :9999 -s server_address:port -t 10
$ brook relay -l :9999 -r server_address:port
```

```
# Run as multiple relay servers
$ brook relays \
-l ":9999 server1_address:port" \
-l ":8888 server2_address:port" \
-t 10
-l ":8888 server2_address:port"
```

## Client (CLI)
Expand All @@ -214,36 +220,35 @@ $ brook relays \

```
# Run as brook client, start a socks5 proxy
$ brook bkclient -l 127.0.0.1:1080 -s server_address:port -p password
$ brook client -t 127.0.0.1:1080 -u 127.0.0.1:1080 -s server_address:port -p password
```

```
# Run as brook client, start a http(s) proxy
$ brook bkclient -l 127.0.0.1:8080 -s server_address:port -p password --http
$ brook client -t 127.0.0.1:1080 -u 127.0.0.1:1080 -s server_address:port -p password --http
```

```
# Run as brook client with music, music must be same as server's
$ brook bkclient -l 127.0.0.1:1080 -s server_address:port -p password -m muisc_name
# Run as brook stream client, start a socks5 proxy
$ brook streamclient -t 127.0.0.1:1080 -u 127.0.0.1:1080 -s server_address:port -p password
```

```
# Run as brook stream client, start a http(s) proxy
$ brook streamclient -t 127.0.0.1:1080 -u 127.0.0.1:1080 -s server_address:port -p password --http
```


#### Shadowsocks Client

```
# Run as shadowsocks client, start a socks5 proxy
$ brook ssclient -l 127.0.0.1:1080 -s server_address:port -p password
$ brook ssclient -t 127.0.0.1:1080 -u 127.0.0.1:1080 -s server_address:port -p password
```

```
# Run as shadowsocks client, start a http(s) proxy
$ brook ssclient -l 127.0.0.1:8080 -s server_address:port -p password --http
```

## Developer

```
$ go get github.com/txthinking/brook/cli/brook
$ brook -h
$ brook ssclient -t 127.0.0.1:1080 -u 127.0.0.1:1080 -s server_address:port -p password --http
```

#### Contributing
Expand Down
Loading

0 comments on commit da2f11a

Please sign in to comment.