mirror of
https://github.com/nmap/nmap.git
synced 2025-12-15 12:19:02 +00:00
Added support to resolve proxy hostnames.
This commit is contained in:
@@ -461,3 +461,17 @@ void nsock_proxy_ev_dispatch(nsock_pool nspool, nsock_event nsevent, void *udata
|
||||
}
|
||||
}
|
||||
|
||||
int proxy_resolve(const char *host, struct sockaddr *addr, size_t *addrlen) {
|
||||
struct addrinfo *res;
|
||||
int rc;
|
||||
|
||||
rc = getaddrinfo(host, NULL, NULL, &res);
|
||||
if (rc)
|
||||
return -rc;
|
||||
|
||||
*addr = *res->ai_addr;
|
||||
*addrlen = res->ai_addrlen;
|
||||
freeaddrinfo(res);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -136,6 +136,8 @@ struct proxy_op {
|
||||
|
||||
|
||||
/* ------------------- UTIL FUNCTIONS ------------------- */
|
||||
int proxy_resolve(const char *host, struct sockaddr *addr, size_t *addrlen);
|
||||
|
||||
static inline struct proxy_node *proxy_ctx_node_current(struct proxy_chain_context *ctx) {
|
||||
return GH_LIST_ELEM_DATA(ctx->px_current);
|
||||
}
|
||||
|
||||
@@ -79,17 +79,15 @@ const struct proxy_op proxy_http_ops = {
|
||||
|
||||
|
||||
int proxy_http_node_new(struct proxy_node **node, const struct uri *uri) {
|
||||
struct sockaddr_in *sin;
|
||||
struct proxy_node *proxy;
|
||||
|
||||
proxy = (struct proxy_node *)safe_zalloc(sizeof(struct proxy_node));
|
||||
proxy->ops = &proxy_http_ops;
|
||||
|
||||
sin = (struct sockaddr_in *)&proxy->ss;
|
||||
sin->sin_family = AF_INET;
|
||||
inet_pton(AF_INET, uri->host, &sin->sin_addr); /* TODO Resolve hostnames!! */
|
||||
|
||||
proxy->sslen = sizeof(struct sockaddr_in);
|
||||
if (proxy_resolve(uri->host, (struct sockaddr *)&proxy->ss, &proxy->sslen) < 0) {
|
||||
free(proxy);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (uri->port == -1)
|
||||
proxy->port = DEFAULT_PROXY_PORT_HTTP;
|
||||
|
||||
Reference in New Issue
Block a user