(resolver webFetchResolver, dialer webFetchDialer)
| 309 | } |
| 310 | |
| 311 | func buildWebFetchDialContext(resolver webFetchResolver, dialer webFetchDialer) webFetchDialer { |
| 312 | return func(ctx context.Context, network, address string) (net.Conn, error) { |
| 313 | host, port, err := net.SplitHostPort(address) |
| 314 | if err != nil { |
| 315 | host = address |
| 316 | port = "80" |
| 317 | } |
| 318 | ip, err := resolveAndPickPublicIP(ctx, host, resolver) |
| 319 | if err != nil { |
| 320 | return nil, err |
| 321 | } |
| 322 | return dialer(ctx, network, net.JoinHostPort(ip.String(), port)) |
| 323 | } |
| 324 | } |
| 325 | |
| 326 | func checkWebFetchSSRF(ctx context.Context, hostname string, resolver webFetchResolver) error { |
| 327 | _, err := resolveAndPickPublicIP(ctx, hostname, resolver) |
no test coverage detected