Bump to 1.14.1
[platform/upstream/augeas.git] / lenses / squid.aug
1 (* Squid module for Augeas
2    Author: Free Ekanayaka <free@64studio.com>
3
4    Reference: the self-documented default squid.conf file
5
6 *)
7
8 module Squid =
9   autoload xfm
10
11 (************************************************************************
12  *                           USEFUL PRIMITIVES
13  *************************************************************************)
14
15 let eol         = Util.eol
16 let spc         = Util.del_ws_spc
17 let indent      = Util.indent
18
19 let word        =  /[A-Za-z0-9!_.-]+(\[[0-9]+\])?/
20 let sto_to_spc  = store /[^# \t\n]+/
21 let sto_to_eol  = store /([^# \t\n][^#\n]*[^# \t\n])|[^# \t\n]/
22
23 let comment     = Util.comment
24 let empty       = Util.empty
25 let comment_or_eol = Util.comment_or_eol
26 let value (kw:string)
27                 = [ spc . label kw . sto_to_spc ]
28
29 let value_space_in (kw:string)
30                 = [ spc . label kw . sto_to_eol ]
31
32 let parameters  = [ label "parameters"
33                    . counter "parameters"
34                    . [ spc . seq "parameters" . sto_to_spc ]+ ]
35
36 (************************************************************************
37  *                          SPACEVARS SETTINGS
38  *************************************************************************)
39
40 let entry_re =    "accept_filter"
41                 | "access_log"
42                 | "acl_uses_indirect_client"
43                 | "adaptation_access"
44                 | "adaptation_service_set"
45                 | "allow_underscore"
46                 | "always_direct"
47                 | "announce_file"
48                 | "announce_host"
49                 | "announce_period"
50                 | "announce_port"
51                 | "append_domain"
52                 | "as_whois_server"
53                 | "authenticate_cache_garbage_interval"
54                 | "authenticate_ip_shortcircuit_access"
55                 | "authenticate_ip_shortcircuit_ttl"
56                 | "authenticate_ip_ttl"
57                 | "authenticate_ttl"
58                 | "background_ping_rate"
59                 | "balance_on_multiple_ip"
60                 | "broken_posts"
61                 | "buffered_logs"
62                 | "cache"
63                 | "cache_dir"
64                 | "cache_dns_program"
65                 | "cache_effective_group"
66                 | "cache_effective_user"
67                 | "cache_log"
68                 | "cache_mem"
69                 | "cache_mgr"
70                 | "cachemgr_passwd"
71                 | "cache_peer"
72                 | "cache_peer_access"
73                 | "cache_peer_domain"
74                 | "cache_replacement_policy"
75                 | "cache_store_log"
76                 | "cache_swap_high"
77                 | "cache_swap_low"
78                 | "cache_swap_state"
79                 | "cache_vary"
80                 | "check_hostnames"
81                 | "chroot"
82                 | "client_db"
83                 | "client_lifetime"
84                 | "client_netmask"
85                 | "client_persistent_connections"
86                 | "clientside_tos"
87                 | "collapsed_forwarding"
88                 | "connect_timeout"
89                 | "coredump_dir"
90                 | "dead_peer_timeout"
91                 | "debug_options"
92                 | "delay_access"
93                 | "delay_class"
94                 | "delay_initial_bucket_level"
95                 | "delay_parameters"
96                 | "delay_pools"
97                 | "delay_pool_uses_indirect_client"
98                 | "deny_info"
99                 | "detect_broken_pconn"
100                 | "digest_bits_per_entry"
101                 | "digest_generation"
102                 | "digest_rebuild_chunk_percentage"
103                 | "digest_rebuild_period"
104                 | "digest_rewrite_period"
105                 | "digest_swapout_chunk_size"
106                 | "diskd_program"
107                 | "dns_children"
108                 | "dns_defnames"
109                 | "dns_nameservers"
110                 | "dns_retransmit_interval"
111                 | "dns_testnames"
112                 | "dns_timeout"
113                 | "dns_v4_fallback"
114                 | "ecap_enable"
115                 | "ecap_service"
116                 | "email_err_data"
117                 | "emulate_httpd_log"
118                 | "err_html_text"
119                 | "error_default_language"
120                 | "error_directory"
121                 | "error_log_languages"
122                 | "error_map"
123                 | "err_page_stylesheet"
124                 | "esi_parser"
125                 | "external_acl_type"
126                 | "external_refresh_check"
127                 | "follow_x_forwarded_for"
128                 | "forwarded_for"
129                 | "forward_log"
130                 | "forward_timeout"
131                 | "fqdncache_size"
132                 | "ftp_epsv_all"
133                 | "ftp_list_width"
134                 | "ftp_passive"
135                 | "ftp_sanitycheck"
136                 | "ftp_telnet_protocol"
137                 | "ftp_user"
138                 | "global_internal_static"
139                 | "half_closed_clients"
140                 | "header_access"
141                 | "header_replace"
142                 | "hierarchy_stoplist"
143                 | "high_memory_warning"
144                 | "high_page_fault_warning"
145                 | "high_response_time_warning"
146                 | "hostname_aliases"
147                 | "hosts_file"
148                 | "htcp_access"
149                 | "htcp_clr_access"
150                 | "htcp_port"
151                 | "http_accel_surrogate_remote"
152                 | "http_access2"
153                 | "httpd_accel_no_pmtu_disc"
154                 | "httpd_accel_surrogate_id"
155                 | "httpd_suppress_version_string"
156                 | "http_port"
157                 | "http_reply_access"
158                 | "https_port"
159                 | "icap_access"
160                 | "icap_class"
161                 | "icap_client_username_encode"
162                 | "icap_client_username_header"
163                 | "icap_connect_timeout"
164                 | "icap_default_options_ttl"
165                 | "icap_enable"
166                 | "icap_io_timeout"
167                 | "icap_persistent_connections"
168                 | "icap_preview_enable"
169                 | "icap_preview_size"
170                 | "icap_send_client_ip"
171                 | "icap_send_client_username"
172                 | "icap_service"
173                 | "icap_service_failure_limit"
174                 | "icap_service_revival_delay"
175                 | "icon_directory"
176                 | "icp_access"
177                 | "icp_hit_stale"
178                 | "icp_port"
179                 | "icp_query_timeout"
180                 | "ident_lookup_access"
181                 | "ident_timeout"
182                 | "ie_refresh"
183                 | "ignore_expect_100"
184                 | "ignore_ims_on_miss"
185                 | "ignore_unknown_nameservers"
186                 | "incoming_dns_average"
187                 | "incoming_http_average"
188                 | "incoming_icp_average"
189                 | "incoming_rate"
190                 | "ipcache_high"
191                 | "ipcache_low"
192                 | "ipcache_size"
193                 | "loadable_modules"
194                 | "location_rewrite_access"
195                 | "location_rewrite_children"
196                 | "location_rewrite_concurrency"
197                 | "location_rewrite_program"
198                 | "log_access"
199                 | "logfile_daemon"
200                 | "logfile_rotate"
201                 | "logformat"
202                 | "log_fqdn"
203                 | "log_icp_queries"
204                 | "log_ip_on_direct"
205                 | "log_mime_hdrs"
206                 | "log_uses_indirect_client"
207                 | "mail_from"
208                 | "mail_program"
209                 | "max_filedescriptors"
210                 | "maximum_icp_query_timeout"
211                 | "maximum_object_size"
212                 | "maximum_object_size_in_memory"
213                 | "maximum_single_addr_tries"
214                 | "max_open_disk_fds"
215                 | "max_stale"
216                 | "mcast_groups"
217                 | "mcast_icp_query_timeout"
218                 | "mcast_miss_addr"
219                 | "mcast_miss_encode_key"
220                 | "mcast_miss_port"
221                 | "mcast_miss_ttl"
222                 | "memory_pools"
223                 | "memory_pools_limit"
224                 | "memory_replacement_policy"
225                 | "mime_table"
226                 | "min_dns_poll_cnt"
227                 | "min_http_poll_cnt"
228                 | "min_icp_poll_cnt"
229                 | "minimum_direct_hops"
230                 | "minimum_direct_rtt"
231                 | "minimum_expiry_time"
232                 | "minimum_icp_query_timeout"
233                 | "minimum_object_size"
234                 | "miss_access"
235                 | "negative_dns_ttl"
236                 | "negative_ttl"
237                 | "neighbor_type_domain"
238                 | "netdb_filename"
239                 | "netdb_high"
240                 | "netdb_low"
241                 | "netdb_ping_period"
242                 | "never_direct"
243                 | "no_cache"
244                 | "nonhierarchical_direct"
245                 | "offline_mode"
246                 | "pconn_timeout"
247                 | "peer_connect_timeout"
248                 | "persistent_connection_after_error"
249                 | "persistent_request_timeout"
250                 | "pid_filename"
251                 | "pinger_enable"
252                 | "pinger_program"
253                 | "pipeline_prefetch"
254                 | "positive_dns_ttl"
255                 | "prefer_direct"
256                 | "qos_flows"
257                 | "query_icmp"
258                 | "quick_abort_max"
259                 | "quick_abort_min"
260                 | "quick_abort_pct"
261                 | "range_offset_limit"
262                 | "read_ahead_gap"
263                 | "read_timeout"
264                 | "redirector_bypass"
265                 | "referer_log"
266                 | "refresh_all_ims"
267                 | "refresh_stale_hit"
268                 | "relaxed_header_parser"
269                 | "reload_into_ims"
270                 | "reply_body_max_size"
271                 | "reply_header_access"
272                 | "reply_header_max_size"
273                 | "request_body_max_size"
274                 | "request_entities"
275                 | "request_header_access"
276                 | "request_header_max_size"
277                 | "request_timeout"
278                 | "retry_on_error"
279                 | "server_http11"
280                 | "server_persistent_connections"
281                 | "short_icon_urls"
282                 | "shutdown_lifetime"
283                 | "sleep_after_fork"
284                 | "snmp_access"
285                 | "snmp_incoming_address"
286                 | "snmp_outgoing_address"
287                 | "snmp_port"
288                 | "ssl_bump"
289                 | "ssl_engine"
290                 | "sslpassword_program"
291                 | "sslproxy_cafile"
292                 | "sslproxy_capath"
293                 | "sslproxy_cert_error"
294                 | "sslproxy_cipher"
295                 | "sslproxy_client_certificate"
296                 | "sslproxy_client_key"
297                 | "sslproxy_flags"
298                 | "sslproxy_options"
299                 | "sslproxy_version"
300                 | "ssl_unclean_shutdown"
301                 | "store_avg_object_size"
302                 | "store_dir_select_algorithm"
303                 | "store_objects_per_bucket"
304                 | "storeurl_access"
305                 | "storeurl_rewrite_children"
306                 | "storeurl_rewrite_concurrency"
307                 | "storeurl_rewrite_program"
308                 | "strip_query_terms"
309                 | "tcp_outgoing_address"
310                 | "tcp_outgoing_tos"
311                 | "tcp_recv_bufsize"
312                 | "test_reachability"
313                 | "udp_incoming_address"
314                 | "udp_outgoing_address"
315                 | "umask"
316                 | "unique_hostname"
317                 | "unlinkd_program"
318                 | "update_headers"
319                 | "uri_whitespace"
320                 | "url_rewrite_access"
321                 | "url_rewrite_bypass"
322                 | "url_rewrite_children"
323                 | "url_rewrite_concurrency"
324                 | "url_rewrite_host_header"
325                 | "url_rewrite_program"
326                 | "useragent_log"
327                 | "vary_ignore_expire"
328                 | "via"
329                 | "visible_hostname"
330                 | "wccp2_address"
331                 | "wccp2_assignment_method"
332                 | "wccp2_forwarding_method"
333                 | "wccp2_rebuild_wait"
334                 | "wccp2_return_method"
335                 | "wccp2_router"
336                 | "wccp2_service"
337                 | "wccp2_service_info"
338                 | "wccp2_weight"
339                 | "wccp_address"
340                 | "wccp_router"
341                 | "wccp_version"
342                 | "windows_ipaddrchangemonitor"
343                 | "zero_buffers"
344                 | "zph_local"
345                 | "zph_mode"
346                 | "zph_option"
347                 | "zph_parent"
348                 | "zph_sibling"
349
350 let entry       = indent . (Build.key_ws_value entry_re)
351
352 (************************************************************************
353  *                                AUTH
354  *************************************************************************)
355
356 let auth_re     = "auth_param"
357 let auth        = indent
358                   . [ key "auth_param"
359                   . value "scheme"
360                   . value "parameter"
361                   . (value_space_in "setting") ?
362                   . comment_or_eol ]
363
364 (************************************************************************
365  *                                ACL
366  *************************************************************************)
367
368 let acl_re     = "acl"
369 let acl        = indent
370                  . [ key acl_re . spc
371                  . [ key word
372                    . value "type"
373                    . value "setting"
374                    . parameters?
375                    . comment_or_eol ] ]
376
377 (************************************************************************
378  *                             HTTP ACCESS
379  *************************************************************************)
380
381 let http_access_re
382                = "http_access"
383                | "upgrade_http0.9"
384                | "broken_vary_encoding"
385
386 let http_access
387                = indent
388                  . [ key http_access_re
389                  . spc
390                  . [ key /allow|deny/
391                    . spc
392                    . sto_to_spc
393                    . parameters? ]
394                  . comment_or_eol ]
395
396 (************************************************************************
397  *                             REFRESH PATTERN
398  *************************************************************************)
399
400 let refresh_pattern_option_re = "override-expire"
401                               | "override-lastmod"
402                               | "reload-into-ims"
403                               | "ignore-reload"
404                               | "ignore-no-cache"
405                               | "ignore-no-store"
406                               | "ignore-must-revalidate"
407                               | "ignore-private"
408                               | "ignore-auth"
409                               | "refresh-ims"
410                               | "store-stale"
411
412 let refresh_pattern = indent . [ key "refresh_pattern" . spc
413                       . [ label "case_insensitive" . Util.del_str "-i" . spc ]?
414                       . store /[^ \t\n]+/ . spc
415                       . [ label "min" . store Rx.integer ] . spc
416                       . [ label "percent" . store Rx.integer . Util.del_str "%" ] . spc
417                       . [ label "max" . store Rx.integer ]
418                       . (spc . Build.opt_list [ label "option" . store refresh_pattern_option_re ] spc)?
419                       . comment_or_eol ]
420
421 (************************************************************************
422  *                             EXTENSION METHODS
423  *************************************************************************)
424
425 let extension_methods = indent . [ key "extension_methods" . spc
426                         . Build.opt_list [ seq "extension_method" . store Rx.word ] spc
427                         . comment_or_eol ]
428
429 (************************************************************************
430  *                               LENS
431  *************************************************************************)
432
433 let lns         = (comment|empty|entry|auth|acl|http_access|refresh_pattern|extension_methods)*
434
435 let filter      = incl "/etc/squid/squid.conf"
436                 . incl "/etc/squid3/squid.conf"
437
438 let xfm         = transform lns filter