* implement the %{..}c log function * (we are the only function) */
| 1202 | * (we are the only function) |
| 1203 | */ |
| 1204 | static const char *ssl_var_log_handler_c(request_rec *r, char *a) |
| 1205 | { |
| 1206 | SSLConnRec *sslconn = ssl_get_effective_config(r->connection); |
| 1207 | char *result; |
| 1208 | |
| 1209 | if (sslconn == NULL || sslconn->ssl == NULL) |
| 1210 | return NULL; |
| 1211 | result = NULL; |
| 1212 | if (strEQ(a, "version")) |
| 1213 | result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_PROTOCOL"); |
| 1214 | else if (strEQ(a, "cipher")) |
| 1215 | result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER"); |
| 1216 | else if (strEQ(a, "subjectdn") || strEQ(a, "clientcert")) |
| 1217 | result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CLIENT_S_DN"); |
| 1218 | else if (strEQ(a, "issuerdn") || strEQ(a, "cacert")) |
| 1219 | result = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CLIENT_I_DN"); |
| 1220 | else if (strEQ(a, "errcode")) |
| 1221 | result = "-"; |
| 1222 | else if (strEQ(a, "errstr")) |
| 1223 | result = (char *)sslconn->verify_error; |
| 1224 | if (result) { |
| 1225 | result = *result ? ap_escape_logitem(r->pool, result) : NULL; |
| 1226 | } |
| 1227 | return result; |
| 1228 | } |
| 1229 | |
| 1230 | /* |
| 1231 | * extend the implementation of the %{..}x log function |
nothing calls this directly
no test coverage detected