]>
Commit | Line | Data |
---|---|---|
bbc27441 | 1 | /* |
bf95c10a | 2 | * Copyright (C) 1996-2022 The Squid Software Foundation and contributors |
bbc27441 AJ |
3 | * |
4 | * Squid software is distributed under GPLv2+ license and includes | |
5 | * contributions from numerous individuals and organizations. | |
6 | * Please see the COPYING and CONTRIBUTORS files for details. | |
7 | */ | |
8 | ||
31971e6a AJ |
9 | #ifndef _SQUID_FMT_BYTECODE_H |
10 | #define _SQUID_FMT_BYTECODE_H | |
38e16f92 | 11 | |
20efa1c2 | 12 | /* |
38e16f92 AJ |
13 | * Squid configuration allows users to define custom formats in |
14 | * several components. | |
15 | * - logging | |
16 | * - external ACL input | |
17 | * - deny page URL | |
20efa1c2 | 18 | * |
38e16f92 AJ |
19 | * These enumerations and classes define the API for parsing of |
20 | * format directives to define these patterns. Along with output | |
21 | * functionality to produce formatted buffers. | |
20efa1c2 | 22 | */ |
20efa1c2 | 23 | |
38e16f92 AJ |
24 | namespace Format |
25 | { | |
20efa1c2 | 26 | |
20efa1c2 | 27 | /* |
2f8abb64 | 28 | * Bytecodes for the configurable format stuff |
20efa1c2 AJ |
29 | */ |
30 | typedef enum { | |
f53969cc | 31 | LFT_NONE, /* dummy */ |
31971e6a AJ |
32 | |
33 | /* arbitrary string between tokens */ | |
20efa1c2 AJ |
34 | LFT_STRING, |
35 | ||
31971e6a | 36 | /* client TCP connection remote end details */ |
20efa1c2 AJ |
37 | LFT_CLIENT_IP_ADDRESS, |
38 | LFT_CLIENT_FQDN, | |
39 | LFT_CLIENT_PORT, | |
20efa1c2 | 40 | LFT_CLIENT_EUI, |
20efa1c2 | 41 | |
31971e6a | 42 | /* client TCP connection local end details */ |
8652f8e7 | 43 | LFT_CLIENT_LOCAL_IP, |
8652f8e7 | 44 | LFT_CLIENT_LOCAL_PORT, |
31971e6a | 45 | /*LFT_CLIENT_LOCAL_FQDN, (rDNS) */ |
f123f5e9 CT |
46 | LFT_CLIENT_LOCAL_TOS, |
47 | LFT_CLIENT_LOCAL_NFMARK, | |
31971e6a | 48 | |
a120b7a8 CT |
49 | LFT_TRANSPORT_CLIENT_CONNECTION_ID, |
50 | ||
6131103b CT |
51 | LFT_CLIENT_HANDSHAKE, |
52 | ||
31971e6a AJ |
53 | /* client connection local squid.conf details */ |
54 | LFT_LOCAL_LISTENING_IP, | |
28417506 | 55 | LFT_LOCAL_LISTENING_PORT, |
31971e6a AJ |
56 | /*LFT_LOCAL_LISTENING_NAME, (myportname) */ |
57 | ||
58 | /* server TCP connection remote end details */ | |
59 | LFT_SERVER_IP_ADDRESS, | |
60 | LFT_SERVER_FQDN_OR_PEER_NAME, | |
61 | LFT_SERVER_PORT, | |
8652f8e7 | 62 | |
31971e6a | 63 | /* server TCP connection local end details */ |
8652f8e7 AJ |
64 | LFT_SERVER_LOCAL_IP, |
65 | LFT_SERVER_LOCAL_IP_OLD_27, | |
66 | LFT_SERVER_LOCAL_PORT, | |
f123f5e9 CT |
67 | LFT_SERVER_LOCAL_TOS, |
68 | LFT_SERVER_LOCAL_NFMARK, | |
20efa1c2 | 69 | |
2f8abb64 | 70 | /* original Request-Line details received from client */ |
f025622f AJ |
71 | LFT_CLIENT_REQ_METHOD, |
72 | LFT_CLIENT_REQ_URI, | |
5aca9cf2 | 73 | LFT_CLIENT_REQ_URLSCHEME, |
fa450988 | 74 | LFT_CLIENT_REQ_URLDOMAIN, |
5aca9cf2 | 75 | LFT_CLIENT_REQ_URLPORT, |
f025622f AJ |
76 | LFT_CLIENT_REQ_URLPATH, |
77 | /* LFT_CLIENT_REQ_QUERY, */ | |
78 | LFT_CLIENT_REQ_VERSION, | |
79 | ||
2f8abb64 | 80 | /* Request-Line details received from client (legacy, filtered) */ |
20efa1c2 AJ |
81 | LFT_REQUEST_METHOD, |
82 | LFT_REQUEST_URI, | |
f025622f AJ |
83 | LFT_REQUEST_URLPATH_OLD_31, |
84 | /*LFT_REQUEST_QUERY, */ | |
85 | LFT_REQUEST_VERSION_OLD_2X, | |
20efa1c2 | 86 | LFT_REQUEST_VERSION, |
d074f918 | 87 | LFT_REQUEST_URLGROUP_OLD_2X, |
20efa1c2 | 88 | |
31971e6a AJ |
89 | /* request header details pre-adaptation */ |
90 | LFT_REQUEST_HEADER, | |
91 | LFT_REQUEST_HEADER_ELEM, | |
92 | LFT_REQUEST_ALL_HEADERS, | |
93 | ||
94 | /* request header details post-adaptation */ | |
95 | LFT_ADAPTED_REQUEST_HEADER, | |
96 | LFT_ADAPTED_REQUEST_HEADER_ELEM, | |
97 | LFT_ADAPTED_REQUEST_ALL_HEADERS, | |
98 | ||
f025622f AJ |
99 | /* Request-Line details sent to the server/peer */ |
100 | LFT_SERVER_REQ_METHOD, | |
101 | LFT_SERVER_REQ_URI, | |
5aca9cf2 AJ |
102 | LFT_SERVER_REQ_URLSCHEME, |
103 | LFT_SERVER_REQ_URLDOMAIN, | |
104 | LFT_SERVER_REQ_URLPORT, | |
f025622f AJ |
105 | LFT_SERVER_REQ_URLPATH, |
106 | /*LFT_SERVER_REQ_QUERY, */ | |
107 | LFT_SERVER_REQ_VERSION, | |
108 | ||
31971e6a | 109 | /* request meta details */ |
d6df21d2 AJ |
110 | LFT_CLIENT_REQUEST_SIZE_TOTAL, |
111 | LFT_CLIENT_REQUEST_SIZE_HEADERS, | |
20efa1c2 AJ |
112 | /*LFT_REQUEST_SIZE_BODY, */ |
113 | /*LFT_REQUEST_SIZE_BODY_NO_TE, */ | |
114 | ||
2f8abb64 | 115 | /* original Status-Line details received from server */ |
9837567d | 116 | // TODO: implement server detail logging |
31971e6a AJ |
117 | |
118 | /* Status-Line details sent to the client */ | |
9837567d | 119 | // TODO: implement server detail logging |
31971e6a AJ |
120 | |
121 | /* response Status-Line details (legacy, filtered) */ | |
122 | LFT_HTTP_SENT_STATUS_CODE_OLD_30, | |
123 | LFT_HTTP_SENT_STATUS_CODE, | |
124 | LFT_HTTP_RECEIVED_STATUS_CODE, | |
125 | /*LFT_HTTP_STATUS, */ | |
126 | LFT_HTTP_BODY_BYTES_READ, | |
127 | ||
128 | /* response header details pre-adaptation */ | |
129 | LFT_REPLY_HEADER, | |
130 | LFT_REPLY_HEADER_ELEM, | |
131 | LFT_REPLY_ALL_HEADERS, | |
132 | ||
133 | /* response header details post-adaptation */ | |
134 | /* LFT_ADAPTED_REPLY_HEADER, */ | |
135 | /* LFT_ADAPTED_REPLY_HEADER_ELEM, */ | |
136 | /* LFT_ADAPTED_REPLY_ALL_HEADERS, */ | |
137 | ||
138 | /* response meta details */ | |
d6df21d2 | 139 | LFT_ADAPTED_REPLY_SIZE_TOTAL, |
20efa1c2 AJ |
140 | LFT_REPLY_HIGHOFFSET, |
141 | LFT_REPLY_OBJECTSIZE, | |
d6df21d2 | 142 | LFT_ADAPTED_REPLY_SIZE_HEADERS, |
20efa1c2 AJ |
143 | /*LFT_REPLY_SIZE_BODY, */ |
144 | /*LFT_REPLY_SIZE_BODY_NO_TE, */ | |
145 | ||
d6df21d2 AJ |
146 | LFT_CLIENT_IO_SIZE_TOTAL, |
147 | ||
31971e6a AJ |
148 | /* client credentials */ |
149 | LFT_USER_NAME, /* any source will do */ | |
150 | LFT_USER_LOGIN, | |
151 | LFT_USER_IDENT, | |
152 | /*LFT_USER_REALM, */ | |
153 | /*LFT_USER_SCHEME, */ | |
154 | LFT_USER_EXTERNAL, | |
155 | /* LFT_USER_SSL_CERT, */ | |
156 | ||
157 | /* global time details */ | |
158 | LFT_TIME_SECONDS_SINCE_EPOCH, | |
159 | LFT_TIME_SUBSECOND, | |
160 | LFT_TIME_LOCALTIME, | |
161 | LFT_TIME_GMT, | |
af0ded40 | 162 | LFT_TIME_START, // the time the master transaction started |
31971e6a AJ |
163 | |
164 | /* processing time details */ | |
165 | LFT_TIME_TO_HANDLE_REQUEST, | |
166 | LFT_PEER_RESPONSE_TIME, | |
167 | LFT_TOTAL_SERVER_SIDE_RESPONSE_TIME, | |
168 | LFT_DNS_WAIT_TIME, | |
0cd2a1b6 | 169 | LFT_BUSY_TIME, |
31971e6a AJ |
170 | |
171 | /* Squid internal processing details */ | |
172 | LFT_SQUID_STATUS, | |
173 | LFT_SQUID_ERROR, | |
174 | LFT_SQUID_ERROR_DETAIL, | |
175 | LFT_SQUID_HIERARCHY, | |
176 | ||
177 | LFT_MIME_TYPE, | |
20efa1c2 | 178 | LFT_TAG, |
20efa1c2 AJ |
179 | LFT_EXT_LOG, |
180 | ||
181 | LFT_SEQUENCE_NUMBER, | |
182 | ||
183 | #if USE_ADAPTATION | |
31971e6a AJ |
184 | LFT_ADAPTATION_SUM_XACT_TIMES, |
185 | LFT_ADAPTATION_ALL_XACT_TIMES, | |
ed231061 AR |
186 | LFT_ADAPTATION_LAST_HEADER, |
187 | LFT_ADAPTATION_LAST_HEADER_ELEM, | |
188 | LFT_ADAPTATION_LAST_ALL_HEADERS, | |
20efa1c2 AJ |
189 | #endif |
190 | ||
191 | #if ICAP_CLIENT | |
192 | ||
193 | LFT_ICAP_TOTAL_TIME, | |
20efa1c2 AJ |
194 | |
195 | LFT_ICAP_ADDR, | |
196 | LFT_ICAP_SERV_NAME, | |
197 | LFT_ICAP_REQUEST_URI, | |
198 | LFT_ICAP_REQUEST_METHOD, | |
199 | LFT_ICAP_BYTES_SENT, | |
200 | LFT_ICAP_BYTES_READ, | |
201 | LFT_ICAP_BODY_BYTES_READ, | |
202 | ||
203 | LFT_ICAP_REQ_HEADER, | |
204 | LFT_ICAP_REQ_HEADER_ELEM, | |
205 | LFT_ICAP_REQ_ALL_HEADERS, | |
206 | ||
207 | LFT_ICAP_REP_HEADER, | |
208 | LFT_ICAP_REP_HEADER_ELEM, | |
209 | LFT_ICAP_REP_ALL_HEADERS, | |
210 | ||
211 | LFT_ICAP_TR_RESPONSE_TIME, | |
212 | LFT_ICAP_IO_TIME, | |
213 | LFT_ICAP_OUTCOME, | |
214 | LFT_ICAP_STATUS_CODE, | |
215 | #endif | |
d4806c91 | 216 | LFT_CREDENTIALS, |
20efa1c2 | 217 | |
cb4f4424 | 218 | #if USE_OPENSSL |
08097970 | 219 | LFT_SSL_BUMP_MODE, |
f4698e0b CT |
220 | LFT_SSL_USER_CERT_SUBJECT, |
221 | LFT_SSL_USER_CERT_ISSUER, | |
cedca6e7 | 222 | LFT_SSL_CLIENT_SNI, |
789dda8d CT |
223 | LFT_SSL_SERVER_CERT_SUBJECT, |
224 | LFT_SSL_SERVER_CERT_ISSUER, | |
7598eb63 | 225 | LFT_SSL_SERVER_CERT_ERRORS, |
12b5040f | 226 | LFT_SSL_SERVER_CERT_WHOLE, |
2bcab852 CT |
227 | LFT_TLS_CLIENT_NEGOTIATED_VERSION, |
228 | LFT_TLS_SERVER_NEGOTIATED_VERSION, | |
229 | LFT_TLS_CLIENT_NEGOTIATED_CIPHER, | |
230 | LFT_TLS_SERVER_NEGOTIATED_CIPHER, | |
231 | LFT_TLS_CLIENT_RECEIVED_HELLO_VERSION, | |
232 | LFT_TLS_SERVER_RECEIVED_HELLO_VERSION, | |
233 | LFT_TLS_CLIENT_SUPPORTED_VERSION, | |
234 | LFT_TLS_SERVER_SUPPORTED_VERSION, | |
08097970 AR |
235 | #endif |
236 | ||
d7f4a0b7 | 237 | LFT_NOTE, |
f53969cc | 238 | LFT_PERCENT, /* special string cases for escaped chars */ |
7cfd3a41 | 239 | LFT_MASTER_XACTION, |
5aca9cf2 AJ |
240 | |
241 | // TODO assign better bytecode names and Token strings for these | |
ce810e33 | 242 | #if USE_OPENSSL |
5aca9cf2 AJ |
243 | LFT_EXT_ACL_USER_CERT_RAW, |
244 | LFT_EXT_ACL_USER_CERTCHAIN_RAW, | |
245 | LFT_EXT_ACL_USER_CERT, | |
246 | LFT_EXT_ACL_USER_CA_CERT, | |
ce810e33 | 247 | #endif |
5aca9cf2 AJ |
248 | LFT_EXT_ACL_CLIENT_EUI48, |
249 | LFT_EXT_ACL_CLIENT_EUI64, | |
250 | LFT_EXT_ACL_NAME, | |
36c774f7 | 251 | LFT_EXT_ACL_DATA, |
5aca9cf2 | 252 | |
36c774f7 EB |
253 | /* PROXY protocol details */ |
254 | LFT_PROXY_PROTOCOL_RECEIVED_HEADER, | |
255 | LFT_PROXY_PROTOCOL_RECEIVED_HEADER_ELEM, | |
256 | LFT_PROXY_PROTOCOL_RECEIVED_ALL_HEADERS | |
38e16f92 | 257 | } ByteCode_t; |
20efa1c2 | 258 | |
38e16f92 AJ |
259 | /// Quoting style for a format output. |
260 | enum Quoting { | |
20efa1c2 AJ |
261 | LOG_QUOTE_NONE = 0, |
262 | LOG_QUOTE_QUOTES, | |
263 | LOG_QUOTE_MIMEBLOB, | |
264 | LOG_QUOTE_URL, | |
95d78f10 | 265 | LOG_QUOTE_SHELL, |
20efa1c2 AJ |
266 | LOG_QUOTE_RAW |
267 | }; | |
268 | ||
38e16f92 | 269 | } // namespace Format |
20efa1c2 | 270 | |
31971e6a | 271 | #endif /* _SQUID_FMT_BYTECODE_H */ |
f53969cc | 272 |