[apache] apacheがREMOTE_ADDR / REMOTE_HOST設定するところ

肝: (request_rec *)r->(conn_rec *)connection->remote_ip

  • server/util_script.c
119 AP_DECLARE(void) ap_add_common_vars(request_rec *r)
120 {
121     apr_table_t *e;
122     server_rec *s = r->server;
123     conn_rec *c = r->connection;

...

232     host = ap_get_remote_host(c, r->per_dir_config, REMOTE_HOST, NULL);
233     if (host) {
234         apr_table_addn(e, "REMOTE_HOST", host);
235     }
236     apr_table_addn(e, "REMOTE_ADDR", c->remote_ip);
  • SSLの時はこっち
    • modules/ssl/ssl_engine_vars.c
 64 /* This function must remain safe to use for a non-SSL connection. */
 65 char *ssl_var_lookup(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, char *var)

 ...
 
^D^K147         if (strcEQ(var, "REMOTE_ADDR"))
148             result = c->remote_ip;
  • modules/ssl/ssl_engine_kernel.c
1703 /*
1704  * This callback function is executed while OpenSSL processes the
1705  * SSL handshake and does SSL record layer stuff. We use it to
1706  * trace OpenSSL's processing in out SSL logfile.
1707  */
1708 void ssl_callback_LogTracingState(MODSSL_INFO_CB_ARG_TYPE ssl, int where, int rc)

....

1784                      ssl_var_lookup(NULL, s, c, NULL, "REMOTE_ADDR"),^D^D^D^D^D^D^C