1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-08 15:02:10 +03:00

Remove a ton o' cruft. Moves the mod_log_config 'var' extensions to

ssl_engine_vars.c.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@90517 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
William A. Rowe Jr
2001-08-22 22:58:07 +00:00
parent 484e3a0a68
commit dfc5bb55f4
8 changed files with 1141 additions and 784 deletions

View File

@@ -207,7 +207,14 @@ static const command_rec ssl_config_cmds[] = {
static void ssl_hook_pre_config( static void ssl_hook_pre_config(
apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp) apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
{ {
ssl_ext_register(pconf); /* Register us to handle mod_log_config %c/%x variables */
ssl_var_log_config_register(pconf);
#if 0 /* XXX */
/* XXX: Register us to handle mod_proxy extensions that don't exist yet */
ssl_ext_mp_register(pconf);
/* XXX: Register us to handle mod_status extensions that don't exist yet */
ssl_ext_ms_register(pconf);
#endif /* -0- */
} }
static int ssl_hook_pre_connection(conn_rec *c) static int ssl_hook_pre_connection(conn_rec *c)

View File

@@ -89,32 +89,7 @@
* Power up our brain... * Power up our brain...
*/ */
/* OS headers */
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
/* XXX: these better go away */
#include <assert.h>
/* OpenSSL headers */
#include <ssl.h>
#include <err.h>
#include <x509.h>
#include <x509v3.h>
#include <pem.h>
#include <crypto.h>
#include <evp.h>
#include <rand.h>
#ifdef SSL_EXPERIMENTAL_ENGINE
#include <engine.h>
#endif
/* Apache headers */ /* Apache headers */
#define CORE_PRIVATE
#include "httpd.h" #include "httpd.h"
#include "http_config.h" #include "http_config.h"
#include "http_core.h" #include "http_core.h"
@@ -132,7 +107,19 @@
#include "apr_fnmatch.h" #include "apr_fnmatch.h"
#include "apr_strings.h" #include "apr_strings.h"
#include "apr_dbm.h" #include "apr_dbm.h"
#undef CORE_PRIVATE
/* OpenSSL headers */
#include <ssl.h>
#include <err.h>
#include <x509.h>
#include <x509v3.h>
#include <pem.h>
#include <crypto.h>
#include <evp.h>
#include <rand.h>
#ifdef SSL_EXPERIMENTAL_ENGINE
#include <engine.h>
#endif
/* mod_ssl headers */ /* mod_ssl headers */
#include "ssl_expr.h" #include "ssl_expr.h"
@@ -693,10 +680,14 @@ void ssl_die(void);
/* Variables */ /* Variables */
void ssl_var_register(void); void ssl_var_register(void);
#if 0 /* XXX */
void ssl_var_unregister(void);
#endif /* XXX */
char *ssl_var_lookup(apr_pool_t *, server_rec *, conn_rec *, request_rec *, char *); char *ssl_var_lookup(apr_pool_t *, server_rec *, conn_rec *, request_rec *, char *);
void ssl_var_log_config_register(apr_pool_t *p);
/* Extensions */
#if 0 /* XXX */
void ssl_ext_proxy_register(apr_pool_t *p);
void ssl_ext_ms_register(apr_pool_t *p);
#endif /* -0- */
/* I/O */ /* I/O */
void ssl_io_filter_init(conn_rec *, SSL *); void ssl_io_filter_init(conn_rec *, SSL *);
@@ -706,12 +697,6 @@ long ssl_io_data_cb(BIO *, int, const char *, int, long, long);
/* PRNG */ /* PRNG */
int ssl_rand_seed(server_rec *, apr_pool_t *, ssl_rsctx_t, char *); int ssl_rand_seed(server_rec *, apr_pool_t *, ssl_rsctx_t, char *);
/* Extensions */
void ssl_ext_register(apr_pool_t *p);
#if 0 /* XXX */
void ssl_ext_unregister(void);
#endif
/* Utility Functions */ /* Utility Functions */
char *ssl_util_vhostid(apr_pool_t *, server_rec *); char *ssl_util_vhostid(apr_pool_t *, server_rec *);
void ssl_util_strupper(char *); void ssl_util_strupper(char *);

View File

@@ -61,164 +61,8 @@
-- Unknown */ -- Unknown */
#include "mod_ssl.h" #include "mod_ssl.h"
/* _________________________________________________________________
**
** SSL Extensions
** _________________________________________________________________
*/
#include "../../modules/loggers/mod_log_config.h"
static void ssl_ext_mlc_register(apr_pool_t *p);
#if 0 /* XXX */
static void ssl_ext_mlc_unregister(void);
static void ssl_ext_mr_register(void);
static void ssl_ext_mr_unregister(void);
static void ssl_ext_mp_register(void);
static void ssl_ext_mp_unregister(void);
static void ssl_ext_ms_register(void);
static void ssl_ext_ms_unregister(void);
#endif /* XXX */
void ssl_ext_register(apr_pool_t *p)
{
ssl_ext_mlc_register(p);
#if 0 /* XXX */
ssl_ext_mr_register();
ssl_ext_mp_register();
ssl_ext_ms_register();
#endif /* XXX */
return;
}
void ssl_ext_unregister(void)
{
#if 0 /* XXX */
ssl_ext_mlc_unregister();
ssl_ext_mr_unregister();
ssl_ext_mp_unregister();
ssl_ext_ms_unregister();
#endif /* XXX */
return;
}
/* _________________________________________________________________
**
** SSL Extension to mod_log_config
** _________________________________________________________________
*/
static const char *ssl_ext_mlc_log_c(request_rec *r, char *a);
static const char *ssl_ext_mlc_log_x(request_rec *r, char *a);
/*
* register us for the mod_log_config function registering phase
* to establish %{...}c and to be able to expand %{...}x variables.
*/
static void ssl_ext_mlc_register(apr_pool_t *p)
{
static APR_OPTIONAL_FN_TYPE(ap_register_log_handler) *log_pfn_register;
log_pfn_register = APR_RETRIEVE_OPTIONAL_FN(ap_register_log_handler);
if (log_pfn_register) {
log_pfn_register(p, "c", ssl_ext_mlc_log_c, 0);
log_pfn_register(p, "x", ssl_ext_mlc_log_x, 0);
}
return;
}
#if 0 /* XXX - We don't really need this (do we???) */
static void ssl_ext_mlc_unregister(void)
{
ap_hook_unregister("ap::mod_log_config::log_c",
ssl_ext_mlc_log_c);
ap_hook_unregister("ap::mod_log_config::log_x",
ssl_ext_mlc_log_x);
return;
}
#endif /* XXX */
/*
* implement the %{..}c log function
* (we are the only function)
*/
static const char *ssl_ext_mlc_log_c(request_rec *r, char *a)
{
char *result;
if (apr_table_get(r->connection->notes, "ssl") == NULL)
return NULL;
result = NULL;
if (strEQ(a, "version"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_PROTOCOL");
else if (strEQ(a, "cipher"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER");
else if (strEQ(a, "subjectdn") || strEQ(a, "clientcert"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CLIENT_S_DN");
else if (strEQ(a, "issuerdn") || strEQ(a, "cacert"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CLIENT_I_DN");
else if (strEQ(a, "errcode"))
result = "-";
else if (strEQ(a, "errstr"))
result = (char *)apr_table_get(r->connection->notes, "ssl::verify::error");
if (result != NULL && result[0] == NUL)
result = NULL;
return result;
}
/*
* extend the implementation of the %{..}x log function
* (there can be more functions)
*/
static const char *ssl_ext_mlc_log_x(request_rec *r, char *a)
{
char *result;
result = NULL;
if (apr_table_get(r->connection->notes, "ssl") != NULL)
result = ssl_var_lookup(r->pool, r->server, r->connection, r, a);
if (result != NULL && result[0] == NUL)
result = NULL;
return result;
}
/* _________________________________________________________________
**
** SSL Extension to mod_rewrite
** _________________________________________________________________
*/
#if 0 /* XXX */
static char *ssl_ext_mr_lookup_variable(request_rec *r, char *var);
/*
* register us for the mod_rewrite lookup_variable() function
*/
static void ssl_ext_mr_register(void)
{
ap_hook_register("ap::mod_rewrite::lookup_variable",
ssl_ext_mr_lookup_variable, AP_HOOK_NOCTX);
return;
}
static void ssl_ext_mr_unregister(void)
{
ap_hook_unregister("ap::mod_rewrite::lookup_variable",
ssl_ext_mr_lookup_variable);
return;
}
static char *ssl_ext_mr_lookup_variable(request_rec *r, char *var)
{
char *val;
val = ssl_var_lookup(r->pool, r->server, r->connection, r, var);
if (val[0] == NUL)
val = NULL;
return val;
}
#if 0 /* XXX this is for mod_proxy hackers, which optional_fn's to create? */
/* _________________________________________________________________ /* _________________________________________________________________
** **
** SSL Extension to mod_proxy ** SSL Extension to mod_proxy
@@ -240,7 +84,7 @@ static int ssl_ext_mp_clientcert_cb(SSL *, X509 **, EVP_PKEY **);
/* /*
* register us ... * register us ...
*/ */
static void ssl_ext_mp_register(void) void ssl_ext_proxy_register(apr_pool_t *pconf)
{ {
#ifdef SSL_EXPERIMENTAL_PROXY #ifdef SSL_EXPERIMENTAL_PROXY
ap_hook_register("ap::mod_proxy::init", ap_hook_register("ap::mod_proxy::init",
@@ -259,22 +103,6 @@ static void ssl_ext_mp_register(void)
return; return;
} }
static void ssl_ext_mp_unregister(void)
{
#ifdef SSL_EXPERIMENTAL_PROXY
ap_hook_unregister("ap::mod_proxy::init", ssl_ext_mp_init);
#endif
ap_hook_unregister("ap::mod_proxy::canon", ssl_ext_mp_canon);
ap_hook_unregister("ap::mod_proxy::handler", ssl_ext_mp_handler);
ap_hook_unregister("ap::mod_proxy::http::handler::set_destport",
ssl_ext_mp_set_destport);
ap_hook_unregister("ap::mod_proxy::http::handler::new_connection",
ssl_ext_mp_new_connection);
ap_hook_unregister("ap::mod_proxy::http::handler::write_host_header",
ssl_ext_mp_write_host_header);
return;
}
/* /*
* SSL proxy initialization * SSL proxy initialization
*/ */
@@ -770,53 +598,4 @@ static int ssl_ext_mp_verify_cb(int ok, X509_STORE_CTX *ctx)
#endif /* SSL_EXPERIMENTAL_PROXY */ #endif /* SSL_EXPERIMENTAL_PROXY */
/* _________________________________________________________________
**
** SSL Extension to mod_status
** _________________________________________________________________
*/
static void ssl_ext_ms_display(request_rec *, int, int);
static void ssl_ext_ms_register(void)
{
ap_hook_register("ap::mod_status::display", ssl_ext_ms_display, AP_HOOK_NOCTX);
return;
}
static void ssl_ext_ms_unregister(void)
{
ap_hook_unregister("ap::mod_status::display", ssl_ext_ms_display);
return;
}
static void ssl_ext_ms_display_cb(char *str, void *_r)
{
request_rec *r = (request_rec *)_r;
if (str != NULL)
ap_rputs(str, r);
return;
}
static void ssl_ext_ms_display(request_rec *r, int no_table_report, int short_report)
{
SSLSrvConfigRec *sc = mySrvConfig(r->server);
if (sc == NULL)
return;
if (short_report)
return;
ap_rputs("<hr>\n", r);
ap_rputs("<table cellspacing=0 cellpadding=0>\n", r);
ap_rputs("<tr><td bgcolor=\"#000000\">\n", r);
ap_rputs("<b><font color=\"#ffffff\" face=\"Arial,Helvetica\">SSL/TLS Session Cache Status:</font></b>\r", r);
ap_rputs("</td></tr>\n", r);
ap_rputs("<tr><td bgcolor=\"#ffffff\">\n", r);
ssl_scache_status(r->server, r->pool, ssl_ext_ms_display_cb, r);
ap_rputs("</td></tr>\n", r);
ap_rputs("</table>\n", r);
return;
}
#endif /* XXX */ #endif /* XXX */

View File

@@ -92,14 +92,6 @@ void ssl_var_register(void)
return; return;
} }
void ssl_var_unregister(void)
{
#if 0 /* XXX */
ap_hook_unregister("ap::mod_ssl::var_lookup", ssl_var_lookup);
#endif /* XXX */
return;
}
char *ssl_var_lookup(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, char *var) char *ssl_var_lookup(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, char *var)
{ {
SSLModConfigRec *mc = myModConfig(s); SSLModConfigRec *mc = myModConfig(s);
@@ -605,3 +597,76 @@ static char *ssl_var_lookup_ssl_version(apr_pool_t *p, char *var)
} }
return result; return result;
} }
/* _________________________________________________________________
**
** SSL Extension to mod_log_config
** _________________________________________________________________
*/
#include "../../modules/loggers/mod_log_config.h"
static const char *ssl_var_log_handler_c(request_rec *r, char *a);
static const char *ssl_var_log_handler_x(request_rec *r, char *a);
/*
* register us for the mod_log_config function registering phase
* to establish %{...}c and to be able to expand %{...}x variables.
*/
void ssl_var_log_config_register(apr_pool_t *p)
{
static APR_OPTIONAL_FN_TYPE(ap_register_log_handler) *log_pfn_register;
log_pfn_register = APR_RETRIEVE_OPTIONAL_FN(ap_register_log_handler);
if (log_pfn_register) {
log_pfn_register(p, "c", ssl_var_log_handler_c, 0);
log_pfn_register(p, "x", ssl_var_log_handler_x, 0);
}
return;
}
/*
* implement the %{..}c log function
* (we are the only function)
*/
static const char *ssl_var_log_handler_c(request_rec *r, char *a)
{
char *result;
if (apr_table_get(r->connection->notes, "ssl") == NULL)
return NULL;
result = NULL;
if (strEQ(a, "version"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_PROTOCOL");
else if (strEQ(a, "cipher"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER");
else if (strEQ(a, "subjectdn") || strEQ(a, "clientcert"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CLIENT_S_DN");
else if (strEQ(a, "issuerdn") || strEQ(a, "cacert"))
result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CLIENT_I_DN");
else if (strEQ(a, "errcode"))
result = "-";
else if (strEQ(a, "errstr"))
result = (char *)apr_table_get(r->connection->notes, "ssl::verify::error");
if (result != NULL && result[0] == NUL)
result = NULL;
return result;
}
/*
* extend the implementation of the %{..}x log function
* (there can be more functions)
*/
static const char *ssl_var_log_handler_x(request_rec *r, char *a)
{
char *result;
result = NULL;
if (apr_table_get(r->connection->notes, "ssl") != NULL)
result = ssl_var_lookup(r->pool, r->server, r->connection, r, a);
if (result != NULL && result[0] == NUL)
result = NULL;
return result;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,27 @@
#ifndef YYERRCODE
#define YYERRCODE 256
#endif
#define T_TRUE 257
#define T_FALSE 258
#define T_DIGIT 259
#define T_ID 260
#define T_STRING 261
#define T_REGEX 262
#define T_REGEX_I 263
#define T_FUNC_FILE 264
#define T_OP_EQ 265
#define T_OP_NE 266
#define T_OP_LT 267
#define T_OP_LE 268
#define T_OP_GT 269
#define T_OP_GE 270
#define T_OP_REG 271
#define T_OP_NRE 272
#define T_OP_IN 273
#define T_OP_OR 274
#define T_OP_AND 275
#define T_OP_NOT 276
typedef union { typedef union {
char *cpVal; char *cpVal;
ssl_expr *exVal; ssl_expr *exVal;
} YYSTYPE; } YYSTYPE;
#define T_TRUE 257
#define T_FALSE 258
#define T_DIGIT 259
#define T_ID 260
#define T_STRING 261
#define T_REGEX 262
#define T_REGEX_I 263
#define T_FUNC_FILE 264
#define T_OP_EQ 265
#define T_OP_NE 266
#define T_OP_LT 267
#define T_OP_LE 268
#define T_OP_GT 269
#define T_OP_GE 270
#define T_OP_REG 271
#define T_OP_NRE 272
#define T_OP_IN 273
#define T_OP_OR 274
#define T_OP_AND 275
#define T_OP_NOT 276
extern YYSTYPE ssl_expr_yylval; extern YYSTYPE ssl_expr_yylval;

View File

@@ -18,6 +18,7 @@
/* A lexical scanner generated by flex */ /* A lexical scanner generated by flex */
/* Scanner skeleton version: /* Scanner skeleton version:
* $Header: /home/striker/cvs2svn/dumps/httpd-2.0/../../httpd-2.0/modules/ssl/ssl_expr_scan.c,v 1.5 2001/08/22 22:58:07 wrowe Exp $
*/ */
#define FLEX_SCANNER #define FLEX_SCANNER
@@ -38,6 +39,7 @@
#ifdef __cplusplus #ifdef __cplusplus
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
/* Use prototypes in function declarations. */ /* Use prototypes in function declarations. */
#define YY_USE_PROTOS #define YY_USE_PROTOS

View File

@@ -175,3 +175,48 @@ void ssl_scache_expire(server_rec *s)
#endif #endif
return; return;
} }
/* _________________________________________________________________
**
** SSL Extension to mod_status
** _________________________________________________________________
*/
static void ssl_ext_ms_display(request_rec *, int, int);
static void ssl_scache_status_register(void)
{
/* XXX point mod_status to this update, when it grows the opt fn */
#if 0
ap_hook_register("ap::mod_status::display", ssl_ext_ms_display, AP_HOOK_NOCTX);
#endif
return;
}
static void ssl_ext_ms_display_cb(char *str, void *_r)
{
request_rec *r = (request_rec *)_r;
if (str != NULL)
ap_rputs(str, r);
return;
}
static void ssl_ext_ms_display(request_rec *r, int no_table_report, int short_report)
{
SSLSrvConfigRec *sc = mySrvConfig(r->server);
if (sc == NULL)
return;
if (short_report)
return;
ap_rputs("<hr>\n", r);
ap_rputs("<table cellspacing=0 cellpadding=0>\n", r);
ap_rputs("<tr><td bgcolor=\"#000000\">\n", r);
ap_rputs("<b><font color=\"#ffffff\" face=\"Arial,Helvetica\">SSL/TLS Session Cache Status:</font></b>\r", r);
ap_rputs("</td></tr>\n", r);
ap_rputs("<tr><td bgcolor=\"#ffffff\">\n", r);
ssl_scache_status(r->server, r->pool, ssl_ext_ms_display_cb, r);
ap_rputs("</td></tr>\n", r);
ap_rputs("</table>\n", r);
return;
}