diff options
Diffstat (limited to 'src/mod_log_sql_ssl.c')
| -rw-r--r-- | src/mod_log_sql_ssl.c | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/mod_log_sql_ssl.c b/src/mod_log_sql_ssl.c new file mode 100644 index 0000000..b3a4929 --- /dev/null +++ b/src/mod_log_sql_ssl.c | |||
| @@ -0,0 +1,106 @@ | |||
| 1 | /* $Id:mod_log_sql_ssl.c 180 2008-09-21 15:54:12Z urkle@drip.ws $ */ | ||
| 2 | |||
| 3 | #if defined(WITH_APACHE20) | ||
| 4 | # include "apache20.h" | ||
| 5 | #elif defined(WITH_APACHE13) | ||
| 6 | # include "apache13.h" | ||
| 7 | #else | ||
| 8 | # error Unsupported Apache version | ||
| 9 | #endif | ||
| 10 | |||
| 11 | #ifdef HAVE_CONFIG_H | ||
| 12 | /* Undefine these to prevent conflicts between Apache ap_config_auto.h and | ||
| 13 | * my config.h. Only really needed for Apache < 2.0.48, but it can't hurt. | ||
| 14 | */ | ||
| 15 | #undef PACKAGE_BUGREPORT | ||
| 16 | #undef PACKAGE_NAME | ||
| 17 | #undef PACKAGE_STRING | ||
| 18 | #undef PACKAGE_TARNAME | ||
| 19 | #undef PACKAGE_VERSION | ||
| 20 | |||
| 21 | #include "autoconfig.h" | ||
| 22 | #endif | ||
| 23 | |||
| 24 | #include "mod_log_sql.h" | ||
| 25 | |||
| 26 | #include "mod_ssl.h" | ||
| 27 | |||
| 28 | #if defined(WITH_APACHE20) | ||
| 29 | static APR_OPTIONAL_FN_TYPE(ssl_var_lookup) *header_ssl_lookup = NULL; | ||
| 30 | # define TEST_SSL(r) header_ssl_lookup | ||
| 31 | #elif defined(WITH_APACHE13) | ||
| 32 | # define TEST_SSL(r) ap_ctx_get(r->connection->client->ctx, "ssl") | ||
| 33 | # define header_ssl_lookup ssl_var_lookup | ||
| 34 | #endif | ||
| 35 | |||
| 36 | static const char *extract_ssl_keysize(request_rec *r, char *a) | ||
| 37 | { | ||
| 38 | char *result = NULL; | ||
| 39 | if (TEST_SSL(r) != NULL) | ||
| 40 | { | ||
| 41 | result = header_ssl_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER_USEKEYSIZE"); | ||
| 42 | log_error(APLOG_MARK,APLOG_DEBUG,0, r->server,"SSL_KEYSIZE: %s", result); | ||
| 43 | if (result && result[0]) | ||
| 44 | return result; | ||
| 45 | else | ||
| 46 | return "0"; | ||
| 47 | } else { | ||
| 48 | return "0"; | ||
| 49 | } | ||
| 50 | } | ||
| 51 | |||
| 52 | static const char *extract_ssl_maxkeysize(request_rec *r, char *a) | ||
| 53 | { | ||
| 54 | char *result = NULL; | ||
| 55 | if (TEST_SSL(r) != NULL) | ||
| 56 | { | ||
| 57 | result = header_ssl_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER_ALGKEYSIZE"); | ||
| 58 | log_error(APLOG_MARK,APLOG_DEBUG,0, r->server,"SSL_ALGKEYSIZE: %s", result); | ||
| 59 | if (result && result[0]) | ||
| 60 | return result; | ||
| 61 | else | ||
| 62 | return "0"; | ||
| 63 | } else { | ||
| 64 | return "0"; | ||
| 65 | } | ||
| 66 | } | ||
| 67 | |||
| 68 | static const char *extract_ssl_cipher(request_rec *r, char *a) | ||
| 69 | { | ||
| 70 | char *result = NULL; | ||
| 71 | if (TEST_SSL(r) != NULL) | ||
| 72 | { | ||
| 73 | result = header_ssl_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER"); | ||
| 74 | log_error(APLOG_MARK,APLOG_DEBUG,0, r->server,"SSL_CIPHER: %s", result); | ||
| 75 | if (result && result[0]) | ||
| 76 | return result; | ||
| 77 | else | ||
| 78 | return "0"; | ||
| 79 | } else { | ||
| 80 | return "-"; | ||
| 81 | } | ||
| 82 | } | ||
| 83 | |||
| 84 | |||
| 85 | LOGSQL_REGISTER(ssl) | ||
| 86 | { | ||
| 87 | log_sql_register_function(p, "ssl_keysize", extract_ssl_keysize, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 88 | log_sql_register_function(p, "ssl_maxkeysize", extract_ssl_maxkeysize, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 89 | log_sql_register_function(p, "ssl_cipher", extract_ssl_cipher, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 90 | |||
| 91 | log_sql_register_alias(s,p,'q', "ssl_keysize"); | ||
| 92 | log_sql_register_alias(s,p,'Q', "ssl_maxkeysize"); | ||
| 93 | log_sql_register_alias(s,p,'z', "ssl_cipher"); | ||
| 94 | |||
| 95 | log_sql_register_field(p, "ssl_keysize", "ssl_keysize", NULL, | ||
| 96 | "ssl_keysize", LOGSQL_DATATYPE_VARCHAR, 0); | ||
| 97 | log_sql_register_field(p, "ssl_maxkeysize", "ssl_maxkeysize", NULL, | ||
| 98 | "ssl_maxkeysize", LOGSQL_DATATYPE_VARCHAR, 0); | ||
| 99 | log_sql_register_field(p, "ssl_cipher", "ssl_cipher", NULL, | ||
| 100 | "ssl_cipher", LOGSQL_DATATYPE_VARCHAR, 0); | ||
| 101 | |||
| 102 | #if defined(WITH_APACHE20) | ||
| 103 | header_ssl_lookup = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); | ||
| 104 | #endif | ||
| 105 | LOGSQL_REGISTER_RETURN; | ||
| 106 | } | ||
