1
1
# chisel
2
2
3
- <!--
4
- 
5
- -->
6
-
7
3
Chisel is an HTTP client and server which acts as a TCP proxy. Chisel useful in situations where you only have access to HTTP, for example – behind a corporate firewall. Chisel is very similar to [ crowbar] ( https://github.com/q3k/crowbar ) though achieves ** much** higher [ performance] ( #performance ) . ** Warning** This is beta software.
8
4
9
5
![ overview] ( https://docs.google.com/drawings/d/1p53VWxzGNfy8rjr-mW8pvisJmhkoLl82vAgctO_6f1w/pub?w=960&h=720 )
@@ -12,14 +8,14 @@ Chisel is an HTTP client and server which acts as a TCP proxy. Chisel useful in
12
8
13
9
** Binaries**
14
10
15
- See [ Releases] ( releases/ )
11
+ See [ Releases] ( https://github.com/jpillora/chisel/releases )
16
12
17
13
** Source**
18
14
19
- ```
20
- # Server
15
+ ``` sh
16
+ # chisel server
21
17
$ go get -v github.com/jpillora/chisel/chiseld
22
- # Client
18
+ # chisel client
23
19
$ go get -v github.com/jpillora/chisel/chisel-forward
24
20
```
25
21
@@ -36,23 +32,23 @@ $ go get -v github.com/jpillora/chisel/chisel-forward
36
32
A [ demo app] ( https://chisel-demo.herokuapp.com ) on Heroku is running this ` chiseld ` server:
37
33
38
34
``` sh
39
- # listen on $PORT, require password 'foobar', proxy web requests to 'http://example.com'
40
35
$ chiseld --auth foobar --port $PORT --proxy http://example.com
36
+ # listens on $PORT, requires password 'foobar', proxy web requests to 'http://example.com'
41
37
```
42
38
43
39
This demo app is also running a file server on 0.0.0.0:3000 (which is normally inaccessible
44
40
due to Heroku's firewall). However, if we tunnel in with:
45
41
46
42
``` sh
47
- # connect to 'https://chisel-demo.herokuapp.com', using password 'foobar',
48
- # tunnel your localhost:3000 to the server's localhost:3000
49
43
$ chisel-forward --auth foobar https://chisel-demo.herokuapp.com 3000
44
+ # connects to 'https://chisel-demo.herokuapp.com', using password 'foobar',
45
+ # tunnels your localhost:3000 to the server's localhost:3000
50
46
```
51
47
52
48
Then open [ localhost:3000/] ( http://localhost:3000/ ) , we should
53
49
see a directory listing of the demo app's root. Also, if we visit
54
- https://chisel-demo.herokuapp.com we should see that the server's
55
- default proxy is pointing at http://example.com .
50
+ [ the demo ] ( https://chisel-demo.herokuapp.com ) in the browser we should see that the server's
51
+ default proxy is pointing at [ example.com ] ( http://example.com ) .
56
52
57
53
### Usage
58
54
@@ -188,13 +184,13 @@ Note, we're using an in-memory "file" server on localhost for these tests
188
184
:4001 => 100000000 bytes in 36.332395213s
189
185
```
190
186
191
- See [ test/] ( tree/master/ test/)
187
+ See [ test/] ( test/ )
192
188
193
189
### Known Issues
194
190
195
191
* ** WebSockets support is required**
196
192
* IaaS providers all will support WebSockets
197
- * Unless they run a HTTP only proxy in front of your servers , in which case I'd argue that you've been downgraded to PaaS.
193
+ * Unless an unsupporting HTTP proxy has been forced in front of you , in which case I'd argue that you've been downgraded to PaaS.
198
194
* PaaS providers vary in their support for WebSockets
199
195
* Heroku has full support
200
196
* Openshift has full support though connections are only accepted on ports 8443 and 8080
@@ -211,7 +207,6 @@ See [test/](tree/master/test/)
211
207
212
208
### Todo
213
209
214
- * Add tests (Bonus: Add benchmarks)
215
210
* Users file with white-listed remotes
216
211
* Pass in TLS server configuration
217
212
* Encrypt data with ` auth ` as the symmetric key
0 commit comments