* setting. The result is the (double reverse checked)
* hostname, or NULL if any of the lookups fail.
* </PRE>
+ * @param str_is_ip unless NULL is passed, this will be set to non-zero on output when an IP address
+ * string is returned
* @return The remote hostname
- * @deffunc const char *ap_get_remote_host(conn_rec *conn, void *dir_config, int type)
+ * @deffunc const char *ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip)
*/
-AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config, int type);
+AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip);
/**
* Retrieve the login name of the remote user. Undef if it could not be
case T_HOST:
if (!gothost) {
+ int remotehost_is_ip;
+
remotehost = ap_get_remote_host(r->connection, r->per_dir_config,
- REMOTE_DOUBLE_REV);
+ REMOTE_DOUBLE_REV, &remotehost_is_ip);
- if ((remotehost == NULL) || is_ip(remotehost))
+ if ((remotehost == NULL) || remotehost_is_ip)
gothost = 1;
else
gothost = 2;
static const char *log_remote_host(request_rec *r, char *a)
{
return ap_get_remote_host(r->connection, r->per_dir_config,
- REMOTE_NAME);
+ REMOTE_NAME, NULL);
}
static const char *log_remote_address(request_rec *r, char *a)
}
rhost = ap_get_remote_host(conn, r->server->module_config,
- REMOTE_NOLOOKUP);
+ REMOTE_NOLOOKUP, NULL);
if (rhost == NULL) {
rhost = "UNKNOWN-HOST";
}
}
else if (strcasecmp(var, "REMOTE_HOST") == 0) {
result = (char *)ap_get_remote_host(r->connection,
- r->per_dir_config, REMOTE_NAME);
+ r->per_dir_config, REMOTE_NAME, NULL);
}
else if (strcasecmp(var, "REMOTE_USER") == 0) {
result = r->user;
break;
case SPECIAL_REMOTE_HOST:
val = ap_get_remote_host(r->connection, r->per_dir_config,
- REMOTE_NAME);
+ REMOTE_NAME, NULL);
break;
case SPECIAL_REMOTE_USER:
val = r->user;
char cookiebuf[1024];
char *new_cookie;
const char *rname = ap_get_remote_host(r->connection, r->per_dir_config,
- REMOTE_NAME);
+ REMOTE_NAME, NULL);
cookie_dir_rec *dcfg;
dcfg = ap_get_module_config(r->per_dir_config, &usertrack_module);
}
AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config,
- int type)
+ int type, int *str_is_ip)
{
int hostname_lookups;
+ if (str_is_ip) { /* if caller wants to know */
+ *str_is_ip = 0;
+ }
+
/* If we haven't checked the host name, and we want to */
if (dir_config) {
hostname_lookups =
return NULL;
}
else {
+ if (str_is_ip) { /* if caller wants to know */
+ *str_is_ip = 1;
+ }
return conn->remote_ip;
}
}
if (r) {
conn_rec *c = r->connection;
apr_cpystrn(ss->client, ap_get_remote_host(c, r->per_dir_config,
- REMOTE_NOLOOKUP), sizeof(ss->client));
+ REMOTE_NOLOOKUP, NULL), sizeof(ss->client));
if (r->the_request == NULL) {
apr_cpystrn(ss->request, "NULL", sizeof(ss->request));
} else if (r->parsed_uri.password == NULL) {
apr_table_addn(e, "SERVER_ADDR", r->connection->local_ip); /* Apache */
apr_table_addn(e, "SERVER_PORT",
apr_psprintf(r->pool, "%u", ap_get_server_port(r)));
- host = ap_get_remote_host(c, r->per_dir_config, REMOTE_HOST);
+ host = ap_get_remote_host(c, r->per_dir_config, REMOTE_HOST, NULL);
if (host) {
apr_table_addn(e, "REMOTE_HOST", host);
}