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