mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-27 03:44:04 +00:00
Move deps from _workspace/ to vendor/
godep restore pushd $GOPATH/src/github.com/appc/spec git co master popd go get go4.org/errorutil rm -rf Godeps godep save ./... git add vendor git add -f $(git ls-files --other vendor/) git co -- Godeps/LICENSES Godeps/.license_file_state Godeps/OWNERS
This commit is contained in:
100
vendor/github.com/elazarl/goproxy/doc.go
generated
vendored
Normal file
100
vendor/github.com/elazarl/goproxy/doc.go
generated
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
Package goproxy provides a customizable HTTP proxy,
|
||||
supporting hijacking HTTPS connection.
|
||||
|
||||
The intent of the proxy, is to be usable with reasonable amount of traffic
|
||||
yet, customizable and programable.
|
||||
|
||||
The proxy itself is simply an `net/http` handler.
|
||||
|
||||
Typical usage is
|
||||
|
||||
proxy := goproxy.NewProxyHttpServer()
|
||||
proxy.OnRequest(..conditions..).Do(..requesthandler..)
|
||||
proxy.OnRequest(..conditions..).DoFunc(..requesthandlerFunction..)
|
||||
proxy.OnResponse(..conditions..).Do(..responesHandler..)
|
||||
proxy.OnResponse(..conditions..).DoFunc(..responesHandlerFunction..)
|
||||
http.ListenAndServe(":8080", proxy)
|
||||
|
||||
Adding a header to each request
|
||||
|
||||
proxy.OnRequest().DoFunc(func(r *http.Request,ctx *goproxy.ProxyCtx) (*http.Request, *http.Response){
|
||||
r.Header.Set("X-GoProxy","1")
|
||||
return r, nil
|
||||
})
|
||||
|
||||
Note that the function is called before the proxy sends the request to the server
|
||||
|
||||
For printing the content type of all incoming responses
|
||||
|
||||
proxy.OnResponse().DoFunc(func(r *http.Response, ctx *goproxy.ProxyCtx)*http.Response{
|
||||
println(ctx.Req.Host,"->",r.Header.Get("Content-Type"))
|
||||
return r
|
||||
})
|
||||
|
||||
note that we used the ProxyCtx context variable here. It contains the request
|
||||
and the response (Req and Resp, Resp is nil if unavailable) of this specific client
|
||||
interaction with the proxy.
|
||||
|
||||
To print the content type of all responses from a certain url, we'll add a
|
||||
ReqCondition to the OnResponse function:
|
||||
|
||||
proxy.OnResponse(goproxy.UrlIs("golang.org/pkg")).DoFunc(func(r *http.Response, ctx *goproxy.ProxyCtx)*http.Response{
|
||||
println(ctx.Req.Host,"->",r.Header.Get("Content-Type"))
|
||||
return r
|
||||
})
|
||||
|
||||
We can write the condition ourselves, conditions can be set on request and on response
|
||||
|
||||
var random = ReqConditionFunc(func(r *http.Request) bool {
|
||||
return rand.Intn(1) == 0
|
||||
})
|
||||
var hasGoProxyHeader = RespConditionFunc(func(resp *http.Response,req *http.Request)bool {
|
||||
return resp.Header.Get("X-GoProxy") != ""
|
||||
})
|
||||
|
||||
Caution! If you give a RespCondition to the OnRequest function, you'll get a run time panic! It doesn't
|
||||
make sense to read the response, if you still haven't got it!
|
||||
|
||||
Finally, we have convenience function to throw a quick response
|
||||
|
||||
proxy.OnResponse(hasGoProxyHeader).DoFunc(func(r*http.Response,ctx *goproxy.ProxyCtx)*http.Response {
|
||||
r.Body.Close()
|
||||
return goproxy.ForbiddenTextResponse(ctx.Req,"Can't see response with X-GoProxy header!")
|
||||
})
|
||||
|
||||
we close the body of the original repsonse, and return a new 403 response with a short message.
|
||||
|
||||
Example use cases:
|
||||
|
||||
1. https://github.com/elazarl/goproxy/tree/master/examples/goproxy-avgsize
|
||||
|
||||
To measure the average size of an Html served in your site. One can ask
|
||||
all the QA team to access the website by a proxy, and the proxy will
|
||||
measure the average size of all text/html responses from your host.
|
||||
|
||||
2. [not yet implemented]
|
||||
|
||||
All requests to your web servers should be directed through the proxy,
|
||||
when the proxy will detect html pieces sent as a response to AJAX
|
||||
request, it'll send a warning email.
|
||||
|
||||
3. https://github.com/elazarl/goproxy/blob/master/examples/goproxy-httpdump/
|
||||
|
||||
Generate a real traffic to your website by real users using through
|
||||
proxy. Record the traffic, and try it again for more real load testing.
|
||||
|
||||
4. https://github.com/elazarl/goproxy/tree/master/examples/goproxy-no-reddit-at-worktime
|
||||
|
||||
Will allow browsing to reddit.com between 8:00am and 17:00pm
|
||||
|
||||
5. https://github.com/elazarl/goproxy/tree/master/examples/goproxy-jquery-version
|
||||
|
||||
Will warn if multiple versions of jquery are used in the same domain.
|
||||
|
||||
6. https://github.com/elazarl/goproxy/blob/master/examples/goproxy-upside-down-ternet/
|
||||
|
||||
Modifies image files in an HTTP response via goproxy's image extension found in ext/.
|
||||
|
||||
*/
|
||||
package goproxy
|
||||
Reference in New Issue
Block a user