MCPcopy Create free account
hub / github.com/axetroy/forward-cli / modifyRequest

Method modifyRequest

proxy.go:141–192  ·  view source on GitHub ↗
(req *http.Request)

Source from the content-addressed store, hash-verified

139}
140
141func (p *ProxyServer) modifyRequest(req *http.Request) {
142 target := *p.Target
143 isProxyUrl := req.URL.Query().Get("forward_url") != ""
144
145 if isProxyUrl {
146 if unescapeUrl, err := url.QueryUnescape(strings.TrimLeft(req.URL.RawQuery, "forward_url=")); err == nil {
147 if u, err := url.Parse(unescapeUrl); err == nil {
148 if u.Scheme == "" {
149 if p.UseSSL {
150 u.Scheme = "https"
151 } else {
152 u.Scheme = "http"
153 }
154 }
155 target = *u
156 }
157 }
158 } else if req.Header.Get(headerXProxyTarget) != "" {
159 targetUrl := req.Header.Get(headerXProxyTarget)
160
161 if u, err := url.Parse(targetUrl); err == nil {
162 if u.Scheme == "" {
163 if p.UseSSL {
164 u.Scheme = "https"
165 } else {
166 u.Scheme = "http"
167 }
168 }
169 target = *u
170 }
171 }
172
173 req.Header.Set(headerXOriginHost, req.Host)
174 req.Host = target.Host
175 if isProxyUrl {
176 req.URL = &target
177 } else {
178 req.URL.Host = target.Host
179 req.URL.Scheme = target.Scheme
180 }
181
182 log.Printf("[%s]: %s", req.Method, req.URL.String())
183
184 req.Header.Set("Host", target.Host)
185 req.Header.Set("Origin", fmt.Sprintf("%s://%s", target.Scheme, target.Host))
186 req.Header.Set("Referrer", fmt.Sprintf("%s://%s%s", target.Scheme, target.Host, req.URL.RawPath))
187 req.Header.Set("X-Real-IP", req.RemoteAddr)
188
189 for k := range p.ReqHeaders {
190 req.Header.Add(k, p.ReqHeaders.Get(k))
191 }
192}
193
194func (p *ProxyServer) modifyContent(extNames []string, body []byte, originHost string, proxyHost string) []byte {
195 bodyStr := string(body)

Callers 1

NewProxyServerFunction · 0.95

Calls 2

SetMethod · 0.80
StringMethod · 0.80

Tested by

no test coverage detected