/*
- * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+ * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
*
* Squid software is distributed under GPLv2+ license and includes
* contributions from numerous individuals and organizations.
TokenTableEntry("err_detail", LFT_SQUID_ERROR_DETAIL ),
TokenTableEntry("note", LFT_NOTE ),
TokenTableEntry("credentials", LFT_CREDENTIALS),
+ /*
+ * Legacy external_acl_type format tokens
+ */
+ TokenTableEntry("ACL", LFT_EXT_ACL_NAME),
+ TokenTableEntry("DATA", LFT_EXT_ACL_DATA),
+ TokenTableEntry("DST", LFT_CLIENT_REQ_URLDOMAIN),
+ TokenTableEntry("EXT_LOG", LFT_EXT_LOG),
+ TokenTableEntry("EXT_USER", LFT_USER_EXTERNAL),
+ TokenTableEntry("IDENT", LFT_USER_IDENT),
+ TokenTableEntry("LOGIN", LFT_USER_LOGIN),
+ TokenTableEntry("METHOD", LFT_CLIENT_REQ_METHOD),
+ TokenTableEntry("MYADDR", LFT_LOCAL_LISTENING_IP),
+ TokenTableEntry("MYPORT", LFT_LOCAL_LISTENING_PORT),
+ TokenTableEntry("PATH", LFT_CLIENT_REQ_URLPATH),
+ TokenTableEntry("PORT", LFT_CLIENT_REQ_URLPORT),
+ TokenTableEntry("PROTO", LFT_CLIENT_REQ_URLSCHEME),
+ TokenTableEntry("SRCEUI48", LFT_EXT_ACL_CLIENT_EUI48),
+ TokenTableEntry("SRCEUI64", LFT_EXT_ACL_CLIENT_EUI64),
+ TokenTableEntry("SRCPORT", LFT_CLIENT_PORT),
+ TokenTableEntry("SRC", LFT_CLIENT_IP_ADDRESS), // keep after longer SRC* tokens
+ TokenTableEntry("TAG", LFT_TAG),
+ TokenTableEntry("URI", LFT_CLIENT_REQ_URI),
+#if USE_OPENSSL
+ TokenTableEntry("USER_CERTCHAIN", LFT_EXT_ACL_USER_CERTCHAIN_RAW),
+ TokenTableEntry("USER_CERT", LFT_EXT_ACL_USER_CERT_RAW),
+#endif
TokenTableEntry(NULL, LFT_NONE) /* this must be last */
};
TokenTableEntry(">cert_subject", LFT_SSL_USER_CERT_SUBJECT),
TokenTableEntry(">cert_issuer", LFT_SSL_USER_CERT_ISSUER),
TokenTableEntry(">sni", LFT_SSL_CLIENT_SNI),
- /*TokenTableEntry("<cert_subject", LFT_SSL_SERVER_CERT_SUBJECT), */
- /*TokenTableEntry("<cert_issuer", LFT_SSL_SERVER_CERT_ISSUER), */
+ TokenTableEntry("<cert_subject", LFT_SSL_SERVER_CERT_SUBJECT),
+ TokenTableEntry("<cert_issuer", LFT_SSL_SERVER_CERT_ISSUER),
TokenTableEntry("<cert_errors", LFT_SSL_SERVER_CERT_ERRORS),
+ TokenTableEntry(">negotiated_version", LFT_TLS_CLIENT_NEGOTIATED_VERSION),
+ TokenTableEntry("<negotiated_version", LFT_TLS_SERVER_NEGOTIATED_VERSION),
+ TokenTableEntry(">negotiated_cipher", LFT_TLS_CLIENT_NEGOTIATED_CIPHER),
+ TokenTableEntry("<negotiated_cipher", LFT_TLS_SERVER_NEGOTIATED_CIPHER),
+ TokenTableEntry(">received_hello_version", LFT_TLS_CLIENT_RECEIVED_HELLO_VERSION),
+ TokenTableEntry("<received_hello_version", LFT_TLS_SERVER_RECEIVED_HELLO_VERSION),
+ TokenTableEntry(">received_supported_version", LFT_TLS_CLIENT_SUPPORTED_VERSION),
+ TokenTableEntry("<received_supported_version", LFT_TLS_SERVER_SUPPORTED_VERSION),
TokenTableEntry(NULL, LFT_NONE)
};
#endif
Format::Token::Init()
{
// TODO standard log tokens
- // TODO external ACL fmt tokens
#if USE_ADAPTATION
TheConfig.registerTokens(String("adapt"),::Format::TokenTableAdapt);
++cur;
break;
+ case '/':
+ quote = LOG_QUOTE_SHELL;
+ ++cur;
+ break;
+
default:
quote = *quoting;
break;
cur = endp;
}
+ // when {arg} field is before the token (old logformat syntax)
if (*cur == '{') {
char *cp;
++cur;
fatalf("Can't parse configuration token: '%s'\n", def);
}
+ // when {arg} field is after the token (old external_acl_type token syntax)
+ // but accept only if there was none before the token
+ if (*cur == '{' && !data.string) {
+ char *cp;
+ ++cur;
+ l = strcspn(cur, "}");
+ cp = (char *)xmalloc(l + 1);
+ xstrncpy(cp, cur, l + 1);
+ data.string = cp;
+ cur += l;
+
+ if (*cur == '}')
+ ++cur;
+ }
+
if (*cur == ' ') {
space = true;
++cur;
break;
#endif
+#if USE_OPENSSL
+ case LFT_TLS_SERVER_NEGOTIATED_VERSION:
+ case LFT_TLS_SERVER_RECEIVED_HELLO_VERSION:
+ case LFT_TLS_SERVER_SUPPORTED_VERSION:
+ Config.onoff.logTlsServerHelloDetails = true;
+ break;
+#endif
+
case LFT_REQUEST_URLGROUP_OLD_2X:
debugs(46, DBG_PARSE_NOTE(DBG_IMPORTANT), "WARNING: The \"rG\" formatting code is deprecated. Use \"note{urlgroup}\" instead.");
type = LFT_NOTE;