[
  {
    "path": ".gitmodules",
    "content": "[submodule \"privoxy-adblock\"]\n\tpath = deprecated/privoxy-adblock\n\turl = ../privoxy-adblock.git\n[submodule \"easylist-pac-privoxy\"]\n\tpath = easylist-pac-privoxy\n\turl = ../easylist-pac-privoxy.git\n\tbranch = master\n[submodule \"macOS-clamAV\"]\n\tpath = deprecated/macOS-clamAV\n\turl = ../macOS-clamAV.git\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 essandess\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "README.md",
    "content": "macOS-Fortress\n===========\n\n# macOS-Fortress: Firewall, Blackhole, and Privatizing Proxy for Trackers, Attackers, Malware, Adware, and Spammers; with On-Demand and On-Access Anti-Virus Scanning\n\nKernel-level, OS-level, and client-level security for macOS. Built to address a steady stream of attacks visible on snort and server logs, as well as blocks ads, malicious scripts, and conceal information used to track you around the web. After this package was installed, snort and other detections have fallen to a fraction with a few simple blocking actions.  This setup is a lot more capable and effective than using a simple adblocking browser add-on. There's a world of difference between ad-filled web pages with and without a filtering proxy server. It's also saved me from inadvertantly clicking on phishing links.\n\n## Proxy features\n* macOS adaptive firewall\n* Adaptive firewall to brute force attacks\n* IP blocks updated about twice a day from emergingthreats.net (IP blocks, compromised hosts, Malvertisers) and [dshield.org](https://secure.dshield.org)’s top-20\n* Host blocks updated about twice a day from [hphosts.net](https://www.hosts-file.net)\n* HTTPS Inspection using [Privoxy](http://www.privoxy.org)\n* [EasyList](https://easylist.to/index.html) Tracker and Adblock Rules for [Privoxy](http://www.privoxy.org) with [adblock2privoxy](../../../adblock2privoxy)\n* Incorporates multiple blocking rulesets into both Privoxy and PAC formats, including [easyprivacy.txt](https://easylist.to/easylist/easyprivacy.txt), [easylist.txt](https://easylist.to/easylist/easylist.txt), [fanboy-annoyance.txt](https://easylist.to/easylist/fanboy-annoyance.txt), [fanboy-social.txt](https://easylist.to/easylist/fanboy-social.txt), [antiadblockfilters.txt](https://easylist-downloads.adblockplus.org/antiadblockfilters.txt), [malwaredomains_full.txt](https://easylist-downloads.adblockplus.org/malwaredomains_full.txt), and the anti-spamware list [adblock-list.txt](https://raw.githubusercontent.com/Dawsey21/Lists/master/adblock-list.txt).\n\n## Anti-Virus features\n* Configures [clamAV](http://www.clamav.net) for macOS with regular on-demand scans and on-access scanning of user `Downloads` \nand `Desktop` directories.\n* See the [MacPorts](https://www.macports.org/) port `clamav-server` for details, `port notes clamav-server`.\n\n## Installation\n\n```bash\nsudo port install macos-fortress\nport notes macos-fortress\nsudo port load macos-fortress\n```\n\nAfter initial installation, it is necessary to kickstart these launch daemons, which run on a schedule, and do not run at load time:\n\n```bash\nsudo launchctl kickstart -k system/org.macports.macos-fortress-dshield\nsudo launchctl kickstart -k system/org.macports.macos-fortress-emergingthreats\nsudo launchctl kickstart -k system/org.macports.macos-fortress-hphosts\nsudo launchctl kickstart -k system/org.macports.adblock2privoxy\nsudo launchctl kickstart -k system/org.macports.macos-fortress-easylistpac\n```\n\nThe default web server is native macOS Apache, which must be started with the command:\n```bash\nsudo apachectl start\n```\n\nNote that all files in this repo are superceded by the MacPorts port\n[macos-fortress](https://github.com/macports/macports-ports/tree/master/net/macos-fortress), including the\ndeprecated installation script [readme-and-install.sh](./readme-and-install.sh).\n\n### Firewall-only installation\n\n```bash\nsudo port install macos-fortress-pf\nport notes macos-fortress-pf\nsudo port load macos-fortress-pf\n```\n\n### Proxy-only installation\n\n```bash\nsudo port install macos-fortress-proxy\nport notes macos-fortress-proxy\nsudo port load macos-fortress-proxy\n```\n\n## Check and troubleshoot setup\n\n> `sudo sh macosfortress_setup_check.sh`\n\nWorking output:\n```\nChecking macOS-Fortress installed items (run as sudo)…\n\nChecking launchd.plist files…\n[✅] /Library/LaunchDaemons/net.openbsd.pf.plist exists\n[✅] /Library/LaunchDaemons/net.openbsd.pf.brutexpire.plist exists\n[✅] /Library/LaunchDaemons/net.emergingthreats.blockips.plist exists\n[✅] /Library/LaunchDaemons/net.dshield.block.plist exists\n[✅] /Library/LaunchDaemons/net.hphosts.hosts.plist exists\n[✅] /Library/LaunchDaemons/com.github.essandess.easylist-pac.plist exists\n[✅] /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.plist exists\n[✅] /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.nginx.plist exists\n[✅] /Library/LaunchDaemons/org.squid-cache.squid-rotate.plist exists\n[✅] /Library/LaunchDaemons/org.macports.Privoxy.plist exists\n[✅] /Library/LaunchDaemons/org.macports.clamd.plist exists\n[✅] /Library/LaunchDaemons/org.macports.freshclam.plist exists\n[✅] /Library/LaunchDaemons/org.macports.ClamavScanSchedule.plist exists\n[✅] /Library/LaunchDaemons/org.macports.ClamavScanOnAccess.plist exists\n\nChecking launchd.plist's. These should all be installed with return\ncode 0 (2d column of `sudo launchctl list`)…\n[✅]\t-\t0\tcom.github.essandess.easylist-pac\n[✅]\t-\t0\tnet.dshield.block\n[✅]\t91695\t0\torg.macports.ClamdScanOnAccess\n[✅]\t-\t0\torg.macports.freshclam\n[✅]\t-\t0\tnet.openbsd.pf\n[✅]\t-\t0\tcom.github.essandess.adblock2privoxy\n[✅]\t35403\t0\torg.macports.clamd\n[✅]\t-\t0\torg.macports.ClamavScanSchedule\n[✅]\t-\t0\tnet.openbsd.pf.brutexpire\n[✅]\t-\t0\tnet.emergingthreats.blockips\n[✅]\t36183\t0\torg.macports.Privoxy\n[✅]\t5578\t0\tcom.github.essandess.adblock2privoxy.nginx\n[✅]\t-\t0\tnet.hphosts.hosts\n\nChecking PF files…\n[✅] /etc/pf.conf exists\n[✅] /usr/local/etc/blockips.conf exists\n[✅] /usr/local/etc/emerging-Block-IPs.txt exists\n[✅] /usr/local/etc/compromised-ips.txt exists\n[✅] /usr/local/etc/dshield_block_ip.txt exists\n[✅] /usr/local/etc/block.txt exists\n[✅] /usr/local/etc/block.txt.asc exists\n\nChecking PF…\n[✅] PF is enabled and running\n\nChecking hphosts files…\n[✅] /etc/hosts-hphosts exists\n[✅] /usr/local/etc/hosts.zip exists\n[✅] /usr/local/etc/hphosts-partial.asp exists\n[✅] /usr/local/etc/whitelist.txt exists\n[✅] /usr/local/etc/blacklist.txt exists\n\nChecking /etc/hosts-hphosts creation…\n[✅] /etc/hosts-hphosts exists\n\nChecking proxy PAC and proxy chain files…\n[✅] /Library/WebServer/Documents/proxy.pac.orig exists\n[✅] /Library/WebServer/Documents/proxy.pac exists\n[✅] /usr/local/bin/easylist_pac.py exists\n[✅] /usr/local/bin/adblock2privoxy exists\n[✅] /usr/local/etc/proxy.pac exists\n[✅] /usr/local/etc/adblock2privoxy/nginx.conf exists\n[✅] /usr/local/etc/adblock2privoxy/css/default.html exists\n[✅] /usr/local/etc/adblock2privoxy/privoxy/ab2p.action exists\n[✅] /usr/local/etc/adblock2privoxy/privoxy/ab2p.filter exists\n[✅] /usr/local/etc/adblock2privoxy/privoxy/ab2p.system.action exists\n[✅] /usr/local/etc/adblock2privoxy/privoxy/ab2p.system.filter exists\n[✅] /opt/local/etc/privoxy/config exists\n[✅] /opt/local/var/log/privoxy/logfile exists\n\nChecking proxy status…\n[✅] Privoxy is running properly\n[✅] Privoxy config http://p.p/ via http://localhost:3128 is running properly\n[✅] nginx is running properly\n[✅] PAC /Library/WebServer/Documents/proxy.pac.orig passes Javascript parsing\n[✅] PAC /Library/WebServer/Documents/proxy.pac passes Javascript parsing\n[✅] Web server for http://localhost/proxy.pac is running properly\n[✅] Blackhole server for http://localhost:8119/ is running properly\n```\n\n## Disabling\n\n```\nsudo port unload macos-fortress\n```\n\nor\n\n```\nsudo port uninstall macos-fortress\n```\n\nThis repo is superceded by the MacPorts port\n[macos-fortress](https://github.com/macports/macports-ports/tree/master/net/macos-fortress), including the\ndeprecated disable/uninstall script [disable.sh](./disable.sh), which was originally used to unload all launch daemons, \ndisable the pf firewall, and list all installed files **without** removing them.\n\n## Configuration modifications\n\nThere are three major, independent, and configurable components to the repo: the PF firewall, the proxy chain, and the\nAV scanner. Here are a few configuration pointers.\n\n### PF firewall\n\nThe file [pf.conf](./pf.conf) controls the firewall ruleset and likely must be edited on a specific computer and network, or \nedited for a VPN server [configuration](../../../macos-openvpn-server/pf.conf).\n\n* The PF firewall can be disabled with the command:\n> `sudo pfctl -d`\n* The variable `int_if` for the internal interface is set to `en0`. This should be changed to the active interface on your \ncomputer, which can be determined with the command `ifconfig -a`, or more specificall:\n> `ifconfig | pcregrep -M -o '^[^\\t:]+:([^\\n]|\\n\\t)*status: active' | egrep -o -m 1 '^[^\\t:]+'`\n* The table `<lan_inet>` is set to the standard reserved ranges `{ 10/8, 172.16/12, 192.168/16 }`. This must be changed\nto the CIDR ranges on the specific LAN.\n* Specific services accessible only on the LAN and on the open internet should be selected and set in the appropriate \nvariables. See `/etc/services`.\n* The PF firewall ruleset can be flushed, enabled, and reintialized with the command:\n> `sudo pfctl -Fall && sudo pfctl -ef /etc/pf.conf`\n* See the `pfctl` commands in the script [pf_attacks](./pf_attacks) to determine IP addresses and counts for the various \nblocked IPs. E.g., the adaptive table `<bruteforce>` is shown using the command:\n> `sudo pfctl -t bruteforce -Ts`\n\n### Proxy\n\nPrivoxy on port 8118 is configured in [config](./config) to sent web requests to the internet, wih HTTPS inspection configured for\nblocking content within TLS encrypted tunnels—the great majorityof we content. An auxiliary nginx webserver for CSS-based \nelement hiding is configured on port 8119. Privoxy `.action` and `.filter` files, and nginx `.css` files are created from Easylist rules \nusing the repo [adblock2privoxy](../../../adblock2privoxy).\n\nBrowsing to the privoxy configuration page http://p.p/ through any of these proxy configurations is a check on whether the \nproxy is running and configured correctly.\n\nTo provide these services on a firewalled LAN, edit the privoxy and nginx configuration files\n[config](./config), and [nginx.conf](../../../adblock2privoxy//nginx.conf) so that they're \navailable for devices on the LAN, or connecting from a [VPN tunnel](../../../macos-openvpn-server/).\n\n### Macports updates\n\nUpdate Macports packages regularly. This command with update the Macports database, update all installed packages, and uninstall all older, inactive versions.\n\n`sudo bash -c 'port selfupdate ; port -puN upgrade outdated ; port uninstall inactive'`\n\n### Warning about Privoxy compression\n\nThough it's possible to build Privoxy with the `configure` `--enable-compression` option, \ncompressed HTTP traffic within a [VPN tunnel](../../../macos-openvpn-server) exposes your traffic to the\nCRIME/BEAST/[VORACLE](https://openvpn.net/security-advisory/the-voracle-attack-vulnerability/) attacks and is generally not \nrecommended.\n\n## Installation details\nThe MacPorts port\n[macos-fortress](https://github.com/macports/macports-ports/tree/master/net/macos-fortress)\n(`sudo port install macos-fortress`) installs and configures an macOS Firewall and Privatizing\nProxy. It will:\n* Uses Macports to download and install several key utilities and applications (wget gnupg p7zip squid privoxy nmap)\n* Configure macOS's PF native firewall (man pfctl, man pf.conf), and privoxy\n* Networking on the local computer can be set up to use this Automatic Proxy Configuration without breaking App Store or other updates (see Privoxy config)\n* Uncomment the nat directive in pf.conf if you wish to set up an [OpenVPN server](../../../macos-openvpn-server)\n* Install and launch daemons that download and regularly update open source IP and host blacklists. The sources are  emergingthreats.net (net.emergingthreats.blockips.plist), dshield.org (net.dshield.block.plist), hosts-file.net (net.hphosts.hosts.plist)\n* After installation the connection between clients and the internet looks this this:\n\n> **Application** :arrow_right: **`proxy.pac`** :arrow_right:port 8118:arrow_right: **Privoxy**  :arrow_right: **Internet**\n\nAn auxilliary nginx-based webserver (nominally on `localhost:8119`) is used for both a `proxy.pac` ad and tracker blackhole and for CSS element blocking rules with the Privoxy configuration generated by [adblock2privoxy](../../../adblock2privoxy).\n\n## Public Service Announcement \n\nThis firewall is configured to block all known tracker and adware content—in the browser, in-app, wherever it finds them. Many websites now offer an additional way to block ads: subscribe to their content. Security and privacy will always necessitate ad blocking, but now that this software has become mainstream with mainstream effects, ad blocker users must consider the [potential impact](http://arstechnica.com/business/2010/03/why-ad-blocking-is-devastating-to-the-sites-you-love/) of ad blocking on the writers and publications that are important to them. Personally, two publications that I gladly pay for, especially for their important 2016 US Presidential election coverage, are the *[New York Times](http://www.nytimes.com)* and *[The Atlantic](http://www.theatlantic.com)*. I encourage all users to subscribe to their own preferred publications and writers.\n\n\n## Tracker blocking\n\n[Lightbeam](https://www.mozilla.org/en-US/lightbeam/), the tracking tracker Firefox add-on, shows how ad- and tracker-blocking works to prevent third parties monitoring you or your children's online activities. My daughter enjoys the learning exercises at the children's website [ABCya!](http://www.abcya.com). The Lightbeam graph below on the left shows all the third party trackers after less than a minute of browser activity, without using a privatizing proxy. The graph on the right shows all this tracker activity blocked when this privatizing proxy is used.\n\n\n![Lightbeam graph without proxy](Lightbeam_noproxy.png)| ![Lightbeam graph without proxy](Lightbeam_proxy.png)\n------------ | -------------\nLightbeam graph without proxy | Lightbeam graph with proxy\n\nThis problem is the subject of Gary Kovacs's TED talk, *Tracking Our Online Trackers:*\n\n[![Tracking our online trackers](https://www.wired.com/images_blogs/business/2012/02/6792752454_99d91d2a92_z.jpg)](https://www.youtube.com/watch?v=f_f5wNw-2c0 \"Tracking our online trackers\")\n\n\n## Attack blocking\n\nThe snort intrusion detection system reports far fewer events when known attack sites are blackholed by the packet filter:\n\n![snort+BASE Overview](BASE_Overview.PNG)| ![snort+BASE Events](BASE_Events.PNG)\n------------ | -------------\nsnort+BASE Overview | snort+BASE Events\n\n## Notes\n\n* Configure the squid proxy to accept connections on the LAN IP and set LAN device Automatic Proxy Configurations to http://lan_ip/proxy.pac to protect devices on the LAN.\n* Count the number of attacks since boot with the script pf_attacks. ``Attack'' is defined as the number of blocked IPs in PF's bruteforce table plus the number of denied connections from blacklisted IPs in the tables compromised_ips, dshield_block_ip, and emerging_threats.\n* Both squid and Privoxy are configured to forge the User-Agent. The default is an iPad to allow mobile device access. Change this to your local needs if necessary.\n* Whitelist or blacklist specific domain names with the files `/usr/local/etc/whitelist.txt` and `/usr/local/etc/blacklist.txt`. After editing these file, use launchctl to unload and load the plist `/Library/LaunchDaemons/net.hphosts.hosts.plist`, which recreates the hostfile `/etc/hosts-hphost` and reconfigures the squid proxy to use the updates.\n* Sometimes pf and privoxy do not launch at boot, in spite of the use of the use of their launch daemons.  Fix this by hand after boot with the scripts `macosfortress_boot_check`, or individually using `pf_restart`, `privoxy_restart`, and `squid_restart`. And please post a solution if you find one.\n* All open source updates are done using the `wget -N` option to save everyone's bandwidth\n\n## Security\n\n* These services are intended to be run on a secure LAN behind a router firewall.\n* The default proxy configuration will only accept connections made from the local computer (localhost). If you change this to accept connections from any client on your LAN, do not configure the router to forward ports 8118, or you will be running an open web proxy.\n"
  },
  {
    "path": "blacklist.txt",
    "content": "\n# blacklisted hosts of the form \"127.0.0.1 hostname.tld\" appened to /etc/hosts\n# 127.0.0.1\twww.ahostnamethatyouwanttoblackholebutwillneveractuallyseeontheinternet.net\n# https://krebsonsecurity.com/2014/01/deconstructing-the-9-84-credit-card-hustle/\n127.0.0.1\tcallscs.in\n127.0.0.1\tcewebcs.com\n127.0.0.1\tcs-casa.com\n127.0.0.1\tcewcs.com\n127.0.0.1\teduacc.in\n127.0.0.1\teducs.in\n127.0.0.1\teetsac.com\n127.0.0.1\tetosac.com\n127.0.0.1\tfeosac.com\n127.0.0.1\tfoculu.com\n127.0.0.1\thomecs.in\n127.0.0.1\tiawcs.com\n127.0.0.1\tiewcs.com\n127.0.0.1\tlivecs.in\n127.0.0.1\tnetcs.in\n127.0.0.1\tntccs.in\n127.0.0.1\tntsupp.com\n127.0.0.1\tonwsac.com\n127.0.0.1\tpremcs.in\n127.0.0.1\tprofcs.com\n127.0.0.1\tquikcs.com\n127.0.0.1\tsacluc.com\n127.0.0.1\tsacsis.com\n127.0.0.1\tsewcs.com\n127.0.0.1\tsuppcs.in\n127.0.0.1\ttdwcs.com\n127.0.0.1\ttechcs.in\n127.0.0.1\tvagacs.com\n127.0.0.1\twebcs.in\n\n# https://guardianapp.com/ios-app-location-report-sep2018.html\n127.0.0.1\tapi.areametrics.com\n127.0.0.1\tin.cuebiq.com\n127.0.0.1\tet.intake.factual.com\n127.0.0.1\tapi.factual.com\n127.0.0.1\tapi.beaconsinspace.com\n127.0.0.1\tapi.huq.io\n127.0.0.1\tm2m-api.inmarket.com\n127.0.0.1\tmobileapi.mobiquitynetworks.com\n127.0.0.1\tsdk.revealmobile.com\n127.0.0.1\tapi.safegraph.com\n127.0.0.1\tincoming-data-sense360.s3.amazonaws.com\n127.0.0.1\tios-quinoa-personal-identify-prod.sense360eng.com\n127.0.0.1\tios-quinoa-events-prod.sense360eng.com\n127.0.0.1\tios-quinoa-high-frequency-events-prod.sense360eng.com\n127.0.0.1\tv1.blueberry.cloud.databerries.com\n127.0.0.1\tpie.wirelessregistry.com\n\n# Blocking this domain breaks CNN app live streaming -- send to nginx blackhole\n# To diagnose:\n# tcpdump -e -ttt -i en0 -w my-iPad-cnn-3128.pcap src my-iPad or dst my-iPad\n# grep -a 'URL: <a' < my-iPad-cnn-3128.pcap | perl -lne 's/^.*URL: <a href=\"https?:\\/\\/([-\\w.]+)\\/?.*?\">.*$/\\1/; print;' | uniq\n127.0.0.1:8119\tbea4.v.fwmrm.net\n"
  },
  {
    "path": "blockips.conf",
    "content": "# Define tables and drop rules for open source IP blocks\n# Reload with:\n# pfctl -a blockips -T load -f /usr/local/etc/blockips.conf\n\n# Emerging Threats Open Source, http://rules.emergingthreats.net/fwrules/\n\n# http://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt\ntable <emerging_threats> persist file \"/usr/local/etc/emerging-Block-IPs.txt\"\nblock drop log quick from <emerging_threats> to any\n\n# http://rules.emergingthreats.net/blockrules/compromised-ips.txt\ntable <compromised_ips> persist file \"/usr/local/etc/compromised-ips.txt\"\nblock drop log quick from <compromised_ips> to any\n\n# THIS RULESET HAS BEEN OBSOLETED!! \n# http://rules.emergingthreats.net/blockrules/rbn-ips.txt\n#table <rbn_ips> persist file \"/usr/local/etc/rbn-ips.txt\"\n#block drop log quick from <rbn_ips> to any\n\n# http://rules.emergingthreats.net/blockrules/rbn-malvertisers-ips.txt\n#table <rbn_malvertisers_ips> persist file \"/usr/local/etc/rbn-malvertisers-ips.txt\"\n#block drop log quick from <rbn_malvertisers_ips> to any\n\n# dshield.org block list\ntable <dshield_block_ip> persist file \"/usr/local/etc/dshield_block_ip.txt\"\nblock drop log quick from <dshield_block_ip> to any\n"
  },
  {
    "path": "com.github.essandess.easylist-pac.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>com.github.essandess.easylist-pac</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n \t\t<string>-c</string>\n\t<string>PATH=$PATH:/opt/local/bin PROXY_PAC_DIRECTORY=/Library/WebServer/Documents PYTHONIOENCODING=utf_8 ; /bin/mkdir -p /usr/local/etc ; ( /bin/test -f $PROXY_PAC_DIRECTORY/proxy.pac.orig || /usr/bin/install -m 644 -S $PROXY_PAC_DIRECTORY/proxy.pac $PROXY_PAC_DIRECTORY/proxy.pac.orig ) &amp;&amp; /usr/local/bin/easylist_pac.py -p 127.0.0.1:3128 -b 127.0.0.1:8119 -d /usr/local/etc -P $PROXY_PAC_DIRECTORY/proxy.pac.orig &amp;&amp; /usr/bin/install -m 644 -g admin -S /usr/local/etc/proxy.pac $PROXY_PAC_DIRECTORY/proxy.pac</string>\n\t</array>\n        <key>RunAtLoad</key>\n        <false/>\n        <key>StartCalendarInterval</key>\n        <array>\n                <dict>\n                        <key>Weekday</key>\n                        <integer>7</integer>\n                        <key>Hour</key>\n                        <integer>1</integer>\n                        <key>Minute</key>\n                        <integer>10</integer>\n                </dict>\n        </array>\n \t<key>StandardErrorPath</key>\n\t<string>/var/log/system.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/system.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "config",
    "content": "#        Sample Configuration File for Privoxy 3.0.26\n#\n# $Id: config,v 1.112 2016/08/26 13:14:18 fabiankeil Exp $\n#\n# Copyright (C) 2001-2016 Privoxy Developers https://www.privoxy.org/\n#\n#####################################################################\n#                                                                   #\n#                      Table of Contents                            #\n#                                                                   #\n#        I. INTRODUCTION                                            #\n#       II. FORMAT OF THE CONFIGURATION FILE                        #\n#                                                                   #\n#        1. LOCAL SET-UP DOCUMENTATION                              #\n#        2. CONFIGURATION AND LOG FILE LOCATIONS                    #\n#        3. DEBUGGING                                               #\n#        4. ACCESS CONTROL AND SECURITY                             #\n#        5. FORWARDING                                              #\n#        6. MISCELLANEOUS                                           #\n#        7. WINDOWS GUI OPTIONS                                     #\n#                                                                   #\n#####################################################################\n#\n#\n#  I. INTRODUCTION\n#   ===============\n#\n#  This file holds Privoxy's main configuration. Privoxy detects\n#  configuration changes automatically, so you don't have to restart\n#  it unless you want to load a different configuration file.\n#\n#  The configuration will be reloaded with the first request after\n#  the change was done, this request itself will still use the old\n#  configuration, though. In other words: it takes two requests\n#  before you see the result of your changes. Requests that are\n#  dropped due to ACL don't trigger reloads.\n#\n#  When starting Privoxy on Unix systems, give the location of this\n#  file as last argument. On Windows systems, Privoxy will look for\n#  this file with the name 'config.txt' in the current working\n#  directory of the Privoxy process.\n#\n#\n#  II. FORMAT OF THE CONFIGURATION FILE\n#  ====================================\n#\n#  Configuration lines consist of an initial keyword followed by a\n#  list of values, all separated by whitespace (any number of spaces\n#  or tabs). For example,\n#\n#  actionsfile default.action\n#\n#  Indicates that the actionsfile is named 'default.action'.\n#\n#  The '#' indicates a comment. Any part of a line following a '#' is\n#  ignored, except if the '#' is preceded by a '\\'.\n#\n#  Thus, by placing a # at the start of an existing configuration\n#  line, you can make it a comment and it will be treated as if it\n#  weren't there. This is called \"commenting out\" an option and can\n#  be useful. Removing the # again is called \"uncommenting\".\n#\n#  Note that commenting out an option and leaving it at its default\n#  are two completely different things! Most options behave very\n#  differently when unset. See the \"Effect if unset\" explanation in\n#  each option's description for details.\n#\n#  Long lines can be continued on the next line by using a `\\' as the\n#  last character.\n#\n#\n#  1. LOCAL SET-UP DOCUMENTATION\n#  ==============================\n#\n#  If you intend to operate Privoxy for more users than just\n#  yourself, it might be a good idea to let them know how to reach\n#  you, what you block and why you do that, your policies, etc.\n#\n#\n#  1.1. user-manual\n#  =================\n#\n#  Specifies:\n#\n#      Location of the Privoxy User Manual.\n#\n#  Type of value:\n#\n#      A fully qualified URI\n#\n#  Default value:\n#\n#      Unset\n#\n#  Effect if unset:\n#\n#      https://www.privoxy.org/version/user-manual/ will be used,\n#      where version is the Privoxy version.\n#\n#  Notes:\n#\n#      The User Manual URI is the single best source of information\n#      on Privoxy, and is used for help links from some of the\n#      internal CGI pages. The manual itself is normally packaged\n#      with the binary distributions, so you probably want to set\n#      this to a locally installed copy.\n#\n#      Examples:\n#\n#      The best all purpose solution is simply to put the full local\n#      PATH to where the User Manual is located:\n#\n#        user-manual  /usr/share/doc/privoxy/user-manual\n#\n#      The User Manual is then available to anyone with access to\n#      Privoxy, by following the built-in URL: http://\n#      config.privoxy.org/user-manual/ (or the shortcut: http://p.p/\n#      user-manual/).\n#\n#      If the documentation is not on the local system, it can be\n#      accessed from a remote server, as:\n#\n#        user-manual  http://example.com/privoxy/user-manual/\n#\n#      WARNING!!!\n#\n#          If set, this option should be the first option in the\n#          config file, because it is used while the config file is\n#          being read.\n#\n#user-manual https://www.privoxy.org/user-manual/\n#\n#  1.2. trust-info-url\n#  ====================\n#\n#  Specifies:\n#\n#      A URL to be displayed in the error page that users will see if\n#      access to an untrusted page is denied.\n#\n#  Type of value:\n#\n#      URL\n#\n#  Default value:\n#\n#      Unset\n#\n#  Effect if unset:\n#\n#      No links are displayed on the \"untrusted\" error page.\n#\n#  Notes:\n#\n#      The value of this option only matters if the experimental\n#      trust mechanism has been activated. (See trustfile below.)\n#\n#      If you use the trust mechanism, it is a good idea to write up\n#      some on-line documentation about your trust policy and to\n#      specify the URL(s) here. Use multiple times for multiple URLs.\n#\n#      The URL(s) should be added to the trustfile as well, so users\n#      don't end up locked out from the information on why they were\n#      locked out in the first place!\n#\n#trust-info-url  http://www.example.com/why_we_block.html\n#trust-info-url  http://www.example.com/what_we_allow.html\n#\n#  1.3. admin-address\n#  ===================\n#\n#  Specifies:\n#\n#      An email address to reach the Privoxy administrator.\n#\n#  Type of value:\n#\n#      Email address\n#\n#  Default value:\n#\n#      Unset\n#\n#  Effect if unset:\n#\n#      No email address is displayed on error pages and the CGI user\n#      interface.\n#\n#  Notes:\n#\n#      If both admin-address and proxy-info-url are unset, the whole\n#      \"Local Privoxy Support\" box on all generated pages will not be\n#      shown.\n#\n#admin-address privoxy-admin@example.com\nadmin-address root@localhost\n#\n#  1.4. proxy-info-url\n#  ====================\n#\n#  Specifies:\n#\n#      A URL to documentation about the local Privoxy setup,\n#      configuration or policies.\n#\n#  Type of value:\n#\n#      URL\n#\n#  Default value:\n#\n#      Unset\n#\n#  Effect if unset:\n#\n#      No link to local documentation is displayed on error pages and\n#      the CGI user interface.\n#\n#  Notes:\n#\n#      If both admin-address and proxy-info-url are unset, the whole\n#      \"Local Privoxy Support\" box on all generated pages will not be\n#      shown.\n#\n#      This URL shouldn't be blocked ;-)\n#\n#proxy-info-url http://www.example.com/proxy-service.html\n#\n#  2. CONFIGURATION AND LOG FILE LOCATIONS\n#  ========================================\n#\n#  Privoxy can (and normally does) use a number of other files for\n#  additional configuration, help and logging. This section of the\n#  configuration file tells Privoxy where to find those other files.\n#\n#  The user running Privoxy, must have read permission for all\n#  configuration files, and write permission to any files that would\n#  be modified, such as log files and actions files.\n#\n#\n#  2.1. confdir\n#  =============\n#\n#  Specifies:\n#\n#      The directory where the other configuration files are located.\n#\n#  Type of value:\n#\n#      Path name\n#\n#  Default value:\n#\n#      /etc/privoxy (Unix) or Privoxy installation dir (Windows)\n#\n#  Effect if unset:\n#\n#      Mandatory\n#\n#  Notes:\n#\n#      No trailing \"/\", please.\n#\nconfdir /opt/local/etc/privoxy\n#\n#  2.2. templdir\n#  ==============\n#\n#  Specifies:\n#\n#      An alternative directory where the templates are loaded from.\n#\n#  Type of value:\n#\n#      Path name\n#\n#  Default value:\n#\n#      unset\n#\n#  Effect if unset:\n#\n#      The templates are assumed to be located in confdir/template.\n#\n#  Notes:\n#\n#      Privoxy's original templates are usually overwritten with each\n#      update. Use this option to relocate customized templates that\n#      should be kept. As template variables might change between\n#      updates, you shouldn't expect templates to work with Privoxy\n#      releases other than the one they were part of, though.\n#\n#templdir .\n#\n#  2.3. temporary-directory\n#  =========================\n#\n#  Specifies:\n#\n#      A directory where Privoxy can create temporary files.\n#\n#  Type of value:\n#\n#      Path name\n#\n#  Default value:\n#\n#      unset\n#\n#  Effect if unset:\n#\n#      No temporary files are created, external filters don't work.\n#\n#  Notes:\n#\n#      To execute external filters, Privoxy has to create temporary\n#      files. This directive specifies the directory the temporary\n#      files should be written to.\n#\n#      It should be a directory only Privoxy (and trusted users) can\n#      access.\n#\n#temporary-directory .\n#\n#  2.4. logdir\n#  ============\n#\n#  Specifies:\n#\n#      The directory where all logging takes place (i.e. where the\n#      logfile is located).\n#\n#  Type of value:\n#\n#      Path name\n#\n#  Default value:\n#\n#      /var/log/privoxy (Unix) or Privoxy installation dir (Windows)\n#\n#  Effect if unset:\n#\n#      Mandatory\n#\n#  Notes:\n#\n#      No trailing \"/\", please.\n#\nlogdir /opt/local/var/log/privoxy\n#\n#  2.5. actionsfile\n#  =================\n#\n#  Specifies:\n#\n#      The actions file(s) to use\n#\n#  Type of value:\n#\n#      Complete file name, relative to confdir\n#\n#  Default values:\n#\n#        match-all.action # Actions that are applied to all sites and maybe overruled later on.\n#\n#        default.action   # Main actions file\n#\n#        user.action      # User customizations\n#\n#  Effect if unset:\n#\n#      No actions are taken at all. More or less neutral proxying.\n#\n#  Notes:\n#\n#      Multiple actionsfile lines are permitted, and are in fact\n#      recommended!\n#\n#      The default values are default.action, which is the \"main\"\n#      actions file maintained by the developers, and user.action,\n#      where you can make your personal additions.\n#\n#      Actions files contain all the per site and per URL\n#      configuration for ad blocking, cookie management, privacy\n#      considerations, etc.\n#\nactionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.\nactionsfile default.action   # Main actions file\nactionsfile user.action      # User customizations\nactionsfile /usr/local/etc/adblock2privoxy/privoxy/ab2p.system.action\nactionsfile /usr/local/etc/adblock2privoxy/privoxy/ab2p.action\n#\n#  2.6. filterfile\n#  ================\n#\n#  Specifies:\n#\n#      The filter file(s) to use\n#\n#  Type of value:\n#\n#      File name, relative to confdir\n#\n#  Default value:\n#\n#      default.filter (Unix) or default.filter.txt (Windows)\n#\n#  Effect if unset:\n#\n#      No textual content filtering takes place, i.e. all +filter{name}\n#      actions in the actions files are turned neutral.\n#\n#  Notes:\n#\n#      Multiple filterfile lines are permitted.\n#\n#      The filter files contain content modification rules that use\n#      regular expressions. These rules permit powerful changes on\n#      the content of Web pages, and optionally the headers as well,\n#      e.g., you could try to disable your favorite JavaScript\n#      annoyances, re-write the actual displayed text, or just have\n#      some fun playing buzzword bingo with web pages.\n#\n#      The +filter{name} actions rely on the relevant filter (name)\n#      to be defined in a filter file!\n#\n#      A pre-defined filter file called default.filter that contains\n#      a number of useful filters for common problems is included in\n#      the distribution. See the section on the filter action for a\n#      list.\n#\n#      It is recommended to place any locally adapted filters into a\n#      separate file, such as user.filter.\n#\nfilterfile default.filter\nfilterfile user.filter      # User customizations\nfilterfile /usr/local/etc/adblock2privoxy/privoxy/ab2p.system.filter\nfilterfile /usr/local/etc/adblock2privoxy/privoxy/ab2p.filter\n#\n#  2.7. logfile\n#  =============\n#\n#  Specifies:\n#\n#      The log file to use\n#\n#  Type of value:\n#\n#      File name, relative to logdir\n#\n#  Default value:\n#\n#      Unset (commented out). When activated: logfile (Unix) or\n#      privoxy.log (Windows).\n#\n#  Effect if unset:\n#\n#      No logfile is written.\n#\n#  Notes:\n#\n#      The logfile is where all logging and error messages are\n#      written. The level of detail and number of messages are set\n#      with the debug option (see below). The logfile can be useful\n#      for tracking down a problem with Privoxy (e.g., it's not\n#      blocking an ad you think it should block) and it can help you\n#      to monitor what your browser is doing.\n#\n#      Depending on the debug options below, the logfile may be a\n#      privacy risk if third parties can get access to it. As most\n#      users will never look at it, Privoxy only logs fatal errors by\n#      default.\n#\n#      For most troubleshooting purposes, you will have to change\n#      that, please refer to the debugging section for details.\n#\n#      Any log files must be writable by whatever user Privoxy is\n#      being run as (on Unix, default user id is \"privoxy\").\n#\n#      To prevent the logfile from growing indefinitely, it is\n#      recommended to periodically rotate or shorten it. Many\n#      operating systems support log rotation out of the box, some\n#      require additional software to do it. For details, please\n#      refer to the documentation for your operating system.\n#\nlogfile logfile\n#\n#  2.8. trustfile\n#  ===============\n#\n#  Specifies:\n#\n#      The name of the trust file to use\n#\n#  Type of value:\n#\n#      File name, relative to confdir\n#\n#  Default value:\n#\n#      Unset (commented out). When activated: trust (Unix) or\n#      trust.txt (Windows)\n#\n#  Effect if unset:\n#\n#      The entire trust mechanism is disabled.\n#\n#  Notes:\n#\n#      The trust mechanism is an experimental feature for building\n#      white-lists and should be used with care. It is NOT\n#      recommended for the casual user.\n#\n#      If you specify a trust file, Privoxy will only allow access to\n#      sites that are specified in the trustfile. Sites can be listed\n#      in one of two ways:\n#\n#      Prepending a ~ character limits access to this site only (and\n#      any sub-paths within this site), e.g. ~www.example.com allows\n#      access to ~www.example.com/features/news.html, etc.\n#\n#      Or, you can designate sites as trusted referrers, by\n#      prepending the name with a + character. The effect is that\n#      access to untrusted sites will be granted -- but only if a\n#      link from this trusted referrer was used to get there. The\n#      link target will then be added to the \"trustfile\" so that\n#      future, direct accesses will be granted. Sites added via this\n#      mechanism do not become trusted referrers themselves (i.e.\n#      they are added with a ~ designation). There is a limit of 512\n#      such entries, after which new entries will not be made.\n#\n#      If you use the + operator in the trust file, it may grow\n#      considerably over time.\n#\n#      It is recommended that Privoxy be compiled with the\n#      --disable-force, --disable-toggle and --disable-editor\n#      options, if this feature is to be used.\n#\n#      Possible applications include limiting Internet access for\n#      children.\n#\n#trustfile trust\n#\n#  3. DEBUGGING\n#  =============\n#\n#  These options are mainly useful when tracing a problem. Note that\n#  you might also want to invoke Privoxy with the --no-daemon command\n#  line option when debugging.\n#\n#\n#  3.1. debug\n#  ===========\n#\n#  Specifies:\n#\n#      Key values that determine what information gets logged.\n#\n#  Type of value:\n#\n#      Integer values\n#\n#  Default value:\n#\n#      0 (i.e.: only fatal errors (that cause Privoxy to exit) are\n#      logged)\n#\n#  Effect if unset:\n#\n#      Default value is used (see above).\n#\n#  Notes:\n#\n#      The available debug levels are:\n#\n#        debug     1 # Log the destination for each request Privoxy let through. See also debug 1024.\n#        debug     2 # show each connection status\n#        debug     4 # show I/O status\n#        debug     8 # show header parsing\n#        debug    16 # log all data written to the network\n#        debug    32 # debug force feature\n#        debug    64 # debug regular expression filters\n#        debug   128 # debug redirects\n#        debug   256 # debug GIF de-animation\n#        debug   512 # Common Log Format\n#        debug  1024 # Log the destination for requests Privoxy didn't let through, and the reason why.\n#        debug  2048 # CGI user interface\n#        debug  4096 # Startup banner and warnings.\n#        debug  8192 # Non-fatal errors\n#        debug 32768 # log all data read from the network\n#        debug 65536 # Log the applying actions\n#\n#      To select multiple debug levels, you can either add them or\n#      use multiple debug lines.\n#\n#      A debug level of 1 is informative because it will show you\n#      each request as it happens. 1, 1024, 4096 and 8192 are\n#      recommended so that you will notice when things go wrong. The\n#      other levels are probably only of interest if you are hunting\n#      down a specific problem. They can produce a hell of an output\n#      (especially 16).\n#\n#      If you are used to the more verbose settings, simply enable\n#      the debug lines below again.\n#\n#      If you want to use pure CLF (Common Log Format), you should\n#      set \"debug 512\" ONLY and not enable anything else.\n#\n#      Privoxy has a hard-coded limit for the length of log messages.\n#      If it's reached, messages are logged truncated and marked with\n#      \"... [too long, truncated]\".\n#\n#      Please don't file any support requests without trying to\n#      reproduce the problem with increased debug level first. Once\n#      you read the log messages, you may even be able to solve the\n#      problem on your own.\n#\n#debug     1 # Log the destination for each request Privoxy let through. See also debug 1024.\n#debug  1024 # Actions that are applied to all sites and maybe overruled later on.\n#debug  4096 # Startup banner and warnings\n#debug  8192 # Non-fatal errors\n#\n#  3.2. single-threaded\n#  =====================\n#\n#  Specifies:\n#\n#      Whether to run only one server thread.\n#\n#  Type of value:\n#\n#      1 or 0\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Multi-threaded (or, where unavailable: forked) operation, i.e.\n#      the ability to serve multiple requests simultaneously.\n#\n#  Notes:\n#\n#      This option is only there for debugging purposes. It will\n#      drastically reduce performance.\n#\n#single-threaded 1\n#\n#  3.3. hostname\n#  ==============\n#\n#  Specifies:\n#\n#      The hostname shown on the CGI pages.\n#\n#  Type of value:\n#\n#      Text\n#\n#  Default value:\n#\n#      Unset\n#\n#  Effect if unset:\n#\n#      The hostname provided by the operating system is used.\n#\n#  Notes:\n#\n#      On some misconfigured systems resolving the hostname fails or\n#      takes too much time and slows Privoxy down. Setting a fixed\n#      hostname works around the problem.\n#\n#      In other circumstances it might be desirable to show a\n#      hostname other than the one returned by the operating system.\n#      For example if the system has several different hostnames and\n#      you don't want to use the first one.\n#\n#      Note that Privoxy does not validate the specified hostname\n#      value.\n#\nhostname localhost\n#\n#  4. ACCESS CONTROL AND SECURITY\n#  ===============================\n#\n#  This section of the config file controls the security-relevant\n#  aspects of Privoxy's configuration.\n#\n#\n#  4.1. listen-address\n#  ====================\n#\n#  Specifies:\n#\n#      The address and TCP port on which Privoxy will listen for\n#      client requests.\n#\n#  Type of value:\n#\n#      [IP-Address]:Port\n#\n#      [Hostname]:Port\n#\n#  Default value:\n#\n#      127.0.0.1:8118\n#\n#  Effect if unset:\n#\n#      Bind to 127.0.0.1 (IPv4 localhost), port 8118. This is\n#      suitable and recommended for home users who run Privoxy on the\n#      same machine as their browser.\n#\n#  Notes:\n#\n#      You will need to configure your browser(s) to this proxy\n#      address and port.\n#\n#      If you already have another service running on port 8118, or\n#      if you want to serve requests from other machines (e.g. on\n#      your local network) as well, you will need to override the\n#      default.\n#\n#      You can use this statement multiple times to make Privoxy\n#      listen on more ports or more IP addresses. Suitable if your\n#      operating system does not support sharing IPv6 and IPv4\n#      protocols on the same socket.\n#\n#      If a hostname is used instead of an IP address, Privoxy will\n#      try to resolve it to an IP address and if there are multiple,\n#      use the first one returned.\n#\n#      If the address for the hostname isn't already known on the\n#      system (for example because it's in /etc/hostname), this may\n#      result in DNS traffic.\n#\n#      If the specified address isn't available on the system, or if\n#      the hostname can't be resolved, Privoxy will fail to start.\n#\n#      IPv6 addresses containing colons have to be quoted by\n#      brackets. They can only be used if Privoxy has been compiled\n#      with IPv6 support. If you aren't sure if your version supports\n#      it, have a look at http://config.privoxy.org/show-status.\n#\n#      Some operating systems will prefer IPv6 to IPv4 addresses even\n#      if the system has no IPv6 connectivity which is usually not\n#      expected by the user. Some even rely on DNS to resolve\n#      localhost which mean the \"localhost\" address used may not\n#      actually be local.\n#\n#      It is therefore recommended to explicitly configure the\n#      intended IP address instead of relying on the operating\n#      system, unless there's a strong reason not to.\n#\n#      If you leave out the address, Privoxy will bind to all IPv4\n#      interfaces (addresses) on your machine and may become\n#      reachable from the Internet and/or the local network. Be aware\n#      that some GNU/Linux distributions modify that behaviour\n#      without updating the documentation. Check for non-standard\n#      patches if your Privoxy version behaves differently.\n#\n#      If you configure Privoxy to be reachable from the network,\n#      consider using access control lists (ACL's, see below), and/or\n#      a firewall.\n#\n#      If you open Privoxy to untrusted users, you will also want to\n#      make sure that the following actions are disabled:\n#      enable-edit-actions and enable-remote-toggle\n#\n#  Example:\n#\n#      Suppose you are running Privoxy on a machine which has the\n#      address 192.168.0.1 on your local private network\n#      (192.168.0.0) and has another outside connection with a\n#      different address. You want it to serve requests from inside\n#      only:\n#\n#        listen-address  192.168.0.1:8118\n#\n#      Suppose you are running Privoxy on an IPv6-capable machine and\n#      you want it to listen on the IPv6 address of the loopback\n#      device:\n#\n#        listen-address [::1]:8118\n#\nlisten-address  127.0.0.1:8118\n#\n#  4.2. toggle\n#  ============\n#\n#  Specifies:\n#\n#      Initial state of \"toggle\" status\n#\n#  Type of value:\n#\n#      1 or 0\n#\n#  Default value:\n#\n#      1\n#\n#  Effect if unset:\n#\n#      Act as if toggled on\n#\n#  Notes:\n#\n#      If set to 0, Privoxy will start in \"toggled off\" mode, i.e.\n#      mostly behave like a normal, content-neutral proxy with both\n#      ad blocking and content filtering disabled. See\n#      enable-remote-toggle below.\n#\ntoggle  1\n#\n#  4.3. enable-remote-toggle\n#  ==========================\n#\n#  Specifies:\n#\n#      Whether or not the web-based toggle feature may be used\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      The web-based toggle feature is disabled.\n#\n#  Notes:\n#\n#      When toggled off, Privoxy mostly acts like a normal,\n#      content-neutral proxy, i.e. doesn't block ads or filter\n#      content.\n#\n#      Access to the toggle feature can not be controlled separately\n#      by \"ACLs\" or HTTP authentication, so that everybody who can\n#      access Privoxy (see \"ACLs\" and listen-address above) can\n#      toggle it for all users. So this option is not recommended for\n#      multi-user environments with untrusted users.\n#\n#      Note that malicious client side code (e.g Java) is also\n#      capable of using this option.\n#\n#      As a lot of Privoxy users don't read documentation, this\n#      feature is disabled by default.\n#\n#      Note that you must have compiled Privoxy with support for this\n#      feature, otherwise this option has no effect.\n#\nenable-remote-toggle  0\n#\n#  4.4. enable-remote-http-toggle\n#  ===============================\n#\n#  Specifies:\n#\n#      Whether or not Privoxy recognizes special HTTP headers to\n#      change its behaviour.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Privoxy ignores special HTTP headers.\n#\n#  Notes:\n#\n#      When toggled on, the client can change Privoxy's behaviour by\n#      setting special HTTP headers. Currently the only supported\n#      special header is \"X-Filter: No\", to disable filtering for the\n#      ongoing request, even if it is enabled in one of the action\n#      files.\n#\n#      This feature is disabled by default. If you are using Privoxy\n#      in a environment with trusted clients, you may enable this\n#      feature at your discretion. Note that malicious client side\n#      code (e.g Java) is also capable of using this feature.\n#\n#      This option will be removed in future releases as it has been\n#      obsoleted by the more general header taggers.\n#\nenable-remote-http-toggle  0\n#\n#  4.5. enable-edit-actions\n#  =========================\n#\n#  Specifies:\n#\n#      Whether or not the web-based actions file editor may be used\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      The web-based actions file editor is disabled.\n#\n#  Notes:\n#\n#      Access to the editor can not be controlled separately by\n#      \"ACLs\" or HTTP authentication, so that everybody who can\n#      access Privoxy (see \"ACLs\" and listen-address above) can\n#      modify its configuration for all users.\n#\n#      This option is not recommended for environments with untrusted\n#      users and as a lot of Privoxy users don't read documentation,\n#      this feature is disabled by default.\n#\n#      Note that malicious client side code (e.g Java) is also\n#      capable of using the actions editor and you shouldn't enable\n#      this options unless you understand the consequences and are\n#      sure your browser is configured correctly.\n#\n#      Note that you must have compiled Privoxy with support for this\n#      feature, otherwise this option has no effect.\n#\nenable-edit-actions 0\n#\n#  4.6. enforce-blocks\n#  ====================\n#\n#  Specifies:\n#\n#      Whether the user is allowed to ignore blocks and can \"go there\n#      anyway\".\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Blocks are not enforced.\n#\n#  Notes:\n#\n#      Privoxy is mainly used to block and filter requests as a\n#      service to the user, for example to block ads and other junk\n#      that clogs the pipes. Privoxy's configuration isn't perfect\n#      and sometimes innocent pages are blocked. In this situation it\n#      makes sense to allow the user to enforce the request and have\n#      Privoxy ignore the block.\n#\n#      In the default configuration Privoxy's \"Blocked\" page contains\n#      a \"go there anyway\" link to adds a special string (the force\n#      prefix) to the request URL. If that link is used, Privoxy will\n#      detect the force prefix, remove it again and let the request\n#      pass.\n#\n#      Of course Privoxy can also be used to enforce a network\n#      policy. In that case the user obviously should not be able to\n#      bypass any blocks, and that's what the \"enforce-blocks\" option\n#      is for. If it's enabled, Privoxy hides the \"go there anyway\"\n#      link. If the user adds the force prefix by hand, it will not\n#      be accepted and the circumvention attempt is logged.\n#\n#  Examples:\n#\n#      enforce-blocks 1\n#\nenforce-blocks 0\n#\n#  4.7. ACLs: permit-access and deny-access\n#  =========================================\n#\n#  Specifies:\n#\n#      Who can access what.\n#\n#  Type of value:\n#\n#      src_addr[:port][/src_masklen] [dst_addr[:port][/dst_masklen]]\n#\n#      Where src_addr and dst_addr are IPv4 addresses in dotted\n#      decimal notation or valid DNS names, port is a port number,\n#      and src_masklen and dst_masklen are subnet masks in CIDR\n#      notation, i.e. integer values from 2 to 30 representing the\n#      length (in bits) of the network address. The masks and the\n#      whole destination part are optional.\n#\n#      If your system implements RFC 3493, then src_addr and dst_addr\n#      can be IPv6 addresses delimeted by brackets, port can be a\n#      number or a service name, and src_masklen and dst_masklen can\n#      be a number from 0 to 128.\n#\n#  Default value:\n#\n#      Unset\n#\n#      If no port is specified, any port will match. If no\n#      src_masklen or src_masklen is given, the complete IP address\n#      has to match (i.e. 32 bits for IPv4 and 128 bits for IPv6).\n#\n#  Effect if unset:\n#\n#      Don't restrict access further than implied by listen-address\n#\n#  Notes:\n#\n#      Access controls are included at the request of ISPs and\n#      systems administrators, and are not usually needed by\n#      individual users. For a typical home user, it will normally\n#      suffice to ensure that Privoxy only listens on the localhost\n#      (127.0.0.1) or internal (home) network address by means of the\n#      listen-address option.\n#\n#      Please see the warnings in the FAQ that Privoxy is not\n#      intended to be a substitute for a firewall or to encourage\n#      anyone to defer addressing basic security weaknesses.\n#\n#      Multiple ACL lines are OK. If any ACLs are specified, Privoxy\n#      only talks to IP addresses that match at least one\n#      permit-access line and don't match any subsequent deny-access\n#      line. In other words, the last match wins, with the default\n#      being deny-access.\n#\n#      If Privoxy is using a forwarder (see forward below) for a\n#      particular destination URL, the dst_addr that is examined is\n#      the address of the forwarder and NOT the address of the\n#      ultimate target. This is necessary because it may be\n#      impossible for the local Privoxy to determine the IP address\n#      of the ultimate target (that's often what gateways are used\n#      for).\n#\n#      You should prefer using IP addresses over DNS names, because\n#      the address lookups take time. All DNS names must resolve! You\n#      can not use domain patterns like \"*.org\" or partial domain\n#      names. If a DNS name resolves to multiple IP addresses, only\n#      the first one is used.\n#\n#      Some systems allow IPv4 clients to connect to IPv6 server\n#      sockets. Then the client's IPv4 address will be translated by\n#      the system into IPv6 address space with special prefix\n#      ::ffff:0:0/96 (so called IPv4 mapped IPv6 address). Privoxy\n#      can handle it and maps such ACL addresses automatically.\n#\n#      Denying access to particular sites by ACL may have undesired\n#      side effects if the site in question is hosted on a machine\n#      which also hosts other sites (most sites are).\n#\n#  Examples:\n#\n#      Explicitly define the default behavior if no ACL and\n#      listen-address are set: \"localhost\" is OK. The absence of a\n#      dst_addr implies that all destination addresses are OK:\n#\n#        permit-access  localhost\n#\n#      Allow any host on the same class C subnet as www.privoxy.org\n#      access to nothing but www.example.com (or other domains hosted\n#      on the same system):\n#\n#        permit-access  www.privoxy.org/24 www.example.com/32\n#\n#      Allow access from any host on the 26-bit subnet 192.168.45.64\n#      to anywhere, with the exception that 192.168.45.73 may not\n#      access the IP address behind www.dirty-stuff.example.com:\n#\n#        permit-access  192.168.45.64/26\n#        deny-access    192.168.45.73    www.dirty-stuff.example.com\n#\n#      Allow access from the IPv4 network 192.0.2.0/24 even if\n#      listening on an IPv6 wild card address (not supported on all\n#      platforms):\n#\n#        permit-access  192.0.2.0/24\n#\n#      This is equivalent to the following line even if listening on\n#      an IPv4 address (not supported on all platforms):\n#\n#        permit-access  [::ffff:192.0.2.0]/120\n#\n#\n#  4.8. buffer-limit\n#  ==================\n#\n#  Specifies:\n#\n#      Maximum size of the buffer for content filtering.\n#\n#  Type of value:\n#\n#      Size in Kbytes\n#\n#  Default value:\n#\n#      4096\n#\n#  Effect if unset:\n#\n#      Use a 4MB (4096 KB) limit.\n#\n#  Notes:\n#\n#      For content filtering, i.e. the +filter and +deanimate-gif\n#      actions, it is necessary that Privoxy buffers the entire\n#      document body. This can be potentially dangerous, since a\n#      server could just keep sending data indefinitely and wait for\n#      your RAM to exhaust -- with nasty consequences. Hence this\n#      option.\n#\n#      When a document buffer size reaches the buffer-limit, it is\n#      flushed to the client unfiltered and no further attempt to\n#      filter the rest of the document is made. Remember that there\n#      may be multiple threads running, which might require up to\n#      buffer-limit Kbytes each, unless you have enabled\n#      \"single-threaded\" above.\n#\nbuffer-limit 4096\n#\n#  4.9. enable-proxy-authentication-forwarding\n#  ============================================\n#\n#  Specifies:\n#\n#      Whether or not proxy authentication through Privoxy should\n#      work.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Proxy authentication headers are removed.\n#\n#  Notes:\n#\n#      Privoxy itself does not support proxy authentication, but can\n#      allow clients to authenticate against Privoxy's parent proxy.\n#\n#      By default Privoxy (3.0.21 and later) don't do that and remove\n#      Proxy-Authorization headers in requests and Proxy-Authenticate\n#      headers in responses to make it harder for malicious sites to\n#      trick inexperienced users into providing login information.\n#\n#      If this option is enabled the headers are forwarded.\n#\n#      Enabling this option is not recommended if there is no parent\n#      proxy that requires authentication or if the local network\n#      between Privoxy and the parent proxy isn't trustworthy. If\n#      proxy authentication is only required for some requests, it is\n#      recommended to use a client header filter to remove the\n#      authentication headers for requests where they aren't needed.\n#\nenable-proxy-authentication-forwarding 0\n#\n#  5. FORWARDING\n#  ==============\n#\n#  This feature allows routing of HTTP requests through a chain of\n#  multiple proxies.\n#\n#  Forwarding can be used to chain Privoxy with a caching proxy to\n#  speed up browsing. Using a parent proxy may also be necessary if\n#  the machine that Privoxy runs on has no direct Internet access.\n#\n#  Note that parent proxies can severely decrease your privacy level.\n#  For example a parent proxy could add your IP address to the\n#  request headers and if it's a caching proxy it may add the \"Etag\"\n#  header to revalidation requests again, even though you configured\n#  Privoxy to remove it. It may also ignore Privoxy's header time\n#  randomization and use the original values which could be used by\n#  the server as cookie replacement to track your steps between\n#  visits.\n#\n#  Also specified here are SOCKS proxies. Privoxy supports the SOCKS\n#  4 and SOCKS 4A protocols.\n#\n#\n#  5.1. forward\n#  =============\n#\n#  Specifies:\n#\n#      To which parent HTTP proxy specific requests should be routed.\n#\n#  Type of value:\n#\n#      target_pattern http_parent[:port]\n#\n#      where target_pattern is a URL pattern that specifies to which\n#      requests (i.e. URLs) this forward rule shall apply. Use / to\n#      denote \"all URLs\". http_parent[:port] is the DNS name or IP\n#      address of the parent HTTP proxy through which the requests\n#      should be forwarded, optionally followed by its listening port\n#      (default: 8000). Use a single dot (.) to denote \"no\n#      forwarding\".\n#\n#  Default value:\n#\n#      Unset\n#\n#  Effect if unset:\n#\n#      Don't use parent HTTP proxies.\n#\n#  Notes:\n#\n#      If http_parent is \".\", then requests are not forwarded to\n#      another HTTP proxy but are made directly to the web servers.\n#\n#      http_parent can be a numerical IPv6 address (if RFC 3493 is\n#      implemented). To prevent clashes with the port delimiter, the\n#      whole IP address has to be put into brackets. On the other\n#      hand a target_pattern containing an IPv6 address has to be put\n#      into angle brackets (normal brackets are reserved for regular\n#      expressions already).\n#\n#      Multiple lines are OK, they are checked in sequence, and the\n#      last match wins.\n#\n#  Examples:\n#\n#      Everything goes to an example parent proxy, except SSL on port\n#      443 (which it doesn't handle):\n#\n#        forward   /      parent-proxy.example.org:8080\n#        forward   :443   .\n#\n#      Everything goes to our example ISP's caching proxy, except for\n#      requests to that ISP's sites:\n#\n#        forward   /                  caching-proxy.isp.example.net:8000\n#        forward   .isp.example.net   .\n#\n#      Parent proxy specified by an IPv6 address:\n#\n#        forward   /                   [2001:DB8::1]:8000\n#\n#      Suppose your parent proxy doesn't support IPv6:\n#\n#        forward  /                        parent-proxy.example.org:8000\n#        forward  ipv6-server.example.org  .\n#        forward  <[2-3][0-9a-f][0-9a-f][0-9a-f]:*>   .\n#\n#\n# See http://www.christianschenk.org/blog/enhancing-your-privacy-using-squid-and-privoxy/\nforward /\t.\nforward :443\t.\n\n# I2P\n#forward .i2p localhost:4443\n\n#  5.2. forward-socks4, forward-socks4a, forward-socks5 and forward-socks5t\n#  =========================================================================\n#\n#  Specifies:\n#\n#      Through which SOCKS proxy (and optionally to which parent HTTP\n#      proxy) specific requests should be routed.\n#\n#  Type of value:\n#\n#      target_pattern socks_proxy[:port] http_parent[:port]\n#\n#      where target_pattern is a URL pattern that specifies to which\n#      requests (i.e. URLs) this forward rule shall apply. Use / to\n#      denote \"all URLs\". http_parent and socks_proxy are IP\n#      addresses in dotted decimal notation or valid DNS names (\n#      http_parent may be \".\" to denote \"no HTTP forwarding\"), and\n#      the optional port parameters are TCP ports, i.e. integer\n#      values from 1 to 65535\n#\n#  Default value:\n#\n#      Unset\n#\n#  Effect if unset:\n#\n#      Don't use SOCKS proxies.\n#\n#  Notes:\n#\n#      Multiple lines are OK, they are checked in sequence, and the\n#      last match wins.\n#\n#      The difference between forward-socks4 and forward-socks4a is\n#      that in the SOCKS 4A protocol, the DNS resolution of the\n#      target hostname happens on the SOCKS server, while in SOCKS 4\n#      it happens locally.\n#\n#      With forward-socks5 the DNS resolution will happen on the\n#      remote server as well.\n#\n#      forward-socks5t works like vanilla forward-socks5 but lets\n#      Privoxy additionally use Tor-specific SOCKS extensions.\n#      Currently the only supported SOCKS extension is optimistic\n#      data which can reduce the latency for the first request made\n#      on a newly created connection.\n#\n#      socks_proxy and http_parent can be a numerical IPv6 address\n#      (if RFC 3493 is implemented). To prevent clashes with the port\n#      delimiter, the whole IP address has to be put into brackets.\n#      On the other hand a target_pattern containing an IPv6 address\n#      has to be put into angle brackets (normal brackets are\n#      reserved for regular expressions already).\n#\n#      If http_parent is \".\", then requests are not forwarded to\n#      another HTTP proxy but are made (HTTP-wise) directly to the\n#      web servers, albeit through a SOCKS proxy.\n#\n#  Examples:\n#\n#      From the company example.com, direct connections are made to\n#      all \"internal\" domains, but everything outbound goes through\n#      their ISP's proxy by way of example.com's corporate SOCKS 4A\n#      gateway to the Internet.\n#\n#        forward-socks4a   /              socks-gw.example.com:1080  www-cache.isp.example.net:8080\n#        forward           .example.com   .\n#\n#      A rule that uses a SOCKS 4 gateway for all destinations but no\n#      HTTP parent looks like this:\n#\n#        forward-socks4   /               socks-gw.example.com:1080  .\n#\n#      To chain Privoxy and Tor, both running on the same system, you\n#      would use something like:\n#\n#        forward-socks5t   /               127.0.0.1:9050 .\n#\n#      Note that if you got Tor through one of the bundles, you may\n#      have to change the port from 9050 to 9150 (or even another\n#      one). For details, please check the documentation on the Tor\n#      website.\n#\n#      The public Tor network can't be used to reach your local\n#      network, if you need to access local servers you therefore\n#      might want to make some exceptions:\n#\n#        forward         192.168.*.*/     .\n#        forward            10.*.*.*/     .\n#        forward           127.*.*.*/     .\n#\n#      Unencrypted connections to systems in these address ranges\n#      will be as (un)secure as the local network is, but the\n#      alternative is that you can't reach the local network through\n#      Privoxy at all. Of course this may actually be desired and\n#      there is no reason to make these exceptions if you aren't sure\n#      you need them.\n#\n#      If you also want to be able to reach servers in your local\n#      network by using their names, you will need additional\n#      exceptions that look like this:\n#\n#       forward           localhost/     .\n#\n#\n#  5.3. forwarded-connect-retries\n#  ===============================\n#\n#  Specifies:\n#\n#      How often Privoxy retries if a forwarded connection request\n#      fails.\n#\n#  Type of value:\n#\n#      Number of retries.\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Connections forwarded through other proxies are treated like\n#      direct connections and no retry attempts are made.\n#\n#  Notes:\n#\n#      forwarded-connect-retries is mainly interesting for socks4a\n#      connections, where Privoxy can't detect why the connections\n#      failed. The connection might have failed because of a DNS\n#      timeout in which case a retry makes sense, but it might also\n#      have failed because the server doesn't exist or isn't\n#      reachable. In this case the retry will just delay the\n#      appearance of Privoxy's error message.\n#\n#      Note that in the context of this option, \"forwarded\n#      connections\" includes all connections that Privoxy forwards\n#      through other proxies. This option is not limited to the HTTP\n#      CONNECT method.\n#\n#      Only use this option, if you are getting lots of\n#      forwarding-related error messages that go away when you try\n#      again manually. Start with a small value and check Privoxy's\n#      logfile from time to time, to see how many retries are usually\n#      needed.\n#\n#  Examples:\n#\n#      forwarded-connect-retries 1\n#\nforwarded-connect-retries  0\n#\n#  6. MISCELLANEOUS\n#  =================\n#\n#  6.1. accept-intercepted-requests\n#  =================================\n#\n#  Specifies:\n#\n#      Whether intercepted requests should be treated as valid.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Only proxy requests are accepted, intercepted requests are\n#      treated as invalid.\n#\n#  Notes:\n#\n#      If you don't trust your clients and want to force them to use\n#      Privoxy, enable this option and configure your packet filter\n#      to redirect outgoing HTTP connections into Privoxy.\n#\n#      Note that intercepting encrypted connections (HTTPS) isn't\n#      supported.\n#\n#      Make sure that Privoxy's own requests aren't redirected as\n#      well. Additionally take care that Privoxy can't intentionally\n#      connect to itself, otherwise you could run into redirection\n#      loops if Privoxy's listening port is reachable by the outside\n#      or an attacker has access to the pages you visit.\n#\n#      If you are running Privoxy as intercepting proxy without being\n#      able to intercept all client requests you may want to adjust\n#      the CGI templates to make sure they don't reference content\n#      from config.privoxy.org.\n#\n#  Examples:\n#\n#      accept-intercepted-requests 1\n#\naccept-intercepted-requests 0\n#\n#  6.2. allow-cgi-request-crunching\n#  =================================\n#\n#  Specifies:\n#\n#      Whether requests to Privoxy's CGI pages can be blocked or\n#      redirected.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Privoxy ignores block and redirect actions for its CGI pages.\n#\n#  Notes:\n#\n#      By default Privoxy ignores block or redirect actions for its\n#      CGI pages. Intercepting these requests can be useful in\n#      multi-user setups to implement fine-grained access control,\n#      but it can also render the complete web interface useless and\n#      make debugging problems painful if done without care.\n#\n#      Don't enable this option unless you're sure that you really\n#      need it.\n#\n#  Examples:\n#\n#      allow-cgi-request-crunching 1\n#\nallow-cgi-request-crunching 0\n#\n#  6.3. split-large-forms\n#  =======================\n#\n#  Specifies:\n#\n#      Whether the CGI interface should stay compatible with broken\n#      HTTP clients.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      The CGI form generate long GET URLs.\n#\n#  Notes:\n#\n#      Privoxy's CGI forms can lead to rather long URLs. This isn't a\n#      problem as far as the HTTP standard is concerned, but it can\n#      confuse clients with arbitrary URL length limitations.\n#\n#      Enabling split-large-forms causes Privoxy to divide big forms\n#      into smaller ones to keep the URL length down. It makes\n#      editing a lot less convenient and you can no longer submit all\n#      changes at once, but at least it works around this browser\n#      bug.\n#\n#      If you don't notice any editing problems, there is no reason\n#      to enable this option, but if one of the submit buttons\n#      appears to be broken, you should give it a try.\n#\n#  Examples:\n#\n#      split-large-forms 1\n#\nsplit-large-forms 0\n#\n#  6.4. keep-alive-timeout\n#  ========================\n#\n#  Specifies:\n#\n#      Number of seconds after which an open connection will no\n#      longer be reused.\n#\n#  Type of value:\n#\n#      Time in seconds.\n#\n#  Default value:\n#\n#      None\n#\n#  Effect if unset:\n#\n#      Connections are not kept alive.\n#\n#  Notes:\n#\n#      This option allows clients to keep the connection to Privoxy\n#      alive. If the server supports it, Privoxy will keep the\n#      connection to the server alive as well. Under certain\n#      circumstances this may result in speed-ups.\n#\n#      By default, Privoxy will close the connection to the server if\n#      the client connection gets closed, or if the specified timeout\n#      has been reached without a new request coming in. This\n#      behaviour can be changed with the connection-sharing option.\n#\n#      This option has no effect if Privoxy has been compiled without\n#      keep-alive support.\n#\n#      Note that a timeout of five seconds as used in the default\n#      configuration file significantly decreases the number of\n#      connections that will be reused. The value is used because\n#      some browsers limit the number of connections they open to a\n#      single host and apply the same limit to proxies. This can\n#      result in a single website \"grabbing\" all the connections the\n#      browser allows, which means connections to other websites\n#      can't be opened until the connections currently in use time\n#      out.\n#\n#      Several users have reported this as a Privoxy bug, so the\n#      default value has been reduced. Consider increasing it to 300\n#      seconds or even more if you think your browser can handle it.\n#      If your browser appears to be hanging, it probably can't.\n#\n#  Examples:\n#\n#      keep-alive-timeout 300\n#\nkeep-alive-timeout 300\n#\n#  6.5. tolerate-pipelining\n#  =========================\n#\n#  Specifies:\n#\n#      Whether or not pipelined requests should be served.\n#\n#  Type of value:\n#\n#      0 or 1.\n#\n#  Default value:\n#\n#      None\n#\n#  Effect if unset:\n#\n#      If Privoxy receives more than one request at once, it\n#      terminates the client connection after serving the first one.\n#\n#  Notes:\n#\n#      Privoxy currently doesn't pipeline outgoing requests, thus\n#      allowing pipelining on the client connection is not guaranteed\n#      to improve the performance.\n#\n#      By default Privoxy tries to discourage clients from pipelining\n#      by discarding aggressively pipelined requests, which forces\n#      the client to resend them through a new connection.\n#\n#      This option lets Privoxy tolerate pipelining. Whether or not\n#      that improves performance mainly depends on the client\n#      configuration.\n#\n#      If you are seeing problems with pages not properly loading,\n#      disabling this option could work around the problem.\n#\n#  Examples:\n#\n#      tolerate-pipelining 1\n#\n#tolerate-pipelining 1\n#\n#  6.6. default-server-timeout\n#  ============================\n#\n#  Specifies:\n#\n#      Assumed server-side keep-alive timeout if not specified by the\n#      server.\n#\n#  Type of value:\n#\n#      Time in seconds.\n#\n#  Default value:\n#\n#      None\n#\n#  Effect if unset:\n#\n#      Connections for which the server didn't specify the keep-alive\n#      timeout are not reused.\n#\n#  Notes:\n#\n#      Enabling this option significantly increases the number of\n#      connections that are reused, provided the keep-alive-timeout\n#      option is also enabled.\n#\n#      While it also increases the number of connections problems\n#      when Privoxy tries to reuse a connection that already has been\n#      closed on the server side, or is closed while Privoxy is\n#      trying to reuse it, this should only be a problem if it\n#      happens for the first request sent by the client. If it\n#      happens for requests on reused client connections, Privoxy\n#      will simply close the connection and the client is supposed to\n#      retry the request without bothering the user.\n#\n#      Enabling this option is therefore only recommended if the\n#      connection-sharing option is disabled.\n#\n#      It is an error to specify a value larger than the\n#      keep-alive-timeout value.\n#\n#      This option has no effect if Privoxy has been compiled without\n#      keep-alive support.\n#\n#  Examples:\n#\n#      default-server-timeout 60\n#\ndefault-server-timeout 60\n#\n#  6.7. connection-sharing\n#  ========================\n#\n#  Specifies:\n#\n#      Whether or not outgoing connections that have been kept alive\n#      should be shared between different incoming connections.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      None\n#\n#  Effect if unset:\n#\n#      Connections are not shared.\n#\n#  Notes:\n#\n#      This option has no effect if Privoxy has been compiled without\n#      keep-alive support, or if it's disabled.\n#\n#  Notes:\n#\n#      Note that reusing connections doesn't necessary cause\n#      speedups. There are also a few privacy implications you should\n#      be aware of.\n#\n#      If this option is effective, outgoing connections are shared\n#      between clients (if there are more than one) and closing the\n#      browser that initiated the outgoing connection does no longer\n#      affect the connection between Privoxy and the server unless\n#      the client's request hasn't been completed yet.\n#\n#      If the outgoing connection is idle, it will not be closed\n#      until either Privoxy's or the server's timeout is reached.\n#      While it's open, the server knows that the system running\n#      Privoxy is still there.\n#\n#      If there are more than one client (maybe even belonging to\n#      multiple users), they will be able to reuse each others\n#      connections. This is potentially dangerous in case of\n#      authentication schemes like NTLM where only the connection is\n#      authenticated, instead of requiring authentication for each\n#      request.\n#\n#      If there is only a single client, and if said client can keep\n#      connections alive on its own, enabling this option has next to\n#      no effect. If the client doesn't support connection\n#      keep-alive, enabling this option may make sense as it allows\n#      Privoxy to keep outgoing connections alive even if the client\n#      itself doesn't support it.\n#\n#      You should also be aware that enabling this option increases\n#      the likelihood of getting the \"No server or forwarder data\"\n#      error message, especially if you are using a slow connection\n#      to the Internet.\n#\n#      This option should only be used by experienced users who\n#      understand the risks and can weight them against the benefits.\n#\n#  Examples:\n#\n#      connection-sharing 1\n#\nconnection-sharing 0\n#\n#  6.8. socket-timeout\n#  ====================\n#\n#  Specifies:\n#\n#      Number of seconds after which a socket times out if no data is\n#      received.\n#\n#  Type of value:\n#\n#      Time in seconds.\n#\n#  Default value:\n#\n#      None\n#\n#  Effect if unset:\n#\n#      A default value of 300 seconds is used.\n#\n#  Notes:\n#\n#      The default is quite high and you probably want to reduce it.\n#      If you aren't using an occasionally slow proxy like Tor,\n#      reducing it to a few seconds should be fine.\n#\n#  Examples:\n#\n#      socket-timeout 300\n#\nsocket-timeout 60\n#\n#  6.9. max-client-connections\n#  ============================\n#\n#  Specifies:\n#\n#      Maximum number of client connections that will be served.\n#\n#  Type of value:\n#\n#      Positive number.\n#\n#  Default value:\n#\n#      128\n#\n#  Effect if unset:\n#\n#      Connections are served until a resource limit is reached.\n#\n#  Notes:\n#\n#      Privoxy creates one thread (or process) for every incoming\n#      client connection that isn't rejected based on the access\n#      control settings.\n#\n#      If the system is powerful enough, Privoxy can theoretically\n#      deal with several hundred (or thousand) connections at the\n#      same time, but some operating systems enforce resource limits\n#      by shutting down offending processes and their default limits\n#      may be below the ones Privoxy would require under heavy load.\n#\n#      Configuring Privoxy to enforce a connection limit below the\n#      thread or process limit used by the operating system makes\n#      sure this doesn't happen. Simply increasing the operating\n#      system's limit would work too, but if Privoxy isn't the only\n#      application running on the system, you may actually want to\n#      limit the resources used by Privoxy.\n#\n#      If Privoxy is only used by a single trusted user, limiting the\n#      number of client connections is probably unnecessary. If there\n#      are multiple possibly untrusted users you probably still want\n#      to additionally use a packet filter to limit the maximal\n#      number of incoming connections per client. Otherwise a\n#      malicious user could intentionally create a high number of\n#      connections to prevent other users from using Privoxy.\n#\n#      Obviously using this option only makes sense if you choose a\n#      limit below the one enforced by the operating system.\n#\n#      One most POSIX-compliant systems Privoxy can't properly deal\n#      with more than FD_SETSIZE file descriptors at the same time\n#      and has to reject connections if the limit is reached. This\n#      will likely change in a future version, but currently this\n#      limit can't be increased without recompiling Privoxy with a\n#      different FD_SETSIZE limit.\n#\n#  Examples:\n#\n#      max-client-connections 256\n#\nmax-client-connections 256\n#\n#  6.10. handle-as-empty-doc-returns-ok\n#  =====================================\n#\n#  Specifies:\n#\n#      The status code Privoxy returns for pages blocked with\n#      +handle-as-empty-document.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Privoxy returns a status 403(forbidden) for all blocked pages.\n#\n#  Effect if set:\n#\n#      Privoxy returns a status 200(OK) for pages blocked with\n#      +handle-as-empty-document and a status 403(Forbidden) for all\n#      other blocked pages.\n#\n#  Notes:\n#\n#      This directive was added as a work-around for Firefox bug\n#      492459: \"Websites are no longer rendered if SSL requests for\n#      JavaScripts are blocked by a proxy.\"\n#      (https://bugzilla.mozilla.org/show_bug.cgi?id=492459), the bug\n#      has been fixed for quite some time, but this directive is also\n#      useful to make it harder for websites to detect whether or not\n#      resources are being blocked.\n#\n#handle-as-empty-doc-returns-ok 1\n#\n#  6.11. enable-compression\n#  =========================\n#\n#  Specifies:\n#\n#      Whether or not buffered content is compressed before delivery.\n#\n#  Type of value:\n#\n#      0 or 1\n#\n#  Default value:\n#\n#      0\n#\n#  Effect if unset:\n#\n#      Privoxy does not compress buffered content.\n#\n#  Effect if set:\n#\n#      Privoxy compresses buffered content before delivering it to\n#      the client, provided the client supports it.\n#\n#  Notes:\n#\n#      This directive is only supported if Privoxy has been compiled\n#      with FEATURE_COMPRESSION, which should not to be confused with\n#      FEATURE_ZLIB.\n#\n#      Compressing buffered content is mainly useful if Privoxy and\n#      the client are running on different systems. If they are\n#      running on the same system, enabling compression is likely to\n#      slow things down. If you didn't measure otherwise, you should\n#      assume that it does and keep this option disabled.\n#\n#      Privoxy will not compress buffered content below a certain\n#      length.\n#\n#enable-compression 1\n#\n#  6.12. compression-level\n#  ========================\n#\n#  Specifies:\n#\n#      The compression level that is passed to the zlib library when\n#      compressing buffered content.\n#\n#  Type of value:\n#\n#      Positive number ranging from 0 to 9.\n#\n#  Default value:\n#\n#      1\n#\n#  Notes:\n#\n#      Compressing the data more takes usually longer than\n#      compressing it less or not compressing it at all. Which level\n#      is best depends on the connection between Privoxy and the\n#      client. If you can't be bothered to benchmark it for yourself,\n#      you should stick with the default and keep compression\n#      disabled.\n#\n#      If compression is disabled, the compression level is\n#      irrelevant.\n#\n#  Examples:\n#\n#          # Best speed (compared to the other levels)\n#          compression-level 1\n#\n#          # Best compression\n#          compression-level 9\n#\n#          # No compression. Only useful for testing as the added header\n#          # slightly increases the amount of data that has to be sent.\n#          # If your benchmark shows that using this compression level\n#          # is superior to using no compression at all, the benchmark\n#          # is likely to be flawed.\n#          compression-level 0\n#\n#\n#compression-level 9\n#\n#  6.13. client-header-order\n#  ==========================\n#\n#  Specifies:\n#\n#      The order in which client headers are sorted before forwarding\n#      them.\n#\n#  Type of value:\n#\n#      Client header names delimited by spaces or tabs\n#\n#  Default value:\n#\n#      None\n#\n#  Notes:\n#\n#      By default Privoxy leaves the client headers in the order they\n#      were sent by the client. Headers are modified in-place, new\n#      headers are added at the end of the already existing headers.\n#\n#      The header order can be used to fingerprint client requests\n#      independently of other headers like the User-Agent.\n#\n#      This directive allows to sort the headers differently to\n#      better mimic a different User-Agent. Client headers will be\n#      emitted in the order given, headers whose name isn't\n#      explicitly specified are added at the end.\n#\n#      Note that sorting headers in an uncommon way will make\n#      fingerprinting actually easier. Encrypted headers are not\n#      affected by this directive.\n#\n#client-header-order Host \\\n#   Accept \\\n#   Accept-Language \\\n#   Accept-Encoding \\\n#   Proxy-Connection \\\n#   Referer \\\n#   Cookie \\\n#   DNT \\\n#   If-Modified-Since \\\n#   Cache-Control \\\n#   Content-Length \\\n#   Content-Type\n#\n#\n#  6.14. client-specific-tag\n#  ==========================\n#\n#  Specifies:\n#\n#      The name of a tag that will always be set for clients that\n#      requested it through the webinterface.\n#\n#  Type of value:\n#\n#      Tag name followed by a description that will be shown in the\n#      webinterface\n#\n#  Default value:\n#\n#      None\n#\n#  Notes:\n#\n#      +-----------------------------------------------------+\n#      |                       Warning                       |\n#      |-----------------------------------------------------|\n#      |This is an experimental feature. The syntax is likely|\n#      |to change in future versions.                        |\n#      +-----------------------------------------------------+\n#\n#      Client-specific tags allow Privoxy admins to create different\n#      profiles and let the users chose which one they want without\n#      impacting other users.\n#\n#      One use case is allowing users to circumvent certain blocks\n#      without having to allow them to circumvent all blocks. This is\n#      not possible with the enable-remote-toggle feature because it\n#      would bluntly disable all blocks for all users and also affect\n#      other actions like filters. It also is set globally which\n#      renders it useless in most multi-user setups.\n#\n#      After a client-specific tag has been defined with the\n#      client-specific-tag directive, action sections can be\n#      activated based on the tag by using a CLIENT-TAG pattern. The\n#      CLIENT-TAG pattern is evaluated at the same priority as URL\n#      patterns, as a result the last matching pattern wins. Tags\n#      that are created based on client or server headers are\n#      evaluated later on and can overrule CLIENT-TAG and URL\n#      patterns!\n#\n#      The tag is set for all requests that come from clients that\n#      requested it to be set. Note that \"clients\" are differentiated\n#      by IP address, if the IP address changes the tag has to be\n#      requested again.\n#\n#      Clients can request tags to be set by using the CGI interface\n#      http://config.privoxy.org/client-tags. The specific tag\n#      description is only used on the web page and should be phrased\n#      in away that the user understand the effect of the tag.\n#\n#  Examples:\n#\n#          # Define a couple of tags, the described effect requires action sections\n#          # that are enabled based on CLIENT-TAG patterns.\n#          client-specific-tag circumvent-blocks Overrule blocks but do not affect other actions\n#          disable-content-filters Disable content-filters but do not affect other actions\n#\n#\n#\n#  6.15. client-tag-lifetime\n#  ==========================\n#\n#  Specifies:\n#\n#      How long a temporarily enabled tag remains enabled.\n#\n#  Type of value:\n#\n#      Time in seconds.\n#\n#  Default value:\n#\n#      60\n#\n#  Notes:\n#\n#      +-----------------------------------------------------+\n#      |                       Warning                       |\n#      |-----------------------------------------------------|\n#      |This is an experimental feature. The syntax is likely|\n#      |to change in future versions.                        |\n#      +-----------------------------------------------------+\n#\n#      In case of some tags users may not want to enable them\n#      permanently, but only for a short amount of time, for example\n#      to circumvent a block that is the result of an overly-broad\n#      URL pattern.\n#\n#      The CGI interface http://config.privoxy.org/client-tags\n#      therefore provides a \"enable this tag temporarily\" option. If\n#      it is used, the tag will be set until the client-tag-lifetime\n#      is over.\n#\n#  Examples:\n#\n#            # Increase the time to life for temporarily enabled tags to 3 minutes\n#            client-tag-lifetime 180\n#\n#\n#\n#  6.16. trust-x-forwarded-for\n#  ============================\n#\n#  Specifies:\n#\n#      Whether or not Privoxy should use IP addresses specified with\n#      the X-Forwarded-For header\n#\n#  Type of value:\n#\n#      0 or one\n#\n#  Default value:\n#\n#      0\n#\n#  Notes:\n#\n#      +-----------------------------------------------------+\n#      |                       Warning                       |\n#      |-----------------------------------------------------|\n#      |This is an experimental feature. The syntax is likely|\n#      |to change in future versions.                        |\n#      +-----------------------------------------------------+\n#\n#      If clients reach Privoxy through another proxy, for example a\n#      load balancer, Privoxy can't tell the client's IP address from\n#      the connection. If multiple clients use the same proxy, they\n#      will share the same client tag settings which is usually not\n#      desired.\n#\n#      This option lets Privoxy use the X-Forwarded-For header value\n#      as client IP address. If the proxy sets the header, multiple\n#      clients using the same proxy do not share the same client tag\n#      settings.\n#\n#      This option should only be enabled if Privoxy can only be\n#      reached through a proxy and if the proxy can be trusted to set\n#      the header correctly. It is recommended that ACL are used to\n#      make sure only trusted systems can reach Privoxy.\n#\n#      If access to Privoxy isn't limited to trusted systems, this\n#      option would allow malicious clients to change the client tags\n#      for other clients or increase Privoxy's memory requirements by\n#      registering lots of client tag settings for clients that don't\n#      exist.\n#\n#  Examples:\n#\n#            # Allow systems that can reach Privoxy to provide the client\n#            # IP address with a X-Forwarded-For header.\n#            trust-x-forwarded-for 1\n#\n#\n#\n#  7. WINDOWS GUI OPTIONS\n#  =======================\n#\n#  Privoxy has a number of options specific to the Windows GUI\n#  interface:\n#\n#\n#\n#  If \"activity-animation\" is set to 1, the Privoxy icon will animate\n#  when \"Privoxy\" is active. To turn off, set to 0.\n#\n#activity-animation   1\n#\n#\n#\n#  If \"log-messages\" is set to 1, Privoxy copies log messages to the\n#  console window. The log detail depends on the debug directive.\n#\n#log-messages   1\n#\n#\n#\n#  If \"log-buffer-size\" is set to 1, the size of the log buffer, i.e.\n#  the amount of memory used for the log messages displayed in the\n#  console window, will be limited to \"log-max-lines\" (see below).\n#\n#  Warning: Setting this to 0 will result in the buffer to grow\n#  infinitely and eat up all your memory!\n#\n#log-buffer-size 1\n#\n#\n#\n#  log-max-lines is the maximum number of lines held in the log\n#  buffer. See above.\n#\n#log-max-lines 200\n#\n#\n#\n#  If \"log-highlight-messages\" is set to 1, Privoxy will highlight\n#  portions of the log messages with a bold-faced font:\n#\n#log-highlight-messages 1\n#\n#\n#\n#  The font used in the console window:\n#\n#log-font-name Comic Sans MS\n#\n#\n#\n#  Font size used in the console window:\n#\n#log-font-size 8\n#\n#\n#\n#  \"show-on-task-bar\" controls whether or not Privoxy will appear as\n#  a button on the Task bar when minimized:\n#\n#show-on-task-bar 0\n#\n#\n#\n#  If \"close-button-minimizes\" is set to 1, the Windows close button\n#  will minimize Privoxy instead of closing the program (close with\n#  the exit option on the File menu).\n#\n#close-button-minimizes 1\n#\n#\n#\n#  The \"hide-console\" option is specific to the MS-Win console\n#  version of Privoxy. If this option is used, Privoxy will\n#  disconnect from and hide the command console.\n#\n#hide-console\n#\n#\n#\n"
  },
  {
    "path": "deprecated/Squid.wrapper",
    "content": "#!/bin/sh\n#\n# MacPorts generated daemondo support script\n#\n\n#\n# Init\n#\nprefix=/opt/local\n\n#\n# Start\n#\nStart()\n{\n   cd /opt/local/var/squid\n   if [ ! -d \"/opt/local/var/squid/cache/00\" ]; then\n       /opt/local/sbin/squid -s -z\n   fi\n   /opt/local/sbin/squid -s -N\n}\n\n#\n# Stop\n#\nStop()\n{\n   cd /opt/local/var/squid\n   /opt/local/sbin/squid -k shutdown\n   while /opt/local/sbin/squid -k check; do\n       sleep 1\n   done\n}\n\n#\n# Restart\n#\nRestart()\n{\n   Stop\n   Start\n}\n\n#\n# Run\n#\nRun()\n{\ncase $1 in\n start  ) Start   ;;\n stop   ) Stop    ;;\n restart) Restart ;;\n *      ) echo \"$0: unknown argument: $1\";;\nesac\n}\n\n#\n# Run a phase based on the selector\n#\nRun $1\n"
  },
  {
    "path": "deprecated/disable.sh",
    "content": "#!/bin/bash -x\n\n# OS X Fortress: Firewall, Blackhole, and Privatizing Proxy\n# for Trackers, Attackers, Malware, Adware, and Spammers\n\n# disable.sh\n\n# commands\nSUDO=/usr/bin/sudo\nPORT=/opt/local/bin/port\nLAUNCHCTL=/bin/launchctl\nPFCTL=/sbin/pfctl\nKILLALL=/usr/bin/killall\nCAT=/bin/cat\nECHO=/bin/echo\n\n$CAT <<HELPSTRING\nOS X Fortress: Firewall, Blackhole, and Privatizing Proxy\nfor Trackers, Attackers, Malware, Adware, and Spammers\nKernel-level, OS-level, and client-level security for OS X. \n\nThis disable script will unload all launch daemons, disable\nthe pf firewall, and list all insalled files WITHOUT removing them.\n\nDisabling…\nHELPSTRING\n\n$ECHO \"Unloading launchctl daemons…\"\n\nLAUNCHDAEMONS=/Library/LaunchDaemons\n\nlaunchctl_unload () { if [ -f $LAUNCHDAEMONS/$PLIST ]; then $SUDO $LAUNCHCTL unload -w $LAUNCHDAEMONS/$PLIST; fi; }\n\nfor FNAME in \\\n\tnet.openbsd.pf.plist \\\n\tnet.openbsd.pf.brutexpire.plist \\\n\tnet.emergingthreats.blockips.plist \\\n\tnet.dshield.block.plist \\\n\tnet.hphosts.hosts.plist \\\n\tnet.securemecca.pac.plist \\\n\torg.adblockplus.privoxy-adblock.plist \\\n\torg.squid-cache.squid-rotate.plist \\\n\t; do\n\tlaunchctl_unload\ndone\n\n\n$ECHO \"Disabling pf firewall…\"\n\n$SUDO $PFCTL -d\n\n\n$ECHO \"Killing the squid and privoxy proxies…\"\n\n$SUDO $PORT unload squid\n$SUDO $KILLALL -9 squid\n$SUDO $KILLALL -9 '(squid-1)'\n$SUDO $PORT unload privoxy\n\n\n$ECHO \"\"\n$ECHO \"These files still exist:\"\n\nfname_exists () { if [ -f $FNAME ]; then $ECHO \"$FNAME\"; fi; }\n\nPROXY_PAC_DIRECTORY=/Library/WebServer/Documents\n\nfor FNAME in \\\n\t$PROXY_PAC_DIRECTORY/proxy.pac \\\n\t/etc/hosts.orig \\\n\t/etc/pf.conf.orig \\\n\t$LAUNCHDAEMONS/net.openbsd.pf.plist \\\n\t$LAUNCHDAEMONS/net.openbsd.pf.brutexpire.plist \\\n\t$LAUNCHDAEMONS/net.emergingthreats.blockips.plist \\\n\t$LAUNCHDAEMONS/net.dshield.block.plist \\\n\t$LAUNCHDAEMONS/net.hphosts.hosts.plist \\\n\t$LAUNCHDAEMONS/net.securemecca.pac.plist \\\n\t$LAUNCHDAEMONS/org.adblockplus.privoxy-adblock.plist \\\n\t$HOME/Library/LaunchAgents/org.opensource.flashcookiedelete.plist \\\n\t/usr/local/etc/blockips.conf \\\n\t/usr/local/etc/whitelist.txt \\\n\t/usr/local/etc/blacklist.txt \\\n\t/usr/local/bin/macosfortress_setup_check.sh \\\n\t/usr/local/bin/osxfortress_boot_check \\\n\t/usr/local/bin/pf_restart \\\n\t/usr/local/bin/squid_restart \\\n\t/usr/local/bin/privoxy_restart \\\n\t/usr/local/bin/privoxy-adblock.sh \\\n\t/opt/local/etc/LaunchDaemons/org.macports.Squid/Squid.wrapper.orig \\\n\t; do\n\tfname_exists\ndone\n\nexit 0\n"
  },
  {
    "path": "deprecated/macosfortress_boot_check",
    "content": "#!/bin/bash -x\n\n# macosfortress_boot_check -- check to make sure that all desired services are running\n\n# commands\nSUDO=/usr/bin/sudo\nLAUNCHCTL=/bin/launchctl\nPORT=/opt/local/bin/port\nPFCTL=/sbin/pfctl\nHEAD=/usr/bin/head\nTAIL=/usr/bin/tail\nLSOF=/usr/sbin/lsof\nKILLALL=/usr/bin/killall\n\n# pfctl\nif ! [[ `$SUDO $PFCTL -s info | $HEAD -1 | $TAIL -1` =~ \"Status: Enabled\" ]]; then\n    $SUDO $LAUNCHCTL unload -w /Library/LaunchDaemons/net.openbsd.pf.plist\n    $SUDO $LAUNCHCTL load -w /Library/LaunchDaemons/net.openbsd.pf.plist\nfi\n\n# squid\n# make sure there aren't multiple squid jobs running\nif ! [[ `$SUDO $LSOF -i ':3128' | $TAIL -1` && `ps -ef | grep \"/opt/local/sbin/squid -s\" | grep -v grep | wc -l` -eq 1 ]]; then\n    $SUDO $PORT unload squid4\n    $SUDO $KILLALL '(squid-1)'\n    $SUDO $KILLALL 'squid'\n    /bin/sleep 5\n    $SUDO $PORT load squid4\nfi\n\n# privoxy\nif ! [[ `$SUDO $LSOF -i ':8118' | $TAIL -1` ]]; then\n    $SUDO $PORT unload privoxy\n    $SUDO $PORT load privoxy\nfi\n"
  },
  {
    "path": "deprecated/net.securemecca.pac.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>net.securemecca.pac.plist</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n \t\t<string>-c</string>\n\t<string>export PROXY_PAC_DIRECTORY=/Library/WebServer/Documents; /bin/mkdir -p /usr/local/etc ; ( /bin/test -f $PROXY_PAC_DIRECTORY/proxy.pac.orig || /usr/bin/install -m 644 -S $PROXY_PAC_DIRECTORY/proxy.pac $PROXY_PAC_DIRECTORY/proxy.pac.orig ) &amp;&amp; /bin/cp $PROXY_PAC_DIRECTORY/proxy.pac.orig /tmp/proxy.pac.orig &amp;&amp; /opt/local/bin/wget -N -P /usr/local/etc http://securemecca.com/Downloads/AutoPac_EN.unx.7z &amp;&amp; /opt/local/bin/7za x -aoa -o/tmp /usr/local/etc/AutoPac_EN.unx.7z AutoPac_EN.unx &amp;&amp; /opt/local/bin/gpg --verify /tmp/AutoPac_EN.unx/proxy_en.sig /tmp/AutoPac_EN.unx/proxy_en &amp;&amp; /usr/bin/printf &apos;// *Modified for mydomainname.com*\\n// King of the PAC from http://securemecca.com/pac.html:\\n&apos; &gt; /tmp/proxy.pac &amp;&amp; /usr/bin/sed -E &apos;s/return[ \\t]+normal/return MyFindProxyForURL(url.toString(), host)/g&apos; /tmp/AutoPac_EN.unx/proxy_en &gt;&gt; /tmp/proxy.pac &amp;&amp; /usr/bin/sed -E &apos;s/function[ \\t]+FindProxyForURL/function MyFindProxyForURL/&apos; /tmp/proxy.pac.orig &gt;&gt; /tmp/proxy.pac &amp;&amp; /usr/bin/install -m 644 -g admin -S /tmp/proxy.pac $PROXY_PAC_DIRECTORY/proxy.pac ; /bin/rm -fr /tmp/proxy.pac /tmp/proxy.pac.orig /tmp/AutoPac_EN.unx</string>\n\t</array>\n\t<key>RunAtLoad</key>\n\t<true/>\n\t<key>StartInterval</key>\n\t<integer>90450</integer>\n\t<key>ServiceDescription</key>\n\t<string>securemecca.com King of the PAC Modification</string>\n\t<key>StandardErrorPath</key>\n\t<string>/var/log/system.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/system.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "deprecated/org.adblockplus.privoxy-adblock.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>org.adblockplus.privoxy-adblock.plist</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n \t\t<string>-c</string>\n\t<string>/usr/local/bin/privoxy-adblock.sh &amp;&amp; /bin/launchctl unload -w /Library/LaunchDaemons/org.macports.Privoxy.plist &amp;&amp; /bin/launchctl load -w /Library/LaunchDaemons/org.macports.Privoxy.plist</string>\n\t</array>\n\t<key>RunAtLoad</key>\n\t<true/>\n\t<key>StartInterval</key>\n\t<integer>90450</integer>\n\t<key>ServiceDescription</key>\n\t<string>GitHub skroll/privoxy-adblock fork</string>\n\t<key>StandardErrorPath</key>\n\t<string>/var/log/system.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/system.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "deprecated/squid-27.conf",
    "content": "\n#\tWELCOME TO SQUID 2.7.STABLE9\n#\t----------------------------\n#\n#\tThis is the default Squid configuration file. You may wish\n#\tto look at the Squid home page (http://www.squid-cache.org/)\n#\tfor the FAQ and other documentation.\n#\n#\tThe default Squid config file shows what the defaults for\n#\tvarious options happen to be.  If you don't need to change the\n#\tdefault, you shouldn't uncomment the line.  Doing so may cause\n#\trun-time problems.  In some cases \"none\" refers to no default\n#\tsetting at all, while in other cases it refers to a valid\n#\toption - the comments for that keyword indicate if this is the\n#\tcase.\n#\n\n\n#  Configuration options can be included using the \"include\" directive.\n#  Include takes a list of files to include. Quoting and wildcards is\n#  supported.\n#\n#  For example,\n#\n#  include /path/to/included/file/squid.acl.config\n#\n#  Includes can be nested up to a hard-coded depth of 16 levels.\n#  This arbitrary restriction is to prevent recursive include references\n#  from causing Squid entering an infinite loop whilst trying to load\n#  configuration files.\n\n\n# OPTIONS FOR AUTHENTICATION\n# -----------------------------------------------------------------------------\n\n#  TAG: auth_param\n#\tThis is used to define parameters for the various authentication\n#\tschemes supported by Squid.\n#\n#\tformat: auth_param scheme parameter [setting]\n#\n#\tThe order in which authentication schemes are presented to the client is\n#\tdependent on the order the scheme first appears in config file. IE\n#\thas a bug (it's not RFC 2617 compliant) in that it will use the basic\n#\tscheme if basic is the first entry presented, even if more secure\n#\tschemes are presented. For now use the order in the recommended\n#\tsettings section below. If other browsers have difficulties (don't\n#\trecognize the schemes offered even if you are using basic) either\n#\tput basic first, or disable the other schemes (by commenting out their\n#\tprogram entry).\n#\n#\tOnce an authentication scheme is fully configured, it can only be\n#\tshutdown by shutting squid down and restarting. Changes can be made on\n#\tthe fly and activated with a reconfigure. I.E. You can change to a\n#\tdifferent helper, but not unconfigure the helper completely.\n#\n#\tPlease note that while this directive defines how Squid processes\n#\tauthentication it does not automatically activate authentication.\n#\tTo use authentication you must in addition make use of ACLs based\n#\ton login name in http_access (proxy_auth, proxy_auth_regex or\n#\texternal with %LOGIN used in the format tag). The browser will be\n#\tchallenged for authentication on the first such acl encountered\n#\tin http_access processing and will also be re-challenged for new\n#\tlogin credentials if the request is being denied by a proxy_auth\n#\ttype acl.\n#\n#\tWARNING: authentication can't be used in a transparently intercepting\n#\tproxy as the client then thinks it is talking to an origin server and\n#\tnot the proxy. This is a limitation of bending the TCP/IP protocol to\n#\ttransparently intercepting port 80, not a limitation in Squid.\n#\n#\t=== Parameters for the basic scheme follow. ===\n#\n#\t\"program\" cmdline\n#\tSpecify the command for the external authenticator.  Such a program\n#\treads a line containing \"username password\" and replies \"OK\" or\n#\t\"ERR\" in an endless loop. \"ERR\" responses may optionally be followed\n#\tby a error description available as %m in the returned error page.\n#\n#\tBy default, the basic authentication scheme is not used unless a\n#\tprogram is specified.\n#\n#\tIf you want to use the traditional proxy authentication, jump over to\n#\tthe helpers/basic_auth/NCSA directory and type:\n#\t\t% make\n#\t\t% make install\n#\n#\tThen, set this line to something like\n#\n#\tauth_param basic program /opt/local/libexec/ncsa_auth /opt/local/etc/passwd\n#\n#\t\"children\" numberofchildren\n#\tThe number of authenticator processes to spawn. If you start too few\n#\tsquid will have to wait for them to process a backlog of credential\n#\tverifications, slowing it down. When credential verifications are\n#\tdone via a (slow) network you are likely to need lots of\n#\tauthenticator processes.\n#\tauth_param basic children 5\n#\n#\t\"concurrency\" numberofconcurrentrequests\n#\tThe number of concurrent requests/channels the helper supports.\n#\tChanges the protocol used to include a channel number first on\n#\tthe request/response line, allowing multiple requests to be sent\n#\tto the same helper in parallell without wating for the response.\n#\tMust not be set unless it's known the helper supports this.\n#\n#\t\"realm\" realmstring\n#\tSpecifies the realm name which is to be reported to the client for\n#\tthe basic proxy authentication scheme (part of the text the user\n#\twill see when prompted their username and password).\n#\tauth_param basic realm Squid proxy-caching web server\n#\n#\t\"credentialsttl\" timetolive\n#\tSpecifies how long squid assumes an externally validated\n#\tusername:password pair is valid for - in other words how often the\n#\thelper program is called for that user. Set this low to force\n#\trevalidation with short lived passwords.  Note that setting this high\n#\tdoes not impact your susceptibility to replay attacks unless you are\n#\tusing an one-time password system (such as SecureID). If you are using\n#\tsuch a system, you will be vulnerable to replay attacks unless you\n#\talso use the max_user_ip ACL in an http_access rule.\n#\tauth_param basic credentialsttl 2 hours\n#\n#\t\"casesensitive\" on|off\n#\tSpecifies if usernames are case sensitive. Most user databases are\n#\tcase insensitive allowing the same username to be spelled using both\n#\tlower and upper case letters, but some are case sensitive. This\n#\tmakes a big difference for user_max_ip ACL processing and similar.\n#\tauth_param basic casesensitive off\n#\n#\t\"blankpassword\" on|off\n#\tSpecifies if blank passwords should be supported. Defaults to off\n#\tas there is multiple authentication backends which handles blank\n#\tpasswords as \"guest\" access.\n#\n#\t=== Parameters for the digest scheme follow ===\n#\n#\t\"program\" cmdline\n#\tSpecify the command for the external authenticator.  Such a program\n#\treads a line containing \"username\":\"realm\" and replies with the\n#\tappropriate H(A1) value hex encoded or ERR if the user (or his H(A1)\n#\thash) does not exists.  See RFC 2616 for the definition of H(A1).\n#\t\"ERR\" responses may optionally be followed by a error description\n#\tavailable as %m in the returned error page.\n#\n#\tBy default, the digest authentication scheme is not used unless a\n#\tprogram is specified.\n#\n#\tIf you want to use a digest authenticator, jump over to the\n#\thelpers/digest_auth/ directory and choose the authenticator to use.\n#\tIt it's directory type\n#\t\t% make\n#\t\t% make install\n#\n#\tThen, set this line to something like\n#\n#\tauth_param digest program /opt/local/libexec/digest_auth_pw /opt/local/etc/digpass\n#\n#\t\"children\" numberofchildren\n#\tThe number of authenticator processes to spawn. If you start too few\n#\tsquid will have to wait for them to process a backlog of credential\n#\tverifications, slowing it down. When credential verifications are\n#\tdone via a (slow) network you are likely to need lots of\n#\tauthenticator processes.\n#\tauth_param digest children 5\n#\n#\t\"concurrency\" numberofconcurrentrequests\n#\tThe number of concurrent requests/channels the helper supports.\n#\tChanges the protocol used to include a channel number first on\n#\tthe request/response line, allowing multiple requests to be sent\n#\tto the same helper in parallell without wating for the response.\n#\tMust not be set unless it's known the helper supports this.\n#\n#\t\"realm\" realmstring\n#\tSpecifies the realm name which is to be reported to the client for the\n#\tdigest proxy authentication scheme (part of the text the user will see\n#\twhen prompted their username and password).\n#\tauth_param digest realm Squid proxy-caching web server\n#\n#\t\"nonce_garbage_interval\" timeinterval\n#\tSpecifies the interval that nonces that have been issued to clients are\n#\tchecked for validity.\n#\tauth_param digest nonce_garbage_interval 5 minutes\n#\n#\t\"nonce_max_duration\" timeinterval\n#\tSpecifies the maximum length of time a given nonce will be valid for.\n#\tauth_param digest nonce_max_duration 30 minutes\n#\n#\t\"nonce_max_count\" number\n#\tSpecifies the maximum number of times a given nonce can be used.\n#\tauth_param digest nonce_max_count 50\n#\n#\t\"nonce_strictness\" on|off\n#\tDetermines if squid requires strict increment-by-1 behavior for nonce\n#\tcounts, or just incrementing (off - for use when useragents generate\n#\tnonce counts that occasionally miss 1 (ie, 1,2,4,6)).\n#\tauth_param digest nonce_strictness off\n#\n#\t\"check_nonce_count\" on|off\n#\tThis directive if set to off can disable the nonce count check\n#\tcompletely to work around buggy digest qop implementations in certain\n#\tmainstream browser versions. Default on to check the nonce count to\n#\tprotect from authentication replay attacks.\n#\tauth_param digest check_nonce_count on\n#\n#\t\"post_workaround\" on|off\n#\tThis is a workaround to certain buggy browsers who sends an incorrect\n#\trequest digest in POST requests when reusing the same nonce as acquired\n#\tearlier in response to a GET request.\n#\tauth_param digest post_workaround off\n#\n#\t=== NTLM scheme options follow ===\n#\n#\t\"program\" cmdline\n#\tSpecify the command for the external NTLM authenticator. Such a\n#\tprogram participates in the NTLMSSP exchanges between Squid and the\n#\tclient and reads commands according to the Squid NTLMSSP helper\n#\tprotocol. See helpers/ntlm_auth/ for details. Recommended ntlm\n#\tauthenticator is ntlm_auth from Samba-3.X, but a number of other\n#\tntlm authenticators is available.\n#\n#\tBy default, the ntlm authentication scheme is not used unless a\n#\tprogram is specified.\n#\n#\tauth_param ntlm program /path/to/samba/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp\n#\n#\t\"children\" numberofchildren\n#\tThe number of authenticator processes to spawn. If you start too few\n#\tsquid will have to wait for them to process a backlog of credential\n#\tverifications, slowing it down. When credential verifications are\n#\tdone via a (slow) network you are likely to need lots of\n#\tauthenticator processes.\n#\tauth_param ntlm children 5\n#\n#\t\"keep_alive\" on|off\n#\tThis option enables the use of keep-alive on the initial\n#\tauthentication request. It has been reported some versions of MSIE\n#\thave problems if this is enabled, but performance will be increased\n#\tif enabled.\n#\n#\tauth_param ntlm keep_alive on\n#\n#\t=== Negotiate scheme options follow ===\n#\n#\t\"program\" cmdline\n#\tSpecify the command for the external Negotiate authenticator. Such a\n#\tprogram participates in the SPNEGO exchanges between Squid and the\n#\tclient and reads commands according to the Squid ntlmssp helper\n#\tprotocol. See helpers/ntlm_auth/ for details. Recommended SPNEGO\n#\tauthenticator is ntlm_auth from Samba-4.X.\n#\n#\tBy default, the Negotiate authentication scheme is not used unless a\n#\tprogram is specified.\n#\n#\tauth_param negotiate program /path/to/samba/bin/ntlm_auth --helper-protocol=gss-spnego\n#\n#\t\"children\" numberofchildren\n#\tThe number of authenticator processes to spawn. If you start too few\n#\tsquid will have to wait for them to process a backlog of credential\n#\tverifications, slowing it down. When credential verifications are\n#\tdone via a (slow) network you are likely to need lots of\n#\tauthenticator processes.\n#\tauth_param negotiate children 5\n#\n#\t\"keep_alive\" on|off\n#\tIf you experience problems with PUT/POST requests when using the\n#\tNegotiate authentication scheme then you can try setting this to\n#\toff. This will cause Squid to forcibly close the connection on\n#\tthe initial requests where the browser asks which schemes are\n#\tsupported by the proxy.\n#\n#\tauth_param negotiate keep_alive on\n#\n#Recommended minimum configuration per scheme:\n#auth_param negotiate program <uncomment and complete this line to activate>\n#auth_param negotiate children 5\n#auth_param negotiate keep_alive on\n#auth_param ntlm program <uncomment and complete this line to activate>\n#auth_param ntlm children 5\n#auth_param ntlm keep_alive on\n#auth_param digest program <uncomment and complete this line>\n#auth_param digest children 5\n#auth_param digest realm Squid proxy-caching web server\n#auth_param digest nonce_garbage_interval 5 minutes\n#auth_param digest nonce_max_duration 30 minutes\n#auth_param digest nonce_max_count 50\n#auth_param basic program <uncomment and complete this line>\n#auth_param basic children 5\n#auth_param basic realm Squid proxy-caching web server\n#auth_param basic credentialsttl 2 hours\n#auth_param basic casesensitive off\n\n#  TAG: authenticate_cache_garbage_interval\n#\tThe time period between garbage collection across the username cache.\n#\tThis is a tradeoff between memory utilization (long intervals - say\n#\t2 days) and CPU (short intervals - say 1 minute). Only change if you\n#\thave good reason to.\n#\n#Default:\n# authenticate_cache_garbage_interval 1 hour\n\n#  TAG: authenticate_ttl\n#\tThe time a user & their credentials stay in the logged in user cache\n#\tsince their last request. When the garbage interval passes, all user\n#\tcredentials that have passed their TTL are removed from memory.\n#\n#Default:\n# authenticate_ttl 1 hour\n\n#  TAG: authenticate_ip_ttl\n#\tIf you use proxy authentication and the 'max_user_ip' ACL, this\n#\tdirective controls how long Squid remembers the IP addresses\n#\tassociated with each user.  Use a small value (e.g., 60 seconds) if\n#\tyour users might change addresses quickly, as is the case with\n#\tdialups. You might be safe using a larger value (e.g., 2 hours) in a\n#\tcorporate LAN environment with relatively static address assignments.\n#\n#Default:\n# authenticate_ip_ttl 0 seconds\n\n#  TAG: authenticate_ip_shortcircuit_ttl\n#\tCache authentication credentials per client IP address for this\n#\tlong. Default is 0 seconds (disabled).\n#\n#\tSee also authenticate_ip_shortcircuit_access directive.\n#\n#Default:\n# authenticate_ip_shortcircuit_ttl 0 seconds\n\n\n# ACCESS CONTROLS\n# -----------------------------------------------------------------------------\n\n#  TAG: external_acl_type\n#\tThis option defines external acl classes using a helper program to\n#\tlook up the status\n#\n#\t  external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]\n#\n#\tOptions:\n#\n#\t  ttl=n\t\tTTL in seconds for cached results (defaults to 3600\n#\t\t\tfor 1 hour)\n#\t  negative_ttl=n\n#\t\t\tTTL for cached negative lookups (default same\n#\t\t\tas ttl)\n#\t  children=n\tnumber of processes spawn to service external acl\n#\t\t\tlookups of this type. (default 5).\n#\t  concurrency=n\tconcurrency level per process. Only used with helpers\n#\t  \t\tcapable of processing more than one query at a time.\n#\t\t\tNote: see compatibility note below\n#\t  cache=n\tresult cache size, 0 is unbounded (default)\n#\t  grace=\tPercentage remaining of TTL where a refresh of a\n#\t\t\tcached entry should be initiated without needing to\n#\t\t\twait for a new reply. (default 0 for no grace period)\n#\t  protocol=2.5  Compatibility mode for Squid-2.5 external acl helpers\n#\n#\tFORMAT specifications\n#\n#\t  %LOGIN\tAuthenticated user login name\n#\t  %EXT_USER\tUsername from external acl\n#\t  %IDENT\tIdent user name\n#\t  %SRC\t\tClient IP\n#\t  %SRCPORT\tClient source port\n#\t  %URI\t\tRequested URI\n#\t  %DST\t\tRequested host\n#\t  %PROTO\tRequested protocol\n#\t  %PORT\t\tRequested port\n#\t  %METHOD\tRequest method\n#\t  %MYADDR\tSquid interface address\n#\t  %MYPORT\tSquid http_port number\n#\t  %PATH\t\tRequested URL-path (including query-string if any)\n#\t  %USER_CERT\tSSL User certificate in PEM format\n#\t  %USER_CERTCHAIN SSL User certificate chain in PEM format\n#\t  %USER_CERT_xx\tSSL User certificate subject attribute xx\n#\t  %USER_CA_xx\tSSL User certificate issuer attribute xx\n#\t  %{Header}\tHTTP request header \"Header\"\n#\t  %{Hdr:member}\tHTTP request header \"Hdr\" list member \"member\"\n#\t  %{Hdr:;member}\n#\t\t\tHTTP request header list member using ; as\n#\t\t\tlist separator. ; can be any non-alphanumeric\n#\t\t\tcharacter.\n#\t %ACL\t\tThe ACL name\n#\t %DATA\t\tThe ACL arguments. If not used then any arguments\n#\t\t\tis automatically added at the end\n#\n#\tIn addition to the above, any string specified in the referencing\n#\tacl will also be included in the helper request line, after the\n#\tspecified formats (see the \"acl external\" directive)\n#\n#\tThe helper receives lines per the above format specification,\n#\tand returns lines starting with OK or ERR indicating the validity\n#\tof the request and optionally followed by additional keywords with\n#\tmore details.\n#\n#\tGeneral result syntax:\n#\n#\t  OK/ERR keyword=value ...\n#\n#\tDefined keywords:\n#\n#\t  user=\t\tThe users name (login also understood)\n#\t  password=\tThe users password (for PROXYPASS login= cache_peer)\n#\t  message=\tError message or similar used as %o in error messages\n#\t\t\t(error also understood)\n#\t  log=\t\tString to be logged in access.log. Available as\n#\t\t\t%ea in logformat specifications\n#\n#\tIf protocol=3.0 (the default) then URL escaping is used to protect\n#\teach value in both requests and responses.\n#\n#\tIf using protocol=2.5 then all values need to be enclosed in quotes\n#\tif they may contain whitespace, or the whitespace escaped using \\.\n#\tAnd quotes or \\ characters within the keyword value must be \\ escaped.\n#\n#\tWhen using the concurrency= option the protocol is changed by\n#\tintroducing a query channel tag infront of the request/response.\n#\tThe query channel tag is a number between 0 and concurrency-1.\n#\n#\tCompatibility Note: The children= option was named concurrency= in\n#\tSquid-2.5.STABLE3 and earlier, and was accepted as an alias for the\n#\tduration of the Squid-2.5 releases to keep compatibility. However,\n#\tthe meaning of concurrency= option has changed in Squid-2.6 to match\n#\tthat of Squid-3 and the old syntax no longer works.\n#\n#Default:\n# none\n\n#  TAG: acl\n#\tDefining an Access List\n#\n#    Every access list definition must begin with an aclname and acltype, \n#    followed by either type-specific arguments or a quoted filename that\n#    they are read from.\n#\n#\tacl aclname acltype argument ...\n#\tacl aclname acltype \"file\" ...\n#\n#\twhen using \"file\", the file should contain one item per line.\n#\n#\tBy default, regular expressions are CASE-SENSITIVE.  To make\n#\tthem case-insensitive, use the -i option.\n#\n#\tacl aclname src      ip-address/netmask ... (clients IP address)\n#\tacl aclname src      addr1-addr2/netmask ... (range of addresses)\n#\tacl aclname dst      ip-address/netmask ... (URL host's IP address)\n#\tacl aclname myip     ip-address/netmask ... (local socket IP address)\n#\n#\tacl aclname arp      mac-address ... (xx:xx:xx:xx:xx:xx notation)\n#\t  # The arp ACL requires the special configure option --enable-arp-acl.\n#\t  # Furthermore, the arp ACL code is not portable to all operating systems.\n#\t  # It works on Linux, Solaris, FreeBSD and some other *BSD variants.\n#\t  #\n#\t  # NOTE: Squid can only determine the MAC address for clients that are on\n#\t  # the same subnet. If the client is on a different subnet, then Squid cannot\n#\t  # find out its MAC address.\n#\n#\tacl aclname srcdomain   .foo.com ...    # reverse lookup, client IP\n#\tacl aclname dstdomain   .foo.com ...    # Destination server from URL\n#\tacl aclname srcdom_regex [-i] xxx ...   # regex matching client name\n#\tacl aclname dstdom_regex [-i] xxx ...   # regex matching server\n#\t  # For dstdomain and dstdom_regex a reverse lookup is tried if a IP\n#\t  # based URL is used and no match is found. The name \"none\" is used\n#\t  # if the reverse lookup fails.\n#\n#\tacl aclname time     [day-abbrevs]  [h1:m1-h2:m2]\n#\t    # day-abbrevs:\n#\t\t# S - Sunday\n#\t\t# M - Monday\n#\t\t# T - Tuesday\n#\t\t# W - Wednesday\n#\t\t# H - Thursday\n#\t\t# F - Friday\n#\t\t# A - Saturday\n#\t    # h1:m1 must be less than h2:m2\n#\tacl aclname url_regex [-i] ^http:// ...\t    # regex matching on whole URL\n#\tacl aclname urlpath_regex [-i] \\.gif$ ...\t# regex matching on URL path\n#\tacl aclname urllogin [-i] [^a-zA-Z0-9] ...\t# regex matching on URL login field\n#\tacl aclname port     80 70 21 ...\n#\tacl aclname port     0-1024 ...\t\t# ranges allowed\n#\tacl aclname myport   3128 ...\t\t# (local socket TCP port)\n#\tacl aclname myportname 3128 ...\t\t# http(s)_port name\n#\tacl aclname proto    HTTP FTP ...\n#\tacl aclname method   GET POST ...\n#\tacl aclname browser  [-i] regexp ...\n#\t  # pattern match on User-Agent header (see also req_header below)\n#\tacl aclname referer_regex  [-i] regexp ...\n#\t  # pattern match on Referer header\n#\t  # Referer is highly unreliable, so use with care\n#\tacl aclname ident    username ...\n#\tacl aclname ident_regex [-i] pattern ...\n#\t  # string match on ident output.\n#\t  # use REQUIRED to accept any non-null ident.\n#\tacl aclname src_as   number ...\n#\tacl aclname dst_as   number ...\n#\t  # Except for access control, AS numbers can be used for\n#\t  # routing of requests to specific caches. Here's an\n#\t  # example for routing all requests for AS#1241 and only\n#\t  # those to mycache.mydomain.net:\n#\t  # acl asexample dst_as 1241\n#\t  # cache_peer_access mycache.mydomain.net allow asexample\n#\t  # cache_peer_access mycache_mydomain.net deny all\n#\n#\tacl aclname proxy_auth [-i] username ...\n#\tacl aclname proxy_auth_regex [-i] pattern ...\n#\t  # list of valid usernames\n#\t  # use REQUIRED to accept any valid username.\n#\t  #\n#\t  # NOTE: when a Proxy-Authentication header is sent but it is not\n#\t  # needed during ACL checking the username is NOT logged\n#\t  # in access.log.\n#\t  #\n#\t  # NOTE: proxy_auth requires a EXTERNAL authentication program\n#\t  # to check username/password combinations (see\n#\t  # auth_param directive).\n#\t  #\n#\t  # NOTE: proxy_auth can't be used in a transparent proxy as\n#\t  # the browser needs to be configured for using a proxy in order\n#\t  # to respond to proxy authentication.\n#\n#\tacl aclname snmp_community string ...\n#\t  # A community string to limit access to your SNMP Agent\n#\t  # Example:\n#\t  #\n#\t  #\tacl snmppublic snmp_community public\n#\n#\tacl aclname maxconn number\n#\t  # This will be matched when the client's IP address has\n#\t  # more than <number> HTTP connections established.\n#\n#\tacl aclname max_user_ip [-s] number\n#\t  # This will be matched when the user attempts to log in from more\n#\t  # than <number> different ip addresses. The authenticate_ip_ttl\n#\t  # parameter controls the timeout on the ip entries.\n#\t  # If -s is specified the limit is strict, denying browsing\n#\t  # from any further IP addresses until the ttl has expired. Without\n#\t  # -s Squid will just annoy the user by \"randomly\" denying requests.\n#\t  # (the counter is reset each time the limit is reached and a\n#\t  # request is denied)\n#\t  # NOTE: in acceleration mode or where there is mesh of child proxies,\n#\t  # clients may appear to come from multiple addresses if they are\n#\t  # going through proxy farms, so a limit of 1 may cause user problems.\n#\n#\tacl aclname req_mime_type mime-type ...\n#\t  # regex match against the mime type of the request generated\n#\t  # by the client. Can be used to detect file upload or some\n#\t  # types HTTP tunneling requests.\n#\t  # NOTE: This does NOT match the reply. You cannot use this\n#\t  # to match the returned file type.\n#\n#\tacl aclname req_header header-name [-i] any\\.regex\\.here\n#\t  # regex match against any of the known request headers.  May be\n#\t  # thought of as a superset of \"browser\", \"referer\" and \"mime-type\"\n#\t  # ACLs.\n#\n#\tacl aclname rep_mime_type mime-type ...\n#\t  # regex match against the mime type of the reply received by\n#\t  # squid. Can be used to detect file download or some\n#\t  # types HTTP tunneling requests.\n#\t  # NOTE: This has no effect in http_access rules. It only has\n#\t  # effect in rules that affect the reply data stream such as\n#\t  # http_reply_access.\n#\n#\tacl aclname rep_header header-name [-i] any\\.regex\\.here\n#\t  # regex match against any of the known reply headers. May be\n#\t  # thought of as a superset of \"browser\", \"referer\" and \"mime-type\"\n#\t  # ACLs.\n#\t  #\n#\t  # Example:\n#\t  #\n#\t  # acl many_spaces rep_header Content-Disposition -i [[:space:]]{3,}\n#\n#\tacl aclname external class_name [arguments...]\n#\t  # external ACL lookup via a helper class defined by the\n#\t  # external_acl_type directive.\n#\n#\tacl aclname urlgroup group1 ...\n#\t  # match against the urlgroup as indicated by redirectors\n#\n#\tacl aclname user_cert attribute values...\n#\t  # match against attributes in a user SSL certificate\n#\t  # attribute is one of DN/C/O/CN/L/ST\n#\n#\tacl aclname ca_cert attribute values...\n#\t  # match against attributes a users issuing CA SSL certificate\n#\t  # attribute is one of DN/C/O/CN/L/ST\n#\n#\tacl aclname ext_user username ...\n#\tacl aclname ext_user_regex [-i] pattern ...\n#\t  # string match on username returned by external acl helper\n#\t  # use REQUIRED to accept any non-null user name.\n#\n#Examples:\n#acl macaddress arp 09:00:2b:23:45:67\n#acl myexample dst_as 1241\n#acl password proxy_auth REQUIRED\n#acl fileupload req_mime_type -i ^multipart/form-data$\n#acl javascript rep_mime_type -i ^application/x-javascript$\n#\n#Recommended minimum configuration:\nacl all src all\nacl manager proto cache_object\nacl localhost src 127.0.0.1\nacl to_localhost dst 127.0.0.0/8 0.0.0.0/32\n#\n# Example rule allowing access from your local networks.\n# Adapt to list your (internal) IP networks from where browsing\n# should be allowed\nacl localnet src 10.0.0.0/8\t# RFC1918 possible internal network\n#acl localnet src 172.16.0.0/12\t# RFC1918 possible internal network\n#acl localnet src 192.168.0.0/16\t# RFC1918 possible internal network\n#\nacl SSL_ports port 443\nacl Safe_ports port 80\t\t# http\nacl Safe_ports port 21\t\t# ftp\nacl Safe_ports port 443\t\t# https\nacl Safe_ports port 70\t\t# gopher\nacl Safe_ports port 210\t\t# wais\nacl Safe_ports port 1025-65535\t# unregistered ports\nacl Safe_ports port 280\t\t# http-mgmt\nacl Safe_ports port 488\t\t# gss-http\nacl Safe_ports port 591\t\t# filemaker\nacl Safe_ports port 777\t\t# multiling http\nacl CONNECT method CONNECT\n\n#  TAG: http_access\n#\tAllowing or Denying access based on defined access lists\n#\n#\tAccess to the HTTP port:\n#\thttp_access allow|deny [!]aclname ...\n#\n#\tNOTE on default values:\n#\n#\tIf there are no \"access\" lines present, the default is to deny\n#\tthe request.\n#\n#\tIf none of the \"access\" lines cause a match, the default is the\n#\topposite of the last line in the list.  If the last line was\n#\tdeny, the default is allow.  Conversely, if the last line\n#\tis allow, the default will be deny.  For these reasons, it is a\n#\tgood idea to have an \"deny all\" or \"allow all\" entry at the end\n#\tof your access lists to avoid potential confusion.\n#\n#Default:\n# http_access deny all\n#\n#Recommended minimum configuration:\n#\n# Only allow cachemgr access from localhost\nhttp_access allow manager localhost\nhttp_access deny manager\n# Deny requests to unknown ports\nhttp_access deny !Safe_ports\n# Deny CONNECT to other than SSL ports\nhttp_access deny CONNECT !SSL_ports\n#\n# We strongly recommend the following be uncommented to protect innocent\n# web applications running on the proxy server who think the only\n# one who can access services on \"localhost\" is a local user\nhttp_access deny to_localhost\n#\n# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS\nhttp_access allow localhost\n# Example rule allowing access from your local networks.\n# Adapt localnet in the ACL section to list your (internal) IP networks\n# from where browsing should be allowed\nhttp_access allow localnet\n\n# And finally deny all other access to this proxy\nhttp_access deny all\n\n#  TAG: http_access2\n#\tAllowing or Denying access based on defined access lists\n#\n#\tIdentical to http_access, but runs after redirectors. If not set\n#\tthen only http_access is used.\n#\n#Default:\n# none\n\n#  TAG: http_reply_access\n#\tAllow replies to client requests. This is complementary to http_access.\n#\n#\thttp_reply_access allow|deny [!] aclname ...\n#\n#\tNOTE: if there are no access lines present, the default is to allow\n#\tall replies\n#\n#\tIf none of the access lines cause a match the opposite of the\n#\tlast line will apply. Thus it is good practice to end the rules\n#\twith an \"allow all\" or \"deny all\" entry.\n#\n#Default:\n# http_reply_access allow all\n\n#  TAG: icp_access\n#\tAllowing or Denying access to the ICP port based on defined\n#\taccess lists\n#\n#\ticp_access  allow|deny [!]aclname ...\n#\n#\tSee http_access for details\n#\n#Default:\n# icp_access deny all\n#\n#Allow ICP queries from local networks only\nicp_access allow localnet\nicp_access deny all\n\n#  TAG: htcp_access\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-htcp option\n#\n#\tAllowing or Denying access to the HTCP port based on defined\n#\taccess lists\n#\n#\thtcp_access  allow|deny [!]aclname ...\n#\n#\tSee http_access for details\n#\n#\tNOTE: The default if no htcp_access lines are present is to\n#\tdeny all traffic. This default may cause problems with peers\n#\tusing the htcp or htcp-oldsquid options.\n#\n#Default:\n# htcp_access deny all\n#\n#Allow HTCP queries from local networks only\n# htcp_access allow localnet\n# htcp_access deny all\n\n#  TAG: htcp_clr_access\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-htcp option\n#\n#\tAllowing or Denying access to purge content using HTCP based\n#\ton defined access lists\n#\n#\thtcp_clr_access  allow|deny [!]aclname ...\n#\n#\tSee http_access for details\n#\n##Allow HTCP CLR requests from trusted peers\n#acl htcp_clr_peer src 172.16.1.2\n#htcp_clr_access allow htcp_clr_peer\n#\n#Default:\n# htcp_clr_access deny all\n\n#  TAG: miss_access\n#\tUse to force your neighbors to use you as a sibling instead of\n#\ta parent.  For example:\n#\n#\t\tacl localclients src 172.16.0.0/16\n#\t\tmiss_access allow localclients\n#\t\tmiss_access deny  !localclients\n#\n#\tThis means only your local clients are allowed to fetch\n#\tMISSES and all other clients can only fetch HITS.\n#\n#\tBy default, allow all clients who passed the http_access rules\n#\tto fetch MISSES from us.\n#\n#Default setting:\n# miss_access allow all\n\n#  TAG: ident_lookup_access\n#\tA list of ACL elements which, if matched, cause an ident\n#\t(RFC931) lookup to be performed for this request.  For\n#\texample, you might choose to always perform ident lookups\n#\tfor your main multi-user Unix boxes, but not for your Macs\n#\tand PCs.  By default, ident lookups are not performed for\n#\tany requests.\n#\n#\tTo enable ident lookups for specific client addresses, you\n#\tcan follow this example:\n#\n#\tacl ident_aware_hosts src 198.168.1.0/255.255.255.0\n#\tident_lookup_access allow ident_aware_hosts\n#\tident_lookup_access deny all\n#\n#\tOnly src type ACL checks are fully supported.  A src_domain\n#\tACL might work at times, but it will not always provide\n#\tthe correct result.\n#\n#Default:\n# ident_lookup_access deny all\n\n#  TAG: reply_body_max_size\tbytes deny acl acl...\n#\tThis option specifies the maximum size of a reply body in bytes.\n#\tIt can be used to prevent users from downloading very large files,\n#\tsuch as MP3's and movies. When the reply headers are received,\n#\tthe reply_body_max_size lines are processed, and the first line with\n#\ta result of \"deny\" is used as the maximum body size for this reply.\n#\tThis size is checked twice. First when we get the reply headers,\n#\twe check the content-length value.  If the content length value exists\n#\tand is larger than the allowed size, the request is denied and the\n#\tuser receives an error message that says \"the request or reply\n#\tis too large.\" If there is no content-length, and the reply\n#\tsize exceeds this limit, the client's connection is just closed\n#\tand they will receive a partial reply.\n#\n#\tWARNING: downstream caches probably can not detect a partial reply\n#\tif there is no content-length header, so they will cache\n#\tpartial responses and give them out as hits.  You should NOT\n#\tuse this option if you have downstream caches.\n#\n#\tIf you set this parameter to zero (the default), there will be\n#\tno limit imposed.\n#\n#Default:\n# reply_body_max_size 0 allow all\n\n#  TAG: authenticate_ip_shortcircuit_access\n#\tAccess list determining when shortcicuiting the authentication process\n#\tbased on source IP cached credentials is acceptable. Use this to deny\n#\tusing the ip auth cache on requests from child proxies or other source\n#\tip's having multiple users.\n#\n#\tSee also authenticate_ip_shortcircuit_ttl directive\n#\n#Default:\n# none\n\n\n# OPTIONS FOR X-Forwarded-For\n# -----------------------------------------------------------------------------\n\n#  TAG: follow_x_forwarded_for\n# Note: This option is only available if Squid is rebuilt with the\n#       -DFOLLOW_X_FORWARDED_FOR option\n#\n#\tAllowing or Denying the X-Forwarded-For header to be followed to\n#\tfind the original source of a request.\n#\n#\tRequests may pass through a chain of several other proxies\n#\tbefore reaching us.  The X-Forwarded-For header will contain a\n#\tcomma-separated list of the IP addresses in the chain, with the\n#\trightmost address being the most recent.\n#\n#\tIf a request reaches us from a source that is allowed by this\n#\tconfiguration item, then we consult the X-Forwarded-For header\n#\tto see where that host received the request from.  If the\n#\tX-Forwarded-For header contains multiple addresses, and if\n#\tacl_uses_indirect_client is on, then we continue backtracking\n#\tuntil we reach an address for which we are not allowed to\n#\tfollow the X-Forwarded-For header, or until we reach the first\n#\taddress in the list.  (If acl_uses_indirect_client is off, then\n#\tit's impossible to backtrack through more than one level of\n#\tX-Forwarded-For addresses.)\n#\n#\tThe end result of this process is an IP address that we will\n#\trefer to as the indirect client address.  This address may\n#\tbe treated as the client address for access control, delay\n#\tpools and logging, depending on the acl_uses_indirect_client,\n#\tdelay_pool_uses_indirect_client and log_uses_indirect_client\n#\toptions.\n#\n#\tSECURITY CONSIDERATIONS:\n#\n#\t\tAny host for which we follow the X-Forwarded-For header\n#\t\tcan place incorrect information in the header, and Squid\n#\t\twill use the incorrect information as if it were the\n#\t\tsource address of the request.  This may enable remote\n#\t\thosts to bypass any access control restrictions that are\n#\t\tbased on the client's source addresses.\n#\n#\tFor example:\n#\n#\t\tacl localhost src 127.0.0.1\n#\t\tacl my_other_proxy srcdomain .proxy.example.com\n#\t\tfollow_x_forwarded_for allow localhost\n#\t\tfollow_x_forwarded_for allow my_other_proxy\n#\n#Default:\n# follow_x_forwarded_for deny all\n\n#  TAG: acl_uses_indirect_client\ton|off\n# Note: This option is only available if Squid is rebuilt with the\n#       -DFOLLOW_X_FORWARDED_FOR option\n#\n#\tControls whether the indirect client address\n#\t(see follow_x_forwarded_for) is used instead of the\n#\tdirect client address in acl matching.\n#\n#Default:\n# acl_uses_indirect_client on\n\n#  TAG: delay_pool_uses_indirect_client\ton|off\n# Note: This option is only available if Squid is rebuilt with the\n#       -DFOLLOW_X_FORWARDED_FOR option\n#\n#\tControls whether the indirect client address\n#\t(see follow_x_forwarded_for) is used instead of the\n#\tdirect client address in delay pools.\n#\n#Default:\n# delay_pool_uses_indirect_client on\n\n#  TAG: log_uses_indirect_client\ton|off\n# Note: This option is only available if Squid is rebuilt with the\n#       -DFOLLOW_X_FORWARDED_FOR option\n#\n#\tControls whether the indirect client address\n#\t(see follow_x_forwarded_for) is used instead of the\n#\tdirect client address in the access log.\n#\n#Default:\n# log_uses_indirect_client on\n\n\n# SSL OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: ssl_unclean_shutdown\n#\tSome browsers (especially MSIE) bugs out on SSL shutdown\n#\tmessages.\n#\n#Default:\n# ssl_unclean_shutdown off\n\n#  TAG: ssl_engine\n#\tThe OpenSSL engine to use. You will need to set this if you\n#\twould like to use hardware SSL acceleration for example.\n#\n#Default:\n# none\n\n#  TAG: sslproxy_client_certificate\n#\tClient SSL Certificate to use when proxying https:// URLs\n#\n#Default:\n# none\n\n#  TAG: sslproxy_client_key\n#\tClient SSL Key to use when proxying https:// URLs\n#\n#Default:\n# none\n\n#  TAG: sslproxy_version\n#\tSSL version level to use when proxying https:// URLs\n#\n#Default:\n# sslproxy_version 1\n\n#  TAG: sslproxy_options\n#\tSSL engine options to use when proxying https:// URLs\n#\n#Default:\n# none\n\n#  TAG: sslproxy_cipher\n#\tSSL cipher list to use when proxying https:// URLs\n#\n#Default:\n# none\n\n#  TAG: sslproxy_cafile\n#\tfile containing CA certificates to use when verifying server\n#\tcertificates while proxying https:// URLs\n#\n#Default:\n# none\n\n#  TAG: sslproxy_capath\n#\tdirectory containing CA certificates to use when verifying\n#\tserver certificates while proxying https:// URLs\n#\n#Default:\n# none\n\n#  TAG: sslproxy_flags\n#\tVarious flags modifying the use of SSL while proxying https:// URLs:\n#\t    DONT_VERIFY_PEER    Accept certificates even if they fail to\n#\t\t\t\tverify.\n#\t    NO_DEFAULT_CA       Don't use the default CA list built in\n#\t\t\t\tto OpenSSL.\n#\n#Default:\n# none\n\n#  TAG: sslpassword_program\n#\tSpecify a program used for entering SSL key passphrases\n#\twhen using encrypted SSL certificate keys. If not specified\n#\tkeys must either be unencrypted, or Squid started with the -N\n#\toption to allow it to query interactively for the passphrase.\n#\n#Default:\n# none\n\n\n# NETWORK OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: http_port\n#\tUsage:\tport [options]\n#\t\thostname:port [options]\n#\t\t1.2.3.4:port [options]\n#\n#\tThe socket addresses where Squid will listen for HTTP client\n#\trequests.  You may specify multiple socket addresses.\n#\tThere are three forms: port alone, hostname with port, and\n#\tIP address with port.  If you specify a hostname or IP\n#\taddress, Squid binds the socket to that specific\n#\taddress.  This replaces the old 'tcp_incoming_address'\n#\toption.  Most likely, you do not need to bind to a specific\n#\taddress, so you can use the port number alone.\n#\n#\tIf you are running Squid in accelerator mode, you\n#\tprobably want to listen on port 80 also, or instead.\n#\n#\tThe -I command line option will override the *first* port\n#\tspecified here.\n#\n#\tYou may specify multiple socket addresses on multiple lines.\n#\n#\tOptions:\n#\n#\t   transparent\tSupport for transparent interception of\n#\t\t\toutgoing requests without browser settings.\n#\n#\t   tproxy\tSupport Linux TPROXY for spoofing outgoing\n#\t\t\tconnections using the client IP address.\n#\n#\t   accel\tAccelerator mode. See also the related vhost,\n#\t\t\tvport and defaultsite directives.\n#\n#\t   defaultsite=domainname\n#\t\t\tWhat to use for the Host: header if it is not present\n#\t\t\tin a request. Determines what site (not origin server)\n#\t\t\taccelerators should consider the default.\n#\t\t\tDefaults to visible_hostname:port if not set\n#\t\t\tMay be combined with vport=NN to override the port number.\n#\t\t\tImplies accel.\n#\n#\t   vhost\tAccelerator mode using Host header for virtual\n#\t\t\tdomain support. Implies accel.\n#\n#\t   vport\tAccelerator with IP based virtual host support.\n#\t\t\tImplies accel.\n#\n#\t   vport=NN\tAs above, but uses specified port number rather\n#\t\t\tthan the http_port number. Implies accel.\n#\n#\t   allow-direct\tAllow direct forwarding in accelerator mode. Normally\n#\t   \t\taccelerated requests is denied direct forwarding as it\n#\t\t\tnever_direct was used.\n#\n#\t   urlgroup=\tDefault urlgroup to mark requests with (see\n#\t\t\talso acl urlgroup and url_rewrite_program)\n#\n#\t   protocol=\tProtocol to reconstruct accelerated requests with.\n#\t\t\tDefaults to http.\n#\n#\t   no-connection-auth\n#\t\t\tPrevent forwarding of Microsoft connection oriented\n#\t\t\tauthentication (NTLM, Negotiate and Kerberos)\n#\n#\t   act-as-origin\n#\t   \t\tAct is if this Squid is the origin server.\n#\t\t\tThis currently means generate own Date: and\n#\t\t\tExpires: headers. Implies accel.\n#\n#\t   http11\tEnables HTTP/1.1 support to clients. The HTTP/1.1\n#\t\t\tsupport is still incomplete with an internal HTTP/1.0\n#\t\t\thop, but should work with most clients. The main\n#\t\t\tHTTP/1.1 features missing due to this is forwarding\n#\t\t\tof requests using chunked transfer encoding (results\n#\t\t\tin 411) and forwarding of 1xx responses (silently\n#\t\t\tdropped)\n#\n#\t   name=\tSpecifies a internal name for the port. Defaults to\n#\t\t\tthe port specification (port or addr:port)\n#\n#\t   tcpkeepalive[=idle,interval,timeout]\n#\t\t\tEnable TCP keepalive probes of idle connections\n#\t\t\tidle is the initial time before TCP starts probing\n#\t\t\tthe connection, interval how often to probe, and\n#\t\t\ttimeout the time before giving up.\n#\n#\tIf you run Squid on a dual-homed machine with an internal\n#\tand an external interface we recommend you to specify the\n#\tinternal address:port in http_port. This way Squid will only be\n#\tvisible on the internal address.\n#\n# Squid normally listens to port 3128\nhttp_port 127.0.0.1:3128 name=localhost\n# Uncomment and change to your server IP for LAN or OpenVPN access\n#http_port 10.0.1.3:3128 name=LAN\n#http_port 10.8.0.1:3128 name=OpenVPN\n\n#  TAG: https_port\n#\tUsage:  [ip:]port cert=certificate.pem [key=key.pem] [options...]\n#\n#\tThe socket address where Squid will listen for HTTPS client\n#\trequests.\n#\n#\tThis is really only useful for situations where you are running\n#\tsquid in accelerator mode and you want to do the SSL work at the\n#\taccelerator level.\n#\n#\tYou may specify multiple socket addresses on multiple lines,\n#\teach with their own SSL certificate and/or options.\n#\n#\tOptions:\n#\n#\tIn addition to the options specified for http_port the folling\n#\tSSL related options is supported:\n#\n#\t   cert=\tPath to SSL certificate (PEM format).\n#\n#\t   key=\t\tPath to SSL private key file (PEM format)\n#\t\t\tif not specified, the certificate file is\n#\t\t\tassumed to be a combined certificate and\n#\t\t\tkey file.\n#\n#\t   version=\tThe version of SSL/TLS supported\n#\t\t\t    1\tautomatic (default)\n#\t\t\t    2\tSSLv2 only\n#\t\t\t    3\tSSLv3 only\n#\t\t\t    4\tTLSv1 only\n#\n#\t   cipher=\tColon separated list of supported ciphers.\n#\n#\t   options=\tVarious SSL engine options. The most important\n#\t\t\tbeing:\n#\t\t\t    NO_SSLv2  Disallow the use of SSLv2\n#\t\t\t    NO_SSLv3  Disallow the use of SSLv3\n#\t\t\t    NO_TLSv1  Disallow the use of TLSv1\n#\t\t\t    SINGLE_DH_USE Always create a new key when using\n#\t\t\t\t      temporary/ephemeral DH key exchanges\n#\t\t\tSee src/ssl_support.c or OpenSSL SSL_CTX_set_options\n#\t\t\tdocumentation for a complete list of options.\n#\n#\t   clientca=\tFile containing the list of CAs to use when\n#\t\t\trequesting a client certificate.\n#\n#\t   cafile=\tFile containing additional CA certificates to\n#\t\t\tuse when verifying client certificates. If unset\n#\t\t\tclientca will be used.\n#\n#\t   capath=\tDirectory containing additional CA certificates\n#\t\t\tand CRL lists to use when verifying client certificates.\n#\n#\t   crlfile=\tFile of additional CRL lists to use when verifying\n#\t\t\tthe client certificate, in addition to CRLs stored in\n#\t\t\tthe capath. Implies VERIFY_CRL flag below.\n#\n#\t   dhparams=\tFile containing DH parameters for temporary/ephemeral\n#\t\t\tDH key exchanges.\n#\n#\t   sslflags=\tVarious flags modifying the use of SSL:\n#\t\t\t    DELAYED_AUTH\n#\t\t\t\tDon't request client certificates\n#\t\t\t\timmediately, but wait until acl processing\n#\t\t\t\trequires a certificate (not yet implemented).\n#\t\t\t    NO_DEFAULT_CA\n#\t\t\t\tDon't use the default CA lists built in\n#\t\t\t\tto OpenSSL.\n#\t\t\t    NO_SESSION_REUSE\n#\t\t\t\tDon't allow for session reuse. Each connection\n#\t\t\t\twill result in a new SSL session.\n#\t\t\t    VERIFY_CRL\n#\t\t\t\tVerify CRL lists when accepting client\n#\t\t\t\tcertificates.\n#\t\t\t    VERIFY_CRL_ALL\n#\t\t\t\tVerify CRL lists for all certificates in the\n#\t\t\t\tclient certificate chain.\n#\n#\t   sslcontext=\tSSL session ID context identifier.\n#\n#\n#Default:\n# none\n\n#  TAG: tcp_outgoing_tos\n#\tAllows you to select a TOS/Diffserv value to mark outgoing\n#\tconnections with, based on the username or source address\n#\tmaking the request.\n#\n#\ttcp_outgoing_tos ds-field [!]aclname ...\n#\n#\tExample where normal_service_net uses the TOS value 0x00\n#\tand good_service_net uses 0x20\n#\n#\tacl normal_service_net src 10.0.0.0/255.255.255.0\n#\tacl good_service_net src 10.0.1.0/255.255.255.0\n#\ttcp_outgoing_tos 0x00 normal_service_net\n#\ttcp_outgoing_tos 0x20 good_service_net\n#\n#\tTOS/DSCP values really only have local significance - so you should\n#\tknow what you're specifying. For more information, see RFC2474 and\n#\tRFC3260.\n#\n#\tThe TOS/DSCP byte must be exactly that - a octet value  0 - 255, or\n#\t\"default\" to use whatever default your host has. Note that in\n#\tpractice often only values 0 - 63 is usable as the two highest bits\n#\thave been redefined for use by ECN (RFC3168).\n#\n#\tProcessing proceeds in the order specified, and stops at first fully\n#\tmatching line.\n#\n#\tNote: The use of this directive using client dependent ACLs is\n#\tincompatible with the use of server side persistent connections. To\n#\tensure correct results it is best to set server_persisten_connections\n#\tto off when using this directive in such configurations.\n#\n#Default:\n# none\n\n#  TAG: tcp_outgoing_address\n#\tAllows you to map requests to different outgoing IP addresses\n#\tbased on the username or source address of the user making\n#\tthe request.\n#\n#\ttcp_outgoing_address ipaddr [[!]aclname] ...\n#\n#\tExample where requests from 10.0.0.0/24 will be forwarded\n#\twith source address 10.1.0.1, 10.0.2.0/24 forwarded with\n#\tsource address 10.1.0.2 and the rest will be forwarded with\n#\tsource address 10.1.0.3.\n#\n#\tacl normal_service_net src 10.0.0.0/24\n#\tacl good_service_net src 10.0.1.0/24 10.0.2.0/24\n#\ttcp_outgoing_address 10.1.0.1 normal_service_net\n#\ttcp_outgoing_address 10.1.0.2 good_service_net\n#\ttcp_outgoing_address 10.1.0.3\n#\n#\tProcessing proceeds in the order specified, and stops at first fully\n#\tmatching line.\n#\n#\tNote: The use of this directive using client dependent ACLs is\n#\tincompatible with the use of server side persistent connections. To\n#\tensure correct results it is best to set server_persistent_connections\n#\tto off when using this directive in such configurations.\n#\n#Default:\n# none\n\n#  TAG: zph_mode\n#\tThis option enables packet level marking of HIT/MISS responses,\n#\teither using IP TOS or socket priority.\n#\t    off\t\tFeature disabled\n#\t    tos\t\tSet the IP TOS/Diffserv field\n#\t    priority\tSet the socket priority (may get mapped to TOS by OS,\n#\t\t\totherwise only usable in local rulesets)\n#\t    option\tEmbed the mark in an IP option field. See also\n#\t    \t\tzph_option.\n#\n#\tSee also tcp_outgoing_tos for details/requirements about TOS usage.\n#\n#Default:\n# zph_mode off\n\n#  TAG: zph_local\n#\tAllows you to select a TOS/Diffserv/Priority value to mark local hits.\n#\tDefault: 0 (disabled).\n#\n#Default:\n# zph_local 0\n\n#  TAG: zph_sibling\n#\tAllows you to select a TOS/Diffserv/Priority value to mark sibling hits.\n#\tDefault: 0 (disabled).\n#\n#Default:\n# zph_sibling 0\n\n#  TAG: zph_parent\n#\tAllows you to select a TOS/Diffserv/Priority value to mark parent hits. \n#\tDefault: 0 (disabled).\n#\n#Default:\n# zph_parent 0\n\n#  TAG: zph_option\n#\tThe IP option to use when zph_mode is set to \"option\". Defaults to\n#\t136 which is officially registered as \"SATNET Stream ID\".\n#\n#Default:\n# zph_option 136\n\n\n# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_peer\n#\tTo specify other caches in a hierarchy, use the format:\n#\n#\t\tcache_peer hostname type http-port icp-port [options]\n#\n#\tFor example,\n#\n#\t#                                        proxy  icp\n#\t#          hostname             type     port   port  options\n#\t#          -------------------- -------- ----- -----  -----------\n#\tcache_peer parent.foo.net       parent    3128  3130  proxy-only default\n#\tcache_peer sib1.foo.net         sibling   3128  3130  proxy-only\n#\tcache_peer sib2.foo.net         sibling   3128  3130  proxy-only\n#\n#\t      type:  either 'parent', 'sibling', or 'multicast'.\n#\n#\tproxy-port:  The port number where the cache listens for proxy\n#\t\t     requests.\n#\n#\t  icp-port:  Used for querying neighbor caches about\n#\t\t     objects.  To have a non-ICP neighbor\n#\t\t     specify '7' for the ICP port and make sure the\n#\t\t     neighbor machine has the UDP echo port\n#\t\t     enabled in its /etc/inetd.conf file.\n#\t\tNOTE: Also requires icp_port option enabled to send/receive\n#\t\t      requests via this method.\n#\n#\t    options: proxy-only\n#\t\t     weight=n\n#\t\t     ttl=n\n#\t\t     no-query\n#\t\t     default\n#\t\t     round-robin\n#\t\t     carp\n#\t\t     multicast-responder\n#\t\t     multicast-siblings\n#\t\t     closest-only\n#\t\t     no-digest\n#\t\t     no-netdb-exchange\n#\t\t     no-delay\n#\t\t     login=user:password | PASS | *:password\n#\t\t     connect-timeout=nn\n#\t\t     digest-url=url\n#\t\t     allow-miss\n#\t\t     max-conn=n\n#\t\t     htcp\n#\t\t     htcp-oldsquid\n#\t\t     originserver\n#\t\t     userhash\n#\t\t     sourcehash\n#\t\t     name=xxx\n#\t\t     monitorurl=url\n#\t\t     monitorsize=sizespec\n#\t\t     monitorinterval=seconds\n#\t\t     monitortimeout=seconds\n#\t\t     forceddomain=name\n#\t\t     ssl\n#\t\t     sslcert=/path/to/ssl/certificate\n#\t\t     sslkey=/path/to/ssl/key\n#\t\t     sslversion=1|2|3|4\n#\t\t     sslcipher=...\n#\t\t     ssloptions=...\n#\t\t     front-end-https[=on|auto]\n#\t\t     connection-auth[=on|off|auto]\n#\t\t     idle=n\n#\t\t     http11\n#\n#\t\t     use 'proxy-only' to specify objects fetched\n#\t\t     from this cache should not be saved locally.\n#\n#\t\t     use 'weight=n' to affect the selection of a peer\n#\t\t     during any weighted peer-selection mechanisms.\n#\t\t     The weight must be an integer; default is 1,\n#\t\t     larger weights are favored more.\n#\t\t     This option does not affect parent selection if a peering\n#\t\t     protocol is not in use.\n#\n#\t\t     use 'ttl=n' to specify a IP multicast TTL to use\n#\t\t     when sending an ICP queries to this address.\n#\t\t     Only useful when sending to a multicast group.\n#\t\t     Because we don't accept ICP replies from random\n#\t\t     hosts, you must configure other group members as\n#\t\t     peers with the 'multicast-responder' option below.\n#\n#\t\t     use 'no-query' to NOT send ICP queries to this\n#\t\t     neighbor.\n#\n#\t\t     use 'default' if this is a parent cache which can\n#\t\t     be used as a \"last-resort\" if a peer cannot be located\n#\t\t     by any of the peer-selection mechanisms.\n#\t\t     If specified more than once, only the first is used.\n#\n#\t\t     use 'round-robin' to define a set of parents which\n#\t\t     should be used in a round-robin fashion in the\n#\t\t     absence of any ICP queries.\n#\n#\t\t     use 'carp' to define a set of parents which should\n#\t\t     be used as a CARP array. The requests will be\n#\t\t     distributed among the parents based on the CARP load\n#\t\t     balancing hash function based on their weight.\n#\n#\t\t     'multicast-responder' indicates the named peer\n#\t\t     is a member of a multicast group.  ICP queries will\n#\t\t     not be sent directly to the peer, but ICP replies\n#\t\t     will be accepted from it.\n#\n#\t\t     the 'multicast-siblings' option is meant to be used\n#\t\t     only for cache peers of type \"multicast\". It instructs\n#\t\t     Squid that ALL members of this multicast group have\n#\t\t     \"sibling\" relationship with it, not \"parent\".  This is\n#\t\t     an optimization that avoids useless multicast queries\n#\t\t     to a multicast group when the requested object would\n#\t\t     be fetched only from a \"parent\" cache, anyway.  It's\n#\t\t     useful, e.g., when configuring a pool of redundant\n#\t\t     Squid proxies, being members of the same\n#\t\t     multicast group.\n#\n#\t\t     'closest-only' indicates that, for ICP_OP_MISS\n#\t\t     replies, we'll only forward CLOSEST_PARENT_MISSes\n#\t\t     and never FIRST_PARENT_MISSes.\n#\n#\t\t     use 'no-digest' to NOT request cache digests from\n#\t\t     this neighbor.\n#\n#\t\t     'no-netdb-exchange' disables requesting ICMP\n#\t\t     RTT database (NetDB) from the neighbor.\n#\n#\t\t     use 'no-delay' to prevent access to this neighbor\n#\t\t     from influencing the delay pools.\n#\n#\t\t     use 'login=user:password' if this is a personal/workgroup\n#\t\t     proxy and your parent requires proxy authentication.\n#\t\t     Note: The string can include URL escapes (i.e. %20 for\n#\t\t     spaces). This also means % must be written as %%.\n#\n#\t\t     use 'login=PASS' if users must authenticate against\n#\t\t     the upstream proxy or in the case of a reverse proxy\n#\t\t     configuration, the origin web server.  This will pass\n#\t\t     the users credentials as they are to the peer.\n#\t\t     Note: To combine this with local authentication the Basic\n#\t\t     authentication scheme must be used, and both servers must\n#\t\t     share the same user database as HTTP only allows for\n#\t\t     a single login (one for proxy, one for origin server).\n#\t\t     Also be warned this will expose your users proxy\n#\t\t     password to the peer. USE WITH CAUTION\n#\n#\t\t     use 'login=*:password' to pass the username to the\n#\t\t     upstream cache, but with a fixed password. This is meant\n#\t\t     to be used when the peer is in another administrative\n#\t\t     domain, but it is still needed to identify each user.\n#\t\t     The star can optionally be followed by some extra\n#\t\t     information which is added to the username. This can\n#\t\t     be used to identify this proxy to the peer, similar to\n#\t\t     the login=username:password option above.\n#\n#\t\t     use 'connect-timeout=nn' to specify a peer\n#\t\t     specific connect timeout (also see the\n#\t\t     peer_connect_timeout directive)\n#\n#\t\t     use 'digest-url=url' to tell Squid to fetch the cache\n#\t\t     digest (if digests are enabled) for this host from\n#\t\t     the specified URL rather than the Squid default\n#\t\t     location.\n#\n#\t\t     use 'allow-miss' to disable Squid's use of only-if-cached\n#\t\t     when forwarding requests to siblings. This is primarily\n#\t\t     useful when icp_hit_stale is used by the sibling. To\n#\t\t     extensive use of this option may result in forwarding\n#\t\t     loops, and you should avoid having two-way peerings\n#\t\t     with this option. (for example to deny peer usage on\n#\t\t     requests from peer by denying cache_peer_access if the\n#\t\t     source is a peer)\n#\n#\t\t     use 'max-conn=n' to limit the amount of connections Squid\n#\t\t     may open to this peer.\n#\n#\t\t     use 'htcp' to send HTCP, instead of ICP, queries\n#\t\t     to the neighbor.  You probably also want to\n#\t\t     set the \"icp port\" to 4827 instead of 3130.\n#\t\t     You must also allow this Squid htcp_access and\n#\t\t     http_access in the peer Squid configuration.\n#\n#\t\t     use 'htcp-oldsquid' to send HTCP to old Squid versions\n#\t\t     You must also allow this Squid htcp_access and\n#\t\t     http_access in the peer Squid configuration.\n#\n#\t\t     'originserver' causes this parent peer to be contacted as\n#\t\t     a origin server. Meant to be used in accelerator setups.\n#\n#\t\t     use 'userhash' to load-balance amongst a set of parents\n#\t\t     based on the client proxy_auth or ident username.\n#\n#\t\t     use 'sourcehash' to load-balance amongst a set of parents\n#\t\t     based on the client source ip.\n#\n#\t\t     use 'name=xxx' if you have multiple peers on the same\n#\t\t     host but different ports. This name can be used to\n#\t\t     differentiate the peers in cache_peer_access and similar\n#\t\t     directives.\n#\n#\t\t     use 'monitorurl=url' to have periodically request a given\n#\t\t     URL from the peer, and only consider the peer as alive\n#\t\t     if this monitoring is successful (default none)\n#\n#\t\t     use 'monitorsize=min[-max]' to limit the size range of\n#\t\t     'monitorurl' replies considered valid. Defaults to 0 to\n#\t\t     accept any size replies as valid.\n#\n#\t\t     use 'monitorinterval=seconds' to change frequency of\n#\t\t     how often the peer is monitored with 'monitorurl'\n#\t\t     (default 300 for a 5 minute interval). If set to 0\n#\t\t     then monitoring is disabled even if a URL is defined.\n#\n#\t\t     use 'monitortimeout=seconds' to change the timeout of\n#\t\t     'monitorurl'. Defaults to 'monitorinterval'.\n#\n#\t\t     use 'forceddomain=name' to forcibly set the Host header\n#\t\t     of requests forwarded to this peer. Useful in accelerator\n#\t\t     setups where the server (peer) expects a certain domain\n#\t\t     name and using redirectors to feed this domain name\n#\t\t     is not feasible.\n#\n#\t\t     use 'ssl' to indicate connections to this peer should\n#\t\t     be SSL/TLS encrypted.\n#\n#\t\t     use 'sslcert=/path/to/ssl/certificate' to specify a client\n#\t\t     SSL certificate to use when connecting to this peer.\n#\n#\t\t     use 'sslkey=/path/to/ssl/key' to specify the private SSL\n#\t\t     key corresponding to sslcert above. If 'sslkey' is not\n#\t\t     specified 'sslcert' is assumed to reference a\n#\t\t     combined file containing both the certificate and the key.\n#\n#\t\t     use sslversion=1|2|3|4 to specify the SSL version to use\n#\t\t     when connecting to this peer\n#\t\t\t1 = automatic (default)\n#\t\t\t2 = SSL v2 only\n#\t\t\t3 = SSL v3 only\n#\t\t\t4 = TLS v1 only\n#\n#\t\t     use sslcipher=... to specify the list of valid SSL ciphers\n#\t\t     to use when connecting to this peer.\n#\n#\t\t     use ssloptions=... to specify various SSL engine options:\n#\t\t\tNO_SSLv2  Disallow the use of SSLv2\n#\t\t\tNO_SSLv3  Disallow the use of SSLv3\n#\t\t\tNO_TLSv1  Disallow the use of TLSv1\n#\t\t     See src/ssl_support.c or the OpenSSL documentation for\n#\t\t     a more complete list.\n#\n#\t\t     use sslcafile=... to specify a file containing\n#\t\t     additional CA certificates to use when verifying the\n#\t\t     peer certificate.\n#\n#\t\t     use sslcapath=... to specify a directory containing\n#\t\t     additional CA certificates to use when verifying the\n#\t\t     peer certificate.\n#\n#\t\t     use sslcrlfile=... to specify a certificate revocation\n#\t\t     list file to use when verifying the peer certificate.\n#\n#\t\t     use sslflags=... to specify various flags modifying the\n#\t\t     SSL implementation:\n#\t\t\tDONT_VERIFY_PEER\n#\t\t\t\tAccept certificates even if they fail to\n#\t\t\t\tverify.\n#\t\t\tNO_DEFAULT_CA\n#\t\t\t\tDon't use the default CA list built in\n#\t\t\t\tto OpenSSL.\n#\n#\t\t     use ssldomain= to specify the peer name as advertised\n#\t\t     in it's certificate. Used for verifying the correctness\n#\t\t     of the received peer certificate. If not specified the\n#\t\t     peer hostname will be used.\n#\n#\t\t     use front-end-https to enable the \"Front-End-Https: On\"\n#\t\t     header needed when using Squid as a SSL frontend in front\n#\t\t     of Microsoft OWA. See MS KB document Q307347 for details\n#\t\t     on this header. If set to auto the header will\n#\t\t     only be added if the request is forwarded as a https://\n#\t\t     URL.\n#\n#\t\t     use connection-auth=off to tell Squid that this peer does\n#\t\t     not support Microsoft connection oriented authentication,\n#\t\t     and any such challenges received from there should be\n#\t\t     ignored. Default is auto to automatically determine the\n#\t\t     status of the peer.\n#\n#\t\t     use idle=n to specify a minimum number of idle connections\n#\t\t     that should be kept open to this peer.\n#\n#\t\t     use http11 to send requests using HTTP/1.1 to this peer.\n#\t\t     Note: The HTTP/1.1 support is still incomplete, with an\n#\t\t     internal HTTP/1.0 hop. As result 1xx responses will not\n#\t\t     be forwarded.\n#\n#Default:\n# none\n\n# See http://www.privoxy.org/user-manual/config.html\n# Define Privoxy as parent proxy (without ICP) \ncache_peer 127.0.0.1 parent 8118 0 no-digest no-query default name=privoxy\n\n# Use LAN IP if Privoxy configured to listen on LAN\n#cache_peer 10.0.1.3 parent 8118 0 no-digest no-query default name=privoxy\n\n\n#  TAG: cache_peer_domain\n#\tUse to limit the domains for which a neighbor cache will be\n#\tqueried.  Usage:\n#\n#\tcache_peer_domain cache-host domain [domain ...]\n#\tcache_peer_domain cache-host !domain\n#\n#\tFor example, specifying\n#\n#\t\tcache_peer_domain parent.foo.net\t.edu\n#\n#\thas the effect such that UDP query packets are sent to\n#\t'bigserver' only when the requested object exists on a\n#\tserver in the .edu domain.  Prefixing the domain name\n#\twith '!' means the cache will be queried for objects\n#\tNOT in that domain.\n#\n#\tNOTE:\t* Any number of domains may be given for a cache-host,\n#\t\t  either on the same or separate lines.\n#\t\t* When multiple domains are given for a particular\n#\t\t  cache-host, the first matched domain is applied.\n#\t\t* Cache hosts with no domain restrictions are queried\n#\t\t  for all requests.\n#\t\t* There are no defaults.\n#\t\t* There is also a 'cache_peer_access' tag in the ACL\n#\t\t  section.\n#\n#Default:\n# none\n\n#  TAG: cache_peer_access\n#\tSimilar to 'cache_peer_domain' but provides more flexibility by\n#\tusing ACL elements.\n#\n#\tcache_peer_access cache-host allow|deny [!]aclname ...\n#\n#\tThe syntax is identical to 'http_access' and the other lists of\n#\tACL elements.  See the comments for 'http_access' below, or\n#\tthe Squid FAQ (http://www.squid-cache.org/FAQ/FAQ-10.html).\n#\n#Default:\n# none\n\n#  TAG: neighbor_type_domain\n#\tusage: neighbor_type_domain neighbor parent|sibling domain domain ...\n#\n#\tModifying the neighbor type for specific domains is now\n#\tpossible.  You can treat some domains differently than the the\n#\tdefault neighbor type specified on the 'cache_peer' line.\n#\tNormally it should only be necessary to list domains which\n#\tshould be treated differently because the default neighbor type\n#\tapplies for hostnames which do not match domains listed here.\n#\n#EXAMPLE:\n#\tcache_peer cache.foo.org parent 3128 3130\n#\tneighbor_type_domain cache.foo.org sibling .com .net\n#\tneighbor_type_domain cache.foo.org sibling .au .de\n#\n#Default:\n# none\n\n#  TAG: dead_peer_timeout\t(seconds)\n#\tThis controls how long Squid waits to declare a peer cache\n#\tas \"dead.\"  If there are no ICP replies received in this\n#\tamount of time, Squid will declare the peer dead and not\n#\texpect to receive any further ICP replies.  However, it\n#\tcontinues to send ICP queries, and will mark the peer as\n#\talive upon receipt of the first subsequent ICP reply.\n#\n#\tThis timeout also affects when Squid expects to receive ICP\n#\treplies from peers.  If more than 'dead_peer' seconds have\n#\tpassed since the last ICP reply was received, Squid will not\n#\texpect to receive an ICP reply on the next query.  Thus, if\n#\tyour time between requests is greater than this timeout, you\n#\twill see a lot of requests sent DIRECT to origin servers\n#\tinstead of to your parents.\n#\n#Default:\n# dead_peer_timeout 10 seconds\n\n#  TAG: hierarchy_stoplist\n#\tA list of words which, if found in a URL, cause the object to\n#\tbe handled directly by this cache.  In other words, use this\n#\tto not query neighbor caches for certain objects.  You may\n#\tlist this option multiple times. Note: never_direct overrides\n#\tthis option.\n#We recommend you to use at least the following line.\nhierarchy_stoplist cgi-bin ?\n\n\n# MEMORY CACHE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_mem\t(bytes)\n#\tNOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE.\n#\tIT ONLY PLACES A LIMIT ON HOW MUCH ADDITIONAL MEMORY SQUID WILL\n#\tUSE AS A MEMORY CACHE OF OBJECTS. SQUID USES MEMORY FOR OTHER\n#\tTHINGS AS WELL. SEE THE SQUID FAQ SECTION 8 FOR DETAILS.\n#\n#\t'cache_mem' specifies the ideal amount of memory to be used\n#\tfor:\n#\t\t* In-Transit objects\n#\t\t* Hot Objects\n#\t\t* Negative-Cached objects\n#\n#\tData for these objects are stored in 4 KB blocks.  This\n#\tparameter specifies the ideal upper limit on the total size of\n#\t4 KB blocks allocated.  In-Transit objects take the highest\n#\tpriority.\n#\n#\tIn-transit objects have priority over the others.  When\n#\tadditional space is needed for incoming data, negative-cached\n#\tand hot objects will be released.  In other words, the\n#\tnegative-cached and hot objects will fill up any unused space\n#\tnot needed for in-transit objects.\n#\n#\tIf circumstances require, this limit will be exceeded.\n#\tSpecifically, if your incoming request rate requires more than\n#\t'cache_mem' of memory to hold in-transit objects, Squid will\n#\texceed this limit to satisfy the new requests.  When the load\n#\tdecreases, blocks will be freed until the high-water mark is\n#\treached.  Thereafter, blocks will be used to store hot\n#\tobjects.\n#\n#Default:\n# cache_mem 8 MB\ncache_mem 32 MB\n\n#  TAG: maximum_object_size_in_memory\t(bytes)\n#\tObjects greater than this size will not be attempted to kept in\n#\tthe memory cache. This should be set high enough to keep objects\n#\taccessed frequently in memory to improve performance whilst low\n#\tenough to keep larger objects from hoarding cache_mem.\n#\n#Default:\n# maximum_object_size_in_memory 8 KB\n\n#  TAG: memory_replacement_policy\n#\tThe memory replacement policy parameter determines which\n#\tobjects are purged from memory when memory space is needed.\n#\n#\tSee cache_replacement_policy for details.\n#\n#Default:\n# memory_replacement_policy lru\n\n\n# DISK CACHE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_replacement_policy\n#\tThe cache replacement policy parameter determines which\n#\tobjects are evicted (replaced) when disk space is needed.\n#\n#\t    lru       : Squid's original list based LRU policy\n#\t    heap GDSF : Greedy-Dual Size Frequency\n#\t    heap LFUDA: Least Frequently Used with Dynamic Aging\n#\t    heap LRU  : LRU policy implemented using a heap\n#\n#\tApplies to any cache_dir lines listed below this.\n#\n#\tThe LRU policies keeps recently referenced objects.\n#\n#\tThe heap GDSF policy optimizes object hit rate by keeping smaller\n#\tpopular objects in cache so it has a better chance of getting a\n#\thit.  It achieves a lower byte hit rate than LFUDA though since\n#\tit evicts larger (possibly popular) objects.\n#\n#\tThe heap LFUDA policy keeps popular objects in cache regardless of\n#\ttheir size and thus optimizes byte hit rate at the expense of\n#\thit rate since one large, popular object will prevent many\n#\tsmaller, slightly less popular objects from being cached.\n#\n#\tBoth policies utilize a dynamic aging mechanism that prevents\n#\tcache pollution that can otherwise occur with frequency-based\n#\treplacement policies.\n#\n#\tNOTE: if using the LFUDA replacement policy you should increase\n#\tthe value of maximum_object_size above its default of 4096 KB to\n#\tto maximize the potential byte hit rate improvement of LFUDA.\n#\n#\tFor more information about the GDSF and LFUDA cache replacement\n#\tpolicies see http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html\n#\tand http://fog.hpl.external.hp.com/techreports/98/HPL-98-173.html.\n#\n#Default:\n# cache_replacement_policy lru\n\n#  TAG: cache_dir\n#\tUsage:\n#\n#\tcache_dir Type Directory-Name Fs-specific-data [options]\n#\n#\tYou can specify multiple cache_dir lines to spread the\n#\tcache among different disk partitions.\n#\n#\tType specifies the kind of storage system to use. Only \"ufs\"\n#\tis built by default. To enable any of the other storage systems\n#\tsee the --enable-storeio configure option.\n#\n#\t'Directory' is a top-level directory where cache swap\n#\tfiles will be stored. If you want to use an entire disk\n#\tfor caching, this can be the mount-point directory.\n#\tThe directory must exist and be writable by the Squid\n#\tprocess. Squid will NOT create this directory for you.\n#\tOnly using COSS, a raw disk device or a stripe file can\n#\tbe specified, but the configuration of the \"cache_swap_log\"\n#\ttag is mandatory.\n#\n#\tThe ufs store type:\n#\n#\t\"ufs\" is the old well-known Squid storage format that has always\n#\tbeen there.\n#\n#\tcache_dir ufs Directory-Name Mbytes L1 L2 [options]\n#\n#\t'Mbytes' is the amount of disk space (MB) to use under this\n#\tdirectory.  The default is 100 MB.  Change this to suit your\n#\tconfiguration.  Do NOT put the size of your disk drive here.\n#\tInstead, if you want Squid to use the entire disk drive,\n#\tsubtract 20% and use that value.\n#\n#\t'Level-1' is the number of first-level subdirectories which\n#\twill be created under the 'Directory'.  The default is 16.\n#\n#\t'Level-2' is the number of second-level subdirectories which\n#\twill be created under each first-level directory.  The default\n#\tis 256.\n#\n#\tThe aufs store type:\n#\n#\t\"aufs\" uses the same storage format as \"ufs\", utilizing\n#\tPOSIX-threads to avoid blocking the main Squid process on\n#\tdisk-I/O. This was formerly known in Squid as async-io.\n#\n#\tcache_dir aufs Directory-Name Mbytes L1 L2 [options]\n#\n#\tsee argument descriptions under ufs above\n#\n#\tThe diskd store type:\n#\n#\t\"diskd\" uses the same storage format as \"ufs\", utilizing a\n#\tseparate process to avoid blocking the main Squid process on\n#\tdisk-I/O.\n#\n#\tcache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]\n#\n#\tsee argument descriptions under ufs above\n#\n#\tQ1 specifies the number of unacknowledged I/O requests when Squid\n#\tstops opening new files. If this many messages are in the queues,\n#\tSquid won't open new files. Default is 64\n#\n#\tQ2 specifies the number of unacknowledged messages when Squid\n#\tstarts blocking.  If this many messages are in the queues,\n#\tSquid blocks until it receives some replies. Default is 72\n#\n#\tWhen Q1 < Q2 (the default), the cache directory is optimized\n#\tfor lower response time at the expense of a decrease in hit\n#\tratio.  If Q1 > Q2, the cache directory is optimized for\n#\thigher hit ratio at the expense of an increase in response\n#\ttime.\n#\n#\tThe coss store type:\n#\n#\tblock-size=n defines the \"block size\" for COSS cache_dir's.\n#\tSquid uses file numbers as block numbers.  Since file numbers\n#\tare limited to 24 bits, the block size determines the maximum\n#\tsize of the COSS partition.  The default is 512 bytes, which\n#\tleads to a maximum cache_dir size of 512<<24, or 8 GB.  Note\n#\tyou should not change the COSS block size after Squid\n#\thas written some objects to the cache_dir.\n#\n#\toverwrite-percent=n defines the percentage of disk that COSS\n#\tmust write to before a given object will be moved to the\n#\tcurrent stripe.  A value of \"n\" closer to 100 will cause COSS\n#\tto waste less disk space by having multiple copies of an object\n#\ton disk, but will increase the chances of overwriting a popular\n#\tobject as COSS overwrites stripes.  A value of \"n\" close to 0\n#\twill cause COSS to keep all current objects in the current COSS\n#\tstripe at the expense of the hit rate.  The default value of 50\n#\twill allow any given object to be stored on disk a maximum of\n#\t2 times.\n#\n#\tmax-stripe-waste=n defines the maximum amount of space that COSS\n#\twill waste in a given stripe (in bytes).  When COSS writes data\n#\tto disk, it will potentially waste up to \"max-size\" worth of disk\n#\tspace for each 1MB of data written.  If \"max-size\" is set to a\n#\tlarge value (ie >256k), this could potentially result in large\n#\tamounts of wasted disk space. Setting this value to a lower value\n#\t(ie 64k or 32k) will result in a COSS disk refusing to cache\n#\tlarger objects until the COSS stripe has been filled to within\n#\t\"max-stripe-waste\" of the maximum size (1MB).\n#\n#\tmembufs=n defines the number of \"memory-only\" stripes that COSS\n#\twill use.  When an cache hit is performed on a COSS stripe before\n#\tCOSS has reached the overwrite-percent value for that object,\n#\tCOSS will use a series of memory buffers to hold the object in\n#\twhile the data is sent to the client.  This will define the maximum\n#\tnumber of memory-only buffers that COSS will use.  The default value\n#\tis 10, which will use a maximum of 10MB of memory for buffers.\n#\n#\tmaxfullbufs=n defines the maximum number of stripes a COSS partition\n#\twill have in memory waiting to be freed (either because the disk is\n#\tunder load and the stripe is unwritten, or because clients are still\n#\ttransferring data from objects using the memory).  In order to try\n#\tand maintain a good hit rate under load, COSS will reserve the last\n#\t2 full stripes for object hits. (ie a COSS cache_dir will reject\n#\tnew objects when the number of full stripes is 2 less than maxfullbufs)\n#\n#\tThe null store type:\n#\n#\tno options are allowed or required\n#\n#\tCommon options:\n#\n#\tno-store, no new objects should be stored to this cache_dir\n#\n#\tmin-size=n, refers to the min object size this storedir will accept.\n#\tIt's used to restrict a storedir to only store large objects\n#\t(e.g. aufs) while other storedirs are optimized for smaller objects\n#\t(e.g. COSS). Defaults to 0.\n#\n#\tmax-size=n, refers to the max object size this storedir supports.\n#\tIt is used to initially choose the storedir to dump the object.\n#\tNote: To make optimal use of the max-size limits you should order\n#\tthe cache_dir lines with the smallest max-size value first and the\n#\tones with no max-size specification last.\n#\n#\tNote that for coss, max-size must be less than COSS_MEMBUF_SZ\n#\t(hard coded at 1 MB).\n#\n#Default:\n# cache_dir ufs /opt/local/var/squid/cache 100 16 256\n\n#  TAG: store_dir_select_algorithm\n#\tSet this to 'round-robin' as an alternative.\n#\n#Default:\n# store_dir_select_algorithm least-load\n\n#  TAG: max_open_disk_fds\n#\tTo avoid having disk as the I/O bottleneck Squid can optionally\n#\tbypass the on-disk cache if more than this amount of disk file\n#\tdescriptors are open.\n#\n#\tA value of 0 indicates no limit.\n#\n#Default:\n# max_open_disk_fds 0\n\n#  TAG: minimum_object_size\t(bytes)\n#\tObjects smaller than this size will NOT be saved on disk.  The\n#\tvalue is specified in kilobytes, and the default is 0 KB, which\n#\tmeans there is no minimum.\n#\n#Default:\n# minimum_object_size 0 KB\n\n#  TAG: maximum_object_size\t(bytes)\n#\tObjects larger than this size will NOT be saved on disk.  The\n#\tvalue is specified in kilobytes, and the default is 4MB.  If\n#\tyou wish to get a high BYTES hit ratio, you should probably\n#\tincrease this (one 32 MB object hit counts for 3200 10KB\n#\thits).  If you wish to increase speed more than your want to\n#\tsave bandwidth you should leave this low.\n#\n#\tNOTE: if using the LFUDA replacement policy you should increase\n#\tthis value to maximize the byte hit rate improvement of LFUDA!\n#\tSee replacement_policy below for a discussion of this policy.\n#\n#Default:\n# maximum_object_size 4096 KB\n\n#  TAG: cache_swap_low\t(percent, 0-100)\n#  TAG: cache_swap_high\t(percent, 0-100)\n#\n#\tThe low- and high-water marks for cache object replacement.\n#\tReplacement begins when the swap (disk) usage is above the\n#\tlow-water mark and attempts to maintain utilization near the\n#\tlow-water mark.  As swap utilization gets close to high-water\n#\tmark object eviction becomes more aggressive.  If utilization is\n#\tclose to the low-water mark less replacement is done each time.\n#\n#\tDefaults are 90% and 95%. If you have a large cache, 5% could be\n#\thundreds of MB. If this is the case you may wish to set these\n#\tnumbers closer together.\n#\n#Default:\n# cache_swap_low 90\n# cache_swap_high 95\n\n#  TAG: update_headers\ton|off\n#\tBy default Squid updates stored HTTP headers when receiving\n#\ta 304 response. Set this to off if you want to disable this\n#\tfor disk I/O performance reasons. Disabling this VIOLATES the\n#\tHTTP standard, and could make you liable for problems which it\n#\tcauses.\n#\n#Default:\n# update_headers on\n\n\n# LOGFILE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: logformat\n#\tUsage:\n#\n#\tlogformat <name> <format specification>\n#\n#\tDefines an access log format.\n#\n#\tThe <format specification> is a string with embedded % format codes\n#\n#\t% format codes all follow the same basic structure where all but\n#\tthe formatcode is optional. Output strings are automatically escaped\n#\tas required according to their context and the output format\n#\tmodifiers are usually not needed, but can be specified if an explicit\n#\toutput format is desired.\n#\n#\t\t% [\"|[|'|#] [-] [[0]width] [{argument}] formatcode\n#\n#\t\t\"\toutput in quoted string format\n#\t\t[\toutput in squid text log format as used by log_mime_hdrs\n#\t\t#\toutput in URL quoted format\n#\t\t'\toutput as-is\n#\n#\t\t-\tleft aligned\n#\t\twidth\tfield width. If starting with 0 the\n#\t\t\toutput is zero padded\n#\t\t{arg}\targument such as header name etc\n#\n#\tFormat codes:\n#\n#\t\t>a\tClient source IP address\n#\t\t>A\tClient FQDN\n#\t\t>p\tClient source port\n#\t\t<A\tServer IP address or peer name\n#\t\tla\tLocal IP address (http_port)\n#\t\tlp\tLocal port number (http_port)\n#\t\toa\tOur outgoing IP address (tcp_outgoing_address)\n#\t\tts\tSeconds since epoch\n#\t\ttu\tsubsecond time (milliseconds)\n#\t\ttl\tLocal time. Optional strftime format argument\n#\t\t\tdefault %d/%b/%Y:%H:%M:%S %z\n#\t\ttg\tGMT time. Optional strftime format argument\n#\t\t\tdefault %d/%b/%Y:%H:%M:%S %z\n#\t\ttr\tResponse time (milliseconds)\n#\t\t>h\tRequest header. Optional header name argument\n#\t\t\ton the format header[:[separator]element]\n#\t\t<h\tReply header. Optional header name argument\n#\t\t\tas for >h\n#\t\tun\tUser name\n#\t\tul\tUser name from authentication\n#\t\tui\tUser name from ident\n#\t\tus\tUser name from SSL\n#\t\tue\tUser name from external acl helper\n#\t\tHs\tHTTP status code\n#\t\tSs\tSquid request status (TCP_MISS etc)\n#\t\tSh\tSquid hierarchy status (DEFAULT_PARENT etc)\n#\t\tmt\tMIME content type\n#\t\trm\tRequest method (GET/POST etc)\n#\t\tru\tRequest URL\n#\t\trp\tRequest URL-Path excluding hostname\n#\t\trv\tRequest protocol version\n#\t\tea\tLog string returned by external acl\n#\t\t<st\tReply size including HTTP headers\n#\t\t>st\tRequest size including HTTP headers\n#\t\tst\tRequest+Reply size including HTTP headers\n#\t\tsn\tUnique sequence number per log line entry\n#\t\t%\ta literal % character\n#\n#\tThe default formats available (which do not need re-defining) are:\n#\n#logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt\n#logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]\n#logformat common %>a %ui %un [%tl] \"%rm %ru HTTP/%rv\" %Hs %<st %Ss:%Sh\n#logformat combined %>a %ui %un [%tl] \"%rm %ru HTTP/%rv\" %Hs %<st \"%{Referer}>h\" \"%{User-Agent}>h\" %Ss:%Sh\n#\n#Default:\n# none\n\n#  TAG: access_log\n#\tThese files log client request activities. Has a line every HTTP or\n#\tICP request. The format is:\n#\taccess_log <filepath> [<logformat name> [acl acl ...]]\n#\taccess_log none [acl acl ...]]\n#\n#\tWill log to the specified file using the specified format (which\n#\tmust be defined in a logformat directive) those entries which match\n#\tALL the acl's specified (which must be defined in acl clauses).\n#\tIf no acl is specified, all requests will be logged to this file.\n#\n#\tTo disable logging of a request use the filepath \"none\", in which case\n#\ta logformat name should not be specified.\n#\n#\tTo log the request via syslog specify a filepath of \"syslog\":\n#\n#\taccess_log syslog[:facility.priority] [format [acl1 [acl2 ....]]]\n#\twhere facility could be any of:\n#\tauthpriv, daemon, local0 .. local7 or user.\n#\n#\tAnd priority could be any of:\n#\terr, warning, notice, info, debug.\naccess_log /opt/local/var/squid/logs/access.log squid\n\n#  TAG: log_access\tallow|deny acl acl...\n#\tThis options allows you to control which requests gets logged\n#\tto access.log (see access_log directive). Requests denied for\n#\tlogging will also not be accounted for in performance counters.\n#\n#Default:\n# none\n\n#  TAG: logfile_daemon\n#\tSpecify the path to the logfile-writing daemon. This daemon is\n#\tused to write the access and store logs, if configured.\n#\n#Default:\n# logfile_daemon /opt/local/libexec/squid/logfile-daemon\n\n#  TAG: cache_log\n#\tCache logging file. This is where general information about\n#\tyour cache's behavior goes. You can increase the amount of data\n#\tlogged to this file with the \"debug_options\" tag below.\n#\n#Default:\n# cache_log /opt/local/var/squid/logs/cache.log\n\n#  TAG: cache_store_log\n#\tLogs the activities of the storage manager.  Shows which\n#\tobjects are ejected from the cache, and which objects are\n#\tsaved and for how long.  To disable, enter \"none\". There are\n#\tnot really utilities to analyze this data, so you can safely\n#\tdisable it.\n#\n#Default:\n# cache_store_log /opt/local/var/squid/logs/store.log\n\n#  TAG: cache_swap_state\n#\tLocation for the cache \"swap.state\" file. This index file holds\n#\tthe metadata of objects saved on disk.  It is used to rebuild\n#\tthe cache during startup.  Normally this file resides in each\n#\t'cache_dir' directory, but you may specify an alternate\n#\tpathname here.  Note you must give a full filename, not just\n#\ta directory. Since this is the index for the whole object\n#\tlist you CANNOT periodically rotate it!\n#\n#\tIf %s can be used in the file name it will be replaced with a\n#\ta representation of the cache_dir name where each / is replaced\n#\twith '.'. This is needed to allow adding/removing cache_dir\n#\tlines when cache_swap_log is being used.\n#\n#\tIf have more than one 'cache_dir', and %s is not used in the name\n#\tthese swap logs will have names such as:\n#\n#\t\tcache_swap_log.00\n#\t\tcache_swap_log.01\n#\t\tcache_swap_log.02\n#\n#\tThe numbered extension (which is added automatically)\n#\tcorresponds to the order of the 'cache_dir' lines in this\n#\tconfiguration file.  If you change the order of the 'cache_dir'\n#\tlines in this file, these index files will NOT correspond to\n#\tthe correct 'cache_dir' entry (unless you manually rename\n#\tthem).  We recommend you do NOT use this option.  It is\n#\tbetter to keep these index files in each 'cache_dir' directory.\n#\n#Default:\n# none\n\n#  TAG: logfile_rotate\n#\tSpecifies the number of logfile rotations to make when you\n#\ttype 'squid -k rotate'.  The default is 10, which will rotate\n#\twith extensions 0 through 9.  Setting logfile_rotate to 0 will\n#\tdisable the file name rotation, but the logfiles are still closed\n#\tand re-opened.  This will enable you to rename the logfiles\n#\tyourself just before sending the rotate signal.\n#\n#\tNote, the 'squid -k rotate' command normally sends a USR1\n#\tsignal to the running squid process.  In certain situations\n#\t(e.g. on Linux with Async I/O), USR1 is used for other\n#\tpurposes, so -k rotate uses another signal.  It is best to get\n#\tin the habit of using 'squid -k rotate' instead of 'kill -USR1\n#\t<pid>'.\n#\n#Default:\n# logfile_rotate 10\n\n#  TAG: emulate_httpd_log\ton|off\n#\tThe Cache can emulate the log file format which many 'httpd'\n#\tprograms use.  To disable/enable this emulation, set\n#\temulate_httpd_log to 'off' or 'on'.  The default\n#\tis to use the native log format since it includes useful\n#\tinformation Squid-specific log analyzers use.\n#\n#Default:\n# emulate_httpd_log off\n\n#  TAG: log_ip_on_direct\ton|off\n#\tLog the destination IP address in the hierarchy log tag when going\n#\tdirect. Earlier Squid versions logged the hostname here. If you\n#\tprefer the old way set this to off.\n#\n#Default:\n# log_ip_on_direct on\n\n#  TAG: mime_table\n#\tPathname to Squid's MIME table. You shouldn't need to change\n#\tthis, but the default file contains examples and formatting\n#\tinformation if you do.\n#\n#Default:\n# mime_table /opt/local/etc/squid/mime.conf\n\n#  TAG: log_mime_hdrs\ton|off\n#\tThe Cache can record both the request and the response MIME\n#\theaders for each HTTP transaction.  The headers are encoded\n#\tsafely and will appear as two bracketed fields at the end of\n#\tthe access log (for either the native or httpd-emulated log\n#\tformats).  To enable this logging set log_mime_hdrs to 'on'.\n#\n#Default:\n# log_mime_hdrs off\n\n#  TAG: useragent_log\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-useragent-log option\n#\n#\tSquid will write the User-Agent field from HTTP requests\n#\tto the filename specified here.  By default useragent_log\n#\tis disabled.\n#\n#Default:\n# none\n\n#  TAG: referer_log\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-referer-log option\n#\n#\tSquid will write the Referer field from HTTP requests to the\n#\tfilename specified here.  By default referer_log is disabled.\n#\tNote that \"referer\" is actually a misspelling of \"referrer\"\n#\thowever the misspelt version has been accepted into the HTTP RFCs\n#\tand we accept both.\n#\n#Default:\n# none\n\n#  TAG: pid_filename\n#\tA filename to write the process-id to.  To disable, enter \"none\".\n#\n#Default:\n# pid_filename /opt/local/var/run/squid/squid.pid\n\n#  TAG: debug_options\n#\tLogging options are set as section,level where each source file\n#\tis assigned a unique section.  Lower levels result in less\n#\toutput,  Full debugging (level 9) can result in a very large\n#\tlog file, so be careful.  The magic word \"ALL\" sets debugging\n#\tlevels for all sections.  We recommend normally running with\n#\t\"ALL,1\".\n#\n#Default:\n# debug_options ALL,1\n\n#  TAG: log_fqdn\ton|off\n#\tTurn this on if you wish to log fully qualified domain names\n#\tin the access.log. To do this Squid does a DNS lookup of all\n#\tIP's connecting to it. This can (in some situations) increase\n#\tlatency, which makes your cache seem slower for interactive\n#\tbrowsing.\n#\n#Default:\n# log_fqdn off\n\n#  TAG: client_netmask\n#\tA netmask for client addresses in logfiles and cachemgr output.\n#\tChange this to protect the privacy of your cache clients.\n#\tA netmask of 255.255.255.0 will log all IP's in that range with\n#\tthe last digit set to '0'.\n#\n#Default:\n# client_netmask 255.255.255.255\n\n#  TAG: forward_log\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-forward-log option\n#\n#\tLogs the server-side requests.\n#\n#\tThis is currently work in progress.\n#\n#Default:\n# none\n\n#  TAG: strip_query_terms\n#\tBy default, Squid strips query terms from requested URLs before\n#\tlogging.  This protects your user's privacy.\n#\n#Default:\n# strip_query_terms on\n\n#  TAG: buffered_logs\ton|off\n#\tcache.log log file is written with stdio functions, and as such\n#\tit can be buffered or unbuffered. By default it will be unbuffered.\n#\tBuffering it can speed up the writing slightly (though you are\n#\tunlikely to need to worry unless you run with tons of debugging\n#\tenabled in which case performance will suffer badly anyway..).\n#\n#Default:\n# buffered_logs off\n\n#  TAG: netdb_filename\n#\tA filename where Squid stores it's netdb state between restarts.\n#\tTo disable, enter \"none\".\n#\n#Default:\n# netdb_filename /opt/local/var/squid/logs/netdb.state\n\n\n# OPTIONS FOR FTP GATEWAYING\n# -----------------------------------------------------------------------------\n\n#  TAG: ftp_user\n#\tIf you want the anonymous login password to be more informative\n#\t(and enable the use of picky ftp servers), set this to something\n#\treasonable for your domain, like wwwuser@somewhere.net\n#\n#\tThe reason why this is domainless by default is the\n#\trequest can be made on the behalf of a user in any domain,\n#\tdepending on how the cache is used.\n#\tSome ftp server also validate the email address is valid\n#\t(for example perl.com).\n#\n#Default:\n# ftp_user Squid@\n\n#  TAG: ftp_list_width\n#\tSets the width of ftp listings. This should be set to fit in\n#\tthe width of a standard browser. Setting this too small\n#\tcan cut off long filenames when browsing ftp sites.\n#\n#Default:\n# ftp_list_width 32\n\n#  TAG: ftp_passive\n#\tIf your firewall does not allow Squid to use passive\n#\tconnections, turn off this option.\n#\n#Default:\n# ftp_passive on\n\n#  TAG: ftp_sanitycheck\n#\tFor security and data integrity reasons Squid by default performs\n#\tsanity checks of the addresses of FTP data connections ensure the\n#\tdata connection is to the requested server. If you need to allow\n#\tFTP connections to servers using another IP address for the data\n#\tconnection turn this off.\n#\n#Default:\n# ftp_sanitycheck on\n\n#  TAG: ftp_telnet_protocol\n#\tThe FTP protocol is officially defined to use the telnet protocol\n#\tas transport channel for the control connection. However, many\n#\timplementations are broken and does not respect this aspect of\n#\tthe FTP protocol.\n#\n#\tIf you have trouble accessing files with ASCII code 255 in the\n#\tpath or similar problems involving this ASCII code you can\n#\ttry setting this directive to off. If that helps, report to the\n#\toperator of the FTP server in question that their FTP server\n#\tis broken and does not follow the FTP standard.\n#\n#Default:\n# ftp_telnet_protocol on\n\n\n# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS\n# -----------------------------------------------------------------------------\n\n#  TAG: diskd_program\n#\tSpecify the location of the diskd executable.\n#\tNote this is only useful if you have compiled in\n#\tdiskd as one of the store io modules.\n#\n#Default:\n# diskd_program /opt/local/libexec/squid/diskd-daemon\n\n#  TAG: unlinkd_program\n#\tSpecify the location of the executable for file deletion process.\n#\n#Default:\n# unlinkd_program /opt/local/libexec/squid/unlinkd\n\n#  TAG: pinger_program\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-icmp option\n#\n#\tSpecify the location of the executable for the pinger process.\n#\n#Default:\n# pinger_program /opt/local/libexec/squid/pinger\n\n\n# OPTIONS FOR URL REWRITING\n# -----------------------------------------------------------------------------\n\n#  TAG: storeurl_rewrite_program\n#\tSpecify the location of the executable for the Store URL rewriter.\n#\tThe Store URL rewriter allows URLs to be \"normalised\" ; mapping\n#\tmultiple URLs to a single URL representation for cache operations.\n#\n#\tFor example, if you request an object at:\n#\n#\thttp://srv1.example.com/image.gif\n#\n#\tand a subsequent request for:\n#\n#\thttp://srv2.example.com/image.gif\n#\n#\tthen Squid will treat these both as different URLs and cache them\n#\tseperately.\n#\n#\tThis is almost the normal case, but an increasing number of sites\n#\tdistribute the same content between multiple frontend hosts.\n#\tThe Store URL rewriter allows you to rewrite these URLs to one URL\n#\tto use for cache operations, but not -fetches-. Fetches are still\n#\tmade from the original site, but stored with the store URL rewritten\n#\tURL as the store key.\n#\n#\tFor each requested URL rewriter will receive on line with the format\n#\n#\tURL <SP> client_ip \"/\" fqdn <SP> user <SP> method <SP> urlgroup\n#\t [<SP> kvpairs] <NL>\n#\n#\tIn the future, the rewriter interface will be extended with\n#\tkey=value pairs (\"kvpairs\" shown above).  Rewriter programs\n#\tshould be prepared to receive and possibly ignore additional\n#\twhitespace-separated tokens on each input line.\n#\n#\tAnd the rewriter may return a rewritten URL. The other components of\n#\tthe request line does not need to be returned (ignored if they are).\n#\n#\tBy default, a Store URL rewriter is not used.\n#\n#\tPlease note - the normal URL rewriter rewrites Squid's _destination_\n#\tURL - ie, what it fetches. The Store URL rewriter rewrites Squid's\n#\t_store_ URL - ie, what it uses to store and retrieve objects.\n#\n#Default:\n# none\n\n#  TAG: storeurl_rewrite_children\n#\n#\n#Default:\n# storeurl_rewrite_children 5\n\n#  TAG: storeurl_rewrite_concurrency\n#\n#\n#Default:\n# storeurl_rewrite_concurrency 0\n\n#  TAG: url_rewrite_program\n#\tSpecify the location of the executable for the URL rewriter.\n#\tSince they can perform almost any function there isn't one included.\n#\n#\tFor each requested URL rewriter will receive on line with the format\n#\n#\tURL <SP> client_ip \"/\" fqdn <SP> user <SP> method <SP> urlgroup\n#\t [<SP> kvpairs] <NL>\n#\n#\tIn the future, the rewriter interface will be extended with\n#\tkey=value pairs (\"kvpairs\" shown above).  Rewriter programs\n#\tshould be prepared to receive and possibly ignore additional\n#\twhitespace-separated tokens on each input line.\n#\n#\tAnd the rewriter may return a rewritten URL. The other components of\n#\tthe request line does not need to be returned (ignored if they are).\n#\n#\tThe rewriter can also indicate that a client-side redirect should\n#\tbe performed to the new URL. This is done by prefixing the returned\n#\tURL with \"301:\" (moved permanently) or 302: (moved temporarily).\n#\n#\tIt can also return a \"urlgroup\" that can subsequently be matched\n#\tin cache_peer_access and similar ACL driven rules. An urlgroup is\n#\treturned by prefixing the returned URL with \"!urlgroup!\".\n#\n#\tBy default, a URL rewriter is not used.\n#\n#Default:\n# none\n\n#  TAG: url_rewrite_children\n#\tThe number of redirector processes to spawn. If you start\n#\ttoo few Squid will have to wait for them to process a backlog of\n#\tURLs, slowing it down. If you start too many they will use RAM\n#\tand other system resources.\n#\n#Default:\n# url_rewrite_children 5\n\n#  TAG: url_rewrite_concurrency\n#\tThe number of requests each redirector helper can handle in\n#\tparallel. Defaults to 0 which indicates the redirector\n#\tis a old-style single threaded redirector.\n#\n#\tWhen this directive is set to a value >= 1 then the protocol\n#\tused to communicate with the helper is modified to include\n#\ta request ID in front of the request/response. The request\n#\tID from the request must be echoed back with the response\n#\tto that request.\n#\n#Default:\n# url_rewrite_concurrency 0\n\n#  TAG: url_rewrite_host_header\n#\tBy default Squid rewrites any Host: header in redirected\n#\trequests.  If you are running an accelerator this may\n#\tnot be a wanted effect of a redirector.\n#\n#\tWARNING: Entries are cached on the result of the URL rewriting\n#\tprocess, so be careful if you have domain-virtual hosts.\n#\n#Default:\n# url_rewrite_host_header on\n\n#  TAG: url_rewrite_access\n#\tIf defined, this access list specifies which requests are\n#\tsent to the redirector processes.  By default all requests\n#\tare sent.\n#\n#Default:\n# none\n\n#  TAG: storeurl_access\n#\n#\n#Default:\n# none\n\n#  TAG: redirector_bypass\n#\tWhen this is 'on', a request will not go through the\n#\tredirector if all redirectors are busy.  If this is 'off'\n#\tand the redirector queue grows too large, Squid will exit\n#\twith a FATAL error and ask you to increase the number of\n#\tredirectors.  You should only enable this if the redirectors\n#\tare not critical to your caching system.  If you use\n#\tredirectors for access control, and you enable this option,\n#\tusers may have access to pages they should not\n#\tbe allowed to request.\n#\n#Default:\n# redirector_bypass off\n\n#  TAG: location_rewrite_program\n#\tSpecify the location of the executable for the Location rewriter,\n#\tused to rewrite server generated redirects. Usually used in\n#\tconjunction with a url_rewrite_program\n#\n#\tFor each Location header received the location rewriter will receive\n#\tone line with the format:\n#\n#\t   location URL <SP> requested URL <SP> urlgroup <NL>\n#\n#\tAnd the rewriter may return a rewritten Location URL or a blank line.\n#\tThe other components of the request line does not need to be returned\n#\t(ignored if they are).\n#\n#\tBy default, a Location rewriter is not used.\n#\n#Default:\n# none\n\n#  TAG: location_rewrite_children\n#\tThe number of location rewriting processes to spawn. If you start\n#\ttoo few Squid will have to wait for them to process a backlog of\n#\tURLs, slowing it down. If you start too many they will use RAM\n#\tand other system resources.\n#\n#Default:\n# location_rewrite_children 5\n\n#  TAG: location_rewrite_concurrency\n#\tThe number of requests each Location rewriter helper can handle in\n#\tparallel. Defaults to 0 which indicates that the helper\n#\tis a old-style singlethreaded helper.\n#\n#Default:\n# location_rewrite_concurrency 0\n\n#  TAG: location_rewrite_access\n#\tIf defined, this access list specifies which requests are\n#\tsent to the location rewriting processes.  By default all Location\n#\theaders are sent.\n#\n#Default:\n# none\n\n\n# OPTIONS FOR TUNING THE CACHE\n# -----------------------------------------------------------------------------\n\n#  TAG: cache\n#\tA list of ACL elements which, if matched, cause the request to\n#\tnot be satisfied from the cache and the reply to not be cached.\n#\tIn other words, use this to force certain objects to never be cached.\n#\n#\tYou must use the word 'DENY' to indicate the ACL names which should\n#\tNOT be cached.\n#\n#\tDefault is to allow all to be cached.\n#\n#Default:\n# none\n\n#  TAG: max_stale\ttime-units\n#\tThis option puts an upper limit on how stale content Squid\n#\twill serve from the cache if cache validation fails.\n#\n#Default:\n# max_stale 1 week\n\n#  TAG: refresh_pattern\n#\tusage: refresh_pattern [-i] regex min percent max [options]\n#\n#\tBy default, regular expressions are CASE-SENSITIVE.  To make\n#\tthem case-insensitive, use the -i option.\n#\n#\t'Min' is the time (in minutes) an object without an explicit\n#\texpiry time should be considered fresh. The recommended\n#\tvalue is 0, any higher values may cause dynamic applications\n#\tto be erroneously cached unless the application designer\n#\thas taken the appropriate actions.\n#\n#\t'Percent' is a percentage of the objects age (time since last\n#\tmodification age) an object without explicit expiry time\n#\twill be considered fresh.\n#\n#\t'Max' is an upper limit on how long objects without an explicit\n#\texpiry time will be considered fresh.\n#\n#\toptions: override-expire\n#\t\t override-lastmod\n#\t\t reload-into-ims\n#\t\t ignore-reload\n#\t\t ignore-no-cache\n#\t\t ignore-private\n#\t\t ignore-auth\n#\t\t stale-while-revalidate=NN\n#\t\t ignore-stale-while-revalidate\n#\t\t max-stale=NN\n#\t\t negative-ttl=NN\n#\n#\t\toverride-expire enforces min age even if the server\n#\t\tsent an explicit expiry time (e.g., with the\n#\t\tExpires: header or Cache-Control: max-age). Doing this\n#\t\tVIOLATES the HTTP standard.  Enabling this feature\n#\t\tcould make you liable for problems which it causes.\n#\n#\t\tNote: this does not enforce staleness - it only extends\n#\t\tfreshness / min. If the server returns a Expires time which\n#\t\tis longer than your max time, Squid will still consider\n#\t\tthe object fresh for that period of time.\n#\n#\t\toverride-lastmod enforces min age even on objects\n#\t\tthat were modified recently.\n#\n#\t\treload-into-ims changes client no-cache or ``reload''\n#\t\tto If-Modified-Since requests. Doing this VIOLATES the\n#\t\tHTTP standard. Enabling this feature could make you\n#\t\tliable for problems which it causes.\n#\n#\t\tignore-reload ignores a client no-cache or ``reload''\n#\t\theader. Doing this VIOLATES the HTTP standard. Enabling\n#\t\tthis feature could make you liable for problems which\n#\t\tit causes.\n#\n#\t\tignore-no-cache ignores any ``Pragma: no-cache'' and\n#\t\t``Cache-control: no-cache'' headers received from a server.\n#\t\tThe HTTP RFC never allows the use of this (Pragma) header\n#\t\tfrom a server, only a client, though plenty of servers\n#\t\tsend it anyway.\n#\n#\t\tignore-private ignores any ``Cache-control: private''\n#\t\theaders received from a server. Doing this VIOLATES\n#\t\tthe HTTP standard. Enabling this feature could make you\n#\t\tliable for problems which it causes.\n#\n#\t\tignore-auth caches responses to requests with authorization,\n#\t\tas if the originserver had sent ``Cache-control: public''\n#\t\tin the response header. Doing this VIOLATES the HTTP standard.\n#\t\tEnabling this feature could make you liable for problems which\n#\t\tit causes.\n#\n#\t\tstale-while-revalidate=NN makes Squid perform an asyncronous\n#\t\tcache validation if the object isn't more stale than NN.\n#\t\tDoing this VIOLATES the HTTP standard. Enabling this\n#\t\tfeature could make you liable for problems which it\n#\t\tcauses.\n#\n#\t\tignore-stale-while-revalidate makes Squid ignore any 'Cache-Control:\n#\t\tstale-while-revalidate=NN' headers received from a server. Can be\n#\t\tcombined with stale-while-revalidate=NN to override the server provided\n#\t\tvalue.\n#\n#\t\tmax-stale=NN provided a maximum staleness factor. Squid won't\n#\t\tserve objects more stale than this even if it failed to\n#\t\tvalidate the object.\n#\n#\t\tnegative-ttl=NN overrides the global negative_ttl parameter\n#\t\tselectively for URLs matching this pattern (in seconds).\n#\n#\tBasically a cached object is:\n#\n#\t\tFRESH if expires < now, else STALE\n#\t\tSTALE if age > max\n#\t\tFRESH if lm-factor < percent, else STALE\n#\t\tFRESH if age < min\n#\t\telse STALE\n#\n#\tThe refresh_pattern lines are checked in the order listed here.\n#\tThe first entry which matches is used.  If none of the entries\n#\tmatch the default will be used.\n#\n#\tNote, you must uncomment all the default lines if you want\n#\tto change one. The default setting is only active if none is\n#\tused.\n#\n#Suggested default:\nrefresh_pattern ^ftp:\t\t1440\t20%\t10080\nrefresh_pattern ^gopher:\t1440\t0%\t1440\nrefresh_pattern -i (/cgi-bin/|\\?) 0\t0%\t0\nrefresh_pattern .\t\t0\t20%\t4320\n\n#  TAG: quick_abort_min\t(KB)\n#  TAG: quick_abort_max\t(KB)\n#  TAG: quick_abort_pct\t(percent)\n#\tThe cache by default continues downloading aborted requests\n#\twhich are almost completed (less than 16 KB remaining). This\n#\tmay be undesirable on slow (e.g. SLIP) links and/or very busy\n#\tcaches.  Impatient users may tie up file descriptors and\n#\tbandwidth by repeatedly requesting and immediately aborting\n#\tdownloads.\n#\n#\tWhen the user aborts a request, Squid will check the\n#\tquick_abort values to the amount of data transfered until\n#\tthen.\n#\n#\tIf the transfer has less than 'quick_abort_min' KB remaining,\n#\tit will finish the retrieval.\n#\n#\tIf the transfer has more than 'quick_abort_max' KB remaining,\n#\tit will abort the retrieval.\n#\n#\tIf more than 'quick_abort_pct' of the transfer has completed,\n#\tit will finish the retrieval.\n#\n#\tIf you do not want any retrieval to continue after the client\n#\thas aborted, set both 'quick_abort_min' and 'quick_abort_max'\n#\tto '0 KB'.\n#\n#\tIf you want retrievals to always continue if they are being\n#\tcached set 'quick_abort_min' to '-1 KB'.\n#\n#Default:\n# quick_abort_min 16 KB\n# quick_abort_max 16 KB\n# quick_abort_pct 95\n\n#  TAG: read_ahead_gap\tbuffer-size\n#\tThe amount of data the cache will buffer ahead of what has been\n#\tsent to the client when retrieving an object from another server.\n#\n#Default:\n# read_ahead_gap 16 KB\n\n#  TAG: negative_ttl\ttime-units\n#\tTime-to-Live (TTL) for failed requests.  Certain types of\n#\tfailures (such as \"connection refused\" and \"404 Not Found\") are\n#\tnegatively-cached for a configurable amount of time.  The\n#\tdefault is 5 minutes.  Note that this is different from\n#\tnegative caching of DNS lookups.\n#\n#Default:\n# negative_ttl 5 minutes\n\n#  TAG: positive_dns_ttl\ttime-units\n#\tUpper limit on how long Squid will cache positive DNS responses.\n#\tDefault is 6 hours (360 minutes). This directive must be set\n#\tlarger than negative_dns_ttl.\n#\n#Default:\n# positive_dns_ttl 6 hours\n\n#  TAG: negative_dns_ttl\ttime-units\n#\tTime-to-Live (TTL) for negative caching of failed DNS lookups.\n#\tThis also sets the lower cache limit on positive lookups.\n#\tMinimum value is 1 second, and it is not recommendable to go\n#\tmuch below 10 seconds.\n#\n#Default:\n# negative_dns_ttl 1 minute\n\n#  TAG: range_offset_limit\t(bytes)\n#\tSets a upper limit on how far into the the file a Range request\n#\tmay be to cause Squid to prefetch the whole file. If beyond this\n#\tlimit Squid forwards the Range request as it is and the result\n#\tis NOT cached.\n#\n#\tThis is to stop a far ahead range request (lets say start at 17MB)\n#\tfrom making Squid fetch the whole object up to that point before\n#\tsending anything to the client.\n#\n#\tA value of -1 causes Squid to always fetch the object from the\n#\tbeginning so it may cache the result. (2.0 style)\n#\n#\tA value of 0 causes Squid to never fetch more than the\n#\tclient requested. (default)\n#\n#Default:\n# range_offset_limit 0 KB\n\n#  TAG: minimum_expiry_time\t(seconds)\n#\tThe minimum caching time according to (Expires - Date)\n#\tHeaders Squid honors if the object can't be revalidated\n#\tdefaults to 60 seconds. In reverse proxy enorinments it\n#\tmight be desirable to honor shorter object lifetimes. It\n#\tis most likely better to make your server return a\n#\tmeaningful Last-Modified header however.\n#\n#Default:\n# minimum_expiry_time 60 seconds\n\n#  TAG: store_avg_object_size\t(kbytes)\n#\tAverage object size, used to estimate number of objects your\n#\tcache can hold.  The default is 13 KB.\n#\n#Default:\n# store_avg_object_size 13 KB\n\n#  TAG: store_objects_per_bucket\n#\tTarget number of objects per bucket in the store hash table.\n#\tLowering this value increases the total number of buckets and\n#\talso the storage maintenance rate.  The default is 20.\n#\n#Default:\n# store_objects_per_bucket 20\n\n\n# HTTP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: request_header_max_size\t(KB)\n#\tThis specifies the maximum size for HTTP headers in a request.\n#\tRequest headers are usually relatively small (about 512 bytes).\n#\tPlacing a limit on the request header size will catch certain\n#\tbugs (for example with persistent connections) and possibly\n#\tbuffer-overflow or denial-of-service attacks.\n#\n#Default:\n# request_header_max_size 20 KB\n\n#  TAG: reply_header_max_size\t(KB)\n#\tThis specifies the maximum size for HTTP headers in a reply.\n#\tReply headers are usually relatively small (about 512 bytes).\n#\tPlacing a limit on the reply header size will catch certain\n#\tbugs (for example with persistent connections) and possibly\n#\tbuffer-overflow or denial-of-service attacks.\n#\n#Default:\n# reply_header_max_size 20 KB\n\n#  TAG: request_body_max_size\t(KB)\n#\tThis specifies the maximum size for an HTTP request body.\n#\tIn other words, the maximum size of a PUT/POST request.\n#\tA user who attempts to send a request with a body larger\n#\tthan this limit receives an \"Invalid Request\" error message.\n#\tIf you set this parameter to a zero (the default), there will\n#\tbe no limit imposed.\n#\n#Default:\n# request_body_max_size 0 KB\n\n#  TAG: broken_posts\n#\tA list of ACL elements which, if matched, causes Squid to send\n#\tan extra CRLF pair after the body of a PUT/POST request.\n#\n#\tSome HTTP servers has broken implementations of PUT/POST,\n#\tand rely on an extra CRLF pair sent by some WWW clients.\n#\n#\tQuote from RFC2616 section 4.1 on this matter:\n#\n#\t  Note: certain buggy HTTP/1.0 client implementations generate an\n#\t  extra CRLF's after a POST request. To restate what is explicitly\n#\t  forbidden by the BNF, an HTTP/1.1 client must not preface or follow\n#\t  a request with an extra CRLF.\n#\n#Example:\n# acl buggy_server url_regex ^http://....\n# broken_posts allow buggy_server\n#\n#Default:\n# none\n\n#  TAG: upgrade_http0.9\n#\tThis access list controls when HTTP/0.9 responses is upgraded\n#\tto our current HTTP version. The default is to always upgrade.\n#\n#\tSome applications expect to be able to respond with non-HTTP\n#\tresponses and clients gets confused if the response is upgraded.\n#\tFor example SHOUTcast servers used for mp3 streaming.\n#\n#\tTo enable some flexibility in detection of such applications\n#\tthe first line of the response is available in the internal header\n#\tX-HTTP09-First-Line for use in the rep_header acl.\n#\n# Don't upgrade ShoutCast responses to HTTP\nacl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]\nupgrade_http0.9 deny shoutcast\n\n#  TAG: via\ton|off\n#\tIf set (default), Squid will include a Via header in requests and\n#\treplies as required by RFC2616.\n#\n#Default:\n# via on\nvia off\n\n#  TAG: cache_vary\n#\tWhen 'cache_vary' is set to off, response that have a\n#\tVary header will not be stored in the cache.\n#\n#Default:\n# cache_vary on\n\n#  TAG: broken_vary_encoding\n#\tMany servers have broken support for on-the-fly Content-Encoding,\n#\treturning the same ETag on both plain and gzip:ed variants.\n#\tVary replies matching this access list will have the cache split\n#\ton the Accept-Encoding header of the request and not trusting the\n#\tETag to be unique.\n#\n# Apache mod_gzip and mod_deflate known to be broken so don't trust\n# Apache to signal ETag correctly on such responses\nacl apache rep_header Server ^Apache\nbroken_vary_encoding allow apache\n\n#  TAG: collapsed_forwarding\t(on|off)\n#\tThis option enables multiple requests for the same URI to be\n#\tprocessed as one request. Normally disabled to avoid increased\n#\tlatency on dynamic content, but there can be benefit from enabling\n#\tthis in accelerator setups where the web servers are the bottleneck\n#\tand reliable and returns mostly cacheable information.\n#\n#Default:\n# collapsed_forwarding off\n\n#  TAG: refresh_stale_hit\t(time)\n#\tThis option changes the refresh algorithm to allow concurrent\n#\trequests while an object is being refreshed to be processed as\n#\tcache hits if the object expired less than X seconds ago. Default\n#\tis 0 to disable this feature. This option is mostly interesting\n#\tin accelerator setups where a few objects is accessed very\n#\tfrequently.\n#\n#Default:\n# refresh_stale_hit 0 seconds\n\n#  TAG: ie_refresh\ton|off\n#\tMicrosoft Internet Explorer up until version 5.5 Service\n#\tPack 1 has an issue with transparent proxies, wherein it\n#\tis impossible to force a refresh.  Turning this on provides\n#\ta partial fix to the problem, by causing all IMS-REFRESH\n#\trequests from older IE versions to check the origin server\n#\tfor fresh content.  This reduces hit ratio by some amount\n#\t(~10% in my experience), but allows users to actually get\n#\tfresh content when they want it.  Note because Squid\n#\tcannot tell if the user is using 5.5 or 5.5SP1, the behavior\n#\tof 5.5 is unchanged from old versions of Squid (i.e. a\n#\tforced refresh is impossible).  Newer versions of IE will,\n#\thopefully, continue to have the new behavior and will be\n#\thandled based on that assumption.  This option defaults to\n#\tthe old Squid behavior, which is better for hit ratios but\n#\tworse for clients using IE, if they need to be able to\n#\tforce fresh content.\n#\n#Default:\n# ie_refresh off\n\n#  TAG: vary_ignore_expire\ton|off\n#\tMany HTTP servers supporting Vary gives such objects\n#\timmediate expiry time with no cache-control header\n#\twhen requested by a HTTP/1.0 client. This option\n#\tenables Squid to ignore such expiry times until\n#\tHTTP/1.1 is fully implemented.\n#\tWARNING: This may eventually cause some varying\n#\tobjects not intended for caching to get cached.\n#\n#Default:\n# vary_ignore_expire off\n\n#  TAG: extension_methods\n#\tSquid only knows about standardized HTTP request methods.\n#\tYou can add up to 20 additional \"extension\" methods here.\n#\n#Default:\n# none\n\n#  TAG: request_entities\n#\tSquid defaults to deny GET and HEAD requests with request entities,\n#\tas the meaning of such requests are undefined in the HTTP standard\n#\teven if not explicitly forbidden.\n#\n#\tSet this directive to on if you have clients which insists\n#\ton sending request entities in GET or HEAD requests. But be warned\n#\tthat there is server software (both proxies and web servers) which\n#\tcan fail to properly process this kind of request which may make you\n#\tvulnerable to cache pollution attacks if enabled.\n#\n#Default:\n# request_entities off\n\n#  TAG: header_access\n#\tUsage: header_access header_name allow|deny [!]aclname ...\n#\n#\tWARNING: Doing this VIOLATES the HTTP standard.  Enabling\n#\tthis feature could make you liable for problems which it\n#\tcauses.\n#\n#\tThis option replaces the old 'anonymize_headers' and the\n#\tolder 'http_anonymizer' option with something that is much\n#\tmore configurable. This new method creates a list of ACLs\n#\tfor each header, allowing you very fine-tuned header\n#\tmangling.\n#\n#\tYou can only specify known headers for the header name.\n#\tOther headers are reclassified as 'Other'. You can also\n#\trefer to all the headers with 'All'.\n#\n#\tFor example, to achieve the same behavior as the old\n#\t'http_anonymizer standard' option, you should use:\n#\n#\t\theader_access From deny all\n#\t\theader_access Referer deny all\n#\t\theader_access Server deny all\n#\t\theader_access User-Agent deny all\n#\t\theader_access WWW-Authenticate deny all\n#\t\theader_access Link deny all\n#\n#\tOr, to reproduce the old 'http_anonymizer paranoid' feature\n#\tyou should use:\n#\n#\t\theader_access Allow allow all\n#\t\theader_access Authorization allow all\n#\t\theader_access WWW-Authenticate allow all\n#\t\theader_access Proxy-Authorization allow all\n#\t\theader_access Proxy-Authenticate allow all\n#\t\theader_access Cache-Control allow all\n#\t\theader_access Content-Encoding allow all\n#\t\theader_access Content-Length allow all\n#\t\theader_access Content-Type allow all\n#\t\theader_access Date allow all\n#\t\theader_access Expires allow all\n#\t\theader_access Host allow all\n#\t\theader_access If-Modified-Since allow all\n#\t\theader_access Last-Modified allow all\n#\t\theader_access Location allow all\n#\t\theader_access Pragma allow all\n#\t\theader_access Accept allow all\n#\t\theader_access Accept-Charset allow all\n#\t\theader_access Accept-Encoding allow all\n#\t\theader_access Accept-Language allow all\n#\t\theader_access Content-Language allow all\n#\t\theader_access Mime-Version allow all\n#\t\theader_access Retry-After allow all\n#\t\theader_access Title allow all\n#\t\theader_access Connection allow all\n#\t\theader_access Proxy-Connection allow all\n#\t\theader_access All deny all\n#\n#\tBy default, all headers are allowed (no anonymizing is\n#\tperformed).\n#\n#Default:\n# none\n\n# allow localnet headers\nheader_access From allow localnet\nheader_access Server allow localnet\nheader_access Link allow localnet\n\nheader_access Cache-Control allow localnet\nheader_access X-Cache allow localnet \nheader_access X-Cache-Lookup allow localnet\nheader_access Via allow localnet\nheader_access Forwarded-For allow localnet\nheader_access X-Forwarded-For allow localnet\nheader_access Pragma allow localnet\n\n# old 'http_anonymizer standard'\nheader_access From deny all\n\n# allow Privoxy configuration to see the Referer (provides standard interface), block all else\nacl privoxy-config dstdomain config.privoxy.org p.p\nheader_access Referer allow privoxy-config\n# forge Referer in Privoxy\nheader_access Referer deny all\nheader_access Server deny all\n# forge User-Agent beloiw and in Privoxy\n# header_access User-Agent deny all\n# this breaks web authentication -- do not use\n#! header_access WWW-Authenticate deny all\nheader_access Link deny all\n\n# more privacy\nheader_access X-Cache deny all\nheader_access X-Cache-Lookup deny all\nheader_access Via deny all\nheader_access Forwarded-For deny all\nheader_access X-Forwarded-For deny all\nheader_access Pragma deny all\n\n#! These slow down browsing a lot -- do not use\n# header_access Cache-Control deny all\n# header_access Keep-Alive deny all\n\n\n#  TAG: header_replace\n#\tUsage:   header_replace header_name message\n#\tExample: header_replace User-Agent Nutscrape/1.0 (CP/M; 8-bit)\n#\n#\tThis option allows you to change the contents of headers\n#\tdenied with header_access above, by replacing them with\n#\tsome fixed string. This replaces the old fake_user_agent\n#\toption.\n#\n#\tBy default, headers are removed if denied.\n#\n#Default:\n# none\n\nheader_access User-Agent deny all\nheader_replace User-Agent Mozilla/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B141 Safari/8536.25\n\n\n#  TAG: relaxed_header_parser\ton|off|warn\n#\tIn the default \"on\" setting Squid accepts certain forms\n#\tof non-compliant HTTP messages where it is unambiguous\n#\twhat the sending application intended even if the message\n#\tis not correctly formatted. The messages is then normalized\n#\tto the correct form when forwarded by Squid.\n#\n#\tIf set to \"warn\" then a warning will be emitted in cache.log\n#\teach time such HTTP error is encountered.\n#\n#\tIf set to \"off\" then such HTTP errors will cause the request\n#\tor response to be rejected.\n#\n#Default:\n# relaxed_header_parser on\n\n#  TAG: server_http11\ton|off\n#\tThis option enables the use ot HTTP/1.1 on outgoing \"direct\" requests.\n#\tSee also the http11 cache_peer option.\n#\tNote: The HTTP/1.1 support is still incomplete, with an\n#\tinternal HTTP/1.0 hop. As result 1xx responses will not\n#\tbe forwarded.\n#\n#Default:\n# server_http11 off\n\n#  TAG: ignore_expect_100\ton|off\n#\tThis option makes Squid ignore any Expect: 100-continue header present\n#\tin the request.\n#\tNote: Enabling this is a HTTP protocol violation, but some client may\n#\tnot handle it well..\n#\n#Default:\n# ignore_expect_100 off\n\n#  TAG: external_refresh_check\n#\tThis option defines an external helper for determining whether to\n#\trefresh a stale response. It will be called when Squid receives a\n#\trequest for a cached response that is stale; the helper can either\n#\tconfirm that the response is stale with a STALE response, or\n#\textend the freshness of the response (thereby avoiding a refresh\n#\tcheck) with a FRESH response, along with a freshness=nnn keyword.\n#\n#\t  external_refresh_check [options] FORMAT.. /path/to/helper [helper_args]\n#\n#\tIf present, helper_args will be passed to the helper on the command\n#\tline verbatim.\n#\n#\tOptions:\n#\n#\t  children=n\tNumber of processes to spawn to service external\n#\t\t\trefresh checks (default 5).\n#\t  concurrency=n\tConcurrency level per process. Only used with\n#\t\t\thelpers capable of processing more than one query\n#\t\t\tat a time.\n#\n#\tWhen using the concurrency option, the protocol is changed by introducing\n#\ta query channel tag infront of the request/response. The query channel\n#\ttag is a number between 0 and concurrency-1.\n#\n#\tFORMAT specifications:\n#\n#\t  %CACHE_URI\tThe URI of the cached response\n#\t  %RES{Header}\tHTTP response header value\n#\t  %AGE\t\tThe age of the cached response\n#\n#\tThe request sent to the helper consists of the data in the format\n#\tspecification in the order specified.\n#\n#\tThe helper receives lines per the above format specification, and\n#\treturns lines starting with OK or ERR indicating the validity of\n#\tthe request and optionally followed by additional keywords with\n#\tmore details.  URL escaping is used to protect each value in both\n#\trequests and responses.\n#\n#\tGeneral result syntax:\n#\n#\t  FRESH / STALE keyword=value ...\n#\n#\tDefined keywords:\n#\n#\t  freshness=nnn\tThe number of seconds to extend the freshness of\n#\t\t\tthe response by.\n#\t  log=string\tString to be logged in access.log. Available as\n#\t\t\t%ef in logformat specifications.\n#\t  res{Header}=value\n#\t\t\tValue to update response headers with. If already\n#\t\t\tpresent, the supplied value completely replaces\n#\t\t\tthe cached value.\n#\n#\tIn the event of a helper-related error (e.g., overload), Squid\n#\twill always default to STALE.\n#\n#Default:\n# none\n\n\n# TIMEOUTS\n# -----------------------------------------------------------------------------\n\n#  TAG: forward_timeout\ttime-units\n#\tThis parameter specifies how long Squid should at most attempt in\n#\tfinding a forwarding path for the request before giving up.\n#\n#Default:\n# forward_timeout 4 minutes\n\n#  TAG: connect_timeout\ttime-units\n#\tThis parameter specifies how long to wait for the TCP connect to\n#\tthe requested server or peer to complete before Squid should\n#\tattempt to find another path where to forward the request.\n#\n#Default:\n# connect_timeout 1 minute\n\n#  TAG: peer_connect_timeout\ttime-units\n#\tThis parameter specifies how long to wait for a pending TCP\n#\tconnection to a peer cache.  The default is 30 seconds.   You\n#\tmay also set different timeout values for individual neighbors\n#\twith the 'connect-timeout' option on a 'cache_peer' line.\n#\n#Default:\n# peer_connect_timeout 30 seconds\n\n#  TAG: read_timeout\ttime-units\n#\tThe read_timeout is applied on server-side connections.  After\n#\teach successful read(), the timeout will be extended by this\n#\tamount.  If no data is read again after this amount of time,\n#\tthe request is aborted and logged with ERR_READ_TIMEOUT.  The\n#\tdefault is 15 minutes.\n#\n#Default:\n# read_timeout 15 minutes\n\n#  TAG: request_timeout\n#\tHow long to wait for an HTTP request after initial\n#\tconnection establishment.\n#\n#Default:\n# request_timeout 5 minutes\n\n#  TAG: persistent_request_timeout\n#\tHow long to wait for the next HTTP request on a persistent\n#\tconnection after the previous request completes.\n#\n#Default:\n# persistent_request_timeout 2 minutes\n\n#  TAG: client_lifetime\ttime-units\n#\tThe maximum amount of time a client (browser) is allowed to\n#\tremain connected to the cache process.  This protects the Cache\n#\tfrom having a lot of sockets (and hence file descriptors) tied up\n#\tin a CLOSE_WAIT state from remote clients that go away without\n#\tproperly shutting down (either because of a network failure or\n#\tbecause of a poor client implementation).  The default is one\n#\tday, 1440 minutes.\n#\n#\tNOTE:  The default value is intended to be much larger than any\n#\tclient would ever need to be connected to your cache.  You\n#\tshould probably change client_lifetime only as a last resort.\n#\tIf you seem to have many client connections tying up\n#\tfiledescriptors, we recommend first tuning the read_timeout,\n#\trequest_timeout, persistent_request_timeout and quick_abort values.\n#\n#Default:\n# client_lifetime 1 day\n\n#  TAG: half_closed_clients\n#\tSome clients may shutdown the sending side of their TCP\n#\tconnections, while leaving their receiving sides open.\tSometimes,\n#\tSquid can not tell the difference between a half-closed and a\n#\tfully-closed TCP connection.  By default, half-closed client\n#\tconnections are kept open until a read(2) or write(2) on the\n#\tsocket returns an error.  Change this option to 'off' and Squid\n#\twill immediately close client connections when read(2) returns\n#\t\"no more data to read.\"\n#\n#Default:\n# half_closed_clients on\n\n#  TAG: pconn_timeout\n#\tTimeout for idle persistent connections to servers and other\n#\tproxies.\n#\n#Default:\n# pconn_timeout 1 minute\n\n#  TAG: ident_timeout\n#\tMaximum time to wait for IDENT lookups to complete.\n#\n#\tIf this is too high, and you enabled IDENT lookups from untrusted\n#\tusers, you might be susceptible to denial-of-service by having\n#\tmany ident requests going at once.\n#\n#Default:\n# ident_timeout 10 seconds\n\n#  TAG: shutdown_lifetime\ttime-units\n#\tWhen SIGTERM or SIGHUP is received, the cache is put into\n#\t\"shutdown pending\" mode until all active sockets are closed.\n#\tThis value is the lifetime to set for all open descriptors\n#\tduring shutdown mode.  Any active clients after this many\n#\tseconds will receive a 'timeout' message.\n#\n#Default:\n# shutdown_lifetime 30 seconds\n\n\n# ADMINISTRATIVE PARAMETERS\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_mgr\n#\tEmail-address of local cache manager who will receive\n#\tmail if the cache dies. The default is \"webmaster\".\n#\n#Default:\n# cache_mgr webmaster\n\n#  TAG: mail_from\n#\tFrom: email-address for mail sent when the cache dies.\n#\tThe default is to use 'appname@unique_hostname'.\n#\tDefault appname value is \"squid\", can be changed into\n#\tsrc/globals.h before building squid.\n#\n#Default:\n# none\n\n#  TAG: mail_program\n#\tEmail program used to send mail if the cache dies.\n#\tThe default is \"mail\". The specified program must comply\n#\twith the standard Unix mail syntax:\n#\t  mail-program recipient < mailfile\n#\n#\tOptional command line options can be specified.\n#\n#Default:\n# mail_program mail\n\n#  TAG: cache_effective_user\n#\tIf you start Squid as root, it will change its effective/real\n#\tUID/GID to the user specified below.  The default is to change\n#\tto UID to squid.  If you define cache_effective_user, but not\n#\tcache_effective_group, Squid sets the GID to the effective\n#\tuser's default group ID (taken from the password file) and\n#\tsupplementary group list from the from groups membership of\n#\tcache_effective_user.\n#\n#Default:\n# cache_effective_user squid\n\n#  TAG: cache_effective_group\n#\tIf you want Squid to run with a specific GID regardless of\n#\tthe group memberships of the effective user then set this\n#\tto the group (or GID) you want Squid to run as. When set\n#\tall other group privileges of the effective user is ignored\n#\tand only this GID is effective. If Squid is not started as\n#\troot the user starting Squid must be member of the specified\n#\tgroup.\n#\n#Default:\n# none\n\n#  TAG: httpd_suppress_version_string\ton|off\n#\tSuppress Squid version string info in HTTP headers and HTML error pages.\n#\n#Default:\n# httpd_suppress_version_string off\n\n#  TAG: visible_hostname\n#\tIf you want to present a special hostname in error messages, etc,\n#\tdefine this.  Otherwise, the return value of gethostname()\n#\twill be used. If you have multiple caches in a cluster and\n#\tget errors about IP-forwarding you must set them to have individual\n#\tnames with this setting.\n#\n#Default:\n# none\nvisible_hostname mydomainname.com\n\n#  TAG: unique_hostname\n#\tIf you want to have multiple machines with the same\n#\t'visible_hostname' you must give each machine a different\n#\t'unique_hostname' so forwarding loops can be detected.\n#\n#Default:\n# none\n\n#  TAG: hostname_aliases\n#\tA list of other DNS names your cache has.\n#\n#Default:\n# none\n\n#  TAG: umask\n#\tMinimum umask which should be enforced while the proxy\n#\tis running, in addition to the umask set at startup.\n#\n#\tNote: Should start with a 0 to indicate the normal octal\n#\trepresentation of umasks\n#\n#Default:\n# umask 027\n\n\n# OPTIONS FOR THE CACHE REGISTRATION SERVICE\n# -----------------------------------------------------------------------------\n#\n#\tThis section contains parameters for the (optional) cache\n#\tannouncement service.  This service is provided to help\n#\tcache administrators locate one another in order to join or\n#\tcreate cache hierarchies.\n#\n#\tAn 'announcement' message is sent (via UDP) to the registration\n#\tservice by Squid.  By default, the announcement message is NOT\n#\tSENT unless you enable it with 'announce_period' below.\n#\n#\tThe announcement message includes your hostname, plus the\n#\tfollowing information from this configuration file:\n#\n#\t\thttp_port\n#\t\ticp_port\n#\t\tcache_mgr\n#\n#\tAll current information is processed regularly and made\n#\tavailable on the Web at http://www.ircache.net/Cache/Tracker/.\n\n#  TAG: announce_period\n#\tThis is how frequently to send cache announcements.  The\n#\tdefault is `0' which disables sending the announcement\n#\tmessages.\n#\n#\tTo enable announcing your cache, just uncomment the line\n#\tbelow.\n#\n#Default:\n# announce_period 0\n#\n#To enable announcing your cache, just uncomment the line below.\n#announce_period 1 day\n\n#  TAG: announce_host\n#  TAG: announce_file\n#  TAG: announce_port\n#\tannounce_host and announce_port set the hostname and port\n#\tnumber where the registration message will be sent.\n#\n#\tHostname will default to 'tracker.ircache.net' and port will\n#\tdefault default to 3131.  If the 'filename' argument is given,\n#\tthe contents of that file will be included in the announce\n#\tmessage.\n#\n#Default:\n# announce_host tracker.ircache.net\n# announce_port 3131\n\n\n# HTTPD-ACCELERATOR OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: httpd_accel_no_pmtu_disc\ton|off\n#\tIn many setups of transparently intercepting proxies Path-MTU\n#\tdiscovery can not work on traffic towards the clients. This is\n#\tthe case when the intercepting device does not fully track\n#\tconnections and fails to forward ICMP must fragment messages\n#\tto the cache server.\n#\n#\tIf you have such setup and experience that certain clients\n#\tsporadically hang or never complete requests set this to on.\n#\n#Default:\n# httpd_accel_no_pmtu_disc off\n\n\n# DELAY POOL PARAMETERS\n# -----------------------------------------------------------------------------\n\n#  TAG: delay_pools\n#\tThis represents the number of delay pools to be used.  For example,\n#\tif you have one class 2 delay pool and one class 3 delays pool, you\n#\thave a total of 2 delay pools.\n#\n#Default:\n# delay_pools 0\n\n#  TAG: delay_class\n#\tThis defines the class of each delay pool.  There must be exactly one\n#\tdelay_class line for each delay pool.  For example, to define two\n#\tdelay pools, one of class 2 and one of class 3, the settings above\n#\tand here would be:\n#\n#Example:\n# delay_pools 2      # 2 delay pools\n# delay_class 1 2    # pool 1 is a class 2 pool\n# delay_class 2 3    # pool 2 is a class 3 pool\n#\n#\tThe delay pool classes are:\n#\n#\t\tclass 1\t\tEverything is limited by a single aggregate\n#\t\t\t\tbucket.\n#\n#\t\tclass 2 \tEverything is limited by a single aggregate\n#\t\t\t\tbucket as well as an \"individual\" bucket chosen\n#\t\t\t\tfrom bits 25 through 32 of the IP address.\n#\n#\t\tclass 3\t\tEverything is limited by a single aggregate\n#\t\t\t\tbucket as well as a \"network\" bucket chosen\n#\t\t\t\tfrom bits 17 through 24 of the IP address and a\n#\t\t\t\t\"individual\" bucket chosen from bits 17 through\n#\t\t\t\t32 of the IP address.\n#\n#\tNOTE: If an IP address is a.b.c.d\n#\t\t-> bits 25 through 32 are \"d\"\n#\t\t-> bits 17 through 24 are \"c\"\n#\t\t-> bits 17 through 32 are \"c * 256 + d\"\n#\n#Default:\n# none\n\n#  TAG: delay_access\n#\tThis is used to determine which delay pool a request falls into.\n#\n#\tdelay_access is sorted per pool and the matching starts with pool 1,\n#\tthen pool 2, ..., and finally pool N. The first delay pool where the\n#\trequest is allowed is selected for the request. If it does not allow\n#\tthe request to any pool then the request is not delayed (default).\n#\n#\tFor example, if you want some_big_clients in delay\n#\tpool 1 and lotsa_little_clients in delay pool 2:\n#\n#Example:\n# delay_access 1 allow some_big_clients\n# delay_access 1 deny all\n# delay_access 2 allow lotsa_little_clients\n# delay_access 2 deny all\n#\n#Default:\n# none\n\n#  TAG: delay_parameters\n#\tThis defines the parameters for a delay pool.  Each delay pool has\n#\ta number of \"buckets\" associated with it, as explained in the\n#\tdescription of delay_class.  For a class 1 delay pool, the syntax is:\n#\n#delay_parameters pool aggregate\n#\n#\tFor a class 2 delay pool:\n#\n#delay_parameters pool aggregate individual\n#\n#\tFor a class 3 delay pool:\n#\n#delay_parameters pool aggregate network individual\n#\n#\tThe variables here are:\n#\n#\t\tpool\t\ta pool number - ie, a number between 1 and the\n#\t\t\t\tnumber specified in delay_pools as used in\n#\t\t\t\tdelay_class lines.\n#\n#\t\taggregate\tthe \"delay parameters\" for the aggregate bucket\n#\t\t\t\t(class 1, 2, 3).\n#\n#\t\tindividual\tthe \"delay parameters\" for the individual\n#\t\t\t\tbuckets (class 2, 3).\n#\n#\t\tnetwork\t\tthe \"delay parameters\" for the network buckets\n#\t\t\t\t(class 3).\n#\n#\tA pair of delay parameters is written restore/maximum, where restore is\n#\tthe number of bytes (not bits - modem and network speeds are usually\n#\tquoted in bits) per second placed into the bucket, and maximum is the\n#\tmaximum number of bytes which can be in the bucket at any time.\n#\n#\tFor example, if delay pool number 1 is a class 2 delay pool as in the\n#\tabove example, and is being used to strictly limit each host to 64kbps\n#\t(plus overheads), with no overall limit, the line is:\n#\n#delay_parameters 1 -1/-1 8000/8000\n#\n#\tNote that the figure -1 is used to represent \"unlimited\".\n#\n#\tAnd, if delay pool number 2 is a class 3 delay pool as in the above\n#\texample, and you want to limit it to a total of 256kbps (strict limit)\n#\twith each 8-bit network permitted 64kbps (strict limit) and each\n#\tindividual host permitted 4800bps with a bucket maximum size of 64kb\n#\tto permit a decent web page to be downloaded at a decent speed\n#\t(if the network is not being limited due to overuse) but slow down\n#\tlarge downloads more significantly:\n#\n#delay_parameters 2 32000/32000 8000/8000 600/8000\n#\n#\tThere must be one delay_parameters line for each delay pool.\n#\n#Default:\n# none\n\n#  TAG: delay_initial_bucket_level\t(percent, 0-100)\n#\tThe initial bucket percentage is used to determine how much is put\n#\tin each bucket when squid starts, is reconfigured, or first notices\n#\ta host accessing it (in class 2 and class 3, individual hosts and\n#\tnetworks only have buckets associated with them once they have been\n#\t\"seen\" by squid).\n#\n#Default:\n# delay_initial_bucket_level 50\n\n\n# WCCPv1 AND WCCPv2 CONFIGURATION OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: wccp_router\n#  TAG: wccp2_router\n#\tUse this option to define your WCCP ``home'' router for\n#\tSquid.\n#\n#\twccp_router supports a single WCCP(v1) router\n#\n#\twccp2_router supports multiple WCCPv2 routers\n#\n#\tonly one of the two may be used at the same time and defines\n#\twhich version of WCCP to use.\n#\n#Default:\n# wccp_router 0.0.0.0\n\n#  TAG: wccp_version\n#\tThis directive is only relevant if you need to set up WCCP(v1)\n#\tto some very old and end-of-life Cisco routers. In all other\n#\tsetups it must be left unset or at the default setting.\n#\tIt defines an internal version in the WCCP(v1) protocol,\n#\twith version 4 being the officially documented protocol.\n#\n#\tAccording to some users, Cisco IOS 11.2 and earlier only\n#\tsupport WCCP version 3.  If you're using that or an earlier\n#\tversion of IOS, you may need to change this value to 3, otherwise\n#\tdo not specify this parameter.\n#\n#Default:\n# wccp_version 4\n\n#  TAG: wccp2_rebuild_wait\n#\tIf this is enabled Squid will wait for the cache dir rebuild to finish\n#\tbefore sending the first wccp2 HereIAm packet\n#\n#Default:\n# wccp2_rebuild_wait on\n\n#  TAG: wccp2_forwarding_method\n#\tWCCP2 allows the setting of forwarding methods between the\n#\trouter/switch and the cache.  Valid values are as follows:\n#\n#\t1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)\n#\t2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)\n#\n#\tCurrently (as of IOS 12.4) cisco routers only support GRE.\n#\tCisco switches only support the L2 redirect assignment method.\n#\n#Default:\n# wccp2_forwarding_method 1\n\n#  TAG: wccp2_return_method\n#\tWCCP2 allows the setting of return methods between the\n#\trouter/switch and the cache for packets that the cache\n#\tdecides not to handle.  Valid values are as follows:\n#\n#\t1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)\n#\t2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)\n#\n#\tCurrently (as of IOS 12.4) cisco routers only support GRE.\n#\tCisco switches only support the L2 redirect assignment.\n#\n#\tIf the \"ip wccp redirect exclude in\" command has been\n#\tenabled on the cache interface, then it is still safe for\n#\tthe proxy server to use a l2 redirect method even if this\n#\toption is set to GRE.\n#\n#Default:\n# wccp2_return_method 1\n\n#  TAG: wccp2_assignment_method\n#\tWCCP2 allows the setting of methods to assign the WCCP hash\n#\tValid values are as follows:\n#\n#\t1 - Hash assignment\n#\t2 - Mask assignment\n#\n#\tAs a general rule, cisco routers support the hash assignment method\n#\tand cisco switches support the mask assignment method.\n#\n#Default:\n# wccp2_assignment_method 1\n\n#  TAG: wccp2_service\n#\tWCCP2 allows for multiple traffic services. There are two\n#\ttypes: \"standard\" and \"dynamic\". The standard type defines\n#\tone service id - http (id 0). The dynamic service ids can be from\n#\t51 to 255 inclusive.  In order to use a dynamic service id\n#\tone must define the type of traffic to be redirected; this is done\n#\tusing the wccp2_service_info option.\n#\n#\tThe \"standard\" type does not require a wccp2_service_info option,\n#\tjust specifying the service id will suffice.\n#\n#\tMD5 service authentication can be enabled by adding\n#\t\"password=<password>\" to the end of this service declaration.\n#\n#\tExamples:\n#\n#\twccp2_service standard 0\t# for the 'web-cache' standard service\n#\twccp2_service dynamic 80\t# a dynamic service type which will be\n#\t\t\t\t\t# fleshed out with subsequent options.\n#\twccp2_service standard 0 password=foo\n#\n#\n#Default:\n# wccp2_service standard 0\n\n#  TAG: wccp2_service_info\n#\tDynamic WCCPv2 services require further information to define the\n#\ttraffic you wish to have diverted.\n#\n#\tThe format is:\n#\n#\twccp2_service_info <id> protocol=<protocol> flags=<flag>,<flag>..\n#\t    priority=<priority> ports=<port>,<port>..\n#\n#\tThe relevant WCCPv2 flags:\n#\t+ src_ip_hash, dst_ip_hash\n#\t+ source_port_hash, dst_port_hash\n#\t+ src_ip_alt_hash, dst_ip_alt_hash\n#\t+ src_port_alt_hash, dst_port_alt_hash\n#\t+ ports_source\n#\n#\tThe port list can be one to eight entries.\n#\n#\tExample:\n#\n#\twccp2_service_info 80 protocol=tcp flags=src_ip_hash,ports_source\n#\t    priority=240 ports=80\n#\n#\tNote: the service id must have been defined by a previous\n#\t'wccp2_service dynamic <id>' entry.\n#\n#Default:\n# none\n\n#  TAG: wccp2_weight\n#\tEach cache server gets assigned a set of the destination\n#\thash proportional to their weight.\n#\n#Default:\n# wccp2_weight 10000\n\n#  TAG: wccp_address\n#  TAG: wccp2_address\n#\tUse this option if you require WCCP to use a specific\n#\tinterface address.\n#\n#\tThe default behavior is to not bind to any specific address.\n#\n#Default:\n# wccp_address 0.0.0.0\n# wccp2_address 0.0.0.0\n\n\n# PERSISTENT CONNECTION HANDLING\n# -----------------------------------------------------------------------------\n#\n# Also see \"pconn_timeout\" in the TIMEOUTS section\n\n#  TAG: client_persistent_connections\n#  TAG: server_persistent_connections\n#\tPersistent connection support for clients and servers.  By\n#\tdefault, Squid uses persistent connections (when allowed)\n#\twith its clients and servers.  You can use these options to\n#\tdisable persistent connections with clients and/or servers.\n#\n#Default:\n# client_persistent_connections on\n# server_persistent_connections on\n\n#  TAG: persistent_connection_after_error\n#\tWith this directive the use of persistent connections after\n#\tHTTP errors can be disabled. Useful if you have clients\n#\twho fail to handle errors on persistent connections proper.\n#\n#Default:\n# persistent_connection_after_error off\n\n#  TAG: detect_broken_pconn\n#\tSome servers have been found to incorrectly signal the use\n#\tof HTTP/1.0 persistent connections even on replies not\n#\tcompatible, causing significant delays. This server problem\n#\thas mostly been seen on redirects.\n#\n#\tBy enabling this directive Squid attempts to detect such\n#\tbroken replies and automatically assume the reply is finished\n#\tafter 10 seconds timeout.\n#\n#Default:\n# detect_broken_pconn off\n\n\n# CACHE DIGEST OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: digest_generation\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests option\n#\n#\tThis controls whether the server will generate a Cache Digest\n#\tof its contents.\n#\n#Default:\n# digest_generation on\n\n#  TAG: digest_bits_per_entry\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests option\n#\n#\tThis is the number of bits of the server's Cache Digest which\n#\twill be associated with the Digest entry for a given HTTP\n#\tMethod and URL (public key) combination.  The default is 5.\n#\n#Default:\n# digest_bits_per_entry 5\n\n#  TAG: digest_rebuild_period\t(seconds)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests option\n#\n#\tThis is the wait time between Cache Digest rebuilds.\n#\n#Default:\n# digest_rebuild_period 1 hour\n\n#  TAG: digest_rewrite_period\t(seconds)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests option\n#\n#\tThis is the wait time between Cache Digest writes to disk.\n#\n#Default:\n# digest_rewrite_period 1 hour\n\n#  TAG: digest_swapout_chunk_size\t(bytes)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests option\n#\n#\tThis is the number of bytes of the Cache Digest to write to\n#\tdisk at a time.  It defaults to 4096 bytes (4KB), the Squid\n#\tdefault swap page.\n#\n#Default:\n# digest_swapout_chunk_size 4096 bytes\n\n#  TAG: digest_rebuild_chunk_percentage\t(percent, 0-100)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests option\n#\n#\tThis is the percentage of the Cache Digest to be scanned at a\n#\ttime.  By default it is set to 10% of the Cache Digest.\n#\n#Default:\n# digest_rebuild_chunk_percentage 10\n\n\n# SNMP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: snmp_port\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-snmp option\n#\n#\tSquid can now serve statistics and status information via SNMP.\n#\tBy default it listens to port 3401 on the machine. If you don't\n#\twish to use SNMP, set this to \"0\".\n#\n#Default:\n# snmp_port 3401\n\n#  TAG: snmp_access\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-snmp option\n#\n#\tAllowing or denying access to the SNMP port.\n#\n#\tAll access to the agent is denied by default.\n#\tusage:\n#\n#\tsnmp_access allow|deny [!]aclname ...\n#\n#Example:\n# snmp_access allow snmppublic localhost\n# snmp_access deny all\n#\n#Default:\n# snmp_access deny all\n\n#  TAG: snmp_incoming_address\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-snmp option\n#\n#  TAG: snmp_outgoing_address\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-snmp option\n#\n#\tJust like 'udp_incoming_address' above, but for the SNMP port.\n#\n#\tsnmp_incoming_address\tis used for the SNMP socket receiving\n#\t\t\t\tmessages from SNMP agents.\n#\tsnmp_outgoing_address\tis used for SNMP packets returned to SNMP\n#\t\t\t\tagents.\n#\n#\tThe default snmp_incoming_address (0.0.0.0) is to listen on all\n#\tavailable network interfaces.\n#\n#\tIf snmp_outgoing_address is set to 255.255.255.255 (the default)\n#\tit will use the same socket as snmp_incoming_address. Only\n#\tchange this if you want to have SNMP replies sent using another\n#\taddress than where this Squid listens for SNMP queries.\n#\n#\tNOTE, snmp_incoming_address and snmp_outgoing_address can not have\n#\tthe same value since they both use port 3401.\n#\n#Default:\n# snmp_incoming_address 0.0.0.0\n# snmp_outgoing_address 255.255.255.255\n\n\n# ICP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: icp_port\n#\tThe port number where Squid sends and receives ICP queries to\n#\tand from neighbor caches.  Default is 3130.  To disable use\n#\t\"0\".  May be overridden with -u on the command line.\n#\n#Default:\n# icp_port 3130\n\n#  TAG: htcp_port\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-htcp option\n#\n#\tThe port number where Squid sends and receives HTCP queries to\n#\tand from neighbor caches.  Default is 4827.  To disable use\n#\t\"0\".\n#\n#Default:\n# htcp_port 4827\n\n#  TAG: log_icp_queries\ton|off\n#\tIf set, ICP queries are logged to access.log. You may wish\n#\tdo disable this if your ICP load is VERY high to speed things\n#\tup or to simplify log analysis.\n#\n#Default:\n# log_icp_queries on\n\n#  TAG: udp_incoming_address\n#\tudp_incoming_address\tis used for UDP packets received from other\n#\t\t\t\tcaches.\n#\n#\tThe default behavior is to not bind to any specific address.\n#\n#\tOnly change this if you want to have all UDP queries received on\n#\ta specific interface/address.\n#\n#\tNOTE: udp_incoming_address is used by the ICP, HTCP, and DNS\n#\tmodules. Altering it will affect all of them in the same manner.\n#\n#\tsee also; udp_outgoing_address\n#\n#\tNOTE, udp_incoming_address and udp_outgoing_address can not\n#\thave the same value since they both use the same port.\n#\n#Default:\n# udp_incoming_address 0.0.0.0\n\n#  TAG: udp_outgoing_address\n#\tudp_outgoing_address\tis used for UDP packets sent out to other\n#\t\t\t\tcaches.\n#\n#\tThe default behavior is to not bind to any specific address.\n#\n#\tInstead it will use the same socket as udp_incoming_address.\n#\tOnly change this if you want to have UDP queries sent using another\n#\taddress than where this Squid listens for UDP queries from other\n#\tcaches.\n#\n#\tNOTE: udp_outgoing_address is used by the ICP, HTCP, and DNS\n#\tmodules. Altering it will affect all of them in the same manner.\n#\n#\tsee also; udp_incoming_address\n#\n#\tNOTE, udp_incoming_address and udp_outgoing_address can not\n#\thave the same value since they both use the same port.\n#\n#Default:\n# udp_outgoing_address 255.255.255.255\n\n#  TAG: icp_hit_stale\ton|off\n#\tIf you want to return ICP_HIT for stale cache objects, set this\n#\toption to 'on'.  If you have sibling relationships with caches\n#\tin other administrative domains, this should be 'off'.  If you only\n#\thave sibling relationships with caches under your control,\n#\tit is probably okay to set this to 'on'.\n#\tIf set to 'on', your siblings should use the option \"allow-miss\"\n#\ton their cache_peer lines for connecting to you.\n#\n#Default:\n# icp_hit_stale off\n\n#  TAG: minimum_direct_hops\n#\tIf using the ICMP pinging stuff, do direct fetches for sites\n#\twhich are no more than this many hops away.\n#\n#Default:\n# minimum_direct_hops 4\n\n#  TAG: minimum_direct_rtt\n#\tIf using the ICMP pinging stuff, do direct fetches for sites\n#\twhich are no more than this many rtt milliseconds away.\n#\n#Default:\n# minimum_direct_rtt 400\n\n#  TAG: netdb_low\n#  TAG: netdb_high\n#\tThe low and high water marks for the ICMP measurement\n#\tdatabase.  These are counts, not percents.  The defaults are\n#\t900 and 1000.  When the high water mark is reached, database\n#\tentries will be deleted until the low mark is reached.\n#\n#Default:\n# netdb_low 900\n# netdb_high 1000\n\n#  TAG: netdb_ping_period\n#\tThe minimum period for measuring a site.  There will be at\n#\tleast this much delay between successive pings to the same\n#\tnetwork.  The default is five minutes.\n#\n#Default:\n# netdb_ping_period 5 minutes\n\n#  TAG: query_icmp\ton|off\n#\tIf you want to ask your peers to include ICMP data in their ICP\n#\treplies, enable this option.\n#\n#\tIf your peer has configured Squid (during compilation) with\n#\t'--enable-icmp' that peer will send ICMP pings to origin server\n#\tsites of the URLs it receives.  If you enable this option the\n#\tICP replies from that peer will include the ICMP data (if available).\n#\tThen, when choosing a parent cache, Squid will choose the parent with\n#\tthe minimal RTT to the origin server.  When this happens, the\n#\thierarchy field of the access.log will be\n#\t\"CLOSEST_PARENT_MISS\".  This option is off by default.\n#\n#Default:\n# query_icmp off\n\n#  TAG: test_reachability\ton|off\n#\tWhen this is 'on', ICP MISS replies will be ICP_MISS_NOFETCH\n#\tinstead of ICP_MISS if the target host is NOT in the ICMP\n#\tdatabase, or has a zero RTT.\n#\n#Default:\n# test_reachability off\n\n#  TAG: icp_query_timeout\t(msec)\n#\tNormally Squid will automatically determine an optimal ICP\n#\tquery timeout value based on the round-trip-time of recent ICP\n#\tqueries.  If you want to override the value determined by\n#\tSquid, set this 'icp_query_timeout' to a non-zero value.  This\n#\tvalue is specified in MILLISECONDS, so, to use a 2-second\n#\ttimeout (the old default), you would write:\n#\n#\t\ticp_query_timeout 2000\n#\n#Default:\n# icp_query_timeout 0\n\n#  TAG: maximum_icp_query_timeout\t(msec)\n#\tNormally the ICP query timeout is determined dynamically.  But\n#\tsometimes it can lead to very large values (say 5 seconds).\n#\tUse this option to put an upper limit on the dynamic timeout\n#\tvalue.  Do NOT use this option to always use a fixed (instead\n#\tof a dynamic) timeout value. To set a fixed timeout see the\n#\t'icp_query_timeout' directive.\n#\n#Default:\n# maximum_icp_query_timeout 2000\n\n#  TAG: minimum_icp_query_timeout\t(msec)\n#\tNormally the ICP query timeout is determined dynamically.  But\n#\tsometimes it can lead to very small timeouts, even lower than\n#\tthe normal latency variance on your link due to traffic.\n#\tUse this option to put an lower limit on the dynamic timeout\n#\tvalue.  Do NOT use this option to always use a fixed (instead\n#\tof a dynamic) timeout value. To set a fixed timeout see the\n#\t'icp_query_timeout' directive.\n#\n#Default:\n# minimum_icp_query_timeout 5\n\n\n# MULTICAST ICP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: mcast_groups\n#\tThis tag specifies a list of multicast groups which your server\n#\tshould join to receive multicasted ICP queries.\n#\n#\tNOTE!  Be very careful what you put here!  Be sure you\n#\tunderstand the difference between an ICP _query_ and an ICP\n#\t_reply_.  This option is to be set only if you want to RECEIVE\n#\tmulticast queries.  Do NOT set this option to SEND multicast\n#\tICP (use cache_peer for that).  ICP replies are always sent via\n#\tunicast, so this option does not affect whether or not you will\n#\treceive replies from multicast group members.\n#\n#\tYou must be very careful to NOT use a multicast address which\n#\tis already in use by another group of caches.\n#\n#\tIf you are unsure about multicast, please read the Multicast\n#\tchapter in the Squid FAQ (http://www.squid-cache.org/FAQ/).\n#\n#\tUsage: mcast_groups 239.128.16.128 224.0.1.20\n#\n#\tBy default, Squid doesn't listen on any multicast groups.\n#\n#Default:\n# none\n\n#  TAG: mcast_miss_addr\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-multicast-miss option\n#\n#\tIf you enable this option, every \"cache miss\" URL will\n#\tbe sent out on the specified multicast address.\n#\n#\tDo not enable this option unless you are are absolutely\n#\tcertain you understand what you are doing.\n#\n#Default:\n# mcast_miss_addr 255.255.255.255\n\n#  TAG: mcast_miss_ttl\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-multicast-miss option\n#\n#\tThis is the time-to-live value for packets multicasted\n#\twhen multicasting off cache miss URLs is enabled.  By\n#\tdefault this is set to 'site scope', i.e. 16.\n#\n#Default:\n# mcast_miss_ttl 16\n\n#  TAG: mcast_miss_port\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-multicast-miss option\n#\n#\tThis is the port number to be used in conjunction with\n#\t'mcast_miss_addr'.\n#\n#Default:\n# mcast_miss_port 3135\n\n#  TAG: mcast_miss_encode_key\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-multicast-miss option\n#\n#\tThe URLs that are sent in the multicast miss stream are\n#\tencrypted.  This is the encryption key.\n#\n#Default:\n# mcast_miss_encode_key XXXXXXXXXXXXXXXX\n\n#  TAG: mcast_icp_query_timeout\t(msec)\n#\tFor multicast peers, Squid regularly sends out ICP \"probes\" to\n#\tcount how many other peers are listening on the given multicast\n#\taddress.  This value specifies how long Squid should wait to\n#\tcount all the replies.  The default is 2000 msec, or 2\n#\tseconds.\n#\n#Default:\n# mcast_icp_query_timeout 2000\n\n\n# INTERNAL ICON OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: icon_directory\n#\tWhere the icons are stored. These are normally kept in\n#\t/opt/local/share/squid/icons\n#\n#Default:\n# icon_directory /opt/local/share/squid/icons\n\n#  TAG: global_internal_static\n#\tThis directive controls is Squid should intercept all requests for\n#\t/squid-internal-static/ no matter which host the URL is requesting\n#\t(default on setting), or if nothing special should be done for\n#\tsuch URLs (off setting). The purpose of this directive is to make\n#\ticons etc work better in complex cache hierarchies where it may\n#\tnot always be possible for all corners in the cache mesh to reach\n#\tthe server generating a directory listing.\n#\n#Default:\n# global_internal_static on\n\n#  TAG: short_icon_urls\n#\tIf this is enabled Squid will use short URLs for icons.\n#\n#\tIf off the URLs for icons will always be absolute URLs\n#\tincluding the proxy name and port.\n#\n#Default:\n# short_icon_urls off\n\n\n# ERROR PAGE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: error_directory\n#\tIf you wish to create your own versions of the default\n#\t(English) error files, either to customize them to suit your\n#\tlanguage or company copy the template English files to another\n#\tdirectory and point this tag at them.\n#\n#\tThe squid developers are interested in making squid available in\n#\ta wide variety of languages. If you are making translations for a\n#\tlangauge that Squid does not currently provide please consider\n#\tcontributing your translation back to the project.\n#\n#Default:\n# error_directory /opt/local/share/squid/errors/English\n\n#  TAG: error_map\n#\tMap errors to custom messages\n#\n#\t    error_map message_url http_status ...\n#\n#\thttp_status ... is a list of HTTP status codes or Squid error\n#\tmessages.\n#\n#\tUse in accelerators to substitute the error messages returned\n#\tby servers with other custom errors.\n#\n#\t    error_map http://your.server/error/404.shtml 404\n#\n#\tRequests for error messages is a GET request for the configured\n#\tURL with the following special headers\n#\n#\t    X-Error-Status:\tThe received HTTP status code (i.e. 404)\n#\t    X-Request-URI:\tThe requested URI where the error occurred\n#\n#\tIn Addition the following headers are forwarded from the client\n#\trequest:\n#\n#\t    User-Agent, Cookie, X-Forwarded-For, Via, Authorization,\n#\t    Accept, Referer\n#\n#\tAnd the following headers from the server reply:\n#\n#\t    Server, Via, Location, Content-Location\n#\n#\tThe reply returned to the client will carry the original HTTP\n#\theaders from the real error message, but with the reply body\n#\tof the configured error message.\n#\n#\n#Default:\n# none\n\n#  TAG: err_html_text\n#\tHTML text to include in error messages.  Make this a \"mailto\"\n#\tURL to your admin address, or maybe just a link to your\n#\torganizations Web page.\n#\n#\tTo include this in your error messages, you must rewrite\n#\tthe error template files (found in the \"errors\" directory).\n#\tWherever you want the 'err_html_text' line to appear,\n#\tinsert a %L tag in the error template file.\n#\n#Default:\n# none\n\n#  TAG: deny_info\n#\tUsage:   deny_info err_page_name acl\n#\tor       deny_info http://... acl\n#\tExample: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys\n#\n#\tThis can be used to return a ERR_ page for requests which\n#\tdo not pass the 'http_access' rules.  Squid remembers the last\n#\tacl it evaluated in http_access, and if a 'deny_info' line exists\n#\tfor that ACL Squid returns a corresponding error page.\n#\n#\tThe acl is typically the last acl on the http_access deny line which\n#\tdenied access. The exceptions to this rule are:\n#\t- When Squid needs to request authentication credentials. It's then\n#\t  the first authentication related acl encountered\n#\t- When none of the http_access lines matches. It's then the last\n#\t  acl processed on the last http_access line.\n#\n#\tYou may use ERR_ pages that come with Squid or create your own pages\n#\tand put them into the configured errors/ directory.\n#\n#\tAlternatively you can specify an error URL. The browsers will\n#\tget redirected (302) to the specified URL. %s in the redirection\n#\tURL will be replaced by the requested URL.\n#\n#\tAlternatively you can tell Squid to reset the TCP connection\n#\tby specifying TCP_RESET.\n#\n#Default:\n# none\n\n\n# OPTIONS INFLUENCING REQUEST FORWARDING \n# -----------------------------------------------------------------------------\n\n#  TAG: nonhierarchical_direct\n#\tBy default, Squid will send any non-hierarchical requests\n#\t(matching hierarchy_stoplist or not cacheable request type) direct\n#\tto origin servers.\n#\n#\tIf you set this to off, Squid will prefer to send these\n#\trequests to parents.\n#\n#\tNote that in most configurations, by turning this off you will only\n#\tadd latency to these request without any improvement in global hit\n#\tratio.\n#\n#\tIf you are inside an firewall see never_direct instead of\n#\tthis directive.\n#\n#Default:\n# nonhierarchical_direct on\n\n#  TAG: prefer_direct\n#\tNormally Squid tries to use parents for most requests. If you for some\n#\treason like it to first try going direct and only use a parent if\n#\tgoing direct fails set this to on.\n#\n#\tBy combining nonhierarchical_direct off and prefer_direct on you\n#\tcan set up Squid to use a parent as a backup path if going direct\n#\tfails.\n#\n#\tNote: If you want Squid to use parents for all requests see\n#\tthe never_direct directive. prefer_direct only modifies how Squid\n#\tacts on cacheable requests.\n#\n#Default:\n# prefer_direct off\n\n#  TAG: ignore_ims_on_miss\ton|off\n#\tThis options makes Squid ignore If-Modified-Since on\n#\tcache misses. This is useful while the cache is\n#\tmostly empty to more quickly have the cache populated.\n#\n#Default:\n# ignore_ims_on_miss off\n\n#  TAG: always_direct\n#\tUsage: always_direct allow|deny [!]aclname ...\n#\n#\tHere you can use ACL elements to specify requests which should\n#\tALWAYS be forwarded by Squid to the origin servers without using\n#\tany peers.  For example, to always directly forward requests for\n#\tlocal servers ignoring any parents or siblings you may have use\n#\tsomething like:\n#\n#\t\tacl local-servers dstdomain my.domain.net\n#\t\talways_direct allow local-servers\n#\n#\tTo always forward FTP requests directly, use\n#\n#\t\tacl FTP proto FTP\n#\t\talways_direct allow FTP\n#\n#\tNOTE: There is a similar, but opposite option named\n#\t'never_direct'.  You need to be aware that \"always_direct deny\n#\tfoo\" is NOT the same thing as \"never_direct allow foo\".  You\n#\tmay need to use a deny rule to exclude a more-specific case of\n#\tsome other rule.  Example:\n#\n#\t\tacl local-external dstdomain external.foo.net\n#\t\tacl local-servers dstdomain  .foo.net\n#\t\talways_direct deny local-external\n#\t\talways_direct allow local-servers\n#\n#\tNOTE: If your goal is to make the client forward the request\n#\tdirectly to the origin server bypassing Squid then this needs\n#\tto be done in the client configuration. Squid configuration\n#\tcan only tell Squid how Squid should fetch the object.\n#\n#\tNOTE: This directive is not related to caching. The replies\n#\tis cached as usual even if you use always_direct. To not cache\n#\tthe replies see no_cache.\n#\n#\tThis option replaces some v1.1 options such as local_domain\n#\tand local_ip.\n#\n#Default:\n# none\n\n# acl local-servers dstdomain localhost\n# always_direct allow local-servers\n\n# See http://www.privoxy.org/user-manual/config.html\n# Define ACL for protocol FTP\nacl ftp proto FTP\nalways_direct allow ftp\n# Uncomment and add your LAN domain if you're running your own DNS\n#acl mydomain dstdomain .mydomainname.com\n#always_direct allow mydomain\n\n# Do not forward SSL requests to Privoxy\nalways_direct allow SSL_ports\n\n# Do not forward App Store updates\nacl app-store-browser browser MacAppStore.+\nalways_direct allow app-store-browser\nacl app-store-x-header req_header X-Apple-Store-Front .+\nalways_direct allow app-store-x-header\n# http://help.getbusi.com/kb/getbusi-alert-advance/itunes-and-app-store-content-not-loading-through-getbusi\nacl app-store-domains dstdomain \\\n\t.mzstatic.com \\\n\t.itunes.apple.com \\\n\t.phobos.apple.com.edgesuite.net \\\n\t.mzstatic.com.edgesuite.net \\\n\t.phobos.apple.com \\\n\tswdist.apple.com \\\n\tswscan.apple.com \\\n\t.symcb.com \\\n\t.symcd.com\nalways_direct allow app-store-domains\n\n#  TAG: never_direct\n#\tUsage: never_direct allow|deny [!]aclname ...\n#\n#\tnever_direct is the opposite of always_direct.  Please read\n#\tthe description for always_direct if you have not already.\n#\n#\tWith 'never_direct' you can use ACL elements to specify\n#\trequests which should NEVER be forwarded directly to origin\n#\tservers.  For example, to force the use of a proxy for all\n#\trequests, except those in your local domain use something like:\n#\n#\t\tacl local-servers dstdomain .foo.net\n#\t\tacl all src 0.0.0.0/0.0.0.0\n#\t\tnever_direct deny local-servers\n#\t\tnever_direct allow all\n#\n#\tor if Squid is inside a firewall and there are local intranet\n#\tservers inside the firewall use something like:\n#\n#\t\tacl local-intranet dstdomain .foo.net\n#\t\tacl local-external dstdomain external.foo.net\n#\t\talways_direct deny local-external\n#\t\talways_direct allow local-intranet\n#\t\tnever_direct allow all\n#\n#\tThis option replaces some v1.1 options such as inside_firewall\n#\tand firewall_ip.\n#\n#Default:\n# none\n\n# See http://www.privoxy.org/user-manual/config.html\n# Forward all the rest to Privoxy\nnever_direct allow all\n\n# ADVANCED NETWORKING OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: max_filedescriptors\n#\tThe maximum number of filedescriptors supported.\n#\n#\tThe default \"0\" means Squid inherits the current ulimit setting.\n#\n#\tNote: Changing this requires a restart of Squid. Also\n#\tnot all comm loops supports values larger than --with-maxfd.\n#\n#Default:\n# max_filedescriptors 0\n\n#  TAG: accept_filter\n#\tFreeBSD:\n#\n#\tThe name of an accept(2) filter to install on Squid's\n#\tlisten socket(s).  This feature is perhaps specific to\n#\tFreeBSD and requires support in the kernel.\n#\n#\tThe 'httpready' filter delays delivering new connections\n#\tto Squid until a full HTTP request has been received.\n#\tSee the accf_http(9) man page for details.\n#\n#\tThe 'dataready' filter delays delivering new connections\n#\tto Squid until there is some data to process.\n#\tSee the accf_dataready(9) man page for details.\n#\n#\tLinux:\n#\t\n#\tThe 'data' filter delays delivering of new connections\n#\tto Squid until there is some data to process by TCP_ACCEPT_DEFER.\n#\tYou may optionally specify a number of seconds to wait by\n#\t'data=N' where N is the number of seconds. Defaults to 30\n#\tif not specified.  See the tcp(7) man page for details.\n#EXAMPLE:\n## FreeBSD\n#accept_filter httpready\n## Linux\n#accept_filter data\n#\n#Default:\n# none\n\n#  TAG: tcp_recv_bufsize\t(bytes)\n#\tSize of receive buffer to set for TCP sockets.  Probably just\n#\tas easy to change your kernel's default.  Set to zero to use\n#\tthe default buffer size.\n#\n#Default:\n# tcp_recv_bufsize 0 bytes\n\n#  TAG: incoming_rate\n#\tThis directive controls how aggressive Squid should accept new\n#\tconnections compared to processing existing connections. \n#\tThe lower number the more frequent Squid will look for new\n#\tincoming requests.\n#\n#Default:\n# incoming_rate 30\n\n\n# DNS OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: check_hostnames\n#\tFor security and stability reasons Squid by default checks\n#\thostnames for Internet standard RFC compliance. If you do not want\n#\tSquid to perform these checks then turn this directive off.\n#\n#Default:\n# check_hostnames on\n\n#  TAG: allow_underscore\n#\tUnderscore characters is not strictly allowed in Internet hostnames\n#\tbut nevertheless used by many sites. Set this to off if you want\n#\tSquid to be strict about the standard.\n#\tThis check is performed only when check_hostnames is set to on.\n#\n#Default:\n# allow_underscore on\n\n#  TAG: cache_dns_program\n# Note: This option is only available if Squid is rebuilt with the\n#       --disable-internal-dns option\n#\n#\tSpecify the location of the executable for dnslookup process.\n#\n#Default:\n# cache_dns_program /opt/local/libexec/squid/dnsserver\n\n#  TAG: dns_children\n# Note: This option is only available if Squid is rebuilt with the\n#       --disable-internal-dns option\n#\n#\tThe number of processes spawn to service DNS name lookups.\n#\tFor heavily loaded caches on large servers, you should\n#\tprobably increase this value to at least 10.  The maximum\n#\tis 32.  The default is 5.\n#\n#\tYou must have at least one dnsserver process.\n#\n#Default:\n# dns_children 5\n\n#  TAG: dns_retransmit_interval\n#\tInitial retransmit interval for DNS queries. The interval is\n#\tdoubled each time all configured DNS servers have been tried.\n#\n#\n#Default:\n# dns_retransmit_interval 5 seconds\n\n#  TAG: dns_timeout\n#\tDNS Query timeout. If no response is received to a DNS query\n#\twithin this time all DNS servers for the queried domain\n#\tare assumed to be unavailable.\n#\n#Default:\n# dns_timeout 2 minutes\n\n#  TAG: dns_defnames\ton|off\n#\tNormally the RES_DEFNAMES resolver option is disabled\n#\t(see res_init(3)).  This prevents caches in a hierarchy\n#\tfrom interpreting single-component hostnames locally.  To allow\n#\tSquid to handle single-component names, enable this option.\n#\n#Default:\n# dns_defnames off\n\n#  TAG: dns_nameservers\n#\tUse this if you want to specify a list of DNS name servers\n#\t(IP addresses) to use instead of those given in your\n#\t/etc/resolv.conf file.\n#\tOn Windows platforms, if no value is specified here or in\n#\tthe /etc/resolv.conf file, the list of DNS name servers are\n#\ttaken from the Windows registry, both static and dynamic DHCP\n#\tconfigurations are supported.\n#\n#\tExample: dns_nameservers 10.0.0.1 192.172.0.4\n#\n#Default:\n# none\n\n# Google DNS\ndns_nameservers 8.8.8.8 4.4.4.4\n\n# Use LAN IP with possible backup if you're running DNS yourself\n#dns_nameservers 10.0.1.3 8.8.8.8\n\n#  TAG: hosts_file\n#\tLocation of the host-local IP name-address associations\n#\tdatabase. Most Operating Systems have such a file on different\n#\tdefault locations:\n#\t- Un*X & Linux:    /etc/hosts\n#\t- Windows NT/2000: %SystemRoot%\\system32\\drivers\\etc\\hosts\n#\t\t\t   (%SystemRoot% value install default is c:\\winnt)\n#\t- Windows XP/2003: %SystemRoot%\\system32\\drivers\\etc\\hosts\n#\t\t\t   (%SystemRoot% value install default is c:\\windows)\n#\t- Windows 9x/Me:   %windir%\\hosts\n#\t\t\t   (%windir% value is usually c:\\windows)\n#\t- Cygwin:          /etc/hosts\n#\n#\tThe file contains newline-separated definitions, in the\n#\tform ip_address_in_dotted_form name [name ...] names are\n#\twhitespace-separated. Lines beginning with an hash (#)\n#\tcharacter are comments.\n#\n#\tThe file is checked at startup and upon configuration.\n#\tIf set to 'none', it won't be checked.\n#\tIf append_domain is used, that domain will be added to\n#\tdomain-local (i.e. not containing any dot character) host\n#\tdefinitions.\n#\n#Default:\n# hosts_file /etc/hosts\nhosts_file /etc/hosts-hphosts\n\n#  TAG: dns_testnames\n#\tThe DNS tests exit as soon as the first site is successfully looked up\n#\n#\tThis test can be disabled with the -D command line option.\n#\n#Default:\n# dns_testnames netscape.com internic.net nlanr.net microsoft.com\n\n#  TAG: append_domain\n#\tAppends local domain name to hostnames without any dots in\n#\tthem.  append_domain must begin with a period.\n#\n#\tBe warned there are now Internet names with no dots in\n#\tthem using only top-domain names, so setting this may\n#\tcause some Internet sites to become unavailable.\n#\n#Example:\n# append_domain .yourdomain.com\n#\n#Default:\n# none\n\n#  TAG: ignore_unknown_nameservers\n#\tBy default Squid checks that DNS responses are received\n#\tfrom the same IP addresses they are sent to.  If they\n#\tdon't match, Squid ignores the response and writes a warning\n#\tmessage to cache.log.  You can allow responses from unknown\n#\tnameservers by setting this option to 'off'.\n#\n#Default:\n# ignore_unknown_nameservers on\n\n#  TAG: ipcache_size\t(number of entries)\n#  TAG: ipcache_low\t(percent)\n#  TAG: ipcache_high\t(percent)\n#\tThe size, low-, and high-water marks for the IP cache.\n#\n#Default:\n# ipcache_size 1024\n# ipcache_low 90\n# ipcache_high 95\nipcache_size 16384\n\n#  TAG: fqdncache_size\t(number of entries)\n#\tMaximum number of FQDN cache entries.\n#\n#Default:\n# fqdncache_size 1024\n# fqdncache_size 131072\nfqdncache_size 1048576\n\n\n# MISCELLANEOUS\n# -----------------------------------------------------------------------------\n\n#  TAG: memory_pools\ton|off\n#\tIf set, Squid will keep pools of allocated (but unused) memory\n#\tavailable for future use.  If memory is a premium on your\n#\tsystem and you believe your malloc library outperforms Squid\n#\troutines, disable this.\n#\n#Default:\n# memory_pools on\n\n#  TAG: memory_pools_limit\t(bytes)\n#\tUsed only with memory_pools on:\n#\tmemory_pools_limit 50 MB\n#\n#\tIf set to a non-zero value, Squid will keep at most the specified\n#\tlimit of allocated (but unused) memory in memory pools. All free()\n#\trequests that exceed this limit will be handled by your malloc\n#\tlibrary. Squid does not pre-allocate any memory, just safe-keeps\n#\tobjects that otherwise would be free()d. Thus, it is safe to set\n#\tmemory_pools_limit to a reasonably high value even if your\n#\tconfiguration will use less memory.\n#\n#\tIf set to zero, Squid will keep all memory it can. That is, there\n#\twill be no limit on the total amount of memory used for safe-keeping.\n#\n#\tTo disable memory allocation optimization, do not set\n#\tmemory_pools_limit to 0. Set memory_pools to \"off\" instead.\n#\n#\tAn overhead for maintaining memory pools is not taken into account\n#\twhen the limit is checked. This overhead is close to four bytes per\n#\tobject kept. However, pools may actually _save_ memory because of\n#\treduced memory thrashing in your malloc library.\n#\n#Default:\n# memory_pools_limit 5 MB\n\n#  TAG: forwarded_for\ton|off\n#\tIf set, Squid will include your system's IP address or name\n#\tin the HTTP requests it forwards.  By default it looks like\n#\tthis:\n#\n#\t\tX-Forwarded-For: 192.1.2.3\n#\n#\tIf you disable this, it will appear as\n#\n#\t\tX-Forwarded-For: unknown\n#\n#Default:\n# forwarded_for on\nforwarded_for off\n\n#  TAG: cachemgr_passwd\n#\tSpecify passwords for cachemgr operations.\n#\n#\tUsage: cachemgr_passwd password action action ...\n#\n#\tSome valid actions are (see cache manager menu for a full list):\n#\t\t5min\n#\t\t60min\n#\t\tasndb\n#\t\tauthenticator\n#\t\tcbdata\n#\t\tclient_list\n#\t\tcomm_incoming\n#\t\tconfig *\n#\t\tcounters\n#\t\tdelay\n#\t\tdigest_stats\n#\t\tdns\n#\t\tevents\n#\t\tfiledescriptors\n#\t\tfqdncache\n#\t\thistograms\n#\t\thttp_headers\n#\t\tinfo\n#\t\tio\n#\t\tipcache\n#\t\tmem\n#\t\tmenu\n#\t\tnetdb\n#\t\tnon_peers\n#\t\tobjects\n#\t\toffline_toggle *\n#\t\tpconn\n#\t\tpeer_select\n#\t\treconfigure *\n#\t\tredirector\n#\t\trefresh\n#\t\tserver_list\n#\t\tshutdown *\n#\t\tstore_digest\n#\t\tstoredir\n#\t\tutilization\n#\t\tvia_headers\n#\t\tvm_objects\n#\n#\t* Indicates actions which will not be performed without a\n#\t  valid password, others can be performed if not listed here.\n#\n#\tTo disable an action, set the password to \"disable\".\n#\tTo allow performing an action without a password, set the\n#\tpassword to \"none\".\n#\n#\tUse the keyword \"all\" to set the same password for all actions.\n#\n#Example:\n# cachemgr_passwd secret shutdown\n# cachemgr_passwd lesssssssecret info stats/objects\n# cachemgr_passwd disable all\n#\n#Default:\n# none\n\n#  TAG: client_db\ton|off\n#\tIf you want to disable collecting per-client statistics,\n#\tturn off client_db here.\n#\n#Default:\n# client_db on\n\n#  TAG: reload_into_ims\ton|off\n#\tWhen you enable this option, client no-cache or ``reload''\n#\trequests will be changed to If-Modified-Since requests.\n#\tDoing this VIOLATES the HTTP standard.  Enabling this\n#\tfeature could make you liable for problems which it\n#\tcauses.\n#\n#\tsee also refresh_pattern for a more selective approach.\n#\n#Default:\n# reload_into_ims off\n\n#  TAG: maximum_single_addr_tries\n#\tThis sets the maximum number of connection attempts for a\n#\thost that only has one address (for multiple-address hosts,\n#\teach address is tried once).\n#\n#\tThe default value is one attempt, the (not recommended)\n#\tmaximum is 255 tries.  A warning message will be generated\n#\tif it is set to a value greater than ten.\n#\n#\tNote: This is in addition to the request re-forwarding which\n#\ttakes place if Squid fails to get a satisfying response.\n#\n#Default:\n# maximum_single_addr_tries 1\n\n#  TAG: retry_on_error\n#\tIf set to on Squid will automatically retry requests when\n#\treceiving an error response. This is mainly useful if you\n#\tare in a complex cache hierarchy to work around access\n#\tcontrol errors.\n#\n#Default:\n# retry_on_error off\n\n#  TAG: as_whois_server\n#\tWHOIS server to query for AS numbers.  NOTE: AS numbers are\n#\tqueried only when Squid starts up, not for every request.\n#\n#Default:\n# as_whois_server whois.ra.net\n# as_whois_server whois.ra.net\n\n#  TAG: offline_mode\n#\tEnable this option and Squid will never try to validate cached\n#\tobjects.\n#\n#Default:\n# offline_mode off\n\n#  TAG: uri_whitespace\n#\tWhat to do with requests that have whitespace characters in the\n#\tURI.  Options:\n#\n#\tstrip:  The whitespace characters are stripped out of the URL.\n#\t\tThis is the behavior recommended by RFC2396.\n#\tdeny:   The request is denied.  The user receives an \"Invalid\n#\t\tRequest\" message.\n#\tallow:  The request is allowed and the URI is not changed.  The\n#\t\twhitespace characters remain in the URI.  Note the\n#\t\twhitespace is passed to redirector processes if they\n#\t\tare in use.\n#\tencode:\tThe request is allowed and the whitespace characters are\n#\t\tencoded according to RFC1738.  This could be considered\n#\t\ta violation of the HTTP/1.1\n#\t\tRFC because proxies are not allowed to rewrite URI's.\n#\tchop:\tThe request is allowed and the URI is chopped at the\n#\t\tfirst whitespace.  This might also be considered a\n#\t\tviolation.\n#\n#Default:\n# uri_whitespace strip\n\n#  TAG: coredump_dir\n#\tBy default Squid leaves core files in the directory from where\n#\tit was started. If you set 'coredump_dir' to a directory\n#\tthat exists, Squid will chdir() to that directory at startup\n#\tand coredump files will be left there.\n#\n#Default:\n# coredump_dir none\n#\n# Leave coredumps in the first cache dir\ncoredump_dir /opt/local/var/squid/cache\n\n#  TAG: chroot\n#\tUse this to have Squid do a chroot() while initializing.  This\n#\talso causes Squid to fully drop root privileges after\n#\tinitializing.  This means, for example, if you use a HTTP\n#\tport less than 1024 and try to reconfigure, you will may get an\n#\terror saying that Squid can not open the port.\n#\n#Default:\n# none\n\n#  TAG: balance_on_multiple_ip\n#\tSome load balancing servers based on round robin DNS have been\n#\tfound not to preserve user session state across requests\n#\tto different IP addresses.\n#\n#\tBy default Squid rotates IP's per request. By disabling\n#\tthis directive only connection failure triggers rotation.\n#\n#Default:\n# balance_on_multiple_ip on\n\n#  TAG: pipeline_prefetch\n#\tTo boost the performance of pipelined requests to closer\n#\tmatch that of a non-proxied environment Squid can try to fetch\n#\tup to two requests in parallel from a pipeline.\n#\n#\tDefaults to off for bandwidth management and access logging\n#\treasons.\n#\n#Default:\n# pipeline_prefetch off\n\n#  TAG: high_response_time_warning\t(msec)\n#\tIf the one-minute median response time exceeds this value,\n#\tSquid prints a WARNING with debug level 0 to get the\n#\tadministrators attention.  The value is in milliseconds.\n#\n#Default:\n# high_response_time_warning 0\n\n#  TAG: high_page_fault_warning\n#\tIf the one-minute average page fault rate exceeds this\n#\tvalue, Squid prints a WARNING with debug level 0 to get\n#\tthe administrators attention.  The value is in page faults\n#\tper second.\n#\n#Default:\n# high_page_fault_warning 0\n\n#  TAG: high_memory_warning\n#\tIf the memory usage (as determined by mallinfo) exceeds\n#\tthis amount, Squid prints a WARNING with debug level 0 to get\n#\tthe administrators attention.\n#\n#Default:\n# high_memory_warning 0 KB\n\n#  TAG: sleep_after_fork\t(microseconds)\n#\tWhen this is set to a non-zero value, the main Squid process\n#\tsleeps the specified number of microseconds after a fork()\n#\tsystem call. This sleep may help the situation where your\n#\tsystem reports fork() failures due to lack of (virtual)\n#\tmemory. Note, however, if you have a lot of child\n#\tprocesses, these sleep delays will add up and your\n#\tSquid will not service requests for some amount of time\n#\tuntil all the child processes have been started.\n#\tOn Windows value less then 1000 (1 milliseconds) are\n#\trounded to 1000.\n#\n#Default:\n# sleep_after_fork 0\n\n#  TAG: zero_buffers\ton|off\n#\tSquid by default will zero all buffers before using or reusing them.\n# \tSetting this to 'off' will result in fixed-sized temporary buffers\n#\tnot being zero'ed. This may give a performance boost on certain\n#\tplatforms but it may result in undefined behaviour at the present\n#\ttime.\n#\n#Default:\n# zero_buffers on\n\n#  TAG: windows_ipaddrchangemonitor\ton|off\n#\tOn Windows Squid by default will monitor IP address changes and will \n#\treconfigure itself after any detected event. This is very useful for\n#\tproxies connected to internet with dial-up interfaces.\n#\tIn some cases (a Proxy server acting as VPN gateway is one) it could be\n#\tdesiderable to disable this behaviour setting this to 'off'.\n#\tNote: after changing this, Squid service must be restarted.\n#\n#Default:\n# windows_ipaddrchangemonitor on\n\n"
  },
  {
    "path": "disable.sh",
    "content": "#!/bin/bash -x\n\n# macOS-Fortress: Firewall, Blackhole, and Privatizing Proxy\n# for Trackers, Attackers, Malware, Adware, and Spammers\n\n# disable.sh\n\n# commands\nSUDO=/usr/bin/sudo\nPORT=/opt/local/bin/port\nLAUNCHCTL=/bin/launchctl\nPFCTL=/sbin/pfctl\nKILLALL=/usr/bin/killall\nCAT=/bin/cat\nECHO=/bin/echo\n\n$CAT <<HELPSTRING\nmacOS-Fortress: Firewall, Blackhole, and Privatizing Proxy\nfor Trackers, Attackers, Malware, Adware, and Spammers\nKernel-level, OS-level, and client-level security for macOS,\nwith On-Demand and On-Access Anti-Virus Scanning.\n\nThis disable script will unload all launch daemons, disable\nthe pf firewall, and list all insalled files WITHOUT removing them.\n\nDisabling…\nHELPSTRING\n\n$ECHO \"Unloading launchctl daemons…\"\n\nLAUNCHDAEMONS=/Library/LaunchDaemons\n\nlaunchctl_unload () { if [ -f $LAUNCHDAEMONS/$PLIST ]; then $SUDO $LAUNCHCTL unload -w $LAUNCHDAEMONS/$PLIST; fi; }\n\nfor PLIST in \\\n\tnet.openbsd.pf.plist \\\n\tnet.openbsd.pf.brutexpire.plist \\\n\tnet.emergingthreats.blockips.plist \\\n\tnet.dshield.block.plist \\\n\tnet.hphosts.hosts.plist \\\n\tcom.github.essandess.easylist-pac.plist \\\n\tcom.github.essandess.adblock2privoxy.plist \\\n\tcom.github.essandess.adblock2privoxy.nginx.plist \\\n\torg.squid-cache.squid-rotate.plist \\\n\t; do\n\tlaunchctl_unload\ndone\n\n\n$ECHO \"Disabling pf firewall…\"\n\n$SUDO $PFCTL -d\n\n\n$ECHO \"Killing the squid and privoxy proxies…\"\n\n$SUDO $PORT unload squid\n$SUDO $KILLALL -9 squid\n$SUDO $KILLALL -9 '(squid-1)'\n$SUDO $PORT unload privoxy\n\n\n$ECHO \"\"\n$ECHO \"These files still exist:\"\n\nfname_exists () { if [ -f $FNAME ]; then $ECHO \"$FNAME\"; fi; }\n\nPROXY_PAC_DIRECTORY=/Library/WebServer/Documents\n\nfor FNAME in \\\n\t$PROXY_PAC_DIRECTORY/proxy.pac \\\n\t/etc/hosts.orig \\\n\t/etc/pf.conf.orig \\\n\t$LAUNCHDAEMONS/net.openbsd.pf.plist \\\n\t$LAUNCHDAEMONS/net.openbsd.pf.brutexpire.plist \\\n\t$LAUNCHDAEMONS/net.emergingthreats.blockips.plist \\\n\t$LAUNCHDAEMONS/net.dshield.block.plist \\\n\t$LAUNCHDAEMONS/net.hphosts.hosts.plist \\\n\t$LAUNCHDAEMONS/com.github.essandess.easylist-pac.plist \\\n\t$LAUNCHDAEMONS/com.github.essandess.adblock2privoxy.plist \\\n\t$LAUNCHDAEMONS/com.github.essandess.adblock2privoxy.nginx.plist \\\n\t$LAUNCHDAEMONS/org.squid-cache.squid-rotate.plist \\\n\t$HOME/Library/LaunchAgents/org.opensource.flashcookiedelete.plist \\\n\t/usr/local/etc/blockips.conf \\\n\t/usr/local/etc/whitelist.txt \\\n\t/usr/local/etc/blacklist.txt \\\n\t/usr/local/bin/macosfortress_boot_check \\\n\t/usr/local/bin/pf_restart \\\n\t/usr/local/bin/squid_restart \\\n\t/usr/local/bin/privoxy_restart \\\n\t/usr/local/bin/easylist_pac.py \\\n\t/usr/local/bin/adblock2privoxy \\\n\t; do\n\tfname_exists\ndone\n\nexit 0\n"
  },
  {
    "path": "macosfortress_setup_check.sh",
    "content": "#!/bin/sh\n\n# macOS-Fortress: Firewall, Blackhole, and Privatizing Proxy\n# for Trackers, Attackers, Malware, Adware, and Spammers\n\n# macos_fortress_setup_check.sh\n\n# commands\n\nSUDO=/usr/bin/sudo\nPORT=/opt/local/bin/port\nLAUNCHCTL=/bin/launchctl\nPFCTL=/sbin/pfctl\nKILLALL=/usr/bin/killall\nCAT=/bin/cat\nSED=/usr/bin/sed\nGREP=/usr/bin/grep\nEGREP=/usr/bin/egrep\nECHO=/bin/echo\nPFCTL=/sbin/pfctl\nHEAD=/usr/bin/head\nTAIL=/usr/bin/tail\nLSOF=/usr/sbin/lsof\nKILLALL=/usr/bin/killall\nPS=/bin/ps\nWC=/usr/bin/wc\nCURL=/usr/bin/curl\nAWK=/usr/bin/awk\nHOSTNAME=/bin/hostname\n\nJSC=/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc\n\nPROXY_PAC_SERVER=localhost\nPROXY_SERVER=localhost\nLAUNCHDAEMONS=/Library/LaunchDaemons\n# apache for proxy.pac\nif ! [ -d /Applications/Server.app ]\nthen\n    # macOS native apache server for proxy.pac\n    PROXY_PAC_DIRECTORY=/Library/WebServer/Documents\nelse\n    # macOS Server for proxy.pac\n    PROXY_PAC_DIRECTORY=\"/Library/Server/Web/Data/Sites/$(HOSTNAME)\"\nfi\n\nfname_exists () { [ -f $FNAME ] && echo \"[✅] ${FNAME} exists\" || echo \"[❌] ${FNAME} DOESN'T EXIST!\"; }\n\n# print launchd status, or echo \"# comment line\"\nlaunchctl_check () { $EGREP -q -e '^(\\d+|-)+\\s[0]' <<< ${LINE} && echo \"[✅]\\t${LINE}\" || echo \"[❌]\\t${LINE}\"; }\n\n# launchctl_check () { [ \"${PLIST##\\#*}\" == \"\" ] && echo \"${PLIST}\" || ( [ -f $LAUNCHDAEMONS/$PLIST ] && ( LINE=`$SUDO $LAUNCHCTL list | $EGREP -e $(echo $PLIST | $SED -e 's/.plist$//')'$'`; $EGREP -q -e '^(\\d+|-)+\\s[0]' <<< $LINE && echo \"[✅] ${LINE}\" || \"[❌] ${LINE}\" ) || echo \"[❌] $LAUNCHDAEMONS/$PLIST: NOT INSTALLED!\"; ) }\n\n$CAT <<HELPSTRING\nChecking macOS-Fortress installed items (run as sudo)…\nHELPSTRING\n\n# launchcd.plist\n$CAT <<EOF\n\nChecking launchd.plist files…\nEOF\n\nLAUNCHD_PLISTS=( \\\n\tnet.openbsd.pf.plist \\\n\tnet.openbsd.pf.brutexpire.plist \\\n\tnet.emergingthreats.blockips.plist \\\n\tnet.dshield.block.plist \\\n\tnet.hphosts.hosts.plist \\\n\tcom.github.essandess.easylist-pac.plist \\\n\tcom.github.essandess.adblock2privoxy.plist \\\n\tcom.github.essandess.adblock2privoxy.nginx.plist \\\n\torg.squid-cache.squid-rotate.plist \\\n        org.macports.Squid.plist \\\n        org.macports.Privoxy.plist \\\n        org.macports.clamd.plist \\\n        org.macports.freshclam.plist \\\n        org.macports.ClamavScanSchedule.plist \\\n        org.macports.ClamavScanOnAccess.plist \\\n    )\n\nfor PLIST in \"${LAUNCHD_PLISTS[@]}\" \\\n\t; do \\\n\tFNAME=\"${LAUNCHDAEMONS}/${PLIST}\"; \\\n\tfname_exists; \\\ndone\n\n$CAT <<'EOF'\n\nChecking launchd.plist's. These should all be installed with return\ncode 0 (2d column of `sudo launchctl list`)…\nEOF\n\nIFS=\"|\"\nLAUNCHD_PLISTS_REGEX=\"(${LAUNCHD_PLISTS[*]%%.plist})\"\nIFS=$'\\n'\nLAUNCHD_LIST=(`$SUDO $LAUNCHCTL list | $EGREP \"${LAUNCHD_PLISTS_REGEX}\"`)\n\n# loaded launchcd.plist's\nfor LINE in \"${LAUNCHD_LIST[@]}\" \\\n\t; do \\\n\tlaunchctl_check; \\\ndone\n# unloaded launchcd.plist's\nLAUNCHD_SERVICES=(`for L in \"${LAUNCHD_LIST[@]}\"; do $AWK '{ print $3 }' <<< \"${L}\"; done`)\nIFS=\"|\"\nLAUNCHD_SERVICES_REGEX=\"(${LAUNCHD_SERVICES[*]})\"\nIFS=$'\\n'\nfor SERVICE in \"${LAUNCHD_PLISTS[@]}\" \\\n\t; do \\\n\t$EGREP -q -e \"${LAUNCHD_SERVICES_REGEX}\" <<< \"${SERVICE%%.plist}\" \\\n\t|| echo \"[❌] ${SERVICE%%.plist} isn't loaded!\"; \\\ndone\n\n# PF\n$CAT <<EOF\n\nChecking PF files…\nEOF\n\nunset IFS\nPF_FILES=( \\\n\t/etc/pf.conf \\\n\t/usr/local/etc/blockips.conf \\\n        /usr/local/etc/emerging-Block-IPs.txt \\\n        /usr/local/etc/compromised-ips.txt \\\n        /usr/local/etc/dshield_block_ip.txt \\\n\t/usr/local/etc/block.txt \\\n\t/usr/local/etc/block.txt.asc \\\n)\n\nfor FNAME in \"${PF_FILES[@]}\" \\\n\t; do \\\n\tfname_exists; \\\ndone\n\n$CAT <<EOF\n\nChecking PF…\nEOF\n\n# pfctl\nif [[ `$SUDO $PFCTL -s info | $HEAD -1 | $TAIL -1` =~ \"Status: Enabled\" ]]; then\n    echo \"[✅] PF is enabled and running\"\nelse\n    $CAT <<EOF\n[❌] PF isn't enabled! Troubleshooting:\n\nsudo pfctl -si\nless /var/log/pf.log\nsudo /opt/local/bin/gpg --homedir /var/root/.gnupg --list-keys | grep -A2 -B1 -i dshield.org\nsudo pfctl -Fall && sudo pfctl -ef /etc/pf.conf\nEOF\nfi\n\n# hphosts\n$CAT <<EOF\n\nChecking hphosts files…\nEOF\n\nHPHOSTS_FILES=( \\\n\t/etc/hosts-hphosts \\\n\t/usr/local/etc/hosts.zip \\\n\t/usr/local/etc/hphosts-partial.asp \\\n\t/usr/local/etc/whitelist.txt \\\n\t/usr/local/etc/blacklist.txt \\\n)\n\nfor FNAME in \"${HPHOSTS_FILES[@]}\" \\\n\t; do \\\n\tfname_exists; \\\ndone\n\n$CAT <<EOF\n\nChecking /etc/hosts-hphosts creation…\nEOF\n\n# pfctl\nif [ -f /etc/hosts-hphosts ]; then\n    echo \"[✅] /etc/hosts-hphosts exists\"\nelse\n    $CAT <<EOF\n[❌] /etc/hosts-hphosts doesn't exist! Troubleshooting:\n\nsudo /opt/local/bin/gpg --homedir /var/root/.gnupg --list-keys | grep -A2 -B1 -i hpHosts\nsudo launchctl unload -w /Library/LaunchDaemons/net.hphosts.hosts.plist\nsudo launchctl load -w /Library/LaunchDaemons/net.hphosts.hosts.plist\nEOF\nfi\n\n# Proxy PAC and proxy chain\n$CAT <<EOF\n\nChecking proxy PAC and proxy chain files…\nEOF\n\nPROXY_FILES=( \\\n\t$PROXY_PAC_DIRECTORY/proxy.pac.orig \\\n\t$PROXY_PAC_DIRECTORY/proxy.pac \\\n\t/usr/local/bin/easylist_pac.py \\\n\t/usr/local/bin/adblock2privoxy \\\n        /usr/local/etc/proxy.pac \\\n\t/usr/local/etc/adblock2privoxy/nginx.conf \\\n        /usr/local/etc/adblock2privoxy/css/default.html \\\n        /usr/local/etc/adblock2privoxy/privoxy/ab2p.action \\\n        /usr/local/etc/adblock2privoxy/privoxy/ab2p.filter \\\n        /usr/local/etc/adblock2privoxy/privoxy/ab2p.system.action \\\n        /usr/local/etc/adblock2privoxy/privoxy/ab2p.system.filter \\\n        /opt/local/etc/squid/squid.conf \\\n        /opt/local/var/squid/logs/cache.log \\\n        /opt/local/etc/privoxy/config \\\n        /opt/local/var/log/privoxy/logfile \\\n)\n\nfor FNAME in \"${PROXY_FILES[@]}\" \\\n\t; do \\\n\tfname_exists; \\\ndone\n\n$CAT <<EOF\n\nChecking proxy status…\nEOF\n\n# squid\nif [[ `$SUDO $LSOF -i ':3128' | $TAIL -1` && `$PS -ef | $GREP \"/opt/local/sbin/squid -s\" | $EGREP -v '(grep|daemondo)' | $WC -l` -eq 1 ]]; then\n    echo \"[✅] Squid is running properly\"\nelse\n    $CAT <<EOF\n[❌] Squid isn't running properly! Troubleshooting:\n\nsudo squid -k check\nsudo less /opt/local/var/squid/logs/cache.log\nsudo port unload squid4\nsudo killall '(squid-1)'\nsudo killall 'squid'\nsleep 5\nsudo port load squid4\nEOF\nfi\n\n# privoxy\nif [[ `$SUDO $LSOF -i ':8118' | $TAIL -1` ]]; then\n    echo \"[✅] Privoxy is running properly\"\nelse\n    $CAT <<EOF\n[❌] Privoxy isn't running properly! Troubleshooting:\n\nsudo less /opt/local/var/log/privoxy/logfile\nsudo port unload privoxy\nsudo port load privoxy\nEOF\nfi\n\n# Privoxy configuration http://p.p/ via proxy server\nif ! [[ `( http_proxy=http://${PROXY_SERVER}:3128; $CURL -s --head http://p.p/ | $HEAD -n 1 | $GREP \"HTTP/1.\\d [23]\\d\\d\" )` ]]; then\n    echo \"[✅] Privoxy config http://p.p/ via http://${PROXY_SERVER}:3128 is running properly\"\nelse\n    $CAT <<EOF\n[❌] Privoxy config http://p.p/ via http://${PROXY_SERVER}:3128 isn't running properly! Troubleshooting:\n\nsudo less /opt/local/var/log/privoxy/logfile\nsudo port unload privoxy\nsudo port load privoxy\nEOF\nfi\n\n# nginx\nif [[ `$SUDO $LSOF -i ':8119' | $TAIL -1` ]]; then\n    echo \"[✅] nginx is running properly\"\nelse\n    $CAT <<'EOF'\n[❌] nginx isn't running properly! Troubleshooting:\n\nsudo ps -f `cat /opt/local/var/run/nginx/nginx-adblock2privoxy.pid`\nsudo launchctl unload -w /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.nginx.plist\nsudo launchctl load -w /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.nginx.plist\nEOF\nfi\n\n# Javascript parsing of proxy.pac.orig and proxy.pac\nif [ -x $JSC -a -f $PROXY_PAC_DIRECTORY/proxy.pac.orig ]; then \\\n    $JSC $PROXY_PAC_DIRECTORY/proxy.pac.orig >/dev/null 2>&1 \\\n\t&& echo \"[✅] PAC $PROXY_PAC_DIRECTORY/proxy.pac.orig passes Javascript parsing\" \\\n\t|| echo \"[❌] PAC $PROXY_PAC_DIRECTORY/proxy.pac.orig fails Javascript parsing\" ; \\\nfi\nif [ -x $JSC -a -f $PROXY_PAC_DIRECTORY/proxy.pac ]; then \\\n    $JSC $PROXY_PAC_DIRECTORY/proxy.pac >/dev/null 2>&1 \\\n\t&& echo \"[✅] PAC $PROXY_PAC_DIRECTORY/proxy.pac passes Javascript parsing\" \\\n\t|| echo \"[❌] PAC $PROXY_PAC_DIRECTORY/proxy.pac fails Javascript parsing\" ; \\\nfi\n\n# proxy.pac on proxy server\nif [[ `$CURL -s --head http://${PROXY_PAC_SERVER}/proxy.pac | $HEAD -n 1 | $GREP \"HTTP/1.\\d [23]\\d\\d\"`  ]]; then\n    echo \"[✅] Web server for http://${PROXY_PAC_SERVER}/proxy.pac is running properly\"\nelse\n    $CAT <<EOF\n[❌] Web server for http://${PROXY_PAC_SERVER}/proxy.pac isn't running properly! Troubleshooting:\n\nsudo apachectl start\nEOF\nfi\n\n# blackhole on proxy server\nif [[ `$CURL -s --head http://${PROXY_SERVER}:8119/ | $HEAD -n 1 | $GREP \"HTTP/1.[01] [23]\\d\\d\"` ]]; then\n    echo \"[✅] Blackhole server for http://${PROXY_SERVER}:8119/ is running properly\"\nelse\n    $CAT <<EOF\n[❌] Blackhole server for http://${PROXY_SERVER}:8119/ isn't running properly! Troubleshooting:\n\nsudo ps -f \\`cat /opt/local/var/run/nginx/nginx-adblock2privoxy.pid\\`\nsudo launchctl unload -w /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.nginx.plist\nsudo launchctl load -w /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.nginx.plist\nEOF\nfi\n"
  },
  {
    "path": "match-all.action",
    "content": "#############################################################################\n# $Id: match-all.action,v 1.4 2016/03/27 16:54:05 fabiankeil Exp $\n#\n# This file contains the actions that are applied to all requests and\n# may be overruled later on by other actions files. Less experienced\n# users should only edit this file through the actions file editor.\n#\n#############################################################################\n# original:\n#{ \\\n#+change-x-forwarded-for{block} \\\n#+client-header-tagger{css-requests} \\\n#+client-header-tagger{image-requests} \\\n#+hide-from-header{block} \\\n#+set-image-blocker{pattern} \\\n#}\n#/ # Match all URLs\n{ \\\n+change-x-forwarded-for{block} \\\n+deanimate-gifs{last} \\\n+filter{refresh-tags} \\\n+filter{img-reorder} \\\n+filter{banners-by-size} \\\n+filter{webbugs} \\\n+filter{jumping-windows} \\\n+filter{ie-exploits} \\\n+hide-from-header{block} \\\n+hide-referrer{conditional-block} \\\n+session-cookies-only \\\n+set-image-blocker{pattern} \\\n}\n/ # Match all URLs\n# User-Agent\n# See http://www.christianschenk.org/blog/enhancing-your-privacy-using-squid-and-privoxy/\n{ \\\n+hide-referrer{conditional-forge} \\\n+hide-user-agent{Mozilla/5.0 (iPad; CPU OS 12_1_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1} \\\n}\n/ # Match all URLs\n"
  },
  {
    "path": "net.dshield.block.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>net.dshield.block</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n \t\t<string>-c</string>\n\t<string>/bin/mkdir -p /usr/local/etc ; /opt/local/bin/wget -N -P /usr/local/etc http://feeds.dshield.org/block.txt &amp;&amp; /opt/local/bin/wget -N -P /usr/local/etc http://feeds.dshield.org/block.txt.asc &amp;&amp; /opt/local/bin/gpg --verify /usr/local/etc/block.txt.asc /usr/local/etc/block.txt &amp;&amp; /usr/bin/perl -ane &apos;use POSIX; use Data::Validate::IP; my $vip=Data::Validate::IP-&gt;new; if (/^\\w*#/) { print; } elsif ($vip-&gt;is_ipv4($F[0]) &amp; $vip-&gt;is_ipv4($F[1]) &amp; isdigit($F[2]) &amp; (0&lt;= $F[2] &amp; $F[2]&lt;=32)) { print $F[0], &quot;/&quot;, $F[2], &quot;\\n&quot;; }&apos; /usr/local/etc/block.txt &gt; /tmp/dshield_block_ip.txt &amp;&amp; /usr/bin/install -m 644 -g admin -S /tmp/dshield_block_ip.txt /usr/local/etc/dshield_block_ip.txt ; /bin/rm -f /tmp/dshield_block_ip.txt ; /sbin/pfctl -a blockips -T load -f /usr/local/etc/blockips.conf</string>\n\t</array>\n\t<key>RunAtLoad</key>\n\t<false/>\n\t<key>StartInterval</key>\n\t<integer>11250</integer>\n\t<key>StandardErrorPath</key>\n\t<string>/var/log/pf.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/pf.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "net.emergingthreats.blockips.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>net.emergingthreats.blockips</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n \t\t<string>-c</string>\n\t<string>/bin/mkdir -p /usr/local/etc ; /opt/local/bin/wget -N -P /usr/local/etc http://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt ; /opt/local/bin/wget -N -P /usr/local/etc http://rules.emergingthreats.net/blockrules/compromised-ips.txt ; /sbin/pfctl -a blockips -T load -f /usr/local/etc/blockips.conf</string>\n\t</array>\n\t<key>RunAtLoad</key>\n\t<false/>\n\t<key>StartInterval</key>\n\t<integer>47250</integer>\n\t<key>StandardErrorPath</key>\n\t<string>/var/log/pf.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/pf.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "net.hphosts.hosts.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>net.hphosts.hosts</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n \t\t<string>-c</string>\n\t<string>/bin/mkdir -p /usr/local/etc ; ( /bin/test -f /etc/hosts.orig || /usr/bin/install -m 644 -S /etc/hosts /etc/hosts.orig ) &amp;&amp; /bin/cp /etc/hosts.orig /tmp/hosts &amp;&amp; /opt/local/bin/wget -N -P /usr/local/etc http://hosts-file.net/download/hosts.zip &amp;&amp; /opt/local/bin/wget -N -P /usr/local/etc http://hosts-file.net/hphosts-partial.asp &amp;&amp; /usr/bin/unzip -o /usr/local/etc/hosts.zip -d /tmp/hphosts &amp;&amp; /opt/local/bin/gpg --verify /tmp/hphosts/hosts.txt.asc /tmp/hphosts/hosts.txt &amp;&amp; ( /bin/test -f /usr/local/etc/whitelist.txt || /usr/bin/printf &apos;\\n# whitelisted hosts (FQDN and DN) will be deleted from hphost&apos;&quot;&apos;&quot;&apos;s host.zip\\n#\\n&apos; &gt; /usr/local/etc/whitelist.txt )  &amp;&amp; /usr/bin/printf &apos;\\n# hpHosts hosts.txt from http://hosts-file.net/download/hosts.zip:\\n&apos; &gt; /tmp/hosts-block.txt &amp;&amp; /bin/cat /tmp/hphosts/hosts.txt | tr -d &apos;\\015&apos; | /usr/bin/perl -ane &apos;use POSIX; use Data::Validate::Domain qw(is_domain); { if (/^127\\.0\\.0\\.1\\s*(.+)$/) { print qq#127.0.0.1\\t$1\\n# if is_domain($1); } else { print; } }&apos; &gt;&gt; /tmp/hosts-block.txt &amp;&amp; /usr/bin/printf &apos;\\n# hpHosts hphosts-partial.asp from http://hosts-file.net/hphosts-partial.asp:\\n&apos; &gt;&gt; /tmp/hosts-block.txt &amp;&amp; /bin/cat /usr/local/etc/hphosts-partial.asp | tr -d &apos;\\015&apos; | /usr/bin/perl -ane &apos;use POSIX; use Data::Validate::Domain qw(is_domain); { if (/^127\\.0\\.0\\.1\\s*(.+)$/) { print qq#127.0.0.1\\t$1\\n# if is_domain($1); } else { print; } }&apos; &gt;&gt; /tmp/hosts-block.txt &amp;&amp; ( /bin/test -f /usr/local/etc/blacklist.txt &amp;&amp; /bin/cat /usr/local/etc/blacklist.txt &gt;&gt; /tmp/hosts ) &amp;&amp; /usr/bin/grep -v -E &quot;`/usr/bin/perl -ane &apos;BEGIN{$s=qw#\\\\s+(#}; { if (!/^\\w*#/&amp;length($F[0])&gt;0){$s = $s . $F[0] . qw(|);}} END{$s = substr($s,0,length($s)-1) . qw#)\\\\s*#; $s=~s/\\\\./\\\\\\\\./g; print $s;}&apos; /usr/local/etc/whitelist.txt`&quot; /tmp/hosts-block.txt &gt;&gt; /tmp/hosts &amp;&amp; /usr/bin/install -m 644 -S /tmp/hosts /etc/hosts-hphosts ; /bin/rm -fr /tmp/hosts /tmp/hphosts /tmp/hosts-block.txt ; /opt/local/sbin/squid -k reconfigure</string>\n\t</array>\n        <key>RunAtLoad</key>\n        <false/>\n        <key>StartInterval</key>\n\t<integer>86850</integer>\n\t<key>StandardErrorPath</key>\n\t<string>/var/log/system.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/system.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "net.openbsd.pf.brutexpire.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>net.openbsd.pf.brutexpire</string>\n\t<key>Program</key>\n\t<string>/sbin/pfctl</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/sbin/pfctl</string>\n\t\t<string>-t</string>\n\t\t<string>bruteforce</string>\n\t\t<string>-T</string>\n\t\t<string>expire</string>\n\t\t<string>604800</string>\n\t</array>\n        <key>RunAtLoad</key>\n        <false/>\n        <key>StartInterval</key>\n        <integer>86400</integer>\n\t<key>StandardErrorPath</key>\n\t<string>/var/log/pf.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/pf.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "net.openbsd.pf.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n        <key>Disabled</key>\n        <string>false</string>\n\t<key>Label</key>\n\t<string>net.openbsd.pf</string>\n        <key>WorkingDirectory</key>\n        <string>/var/run</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n                <string>/bin/bash</string>\n                <string>-c</string>\n\t\t<string>for tt in {1..4}; do if [[ `/sbin/ifconfig | /opt/local/bin/pcregrep -M -o &apos;^[^\\t:]+:([^\\n]|\\n\\t)*status: active&apos; | /usr/bin/egrep -o -m 1 &apos;^[^\\t:]+&apos;` = &apos;&apos; ]]; then /bin/sleep 45; else /sbin/pfctl -Fall &amp;&amp; /sbin/pfctl -ef /etc/pf.conf; break; fi; done</string>\n\t</array>\n\t<key>RunAtLoad</key>\n\t<true/>\n\t<key>StandardErrorPath</key>\n\t<string>/var/log/pf.log</string>\n\t<key>StandardOutPath</key>\n\t<string>/var/log/pf.log</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "org.opensource.flashcookiedelete.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Disabled</key>\n\t<true/>\n\t<key>Label</key>\n\t<string>org.opensource.flashcookiedelete.plist</string>\n\t<key>Program</key>\n\t<string>/bin/bash</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n\t\t<string>-c</string>\n\t\t<string>/usr/bin/find ~/Library/Preferences/Macromedia/Flash\\ Player ! -path ~/Library/Preferences/Macromedia/Flash\\ Player/macromedia.com/support/flashplayer/sys/settings.sol -delete</string>\n\t</array>\n\t<key>RunAtLoad</key>\n\t<true/>\n\t<key>ServiceDescription</key>\n\t<string>Delete Flash Cookies</string>\n\t<key>StartInterval</key>\n\t<integer>1800</integer>\n</dict>\n</plist>\n"
  },
  {
    "path": "org.squid-cache.squid-rotate.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Label</key>\n\t<string>org.squid-cache.squid-rotate</string>\n\t<key>ProgramArguments</key>\n\t<array>\n\t\t<string>/bin/bash</string>\n \t\t<string>-c</string>\n\t\t<string>/opt/local/sbin/squid -k rotate ; find /opt/local/var/squid/logs -mindepth 1 -mtime +30 -exec /bin/rm {} &apos;;&apos;</string>\n\t</array>\n\t<key>StartCalendarInterval</key>\n\t<dict>\n\t\t<key>Hour</key>\n\t\t<integer>0</integer>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "pf.conf",
    "content": "#\n# Default PF configuration file.\n#\n# This file contains the main ruleset, which gets automatically loaded\n# at startup.  PF will not be automatically enabled, however.  Instead,\n# each component which utilizes PF is responsible for enabling and disabling\n# PF via -E and -X as documented in pfctl(8).  That will ensure that PF\n# is disabled only when the last enable reference is released.\n#\n# Care must be taken to ensure that the main ruleset does not get flushed,\n# as the nested anchors rely on the anchor point defined here. In addition,\n# to the anchors loaded by this file, some system services would dynamically \n# insert anchors into the main ruleset. These anchors will be added only when\n# the system service is used and would removed on termination of the service.\n#\n# See pf.conf(5) for syntax.\n#\n\n# References for modifications:\n# The Book of PF by Peter N.M. Hansteen, p. 21\n# http://ikawnoclast.com/security/mac-os-x-pf-firewall-avoiding-known-bad-guys/\n# http://support.apple.com/kb/HT5519?viewlocale=en_US&locale=en_US\n# http://blog.scottlowe.org/2013/05/15/using-pf-on-os-x-mountain-lion/\n# http://krypted.com/mac-security/a-cheat-sheet-for-using-pf-in-os-x-lion-and-up/\n\n\n# Internal interface; use the command `ifconfig -a` or:\n# $ ifconfig | pcregrep -M -o '^[^\\t:]+:([^\\n]|\\n\\t)*status: active' | egrep -o -m 1 '^[^\\t:]+'\nint_if = \"en0\"\n\n# VPN network (uncomment '#vpn#' comment lines)\n# $vpn_net == utun0/24 when Tunnelblick creates utun0\n#vpn# vpn_net = \"10.8.0/24\"   # utun0 interface doesn't exist at boot time\n\n\n# Options\nset block-policy return\nset fingerprints \"/etc/pf.os\"\nset ruleset-optimization basic\nset skip on lo0\n\n \n# Normalization\n# Scrub incoming packets\nscrub in all no-df\n \n#\n# com.apple anchor point\n#\nscrub-anchor \"com.apple/*\"\n\n\n# Queueing\n \n\n# Translation\n\n# OpenVPN Server NAT\n# \n# The Book of PF, p. 21\n# Allow VPN connections to the VPN host:\n# http://serverfault.com/questions/555594/troubleshoot-broken-tcp-from-openvpn-client-to-server-but-ping-traceroute-work\n#tun_if = \"utun0\"\n#no nat on ! $tun_if from $vpn_net to ($int_if)\n#nat on ! $tun_if from $vpn_net to ! ($int_if) -> ($int_if)\n# Use a list in case Tunnelblick creates multiples utun interaces\n#tun_if = \"{ utun0, utun1, utun2, utun3, utun4, utun5, utun6, utun7, utun8, utun9 }\"\n#vpn# not_tun_if = \"{ !utun0, !utun1, !utun2, !utun3, !utun4, !utun5, !utun6, !utun7, !utun8, !utun9 }\"\n#vpn# no nat on $not_tun_if from $vpn_net to ($int_if)\n#vpn# nat on $not_tun_if from $vpn_net to ! ($int_if) -> ($int_if)\n# This rule must be included below BEFORE these packets are passed by other rules:\n# pass in quick on $tun_if reply-to $tun_if from $vpn_net to $int_if\n\nnat-anchor \"com.apple/*\"\nrdr-anchor \"com.apple/*\"\ndummynet-anchor \"com.apple/*\"\nanchor \"com.apple/*\"\nload anchor \"com.apple\" from \"/etc/pf.anchors/com.apple\"\n\n# macOS Server Adaptive Firewall\n# Comment out for non-macOS Server instances\n# anchor \"com.apple.server-firewall/*\"\n# load anchor \"com.apple.server-firewall\" from \"/etc/pf.anchors/com.apple.server-firewall\"\n\n# Filtering\n\n# Block by default\nblock all\n\n# Debugging:\n#pass quick log (all, to pflog0) all\n#block log (all, to pflog0) all\n\n# debugging rules\n# $ sudo ifconfig pflog0 create \n# $ sudo tcpdump -n -e -ttt -i pflog0\n# $ sudo ifconfig pflog0 destroy \n# block log (all, to pflog0) all\n\n# Allow VPN connections to the VPN host:\n# http://serverfault.com/questions/555594/troubleshoot-broken-tcp-from-openvpn-client-to-server-but-ping-traceroute-work\n# pass in quick on $tun_if reply-to $tun_if from $vpn_net to $int_if\n# Rule for a lot of utun interfaces in case Tunnelblick creates extras\n#vpn# pass in quick on utun0 reply-to utun0 from $vpn_net to $int_if\n#vpn# pass in quick on utun1 reply-to utun1 from $vpn_net to $int_if\n#vpn# pass in quick on utun2 reply-to utun2 from $vpn_net to $int_if\n#vpn# pass in quick on utun3 reply-to utun3 from $vpn_net to $int_if\n#vpn# pass in quick on utun4 reply-to utun4 from $vpn_net to $int_if\n#vpn# pass in quick on utun5 reply-to utun5 from $vpn_net to $int_if\n#vpn# pass in quick on utun6 reply-to utun6 from $vpn_net to $int_if\n#vpn# pass in quick on utun7 reply-to utun7 from $vpn_net to $int_if\n#vpn# pass in quick on utun8 reply-to utun8 from $vpn_net to $int_if\n#vpn# pass in quick on utun9 reply-to utun9 from $vpn_net to $int_if\n\n# Local net\ntable <lan_inet> const { 10/8, 172.16/12, 192.168/16 }\ntable <lan_inet6> const { ::1, fe80::/10 }\n\npass quick inet from <lan_inet> to any keep state\npass quick inet6 from <lan_inet6> to any keep state\n\n# Antispoof\nantispoof log quick for $int_if inet\n\n# Block to/from illegal destinations or sources\nblock drop in log quick from no-route to any\nblock drop in log quick from urpf-failed to any\n# This is observed on macOS\n#block drop in log quick on $int_if from any to 255.255.255.255\n\n# Whitelist\n# Hardcoded IPs\n#mydomainname_com = \"xxx.xxx.xxx.xxx\"\n#table <whitelist> const { $mydomainname_com }\n#pass in quick from <whitelist>\n#pass out quick to <whitelist>\n\n# Block brute force attacks\ntable <bruteforce> persist\nblock drop log quick from <bruteforce>\n\n# Allow application-specific traffic over these interfaces\n# multicast DNS\npass on $int_if proto { udp, tcp } to { 224.0.0.2, 224.0.0.18, 224.0.0.251 } port mdns\npass on $int_if proto igmp to { 224.0.0.1, 224.0.0.22, 224.0.0.251 }\n\n# quick pass of Tor relay ports to avoid blocks below\n#tor_relay = \"{ 9001, 9030 }\"\n#pass in quick proto tcp from any to $int_if port $tor_relay\n#pass out quick proto tcp from $int_if port $tor_relay to any\n\n# Open Source IP blocks\n# Refresh with pfctl -a blockips -T load -f /usr/local/etc/blockips.conf\nanchor 'blockips' label \"Open Source IP Blocks\"\nload anchor 'blockips' from '/usr/local/etc/blockips.conf'\n\n# ICMP\nicmp_types = \"echoreq\"\npass inet proto icmp from $int_if:network to any icmp-type $icmp_types\npass inet proto icmp from any to $int_if icmp-type $icmp_types\n\n# allow out the default range for traceroute(8):\n# \"base+nhops*nqueries-1\" (33434+64*3-1)\npass out on $int_if inet proto udp from any to any port 33433 >< 33626\n\n# Allow critical system traffic\npass in quick inet proto udp from port bootps to port bootpc\npass out quick inet proto udp from port bootpc to port bootps\n\n# LAN services: block access, except from localnet\nlan_udp_services = \"{ domain, 5001, postgresql }\"\nlan_tcp_services = \"{ domain, auth, nntp, www,\t\\\n\t311, 3128, 5001, 5900:5909, privoxy, postgresql, \t\\\n\t8123, 8180, 8181, 9150, 9151 }\"\nblock in proto tcp from any to $int_if port $lan_tcp_services\nblock in proto udp from any to $int_if port $lan_udp_services\n\npass in inet proto udp from $int_if:network to $int_if port $lan_udp_services\npass in inet proto tcp from $int_if:network to $int_if port $lan_tcp_services\npass out proto udp from $int_if port $lan_udp_services to $int_if:network\npass out proto tcp from $int_if port $lan_tcp_services to $int_if:network\n\n# Add vpn_net if running OpenVPN\n#vpn# pass in inet proto udp from $vpn_net to $int_if port $lan_udp_services\n#vpn# pass in inet proto tcp from $vpn_net to $int_if port $lan_tcp_services\n#vpn# pass out proto udp from $int_if port $lan_udp_services to $vpn_net\n#vpn# pass out proto tcp from $int_if port $lan_tcp_services to $vpn_net\n\n# Internet services\ninternet_udp_services = \"{ https, 500, openvpn,\t\\\n\t1701, 4500, 5060, 5190, 5297, 5298, 5678, 16384 }\"\ninternet_tcp_services = \"{ 995, 1640, 1723, 2195,\t\\\n\t2196, 4190, 5218, 5223, 5190, 5220, 5222, 5298,\t\t\\\n\t8008, 8443, 8800, 8843, 9001, 9030 }\"\npass in proto udp from any to $int_if port $internet_udp_services\npass in proto tcp from any to $int_if port $internet_tcp_services\npass out inet proto udp from $int_if to any port $internet_udp_services\npass out inet proto tcp from $int_if to any port $internet_tcp_services\n\n#apns_services = \"{ 2195, 2196 }\"\n#pass in proto tcp from any port $apns_services to <lan_inet>\n#pass out inet proto tcp to any port $apns_services from <lan_inet>\n\n# ssh really restrictive\npass in inet proto tcp from any to $int_if port ssh\t\\\n\tkeep state (max-src-conn 5, max-src-conn-rate 5/2,\t\t\\\n\toverload <bruteforce> flush global)\npass out inet proto tcp from $int_if port ssh\n\n# web, mail more restrictive\npass in inet proto tcp from any to $int_if\t\\\n\tport { smtp, https, imap, submission, imaps }\t\t\\\n\tkeep state (max-src-nodes 50, max-src-conn 200, max-src-conn-rate 100/10,\t\\\n\toverload <bruteforce> flush global)\npass out inet proto tcp from $int_if to any     \\\n        port { smtp, imap4-ssl, imap, submission, imaps }\n\n# I2P\n#i2p_port = \"65530\"\n#pass in inet proto { udp, tcp } from any to $int_if port $i2p_port\n#pass out inet proto { udp, tcp } from $int_if port $i2p_port to any\n"
  },
  {
    "path": "pf_attacks",
    "content": "#!/bin/bash\n\n# Count attacks on the PF firewall\n\nnum=0\n\nres=$(sudo pfctl -t bruteforce -Ts 2>&1 | sed -e 1,2d | wc -l)\nnum=$((num + res))\n\nres=$(sudo pfctl -a blockips -t compromised_ips -Ts -v 2>&1 | sed -e 1,2d | egrep -e 'Packets: [^0]' | wc -l)\nnum=$((num + res))\n\nres=$(sudo pfctl -a blockips -t dshield_block_ip -Ts -v 2>&1 | sed -e 1,2d | egrep -e 'Packets: [^0]' | wc -l)\nnum=$((num + res))\n\nres=$(sudo pfctl -a blockips -t emerging_threats -Ts -v 2>&1 | sed -e 1,2d | egrep -e 'Packets: [^0]' | wc -l)\nnum=$((num + res))\n\necho $num\n"
  },
  {
    "path": "pf_restart",
    "content": "#!/bin/bash -x\n\n# restart pf\n\nsudo launchctl unload -w /Library/LaunchDaemons/net.openbsd.pf.plist\nsudo launchctl load -w /Library/LaunchDaemons/net.openbsd.pf.plist\n"
  },
  {
    "path": "privoxy_restart",
    "content": "#!/bin/bash -x\n\n# restart Privoxy\n\nsudo launchctl unload -w /Library/LaunchDaemons/org.macports.Privoxy.plist\nsudo launchctl load -w /Library/LaunchDaemons/org.macports.Privoxy.plist\n"
  },
  {
    "path": "proxy.pac",
    "content": "function FindProxyForURL(url, host)\n{\nif (\n// Bypass proxy on the LAN for local DNS domainname\n//   (host == \"mydomainname.com\") ||\n//   dnsDomainIs(host, \".mydomainname.com\") ||\n//   (host == \"mydomainname.private\") ||\n//   dnsDomainIs(host, \".mydomainname.private\") ||\n//   isPlainHostName(host) ||\n   shExpMatch(host, \"10.*\") ||\n   shExpMatch(host, \"172.16.*\") ||\n   shExpMatch(host, \"192.168.*\") ||\n   shExpMatch(host, \"127.*\") ||\n   dnsDomainIs(host, \".LOCAL\") ||\n//   (dnsDomainIs(host, \".local\")  &&\n//        !dnsDomainIs(host, \".mydomainname.com\")) ||\n   (url.substring(0,3) == \"ftp\") ||\n   // TV Guide listings on EyeTV; TitanTV Remote Scheduling\n   (host == \"epg.eyetv.com\") ||\n   (host == \"xmlrpc.macrovision.com\") ||\n   (host == \"partners.titantv.com\") ||\n   dnsDomainIs(host, \".apple.com\") ||\n   (url.substring(0,5) != \"http:\")\n)\n        return \"DIRECT\";\nelse\n// Use the listen address for squid\n//        return \"PROXY mydomainname.com:3128\";\n        return \"PROXY 127.0.0.1:3128\";\n}\n"
  },
  {
    "path": "readme-and-install.sh",
    "content": "#!/bin/bash -x\n\n# macOS Fortress: Firewall, Blackhole, and Privatizing Proxy\n# for Trackers, Attackers, Malware, Adware, and Spammers\n# with On-Demand and On-Access Anti-Virus Scanning\n\n# commands\nSUDO=/usr/bin/sudo\nINSTALL=/usr/bin/install\nPORT=/opt/local/bin/port\nCPAN=/usr/bin/cpan\nGPG=/opt/local/bin/gpg\nCURL=/usr/bin/curl\nOPEN=/usr/bin/open\nDIFF=/usr/bin/diff\nPATCH=/usr/bin/patch\nLAUNCHCTL=/bin/launchctl\nAPACHECTL=/usr/sbin/apachectl\nSERVERADMIN=/Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin\nPFCTL=/sbin/pfctl\nMKDIR=/bin/mkdir\nCHOWN=/usr/sbin/chown\nCAT=/bin/cat\nECHO=/bin/echo\nMORE=/usr/bin/more\nLSOF=/usr/sbin/lsof\nCP=/bin/cp\nRM=/bin/rm\nSH=/bin/sh\nFMT=/usr/bin/fmt\nEGREP=/usr/bin/egrep\nRSYNC=/usr/bin/rsync\nSTACK=/usr/local/bin/stack\nADBLOCK2PRIVOXY=/usr/local/bin/adblock2privoxy\n\n$CAT <<'HELPSTRING' | $MORE\nmacOS Fortress: Firewall, Blackhole, and Privatizing Proxy\nfor Trackers, Attackers, Malware, Adware, and Spammers\n\nKernel-level, OS-level, and client-level security for macOS. Built to\naddress a steady stream of attacks visible on snort and server logs,\nas well as blocks ads, malicious scripts, and conceal information used\nto track you around the web. After this package was installed, snort\nand other detections have fallen to a fraction with a few simple\nblocking actions.  This setup is a lot more capable and effective than\nusing a simple adblocking browser Add-On. There's a world of\ndifference between ad-filled web pages with and without a filtering\nproxy server. It's also saved me from inadvertantly clicking on\nphishing links.\n\nThis package uses these features:\n\n\t* macOS adaptive firewall\n\t* Adaptive firewall to brute force attacks\n\t* IP blocks updated about twice a day from emergingthreats.net\n\t  (IP blocks, compromised hosts, Malvertisers) and\n\t  dshield.org’s top-20\n\t* Host blocks updated about twice a day from hphosts.net\n\t* Special proxy.pac host blacklisting from hostsfile.org\n        * On-Demand and On-Access Anti-Virus\n\nThis install script installs and configures a macOS Firewall and Privatizing\nProxy, and macOS On-Demand and On-Access Anti-Virus. It will:\n\n\t* Download and install several key utilities and applications\n\t  (wget gnupg2 p7zip squid privoxy nmap)\n\t* Configure macOS's PF native firewall (man pfctl, man pf.conf),\n\t  squid, and privoxy\n\t* Turn on macOS's native Apache webserver to serve the\n\t  Automatic proxy configuration http://localhost/proxy.pac\n\t* Networking on the local computer can be set up to use this\n          Automatic Proxy Configuration without breaking App Store or\n          other updates (see squid.conf)\n\t* Uncomment the nat directive in pf.conf if you wish to set up\n          an OpenVPN server <https://discussions.apple.com/thread/5538749>\n\t* Install and launch daemons that download and regularly\n\t  update open source IP and host blacklists. The sources are\n\t  emergingthreats.net (net.emergingthreats.blockips.plist),\n\t  dshield.org (net.dshield.block.plist), hosts-file.net\n\t  (net.hphosts.hosts.plist), and EasyList\n\t  (com.github.essandess.easylist-pac.plist)\n        * On-Demand and On-Access Anti-Virus using clamAV; both scheduled\n          full volume scans and on-access scans of all user Downloads and\n          Desktop directories are performed\n\t* After installation the connection between clients and the\n\t  internet looks this this:\n\n\t  Application  <--port 3128-->  Squid  <--port 8118--> Privoxy  <----> Internet\n\nInstallation:\n\nsudo port install macos-fortress\n\nNotes:\n\n\t* Configure the squid proxy to accept connections on the LAN IP\n\t  and set LAN device Automatic Proxy Configurations to\n\t  http://lan_ip/proxy.pac to protect devices on the LAN.\n\t* Count the number of attacks since boot with the script\n\t  pf_attacks. ``Attack'' is defined as the number of blocked IPs\n\t  in PF's bruteforce table plus the number of denied connections\n\t  from blacklisted IPs in the tables compromised_ips,\n\t  dshield_block_ip, and emerging_threats.\n\t* Both squid and Privoxy are configured to forge the User-Agent.\n\t  The default is an iPad to allow mobile device access. Change\n\t  this to your local needs if necessary.\n\t* Whitelist or blacklist specific domain names with the files\n\t  /usr/local/etc/whitelist.txt and\n\t  /usr/local/etc/blacklist.txt. After editing these file, use\n\t  launchctl to unload and load the plist\n\t  /Library/LaunchDaemons/net.hphosts.hosts.plist, which\n\t  recreates the hostfile /etc/hosts-hphost and reconfigures\n\t  the squid proxy to use the updates.\n\t* Sometimes pf and privoxy do not launch at boot, in spite of\n\t  the use of the use of their launch daemons.  Fix this by\n\t  hand after boot with the scripts macosfortress_setup_check.sh, or\n\t  individually using pf_restart, privoxy_restart, and\n\t  squid_restart. And please post a solution if you find one.\n\t* All open source updates are done using the 'wget -N' option\n          to save everyone's bandwidth\n\nSecurity:\n\n\t* These services are intended to be run on a secure LAN behind\n\t  a router firewall.\n\t* Even though the default proxy configuration will only accept\n\t  connections made from the local computer (localhost), do not\n\t  configure the router to forward ports 3128 or 8118 in case\n\t  you ever change this or you will be running an open web proxy.\nHELPSTRING\n\n$CAT <<MACPORTS_MIGRATION\nThis install script is superceded by the MacPorts port macos-fortress.\nPlease run:\n\nsudo port install macos-fortress\nsudo port load macos-fortress\n\nAfter the initial installation, please kickstart these launch daemons:\n\nsudo launchctl kickstart -k system/org.macports.macos-fortress-dshield\nsudo launchctl kickstart -k system/org.macports.macos-fortress-emergingthreats\nsudo launchctl kickstart -k system/org.macports.macos-fortress-hphosts\nsudo launchctl kickstart -k system/org.macports.adblock2privoxy\nsudo launchctl kickstart -k system/org.macports.macos-fortress-easylistpac\n\nIf using the native macOS APache webserver, run:\n\nsudo apachectl start\n\nFinally, check the service status and/or the number of Firewall attacks\nby running:\n\nsudo macosfortress_setup_check.sh\nsudo pf_attacks.sh\nMACPORTS_MIGRATION\nexit 1\n\n\n# pre-MacPorts install script\n\n$ECHO \"Installing...\"\n\n# prerequisites\n\n# Install macOS Command Line Tools\nCLT_DIR=`xcode-select -p`\nRV=$?\nif ! [ $RV -eq '0' ]\nthen\n    $SUDO -E /usr/bin/xcode-select --install\n    $SUDO -E /usr/bin/xcodebuild -license\nfi\n\n# Install MacPorts\nif ! [ -x $PORT ]\nthen\n    $OPEN -a Safari https://www.macports.org/install.php\n    $CAT <<MACPORTS\nPlease download and install Macports from https://www.macports.org/install.php\nthen run this script again.\nMACPORTS\n    exit 1\nfi\n\n# Install stack for adblock2privoxy\n# https://docs.haskellstack.org/en/stable/install_and_upgrade/\nif ! [ -x $STACK ]\nthen\n    $CURL -sSL https://get.haskellstack.org/ | $SH\nfi\n\n# Proxy settings in /opt/local/etc/macports/macports.conf\n$SUDO -E $PORT selfupdate\n\n# Install wget, gnupg2, 7z, pcre, proxies, perl, and python modules\n$SUDO -E $PORT uninstall squid2 squid3 gnupg && $SUDO $PORT clean --dist squid2 squid3 gnupg\n$SUDO -E $PORT -pN install wget gnupg2 p7zip pcre squid4 privoxy nginx nmap python37 py37-scikit-learn py37-matplotlib py37-numpy clamav clamav-server fswatch\n\n# exit with error if these ports aren't installed\nfor P in wget gnupg2 p7zip pcre squid4 privoxy nginx nmap python37 py37-scikit-learn py37-matplotlib py37-numpy clamav clamav-server fswatch\ndo\n    PORT_TEST=`port installed $P | egrep -e \"^ *$P.+\\(active\\)\"`\n    if [ \"$PORT_TEST\" == \"\" ]\n    then\n        cat <<PORT_NOT_INSTALLED\nMacports port $P is not installed. Please fix this by hand and\nre-run this script.\nPORT_NOT_INSTALLED\n        exit 1\n    fi\ndone\n\n$SUDO -E $PORT select --set python3 python37\n$SUDO -E $CPAN install\n$SUDO -E $CPAN -i Data::Validate::IP\n$SUDO -E $CPAN -i Data::Validate::Domain\n# Used to verify downloads\n$SUDO -E $CURL -O https://secure.dshield.org/PGPKEYS.txt\n$SUDO -E $GPG --homedir /var/root/.gnupg --import PGPKEYS.txt\n$SUDO -E $GPG --homedir /var/root/.gnupg --recv-keys 221084F4 608D9001\n$SUDO -E $GPG --homedir /var/root/.gnupg --list-keys\n$CAT <<'GPGID'\nKeep your gpg keychain up to date by checking the keys IDs with these commands:\n\n/opt/local/bin/gpg --verify /usr/local/etc/block.txt.asc /usr/local/etc/block.txt\n/usr/bin/unzip -o /usr/local/etc/hosts.zip -d /tmp/hphosts && /opt/local/bin/gpg --verify /tmp/hphosts/hosts.txt.asc /tmp/hphosts/hosts.txt\nGPGID\n$ECHO 'To delete expited keys, see http://superuser.com/questions/594116/clean-up-my-gnupg-keyring/594220#comment730593_594220'\n$ECHO 'These commands delete expired GPG keys:'\n$CAT <<DELETE_EXPIRED_GPG_KEYS\n$SUDO -E $GPG --homedir /var/root/.gnupg --list-keys | $AWK 'c{id=$1; print id;c=0}/^pub.* \\[expired\\: /{c=1}' | $FMT -w 999 | $SED 's/^/gpg --delete-keys /;'\n$SUDO -E $GPG --homedir /var/root/.gnupg --delete-keys KeyIDs ...\nDELETE_EXPIRED_GPG_KEYS\n\n# apache for proxy.pac\nif ! [ -d /Applications/Server.app ]\nthen\n    # macOS native apache server for proxy.pac\n    PROXY_PAC_DIRECTORY=/Library/WebServer/Documents\n    $SUDO -E $APACHECTL start\nelse\n    # macOS Server for proxy.pac\n    # Assume that Server.app v5.8+'s Profile Manager Apache Web server\n    # has been configured to serve PAC files; see te VirtualHost or AliasMatch\n    # methods at https://github.com/essandess/macOS-Open-Source-Server\n    PROXY_PAC_DIRECTORY=/Library/WebServer/Sites/proxy.mydomain.private\n    if ! [ -d $PROXY_PAC_DIRECTORY ]\n    then\n        $CAT <<PROXY_PAC_DNS\nPlease configure DNS and your Profile Manager Web server to create the hostname\nand website ${PROXY_PAC_DIRECTORY##*/}, edit the configuration files\n\n\t`fgrep -l mydomain ./* | tr '\\n'  ' '`\n\nto reflect this name, then run this script again.\nPROXY_PAC_DNS\n        # Don't exit-on-error, but be sure to configure necessary files by hand\n        if false; then exit 1; fi\n    fi\n    $SUDO -E $SERVERADMIN stop devicemgr\n    $SUDO -E $SERVERADMIN start devicemgr\nfi\n$SUDO -E $INSTALL -m 644 ./proxy.pac $PROXY_PAC_DIRECTORY\n$SUDO -E $INSTALL -m 644 ./proxy.pac $PROXY_PAC_DIRECTORY/proxy.pac.orig\n\n# Compile and install adblock2privoxy\nif ! [ -x $ADBLOCK2PRIVOXY ]\nthen\n    $SUDO -E $MKDIR -p /usr/local/etc/adblock2privoxy\n    $SUDO -E $MKDIR -p /usr/local/etc/adblock2privoxy/css\n    $SUDO -E $RSYNC -a easylist-pac-privoxy/adblock2privoxy/adblock2privoxy* /usr/local/etc/adblock2privoxy\n    # ensure that macOS /usr/bin/gcc is the C compiler    \n    $SUDO -E -E $SH -c 'export PATH=/usr/bin:$PATH ; export STACK_ROOT=/usr/local/etc/.stack ; ( cd /usr/local/etc/adblock2privoxy/adblock2privoxy ; /usr/local/bin/stack setup --allow-different-user ; /usr/local/bin/stack install --local-bin-path /usr/local/bin --allow-different-user )'\n    $SUDO -E $INSTALL -m 644 ./easylist-pac-privoxy/adblock2privoxy/nginx.conf /usr/local/etc/adblock2privoxy\n    $SUDO -E $INSTALL -m 644 ./easylist-pac-privoxy/adblock2privoxy/default.html /usr/local/etc/adblock2privoxy/css\nfi\n\n# proxy configuration\n\n# squid\n\n#squid.conf\nif ! [ -f /opt/local/etc/squid/squid.conf.documented ]\nthen\n    $SUDO -E $INSTALL -m 644 -B .orig /opt/local/etc/squid/squid.conf /opt/local/etc/squid/squid.conf.documented\nelse\n    $SUDO -E $INSTALL -m 644 -B .orig /opt/local/etc/squid/squid.conf.documented /opt/local/etc/squid/squid.conf\nfi\n$SUDO -E $INSTALL -m 644 -B .orig /opt/local/etc/squid/squid.conf.documented /opt/local/etc/squid/squid.conf.orig\n$DIFF -NaurdwB -I '^ *#.*' /opt/local/etc/squid/squid.conf ./squid.conf > /tmp/squid.conf.patch\n$SUDO -E $PATCH -p5 /opt/local/etc/squid/squid.conf < /tmp/squid.conf.patch\n$RM /tmp/squid.conf.patch\n\n# rotate squid logs\nif ! [ -f /Library/LaunchDaemons/org.squid-cache.squid-rotate.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./org.squid-cache.squid-rotate.plist /Library/LaunchDaemons\nfi\nif ! [ -d /opt/local/var/squid/logs ]; then\n    $SUDO -E $MKDIR -p -m 644 /opt/local/var/squid/logs\n    $SUDO -E $CHOWN -R squid:squid /opt/local/var/squid\nfi\n\n$SUDO -E /opt/local/sbin/squid -s -z --foreground\n\n# privoxy\n\n#config\n$SUDO -E $INSTALL -m 640 -o privoxy -g privoxy -B .orig /opt/local/etc/privoxy/config /opt/local/etc/privoxy/config.orig\n$DIFF -NaurdwB -I '^ *#.*' /opt/local/etc/privoxy/config ./config > /tmp/config.patch\n$SUDO -E $PATCH -p5 /opt/local/etc/privoxy/config < /tmp/config.patch\n$SUDO -E $CHOWN privoxy:privoxy /opt/local/etc/privoxy/config\n$RM /tmp/config.patch\n\n#match-all.action\n$SUDO -E $INSTALL -m 640 -o privoxy -g privoxy -B .orig /opt/local/etc/privoxy/match-all.action /opt/local/etc/privoxy/match-all.action.orig\n$DIFF -NaurdwB -I '^ *#.*' /opt/local/etc/privoxy/match-all.action ./match-all.action > /tmp/match-all.action.patch\n$SUDO -E $PATCH -p5 /opt/local/etc/privoxy/match-all.action < /tmp/match-all.action.patch\n$SUDO -E $CHOWN privoxy:privoxy /opt/local/etc/privoxy/match-all.action\n$RM /tmp/match-all.action.patch\n\n#user.action\n$SUDO -E $INSTALL -m 644 -o privoxy -g privoxy -B .orig /opt/local/etc/privoxy/user.action /opt/local/etc/privoxy/user.action.orig\n$DIFF -NaurdwB -I '^ *#.*' /opt/local/etc/privoxy/user.action ./user.action > /tmp/user.action.patch\n$SUDO -E $PATCH -p5 /opt/local/etc/privoxy/user.action < /tmp/user.action.patch\n$SUDO -E $CHOWN privoxy:privoxy /opt/local/etc/privoxy/user.action\n$RM /tmp/user.action.patch\n\n$SUDO -E $BASH -c '( cd /opt/local/etc/privoxy ; /usr/sbin/chown privoxy:privoxy config* *.action *.filter )'\n\n#privoxy logs\nif ! [ -d /opt/local/var/log/privoxy ]; then\n    $SUDO -E $MKDIR -m 644 /opt/local/var/log/privoxy\n    $SUDO -E $CHOWN privoxy:privoxy /opt/local/var/log/privoxy\nfi\n\n# install the files\n$SUDO -E $CP /etc/hosts /etc/hosts.orig\n$SUDO -E $INSTALL -b -B .orig ./pf.conf /etc\nif ! [ -f /Library/LaunchDaemons/net.openbsd.pf.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./net.openbsd.pf.plist /Library/LaunchDaemons\nfi\nif ! [ -f /Library/LaunchDaemons/net.openbsd.pf.brutexpire.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./net.openbsd.pf.brutexpire.plist /Library/LaunchDaemons\nfi\nif ! [ -f /Library/LaunchDaemons/net.emergingthreats.blockips.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./net.emergingthreats.blockips.plist /Library/LaunchDaemons\nfi\nif ! [ -f /Library/LaunchDaemons/net.dshield.block.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./net.dshield.block.plist /Library/LaunchDaemons\nfi\nif ! [ -f /Library/LaunchDaemons/net.hphosts.hosts.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./net.hphosts.hosts.plist /Library/LaunchDaemons\nfi\nif ! [ -f /Library/LaunchDaemons/com.github.essandess.easylist-pac.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./com.github.essandess.easylist-pac.plist /Library/LaunchDaemons\nfi\nif ! [ -f /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./easylist-pac-privoxy/adblock2privoxy/com.github.essandess.adblock2privoxy.plist /Library/LaunchDaemons\nfi\nif ! [ -f /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.nginx.plist ]\nthen\n    $SUDO -E $INSTALL -m 644 ./easylist-pac-privoxy/adblock2privoxy/com.github.essandess.adblock2privoxy.nginx.plist /Library/LaunchDaemons\nfi\n$INSTALL -m 644 ./org.opensource.flashcookiedelete.plist ~/Library/LaunchAgents\n$SUDO -E $MKDIR -p /usr/local/etc\n$SUDO -E $INSTALL -m 644 ./blockips.conf /usr/local/etc\n$SUDO -E $INSTALL -m 644 ./whitelist.txt /usr/local/etc\n$SUDO -E $INSTALL -m 644 ./blacklist.txt /usr/local/etc\n\n$SUDO -E $INSTALL -m 755 ./pf_attacks /usr/local/bin\n$SUDO -E $INSTALL -m 755 ./macosfortress_setup_check.sh /usr/local/bin\n$SUDO -E $INSTALL -m 755 ./pf_restart /usr/local/bin\n$SUDO -E $INSTALL -m 755 ./squid_restart /usr/local/bin\n$SUDO -E $INSTALL -m 755 ./privoxy_restart /usr/local/bin\n$SUDO -E $INSTALL -m 755 ./easylist-pac-privoxy/easylist_pac.py /usr/local/bin\n\n# launchd daemons\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/net.openbsd.pf.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/net.openbsd.pf.brutexpire.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/net.emergingthreats.blockips.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/net.dshield.block.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/net.hphosts.hosts.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/com.github.essandess.easylist-pac.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/com.github.essandess.adblock2privoxy.nginx.plist\n$SUDO -E $LAUNCHCTL load -w /Library/LaunchDaemons/org.squid-cache.squid-rotate.plist\n\n# start these services for the 1st time because they use RunAtLoad false\n$SUDO -E $LAUNCHCTL start net.emergingthreats.blockips\n$SUDO -E $LAUNCHCTL start net.dshield.block\n$SUDO -E $LAUNCHCTL start net.hphosts.hosts\n$SUDO -E $LAUNCHCTL start com.github.essandess.easylist-pac\n$SUDO -E $LAUNCHCTL start com.github.essandess.adblock2privoxy\n\n$LAUNCHCTL load ~/Library/LaunchAgents/org.opensource.flashcookiedelete.plist\n\n$SUDO -E $PORT load squid4\n$SUDO -E $PORT load privoxy\n\n\n# Turn on macOS Server's adaptive firewall:\nif [ -d /Applications/Server.app ]\nthen\n    $SUDO -E /Applications/Server.app/Contents/ServerRoot/usr/sbin/serverctl enable service=com.apple.afctl\n    $SUDO -E /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -f\nfi\n\n\n# check after boot\n/usr/local/bin/macosfortress_setup_check.sh\n\n\n$CAT <<'URL_PATH_INCLUSION'\nTo allow URL path blocking capability in HTTPS:\n\n    * Chrome:\n      $ defaults write com.google.Chrome PacHttpsUrlStrippingEnabled -bool false\n\n    * Firefox, about:config:\n      network.proxy.autoconfig_url.include_path : true\nURL_PATH_INCLUSION\n\nexit 0\n"
  },
  {
    "path": "squid.conf",
    "content": "#\tWELCOME TO SQUID 4.7\n#\t----------------------------\n#\t\n#\tThis is the documentation for the Squid configuration file.\n#\tThis documentation can also be found online at:\n#\t\thttp://www.squid-cache.org/Doc/config/\n#\t\n#\tYou may wish to look at the Squid home page and wiki for the\n#\tFAQ and other documentation:\n#\t\thttp://www.squid-cache.org/\n#\t\thttp://wiki.squid-cache.org/SquidFaq\n#\t\thttp://wiki.squid-cache.org/ConfigExamples\n#\t\n#\tThis documentation shows what the defaults for various directives\n#\thappen to be.  If you don't need to change the default, you should\n#\tleave the line out of your squid.conf in most cases.\n#\t\n#\tIn some cases \"none\" refers to no default setting at all,\n#\twhile in other cases it refers to the value of the option\n#\t- the comments for that keyword indicate if this is the case.\n#\n\n#  Configuration options can be included using the \"include\" directive.\n#  Include takes a list of files to include. Quoting and wildcards are\n#  supported.\n#\n#  For example,\n#\n#  include /path/to/included/file/squid.acl.config\n#\n#  Includes can be nested up to a hard-coded depth of 16 levels.\n#  This arbitrary restriction is to prevent recursive include references\n#  from causing Squid entering an infinite loop whilst trying to load\n#  configuration files.\n#\n#  Values with byte units\n#\n#\tSquid accepts size units on some size related directives. All\n#\tsuch directives are documented with a default value displaying\n#\ta unit.\n#\n#\tUnits accepted by Squid are:\n#\t\tbytes - byte\n#\t\tKB - Kilobyte (1024 bytes)\n#\t\tMB - Megabyte\n#\t\tGB - Gigabyte\n#\n#  Values with spaces, quotes, and other special characters\n#\n#\tSquid supports directive parameters with spaces, quotes, and other\n#\tspecial characters. Surround such parameters with \"double quotes\". Use\n#\tthe configuration_includes_quoted_values directive to enable or\n#\tdisable that support.\n#\n#\tSquid supports reading configuration option parameters from external\n#\tfiles using the syntax:\n#\t\tparameters(\"/path/filename\")\n#\tFor example:\n#\t\tacl whitelist dstdomain parameters(\"/etc/squid/whitelist.txt\")\n#\n#  Conditional configuration\n#\n#\tIf-statements can be used to make configuration directives\n#\tdepend on conditions:\n#\n#\t    if <CONDITION>\n#\t        ... regular configuration directives ...\n#\t    [else\n#\t        ... regular configuration directives ...]\n#\t    endif\n#\n#\tThe else part is optional. The keywords \"if\", \"else\", and \"endif\"\n#\tmust be typed on their own lines, as if they were regular\n#\tconfiguration directives.\n#\n#\tNOTE: An else-if condition is not supported.\n#\n#\tThese individual conditions types are supported:\n#\n#\t    true\n#\t\tAlways evaluates to true.\n#\t    false\n#\t\tAlways evaluates to false.\n#\t    <integer> = <integer>\n#\t        Equality comparison of two integer numbers.\n#\n#\n#  SMP-Related Macros\n#\n#\tThe following SMP-related preprocessor macros can be used.\n#\n#\t${process_name} expands to the current Squid process \"name\"\n#\t(e.g., squid1, squid2, or cache1).\n#\n#\t${process_number} expands to the current Squid process\n#\tidentifier, which is an integer number (e.g., 1, 2, 3) unique\n#\tacross all Squid processes of the current service instance.\n#\n#\t${service_name} expands into the current Squid service instance\n#\tname identifier which is provided by -n on the command line.\n#\n#  Logformat Macros\n#\n#\tLogformat macros can be used in many places outside of the logformat\n#\tdirective. In theory, all of the logformat codes can be used as %macros,\n#\twhere they are supported. In practice, a %macro expands as a dash (-) when\n#\tthe transaction does not yet have enough information and a value is needed.\n#\n#\tThere is no definitive list of what tokens are available at the various\n#\tstages of the transaction.\n#\n#\tAnd some information may already be available to Squid but not yet\n#\tcommitted where the macro expansion code can access it (report\n#\tsuch instances!). The macro will be expanded into a single dash\n#\t('-') in such cases. Not all macros have been tested.\n#\n\n#  TAG: broken_vary_encoding\n#\tThis option is not yet supported by Squid-3.\n#Default:\n# none\n\n#  TAG: cache_vary\n#\tThis option is not yet supported by Squid-3.\n#Default:\n# none\n\n#  TAG: error_map\n#\tThis option is not yet supported by Squid-3.\n#Default:\n# none\n\n#  TAG: external_refresh_check\n#\tThis option is not yet supported by Squid-3.\n#Default:\n# none\n\n#  TAG: location_rewrite_program\n#\tThis option is not yet supported by Squid-3.\n#Default:\n# none\n\n#  TAG: refresh_stale_hit\n#\tThis option is not yet supported by Squid-3.\n#Default:\n# none\n\n#  TAG: cache_peer_domain\n#\tReplace with dstdomain ACLs and cache_peer_access.\n#Default:\n# none\n\n#  TAG: ie_refresh\n#\tRemove this line. The behaviour enabled by this is no longer needed.\n#Default:\n# none\n\n#  TAG: sslproxy_cafile\n#\tRemove this line. Use tls_outgoing_options cafile= instead.\n#Default:\n# none\n\n#  TAG: sslproxy_capath\n#\tRemove this line. Use tls_outgoing_options capath= instead.\n#Default:\n# none\n\n#  TAG: sslproxy_cipher\n#\tRemove this line. Use tls_outgoing_options cipher= instead.\n#Default:\n# none\n\n#  TAG: sslproxy_client_certificate\n#\tRemove this line. Use tls_outgoing_options cert= instead.\n#Default:\n# none\n\n#  TAG: sslproxy_client_key\n#\tRemove this line. Use tls_outgoing_options key= instead.\n#Default:\n# none\n\n#  TAG: sslproxy_flags\n#\tRemove this line. Use tls_outgoing_options flags= instead.\n#Default:\n# none\n\n#  TAG: sslproxy_options\n#\tRemove this line. Use tls_outgoing_options options= instead.\n#Default:\n# none\n\n#  TAG: sslproxy_version\n#\tRemove this line. Use tls_outgoing_options options= instead.\n#Default:\n# none\n\n#  TAG: hierarchy_stoplist\n#\tRemove this line. Use always_direct or cache_peer_access ACLs instead if you need to prevent cache_peer use.\n#Default:\n# none\n\n#  TAG: log_access\n#\tRemove this line. Use acls with access_log directives to control access logging\n#Default:\n# none\n\n#  TAG: log_icap\n#\tRemove this line. Use acls with icap_log directives to control icap logging\n#Default:\n# none\n\n#  TAG: ignore_ims_on_miss\n#\tRemove this line. The HTTP/1.1 feature is now configured by 'cache_miss_revalidate'.\n#Default:\n# none\n\n#  TAG: balance_on_multiple_ip\n#\tRemove this line. Squid performs a 'Happy Eyeballs' algorithm, this multiple-IP algorithm is not longer relevant.\n#Default:\n# none\n\n#  TAG: chunked_request_body_max_size\n#\tRemove this line. Squid is now HTTP/1.1 compliant.\n#Default:\n# none\n\n#  TAG: dns_v4_fallback\n#\tRemove this line. Squid performs a 'Happy Eyeballs' algorithm, the 'fallback' algorithm is no longer relevant.\n#Default:\n# none\n\n#  TAG: emulate_httpd_log\n#\tReplace this with an access_log directive using the format 'common' or 'combined'.\n#Default:\n# none\n\n#  TAG: forward_log\n#\tUse a regular access.log with ACL limiting it to MISS events.\n#Default:\n# none\n\n#  TAG: ftp_list_width\n#\tRemove this line. Configure FTP page display using the CSS controls in errorpages.css instead.\n#Default:\n# none\n\n#  TAG: ignore_expect_100\n#\tRemove this line. The HTTP/1.1 feature is now fully supported by default.\n#Default:\n# none\n\n#  TAG: log_fqdn\n#\tRemove this option from your config. To log FQDN use %>A in the log format.\n#Default:\n# none\n\n#  TAG: log_ip_on_direct\n#\tRemove this option from your config. To log server or peer names use %<A in the log format.\n#Default:\n# none\n\n#  TAG: maximum_single_addr_tries\n#\tReplaced by connect_retries. The behaviour has changed, please read the documentation before altering.\n#Default:\n# none\n\n#  TAG: referer_log\n#\tReplace this with an access_log directive using the format 'referrer'.\n#Default:\n# none\n\n#  TAG: update_headers\n#\tRemove this line. The feature is supported by default in storage types where update is implemented.\n#Default:\n# none\n\n#  TAG: url_rewrite_concurrency\n#\tRemove this line. Set the 'concurrency=' option of url_rewrite_children instead.\n#Default:\n# none\n\n#  TAG: useragent_log\n#\tReplace this with an access_log directive using the format 'useragent'.\n#Default:\n# none\n\n#  TAG: dns_testnames\n#\tRemove this line. DNS is no longer tested on startup.\n#Default:\n# none\n\n#  TAG: extension_methods\n#\tRemove this line. All valid methods for HTTP are accepted by default.\n#Default:\n# none\n\n#  TAG: zero_buffers\n#Default:\n# none\n\n#  TAG: incoming_rate\n#Default:\n# none\n\n#  TAG: server_http11\n#\tRemove this line. HTTP/1.1 is supported by default.\n#Default:\n# none\n\n#  TAG: upgrade_http0.9\n#\tRemove this line. ICY/1.0 streaming protocol is supported by default.\n#Default:\n# none\n\n#  TAG: zph_local\n#\tAlter these entries. Use the qos_flows directive instead.\n#Default:\n# none\n\n#  TAG: header_access\n#\tSince squid-3.0 replace with request_header_access or reply_header_access\n#\tdepending on whether you wish to match client requests or server replies.\n#Default:\n# none\n\n#  TAG: httpd_accel_no_pmtu_disc\n#\tSince squid-3.0 use the 'disable-pmtu-discovery' flag on http_port instead.\n#Default:\n# none\n\n#  TAG: wais_relay_host\n#\tReplace this line with 'cache_peer' configuration.\n#Default:\n# none\n\n#  TAG: wais_relay_port\n#\tReplace this line with 'cache_peer' configuration.\n#Default:\n# none\n\n# OPTIONS FOR SMP\n# -----------------------------------------------------------------------------\n\n#  TAG: workers\n#\tNumber of main Squid processes or \"workers\" to fork and maintain.\n#\t0: \"no daemon\" mode, like running \"squid -N ...\"\n#\t1: \"no SMP\" mode, start one main Squid process daemon (default)\n#\tN: start N main Squid process daemons (i.e., SMP mode)\n#\n#\tIn SMP mode, each worker does nearly all what a single Squid daemon\n#\tdoes (e.g., listen on http_port and forward HTTP requests).\n#Default:\n# SMP support disabled.\n\n#  TAG: cpu_affinity_map\n#\tUsage: cpu_affinity_map process_numbers=P1,P2,... cores=C1,C2,...\n#\n#\tSets 1:1 mapping between Squid processes and CPU cores. For example,\n#\n#\t    cpu_affinity_map process_numbers=1,2,3,4 cores=1,3,5,7\n#\n#\taffects processes 1 through 4 only and places them on the first\n#\tfour even cores, starting with core #1.\n#\n#\tCPU cores are numbered starting from 1. Requires support for\n#\tsched_getaffinity(2) and sched_setaffinity(2) system calls.\n#\n#\tMultiple cpu_affinity_map options are merged.\n#\n#\tSee also: workers\n#Default:\n# Let operating system decide.\n\n#  TAG: shared_memory_locking\ton|off\n#\tWhether to ensure that all required shared memory is available by\n#\t\"locking\" that shared memory into RAM when Squid starts. The\n#\talternative is faster startup time followed by slightly slower\n#\tperformance and, if not enough RAM is actually available during\n#\truntime, mysterious crashes.\n#\n#\tSMP Squid uses many shared memory segments. These segments are\n#\tbrought into Squid memory space using an mmap(2) system call. During\n#\tSquid startup, the mmap() call often succeeds regardless of whether\n#\tthe system has enough RAM. In general, Squid cannot tell whether the\n#\tkernel applies this \"optimistic\" memory allocation policy (but\n#\tpopular modern kernels usually use it).\n#\n#\tLater, if Squid attempts to actually access the mapped memory\n#\tregions beyond what the kernel is willing to allocate, the\n#\t\"optimistic\" kernel simply kills Squid kid with a SIGBUS signal.\n#\tSome of the memory limits enforced by the kernel are currently\n#\tpoorly understood: We do not know how to detect and check them. This\n#\toption ensures that the mapped memory will be available. \n#\n#\tThis option may have a positive performance side-effect: Locking\n#\tmemory at start avoids runtime paging I/O. Paging slows Squid down.\n#\n#\tLocking memory may require a large enough RLIMIT_MEMLOCK OS limit,\n#\tCAP_IPC_LOCK capability, or equivalent.\n#Default:\n# shared_memory_locking off\n\n#  TAG: hopeless_kid_revival_delay\ttime-units\n#\tNormally, when a kid process dies, Squid immediately restarts the\n#\tkid. A kid experiencing frequent deaths is marked as \"hopeless\" for\n#\tthe duration specified by this directive. Hopeless kids are not\n#\tautomatically restarted.\n#\n#\tCurrently, zero values are not supported because they result in\n#\tmisconfigured SMP Squid instances running forever, endlessly\n#\trestarting each dying kid. To effectively disable hopeless kids\n#\trevival, set the delay to a huge value (e.g., 1 year).\n#\n#\tReconfiguration also clears all hopeless kids designations, allowing\n#\tfor manual revival of hopeless kids.\n#Default:\n# hopeless_kid_revival_delay 1 hour\n\n# OPTIONS FOR AUTHENTICATION\n# -----------------------------------------------------------------------------\n\n#  TAG: auth_param\n#\tThis is used to define parameters for the various authentication\n#\tschemes supported by Squid.\n#\n#\t\tformat: auth_param scheme parameter [setting]\n#\n#\tThe order in which authentication schemes are presented to the client is\n#\tdependent on the order the scheme first appears in config file. IE\n#\thas a bug (it's not RFC 2617 compliant) in that it will use the basic\n#\tscheme if basic is the first entry presented, even if more secure\n#\tschemes are presented. For now use the order in the recommended\n#\tsettings section below. If other browsers have difficulties (don't\n#\trecognize the schemes offered even if you are using basic) either\n#\tput basic first, or disable the other schemes (by commenting out their\n#\tprogram entry).\n#\n#\tOnce an authentication scheme is fully configured, it can only be\n#\tshutdown by shutting squid down and restarting. Changes can be made on\n#\tthe fly and activated with a reconfigure. I.E. You can change to a\n#\tdifferent helper, but not unconfigure the helper completely.\n#\n#\tPlease note that while this directive defines how Squid processes\n#\tauthentication it does not automatically activate authentication.\n#\tTo use authentication you must in addition make use of ACLs based\n#\ton login name in http_access (proxy_auth, proxy_auth_regex or\n#\texternal with %LOGIN used in the format tag). The browser will be\n#\tchallenged for authentication on the first such acl encountered\n#\tin http_access processing and will also be re-challenged for new\n#\tlogin credentials if the request is being denied by a proxy_auth\n#\ttype acl.\n#\n#\tWARNING: authentication can't be used in a transparently intercepting\n#\tproxy as the client then thinks it is talking to an origin server and\n#\tnot the proxy. This is a limitation of bending the TCP/IP protocol to\n#\ttransparently intercepting port 80, not a limitation in Squid.\n#\tPorts flagged 'transparent', 'intercept', or 'tproxy' have\n#\tauthentication disabled.\n#\n#\t=== Parameters common to all schemes. ===\n#\n#\t\"program\" cmdline\n#\t\tSpecifies the command for the external authenticator.\n#\n#\t\tBy default, each authentication scheme is not used unless a\n#\t\tprogram is specified.\n#\n#\t\tSee http://wiki.squid-cache.org/Features/AddonHelpers for\n#\t\tmore details on helper operations and creating your own.\n#\n#\t\"key_extras\" format\n#\t\tSpecifies a string to be append to request line format for\n#\t\tthe authentication helper. \"Quoted\" format values may contain\n#\t\tspaces and logformat %macros. In theory, any logformat %macro\n#\t\tcan be used. In practice, a %macro expands as a dash (-) if\n#\t\tthe helper request is sent before the required macro\n#\t\tinformation is available to Squid.\n#\n#\t\tBy default, Squid uses request formats provided in\n#\t\tscheme-specific examples below (search for %credentials).\n#\n#\t\tThe expanded key_extras value is added to the Squid credentials\n#\t\tcache and, hence, will affect authentication. It can be used to\n#\t\tautenticate different users with identical user names (e.g.,\n#\t\twhen user authentication depends on http_port).\n#\n#\t\tAvoid adding frequently changing information to key_extras. For\n#\t\texample, if you add user source IP, and it changes frequently\n#\t\tin your environment, then max_user_ip ACL is going to treat\n#\t\tevery user+IP combination as a unique \"user\", breaking the ACL\n#\t\tand wasting a lot of memory on those user records. It will also\n#\t\tforce users to authenticate from scratch whenever their IP\n#\t\tchanges.\n#\n#\t\"realm\" string\n#\t\tSpecifies the protection scope (aka realm name) which is to be\n#\t\treported to the client for the authentication scheme. It is\n#\t\tcommonly part of the text the user will see when prompted for\n#\t\ttheir username and password.\n#\n#\t\tFor Basic the default is \"Squid proxy-caching web server\".\n#\t\tFor Digest there is no default, this parameter is mandatory.\n#\t\tFor NTLM and Negotiate this parameter is ignored.\n#\n#\t\"children\" numberofchildren [startup=N] [idle=N] [concurrency=N]\n#\t\t[queue-size=N] [on-persistent-overload=action]\n#\n#\t\tThe maximum number of authenticator processes to spawn. If\n#\t\tyou start too few Squid will have to wait for them to process\n#\t\ta backlog of credential verifications, slowing it down. When\n#\t\tpassword verifications are done via a (slow) network you are\n#\t\tlikely to need lots of authenticator processes.\n#\n#\t\tThe startup= and idle= options permit some skew in the exact\n#\t\tamount run. A minimum of startup=N will begin during startup\n#\t\tand reconfigure. Squid will start more in groups of up to\n#\t\tidle=N in an attempt to meet traffic needs and to keep idle=N\n#\t\tfree above those traffic needs up to the maximum.\n#\n#\t\tThe concurrency= option sets the number of concurrent requests\n#\t\tthe helper can process.  The default of 0 is used for helpers\n#\t\twho only supports one request at a time. Setting this to a\n#\t\tnumber greater than 0 changes the protocol used to include a\n#\t\tchannel ID field first on the request/response line, allowing\n#\t\tmultiple requests to be sent to the same helper in parallel\n#\t\twithout waiting for the response.\n#\n#\t\tConcurrency must not be set unless it's known the helper\n#\t\tsupports the input format with channel-ID fields.\n#\n#\t\tThe queue-size option sets the maximum number of queued\n#\t\trequests. A request is queued when no existing child can\n#\t\taccept it due to concurrency limit and no new child can be\n#\t\tstarted due to numberofchildren limit. The default maximum is\n#\t\t2*numberofchildren. Squid is allowed to temporarily exceed the\n#\t\tconfigured maximum, marking the affected helper as\n#\t\t\"overloaded\". If the helper overload lasts more than 3\n#\t\tminutes, the action prescribed by the on-persistent-overload\n#\t\toption applies.\n#\n#\t\tThe on-persistent-overload=action option specifies Squid\n#\t\treaction to a new helper request arriving when the helper\n#\t\thas been overloaded for more that 3 minutes already. The number\n#\t\tof queued requests determines whether the helper is overloaded\n#\t\t(see the queue-size option).\n#\n#\t\tTwo actions are supported:\n#\n#\t\t  die\tSquid worker quits. This is the default behavior.\n#\n#\t\t  ERR\tSquid treats the helper request as if it was\n#\t\t\timmediately submitted, and the helper immediately\n#\t\t\treplied with an ERR response. This action has no effect\n#\t\t\ton the already queued and in-progress helper requests.\n#\n#\t\tNOTE: NTLM and Negotiate schemes do not support concurrency\n#\t\t\tin the Squid code module even though some helpers can.\n#\n#\n#\n#\t=== Example Configuration ===\n#\n#\tThis configuration displays the recommended authentication scheme\n#\torder from most to least secure with recommended minimum configuration\n#\tsettings for each scheme:\n#\n##auth_param negotiate program <uncomment and complete this line to activate>\n##auth_param negotiate children 20 startup=0 idle=1\n##auth_param negotiate keep_alive on\n##\n##auth_param digest program <uncomment and complete this line to activate>\n##auth_param digest children 20 startup=0 idle=1\n##auth_param digest realm Squid proxy-caching web server\n##auth_param digest nonce_garbage_interval 5 minutes\n##auth_param digest nonce_max_duration 30 minutes\n##auth_param digest nonce_max_count 50\n##\n##auth_param ntlm program <uncomment and complete this line to activate>\n##auth_param ntlm children 20 startup=0 idle=1\n##auth_param ntlm keep_alive on\n##\n##auth_param basic program <uncomment and complete this line>\n##auth_param basic children 5 startup=5 idle=1\n##auth_param basic realm Squid proxy-caching web server\n##auth_param basic credentialsttl 2 hours\n#Default:\n# none\n\n#  TAG: authenticate_cache_garbage_interval\n#\tThe time period between garbage collection across the username cache.\n#\tThis is a trade-off between memory utilization (long intervals - say\n#\t2 days) and CPU (short intervals - say 1 minute). Only change if you\n#\thave good reason to.\n#Default:\n# authenticate_cache_garbage_interval 1 hour\n\n#  TAG: authenticate_ttl\n#\tThe time a user & their credentials stay in the logged in\n#\tuser cache since their last request. When the garbage\n#\tinterval passes, all user credentials that have passed their\n#\tTTL are removed from memory.\n#Default:\n# authenticate_ttl 1 hour\n\n#  TAG: authenticate_ip_ttl\n#\tIf you use proxy authentication and the 'max_user_ip' ACL,\n#\tthis directive controls how long Squid remembers the IP\n#\taddresses associated with each user.  Use a small value\n#\t(e.g., 60 seconds) if your users might change addresses\n#\tquickly, as is the case with dialup.   You might be safe\n#\tusing a larger value (e.g., 2 hours) in a corporate LAN\n#\tenvironment with relatively static address assignments.\n#Default:\n# authenticate_ip_ttl 1 second\n\n# ACCESS CONTROLS\n# -----------------------------------------------------------------------------\n\n#  TAG: external_acl_type\n#\tThis option defines external acl classes using a helper program\n#\tto look up the status\n#\n#\t  external_acl_type name [options] FORMAT /path/to/helper [helper arguments]\n#\n#\tOptions:\n#\n#\t  ttl=n\t\tTTL in seconds for cached results (defaults to 3600\n#\t\t\tfor 1 hour)\n#\n#\t  negative_ttl=n\n#\t\t\tTTL for cached negative lookups (default same\n#\t\t\tas ttl)\n#\n#\t  grace=n\tPercentage remaining of TTL where a refresh of a\n#\t\t\tcached entry should be initiated without needing to\n#\t\t\twait for a new reply. (default is for no grace period)\n#\n#\t  cache=n\tThe maximum number of entries in the result cache. The\n#\t\t\tdefault limit is 262144 entries.  Each cache entry usually\n#\t\t\tconsumes at least 256 bytes. Squid currently does not remove\n#\t\t\texpired cache entries until the limit is reached, so a proxy\n#\t\t\twill sooner or later reach the limit. The expanded FORMAT\n#\t\t\tvalue is used as the cache key, so if the details in FORMAT\n#\t\t\tare highly variable, a larger cache may be needed to produce\n#\t\t\treduction in helper load.\n#\n#\t  children-max=n\n#\t\t\tMaximum number of acl helper processes spawned to service\n#\t\t\texternal acl lookups of this type. (default 5)\n#\n#\t  children-startup=n\n#\t\t\tMinimum number of acl helper processes to spawn during\n#\t\t\tstartup and reconfigure to service external acl lookups\n#\t\t\tof this type. (default 0)\n#\n#\t  children-idle=n\n#\t\t\tNumber of acl helper processes to keep ahead of traffic\n#\t\t\tloads. Squid will spawn this many at once whenever load\n#\t\t\trises above the capabilities of existing processes.\n#\t\t\tUp to the value of children-max. (default 1)\n#\n#\t  concurrency=n\tconcurrency level per process. Only used with helpers\n#\t\t\tcapable of processing more than one query at a time.\n#\n#\t  queue-size=N  The queue-size option sets the maximum number of\n#\t\t\tqueued requests. A request is queued when no existing\n#\t\t\thelper can accept it due to concurrency limit and no\n#\t\t\tnew helper can be started due to children-max limit.\n#\t\t\tIf the queued requests exceed queue size, the acl is\n#\t\t\tignored. The default value is set to 2*children-max.\n#\n#\t  protocol=2.5\tCompatibility mode for Squid-2.5 external acl helpers.\n#\n#\t  ipv4 / ipv6\tIP protocol used to communicate with this helper.\n#\t\t\tThe default is to auto-detect IPv6 and use it when available.\n#\n#\n#\tFORMAT is a series of %macro codes. See logformat directive for a full list\n#\tof the accepted codes. Although note that at the time of any external ACL\n#\tbeing tested data may not be available and thus some %macro expand to '-'.\n#\n#\tIn addition to the logformat codes; when processing external ACLs these\n#\tadditional macros are made available:\n#\n#\t  %ACL\t\tThe name of the ACL being tested.\n#\n#\t  %DATA\t\tThe ACL arguments specified in the referencing config\n#\t\t\t'acl ... external' line, separated by spaces (an\n#\t\t\t\"argument string\"). see acl external.\n#\n#\t\t\tIf there are no ACL arguments %DATA expands to '-'.\n#\n#\t\t\tIf you do not specify a DATA macro inside FORMAT,\n#\t\t\tSquid automatically appends %DATA to your FORMAT.\n#\t\t\tNote that Squid-3.x may expand %DATA to whitespace\n#\t\t\tor nothing in this case.\n#\n#\t\t\tBy default, Squid applies URL-encoding to each ACL\n#\t\t\targument inside the argument string. If an explicit\n#\t\t\tencoding modifier is used (e.g., %#DATA), then Squid\n#\t\t\tencodes the whole argument string as a single token\n#\t\t\t(e.g., with %#DATA, spaces between arguments become\n#\t\t\t%20).\n#\n#\tIf SSL is enabled, the following formating codes become available:\n#\n#\t  %USER_CERT\t\tSSL User certificate in PEM format\n#\t  %USER_CERTCHAIN\tSSL User certificate chain in PEM format\n#\t  %USER_CERT_xx\t\tSSL User certificate subject attribute xx\n#\t  %USER_CA_CERT_xx\tSSL User certificate issuer attribute xx\n#\n#\n#\tNOTE: all other format codes accepted by older Squid versions\n#\t\tare deprecated.\n#\n#\n#\tGeneral request syntax:\n#\n#\t  [channel-ID] FORMAT-values\n#\n#\n#\tFORMAT-values consists of transaction details expanded with\n#\twhitespace separation per the config file FORMAT specification\n#\tusing the FORMAT macros listed above.\n#\n#\tRequest values sent to the helper are URL escaped to protect\n#\teach value in requests against whitespaces.\n#\n#\tIf using protocol=2.5 then the request sent to the helper is not\n#\tURL escaped to protect against whitespace.\n#\n#\tNOTE: protocol=3.0 is deprecated as no longer necessary.\n#\n#\tWhen using the concurrency= option the protocol is changed by\n#\tintroducing a query channel tag in front of the request/response.\n#\tThe query channel tag is a number between 0 and concurrency-1.\n#\tThis value must be echoed back unchanged to Squid as the first part\n#\tof the response relating to its request.\n#\n#\n#\tThe helper receives lines expanded per the above format specification\n#\tand for each input line returns 1 line starting with OK/ERR/BH result\n#\tcode and optionally followed by additional keywords with more details.\n#\n#\n#\tGeneral result syntax:\n#\n#\t  [channel-ID] result keyword=value ...\n#\n#\tResult consists of one of the codes:\n#\n#\t  OK\n#\t\tthe ACL test produced a match.\n#\n#\t  ERR\n#\t\tthe ACL test does not produce a match.\n#\n#\t  BH\n#\t\tAn internal error occurred in the helper, preventing\n#\t\ta result being identified.\n#\n#\tThe meaning of 'a match' is determined by your squid.conf\n#\taccess control configuration. See the Squid wiki for details.\n#\n#\tDefined keywords:\n#\n#\t  user=\t\tThe users name (login)\n#\n#\t  password=\tThe users password (for login= cache_peer option)\n#\n#\t  message=\tMessage describing the reason for this response.\n#\t\t\tAvailable as %o in error pages.\n#\t\t\tUseful on (ERR and BH results).\n#\n#\t  tag=\t\tApply a tag to a request. Only sets a tag once,\n#\t\t\tdoes not alter existing tags.\n#\n#\t  log=\t\tString to be logged in access.log. Available as\n#\t\t\t%ea in logformat specifications.\n#\n#\t  clt_conn_tag= Associates a TAG with the client TCP connection.\n#\t\t\tPlease see url_rewrite_program related documentation\n#\t\t\tfor this kv-pair.\n#\n#\tAny keywords may be sent on any response whether OK, ERR or BH.\n#\n#\tAll response keyword values need to be a single token with URL\n#\tescaping, or enclosed in double quotes (\") and escaped using \\ on\n#\tany double quotes or \\ characters within the value. The wrapping\n#\tdouble quotes are removed before the value is interpreted by Squid.\n#\t\\r and \\n are also replace by CR and LF.\n#\n#\tSome example key values:\n#\n#\t\tuser=John%20Smith\n#\t\tuser=\"John Smith\"\n#\t\tuser=\"J. \\\"Bob\\\" Smith\"\n#Default:\n# none\n\n#  TAG: acl\n#\tDefining an Access List\n#\n#\tEvery access list definition must begin with an aclname and acltype, \n#\tfollowed by either type-specific arguments or a quoted filename that\n#\tthey are read from.\n#\n#\t   acl aclname acltype argument ...\n#\t   acl aclname acltype \"file\" ...\n#\n#\tWhen using \"file\", the file should contain one item per line.\n#\n#\n#\tACL Options\n#\n#\tSome acl types supports options which changes their default behaviour:\n#\n#\t-i,+i\tBy default, regular expressions are CASE-SENSITIVE. To make them\n#\t\tcase-insensitive, use the -i option. To return case-sensitive\n#\t\tuse the +i option between patterns, or make a new ACL line\n#\t\twithout -i.\t\n#\n#\t-n\tDisable lookups and address type conversions.  If lookup or\n#\t\tconversion is required because the parameter type (IP or\n#\t\tdomain name) does not match the message address type (domain\n#\t\tname or IP), then the ACL would immediately declare a mismatch\n#\t\twithout any warnings or lookups.\n#\n#\t-m[=delimiters]\n#\t\tPerform a list membership test, interpreting values as\n#\t\tcomma-separated token lists and matching against individual\n#\t\ttokens instead of whole values. \n#\t\tThe optional \"delimiters\" parameter specifies one or more\n#\t\talternative non-alphanumeric delimiter characters.\n#\t\tnon-alphanumeric delimiter characters.\n#\n#\t--\tUsed to stop processing all options, in the case the first acl\n#\t\tvalue has '-' character as first character (for example the '-'\n#\t\tis a valid domain name)\n#\n#\tSome acl types require suspending the current request in order\n#\tto access some external data source.\n#\tThose which do are marked with the tag [slow], those which\n#\tdon't are marked as [fast].\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl\n#\tfor further information\n#\n#\t***** ACL TYPES AVAILABLE *****\n#\n#\tacl aclname src ip-address/mask ...\t# clients IP address [fast]\n#\tacl aclname src addr1-addr2/mask ...\t# range of addresses [fast]\n#\tacl aclname dst [-n] ip-address/mask ...\t# URL host's IP address [slow]\n#\tacl aclname localip ip-address/mask ... # IP address the client connected to [fast]\n#\n#if USE_SQUID_EUI\n#\tacl aclname arp      mac-address ...\n#\tacl aclname eui64    eui64-address ...\n#\t  # [fast]\n#\t  # MAC (EUI-48) and EUI-64 addresses use xx:xx:xx:xx:xx:xx notation.\n#\t  #\n#\t  # The 'arp' ACL code is not portable to all operating systems.\n#\t  # It works on Linux, Solaris, Windows, FreeBSD, and some other\n#\t  # BSD variants.\n#\t  #\n#\t  # The eui_lookup directive is required to be 'on' (the default)\n#\t  # and Squid built with --enable-eui for MAC/EUI addresses to be\n#\t  # available for this ACL.\n#\t  #\n#\t  # Squid can only determine the MAC/EUI address for IPv4\n#\t  # clients that are on the same subnet. If the client is on a\n#\t  # different subnet, then Squid cannot find out its address.\n#\t  #\n#\t  # IPv6 protocol does not contain ARP. MAC/EUI is either\n#\t  # encoded directly in the IPv6 address or not available.\n#endif\n#\tacl aclname clientside_mark mark[/mask] ...\n#\t  # matches CONNMARK of an accepted connection [fast]\n#\t  #\n#\t  # mark and mask are unsigned integers (hex, octal, or decimal).\n#\t  # If multiple marks are given, then the ACL matches if at least\n#\t  # one mark matches.\n#\t  #\n#\t  # Uses netfilter-conntrack library.\n#\t  # Requires building Squid with --enable-linux-netfilter.\n#\t  #\n#\t  # The client, various intermediaries, and Squid itself may set\n#\t  # CONNMARK at various times. The last CONNMARK set wins. This ACL\n#\t  # checks the mark present on an accepted connection or set by\n#\t  # Squid afterwards, depending on the ACL check timing. This ACL\n#\t  # effectively ignores any mark set by other agents after Squid has\n#\t  # accepted the connection.\n#\n#\tacl aclname srcdomain   .foo.com ...\n#\t  # reverse lookup, from client IP [slow]\n#\tacl aclname dstdomain [-n] .foo.com ...\n#\t  # Destination server from URL [fast]\n#\tacl aclname srcdom_regex [-i] \\.foo\\.com ...\n#\t  # regex matching client name [slow]\n#\tacl aclname dstdom_regex [-n] [-i] \\.foo\\.com ...\n#\t  # regex matching server [fast]\n#\t  #\n#\t  # For dstdomain and dstdom_regex a reverse lookup is tried if a IP\n#\t  # based URL is used and no match is found. The name \"none\" is used\n#\t  # if the reverse lookup fails.\n#\n#\tacl aclname src_as number ...\n#\tacl aclname dst_as number ...\n#\t  # [fast]\n#\t  # Except for access control, AS numbers can be used for\n#\t  # routing of requests to specific caches. Here's an\n#\t  # example for routing all requests for AS#1241 and only\n#\t  # those to mycache.mydomain.net:\n#\t  # acl asexample dst_as 1241\n#\t  # cache_peer_access mycache.mydomain.net allow asexample\n#\t  # cache_peer_access mycache_mydomain.net deny all\n#\n#\tacl aclname peername myPeer ...\n#\tacl aclname peername_regex [-i] regex-pattern ...\n#\t  # [fast]\n#\t  # match against a named cache_peer entry\n#\t  # set unique name= on cache_peer lines for reliable use.\n#\n#\tacl aclname time [day-abbrevs] [h1:m1-h2:m2]\n#\t  # [fast]\n#\t  #  day-abbrevs:\n#\t  #\tS - Sunday\n#\t  #\tM - Monday\n#\t  #\tT - Tuesday\n#\t  #\tW - Wednesday\n#\t  #\tH - Thursday\n#\t  #\tF - Friday\n#\t  #\tA - Saturday\n#\t  #  h1:m1 must be less than h2:m2\n#\n#\tacl aclname url_regex [-i] ^http:// ...\n#\t  # regex matching on whole URL [fast]\n#\tacl aclname urllogin [-i] [^a-zA-Z0-9] ...\n#\t  # regex matching on URL login field\n#\tacl aclname urlpath_regex [-i] \\.gif$ ...\n#\t  # regex matching on URL path [fast]\n#\n#\tacl aclname port 80 70 21 0-1024...   # destination TCP port [fast]\n#\t                                      # ranges are alloed\n#\tacl aclname localport 3128 ...\t      # TCP port the client connected to [fast]\n#\t                                      # NP: for interception mode this is usually '80'\n#\n#\tacl aclname myportname 3128 ...       # *_port name [fast]\n#\n#\tacl aclname proto HTTP FTP ...        # request protocol [fast]\n# \n#\tacl aclname method GET POST ...       # HTTP request method [fast]\n#\n#\tacl aclname http_status 200 301 500- 400-403 ... \n#\t  # status code in reply [fast]\n#\n#\tacl aclname browser [-i] regexp ...\n#\t  # pattern match on User-Agent header (see also req_header below) [fast]\n#\n#\tacl aclname referer_regex [-i] regexp ...\n#\t  # pattern match on Referer header [fast]\n#\t  # Referer is highly unreliable, so use with care\n#\n#\tacl aclname ident [-i] username ...\n#\tacl aclname ident_regex [-i] pattern ...\n#\t  # string match on ident output [slow]\n#\t  # use REQUIRED to accept any non-null ident.\n#\n#\tacl aclname proxy_auth [-i] username ...\n#\tacl aclname proxy_auth_regex [-i] pattern ...\n#\t  # perform http authentication challenge to the client and match against\n#\t  # supplied credentials [slow]\n#\t  #\n#\t  # takes a list of allowed usernames.\n#\t  # use REQUIRED to accept any valid username.\n#\t  #\n#\t  # Will use proxy authentication in forward-proxy scenarios, and plain\n#\t  # http authenticaiton in reverse-proxy scenarios\n#\t  #\n#\t  # NOTE: when a Proxy-Authentication header is sent but it is not\n#\t  # needed during ACL checking the username is NOT logged\n#\t  # in access.log.\n#\t  #\n#\t  # NOTE: proxy_auth requires a EXTERNAL authentication program\n#\t  # to check username/password combinations (see\n#\t  # auth_param directive).\n#\t  #\n#\t  # NOTE: proxy_auth can't be used in a transparent/intercepting proxy\n#\t  # as the browser needs to be configured for using a proxy in order\n#\t  # to respond to proxy authentication.\n#\n#\tacl aclname snmp_community string ...\n#\t  # A community string to limit access to your SNMP Agent [fast]\n#\t  # Example:\n#\t  #\n#\t  #\tacl snmppublic snmp_community public\n#\n#\tacl aclname maxconn number\n#\t  # This will be matched when the client's IP address has\n#\t  # more than <number> TCP connections established. [fast]\n#\t  # NOTE: This only measures direct TCP links so X-Forwarded-For\n#\t  # indirect clients are not counted.\n#\n#\tacl aclname max_user_ip [-s] number\n#\t  # This will be matched when the user attempts to log in from more\n#\t  # than <number> different ip addresses. The authenticate_ip_ttl\n#\t  # parameter controls the timeout on the ip entries. [fast]\n#\t  # If -s is specified the limit is strict, denying browsing\n#\t  # from any further IP addresses until the ttl has expired. Without\n#\t  # -s Squid will just annoy the user by \"randomly\" denying requests.\n#\t  # (the counter is reset each time the limit is reached and a\n#\t  # request is denied)\n#\t  # NOTE: in acceleration mode or where there is mesh of child proxies,\n#\t  # clients may appear to come from multiple addresses if they are\n#\t  # going through proxy farms, so a limit of 1 may cause user problems.\n#\n#\tacl aclname random probability\n#\t  # Pseudo-randomly match requests. Based on the probability given.\n#\t  # Probability may be written as a decimal (0.333), fraction (1/3)\n#\t  # or ratio of matches:non-matches (3:5).\n#\n#\tacl aclname req_mime_type [-i] mime-type ...\n#\t  # regex match against the mime type of the request generated\n#\t  # by the client. Can be used to detect file upload or some\n#\t  # types HTTP tunneling requests [fast]\n#\t  # NOTE: This does NOT match the reply. You cannot use this\n#\t  # to match the returned file type.\n#\n#\tacl aclname req_header header-name [-i] any\\.regex\\.here\n#\t  # regex match against any of the known request headers.  May be\n#\t  # thought of as a superset of \"browser\", \"referer\" and \"mime-type\"\n#\t  # ACL [fast]\n#\n#\tacl aclname rep_mime_type [-i] mime-type ...\n#\t  # regex match against the mime type of the reply received by\n#\t  # squid. Can be used to detect file download or some\n#\t  # types HTTP tunneling requests. [fast]\n#\t  # NOTE: This has no effect in http_access rules. It only has\n#\t  # effect in rules that affect the reply data stream such as\n#\t  # http_reply_access.\n#\n#\tacl aclname rep_header header-name [-i] any\\.regex\\.here\n#\t  # regex match against any of the known reply headers. May be\n#\t  # thought of as a superset of \"browser\", \"referer\" and \"mime-type\"\n#\t  # ACLs [fast]\n#\n#\tacl aclname external class_name [arguments...]\n#\t  # external ACL lookup via a helper class defined by the\n#\t  # external_acl_type directive [slow]\n#\n#\tacl aclname user_cert attribute values...\n#\t  # match against attributes in a user SSL certificate\n#\t  # attribute is one of DN/C/O/CN/L/ST or a numerical OID [fast]\n#\n#\tacl aclname ca_cert attribute values...\n#\t  # match against attributes a users issuing CA SSL certificate\n#\t  # attribute is one of DN/C/O/CN/L/ST or a numerical OID  [fast]\n#\n#\tacl aclname ext_user [-i] username ...\n#\tacl aclname ext_user_regex [-i] pattern ...\n#\t  # string match on username returned by external acl helper [slow]\n#\t  # use REQUIRED to accept any non-null user name.\n#\n#\tacl aclname tag tagvalue ...\n#\t  # string match on tag returned by external acl helper [fast]\n#\t  # DEPRECATED. Only the first tag will match with this ACL.\n#\t  # Use the 'note' ACL instead for handling multiple tag values.\n#\n#\tacl aclname hier_code codename ...\n#\t  # string match against squid hierarchy code(s); [fast]\n#\t  #  e.g., DIRECT, PARENT_HIT, NONE, etc.\n#\t  #\n#\t  # NOTE: This has no effect in http_access rules. It only has\n#\t  # effect in rules that affect the reply data stream such as\n#\t  # http_reply_access.\n#\n#\tacl aclname note [-m[=delimiters]] name [value ...]\n#\t  # match transaction annotation [fast]\n#\t  # Without values, matches any annotation with a given name.\n#\t  # With value(s), matches any annotation with a given name that\n#\t  # also has one of the given values.\n#\t  # If the -m flag is used, then the value of the named\n#\t  # annotation is interpreted as a list of tokens, and the ACL\n#\t  # matches individual name=token pairs rather than whole\n#\t  # name=value pairs. See \"ACL Options\" above for more info.\n#\t  # Annotation sources include note and adaptation_meta directives\n#\t  # as well as helper and eCAP responses.\n#\n#\tacl aclname adaptation_service service ...\n#\t  # Matches the name of any icap_service, ecap_service,\n#\t  # adaptation_service_set, or adaptation_service_chain that Squid\n#\t  # has used (or attempted to use) for the master transaction.\n#\t  # This ACL must be defined after the corresponding adaptation\n#\t  # service is named in squid.conf. This ACL is usable with\n#\t  # adaptation_meta because it starts matching immediately after\n#\t  # the service has been selected for adaptation.\n#\n#\tacl aclname transaction_initiator initiator ...\n#\t  # Matches transaction's initiator [fast]\n#\t  #\n#\t  # Supported initiators are:\n#\t  #  esi: matches transactions fetching ESI resources\n#\t  #  certificate-fetching: matches transactions fetching\n#\t  #     a missing intermediate TLS certificate\n#\t  #  cache-digest: matches transactions fetching Cache Digests\n#\t  #     from a cache_peer\n#\t  #  htcp: matches HTCP requests from peers\n#\t  #  icp: matches ICP requests to peers\n#\t  #  icmp: matches ICMP RTT database (NetDB) requests to peers\n#\t  #  asn: matches asns db requests\n#\t  #  internal: matches any of the above\n#\t  #  client: matches transactions containing an HTTP or FTP\n#\t  #     client request received at a Squid *_port\n#\t  #  all: matches any transaction, including internal transactions\n#\t  #     without a configurable initiator and hopefully rare\n#\t  #     transactions without a known-to-Squid initiator\n#\t  #\n#\t  # Multiple initiators are ORed.\n#\n#\tacl aclname has component\n#\t  # matches a transaction \"component\" [fast]\n#\t  #\n#\t  # Supported transaction components are:\n#\t  #  request: transaction has a request header (at least)\n#\t  #  response: transaction has a response header (at least)\n#\t  #  ALE: transaction has an internally-generated Access Log Entry\n#\t  #       structure; bugs notwithstanding, all transaction have it\n#\t  #\n#\t  # For example, the following configuration helps when dealing with HTTP\n#\t  # clients that close connections without sending a request header:\n#\t  #\n#\t  #  acl hasRequest has request\n#\t  #  acl logMe note important_transaction\n#\t  #  # avoid \"logMe ACL is used in context without an HTTP request\" warnings\n#\t  #  access_log ... logformat=detailed hasRequest logMe\n#\t  #  # log request-less transactions, instead of ignoring them\n#\t  #  access_log ... logformat=brief !hasRequest\n#\t  #\n#\t  # Multiple components are not supported for one \"acl\" rule, but\n#\t  # can be specified (and are ORed) using multiple same-name rules:\n#\t  #\n#\t  #  # OK, this strange logging daemon needs request or response,\n#\t  #  # but can work without either a request or a response:\n#\t  #  acl hasWhatMyLoggingDaemonNeeds has request\n#\t  #  acl hasWhatMyLoggingDaemonNeeds has response\n#\n#\tacl aclname ssl_error errorname\n#\t  # match against SSL certificate validation error [fast]\n#\t  #\n#\t  # For valid error names see in /opt/local/share/squid/errors/templates/error-details.txt\n#\t  # template file.\n#\t  #\n#\t  # The following can be used as shortcuts for certificate properties:\n#\t  #  [ssl::]certHasExpired: the \"not after\" field is in the past\n#\t  #  [ssl::]certNotYetValid: the \"not before\" field is in the future\n#\t  #  [ssl::]certUntrusted: The certificate issuer is not to be trusted.\n#\t  #  [ssl::]certSelfSigned: The certificate is self signed.\n#\t  #  [ssl::]certDomainMismatch: The certificate CN domain does not\n#\t  #         match the name the name of the host we are connecting to.\n#\t  #\n#\t  # The ssl::certHasExpired, ssl::certNotYetValid, ssl::certDomainMismatch,\n#\t  # ssl::certUntrusted, and ssl::certSelfSigned can also be used as\n#\t  # predefined ACLs, just like the 'all' ACL.\n#\t  #\n#\t  # NOTE: The ssl_error ACL is only supported with sslproxy_cert_error,\n#\t  # sslproxy_cert_sign, and sslproxy_cert_adapt options.\n#\n#\tacl aclname server_cert_fingerprint [-sha1] fingerprint\n#\t  # match against server SSL certificate fingerprint [fast]\n#\t  #\n#\t  # The fingerprint is the digest of the DER encoded version \n#\t  # of the whole certificate. The user should use the form: XX:XX:...\n#\t  # Optional argument specifies the digest algorithm to use.\n#\t  # The SHA1 digest algorithm is the default and is currently\n#\t  # the only algorithm supported (-sha1).\n#\n#\tacl aclname at_step step\n#\t  # match against the current step during ssl_bump evaluation [fast]\n#\t  # Never matches and should not be used outside the ssl_bump context.\n#\t  #\n#\t  # At each SslBump step, Squid evaluates ssl_bump directives to find\n#\t  # the next bumping action (e.g., peek or splice). Valid SslBump step\n#\t  # values and the corresponding ssl_bump evaluation moments are:\n#\t  #   SslBump1: After getting TCP-level and HTTP CONNECT info.\n#\t  #   SslBump2: After getting SSL Client Hello info.\n#\t  #   SslBump3: After getting SSL Server Hello info.\n#\n#\tacl aclname ssl::server_name [option] .foo.com ...\n#\t  # matches server name obtained from various sources [fast]\n#\t  #\n#\t  # The ACL computes server name(s) using such information sources as\n#\t  # CONNECT request URI, TLS client SNI, and TLS server certificate \n#\t  # subject (CN and SubjectAltName). The computed server name(s) usually\n#\t  # change with each SslBump step, as more info becomes available:\n#\t  # * SNI is used as the server name instead of the request URI,\n#\t  # * subject name(s) from the server certificate (CN and\n#\t  #   SubjectAltName) are used as the server names instead of SNI.\n#\t  #\n#\t  # When the ACL computes multiple server names, matching any single\n#\t  # computed name is sufficient for the ACL to match.\n#\t  #\n#\t  # The \"none\" name can be used to match transactions where the ACL\n#\t  # could not compute the server name using any information source\n#\t  # that was both available and allowed to be used by the ACL options at\n#\t  # the ACL evaluation time.\n#\t  #\n#\t  # Unlike dstdomain, this ACL does not perform DNS lookups.\n#\t  #\n#\t  # An ACL option below may be used to restrict what information \n#\t  # sources are used to extract the server names from:\n#\t  #\n#\t  # --client-requested\n#\t  #   The server name is SNI regardless of what the server says.\n#\t  # --server-provided\n#\t  #   The server name(s) are the certificate subject name(s), regardless\n#\t  #   of what the client has requested. If the server certificate is\n#\t  #   unavailable, then the name is \"none\".\n#\t  # --consensus\n#\t  #   The server name is either SNI (if SNI matches at least one of the\n#\t  #   certificate subject names) or \"none\" (otherwise). When the server\n#\t  #   certificate is unavailable, the consensus server name is SNI.\n#\t  #\n#\t  # Combining multiple options in one ACL is a fatal configuration\n#\t  # error.\n#\t  #\n#\t  # For all options: If no SNI is available, then the CONNECT request\n#\t  # target (a.k.a. URI) is used instead of SNI (for an intercepted\n#\t  # connection, this target is the destination IP address).\n#\n#\tacl aclname ssl::server_name_regex [-i] \\.foo\\.com ...\n#\t  # regex matches server name obtained from various sources [fast]\n#\n#\tacl aclname connections_encrypted\n#\t  # matches transactions with all HTTP messages received over TLS\n#\t  # transport connections. [fast]\n#\t  #\n#\t  # The master transaction deals with HTTP messages received from\n#\t  # various sources. All sources used by the master transaction in the\n#\t  # past are considered by the ACL. The following rules define whether\n#\t  # a given message source taints the entire master transaction,\n#\t  # resulting in ACL mismatches:\n#\t  #\n#\t  #  * The HTTP client transport connection is not TLS.\n#\t  #  * An adaptation service connection-encryption flag is off.\n#\t  #  * The peer or origin server transport connection is not TLS.\n#\t  #\n#\t  # Caching currently does not affect these rules. This cache ignorance\n#\t  # implies that only the current HTTP client transport and REQMOD\n#\t  # services status determine whether this ACL matches a from-cache\n#\t  # transaction. The source of the cached response does not have any\n#\t  # effect on future transaction that use the cached response without\n#\t  # revalidation. This may change.\n#\t  #\n#\t  # DNS, ICP, and HTCP exchanges during the master transaction do not\n#\t  # affect these rules.\n#\tacl aclname any-of acl1 acl2 ...\n#\t  # match any one of the acls [fast or slow]\n#\t  # The first matching ACL stops further ACL evaluation.\n#\t  #\n#\t  # ACLs from multiple any-of lines with the same name are ORed.\n#\t  # For example, A = (a1 or a2) or (a3 or a4) can be written as\n#\t  #   acl A any-of a1 a2\n#\t  #   acl A any-of a3 a4\n#\t  #\n#\t  # This group ACL is fast if all evaluated ACLs in the group are fast\n#\t  # and slow otherwise.\n#\n#\tacl aclname all-of acl1 acl2 ... \n#\t  # match all of the acls [fast or slow]\n#\t  # The first mismatching ACL stops further ACL evaluation.\n#\t  #\n#\t  # ACLs from multiple all-of lines with the same name are ORed.\n#\t  # For example, B = (b1 and b2) or (b3 and b4) can be written as\n#\t  #   acl B all-of b1 b2\n#\t  #   acl B all-of b3 b4\n#\t  #\n#\t  # This group ACL is fast if all evaluated ACLs in the group are fast\n#\t  # and slow otherwise.\n#\n#\tExamples:\n#\t\tacl macaddress arp 09:00:2b:23:45:67\n#\t\tacl myexample dst_as 1241\n#\t\tacl password proxy_auth REQUIRED\n#\t\tacl fileupload req_mime_type -i ^multipart/form-data$\n#\t\tacl javascript rep_mime_type -i ^application/x-javascript$\n#\n#Default:\n# ACLs all, manager, localhost, and to_localhost are predefined.\n#\n#\n# Recommended minimum configuration:\n#\n\n# Example rule allowing access from your local networks.\n# Adapt to list your (internal) IP networks from where browsing\n# should be allowed\nacl localnet src 10.0.0.0/8\t# RFC1918 possible internal network\n#acl localnet src 172.16.0.0/12\t# RFC1918 possible internal network\n#acl localnet src 192.168.0.0/16\t# RFC1918 possible internal network\nacl localnet src fc00::/7       \t# RFC 4193 local private network range\nacl localnet src fe80::/10      \t# RFC 4291 link-local (directly plugged) machines\n\nacl SSL_ports port 443\nacl Safe_ports port 80\t\t# http\nacl Safe_ports port 21\t\t# ftp\nacl Safe_ports port 443\t\t# https\nacl Safe_ports port 70\t\t# gopher\nacl Safe_ports port 210\t\t# wais\nacl Safe_ports port 1025-65535\t# unregistered ports\nacl Safe_ports port 280\t\t# http-mgmt\nacl Safe_ports port 488\t\t# gss-http\nacl Safe_ports port 591\t\t# filemaker\nacl Safe_ports port 777\t\t# multiling http\nacl CONNECT method CONNECT\n\n#  TAG: proxy_protocol_access\n#\tDetermine which client proxies can be trusted to provide correct\n#\tinformation regarding real client IP address using PROXY protocol.\n#\n#\tRequests may pass through a chain of several other proxies\n#\tbefore reaching us. The original source details may by sent in:\n#\t\t* HTTP message Forwarded header, or\n#\t\t* HTTP message X-Forwarded-For header, or\n#\t\t* PROXY protocol connection header.\n#\n#\tThis directive is solely for validating new PROXY protocol\n#\tconnections received from a port flagged with require-proxy-header.\n#\tIt is checked only once after TCP connection setup.\n#\n#\tA deny match results in TCP connection closure.\n#\n#\tAn allow match is required for Squid to permit the corresponding\n#\tTCP connection, before Squid even looks for HTTP request headers.\n#\tIf there is an allow match, Squid starts using PROXY header information\n#\tto determine the source address of the connection for all future ACL\n#\tchecks, logging, etc.\n#\n#\tSECURITY CONSIDERATIONS:\n#\n#\t\tAny host from which we accept client IP details can place\n#\t\tincorrect information in the relevant header, and Squid\n#\t\twill use the incorrect information as if it were the\n#\t\tsource address of the request.  This may enable remote\n#\t\thosts to bypass any access control restrictions that are\n#\t\tbased on the client's source addresses.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# all TCP connections to ports with require-proxy-header will be denied\n\n#  TAG: follow_x_forwarded_for\n#\tDetermine which client proxies can be trusted to provide correct\n#\tinformation regarding real client IP address.\n#\n#\tRequests may pass through a chain of several other proxies\n#\tbefore reaching us. The original source details may by sent in:\n#\t\t* HTTP message Forwarded header, or\n#\t\t* HTTP message X-Forwarded-For header, or\n#\t\t* PROXY protocol connection header.\n#\n#\tPROXY protocol connections are controlled by the proxy_protocol_access\n#\tdirective which is checked before this.\n#\n#\tIf a request reaches us from a source that is allowed by this\n#\tdirective, then we trust the information it provides regarding\n#\tthe IP of the client it received from (if any).\n#\n#\tFor the purpose of ACLs used in this directive the src ACL type always\n#\tmatches the address we are testing and srcdomain matches its rDNS.\n#\n#\tOn each HTTP request Squid checks for X-Forwarded-For header fields.\n#\tIf found the header values are iterated in reverse order and an allow\n#\tmatch is required for Squid to continue on to the next value.\n#\tThe verification ends when a value receives a deny match, cannot be\n#\ttested, or there are no more values to test.\n#\tNOTE: Squid does not yet follow the Forwarded HTTP header.\n#\n#\tThe end result of this process is an IP address that we will\n#\trefer to as the indirect client address.  This address may\n#\tbe treated as the client address for access control, ICAP, delay\n#\tpools and logging, depending on the acl_uses_indirect_client,\n#\ticap_uses_indirect_client, delay_pool_uses_indirect_client, \n#\tlog_uses_indirect_client and tproxy_uses_indirect_client options.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#\tSECURITY CONSIDERATIONS:\n#\n#\t\tAny host from which we accept client IP details can place\n#\t\tincorrect information in the relevant header, and Squid\n#\t\twill use the incorrect information as if it were the\n#\t\tsource address of the request.  This may enable remote\n#\t\thosts to bypass any access control restrictions that are\n#\t\tbased on the client's source addresses.\n#\n#\tFor example:\n#\n#\t\tacl localhost src 127.0.0.1\n#\t\tacl my_other_proxy srcdomain .proxy.example.com\n#\t\tfollow_x_forwarded_for allow localhost\n#\t\tfollow_x_forwarded_for allow my_other_proxy\n#Default:\n# X-Forwarded-For header will be ignored.\n\n#  TAG: acl_uses_indirect_client\ton|off\n#\tControls whether the indirect client address\n#\t(see follow_x_forwarded_for) is used instead of the\n#\tdirect client address in acl matching.\n#\n#\tNOTE: maxconn ACL considers direct TCP links and indirect\n#\t      clients will always have zero. So no match.\n#Default:\n# acl_uses_indirect_client on\n\n#  TAG: delay_pool_uses_indirect_client\ton|off\n#\tControls whether the indirect client address\n#\t(see follow_x_forwarded_for) is used instead of the\n#\tdirect client address in delay pools.\n#Default:\n# delay_pool_uses_indirect_client on\n\n#  TAG: log_uses_indirect_client\ton|off\n#\tControls whether the indirect client address\n#\t(see follow_x_forwarded_for) is used instead of the\n#\tdirect client address in the access log.\n#Default:\n# log_uses_indirect_client on\n\n#  TAG: tproxy_uses_indirect_client\ton|off\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-follow-x-forwarded-for and --enable-linux-netfilter\n#\n#\tControls whether the indirect client address\n#\t(see follow_x_forwarded_for) is used instead of the\n#\tdirect client address when spoofing the outgoing client.\n#\n#\tThis has no effect on requests arriving in non-tproxy\n#\tmode ports.\n#\n#\tSECURITY WARNING: Usage of this option is dangerous\n#\tand should not be used trivially. Correct configuration\n#\tof follow_x_forwarded_for with a limited set of trusted\n#\tsources is required to prevent abuse of your proxy.\n#Default:\n# tproxy_uses_indirect_client off\n\n#  TAG: spoof_client_ip\n#\tControl client IP address spoofing of TPROXY traffic based on\n#\tdefined access lists.\n#\n#\tspoof_client_ip allow|deny [!]aclname ...\n#\n#\tIf there are no \"spoof_client_ip\" lines present, the default\n#\tis to \"allow\" spoofing of any suitable request.\n#\n#\tNote that the cache_peer \"no-tproxy\" option overrides this ACL.\n#\n#\tThis clause supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Allow spoofing on all TPROXY traffic.\n\n#  TAG: http_access\n#\tAllowing or Denying access based on defined access lists\n#\n#\tTo allow or deny a message received on an HTTP, HTTPS, or FTP port:\n#\thttp_access allow|deny [!]aclname ...\n#\n#\tNOTE on default values:\n#\n#\tIf there are no \"access\" lines present, the default is to deny\n#\tthe request.\n#\n#\tIf none of the \"access\" lines cause a match, the default is the\n#\topposite of the last line in the list.  If the last line was\n#\tdeny, the default is allow.  Conversely, if the last line\n#\tis allow, the default will be deny.  For these reasons, it is a\n#\tgood idea to have an \"deny all\" entry at the end of your access\n#\tlists to avoid potential confusion.\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#Default:\n# Deny, unless rules exist in squid.conf.\n#\n\n#\n# Recommended minimum Access Permission configuration:\n#\n# Deny requests to certain unsafe ports\nhttp_access deny !Safe_ports\n\n# Deny CONNECT to other than secure SSL ports\nhttp_access deny CONNECT !SSL_ports\n\n# Only allow cachemgr access from localhost\nhttp_access allow localhost manager\nhttp_access deny manager\n\n# We strongly recommend the following be uncommented to protect innocent\n# web applications running on the proxy server who think the only\n# one who can access services on \"localhost\" is a local user\nhttp_access deny to_localhost\n\n#\n# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS\n#\n\n# Example rule allowing access from your local networks.\n# Adapt localnet in the ACL section to list your (internal) IP networks\n# from where browsing should be allowed\nhttp_access allow localnet\nhttp_access allow localhost\n\n# And finally deny all other access to this proxy\nhttp_access deny all\n\n#  TAG: adapted_http_access\n#\tAllowing or Denying access based on defined access lists\n#\n#\tEssentially identical to http_access, but runs after redirectors\n#\tand ICAP/eCAP adaptation. Allowing access control based on their\n#\toutput.\n#\n#\tIf not set then only http_access is used.\n#Default:\n# Allow, unless rules exist in squid.conf.\n\n#  TAG: http_reply_access\n#\tAllow replies to client requests. This is complementary to http_access.\n#\n#\thttp_reply_access allow|deny [!] aclname ...\n#\n#\tNOTE: if there are no access lines present, the default is to allow\n#\tall replies.\n#\n#\tIf none of the access lines cause a match the opposite of the\n#\tlast line will apply. Thus it is good practice to end the rules\n#\twith an \"allow all\" or \"deny all\" entry.\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Allow, unless rules exist in squid.conf.\n\n#  TAG: icp_access\n#\tAllowing or Denying access to the ICP port based on defined\n#\taccess lists\n#\n#\ticp_access  allow|deny [!]aclname ...\n#\n#\tNOTE: The default if no icp_access lines are present is to\n#\tdeny all traffic. This default may cause problems with peers\n#\tusing ICP.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n## Allow ICP queries from local networks only\nicp_access allow localnet\nicp_access deny all\n#Default:\n# Deny, unless rules exist in squid.conf.\n\n#  TAG: htcp_access\n#\tAllowing or Denying access to the HTCP port based on defined\n#\taccess lists\n#\n#\thtcp_access  allow|deny [!]aclname ...\n#\n#\tSee also htcp_clr_access for details on access control for\n#\tcache purge (CLR) HTCP messages.\n#\n#\tNOTE: The default if no htcp_access lines are present is to\n#\tdeny all traffic. This default may cause problems with peers\n#\tusing the htcp option.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n## Allow HTCP queries from local networks only\n##htcp_access allow localnet\n##htcp_access deny all\n#Default:\n# Deny, unless rules exist in squid.conf.\n\n#  TAG: htcp_clr_access\n#\tAllowing or Denying access to purge content using HTCP based\n#\ton defined access lists.\n#\tSee htcp_access for details on general HTCP access control.\n#\n#\thtcp_clr_access  allow|deny [!]aclname ...\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n## Allow HTCP CLR requests from trusted peers\n#acl htcp_clr_peer src 192.0.2.2 2001:DB8::2\n#htcp_clr_access allow htcp_clr_peer\n#htcp_clr_access deny all\n#Default:\n# Deny, unless rules exist in squid.conf.\n\n#  TAG: miss_access\n#\tDetermines whether network access is permitted when satisfying a request.\n#\n#\tFor example;\n#\t    to force your neighbors to use you as a sibling instead of\n#\t    a parent.\n#\n#\t\tacl localclients src 192.0.2.0/24 2001:DB8::a:0/64\n#\t\tmiss_access deny  !localclients\n#\t\tmiss_access allow all\n#\n#\tThis means only your local clients are allowed to fetch relayed/MISS\n#\treplies from the network and all other clients can only fetch cached\n#\tobjects (HITs).\n#\n#\tThe default for this setting allows all clients who passed the\n#\thttp_access rules to relay via this proxy.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Allow, unless rules exist in squid.conf.\n\n#  TAG: ident_lookup_access\n#\tA list of ACL elements which, if matched, cause an ident\n#\t(RFC 931) lookup to be performed for this request.  For\n#\texample, you might choose to always perform ident lookups\n#\tfor your main multi-user Unix boxes, but not for your Macs\n#\tand PCs.  By default, ident lookups are not performed for\n#\tany requests.\n#\n#\tTo enable ident lookups for specific client addresses, you\n#\tcan follow this example:\n#\n#\tacl ident_aware_hosts src 198.168.1.0/24\n#\tident_lookup_access allow ident_aware_hosts\n#\tident_lookup_access deny all\n#\n#\tOnly src type ACL checks are fully supported.  A srcdomain\n#\tACL might work at times, but it will not always provide\n#\tthe correct result.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Unless rules exist in squid.conf, IDENT is not fetched.\n\n#  TAG: reply_body_max_size\tsize [acl acl...]\n#\tThis option specifies the maximum size of a reply body. It can be\n#\tused to prevent users from downloading very large files, such as\n#\tMP3's and movies. When the reply headers are received, the\n#\treply_body_max_size lines are processed, and the first line where\n#\tall (if any) listed ACLs are true is used as the maximum body size\n#\tfor this reply.\n#\n#\tThis size is checked twice. First when we get the reply headers,\n#\twe check the content-length value.  If the content length value exists\n#\tand is larger than the allowed size, the request is denied and the\n#\tuser receives an error message that says \"the request or reply\n#\tis too large.\" If there is no content-length, and the reply\n#\tsize exceeds this limit, the client's connection is just closed\n#\tand they will receive a partial reply.\n#\n#\tWARNING: downstream caches probably can not detect a partial reply\n#\tif there is no content-length header, so they will cache\n#\tpartial responses and give them out as hits.  You should NOT\n#\tuse this option if you have downstream caches.\n#\n#\tWARNING: A maximum size smaller than the size of squid's error messages\n#\twill cause an infinite loop and crash squid. Ensure that the smallest\n#\tnon-zero value you use is greater that the maximum header size plus\n#\tthe size of your largest error page.\n#\n#\tIf you set this parameter none (the default), there will be\n#\tno limit imposed.\n#\n#\tConfiguration Format is:\n#\t\treply_body_max_size SIZE UNITS [acl ...]\n#\tie.\n#\t\treply_body_max_size 10 MB\n#\n#Default:\n# No limit is applied.\n\n#  TAG: on_unsupported_protocol\n#\tDetermines Squid behavior when encountering strange requests at the\n#\tbeginning of an accepted TCP connection or the beginning of a bumped\n#\tCONNECT tunnel. Controlling Squid reaction to unexpected traffic is\n#\tespecially useful in interception environments where Squid is likely\n#\tto see connections for unsupported protocols that Squid should either\n#\tterminate or tunnel at TCP level.\n# \n#\t\ton_unsupported_protocol <action> [!]acl ...\n# \n#\tThe first matching action wins. Only fast ACLs are supported.\n#\n#\tSupported actions are:\n# \n#\ttunnel: Establish a TCP connection with the intended server and\n#\t\tblindly shovel TCP packets between the client and server.\n#\n#\trespond: Respond with an error message, using the transfer protocol\n#\t\tfor the Squid port that received the request (e.g., HTTP\n#\t\tfor connections intercepted at the http_port). This is the\n#\t\tdefault.\n#\n#\tSquid expects the following traffic patterns:\n#\n#\t  http_port: a plain HTTP request\n#\t  https_port: SSL/TLS handshake followed by an [encrypted] HTTP request\n#\t  ftp_port: a plain FTP command (no on_unsupported_protocol support yet!)\n#\t  CONNECT tunnel on http_port: same as https_port\n#\t  CONNECT tunnel on https_port: same as https_port\n#\n#\tCurrently, this directive has effect on intercepted connections and\n#\tbumped tunnels only. Other cases are not supported because Squid\n#\tcannot know the intended destination of other traffic.\n#\n#\tFor example:\n#\t  # define what Squid errors indicate receiving non-HTTP traffic:\n#\t  acl foreignProtocol squid_error ERR_PROTOCOL_UNKNOWN ERR_TOO_BIG\n#\t  # define what Squid errors indicate receiving nothing:\n#\t  acl serverTalksFirstProtocol squid_error ERR_REQUEST_START_TIMEOUT\n#\t  # tunnel everything that does not look like HTTP:\n#          on_unsupported_protocol tunnel foreignProtocol\n#\t  # tunnel if we think the client waits for the server to talk first:\n#\t  on_unsupported_protocol tunnel serverTalksFirstProtocol\n#\t  # in all other error cases, just send an HTTP \"error page\" response:\n#\t  on_unsupported_protocol respond all\n#\n#\tSee also: squid_error ACL\n#Default:\n# Respond with an error message to unidentifiable traffic\n\n# NETWORK OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: http_port\n#\tUsage:\tport [mode] [options]\n#\t\thostname:port [mode] [options]\n#\t\t1.2.3.4:port [mode] [options]\n#\n#\tThe socket addresses where Squid will listen for HTTP client\n#\trequests.  You may specify multiple socket addresses.\n#\tThere are three forms: port alone, hostname with port, and\n#\tIP address with port.  If you specify a hostname or IP\n#\taddress, Squid binds the socket to that specific\n#\taddress. Most likely, you do not need to bind to a specific\n#\taddress, so you can use the port number alone.\n#\n#\tIf you are running Squid in accelerator mode, you\n#\tprobably want to listen on port 80 also, or instead.\n#\n#\tThe -a command line option may be used to specify additional\n#\tport(s) where Squid listens for proxy request. Such ports will\n#\tbe plain proxy ports with no options.\n#\n#\tYou may specify multiple socket addresses on multiple lines.\n#\n#\tModes:\n#\n#\t   intercept\tSupport for IP-Layer NAT interception delivering\n#\t\t\ttraffic to this Squid port.\n#\t\t\tNP: disables authentication on the port.\n#\n#\t   tproxy\tSupport Linux TPROXY (or BSD divert-to) with spoofing\n#\t\t\tof outgoing connections using the client IP address.\n#\t\t\tNP: disables authentication on the port.\n#\n#\t   accel\tAccelerator / reverse proxy mode\n#\n#\t   ssl-bump\tFor each CONNECT request allowed by ssl_bump ACLs,\n#\t\t\testablish secure connection with the client and with\n#\t\t\tthe server, decrypt HTTPS messages as they pass through\n#\t\t\tSquid, and treat them as unencrypted HTTP messages,\n#\t\t\tbecoming the man-in-the-middle.\n#\n#\t\t\tThe ssl_bump option is required to fully enable\n#\t\t\tbumping of CONNECT requests.\n#\n#\tOmitting the mode flag causes default forward proxy mode to be used.\n#\n#\n#\tAccelerator Mode Options:\n#\n#\t   defaultsite=domainname\n#\t\t\tWhat to use for the Host: header if it is not present\n#\t\t\tin a request. Determines what site (not origin server)\n#\t\t\taccelerators should consider the default.\n#\n#\t   no-vhost\tDisable using HTTP/1.1 Host header for virtual domain support.\n#\n#\t   protocol=\tProtocol to reconstruct accelerated and intercepted\n#\t\t\trequests with. Defaults to HTTP/1.1 for http_port and\n#\t\t\tHTTPS/1.1 for https_port.\n#\t\t\tWhen an unsupported value is configured Squid will\n#\t\t\tproduce a FATAL error.\n#\t\t\tValues: HTTP or HTTP/1.1, HTTPS or HTTPS/1.1\n#\n#\t   vport\tVirtual host port support. Using the http_port number\n#\t\t\tinstead of the port passed on Host: headers.\n#\n#\t   vport=NN\tVirtual host port support. Using the specified port\n#\t\t\tnumber instead of the port passed on Host: headers.\n#\n#\t   act-as-origin\n#\t\t\tAct as if this Squid is the origin server.\n#\t\t\tThis currently means generate new Date: and Expires:\n#\t\t\theaders on HIT instead of adding Age:.\n#\n#\t   ignore-cc\tIgnore request Cache-Control headers.\n#\n#\t\t\tWARNING: This option violates HTTP specifications if\n#\t\t\tused in non-accelerator setups.\n#\n#\t   allow-direct\tAllow direct forwarding in accelerator mode. Normally\n#\t\t\taccelerated requests are denied direct forwarding as if\n#\t\t\tnever_direct was used.\n#\n#\t\t\tWARNING: this option opens accelerator mode to security\n#\t\t\tvulnerabilities usually only affecting in interception\n#\t\t\tmode. Make sure to protect forwarding with suitable\n#\t\t\thttp_access rules when using this.\n#\n#\n#\tSSL Bump Mode Options:\n#\t    In addition to these options ssl-bump requires TLS/SSL options.\n#\n#\t   generate-host-certificates[=<on|off>]\n#\t\t\tDynamically create SSL server certificates for the\n#\t\t\tdestination hosts of bumped CONNECT requests.When \n#\t\t\tenabled, the cert and key options are used to sign\n#\t\t\tgenerated certificates. Otherwise generated\n#\t\t\tcertificate will be selfsigned.\n#\t\t\tIf there is a CA certificate lifetime of the generated \n#\t\t\tcertificate equals lifetime of the CA certificate. If\n#\t\t\tgenerated certificate is selfsigned lifetime is three \n#\t\t\tyears.\n#\t\t\tThis option is enabled by default when ssl-bump is used.\n#\t\t\tSee the ssl-bump option above for more information.\n#\t\t\t\n#\t   dynamic_cert_mem_cache_size=SIZE\n#\t\t\tApproximate total RAM size spent on cached generated\n#\t\t\tcertificates. If set to zero, caching is disabled. The\n#\t\t\tdefault value is 4MB.\n#\n#\tTLS / SSL Options:\n#\n#\t   tls-cert=\tPath to file containing an X.509 certificate (PEM format)\n#\t\t\tto be used in the TLS handshake ServerHello.\n#\n#\t\t\tIf this certificate is constrained by KeyUsage TLS\n#\t\t\tfeature it must allow HTTP server usage, along with\n#\t\t\tany additional restrictions imposed by your choice\n#\t\t\tof options= settings.\n#\n#\t\t\tWhen OpenSSL is used this file may also contain a\n#\t\t\tchain of intermediate CA certificates to send in the\n#\t\t\tTLS handshake.\n#\n#\t\t\tWhen GnuTLS is used this option (and any paired\n#\t\t\ttls-key= option) may be repeated to load multiple\n#\t\t\tcertificates for different domains.\n#\n#\t\t\tAlso, when generate-host-certificates=on is configured\n#\t\t\tthe first tls-cert= option must be a CA certificate\n#\t\t\tcapable of signing the automatically generated\n#\t\t\tcertificates.\n#\n#\t   tls-key=\tPath to a file containing private key file (PEM format)\n#\t\t\tfor the previous tls-cert= option.\n#\n#\t\t\tIf tls-key= is not specified tls-cert= is assumed to\n#\t\t\treference a PEM file containing both the certificate\n#\t\t\tand private key.\n#\n#\t   cipher=\tColon separated list of supported ciphers.\n#\t\t\tNOTE: some ciphers such as EDH ciphers depend on\n#\t\t\t      additional settings. If those settings are\n#\t\t\t      omitted the ciphers may be silently ignored\n#\t\t\t      by the OpenSSL library.\n#\n#\t   options=\tVarious SSL implementation options. The most important\n#\t\t\tbeing:\n#\n#\t\t\t    NO_SSLv3    Disallow the use of SSLv3\n#\n#\t\t\t    NO_TLSv1    Disallow the use of TLSv1.0\n#\n#\t\t\t    NO_TLSv1_1  Disallow the use of TLSv1.1\n#\n#\t\t\t    NO_TLSv1_2  Disallow the use of TLSv1.2\n#\n#\t\t\t    SINGLE_DH_USE\n#\t\t\t\t      Always create a new key when using\n#\t\t\t\t      temporary/ephemeral DH key exchanges\n#\n#\t\t\t    SINGLE_ECDH_USE\n#\t\t\t\t      Enable ephemeral ECDH key exchange.\n#\t\t\t\t      The adopted curve should be specified\n#\t\t\t\t      using the tls-dh option.\n#\n#\t\t\t    NO_TICKET\n#\t\t\t\t      Disable use of RFC5077 session tickets.\n#\t\t\t\t      Some servers may have problems\n#\t\t\t\t      understanding the TLS extension due\n#\t\t\t\t      to ambiguous specification in RFC4507.\n#\n#\t\t\t    ALL       Enable various bug workarounds\n#\t\t\t\t      suggested as \"harmless\" by OpenSSL\n#\t\t\t\t      Be warned that this reduces SSL/TLS\n#\t\t\t\t      strength to some attacks.\n#\n#\t\t\tSee the OpenSSL SSL_CTX_set_options documentation for a\n#\t\t\tmore complete list.\n#\n#\t   clientca=\tFile containing the list of CAs to use when\n#\t\t\trequesting a client certificate.\n#\n#\t   tls-cafile=\tPEM file containing CA certificates to use when verifying\n#\t\t\tclient certificates. If not configured clientca will be\n#\t\t\tused. May be repeated to load multiple files.\n#\n#\t   capath=\tDirectory containing additional CA certificates\n#\t\t\tand CRL lists to use when verifying client certificates.\n#\t\t\tRequires OpenSSL or LibreSSL.\n#\n#\t   crlfile=\tFile of additional CRL lists to use when verifying\n#\t\t\tthe client certificate, in addition to CRLs stored in\n#\t\t\tthe capath. Implies VERIFY_CRL flag below.\n#\n#\t   tls-dh=[curve:]file\n#\t\t\tFile containing DH parameters for temporary/ephemeral DH key\n#\t\t\texchanges, optionally prefixed by a curve for ephemeral ECDH\n#\t\t\tkey exchanges.\n#\t\t\tSee OpenSSL documentation for details on how to create the\n#\t\t\tDH parameter file. Supported curves for ECDH can be listed\n#\t\t\tusing the \"openssl ecparam -list_curves\" command.\n#\t\t\tWARNING: EDH and EECDH ciphers will be silently disabled if\n#\t\t\t\t this option is not set.\n#\n#\t   sslflags=\tVarious flags modifying the use of SSL:\n#\t\t\t    DELAYED_AUTH\n#\t\t\t\tDon't request client certificates\n#\t\t\t\timmediately, but wait until acl processing\n#\t\t\t\trequires a certificate (not yet implemented).\n#\t\t\t    NO_SESSION_REUSE\n#\t\t\t\tDon't allow for session reuse. Each connection\n#\t\t\t\twill result in a new SSL session.\n#\t\t\t    VERIFY_CRL\n#\t\t\t\tVerify CRL lists when accepting client\n#\t\t\t\tcertificates.\n#\t\t\t    VERIFY_CRL_ALL\n#\t\t\t\tVerify CRL lists for all certificates in the\n#\t\t\t\tclient certificate chain.\n#\n#\t   tls-default-ca[=off]\n#\t\t\tWhether to use the system Trusted CAs. Default is OFF.\n#\n#\t   tls-no-npn\tDo not use the TLS NPN extension to advertise HTTP/1.1.\n#\n#\t   sslcontext=\tSSL session ID context identifier.\n#\n#\tOther Options:\n#\n#\t   connection-auth[=on|off]\n#\t                use connection-auth=off to tell Squid to prevent \n#\t                forwarding Microsoft connection oriented authentication\n#\t\t\t(NTLM, Negotiate and Kerberos)\n#\n#\t   disable-pmtu-discovery=\n#\t\t\tControl Path-MTU discovery usage:\n#\t\t\t    off\t\tlets OS decide on what to do (default).\n#\t\t\t    transparent\tdisable PMTU discovery when transparent\n#\t\t\t\t\tsupport is enabled.\n#\t\t\t    always\tdisable always PMTU discovery.\n#\n#\t\t\tIn many setups of transparently intercepting proxies\n#\t\t\tPath-MTU discovery can not work on traffic towards the\n#\t\t\tclients. This is the case when the intercepting device\n#\t\t\tdoes not fully track connections and fails to forward\n#\t\t\tICMP must fragment messages to the cache server. If you\n#\t\t\thave such setup and experience that certain clients\n#\t\t\tsporadically hang or never complete requests set\n#\t\t\tdisable-pmtu-discovery option to 'transparent'.\n#\n#\t   name=\tSpecifies a internal name for the port. Defaults to\n#\t\t\tthe port specification (port or addr:port)\n#\n#\t   tcpkeepalive[=idle,interval,timeout]\n#\t\t\tEnable TCP keepalive probes of idle connections.\n#\t\t\tIn seconds; idle is the initial time before TCP starts\n#\t\t\tprobing the connection, interval how often to probe, and\n#\t\t\ttimeout the time before giving up.\n#\n#\t   require-proxy-header\n#\t\t\tRequire PROXY protocol version 1 or 2 connections.\n#\t\t\tThe proxy_protocol_access is required to whitelist\n#\t\t\tdownstream proxies which can be trusted.\n#\n#\tIf you run Squid on a dual-homed machine with an internal\n#\tand an external interface we recommend you to specify the\n#\tinternal address:port in http_port. This way Squid will only be\n#\tvisible on the internal address.\n#\n#\n\n# Squid normally listens to port 3128\nhttp_port 127.0.0.1:3128\n\n#  TAG: https_port\n#\tUsage:  [ip:]port cert=certificate.pem [key=key.pem] [mode] [options...]\n#\n#\tThe socket address where Squid will listen for client requests made\n#\tover TLS or SSL connections. Commonly referred to as HTTPS.\n#\n#\tThis is most useful for situations where you are running squid in\n#\taccelerator mode and you want to do the TLS work at the accelerator\n#\tlevel.\n#\n#\tYou may specify multiple socket addresses on multiple lines,\n#\teach with their own certificate and/or options.\n#\n#\tThe tls-cert= option is mandatory on HTTPS ports.\n#\n#\tSee http_port for a list of modes and options.\n#Default:\n# none\n\n#  TAG: ftp_port\n#\tEnables Native FTP proxy by specifying the socket address where Squid\n#\tlistens for FTP client requests. See http_port directive for various\n#\tways to specify the listening address and mode.\n#\n#\tUsage: ftp_port address [mode] [options]\n#\n#\tWARNING: This is a new, experimental, complex feature that has seen\n#\tlimited production exposure. Some Squid modules (e.g., caching) do not\n#\tcurrently work with native FTP proxying, and many features have not\n#\teven been tested for compatibility. Test well before deploying!\n#\n#\tNative FTP proxying differs substantially from proxying HTTP requests\n#\twith ftp:// URIs because Squid works as an FTP server and receives\n#\tactual FTP commands (rather than HTTP requests with FTP URLs).\n#\n#\tNative FTP commands accepted at ftp_port are internally converted or\n#\twrapped into HTTP-like messages. The same happens to Native FTP\n#\tresponses received from FTP origin servers. Those HTTP-like messages\n#\tare shoveled through regular access control and adaptation layers\n#\tbetween the FTP client and the FTP origin server. This allows Squid to\n#\texamine, adapt, block, and log FTP exchanges. Squid reuses most HTTP\n#\tmechanisms when shoveling wrapped FTP messages. For example,\n#\thttp_access and adaptation_access directives are used.\n#\n#\tModes:\n#\n#\t   intercept\tSame as http_port intercept. The FTP origin address is\n#\t\t\tdetermined based on the intended destination of the\n#\t\t\tintercepted connection.\n#\n#\t   tproxy\tSupport Linux TPROXY for spoofing outgoing\n#\t\t\tconnections using the client IP address.\n#\t\t\tNP: disables authentication and maybe IPv6 on the port.\n#\n#\tBy default (i.e., without an explicit mode option), Squid extracts the\n#\tFTP origin address from the login@origin parameter of the FTP USER\n#\tcommand. Many popular FTP clients support such native FTP proxying.\n#\n#\tOptions:\n#\n#\t   name=token\tSpecifies an internal name for the port. Defaults to\n#\t\t\tthe port address. Usable with myportname ACL.\n#\n#\t   ftp-track-dirs\n#\t\t\tEnables tracking of FTP directories by injecting extra\n#\t\t\tPWD commands and adjusting Request-URI (in wrapping\n#\t\t\tHTTP requests) to reflect the current FTP server\n#\t\t\tdirectory. Tracking is disabled by default.\n#\n#\t   protocol=FTP\tProtocol to reconstruct accelerated and intercepted\n#\t\t\trequests with. Defaults to FTP. No other accepted\n#\t\t\tvalues have been tested with. An unsupported value\n#\t\t\tresults in a FATAL error. Accepted values are FTP,\n#\t\t\tHTTP (or HTTP/1.1), and HTTPS (or HTTPS/1.1).\n#\n#\tOther http_port modes and options that are not specific to HTTP and\n#\tHTTPS may also work.\n#Default:\n# none\n\n#  TAG: tcp_outgoing_tos\n#\tAllows you to select a TOS/Diffserv value for packets outgoing\n#\ton the server side, based on an ACL.\n#\n#\ttcp_outgoing_tos ds-field [!]aclname ...\n#\n#\tExample where normal_service_net uses the TOS value 0x00\n#\tand good_service_net uses 0x20\n#\n#\tacl normal_service_net src 10.0.0.0/24\n#\tacl good_service_net src 10.0.1.0/24\n#\ttcp_outgoing_tos 0x00 normal_service_net\n#\ttcp_outgoing_tos 0x20 good_service_net\n#\n#\tTOS/DSCP values really only have local significance - so you should\n#\tknow what you're specifying. For more information, see RFC2474,\n#\tRFC2475, and RFC3260.\n#\n#\tThe TOS/DSCP byte must be exactly that - a octet value  0 - 255, or\n#\t\"default\" to use whatever default your host has.\n#\tNote that only multiples of 4 are usable as the two rightmost bits have\n#\tbeen redefined for use by ECN (RFC 3168 section 23.1).\n#\tThe squid parser will enforce this by masking away the ECN bits.\n#\n#\tProcessing proceeds in the order specified, and stops at first fully\n#\tmatching line.\n#\n#\tOnly fast ACLs are supported.\n#Default:\n# none\n\n#  TAG: clientside_tos\n#\tAllows you to select a TOS/DSCP value for packets being transmitted\n#\ton the client-side, based on an ACL.\n#\n#\tclientside_tos ds-field [!]aclname ...\n#\n#\tExample where normal_service_net uses the TOS value 0x00\n#\tand good_service_net uses 0x20\n#\n#\tacl normal_service_net src 10.0.0.0/24\n#\tacl good_service_net src 10.0.1.0/24\n#\tclientside_tos 0x00 normal_service_net\n#\tclientside_tos 0x20 good_service_net\n#\n#\tNote: This feature is incompatible with qos_flows. Any TOS values set here\n#\twill be overwritten by TOS values in qos_flows.\n#\n#\tThe TOS/DSCP byte must be exactly that - a octet value  0 - 255, or\n#\t\"default\" to use whatever default your host has.\n#\tNote that only multiples of 4 are usable as the two rightmost bits have\n#\tbeen redefined for use by ECN (RFC 3168 section 23.1).\n#\tThe squid parser will enforce this by masking away the ECN bits.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# none\n\n#  TAG: tcp_outgoing_mark\n# Note: This option is only available if Squid is rebuilt with the\n#       Packet MARK (Linux)\n#\n#\tAllows you to apply a Netfilter mark value to outgoing packets\n#\ton the server side, based on an ACL.\n#\n#\ttcp_outgoing_mark mark-value [!]aclname ...\n#\n#\tExample where normal_service_net uses the mark value 0x00\n#\tand good_service_net uses 0x20\n#\n#\tacl normal_service_net src 10.0.0.0/24\n#\tacl good_service_net src 10.0.1.0/24\n#\ttcp_outgoing_mark 0x00 normal_service_net\n#\ttcp_outgoing_mark 0x20 good_service_net\n#\n#\tOnly fast ACLs are supported.\n#Default:\n# none\n\n#  TAG: clientside_mark\n# Note: This option is only available if Squid is rebuilt with the\n#       Packet MARK (Linux)\n#\n#\tAllows you to apply a Netfilter mark value to packets being transmitted\n#\ton the client-side, based on an ACL.\n#\n#\tclientside_mark mark-value [!]aclname ...\n#\n#\tExample where normal_service_net uses the mark value 0x00\n#\tand good_service_net uses 0x20\n#\n#\tacl normal_service_net src 10.0.0.0/24\n#\tacl good_service_net src 10.0.1.0/24\n#\tclientside_mark 0x00 normal_service_net\n#\tclientside_mark 0x20 good_service_net\n#\n#\tNote: This feature is incompatible with qos_flows. Any mark values set here\n#\twill be overwritten by mark values in qos_flows.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# none\n\n#  TAG: qos_flows\n#\tAllows you to select a TOS/DSCP value to mark outgoing\n#\tconnections to the client, based on where the reply was sourced.\n#\tFor platforms using netfilter, allows you to set a netfilter mark\n#\tvalue instead of, or in addition to, a TOS value.\n#\n#\tBy default this functionality is disabled. To enable it with the default\n#\tsettings simply use \"qos_flows mark\" or \"qos_flows tos\". Default\n#\tsettings will result in the netfilter mark or TOS value being copied\n#\tfrom the upstream connection to the client. Note that it is the connection\n#\tCONNMARK value not the packet MARK value that is copied.\n#\n#\tIt is not currently possible to copy the mark or TOS value from the\n#\tclient to the upstream connection request.\n#\n#\tTOS values really only have local significance - so you should\n#\tknow what you're specifying. For more information, see RFC2474,\n#\tRFC2475, and RFC3260.\n#\n#\tThe TOS/DSCP byte must be exactly that - a octet value  0 - 255.\n#\tNote that only multiples of 4 are usable as the two rightmost bits have\n#\tbeen redefined for use by ECN (RFC 3168 section 23.1).\n#\tThe squid parser will enforce this by masking away the ECN bits.\n#\n#\tMark values can be any unsigned 32-bit integer value.\n#\n#\tThis setting is configured by setting the following values:\n#\n#\ttos|mark                Whether to set TOS or netfilter mark values\n#\n#\tlocal-hit=0xFF\t\tValue to mark local cache hits.\n#\n#\tsibling-hit=0xFF\tValue to mark hits from sibling peers.\n#\n#\tparent-hit=0xFF\t\tValue to mark hits from parent peers.\n#\n#\tmiss=0xFF[/mask]\tValue to mark cache misses. Takes precedence\n#\t\t\t\tover the preserve-miss feature (see below), unless\n#\t\t\t\tmask is specified, in which case only the bits\n#\t\t\t\tspecified in the mask are written.\n#\n#\tThe TOS variant of the following features are only possible on Linux\n#\tand require your kernel to be patched with the TOS preserving ZPH\n#\tpatch, available from http://zph.bratcheda.org\n#\tNo patch is needed to preserve the netfilter mark, which will work\n#\twith all variants of netfilter.\n#\n#\tdisable-preserve-miss\n#\t\tThis option disables the preservation of the TOS or netfilter\n#\t\tmark. By default, the existing TOS or netfilter mark value of\n#\t\tthe response coming from the remote server will be retained\n#\t\tand masked with miss-mark.\n#\t\tNOTE: in the case of a netfilter mark, the mark must be set on\n#\t\tthe connection (using the CONNMARK target) not on the packet\n#\t\t(MARK target).\n#\n#\tmiss-mask=0xFF\n#\t\tAllows you to mask certain bits in the TOS or mark value\n#\t\treceived from the remote server, before copying the value to\n#\t\tthe TOS sent towards clients.\n#\t\tDefault for tos: 0xFF (TOS from server is not changed).\n#\t\tDefault for mark: 0xFFFFFFFF (mark from server is not changed).\n#\n#\tAll of these features require the --enable-zph-qos compilation flag\n#\t(enabled by default). Netfilter marking also requires the\n#\tlibnetfilter_conntrack libraries (--with-netfilter-conntrack) and\n#\tlibcap 2.09+ (--with-libcap).\n#\n#Default:\n# none\n\n#  TAG: tcp_outgoing_address\n#\tAllows you to map requests to different outgoing IP addresses\n#\tbased on the username or source address of the user making\n#\tthe request.\n#\n#\ttcp_outgoing_address ipaddr [[!]aclname] ...\n#\n#\tFor example;\n#\t\tForwarding clients with dedicated IPs for certain subnets.\n#\n#\t  acl normal_service_net src 10.0.0.0/24\n#\t  acl good_service_net src 10.0.2.0/24\n#\n#\t  tcp_outgoing_address 2001:db8::c001 good_service_net\n#\t  tcp_outgoing_address 10.1.0.2 good_service_net\n#\n#\t  tcp_outgoing_address 2001:db8::beef normal_service_net\n#\t  tcp_outgoing_address 10.1.0.1 normal_service_net\n#\n#\t  tcp_outgoing_address 2001:db8::1\n#\t  tcp_outgoing_address 10.1.0.3\n#\n#\tProcessing proceeds in the order specified, and stops at first fully\n#\tmatching line.\n#\n#\tSquid will add an implicit IP version test to each line.\n#\tRequests going to IPv4 websites will use the outgoing 10.1.0.* addresses.\n#\tRequests going to IPv6 websites will use the outgoing 2001:db8:* addresses.\n#\n#\n#\tNOTE: The use of this directive using client dependent ACLs is\n#\tincompatible with the use of server side persistent connections. To\n#\tensure correct results it is best to set server_persistent_connections\n#\tto off when using this directive in such configurations.\n#\n#\tNOTE: The use of this directive to set a local IP on outgoing TCP links\n#\tis incompatible with using TPROXY to set client IP out outbound TCP links.\n#\tWhen needing to contact peers use the no-tproxy cache_peer option and the\n#\tclient_dst_passthru directive re-enable normal forwarding such as this.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Address selection is performed by the operating system.\n\n#  TAG: host_verify_strict\n#\tRegardless of this option setting, when dealing with intercepted\n#\ttraffic, Squid always verifies that the destination IP address matches\n#\tthe Host header domain or IP (called 'authority form URL').\n#\t\n#\tThis enforcement is performed to satisfy a MUST-level requirement in\n#\tRFC 2616 section 14.23: \"The Host field value MUST represent the naming\n#\tauthority of the origin server or gateway given by the original URL\".\n#\t\n#\tWhen set to ON:\n#\t\tSquid always responds with an HTTP 409 (Conflict) error\n#\t\tpage and logs a security warning if there is no match.\n#\t\n#\t\tSquid verifies that the destination IP address matches\n#\t\tthe Host header for forward-proxy and reverse-proxy traffic\n#\t\tas well. For those traffic types, Squid also enables the\n#\t\tfollowing checks, comparing the corresponding Host header\n#\t\tand Request-URI components:\n#\t\n#\t\t * The host names (domain or IP) must be identical,\n#\t\t   but valueless or missing Host header disables all checks.\n#\t\t   For the two host names to match, both must be either IP\n#\t\t   or FQDN.\n#\t\n#\t\t * Port numbers must be identical, but if a port is missing\n#\t\t   the scheme-default port is assumed.\n#\t\n#\t\n#\tWhen set to OFF (the default):\n#\t\tSquid allows suspicious requests to continue but logs a\n#\t\tsecurity warning and blocks caching of the response.\n#\t\n#\t\t * Forward-proxy traffic is not checked at all.\n#\t\n#\t\t * Reverse-proxy traffic is not checked at all.\n#\t\n#\t\t * Intercepted traffic which passes verification is handled\n#\t\t   according to client_dst_passthru.\n#\t\n#\t\t * Intercepted requests which fail verification are sent\n#\t\t   to the client original destination instead of DIRECT.\n#\t\t   This overrides 'client_dst_passthru off'.\n#\t\n#\t\tFor now suspicious intercepted CONNECT requests are always\n#\t\tresponded to with an HTTP 409 (Conflict) error page.\n#\t\n#\t\n#\tSECURITY NOTE:\n#\t\n#\tAs described in CVE-2009-0801 when the Host: header alone is used\n#\tto determine the destination of a request it becomes trivial for\n#\tmalicious scripts on remote websites to bypass browser same-origin\n#\tsecurity policy and sandboxing protections.\n#\t\n#\tThe cause of this is that such applets are allowed to perform their\n#\town HTTP stack, in which case the same-origin policy of the browser\n#\tsandbox only verifies that the applet tries to contact the same IP\n#\tas from where it was loaded at the IP level. The Host: header may\n#\tbe different from the connected IP and approved origin.\n#\t\n#Default:\n# host_verify_strict off\n\n#  TAG: client_dst_passthru\n#\tWith NAT or TPROXY intercepted traffic Squid may pass the request\n#\tdirectly to the original client destination IP or seek a faster\n#\tsource using the HTTP Host header.\n#\t\n#\tUsing Host to locate alternative servers can provide faster\n#\tconnectivity with a range of failure recovery options.\n#\tBut can also lead to connectivity trouble when the client and\n#\tserver are attempting stateful interactions unaware of the proxy.\n#\t\n#\tThis option (on by default) prevents alternative DNS entries being\n#\tlocated to send intercepted traffic DIRECT to an origin server.\n#\tThe clients original destination IP and port will be used instead.\n#\t\n#\tRegardless of this option setting, when dealing with intercepted\n#\ttraffic Squid will verify the Host: header and any traffic which\n#\tfails Host verification will be treated as if this option were ON.\n#\t\n#\tsee host_verify_strict for details on the verification process.\n#Default:\n# client_dst_passthru on\n\n# TLS OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: tls_outgoing_options\n#\tdisable\t\tDo not support https:// URLs.\n#\t\n#\tcert=/path/to/client/certificate\n#\t\t\tA client X.509 certificate to use when connecting.\n#\t\n#\tkey=/path/to/client/private_key\n#\t\t\tThe private key corresponding to the cert= above.\n#\n#\t\t\tIf key= is not specified cert= is assumed to\n#\t\t\treference a PEM file containing both the certificate\n#\t\t\tand private key.\n#\t\n#\tcipher=...\tThe list of valid TLS ciphers to use.\n#\n#\tmin-version=1.N\n#\t\t\tThe minimum TLS protocol version to permit.\n#\t\t\tTo control SSLv3 use the options= parameter.\n#\t\t\tSupported Values: 1.0 (default), 1.1, 1.2\n#\n#\toptions=...\tSpecify various TLS/SSL implementation options.\n#\n#\t\t\tOpenSSL options most important are:\n#\n#\t\t\t    NO_SSLv3    Disallow the use of SSLv3\n#\n#\t\t\t    SINGLE_DH_USE\n#\t\t\t\t      Always create a new key when using\n#\t\t\t\t      temporary/ephemeral DH key exchanges\n#\n#\t\t\t    NO_TICKET\n#\t\t\t\t      Disable use of RFC5077 session tickets.\n#\t\t\t\t      Some servers may have problems\n#\t\t\t\t      understanding the TLS extension due\n#\t\t\t\t      to ambiguous specification in RFC4507.\n#\n#\t\t\t    ALL       Enable various bug workarounds\n#\t\t\t\t      suggested as \"harmless\" by OpenSSL\n#\t\t\t\t      Be warned that this reduces SSL/TLS\n#\t\t\t\t      strength to some attacks.\n#\n#\t\t\t\tSee the OpenSSL SSL_CTX_set_options documentation\n#\t\t\t\tfor a more complete list.\n#\n#\t\t\tGnuTLS options most important are:\n#\n#\t\t\t    %NO_TICKETS\n#\t\t\t\t      Disable use of RFC5077 session tickets.\n#\t\t\t\t      Some servers may have problems\n#\t\t\t\t      understanding the TLS extension due\n#\t\t\t\t      to ambiguous specification in RFC4507.\n#\n#\t\t\t\tSee the GnuTLS Priority Strings documentation\n#\t\t\t\tfor a more complete list.\n#\t\t\t\thttp://www.gnutls.org/manual/gnutls.html#Priority-Strings\n#\n#\t\n#\tcafile=\t\tPEM file containing CA certificates to use when verifying\n#\t\t\tthe peer certificate. May be repeated to load multiple files.\n#\n#\tcapath=\t\tA directory containing additional CA certificates to\n#\t\t\tuse when verifying the peer certificate.\n#\t\t\tRequires OpenSSL or LibreSSL.\n#\t\n#\tcrlfile=... \tA certificate revocation list file to use when\n#\t\t\tverifying the peer certificate.\n#\t\n#\tflags=...\tSpecify various flags modifying the TLS implementation:\n#\t\n#\t\t\tDONT_VERIFY_PEER\n#\t\t\t\tAccept certificates even if they fail to\n#\t\t\t\tverify.\n#\t\t\tDONT_VERIFY_DOMAIN\n#\t\t\t\tDon't verify the peer certificate\n#\t\t\t\tmatches the server name\n#\t\n#\tdefault-ca[=off]\n#\t\t\tWhether to use the system Trusted CAs. Default is ON.\n#\t\n#\tdomain= \tThe peer name as advertised in its certificate.\n#\t\t\tUsed for verifying the correctness of the received peer\n#\t\t\tcertificate. If not specified the peer hostname will be\n#\t\t\tused.\n#Default:\n# tls_outgoing_options min-version=1.0\n\n# SSL OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: ssl_unclean_shutdown\n#\tSome browsers (especially MSIE) bugs out on SSL shutdown\n#\tmessages.\n#Default:\n# ssl_unclean_shutdown off\n\n#  TAG: ssl_engine\n#\tThe OpenSSL engine to use. You will need to set this if you\n#\twould like to use hardware SSL acceleration for example.\n#Default:\n# none\n\n#  TAG: sslproxy_session_ttl\n#\tSets the timeout value for SSL sessions\n#Default:\n# sslproxy_session_ttl 300\n\n#  TAG: sslproxy_session_cache_size\n#        Sets the cache size to use for ssl session\n#Default:\n# sslproxy_session_cache_size 2 MB\n\n#  TAG: sslproxy_foreign_intermediate_certs\n#\tMany origin servers fail to send their full server certificate\n#\tchain for verification, assuming the client already has or can\n#\teasily locate any missing intermediate certificates.\n#\n#\tSquid uses the certificates from the specified file to fill in\n#\tthese missing chains when trying to validate origin server\n#\tcertificate chains.\n#\n#\tThe file is expected to contain zero or more PEM-encoded\n#\tintermediate certificates. These certificates are not treated\n#\tas trusted root certificates, and any self-signed certificate in\n#\tthis file will be ignored.\n#Default:\n# none\n\n#  TAG: sslproxy_cert_sign_hash\n#\tSets the hashing algorithm to use when signing generated certificates.\n#\tValid algorithm names depend on the OpenSSL library used. The following\n#\tnames are usually available: sha1, sha256, sha512, and md5. Please see\n#\tyour OpenSSL library manual for the available hashes. By default, Squids\n#\tthat support this option use sha256 hashes.\n#\n#\tSquid does not forcefully purge cached certificates that were generated\n#\twith an algorithm other than the currently configured one. They remain\n#\tin the cache, subject to the regular cache eviction policy, and become\n#\tuseful if the algorithm changes again.\n#Default:\n# none\n\n#  TAG: ssl_bump\n#\tThis option is consulted when a CONNECT request is received on\n#\tan http_port (or a new connection is intercepted at an\n#\thttps_port), provided that port was configured with an ssl-bump\n#\tflag. The subsequent data on the connection is either treated as\n#\tHTTPS and decrypted OR tunneled at TCP level without decryption,\n#\tdepending on the first matching bumping \"action\".\n#\n#\tssl_bump <action> [!]acl ...\n#\n#\tThe following bumping actions are currently supported:\n#\n#\t    splice\n#\t\tBecome a TCP tunnel without decrypting proxied traffic.\n#\t\tThis is the default action.\n#\n#\t    bump\n#\t\tWhen used on step SslBump1, establishes a secure connection\n#\t\twith the client first, then connect to the server.\n#\t\tWhen used on step SslBump2 or SslBump3, establishes a secure\n#\t\tconnection with the server and, using a mimicked server\n#\t\tcertificate, with the client.\n#\n#\t    peek\n#\t\tReceive client (step SslBump1) or server (step SslBump2)\n#\t\tcertificate while preserving the possibility of splicing the\n#\t\tconnection. Peeking at the server certificate (during step 2)\n#\t\tusually precludes bumping of the connection at step 3.\n#\n#\t    stare\n#\t\tReceive client (step SslBump1) or server (step SslBump2)\n#\t\tcertificate while preserving the possibility of bumping the\n#\t\tconnection. Staring at the server certificate (during step 2)\n#\t\tusually precludes splicing of the connection at step 3.\n#\n#\t    terminate\n#\t\tClose client and server connections.\n#\n#\tBackward compatibility actions available at step SslBump1:\n#\n#\t    client-first\n#\t\tBump the connection. Establish a secure connection with the\n#\t\tclient first, then connect to the server. This old mode does\n#\t\tnot allow Squid to mimic server SSL certificate and does not\n#\t\twork with intercepted SSL connections.\n#\n#\t    server-first\n#\t\tBump the connection. Establish a secure connection with the\n#\t\tserver first, then establish a secure connection with the\n#\t\tclient, using a mimicked server certificate. Works with both\n#\t\tCONNECT requests and intercepted SSL connections, but does\n#\t\tnot allow to make decisions based on SSL handshake info.\n#\n#\t    peek-and-splice\n#\t\tDecide whether to bump or splice the connection based on \n#\t\tclient-to-squid and server-to-squid SSL hello messages.\n#\t\tXXX: Remove.\n#\n#\t    none\n#\t\tSame as the \"splice\" action.\n#\n#\tAll ssl_bump rules are evaluated at each of the supported bumping\n#\tsteps.  Rules with actions that are impossible at the current step are\n#\tignored. The first matching ssl_bump action wins and is applied at the\n#\tend of the current step. If no rules match, the splice action is used.\n#\tSee the at_step ACL for a list of the supported SslBump steps.\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#\tSee also: http_port ssl-bump, https_port ssl-bump, and acl at_step.\n#\n#\n#\t# Example: Bump all TLS connections except those originating from\n#\t# localhost or those going to example.com.\n#\n#\tacl broken_sites ssl::server_name .example.com\n#\tssl_bump splice localhost\n#\tssl_bump splice broken_sites\n#\tssl_bump bump all\n#Default:\n# Become a TCP tunnel without decrypting proxied traffic.\n\n#  TAG: sslproxy_cert_error\n#\tUse this ACL to bypass server certificate validation errors.\n#\n#\tFor example, the following lines will bypass all validation errors\n#\twhen talking to servers for example.com. All other\n#\tvalidation errors will result in ERR_SECURE_CONNECT_FAIL error.\n#\n#\t\tacl BrokenButTrustedServers dstdomain example.com\n#\t\tsslproxy_cert_error allow BrokenButTrustedServers\n#\t\tsslproxy_cert_error deny all\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\tUsing slow acl types may result in server crashes\n#\n#\tWithout this option, all server certificate validation errors\n#\tterminate the transaction to protect Squid and the client.\n#\n#\tSQUID_X509_V_ERR_INFINITE_VALIDATION error cannot be bypassed\n#\tbut should not happen unless your OpenSSL library is buggy.\n#\n#\tSECURITY WARNING:\n#\t\tBypassing validation errors is dangerous because an\n#\t\terror usually implies that the server cannot be trusted\n#\t\tand the connection may be insecure.\n#\n#\tSee also: sslproxy_flags and DONT_VERIFY_PEER.\n#Default:\n# Server certificate errors terminate the transaction.\n\n#  TAG: sslproxy_cert_sign\n#\n#        sslproxy_cert_sign <signing algorithm> acl ...\n#\n#        The following certificate signing algorithms are supported:\n#\n#\t   signTrusted\n#\t\tSign using the configured CA certificate which is usually\n#\t\tplaced in and trusted by end-user browsers. This is the\n#\t\tdefault for trusted origin server certificates.\n#\n#\t   signUntrusted\n#\t\tSign to guarantee an X509_V_ERR_CERT_UNTRUSTED browser error.\n#\t\tThis is the default for untrusted origin server certificates\n#\t\tthat are not self-signed (see ssl::certUntrusted).\n#\n#\t   signSelf\n#\t\tSign using a self-signed certificate with the right CN to\n#\t\tgenerate a X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT error in the\n#\t\tbrowser. This is the default for self-signed origin server\n#\t\tcertificates (see ssl::certSelfSigned).\n#\n#\tThis clause only supports fast acl types.\n#\n#\tWhen sslproxy_cert_sign acl(s) match, Squid uses the corresponding\n#\tsigning algorithm to generate the certificate and ignores all\n#\tsubsequent sslproxy_cert_sign options (the first match wins). If no\n#\tacl(s) match, the default signing algorithm is determined by errors\n#\tdetected when obtaining and validating the origin server certificate.\n#\n#\tWARNING: SQUID_X509_V_ERR_DOMAIN_MISMATCH and ssl:certDomainMismatch can\n#\tbe used with sslproxy_cert_adapt, but if and only if Squid is bumping a\n#\tCONNECT request that carries a domain name. In all other cases (CONNECT\n#\tto an IP address or an intercepted SSL connection), Squid cannot detect\n#\tthe domain mismatch at certificate generation time when\n#\tbump-server-first is used.\n#Default:\n# none\n\n#  TAG: sslproxy_cert_adapt\n#\t\n#\tsslproxy_cert_adapt <adaptation algorithm> acl ...\n#\n#\tThe following certificate adaptation algorithms are supported:\n#\n#\t   setValidAfter\n#\t\tSets the \"Not After\" property to the \"Not After\" property of\n#\t\tthe CA certificate used to sign generated certificates.\n#\n#\t   setValidBefore\n#\t\tSets the \"Not Before\" property to the \"Not Before\" property of\n#\t\tthe CA certificate used to sign generated certificates.\n#\n#\t   setCommonName or setCommonName{CN}\n#\t\tSets Subject.CN property to the host name specified as a \n#\t\tCN parameter or, if no explicit CN parameter was specified,\n#\t\textracted from the CONNECT request. It is a misconfiguration\n#\t\tto use setCommonName without an explicit parameter for\n#\t\tintercepted or tproxied SSL connections.\n#\t\t\n#\tThis clause only supports fast acl types.\n#\n#\tSquid first groups sslproxy_cert_adapt options by adaptation algorithm.\n#\tWithin a group, when sslproxy_cert_adapt acl(s) match, Squid uses the\n#\tcorresponding adaptation algorithm to generate the certificate and\n#\tignores all subsequent sslproxy_cert_adapt options in that algorithm's\n#\tgroup (i.e., the first match wins within each algorithm group). If no\n#\tacl(s) match, the default mimicking action takes place.\n#\n#\tWARNING: SQUID_X509_V_ERR_DOMAIN_MISMATCH and ssl:certDomainMismatch can\n#\tbe used with sslproxy_cert_adapt, but if and only if Squid is bumping a\n#\tCONNECT request that carries a domain name. In all other cases (CONNECT\n#\tto an IP address or an intercepted SSL connection), Squid cannot detect\n#\tthe domain mismatch at certificate generation time when\n#\tbump-server-first is used.\n#Default:\n# none\n\n#  TAG: sslpassword_program\n#\tSpecify a program used for entering SSL key passphrases\n#\twhen using encrypted SSL certificate keys. If not specified\n#\tkeys must either be unencrypted, or Squid started with the -N\n#\toption to allow it to query interactively for the passphrase.\n#\n#\tThe key file name is given as argument to the program allowing\n#\tselection of the right password if you have multiple encrypted\n#\tkeys.\n#Default:\n# none\n\n# OPTIONS RELATING TO EXTERNAL SSL_CRTD \n# -----------------------------------------------------------------------------\n\n#  TAG: sslcrtd_program\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-ssl-crtd\n#\n#\tSpecify the location and options of the executable for certificate\n#\tgenerator.\n#\n#\t/opt/local/libexec/squid/security_file_certgen program can use a disk cache to improve response\n#\ttimes on repeated requests. To enable caching, specify -s and -M\n#\tparameters. If those parameters are not given, the program generates\n#\ta new certificate on every request.\n#\n#\tFor more information use:\n#\t\t/opt/local/libexec/squid/security_file_certgen -h\n#Default:\n# sslcrtd_program /opt/local/libexec/squid/security_file_certgen -s /opt/local/var/squid/cache/ssl_db -M 4MB\n\n#  TAG: sslcrtd_children\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-ssl-crtd\n#\n#\tSpecifies the maximum number of certificate generation processes that\n#\tSquid may spawn (numberofchildren) and several related options. Using\n#\ttoo few of these helper processes (a.k.a. \"helpers\") creates request\n#\tqueues. Using too many helpers wastes your system resources. Squid\n#\tdoes not support spawning more than 32 helpers.\n#\n#\tUsage: numberofchildren [option]...\n#\n#\tThe startup= and idle= options allow some measure of skew in your\n#\ttuning.\n#\t\n#\t\tstartup=N\n#\t\n#\tSets the minimum number of processes to spawn when Squid\n#\tstarts or reconfigures. When set to zero the first request will\n#\tcause spawning of the first child process to handle it.\n#\t\n#\tStarting too few children temporary slows Squid under load while it\n#\ttries to spawn enough additional processes to cope with traffic.\n#\t\n#\t\tidle=N\n#\t\n#\tSets a minimum of how many processes Squid is to try and keep available\n#\tat all times. When traffic begins to rise above what the existing\n#\tprocesses can handle this many more will be spawned up to the maximum\n#\tconfigured. A minimum setting of 1 is required.\n#\n#\t\tqueue-size=N\n#\n#\tSets the maximum number of queued requests. A request is queued when\n#\tno existing child is idle and no new child can be started due to\n#\tnumberofchildren limit. If the queued requests exceed queue size for\n#\tmore than 3 minutes squid aborts its operation. The default value is\n#\tset to 2*numberofchildren.\n#\t\n#\tYou must have at least one ssl_crtd process.\n#Default:\n# sslcrtd_children 32 startup=5 idle=1\n\n#  TAG: sslcrtvalidator_program\n#\tSpecify the location and options of the executable for ssl_crt_validator\n#\tprocess.\n#\n#\tUsage:  sslcrtvalidator_program [ttl=n] [cache=n] path ...\n#\n#\tOptions:\n#\t  ttl=n         TTL in seconds for cached results. The default is 60 secs\n#\t  cache=n       limit the result cache size. The default value is 2048\n#Default:\n# none\n\n#  TAG: sslcrtvalidator_children\n#\tSpecifies the maximum number of certificate validation processes that\n#\tSquid may spawn (numberofchildren) and several related options. Using\n#\ttoo few of these helper processes (a.k.a. \"helpers\") creates request\n#\tqueues. Using too many helpers wastes your system resources. Squid\n#\tdoes not support spawning more than 32 helpers.\n#\n#\tUsage: numberofchildren [option]...\n#\t\n#\tThe startup= and idle= options allow some measure of skew in your\n#\ttuning.\n#\t\n#\t\tstartup=N\n#\t\n#\tSets the minimum number of processes to spawn when Squid\n#\tstarts or reconfigures. When set to zero the first request will\n#\tcause spawning of the first child process to handle it.\n#\t\n#\tStarting too few children temporary slows Squid under load while it\n#\ttries to spawn enough additional processes to cope with traffic.\n#\t\n#\t\tidle=N\n#\t\n#\tSets a minimum of how many processes Squid is to try and keep available\n#\tat all times. When traffic begins to rise above what the existing\n#\tprocesses can handle this many more will be spawned up to the maximum\n#\tconfigured. A minimum setting of 1 is required.\n#\n#\t\tconcurrency=\n#\t\n#\tThe number of requests each certificate validator helper can handle in\n#\tparallel. A value of 0 indicates the certficate validator does not\n#\tsupport concurrency. Defaults to 1.\n#\t\n#\tWhen this directive is set to a value >= 1 then the protocol\n#\tused to communicate with the helper is modified to include\n#\ta request ID in front of the request/response. The request\n#\tID from the request must be echoed back with the response\n#\tto that request.\n#\n#\t\tqueue-size=N\n#\n#\tSets the maximum number of queued requests. A request is queued when\n#\tno existing child can accept it due to concurrency limit and no new\n#\tchild can be started due to numberofchildren limit. If the queued\n#\trequests exceed queue size for more than 3 minutes squid aborts its\n#\toperation. The default value is set to 2*numberofchildren.\n#\t\n#\tYou must have at least one ssl_crt_validator process.\n#Default:\n# sslcrtvalidator_children 32 startup=5 idle=1 concurrency=1\n\n# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_peer\n#\tTo specify other caches in a hierarchy, use the format:\n#\t\n#\t\tcache_peer hostname type http-port icp-port [options]\n#\t\n#\tFor example,\n#\t\n#\t#                                        proxy  icp\n#\t#          hostname             type     port   port  options\n#\t#          -------------------- -------- ----- -----  -----------\n#\tcache_peer parent.foo.net       parent    3128  3130  default\n#\tcache_peer sib1.foo.net         sibling   3128  3130  proxy-only\n#\tcache_peer sib2.foo.net         sibling   3128  3130  proxy-only\n#\tcache_peer example.com          parent    80       0  default\n#\tcache_peer cdn.example.com      sibling   3128     0  \n#\t\n#\t      type:\teither 'parent', 'sibling', or 'multicast'.\n#\t\n#\tproxy-port:\tThe port number where the peer accept HTTP requests.\n#\t\t\tFor other Squid proxies this is usually 3128\n#\t\t\tFor web servers this is usually 80\n#\t\n#\t  icp-port:\tUsed for querying neighbor caches about objects.\n#\t\t\tSet to 0 if the peer does not support ICP or HTCP.\n#\t\t\tSee ICP and HTCP options below for additional details.\n#\t\n#\t\n#\t==== ICP OPTIONS ====\n#\t\n#\tYou MUST also set icp_port and icp_access explicitly when using these options.\n#\tThe defaults will prevent peer traffic using ICP.\n#\t\n#\t\n#\tno-query\tDisable ICP queries to this neighbor.\n#\t\n#\tmulticast-responder\n#\t\t\tIndicates the named peer is a member of a multicast group.\n#\t\t\tICP queries will not be sent directly to the peer, but ICP\n#\t\t\treplies will be accepted from it.\n#\t\n#\tclosest-only\tIndicates that, for ICP_OP_MISS replies, we'll only forward\n#\t\t\tCLOSEST_PARENT_MISSes and never FIRST_PARENT_MISSes.\n#\t\n#\tbackground-ping\n#\t\t\tTo only send ICP queries to this neighbor infrequently.\n#\t\t\tThis is used to keep the neighbor round trip time updated\n#\t\t\tand is usually used in conjunction with weighted-round-robin.\n#\t\n#\t\n#\t==== HTCP OPTIONS ====\n#\t\n#\tYou MUST also set htcp_port and htcp_access explicitly when using these options.\n#\tThe defaults will prevent peer traffic using HTCP.\n#\t\n#\t\n#\thtcp\t\tSend HTCP, instead of ICP, queries to the neighbor.\n#\t\t\tYou probably also want to set the \"icp-port\" to 4827\n#\t\t\tinstead of 3130. This directive accepts a comma separated\n#\t\t\tlist of options described below.\n#\t\n#\thtcp=oldsquid\tSend HTCP to old Squid versions (2.5 or earlier).\n#\t\n#\thtcp=no-clr\tSend HTCP to the neighbor but without\n#\t\t\tsending any CLR requests.  This cannot be used with\n#\t\t\tonly-clr.\n#\t\n#\thtcp=only-clr\tSend HTCP to the neighbor but ONLY CLR requests.\n#\t\t\tThis cannot be used with no-clr.\n#\t\n#\thtcp=no-purge-clr\n#\t\t\tSend HTCP to the neighbor including CLRs but only when\n#\t\t\tthey do not result from PURGE requests.\n#\t\n#\thtcp=forward-clr\n#\t\t\tForward any HTCP CLR requests this proxy receives to the peer.\n#\t\n#\t\n#\t==== PEER SELECTION METHODS ====\n#\t\n#\tThe default peer selection method is ICP, with the first responding peer\n#\tbeing used as source. These options can be used for better load balancing.\n#\t\n#\t\n#\tdefault\t\tThis is a parent cache which can be used as a \"last-resort\"\n#\t\t\tif a peer cannot be located by any of the peer-selection methods.\n#\t\t\tIf specified more than once, only the first is used.\n#\t\n#\tround-robin\tLoad-Balance parents which should be used in a round-robin\n#\t\t\tfashion in the absence of any ICP queries.\n#\t\t\tweight=N can be used to add bias.\n#\t\n#\tweighted-round-robin\n#\t\t\tLoad-Balance parents which should be used in a round-robin\n#\t\t\tfashion with the frequency of each parent being based on the\n#\t\t\tround trip time. Closer parents are used more often.\n#\t\t\tUsually used for background-ping parents.\n#\t\t\tweight=N can be used to add bias.\n#\t\n#\tcarp\t\tLoad-Balance parents which should be used as a CARP array.\n#\t\t\tThe requests will be distributed among the parents based on the\n#\t\t\tCARP load balancing hash function based on their weight.\n#\t\n#\tuserhash\tLoad-balance parents based on the client proxy_auth or ident username.\n#\t\n#\tsourcehash\tLoad-balance parents based on the client source IP.\n#\n#\tmulticast-siblings\n#\t\t\tTo be used only for cache peers of type \"multicast\".\n#\t\t\tALL members of this multicast group have \"sibling\"\n#\t\t\trelationship with it, not \"parent\".  This is to a multicast\n#\t\t\tgroup when the requested object would be fetched only from\n#\t\t\ta \"parent\" cache, anyway.  It's useful, e.g., when\n#\t\t\tconfiguring a pool of redundant Squid proxies, being\n#\t\t\tmembers of the same multicast group.\n#\t\n#\t\n#\t==== PEER SELECTION OPTIONS ====\n#\t\n#\tweight=N\tuse to affect the selection of a peer during any weighted\n#\t\t\tpeer-selection mechanisms.\n#\t\t\tThe weight must be an integer; default is 1,\n#\t\t\tlarger weights are favored more.\n#\t\t\tThis option does not affect parent selection if a peering\n#\t\t\tprotocol is not in use.\n#\t\n#\tbasetime=N\tSpecify a base amount to be subtracted from round trip\n#\t\t\ttimes of parents.\n#\t\t\tIt is subtracted before division by weight in calculating\n#\t\t\twhich parent to fectch from. If the rtt is less than the\n#\t\t\tbase time the rtt is set to a minimal value.\n#\t\n#\tttl=N\t\tSpecify a TTL to use when sending multicast ICP queries\n#\t\t\tto this address.\n#\t\t\tOnly useful when sending to a multicast group.\n#\t\t\tBecause we don't accept ICP replies from random\n#\t\t\thosts, you must configure other group members as\n#\t\t\tpeers with the 'multicast-responder' option.\n#\t\n#\tno-delay\tTo prevent access to this neighbor from influencing the\n#\t\t\tdelay pools.\n#\t\n#\tdigest-url=URL\tTell Squid to fetch the cache digest (if digests are\n#\t\t\tenabled) for this host from the specified URL rather\n#\t\t\tthan the Squid default location.\n#\t\n#\t\n#\t==== CARP OPTIONS ====\n#\t\n#\tcarp-key=key-specification\n#\t\t\tuse a different key than the full URL to hash against the peer.\n#\t\t\tthe key-specification is a comma-separated list of the keywords\t\t\t\n#\t\t\tscheme, host, port, path, params\n#\t\t\tOrder is not important.\n#\t\n#\t==== ACCELERATOR / REVERSE-PROXY OPTIONS ====\n#\t\n#\toriginserver\tCauses this parent to be contacted as an origin server.\n#\t\t\tMeant to be used in accelerator setups when the peer\n#\t\t\tis a web server.\n#\t\n#\tforceddomain=name\n#\t\t\tSet the Host header of requests forwarded to this peer.\n#\t\t\tUseful in accelerator setups where the server (peer)\n#\t\t\texpects a certain domain name but clients may request\n#\t\t\tothers. ie example.com or www.example.com\n#\t\n#\tno-digest\tDisable request of cache digests.\n#\t\n#\tno-netdb-exchange\n#\t\t\tDisables requesting ICMP RTT database (NetDB).\n#\t\n#\t\n#\t==== AUTHENTICATION OPTIONS ====\n#\t\n#\tlogin=user:password\n#\t\t\tIf this is a personal/workgroup proxy and your parent\n#\t\t\trequires proxy authentication.\n#\t\t\t\n#\t\t\tNote: The string can include URL escapes (i.e. %20 for\n#\t\t\tspaces). This also means % must be written as %%.\n#\t\n#\tlogin=PASSTHRU\n#\t\t\tSend login details received from client to this peer.\n#\t\t\tBoth Proxy- and WWW-Authorization headers are passed\n#\t\t\twithout alteration to the peer.\n#\t\t\tAuthentication is not required by Squid for this to work.\n#\t\t\t\n#\t\t\tNote: This will pass any form of authentication but\n#\t\t\tonly Basic auth will work through a proxy unless the\n#\t\t\tconnection-auth options are also used.\n#\n#\tlogin=PASS\tSend login details received from client to this peer.\n#\t\t\tAuthentication is not required by this option.\n#\t\t\t\n#\t\t\tIf there are no client-provided authentication headers\n#\t\t\tto pass on, but username and password are available\n#\t\t\tfrom an external ACL user= and password= result tags\n#\t\t\tthey may be sent instead.\n#\t\t\t\n#\t\t\tNote: To combine this with proxy_auth both proxies must\n#\t\t\tshare the same user database as HTTP only allows for\n#\t\t\ta single login (one for proxy, one for origin server).\n#\t\t\tAlso be warned this will expose your users proxy\n#\t\t\tpassword to the peer. USE WITH CAUTION\n#\t\n#\tlogin=*:password\n#\t\t\tSend the username to the upstream cache, but with a\n#\t\t\tfixed password. This is meant to be used when the peer\n#\t\t\tis in another administrative domain, but it is still\n#\t\t\tneeded to identify each user.\n#\t\t\tThe star can optionally be followed by some extra\n#\t\t\tinformation which is added to the username. This can\n#\t\t\tbe used to identify this proxy to the peer, similar to\n#\t\t\tthe login=username:password option above.\n#\t\n#\tlogin=NEGOTIATE\n#\t\t\tIf this is a personal/workgroup proxy and your parent\n#\t\t\trequires a secure proxy authentication.\n#\t\t\tThe first principal from the default keytab or defined by\n#\t\t\tthe environment variable KRB5_KTNAME will be used. \n#\t\n#\t\t\tWARNING: The connection may transmit requests from multiple\n#\t\t\tclients. Negotiate often assumes end-to-end authentication\n#\t\t\tand a single-client. Which is not strictly true here.\n#\t\n#\tlogin=NEGOTIATE:principal_name\n#\t\t\tIf this is a personal/workgroup proxy and your parent\n#\t\t\trequires a secure proxy authentication. \n#\t\t\tThe principal principal_name from the default keytab or\n#\t\t\tdefined by the environment variable KRB5_KTNAME will be\n#\t\t\tused.\n#\t\n#\t\t\tWARNING: The connection may transmit requests from multiple\n#\t\t\tclients. Negotiate often assumes end-to-end authentication\n#\t\t\tand a single-client. Which is not strictly true here.\n#\t\n#\tconnection-auth=on|off\n#\t\t\tTell Squid that this peer does or not support Microsoft\n#\t\t\tconnection oriented authentication, and any such\n#\t\t\tchallenges received from there should be ignored.\n#\t\t\tDefault is auto to automatically determine the status\n#\t\t\tof the peer.\n#\t\n#\tauth-no-keytab\n#\t\t\tDo not use a keytab to authenticate to a peer when\n#\t\t\tlogin=NEGOTIATE is specified. Let the GSSAPI\n#\t\t\timplementation determine which already existing\n#\t\t\tcredentials cache to use instead.\n#\t\n#\t\n#\t==== SSL / HTTPS / TLS OPTIONS ====\n#\t\n#\ttls\t\tEncrypt connections to this peer with TLS.\n#\t\n#\tsslcert=/path/to/ssl/certificate\n#\t\t\tA client X.509 certificate to use when connecting to\n#\t\t\tthis peer.\n#\t\n#\tsslkey=/path/to/ssl/key\n#\t\t\tThe private key corresponding to sslcert above.\n#\n#\t\t\tIf sslkey= is not specified sslcert= is assumed to\n#\t\t\treference a PEM file containing both the certificate\n#\t\t\tand private key.\n#\t\n#\tsslcipher=...\tThe list of valid SSL ciphers to use when connecting\n#\t\t\tto this peer.\n#\n#\ttls-min-version=1.N\n#\t\t\tThe minimum TLS protocol version to permit. To control\n#\t\t\tSSLv3 use the tls-options= parameter.\n#\t\t\tSupported Values: 1.0 (default), 1.1, 1.2\n#\n#\ttls-options=...\tSpecify various TLS implementation options.\n#\n#\t\t\tOpenSSL options most important are:\n#\n#\t\t\t    NO_SSLv3    Disallow the use of SSLv3\n#\n#\t\t\t    SINGLE_DH_USE\n#\t\t\t\t      Always create a new key when using\n#\t\t\t\t      temporary/ephemeral DH key exchanges\n#\n#\t\t\t    NO_TICKET\n#\t\t\t\t      Disable use of RFC5077 session tickets.\n#\t\t\t\t      Some servers may have problems\n#\t\t\t\t      understanding the TLS extension due\n#\t\t\t\t      to ambiguous specification in RFC4507.\n#\n#\t\t\t    ALL       Enable various bug workarounds\n#\t\t\t\t      suggested as \"harmless\" by OpenSSL\n#\t\t\t\t      Be warned that this reduces SSL/TLS\n#\t\t\t\t      strength to some attacks.\n#\n#\t\t\tSee the OpenSSL SSL_CTX_set_options documentation for a\n#\t\t\tmore complete list.\n#\n#\t\t\tGnuTLS options most important are:\n#\n#\t\t\t    %NO_TICKETS\n#\t\t\t\t      Disable use of RFC5077 session tickets.\n#\t\t\t\t      Some servers may have problems\n#\t\t\t\t      understanding the TLS extension due\n#\t\t\t\t      to ambiguous specification in RFC4507.\n#\n#\t\t\t\tSee the GnuTLS Priority Strings documentation\n#\t\t\t\tfor a more complete list.\n#\t\t\t\thttp://www.gnutls.org/manual/gnutls.html#Priority-Strings\n#\n#\ttls-cafile=\tPEM file containing CA certificates to use when verifying\n#\t\t\tthe peer certificate. May be repeated to load multiple files.\n#\t\n#\tsslcapath=...\tA directory containing additional CA certificates to\n#\t\t\tuse when verifying the peer certificate.\n#\t\t\tRequires OpenSSL or LibreSSL.\n#\t\n#\tsslcrlfile=... \tA certificate revocation list file to use when\n#\t\t\tverifying the peer certificate.\n#\t\n#\tsslflags=...\tSpecify various flags modifying the SSL implementation:\n#\t\n#\t\t\tDONT_VERIFY_PEER\n#\t\t\t\tAccept certificates even if they fail to\n#\t\t\t\tverify.\n#\n#\t\t\tDONT_VERIFY_DOMAIN\n#\t\t\t\tDon't verify the peer certificate\n#\t\t\t\tmatches the server name\n#\t\n#\tssldomain= \tThe peer name as advertised in it's certificate.\n#\t\t\tUsed for verifying the correctness of the received peer\n#\t\t\tcertificate. If not specified the peer hostname will be\n#\t\t\tused.\n#\t\n#\tfront-end-https[=off|on|auto]\n#\t\t\tEnable the \"Front-End-Https: On\" header needed when\n#\t\t\tusing Squid as a SSL frontend in front of Microsoft OWA.\n#\t\t\tSee MS KB document Q307347 for details on this header.\n#\t\t\tIf set to auto the header will only be added if the\n#\t\t\trequest is forwarded as a https:// URL.\n#\t\n#\ttls-default-ca[=off]\n#\t\t\tWhether to use the system Trusted CAs. Default is ON.\n#\t\n#\ttls-no-npn\tDo not use the TLS NPN extension to advertise HTTP/1.1.\n#\n#\t==== GENERAL OPTIONS ====\n#\t\n#\tconnect-timeout=N\n#\t\t\tA peer-specific connect timeout.\n#\t\t\tAlso see the peer_connect_timeout directive.\n#\t\n#\tconnect-fail-limit=N\n#\t\t\tHow many times connecting to a peer must fail before\n#\t\t\tit is marked as down. Standby connection failures\n#\t\t\tcount towards this limit. Default is 10.\n#\t\n#\tallow-miss\tDisable Squid's use of only-if-cached when forwarding\n#\t\t\trequests to siblings. This is primarily useful when\n#\t\t\ticp_hit_stale is used by the sibling. Excessive use\n#\t\t\tof this option may result in forwarding loops. One way\n#\t\t\tto prevent peering loops when using this option, is to\n#\t\t\tdeny cache peer usage on requests from a peer:\n#\t\t\tacl fromPeer ...\n#\t\t\tcache_peer_access peerName deny fromPeer\n#\t\n#\tmax-conn=N \tLimit the number of concurrent connections the Squid\n#\t\t\tmay open to this peer, including already opened idle\n#\t\t\tand standby connections. There is no peer-specific\n#\t\t\tconnection limit by default.\n#\t\n#\t\t\tA peer exceeding the limit is not used for new\n#\t\t\trequests unless a standby connection is available.\n#\t\n#\t\t\tmax-conn currently works poorly with idle persistent\n#\t\t\tconnections: When a peer reaches its max-conn limit,\n#\t\t\tand there are idle persistent connections to the peer,\n#\t\t\tthe peer may not be selected because the limiting code\n#\t\t\tdoes not know whether Squid can reuse those idle\n#\t\t\tconnections.\n#\t\n#\tstandby=N\tMaintain a pool of N \"hot standby\" connections to an\n#\t\t\tUP peer, available for requests when no idle\n#\t\t\tpersistent connection is available (or safe) to use.\n#\t\t\tBy default and with zero N, no such pool is maintained.\n#\t\t\tN must not exceed the max-conn limit (if any).\n#\t\n#\t\t\tAt start or after reconfiguration, Squid opens new TCP\n#\t\t\tstandby connections until there are N connections\n#\t\t\tavailable and then replenishes the standby pool as\n#\t\t\topened connections are used up for requests. A used\n#\t\t\tconnection never goes back to the standby pool, but\n#\t\t\tmay go to the regular idle persistent connection pool\n#\t\t\tshared by all peers and origin servers.\n#\t\n#\t\t\tSquid never opens multiple new standby connections\n#\t\t\tconcurrently.  This one-at-a-time approach minimizes\n#\t\t\tflooding-like effect on peers. Furthermore, just a few\n#\t\t\tstandby connections should be sufficient in most cases\n#\t\t\tto supply most new requests with a ready-to-use\n#\t\t\tconnection.\n#\t\n#\t\t\tStandby connections obey server_idle_pconn_timeout.\n#\t\t\tFor the feature to work as intended, the peer must be\n#\t\t\tconfigured to accept and keep them open longer than\n#\t\t\tthe idle timeout at the connecting Squid, to minimize\n#\t\t\trace conditions typical to idle used persistent\n#\t\t\tconnections. Default request_timeout and\n#\t\t\tserver_idle_pconn_timeout values ensure such a\n#\t\t\tconfiguration.\n#\t\n#\tname=xxx\tUnique name for the peer.\n#\t\t\tRequired if you have multiple peers on the same host\n#\t\t\tbut different ports.\n#\t\t\tThis name can be used in cache_peer_access and similar\n#\t\t\tdirectives to identify the peer.\n#\t\t\tCan be used by outgoing access controls through the\n#\t\t\tpeername ACL type.\n#\t\n#\tno-tproxy\tDo not use the client-spoof TPROXY support when forwarding\n#\t\t\trequests to this peer. Use normal address selection instead.\n#\t\t\tThis overrides the spoof_client_ip ACL.\n#\t\n#\tproxy-only\tobjects fetched from the peer will not be stored locally.\n#\t\n#Default:\n# none\n\n# See http://www.privoxy.org/user-manual/config.html\n# Define Privoxy as parent proxy (without ICP) \ncache_peer 127.0.0.1 parent 8118 0 no-digest no-query default name=privoxy\n\n# If privoxy is run on the LAN:\n#cache_peer 10.0.1.3 parent 8118 0 no-digest no-query default name=privoxy\n\n# I2P\n# cache_peer 127.0.0.1 parent 4443 0 no-digest no-query default name=i2p\n\n#  TAG: cache_peer_access\n#\tRestricts usage of cache_peer proxies.\n#\n#\tUsage:\n#\t\tcache_peer_access peer-name allow|deny [!]aclname ...\n#\n#\tFor the required peer-name parameter, use either the value of the\n#\tcache_peer name=value parameter or, if name=value is missing, the\n#\tcache_peer hostname parameter.\n#\n#\tThis directive narrows down the selection of peering candidates, but\n#\tdoes not determine the order in which the selected candidates are\n#\tcontacted. That order is determined by the peer selection algorithms\n#\t(see PEER SELECTION sections in the cache_peer documentation).\n#\n#\tIf a deny rule matches, the corresponding peer will not be contacted\n#\tfor the current transaction -- Squid will not send ICP queries and\n#\twill not forward HTTP requests to that peer. An allow match leaves\n#\tthe corresponding peer in the selection. The first match for a given\n#\tpeer wins for that peer.\n#\n#\tThe relative order of cache_peer_access directives for the same peer\n#\tmatters. The relative order of any two cache_peer_access directives\n#\tfor different peers does not matter. To ease interpretation, it is a\n#\tgood idea to group cache_peer_access directives for the same peer\n#\ttogether.\n#\n#\tA single cache_peer_access directive may be evaluated multiple times\n#\tfor a given transaction because individual peer selection algorithms\n#\tmay check it independently from each other. These redundant checks\n#\tmay be optimized away in future Squid versions.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#Default:\n# No peer usage restrictions.\n\n# I2P\n# acl i2p dstdomain -n .i2p\n# cache_peer_access i2p allow i2p\n# cache_peer_access i2p deny all\n\n#  TAG: neighbor_type_domain\n#\tModify the cache_peer neighbor type when passing requests\n#\tabout specific domains to the peer.\n#\n#\tUsage:\n#\t\t neighbor_type_domain neighbor parent|sibling domain domain ...\n#\n#\tFor example:\n#\t\tcache_peer foo.example.com parent 3128 3130\n#\t\tneighbor_type_domain foo.example.com sibling .au .de\n#\n#\tThe above configuration treats all requests to foo.example.com as a\n#\tparent proxy unless the request is for a .au or .de ccTLD domain name.\n#Default:\n# The peer type from cache_peer directive is used for all requests to that peer.\n\n#  TAG: dead_peer_timeout\t(seconds)\n#\tThis controls how long Squid waits to declare a peer cache\n#\tas \"dead.\"  If there are no ICP replies received in this\n#\tamount of time, Squid will declare the peer dead and not\n#\texpect to receive any further ICP replies.  However, it\n#\tcontinues to send ICP queries, and will mark the peer as\n#\talive upon receipt of the first subsequent ICP reply.\n#\n#\tThis timeout also affects when Squid expects to receive ICP\n#\treplies from peers.  If more than 'dead_peer' seconds have\n#\tpassed since the last ICP reply was received, Squid will not\n#\texpect to receive an ICP reply on the next query.  Thus, if\n#\tyour time between requests is greater than this timeout, you\n#\twill see a lot of requests sent DIRECT to origin servers\n#\tinstead of to your parents.\n#Default:\n# dead_peer_timeout 10 seconds\n\n#  TAG: forward_max_tries\n#\tLimits the number of attempts to forward the request.\n#\n#\tFor the purpose of this limit, Squid counts all high-level request\n#\tforwarding attempts, including any same-destination retries after\n#\tcertain persistent connection failures and any attempts to use a\n#\tdifferent peer. However, low-level connection reopening attempts\n#\t(enabled using connect_retries) are not counted.\n#\t\n#\tSee also: forward_timeout and connect_retries.\n#Default:\n# forward_max_tries 25\n\n# MEMORY CACHE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_mem\t(bytes)\n#\tNOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE.\n#\tIT ONLY PLACES A LIMIT ON HOW MUCH ADDITIONAL MEMORY SQUID WILL\n#\tUSE AS A MEMORY CACHE OF OBJECTS. SQUID USES MEMORY FOR OTHER\n#\tTHINGS AS WELL. SEE THE SQUID FAQ SECTION 8 FOR DETAILS.\n#\n#\t'cache_mem' specifies the ideal amount of memory to be used\n#\tfor:\n#\t\t* In-Transit objects\n#\t\t* Hot Objects\n#\t\t* Negative-Cached objects\n#\n#\tData for these objects are stored in 4 KB blocks.  This\n#\tparameter specifies the ideal upper limit on the total size of\n#\t4 KB blocks allocated.  In-Transit objects take the highest\n#\tpriority.\n#\n#\tIn-transit objects have priority over the others.  When\n#\tadditional space is needed for incoming data, negative-cached\n#\tand hot objects will be released.  In other words, the\n#\tnegative-cached and hot objects will fill up any unused space\n#\tnot needed for in-transit objects.\n#\n#\tIf circumstances require, this limit will be exceeded.\n#\tSpecifically, if your incoming request rate requires more than\n#\t'cache_mem' of memory to hold in-transit objects, Squid will\n#\texceed this limit to satisfy the new requests.  When the load\n#\tdecreases, blocks will be freed until the high-water mark is\n#\treached.  Thereafter, blocks will be used to store hot\n#\tobjects.\n#\n#\tIf shared memory caching is enabled, Squid does not use the shared\n#\tcache space for in-transit objects, but they still consume as much\n#\tlocal memory as they need. For more details about the shared memory\n#\tcache, see memory_cache_shared.\n#Default:\n# cache_mem 256 MB\n\n#  TAG: maximum_object_size_in_memory\t(bytes)\n#\tObjects greater than this size will not be attempted to kept in\n#\tthe memory cache. This should be set high enough to keep objects\n#\taccessed frequently in memory to improve performance whilst low\n#\tenough to keep larger objects from hoarding cache_mem.\n#Default:\n# maximum_object_size_in_memory 512 KB\nmaximum_object_size_in_memory 64 KB\n\n#  TAG: memory_cache_shared\ton|off\n#\tControls whether the memory cache is shared among SMP workers.\n#\n#\tThe shared memory cache is meant to occupy cache_mem bytes and replace\n#\tthe non-shared memory cache, although some entities may still be\n#\tcached locally by workers for now (e.g., internal and in-transit\n#\tobjects may be served from a local memory cache even if shared memory\n#\tcaching is enabled).\n#\n#\tBy default, the memory cache is shared if and only if all of the\n#\tfollowing conditions are satisfied: Squid runs in SMP mode with\n#\tmultiple workers, cache_mem is positive, and Squid environment\n#\tsupports required IPC primitives (e.g., POSIX shared memory segments\n#\tand GCC-style atomic operations).\n#\n#\tTo avoid blocking locks, shared memory uses opportunistic algorithms\n#\tthat do not guarantee that every cachable entity that could have been\n#\tshared among SMP workers will actually be shared.\n#Default:\n# \"on\" where supported if doing memory caching with multiple SMP workers.\n\n#  TAG: memory_cache_mode\n#\tControls which objects to keep in the memory cache (cache_mem)\n#\n#\talways\tKeep most recently fetched objects in memory (default)\n#\n#\tdisk\tOnly disk cache hits are kept in memory, which means\n#\t\tan object must first be cached on disk and then hit\n#\t\ta second time before cached in memory.\n#\n#\tnetwork\tOnly objects fetched from network is kept in memory\n#Default:\n# Keep the most recently fetched objects in memory\n\n#  TAG: memory_replacement_policy\n#\tThe memory replacement policy parameter determines which\n#\tobjects are purged from memory when memory space is needed.\n#\n#\tSee cache_replacement_policy for details on algorithms.\n#Default:\n# memory_replacement_policy lru\n\n# DISK CACHE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_replacement_policy\n#\tThe cache replacement policy parameter determines which\n#\tobjects are evicted (replaced) when disk space is needed.\n#\n#\t    lru       : Squid's original list based LRU policy\n#\t    heap GDSF : Greedy-Dual Size Frequency\n#\t    heap LFUDA: Least Frequently Used with Dynamic Aging\n#\t    heap LRU  : LRU policy implemented using a heap\n#\n#\tApplies to any cache_dir lines listed below this directive.\n#\n#\tThe LRU policies keeps recently referenced objects.\n#\n#\tThe heap GDSF policy optimizes object hit rate by keeping smaller\n#\tpopular objects in cache so it has a better chance of getting a\n#\thit.  It achieves a lower byte hit rate than LFUDA though since\n#\tit evicts larger (possibly popular) objects.\n#\n#\tThe heap LFUDA policy keeps popular objects in cache regardless of\n#\ttheir size and thus optimizes byte hit rate at the expense of\n#\thit rate since one large, popular object will prevent many\n#\tsmaller, slightly less popular objects from being cached.\n#\n#\tBoth policies utilize a dynamic aging mechanism that prevents\n#\tcache pollution that can otherwise occur with frequency-based\n#\treplacement policies.\n#\n#\tNOTE: if using the LFUDA replacement policy you should increase\n#\tthe value of maximum_object_size above its default of 4 MB to\n#\tto maximize the potential byte hit rate improvement of LFUDA.\n#\n#\tFor more information about the GDSF and LFUDA cache replacement\n#\tpolicies see http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html\n#\tand http://fog.hpl.external.hp.com/techreports/98/HPL-98-173.html.\n#Default:\n# cache_replacement_policy lru\ncache_replacement_policy heap LFUDA\n\n#  TAG: minimum_object_size\t(bytes)\n#\tObjects smaller than this size will NOT be saved on disk.  The\n#\tvalue is specified in bytes, and the default is 0 KB, which\n#\tmeans all responses can be stored.\n#Default:\n# no limit\n\n#  TAG: maximum_object_size\t(bytes)\n#\tSet the default value for max-size parameter on any cache_dir.\n#\tThe value is specified in bytes, and the default is 4 MB.\n#\t\n#\tIf you wish to get a high BYTES hit ratio, you should probably\n#\tincrease this (one 32 MB object hit counts for 3200 10KB\n#\thits).\n#\t\n#\tIf you wish to increase hit ratio more than you want to\n#\tsave bandwidth you should leave this low.\n#\t\n#\tNOTE: if using the LFUDA replacement policy you should increase\n#\tthis value to maximize the byte hit rate improvement of LFUDA!\n#\tSee cache_replacement_policy for a discussion of this policy.\n#Default:\n# maximum_object_size 4 MB\nmaximum_object_size 64 MB\n\n#  TAG: cache_dir\n#\tFormat:\n#\t\tcache_dir Type Directory-Name Fs-specific-data [options]\n#\n#\tYou can specify multiple cache_dir lines to spread the\n#\tcache among different disk partitions.\n#\n#\tType specifies the kind of storage system to use. Only \"ufs\"\n#\tis built by default. To enable any of the other storage systems\n#\tsee the --enable-storeio configure option.\n#\n#\t'Directory' is a top-level directory where cache swap\n#\tfiles will be stored.  If you want to use an entire disk\n#\tfor caching, this can be the mount-point directory.\n#\tThe directory must exist and be writable by the Squid\n#\tprocess.  Squid will NOT create this directory for you.\n#\n#\tIn SMP configurations, cache_dir must not precede the workers option\n#\tand should use configuration macros or conditionals to give each\n#\tworker interested in disk caching a dedicated cache directory.\n#\n#\n#\t====  The ufs store type  ====\n#\n#\t\"ufs\" is the old well-known Squid storage format that has always\n#\tbeen there.\n#\n#\tUsage:\n#\t\tcache_dir ufs Directory-Name Mbytes L1 L2 [options]\n#\n#\t'Mbytes' is the amount of disk space (MB) to use under this\n#\tdirectory.  The default is 100 MB.  Change this to suit your\n#\tconfiguration.  Do NOT put the size of your disk drive here.\n#\tInstead, if you want Squid to use the entire disk drive,\n#\tsubtract 20% and use that value.\n#\n#\t'L1' is the number of first-level subdirectories which\n#\twill be created under the 'Directory'.  The default is 16.\n#\n#\t'L2' is the number of second-level subdirectories which\n#\twill be created under each first-level directory.  The default\n#\tis 256.\n#\n#\n#\t====  The aufs store type  ====\n#\n#\t\"aufs\" uses the same storage format as \"ufs\", utilizing\n#\tPOSIX-threads to avoid blocking the main Squid process on\n#\tdisk-I/O. This was formerly known in Squid as async-io.\n#\n#\tUsage:\n#\t\tcache_dir aufs Directory-Name Mbytes L1 L2 [options]\n#\n#\tsee argument descriptions under ufs above\n#\n#\n#\t====  The diskd store type  ====\n#\n#\t\"diskd\" uses the same storage format as \"ufs\", utilizing a\n#\tseparate process to avoid blocking the main Squid process on\n#\tdisk-I/O.\n#\n#\tUsage:\n#\t\tcache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]\n#\n#\tsee argument descriptions under ufs above\n#\n#\tQ1 specifies the number of unacknowledged I/O requests when Squid\n#\tstops opening new files. If this many messages are in the queues,\n#\tSquid won't open new files. Default is 64\n#\n#\tQ2 specifies the number of unacknowledged messages when Squid\n#\tstarts blocking.  If this many messages are in the queues,\n#\tSquid blocks until it receives some replies. Default is 72\n#\n#\tWhen Q1 < Q2 (the default), the cache directory is optimized\n#\tfor lower response time at the expense of a decrease in hit\n#\tratio.  If Q1 > Q2, the cache directory is optimized for\n#\thigher hit ratio at the expense of an increase in response\n#\ttime.\n#\n#\n#\t====  The rock store type  ====\n#\n#\tUsage:\n#\t    cache_dir rock Directory-Name Mbytes [options]\n#\n#\tThe Rock Store type is a database-style storage. All cached\n#\tentries are stored in a \"database\" file, using fixed-size slots.\n#\tA single entry occupies one or more slots.\n#\n#\tIf possible, Squid using Rock Store creates a dedicated kid\n#\tprocess called \"disker\" to avoid blocking Squid worker(s) on disk\n#\tI/O. One disker kid is created for each rock cache_dir.  Diskers\n#\tare created only when Squid, running in daemon mode, has support\n#\tfor the IpcIo disk I/O module.\n#\n#\tswap-timeout=msec: Squid will not start writing a miss to or\n#\treading a hit from disk if it estimates that the swap operation\n#\twill take more than the specified number of milliseconds. By\n#\tdefault and when set to zero, disables the disk I/O time limit\n#\tenforcement. Ignored when using blocking I/O module because\n#\tblocking synchronous I/O does not allow Squid to estimate the\n#\texpected swap wait time.\n#\n#\tmax-swap-rate=swaps/sec: Artificially limits disk access using\n#\tthe specified I/O rate limit. Swap out requests that\n#\twould cause the average I/O rate to exceed the limit are\n#\tdelayed. Individual swap in requests (i.e., hits or reads) are\n#\tnot delayed, but they do contribute to measured swap rate and\n#\tsince they are placed in the same FIFO queue as swap out\n#\trequests, they may wait longer if max-swap-rate is smaller.\n#\tThis is necessary on file systems that buffer \"too\n#\tmany\" writes and then start blocking Squid and other processes\n#\twhile committing those writes to disk.  Usually used together\n#\twith swap-timeout to avoid excessive delays and queue overflows\n#\twhen disk demand exceeds available disk \"bandwidth\". By default\n#\tand when set to zero, disables the disk I/O rate limit\n#\tenforcement. Currently supported by IpcIo module only.\n#\n#\tslot-size=bytes: The size of a database \"record\" used for\n#\tstoring cached responses. A cached response occupies at least\n#\tone slot and all database I/O is done using individual slots so\n#\tincreasing this parameter leads to more disk space waste while\n#\tdecreasing it leads to more disk I/O overheads. Should be a\n#\tmultiple of your operating system I/O page size. Defaults to\n#\t16KBytes. A housekeeping header is stored with each slot and\n#\tsmaller slot-sizes will be rejected. The header is smaller than\n#\t100 bytes.\n#\n#\n#\t==== COMMON OPTIONS ====\n#\n#\tno-store\tno new objects should be stored to this cache_dir.\n#\n#\tmin-size=n\tthe minimum object size in bytes this cache_dir\n#\t\t\twill accept.  It's used to restrict a cache_dir\n#\t\t\tto only store large objects (e.g. AUFS) while\n#\t\t\tother stores are optimized for smaller objects\n#\t\t\t(e.g. Rock).\n#\t\t\tDefaults to 0.\n#\n#\tmax-size=n\tthe maximum object size in bytes this cache_dir\n#\t\t\tsupports.\n#\t\t\tThe value in maximum_object_size directive sets\n#\t\t\tthe default unless more specific details are\n#\t\t\tavailable (ie a small store capacity).\n#\n#\tNote: To make optimal use of the max-size limits you should order\n#\tthe cache_dir lines with the smallest max-size value first.\n#\n#Default:\n# No disk cache. Store cache ojects only in memory.\n#\ncache_dir ufs /opt/local/var/squid/cache 256 16 256\n\n# Uncomment and adjust the following to add a disk cache directory.\n#cache_dir ufs /opt/local/var/squid/cache 100 16 256\n\n#  TAG: store_dir_select_algorithm\n#\tHow Squid selects which cache_dir to use when the response\n#\tobject will fit into more than one.\n#\n#\tRegardless of which algorithm is used the cache_dir min-size\n#\tand max-size parameters are obeyed. As such they can affect\n#\tthe selection algorithm by limiting the set of considered\n#\tcache_dir.\n#\n#\tAlgorithms:\n#\n#\t\tleast-load\n#\n#\tThis algorithm is suited to caches with similar cache_dir\n#\tsizes and disk speeds.\n#\n#\tThe disk with the least I/O pending is selected.\n#\tWhen there are multiple disks with the same I/O load ranking\n#\tthe cache_dir with most available capacity is selected.\n#\n#\tWhen a mix of cache_dir sizes are configured the faster disks\n#\thave a naturally lower I/O loading and larger disks have more\n#\tcapacity. So space used to store objects and data throughput\n#\tmay be very unbalanced towards larger disks.\n#\n#\n#\t\tround-robin\n#\n#\tThis algorithm is suited to caches with unequal cache_dir\n#\tdisk sizes.\n#\n#\tEach cache_dir is selected in a rotation. The next suitable\n#\tcache_dir is used.\n#\n#\tAvailable cache_dir capacity is only considered in relation\n#\tto whether the object will fit and meets the min-size and\n#\tmax-size parameters.\n#\n#\tDisk I/O loading is only considered to prevent overload on slow\n#\tdisks. This algorithm does not spread objects by size, so any\n#\tI/O loading per-disk may appear very unbalanced and volatile.\n#\n#\tIf several cache_dirs use similar min-size, max-size, or other\n#\tlimits to to reject certain responses, then do not group such\n#\tcache_dir lines together, to avoid round-robin selection bias\n#\ttowards the first cache_dir after the group. Instead, interleave\n#\tcache_dir lines from different groups. For example:\n#\n#\t\tstore_dir_select_algorithm round-robin\n#\t\tcache_dir rock /hdd1 ... min-size=100000\n#\t\tcache_dir rock /ssd1 ... max-size=99999\n#\t\tcache_dir rock /hdd2 ... min-size=100000\n#\t\tcache_dir rock /ssd2 ... max-size=99999\n#\t\tcache_dir rock /hdd3 ... min-size=100000\n#\t\tcache_dir rock /ssd3 ... max-size=99999\n#Default:\n# store_dir_select_algorithm least-load\n\n#  TAG: max_open_disk_fds\n#\tTo avoid having disk as the I/O bottleneck Squid can optionally\n#\tbypass the on-disk cache if more than this amount of disk file\n#\tdescriptors are open.\n#\n#\tA value of 0 indicates no limit.\n#Default:\n# no limit\n\n#  TAG: cache_swap_low\t(percent, 0-100)\n#\tThe low-water mark for AUFS/UFS/diskd cache object eviction by\n#\tthe cache_replacement_policy algorithm.\n#\n#\tRemoval begins when the swap (disk) usage of a cache_dir is\n#\tabove this low-water mark and attempts to maintain utilization\n#\tnear the low-water mark.\n#\n#\tAs swap utilization increases towards the high-water mark set\n#\tby cache_swap_high object eviction becomes more agressive.\n#\n#\tThe value difference in percentages between low- and high-water\n#\tmarks represent an eviction rate of 300 objects per second and\n#\tthe rate continues to scale in agressiveness by multiples of\n#\tthis above the high-water mark.\n#\n#\tDefaults are 90% and 95%. If you have a large cache, 5% could be\n#\thundreds of MB. If this is the case you may wish to set these\n#\tnumbers closer together.\n#\n#\tSee also cache_swap_high and cache_replacement_policy\n#Default:\n# cache_swap_low 90\n\n#  TAG: cache_swap_high\t(percent, 0-100)\n#\tThe high-water mark for AUFS/UFS/diskd cache object eviction by\n#\tthe cache_replacement_policy algorithm.\n#\n#\tRemoval begins when the swap (disk) usage of a cache_dir is\n#\tabove the low-water mark set by cache_swap_low and attempts to\n#\tmaintain utilization near the low-water mark.\n#\n#\tAs swap utilization increases towards this high-water mark object\n#\teviction becomes more agressive.\n#\n#\tThe value difference in percentages between low- and high-water\n#\tmarks represent an eviction rate of 300 objects per second and\n#\tthe rate continues to scale in agressiveness by multiples of\n#\tthis above the high-water mark.\n#\n#\tDefaults are 90% and 95%. If you have a large cache, 5% could be\n#\thundreds of MB. If this is the case you may wish to set these\n#\tnumbers closer together.\n#\n#\tSee also cache_swap_low and cache_replacement_policy\n#Default:\n# cache_swap_high 95\n\n# LOGFILE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: logformat\n#\tUsage:\n#\n#\tlogformat <name> <format specification>\n#\n#\tDefines an access log format.\n#\n#\tThe <format specification> is a string with embedded % format codes\n#\n#\t% format codes all follow the same basic structure where all\n#\tcomponents but the formatcode are optional and usually unnecessary,\n#\tespecially when dealing with common codes.\n#\n#\t\t% [encoding] [-] [[0]width] [{arg}] formatcode [{arg}]\n#\n#\t\tencoding escapes or otherwise protects \"special\" characters:\n#\n#\t\t\t\"\tQuoted string encoding where quote(\") and\n#\t\t\t\tbackslash(\\) characters are \\-escaped while\n#\t\t\t\tCR, LF, and TAB characters are encoded as \\r,\n#\t\t\t\t\\n, and \\t two-character sequences.\n#\n#\t\t\t[\tCustom Squid encoding where percent(%), square\n#\t\t\t\tbrackets([]), backslash(\\) and characters with\n#\t\t\t\tcodes outside of [32,126] range are %-encoded.\n#\t\t\t\tSP is not encoded. Used by log_mime_hdrs.\n#\n#\t\t\t#\tURL encoding (a.k.a. percent-encoding) where\n#\t\t\t\tall URL unsafe and control characters (per RFC\n#\t\t\t\t1738) are %-encoded.\n#\n#\t\t\t/\tShell-like encoding where quote(\") and\n#\t\t\t\tbackslash(\\) characters are \\-escaped while CR\n#\t\t\t\tand LF characters are encoded as \\r and \\n\n#\t\t\t\ttwo-character sequences. Values containing SP\n#\t\t\t\tcharacter(s) are surrounded by quotes(\").\n#\n#\t\t\t'\tRaw/as-is encoding with no escaping/quoting.\n#\n#\t\t\tDefault encoding: When no explicit encoding is\n#\t\t\tspecified, each %code determines its own encoding.\n#\t\t\tMost %codes use raw/as-is encoding, but some codes use\n#\t\t\ta so called \"pass-through URL encoding\" where all URL\n#\t\t\tunsafe and control characters (per RFC 1738) are\n#\t\t\t%-encoded, but the percent character(%) is left as is.\n#\n#\t\t-\tleft aligned\n#\n#\t\twidth\tminimum and/or maximum field width:\n#\t\t\t    [width_min][.width_max]\n#\t\t\tWhen minimum starts with 0, the field is zero-padded.\n#\t\t\tString values exceeding maximum width are truncated.\n#\n#\t\t{arg}\targument such as header name etc. This field may be\n#\t\t\tplaced before or after the token, but not both at once.\n#\n#\tFormat codes:\n#\n#\t\t%\ta literal % character\n#\t\tsn\tUnique sequence number per log line entry\n#\t\terr_code    The ID of an error response served by Squid or\n#\t\t\t\ta similar internal error identifier.\n#\t\terr_detail  Additional err_code-dependent error information.\n#\t\tnote\tThe annotation specified by the argument. Also\n#\t\t\tlogs the adaptation meta headers set by the\n#\t\t\tadaptation_meta configuration parameter.\n#\t\t\tIf no argument given all annotations logged.\n#\t\t\tThe argument may include a separator to use with\n#\t\t\tannotation values:\n#                            name[:separator]\n#\t\t\tBy default, multiple note values are separated with \",\"\n#\t\t\tand multiple notes are separated with \"\\r\\n\".\n#\t\t\tWhen logging named notes with %{name}note, the\n#\t\t\texplicitly configured separator is used between note\n#\t\t\tvalues. When logging all notes with %note, the\n#\t\t\texplicitly configured separator is used between\n#\t\t\tindividual notes. There is currently no way to\n#\t\t\tspecify both value and notes separators when logging\n#\t\t\tall notes with %note.\n#\n#\tConnection related format codes:\n#\n#\t\t>a\tClient source IP address\n#\t\t>A\tClient FQDN\n#\t\t>p\tClient source port\n#\t\t>eui\tClient source EUI (MAC address, EUI-48 or EUI-64 identifier)\n#\t\t>la\tLocal IP address the client connected to\n#\t\t>lp\tLocal port number the client connected to\n#\t\t>qos    Client connection TOS/DSCP value set by Squid\n#\t\t>nfmark Client connection netfilter mark set by Squid\n#\n#\t\tla\tLocal listening IP address the client connection was connected to.\n#\t\tlp\tLocal listening port number the client connection was connected to.\n#\n#\t\t<a\tServer IP address of the last server or peer connection\n#\t\t<A\tServer FQDN or peer name\n#\t\t<p\tServer port number of the last server or peer connection\n#\t\t<la\tLocal IP address of the last server or peer connection\n#\t\t<lp     Local port number of the last server or peer connection\n#\t\t<qos\tServer connection TOS/DSCP value set by Squid\n#\t\t<nfmark Server connection netfilter mark set by Squid\n#\n#\t\t>handshake Raw client handshake\n#\t\t\tInitial client bytes received by Squid on a newly\n#\t\t\taccepted TCP connection or inside a just established\n#\t\t\tCONNECT tunnel. Squid stops accumulating handshake\n#\t\t\tbytes as soon as the handshake parser succeeds or\n#\t\t\tfails (determining whether the client is using the\n#\t\t\texpected protocol).\n#\n#\t\t\tFor HTTP clients, the handshake is the request line.\n#\t\t\tFor TLS clients, the handshake consists of all TLS\n#\t\t\trecords up to and including the TLS record that\n#\t\t\tcontains the last byte of the first ClientHello\n#\t\t\tmessage. For clients using an unsupported protocol,\n#\t\t\tthis field contains the bytes received by Squid at the\n#\t\t\ttime of the handshake parsing failure.\n#\n#\t\t\tSee the on_unsupported_protocol directive for more\n#\t\t\tinformation on Squid handshake traffic expectations.\n#\n#\t\t\tCurrent support is limited to these contexts:\n#\t\t\t- http_port connections, but only when the\n#\t\t\t  on_unsupported_protocol directive is in use.\n#\t\t\t- https_port connections (and CONNECT tunnels) that\n#\t\t\t  are subject to the ssl_bump peek or stare action.\n#\n#\t\t\tTo protect binary handshake data, this field is always\n#\t\t\tbase64-encoded (RFC 4648 Section 4). If logformat\n#\t\t\tfield encoding is configured, that encoding is applied\n#\t\t\ton top of base64. Otherwise, the computed base64 value\n#\t\t\tis recorded as is.\n#\n#\tTime related format codes:\n#\n#\t\tts\tSeconds since epoch\n#\t\ttu\tsubsecond time (milliseconds)\n#\t\ttl\tLocal time. Optional strftime format argument\n#\t\t\t\tdefault %d/%b/%Y:%H:%M:%S %z\n#\t\ttg\tGMT time. Optional strftime format argument\n#\t\t\t\tdefault %d/%b/%Y:%H:%M:%S %z\n#\t\ttr\tResponse time (milliseconds)\n#\t\tdt\tTotal time spent making DNS lookups (milliseconds)\n#\t\ttS\tApproximate master transaction start time in \n#\t\t\t<full seconds since epoch>.<fractional seconds> format.\n#\t\t\tCurrently, Squid considers the master transaction\n#\t\t\tstarted when a complete HTTP request header initiating\n#\t\t\tthe transaction is received from the client. This is\n#\t\t\tthe same value that Squid uses to calculate transaction\n#\t\t\tresponse time when logging %tr to access.log. Currently,\n#\t\t\tSquid uses millisecond resolution for %tS values,\n#\t\t\tsimilar to the default access.log \"current time\" field\n#\t\t\t(%ts.%03tu).\n#\n#\tAccess Control related format codes:\n#\n#\t\tet\tTag returned by external acl\n#\t\tea\tLog string returned by external acl\n#\t\tun\tUser name (any available)\n#\t\tul\tUser name from authentication\n#\t\tue\tUser name from external acl helper\n#\t\tui\tUser name from ident\n#\t\tun\tA user name. Expands to the first available name\n#\t\t\tfrom the following list of information sources:\n#\t\t\t- authenticated user name, like %ul\n#\t\t\t- user name supplied by an external ACL, like %ue\n#\t\t\t- SSL client name, like %us\n#\t\t\t- ident user name, like %ui\n#\t\tcredentials Client credentials. The exact meaning depends on\n#\t\t\tthe authentication scheme: For Basic authentication,\n#\t\t\tit is the password; for Digest, the realm sent by the\n#\t\t\tclient; for NTLM and Negotiate, the client challenge\n#\t\t\tor client credentials prefixed with \"YR \" or \"KK \".\n#\n#\tHTTP related format codes:\n#\n#\t    REQUEST\n#\n#\t\t[http::]rm\tRequest method (GET/POST etc)\n#\t\t[http::]>rm\tRequest method from client\n#\t\t[http::]<rm\tRequest method sent to server or peer\n#\n#\t\t[http::]ru\tRequest URL received (or computed) and sanitized\n#\n#\t\t\t\tLogs request URI received from the client, a\n#\t\t\t\trequest adaptation service, or a request\n#\t\t\t\tredirector (whichever was applied last).\n#\n#\t\t\t\tComputed URLs are URIs of internally generated\n#\t\t\t\trequests and various \"error:...\" URIs.\n#\n#\t\t\t\tHonors strip_query_terms and uri_whitespace.\n#\n#\t\t\t\tThis field is not encoded by default. Encoding\n#\t\t\t\tthis field using variants of %-encoding will\n#\t\t\t\tclash with uri_whitespace modifications that\n#\t\t\t\talso use %-encoding.\n#\n#\t\t[http::]>ru\tRequest URL received from the client (or computed)\n#\n#\t\t\t\tComputed URLs are URIs of internally generated\n#\t\t\t\trequests and various \"error:...\" URIs.\n#\n#\t\t\t\tUnlike %ru, this request URI is not affected\n#\t\t\t\tby request adaptation, URL rewriting services,\n#\t\t\t\tand strip_query_terms.\n#\n#\t\t\t\tHonors uri_whitespace.\n#\n#\t\t\t\tThis field is using pass-through URL encoding\n#\t\t\t\tby default. Encoding this field using other\n#\t\t\t\tvariants of %-encoding will clash with\n#\t\t\t\turi_whitespace modifications that also use\n#\t\t\t\t%-encoding.\n#\n#\t\t[http::]<ru\tRequest URL sent to server or peer\n#\t\t[http::]>rs\tRequest URL scheme from client\n#\t\t[http::]<rs\tRequest URL scheme sent to server or peer\n#\t\t[http::]>rd\tRequest URL domain from client\n#\t\t[http::]<rd\tRequest URL domain sent to server or peer\n#\t\t[http::]>rP\tRequest URL port from client\n#\t\t[http::]<rP\tRequest URL port sent to server or peer\n#\t\t[http::]rp\tRequest URL path excluding hostname\n#\t\t[http::]>rp\tRequest URL path excluding hostname from client\n#\t\t[http::]<rp\tRequest URL path excluding hostname sent to server or peer\n#\t\t[http::]rv\tRequest protocol version\n#\t\t[http::]>rv\tRequest protocol version from client\n#\t\t[http::]<rv\tRequest protocol version sent to server or peer\n#\n#\t\t[http::]>h\tOriginal received request header.\n#\t\t\t\tUsually differs from the request header sent by\n#\t\t\t\tSquid, although most fields are often preserved.\n#\t\t\t\tAccepts optional header field name/value filter\n#\t\t\t\targument using name[:[separator]element] format.\n#\t\t[http::]>ha\tReceived request header after adaptation and\n#\t\t\t\tredirection (pre-cache REQMOD vectoring point).\n#\t\t\t\tUsually differs from the request header sent by\n#\t\t\t\tSquid, although most fields are often preserved.\n#\t\t\t\tOptional header name argument as for >h\n#\n#\t    RESPONSE\n#\n#\t\t[http::]<Hs\tHTTP status code received from the next hop\n#\t\t[http::]>Hs\tHTTP status code sent to the client\n#\n#\t\t[http::]<h\tReply header. Optional header name argument\n#\t\t\t\tas for >h\n#\n#\t\t[http::]mt\tMIME content type\n#\n#\n#\t    SIZE COUNTERS\n#\n#\t\t[http::]st\tTotal size of request + reply traffic with client\n#\t\t[http::]>st\tTotal size of request received from client.\n#\t\t\t\tExcluding chunked encoding bytes.\n#\t\t[http::]<st\tTotal size of reply sent to client (after adaptation)\n#\n#\t\t[http::]>sh\tSize of request headers received from client\n#\t\t[http::]<sh\tSize of reply headers sent to client (after adaptation)\n#\n#\t\t[http::]<sH\tReply high offset sent\n#\t\t[http::]<sS\tUpstream object size\n#\n#\t\t[http::]<bs\tNumber of HTTP-equivalent message body bytes \n#\t\t\t\treceived from the next hop, excluding chunked\n#\t\t\t\ttransfer encoding and control messages.\n#\t\t\t\tGenerated FTP/Gopher listings are treated as\n#\t\t\t\treceived bodies.\n#\n#\t    TIMING\n#\n#\t\t[http::]<pt\tPeer response time in milliseconds. The timer starts\n#\t\t\t\twhen the last request byte is sent to the next hop\n#\t\t\t\tand stops when the last response byte is received.\n#\t\t[http::]<tt\tTotal time in milliseconds. The timer \n#\t\t\t\tstarts with the first connect request (or write I/O)\n#\t\t\t\tsent to the first selected peer. The timer stops\n#\t\t\t\twith the last I/O with the last peer.\n#\n#\tSquid handling related format codes:\n#\n#\t\tSs\tSquid request status (TCP_MISS etc)\n#\t\tSh\tSquid hierarchy status (DEFAULT_PARENT etc)\n#\n#\tSSL-related format codes:\n#\n#\t\tssl::bump_mode\tSslBump decision for the transaction:\n#\n#\t\t\t\tFor CONNECT requests that initiated bumping of\n#\t\t\t\ta connection and for any request received on\n#\t\t\t\tan already bumped connection, Squid logs the\n#\t\t\t\tcorresponding SslBump mode (\"splice\", \"bump\",\n#\t\t\t\t\"peek\", \"stare\", \"terminate\", \"server-first\"\n#\t\t\t\tor \"client-first\"). See the ssl_bump option \n#\t\t\t\tfor more information about these modes.\n#\n#\t\t\t\tA \"none\" token is logged for requests that\n#\t\t\t\ttriggered \"ssl_bump\" ACL evaluation matching\n#\t\t\t\ta \"none\" rule.\n#\n#\t\t\t\tIn all other cases, a single dash (\"-\") is\n#\t\t\t\tlogged.\n#\n#\t\tssl::>sni\tSSL client SNI sent to Squid.\n#\n#\t\tssl::>cert_subject\n#\t\t\t\tThe Subject field of the received client\n#\t\t\t\tSSL certificate or a dash ('-') if Squid has\n#\t\t\t\treceived an invalid/malformed certificate or\n#\t\t\t\tno certificate at all. Consider encoding the\n#\t\t\t\tlogged value because Subject often has spaces.\n#\n#\t\tssl::>cert_issuer\n#\t\t\t\tThe Issuer field of the received client\n#\t\t\t\tSSL certificate or a dash ('-') if Squid has\n#\t\t\t\treceived an invalid/malformed certificate or\n#\t\t\t\tno certificate at all. Consider encoding the\n#\t\t\t\tlogged value because Issuer often has spaces.\n#\n#\t\tssl::<cert_subject\n#\t\t\t\tThe Subject field of the received server\n#\t\t\t\tTLS certificate or a dash ('-') if this is\n#\t\t\t\tnot available. Consider encoding the logged\n#\t\t\t\tvalue because Subject often has spaces.\n#\n#\t\tssl::<cert_issuer\n#\t\t\t\tThe Issuer field of the received server\n#\t\t\t\tTLS certificate or a dash ('-') if this is\n#\t\t\t\tnot available. Consider encoding the logged\n#\t\t\t\tvalue because Issuer often has spaces.\n#\n#\t\tssl::<cert_errors\n#\t\t\t\tThe list of certificate validation errors\n#\t\t\t\tdetected by Squid (including OpenSSL and\n#\t\t\t\tcertificate validation helper components). The\n#\t\t\t\terrors are listed in the discovery order. By\n#\t\t\t\tdefault, the error codes are separated by ':'.\n#\t\t\t\tAccepts an optional separator argument.\n#\n#\t\t%ssl::>negotiated_version The negotiated TLS version of the\n#\t\t\t\tclient connection.\n#\n#\t\t%ssl::<negotiated_version The negotiated TLS version of the\n#\t\t\t\tlast server or peer connection.\n#\n#\t\t%ssl::>received_hello_version The TLS version of the Hello\n#\t\t\t\tmessage received from TLS client.\n#\n#\t\t%ssl::<received_hello_version The TLS version of the Hello\n#\t\t\t\tmessage received from TLS server.\n#\n#\t\t%ssl::>received_supported_version The maximum TLS version\n#\t\t\t\tsupported by the TLS client.\n#\n#\t\t%ssl::<received_supported_version The maximum TLS version\n#\t\t\t\tsupported by the TLS server.\n#\n#\t\t%ssl::>negotiated_cipher The negotiated cipher of the\n#\t\t\t\tclient connection.\n#\n#\t\t%ssl::<negotiated_cipher The negotiated cipher of the\n#\t\t\t\tlast server or peer connection.\n#\n#\tIf ICAP is enabled, the following code becomes available (as\n#\twell as ICAP log codes documented with the icap_log option):\n#\n#\t\ticap::tt        Total ICAP processing time for the HTTP\n#\t\t\t\ttransaction. The timer ticks when ICAP\n#\t\t\t\tACLs are checked and when ICAP\n#\t\t\t\ttransaction is in progress.\n#\n#\tIf adaptation is enabled the following codes become available:\n#\n#\t\tadapt::<last_h\tThe header of the last ICAP response or\n#\t\t\t\tmeta-information from the last eCAP\n#\t\t\t\ttransaction related to the HTTP transaction.\n#\t\t\t\tLike <h, accepts an optional header name\n#\t\t\t\targument.\n#\n#\t\tadapt::sum_trs Summed adaptation transaction response\n#\t\t\t\ttimes recorded as a comma-separated list in\n#\t\t\t\tthe order of transaction start time. Each time\n#\t\t\t\tvalue is recorded as an integer number,\n#\t\t\t\trepresenting response time of one or more\n#\t\t\t\tadaptation (ICAP or eCAP) transaction in\n#\t\t\t\tmilliseconds.  When a failed transaction is\n#\t\t\t\tbeing retried or repeated, its time is not\n#\t\t\t\tlogged individually but added to the\n#\t\t\t\treplacement (next) transaction. See also:\n#\t\t\t\tadapt::all_trs.\n#\n#\t\tadapt::all_trs All adaptation transaction response times.\n#\t\t\t\tSame as adaptation_strs but response times of\n#\t\t\t\tindividual transactions are never added\n#\t\t\t\ttogether. Instead, all transaction response\n#\t\t\t\ttimes are recorded individually.\n#\n#\tYou can prefix adapt::*_trs format codes with adaptation\n#\tservice name in curly braces to record response time(s) specific\n#\tto that service. For example: %{my_service}adapt::sum_trs\n#\n#\tThe default formats available (which do not need re-defining) are:\n#\n#logformat squid      %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt\n#logformat common     %>a %[ui %[un [%tl] \"%rm %ru HTTP/%rv\" %>Hs %<st %Ss:%Sh\n#logformat combined   %>a %[ui %[un [%tl] \"%rm %ru HTTP/%rv\" %>Hs %<st \"%{Referer}>h\" \"%{User-Agent}>h\" %Ss:%Sh\n#logformat referrer   %ts.%03tu %>a %{Referer}>h %ru\n#logformat useragent  %>a [%tl] \"%{User-Agent}>h\"\n#\n#\tNOTE: When the log_mime_hdrs directive is set to ON.\n#\t\tThe squid, common and combined formats have a safely encoded copy\n#\t\tof the mime headers appended to each line within a pair of brackets.\n#\n#\tNOTE: The common and combined formats are not quite true to the Apache definition.\n#\t\tThe logs from Squid contain an extra status and hierarchy code appended.\n#\n#Default:\n# The format definitions squid, common, combined, referrer, useragent are built in.\n\n#  TAG: access_log\n#\tConfigures whether and how Squid logs HTTP and ICP transactions.\n#\tIf access logging is enabled, a single line is logged for every \n#\tmatching HTTP or ICP request. The recommended directive formats are:\n#\n#\taccess_log <module>:<place> [option ...] [acl acl ...]\n#\taccess_log none [acl acl ...]\n#\n#\tThe following directive format is accepted but may be deprecated:\n#\taccess_log <module>:<place> [<logformat name> [acl acl ...]]\n#\n#        In most cases, the first ACL name must not contain the '=' character\n#\tand should not be equal to an existing logformat name. You can always\n#\tstart with an 'all' ACL to work around those restrictions.\n#\t\n#\tWill log to the specified module:place using the specified format (which\n#\tmust be defined in a logformat directive) those entries which match\n#\tALL the acl's specified (which must be defined in acl clauses).\n#\tIf no acl is specified, all requests will be logged to this destination.\n#\t\n#\t===== Available options for the recommended directive format =====\n#\n#\tlogformat=name\t\tNames log line format (either built-in or\n#\t\t\t\tdefined by a logformat directive). Defaults\n#\t\t\t\tto 'squid'.\n#\n#\tbuffer-size=64KB\tDefines approximate buffering limit for log\n#\t\t\t\trecords (see buffered_logs).  Squid should not\n#\t\t\t\tkeep more than the specified size and, hence,\n#\t\t\t\tshould flush records before the buffer becomes\n#\t\t\t\tfull to avoid overflows under normal\n#\t\t\t\tconditions (the exact flushing algorithm is\n#\t\t\t\tmodule-dependent though).  The on-error option\n#\t\t\t\tcontrols overflow handling.\n#\n#\ton-error=die|drop\tDefines action on unrecoverable errors. The\n#\t\t\t\t'drop' action ignores (i.e., does not log)\n#\t\t\t\taffected log records. The default 'die' action\n#\t\t\t\tkills the affected worker. The drop action \n#\t\t\t\tsupport has not been tested for modules other\n#\t\t\t\tthan tcp.\n#\n#\trotate=N\t\tSpecifies the number of log file rotations to\n#\t\t\t\tmake when you run 'squid -k rotate'. The default\n#\t\t\t\tis to obey the logfile_rotate directive. Setting\n#\t\t\t\trotate=0 will disable the file name rotation,\n#\t\t\t\tbut the log files are still closed and re-opened.\n#\t\t\t\tThis will enable you to rename the logfiles\n#\t\t\t\tyourself just before sending the rotate signal.\n#\t\t\t\tOnly supported by the stdio module.\n#\n#\t===== Modules Currently available =====\n#\t\n#\tnone\tDo not log any requests matching these ACL.\n#\t\tDo not specify Place or logformat name.\n#\t\n#\tstdio\tWrite each log line to disk immediately at the completion of\n#\t\teach request.\n#\t\tPlace: the filename and path to be written.\n#\t\n#\tdaemon\tVery similar to stdio. But instead of writing to disk the log\n#\t\tline is passed to a daemon helper for asychronous handling instead.\n#\t\tPlace: varies depending on the daemon.\n#\t\t\n#\t\tlog_file_daemon Place: the file name and path to be written.\n#\t\n#\tsyslog\tTo log each request via syslog facility.\n#\t\tPlace: The syslog facility and priority level for these entries.\n#\t\tPlace Format:  facility.priority\n#\n#\t\twhere facility could be any of:\n#\t\t\tauthpriv, daemon, local0 ... local7 or user.\n#\n#\t\tAnd priority could be any of:\n#\t\t\terr, warning, notice, info, debug.\n#\t\n#\tudp\tTo send each log line as text data to a UDP receiver.\n#\t\tPlace: The destination host name or IP and port.\n#\t\tPlace Format:   //host:port\n#\n#\ttcp\tTo send each log line as text data to a TCP receiver.\n#\t\tLines may be accumulated before sending (see buffered_logs).\n#\t\tPlace: The destination host name or IP and port.\n#\t\tPlace Format:   //host:port\n#\n#\tDefault:\n#\t\taccess_log daemon:/opt/local/var/squid/logs/access.log squid\n#Default:\n# access_log daemon:/opt/local/var/squid/logs/access.log squid\naccess_log daemon:/opt/local/var/squid/logs/access.log squid\n#access_log daemon:/opt/local/var/squid/logs/access.log squid_ua\n\n#  TAG: icap_log\n#\tICAP log files record ICAP transaction summaries, one line per\n#\ttransaction.\n#\n#\tThe icap_log option format is:\n#\ticap_log <filepath> [<logformat name> [acl acl ...]]\n#\ticap_log none [acl acl ...]]\n#\t\n#\tPlease see access_log option documentation for details. The two\n#\tkinds of logs share the overall configuration approach and many\n#\tfeatures.\n#\n#\tICAP processing of a single HTTP message or transaction may\n#\trequire multiple ICAP transactions.  In such cases, multiple\n#\tICAP transaction log lines will correspond to a single access\n#\tlog line.\n#\n#\tICAP log supports many access.log logformat %codes. In ICAP context,\n#\tHTTP message-related %codes are applied to the HTTP message embedded\n#\tin an ICAP message. Logformat \"%http::>...\" codes are used for HTTP\n#\tmessages embedded in ICAP requests while \"%http::<...\" codes are used\n#\tfor HTTP messages embedded in ICAP responses. For example:\n#\n#\t\thttp::>h\tTo-be-adapted HTTP message headers sent by Squid to\n#\t\t\t\tthe ICAP service. For REQMOD transactions, these are\n#\t\t\t\tHTTP request headers. For RESPMOD, these are HTTP\n#\t\t\t\tresponse headers, but Squid currently cannot log them\n#\t\t\t\t(i.e., %http::>h will expand to \"-\" for RESPMOD).\n#\n#\t\thttp::<h\tAdapted HTTP message headers sent by the ICAP\n#\t\t\t\tservice to Squid (i.e., HTTP request headers in regular\n#\t\t\t\tREQMOD; HTTP response headers in RESPMOD and during\n#\t\t\t\trequest satisfaction in REQMOD).\n#\n#\tICAP OPTIONS transactions do not embed HTTP messages.\n#\n#\tSeveral logformat codes below deal with ICAP message bodies. An ICAP\n#\tmessage body, if any, typically includes a complete HTTP message\n#\t(required HTTP headers plus optional HTTP message body). When\n#\tcomputing HTTP message body size for these logformat codes, Squid\n#\teither includes or excludes chunked encoding overheads; see\n#\tcode-specific documentation for details.\n#\n#\tFor Secure ICAP services, all size-related information is currently\n#\tcomputed before/after TLS encryption/decryption, as if TLS was not\n#\tin use at all.\n#\n#\tThe following format codes are also available for ICAP logs:\n#\n#\t\ticap::<A\tICAP server IP address. Similar to <A.\n#\n#\t\ticap::<service_name\tICAP service name from the icap_service\n#\t\t\t\toption in Squid configuration file.\n#\n#\t\ticap::ru\tICAP Request-URI. Similar to ru.\n#\n#\t\ticap::rm\tICAP request method (REQMOD, RESPMOD, or \n#\t\t\t\tOPTIONS). Similar to existing rm.\n#\n#\t\ticap::>st\tThe total size of the ICAP request sent to the ICAP\n#\t\t\t\tserver (ICAP headers + ICAP body), including chunking\n#\t\t\t\tmetadata (if any).\n#\n#\t\ticap::<st\tThe total size of the ICAP response received from the\n#\t\t\t\tICAP server (ICAP headers + ICAP body), including\n#\t\t\t\tchunking metadata (if any).\n#\n#\t\ticap::<bs\tThe size of the ICAP response body received from the\n#\t\t\t\tICAP server, excluding chunking metadata (if any).\n#\n#\t\ticap::tr \tTransaction response time (in\n#\t\t\t\tmilliseconds).  The timer starts when\n#\t\t\t\tthe ICAP transaction is created and\n#\t\t\t\tstops when the transaction is completed.\n#\t\t\t\tSimilar to tr.\n#\n#\t\ticap::tio\tTransaction I/O time (in milliseconds). The\n#\t\t\t\ttimer starts when the first ICAP request\n#\t\t\t\tbyte is scheduled for sending. The timers\n#\t\t\t\tstops when the last byte of the ICAP response\n#\t\t\t\tis received.\n#\n#\t\ticap::to \tTransaction outcome: ICAP_ERR* for all\n#\t\t\t\ttransaction errors, ICAP_OPT for OPTION\n#\t\t\t\ttransactions, ICAP_ECHO for 204\n#\t\t\t\tresponses, ICAP_MOD for message\n#\t\t\t\tmodification, and ICAP_SAT for request\n#\t\t\t\tsatisfaction. Similar to Ss.\n#\n#\t\ticap::Hs\tICAP response status code. Similar to Hs.\n#\n#\t\ticap::>h\tICAP request header(s). Similar to >h.\n#\n#\t\ticap::<h\tICAP response header(s). Similar to <h.\n#\n#\tThe default ICAP log format, which can be used without an explicit\n#\tdefinition, is called icap_squid:\n#\n#logformat icap_squid %ts.%03tu %6icap::tr %>A %icap::to/%03icap::Hs %icap::<st %icap::rm %icap::ru %un -/%icap::<A -\n#\n#\tSee also: logformat and %adapt::<last_h\n#Default:\n# none\n\n#  TAG: logfile_daemon\n#\tSpecify the path to the logfile-writing daemon. This daemon is\n#\tused to write the access and store logs, if configured.\n#\n#\tSquid sends a number of commands to the log daemon:\n#\t  L<data>\\n - logfile data\n#\t  R\\n - rotate file\n#\t  T\\n - truncate file\n#\t  O\\n - reopen file\n#\t  F\\n - flush file\n#\t  r<n>\\n - set rotate count to <n>\n#\t  b<n>\\n - 1 = buffer output, 0 = don't buffer output\n#\n#\tNo responses is expected.\n#Default:\n# logfile_daemon /opt/local/libexec/squid/log_file_daemon\n\n#  TAG: stats_collection\tallow|deny acl acl...\n#\tThis options allows you to control which requests gets accounted\n#\tin performance counters.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Allow logging for all transactions.\n\n#  TAG: cache_store_log\n#\tLogs the activities of the storage manager.  Shows which\n#\tobjects are ejected from the cache, and which objects are\n#\tsaved and for how long.\n#\tThere are not really utilities to analyze this data, so you can safely\n#\tdisable it (the default).\n#\t\n#\tStore log uses modular logging outputs. See access_log for the list\n#\tof modules supported.\n#\t\n#\tExample:\n#\t\tcache_store_log stdio:/opt/local/var/squid/logs/store.log\n#\t\tcache_store_log daemon:/opt/local/var/squid/logs/store.log\n#Default:\n# none\n\n#  TAG: cache_swap_state\n#\tLocation for the cache \"swap.state\" file. This index file holds\n#\tthe metadata of objects saved on disk.  It is used to rebuild\n#\tthe cache during startup.  Normally this file resides in each\n#\t'cache_dir' directory, but you may specify an alternate\n#\tpathname here.  Note you must give a full filename, not just\n#\ta directory. Since this is the index for the whole object\n#\tlist you CANNOT periodically rotate it!\n#\n#\tIf %s can be used in the file name it will be replaced with a\n#\ta representation of the cache_dir name where each / is replaced\n#\twith '.'. This is needed to allow adding/removing cache_dir\n#\tlines when cache_swap_log is being used.\n#\n#\tIf have more than one 'cache_dir', and %s is not used in the name\n#\tthese swap logs will have names such as:\n#\n#\t\tcache_swap_log.00\n#\t\tcache_swap_log.01\n#\t\tcache_swap_log.02\n#\n#\tThe numbered extension (which is added automatically)\n#\tcorresponds to the order of the 'cache_dir' lines in this\n#\tconfiguration file.  If you change the order of the 'cache_dir'\n#\tlines in this file, these index files will NOT correspond to\n#\tthe correct 'cache_dir' entry (unless you manually rename\n#\tthem).  We recommend you do NOT use this option.  It is\n#\tbetter to keep these index files in each 'cache_dir' directory.\n#Default:\n# Store the journal inside its cache_dir\n\n#  TAG: logfile_rotate\n#\tSpecifies the default number of logfile rotations to make when you\n#\ttype 'squid -k rotate'. The default is 10, which will rotate\n#\twith extensions 0 through 9. Setting logfile_rotate to 0 will\n#\tdisable the file name rotation, but the logfiles are still closed\n#\tand re-opened. This will enable you to rename the logfiles\n#\tyourself just before sending the rotate signal.\n#\n#\tNote, from Squid-3.1 this option is only a default for cache.log,\n#\tthat log can be rotated separately by using debug_options.\n#\n#\tNote, from Squid-4 this option is only a default for access.log\n#\trecorded by stdio: module. Those logs can be rotated separately by\n#\tusing the rotate=N option on their access_log directive.\n#\n#\tNote, the 'squid -k rotate' command normally sends a USR1\n#\tsignal to the running squid process.  In certain situations\n#\t(e.g. on Linux with Async I/O), USR1 is used for other\n#\tpurposes, so -k rotate uses another signal.  It is best to get\n#\tin the habit of using 'squid -k rotate' instead of 'kill -USR1\n#\t<pid>'.\n#\n#\tNote, from Squid-3.1 this option is only a default for cache.log,\n#\tthat log can be rotated separately by using debug_options.\n#Default:\n# logfile_rotate 10\nlogfile_rotate 31\n\n#  TAG: mime_table\n#\tPath to Squid's icon configuration file.\n#\n#\tYou shouldn't need to change this, but the default file contains\n#\texamples and formatting information if you do.\n#Default:\n# mime_table /opt/local/etc/squid/mime.conf\n\n#  TAG: log_mime_hdrs\ton|off\n#\tThe Cache can record both the request and the response MIME\n#\theaders for each HTTP transaction.  The headers are encoded\n#\tsafely and will appear as two bracketed fields at the end of\n#\tthe access log (for either the native or httpd-emulated log\n#\tformats).  To enable this logging set log_mime_hdrs to 'on'.\n#Default:\n# log_mime_hdrs off\n\n#  TAG: pid_filename\n#\tA filename to write the process-id to.  To disable, enter \"none\".\n#Default:\n# pid_filename /opt/local/var/run/squid/squid.pid\n\n#  TAG: client_netmask\n#\tA netmask for client addresses in logfiles and cachemgr output.\n#\tChange this to protect the privacy of your cache clients.\n#\tA netmask of 255.255.255.0 will log all IP's in that range with\n#\tthe last digit set to '0'.\n#Default:\n# Log full client IP address\n\n#  TAG: strip_query_terms\n#\tBy default, Squid strips query terms from requested URLs before\n#\tlogging.  This protects your user's privacy and reduces log size.\n#\n#\tWhen investigating HIT/MISS or other caching behaviour you\n#\twill need to disable this to see the full URL used by Squid.\n#Default:\n# strip_query_terms on\n\n#  TAG: buffered_logs\ton|off\n#\tWhether to write/send access_log records ASAP or accumulate them and\n#\tthen write/send them in larger chunks. Buffering may improve\n#\tperformance because it decreases the number of I/Os. However,\n#\tbuffering increases the delay before log records become available to\n#\tthe final recipient (e.g., a disk file or logging daemon) and,\n#\thence, increases the risk of log records loss.\n#\n#\tNote that even when buffered_logs are off, Squid may have to buffer\n#\trecords if it cannot write/send them immediately due to pending I/Os\n#\t(e.g., the I/O writing the previous log record) or connectivity loss.\n#\n#\tCurrently honored by 'daemon' and 'tcp' access_log modules only.\n#Default:\n# buffered_logs off\nbuffered_logs on\n\n#  TAG: netdb_filename\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-icmp\n#\n#\tWhere Squid stores it's netdb journal.\n#\tWhen enabled this journal preserves netdb state between restarts.\n#\n#\tTo disable, enter \"none\".\n#Default:\n# netdb_filename stdio:/opt/local/var/squid/cache/netdb.state\n\n# OPTIONS FOR TROUBLESHOOTING\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_log\n#\tSquid administrative logging file.\n#\n#\tThis is where general information about Squid behavior goes. You can\n#\tincrease the amount of data logged to this file and how often it is\n#\trotated with \"debug_options\"\n#Default:\n# cache_log /opt/local/var/squid/logs/cache.log\n\n#  TAG: debug_options\n#\tLogging options are set as section,level where each source file\n#\tis assigned a unique section.  Lower levels result in less\n#\toutput,  Full debugging (level 9) can result in a very large\n#\tlog file, so be careful.\n#\n#\tThe magic word \"ALL\" sets debugging levels for all sections.\n#\tThe default is to run with \"ALL,1\" to record important warnings.\n#\n#\tThe rotate=N option can be used to keep more or less of these logs\n#\tthan would otherwise be kept by logfile_rotate.\n#\tFor most uses a single log should be enough to monitor current\n#\tevents affecting Squid.\n#Default:\n# Log all critical and important messages.\n\n#  TAG: coredump_dir\n#\tBy default Squid leaves core files in the directory from where\n#\tit was started. If you set 'coredump_dir' to a directory\n#\tthat exists, Squid will chdir() to that directory at startup\n#\tand coredump files will be left there.\n#\n#Default:\n# Use the directory from where Squid was started.\n#\n\n# Leave coredumps in the first cache dir\ncoredump_dir /opt/local/var/squid/cache\n\n# OPTIONS FOR FTP GATEWAYING\n# -----------------------------------------------------------------------------\n\n#  TAG: ftp_user\n#\tIf you want the anonymous login password to be more informative\n#\t(and enable the use of picky FTP servers), set this to something\n#\treasonable for your domain, like wwwuser@somewhere.net\n#\n#\tThe reason why this is domainless by default is the\n#\trequest can be made on the behalf of a user in any domain,\n#\tdepending on how the cache is used.\n#\tSome FTP server also validate the email address is valid\n#\t(for example perl.com).\n#Default:\n# ftp_user Squid@\n\n#  TAG: ftp_passive\n#\tIf your firewall does not allow Squid to use passive\n#\tconnections, turn off this option.\n#\n#\tUse of ftp_epsv_all option requires this to be ON.\n#Default:\n# ftp_passive on\n\n#  TAG: ftp_epsv_all\n#\tFTP Protocol extensions permit the use of a special \"EPSV ALL\" command.\n#\n#\tNATs may be able to put the connection on a \"fast path\" through the\n#\ttranslator, as the EPRT command will never be used and therefore,\n#\ttranslation of the data portion of the segments will never be needed.\n#\n#\tWhen a client only expects to do two-way FTP transfers this may be\n#\tuseful.\n#\tIf squid finds that it must do a three-way FTP transfer after issuing\n#\tan EPSV ALL command, the FTP session will fail.\n#\n#\tIf you have any doubts about this option do not use it.\n#\tSquid will nicely attempt all other connection methods.\n#\n#\tRequires ftp_passive to be ON (default) for any effect.\n#Default:\n# ftp_epsv_all off\n\n#  TAG: ftp_epsv\n#\tFTP Protocol extensions permit the use of a special \"EPSV\" command.\n#\n#\tNATs may be able to put the connection on a \"fast path\" through the\n#\ttranslator using EPSV, as the EPRT command will never be used\n#\tand therefore, translation of the data portion of the segments \n#\twill never be needed.\n#\n#\tEPSV is often required to interoperate with FTP servers on IPv6\n#\tnetworks. On the other hand, it may break some IPv4 servers.\n#\n#\tBy default, EPSV may try EPSV with any FTP server. To fine tune\n#\tthat decision, you may restrict EPSV to certain clients or servers\n#\tusing ACLs:\n#\n#\t\tftp_epsv allow|deny al1 acl2 ...\n#\n#\tWARNING: Disabling EPSV may cause problems with external NAT and IPv6.\n#\n#\tOnly fast ACLs are supported.\n#\tRequires ftp_passive to be ON (default) for any effect.\n#Default:\n# none\n\n#  TAG: ftp_eprt\n#\tFTP Protocol extensions permit the use of a special \"EPRT\" command.\n#\n#\tThis extension provides a protocol neutral alternative to the\n#\tIPv4-only PORT command. When supported it enables active FTP data\n#\tchannels over IPv6 and efficient NAT handling.\n#\n#\tTurning this OFF will prevent EPRT being attempted and will skip\n#\tstraight to using PORT for IPv4 servers.\n#\n#\tSome devices are known to not handle this extension correctly and\n#\tmay result in crashes. Devices which suport EPRT enough to fail\n#\tcleanly will result in Squid attempting PORT anyway. This directive\n#\tshould only be disabled when EPRT results in device failures.\n#\n#\tWARNING: Doing so will convert Squid back to the old behavior with all\n#\tthe related problems with external NAT devices/layers and IPv4-only FTP.\n#Default:\n# ftp_eprt on\n\n#  TAG: ftp_sanitycheck\n#\tFor security and data integrity reasons Squid by default performs\n#\tsanity checks of the addresses of FTP data connections ensure the\n#\tdata connection is to the requested server. If you need to allow\n#\tFTP connections to servers using another IP address for the data\n#\tconnection turn this off.\n#Default:\n# ftp_sanitycheck on\n\n#  TAG: ftp_telnet_protocol\n#\tThe FTP protocol is officially defined to use the telnet protocol\n#\tas transport channel for the control connection. However, many\n#\timplementations are broken and does not respect this aspect of\n#\tthe FTP protocol.\n#\n#\tIf you have trouble accessing files with ASCII code 255 in the\n#\tpath or similar problems involving this ASCII code you can\n#\ttry setting this directive to off. If that helps, report to the\n#\toperator of the FTP server in question that their FTP server\n#\tis broken and does not follow the FTP standard.\n#Default:\n# ftp_telnet_protocol on\n\n# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS\n# -----------------------------------------------------------------------------\n\n#  TAG: diskd_program\n#\tSpecify the location of the diskd executable.\n#\tNote this is only useful if you have compiled in\n#\tdiskd as one of the store io modules.\n#Default:\n# diskd_program /opt/local/libexec/squid/diskd\n\n#  TAG: unlinkd_program\n#\tSpecify the location of the executable for file deletion process.\n#Default:\n# unlinkd_program /opt/local/libexec/squid/unlinkd\n\n#  TAG: pinger_program\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-icmp\n#\n#\tSpecify the location of the executable for the pinger process.\n#Default:\n# pinger_program /opt/local/libexec/squid/pinger\n\n#  TAG: pinger_enable\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-icmp\n#\n#\tControl whether the pinger is active at run-time.\n#\tEnables turning ICMP pinger on and off with a simple\n#\tsquid -k reconfigure.\n#Default:\n# pinger_enable on\n\n# OPTIONS FOR URL REWRITING\n# -----------------------------------------------------------------------------\n\n#  TAG: url_rewrite_program\n#\tSpecify the location of the executable URL rewriter to use.\n#\tSince they can perform almost any function there isn't one included.\n#\n#\tFor each requested URL, the rewriter will receive on line with the format\n#\n#\t  [channel-ID <SP>] URL [<SP> extras]<NL>\n#\n#\tSee url_rewrite_extras on how to send \"extras\" with optional values to\n#\tthe helper.\n#\tAfter processing the request the helper must reply using the following format:\n#\n#\t  [channel-ID <SP>] result [<SP> kv-pairs]\n#\n#\tThe result code can be:\n#\n#\t  OK status=30N url=\"...\"\n#\t\tRedirect the URL to the one supplied in 'url='.\n#\t\t'status=' is optional and contains the status code to send\n#\t\tthe client in Squids HTTP response. It must be one of the\n#\t\tHTTP redirect status codes: 301, 302, 303, 307, 308.\n#\t\tWhen no status is given Squid will use 302.\n#\n#\t  OK rewrite-url=\"...\"\n#\t\tRewrite the URL to the one supplied in 'rewrite-url='.\n#\t\tThe new URL is fetched directly by Squid and returned to\n#\t\tthe client as the response to its request.\n#\n#\t  OK\n#\t\tWhen neither of url= and rewrite-url= are sent Squid does\n#\t\tnot change the URL.\n#\n#\t  ERR\n#\t\tDo not change the URL.\n#\n#\t  BH\n#\t\tAn internal error occurred in the helper, preventing\n#\t\ta result being identified. The 'message=' key name is\n#\t\treserved for delivering a log message.\n#\n#\n#\tIn addition to the above kv-pairs Squid also understands the following\n#\toptional kv-pairs received from URL rewriters:\n#\t  clt_conn_tag=TAG\n#\t\tAssociates a TAG with the client TCP connection.\n#\t\tThe TAG is treated as a regular annotation but persists across\n#\t\tfuture requests on the client connection rather than just the\n#\t\tcurrent request. A helper may update the TAG during subsequent\n#\t\trequests be returning a new kv-pair.\n#\n#\tWhen using the concurrency= option the protocol is changed by\n#\tintroducing a query channel tag in front of the request/response.\n#\tThe query channel tag is a number between 0 and concurrency-1.\n#\tThis value must be echoed back unchanged to Squid as the first part\n#\tof the response relating to its request.\n#\n#\tWARNING: URL re-writing ability should be avoided whenever possible.\n#\t\t Use the URL redirect form of response instead.\n#\n#\tRe-write creates a difference in the state held by the client\n#\tand server. Possibly causing confusion when the server response\n#\tcontains snippets of its view state. Embeded URLs, response\n#\tand content Location headers, etc. are not re-written by this\n#\tinterface.\n#\n#\tBy default, a URL rewriter is not used.\n#Default:\n# none\n\n#  TAG: url_rewrite_children\n#\tSpecifies the maximum number of redirector processes that Squid may\n#\tspawn (numberofchildren) and several related options. Using too few of\n#\tthese helper processes (a.k.a. \"helpers\") creates request queues.\n#\tUsing too many helpers wastes your system resources.\n#\n#\tUsage: numberofchildren [option]...\n#\n#\tThe startup= and idle= options allow some measure of skew in your\n#\ttuning.\n#\t\n#\t\tstartup=\n#\t\n#\tSets a minimum of how many processes are to be spawned when Squid\n#\tstarts or reconfigures. When set to zero the first request will\n#\tcause spawning of the first child process to handle it.\n#\t\n#\tStarting too few will cause an initial slowdown in traffic as Squid\n#\tattempts to simultaneously spawn enough processes to cope.\n#\t\n#\t\tidle=\n#\t\n#\tSets a minimum of how many processes Squid is to try and keep available\n#\tat all times. When traffic begins to rise above what the existing\n#\tprocesses can handle this many more will be spawned up to the maximum\n#\tconfigured. A minimum setting of 1 is required.\n#\n#\t\tconcurrency=\n#\n#\tThe number of requests each redirector helper can handle in\n#\tparallel. Defaults to 0 which indicates the redirector\n#\tis a old-style single threaded redirector.\n#\n#\tWhen this directive is set to a value >= 1 then the protocol\n#\tused to communicate with the helper is modified to include\n#\tan ID in front of the request/response. The ID from the request\n#\tmust be echoed back with the response to that request.\n#\n#\t\tqueue-size=N\n#\n#\tSets the maximum number of queued requests. A request is queued when\n#\tno existing child can accept it due to concurrency limit and no new\n#\tchild can be started due to numberofchildren limit. The default\n#\tmaximum is zero if url_rewrite_bypass is enabled and\n#\t2*numberofchildren otherwise. If the queued requests exceed queue size\n#\tand redirector_bypass configuration option is set, then redirector is\n#\tbypassed. Otherwise, Squid is allowed to temporarily exceed the\n#\tconfigured maximum, marking the affected helper as \"overloaded\". If\n#\tthe helper overload lasts more than 3 minutes, the action prescribed\n#\tby the on-persistent-overload option applies.\n#\n#\t\ton-persistent-overload=action\n#\n#\tSpecifies Squid reaction to a new helper request arriving when the helper\n#\thas been overloaded for more that 3 minutes already. The number of queued\n#\trequests determines whether the helper is overloaded (see the queue-size\n#\toption).\n#\n#\tTwo actions are supported:\n#\n#\t  die\tSquid worker quits. This is the default behavior.\n#\n#\t  ERR\tSquid treats the helper request as if it was\n#\t\timmediately submitted, and the helper immediately\n#\t\treplied with an ERR response. This action has no effect\n#\t\ton the already queued and in-progress helper requests.\n#Default:\n# url_rewrite_children 20 startup=0 idle=1 concurrency=0\n\n#  TAG: url_rewrite_host_header\n#\tTo preserve same-origin security policies in browsers and\n#\tprevent Host: header forgery by redirectors Squid rewrites\n#\tany Host: header in redirected requests.\n#\t\n#\tIf you are running an accelerator this may not be a wanted\n#\teffect of a redirector. This directive enables you disable\n#\tHost: alteration in reverse-proxy traffic.\n#\t\n#\tWARNING: Entries are cached on the result of the URL rewriting\n#\tprocess, so be careful if you have domain-virtual hosts.\n#\t\n#\tWARNING: Squid and other software verifies the URL and Host\n#\tare matching, so be careful not to relay through other proxies\n#\tor inspecting firewalls with this disabled.\n#Default:\n# url_rewrite_host_header on\n\n#  TAG: url_rewrite_access\n#\tIf defined, this access list specifies which requests are\n#\tsent to the redirector processes.\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Allow, unless rules exist in squid.conf.\n\n#  TAG: url_rewrite_bypass\n#\tWhen this is 'on', a request will not go through the\n#\tredirector if all the helpers are busy. If this is 'off' and the\n#\tredirector queue grows too large, the action is prescribed by the\n#\ton-persistent-overload option. You should only enable this if the\n#\tredirectors are not critical to your caching system. If you use\n#\tredirectors for access control, and you enable this option,\n#\tusers may have access to pages they should not\n#\tbe allowed to request.\n#\n#\tEnabling this option sets the default url_rewrite_children queue-size\n#\toption value to 0.\n#Default:\n# url_rewrite_bypass off\n\n#  TAG: url_rewrite_extras\n#\tSpecifies a string to be append to request line format for the\n#\trewriter helper. \"Quoted\" format values may contain spaces and\n#\tlogformat %macros. In theory, any logformat %macro can be used.\n#\tIn practice, a %macro expands as a dash (-) if the helper request is\n#\tsent before the required macro information is available to Squid.\n#Default:\n# url_rewrite_extras \"%>a/%>A %un %>rm myip=%la myport=%lp\"\n\n#  TAG: url_rewrite_timeout\n#\tSquid times active requests to redirector. The timeout value and Squid\n#\treaction to a timed out request are configurable using the following\n#\tformat:\n#\n#\turl_rewrite_timeout timeout time-units on_timeout=<action> [response=<quoted-response>]\n#\n#\tsupported timeout actions:\n#\t\tfail\tSquid return a ERR_GATEWAY_FAILURE error page\n#\n#\t\tbypass\tDo not re-write the URL\n#\n#\t\tretry\tSend the lookup to the helper again\n#\n#\t\tuse_configured_response\n#\t\t\tUse the <quoted-response> as helper response\n#Default:\n# Squid waits for the helper response forever\n\n# OPTIONS FOR STORE ID\n# -----------------------------------------------------------------------------\n\n#  TAG: store_id_program\n#\tSpecify the location of the executable StoreID helper to use.\n#\tSince they can perform almost any function there isn't one included.\n#\n#\tFor each requested URL, the helper will receive one line with the format\n#\n#\t  [channel-ID <SP>] URL [<SP> extras]<NL>\n#\n#\n#\tAfter processing the request the helper must reply using the following format:\n#\n#\t  [channel-ID <SP>] result [<SP> kv-pairs]\n#\n#\tThe result code can be:\n#\n#\t  OK store-id=\"...\"\n#\t\tUse the StoreID supplied in 'store-id='.\n#\n#\t  ERR\n#\t\tThe default is to use HTTP request URL as the store ID.\n#\n#\t  BH\n#\t\tAn internal error occurred in the helper, preventing\n#\t\ta result being identified.\n#\n#\tIn addition to the above kv-pairs Squid also understands the following\n#\toptional kv-pairs received from URL rewriters:\n#\t  clt_conn_tag=TAG\n#\t\tAssociates a TAG with the client TCP connection.\n#\t\tPlease see url_rewrite_program related documentation for this\n#\t\tkv-pair\n#\n#\tHelper programs should be prepared to receive and possibly ignore\n#\tadditional whitespace-separated tokens on each input line.\n#\n#\tWhen using the concurrency= option the protocol is changed by\n#\tintroducing a query channel tag in front of the request/response.\n#\tThe query channel tag is a number between 0 and concurrency-1.\n#\tThis value must be echoed back unchanged to Squid as the first part\n#\tof the response relating to its request.\n#\n#\tNOTE: when using StoreID refresh_pattern will apply to the StoreID\n#\t      returned from the helper and not the URL.\n#\n#\tWARNING: Wrong StoreID value returned by a careless helper may result\n#\t         in the wrong cached response returned to the user.\n#\n#\tBy default, a StoreID helper is not used.\n#Default:\n# none\n\n#  TAG: store_id_extras\n#        Specifies a string to be append to request line format for the\n#        StoreId helper. \"Quoted\" format values may contain spaces and\n#        logformat %macros. In theory, any logformat %macro can be used.\n#        In practice, a %macro expands as a dash (-) if the helper request is\n#        sent before the required macro information is available to Squid.\n#Default:\n# store_id_extras \"%>a/%>A %un %>rm myip=%la myport=%lp\"\n\n#  TAG: store_id_children\n#\tSpecifies the maximum number of StoreID helper processes that Squid\n#\tmay spawn (numberofchildren) and several related options. Using\n#\ttoo few of these helper processes (a.k.a. \"helpers\") creates request\n#\tqueues. Using too many helpers wastes your system resources.\n#\n#\tUsage: numberofchildren [option]...\n#\t\n#\tThe startup= and idle= options allow some measure of skew in your\n#\ttuning.\n#\t\n#\t\tstartup=\n#\t\n#\tSets a minimum of how many processes are to be spawned when Squid\n#\tstarts or reconfigures. When set to zero the first request will\n#\tcause spawning of the first child process to handle it.\n#\t\n#\tStarting too few will cause an initial slowdown in traffic as Squid\n#\tattempts to simultaneously spawn enough processes to cope.\n#\t\n#\t\tidle=\n#\t\n#\tSets a minimum of how many processes Squid is to try and keep available\n#\tat all times. When traffic begins to rise above what the existing\n#\tprocesses can handle this many more will be spawned up to the maximum\n#\tconfigured. A minimum setting of 1 is required.\n#\n#\t\tconcurrency=\n#\n#\tThe number of requests each storeID helper can handle in\n#\tparallel. Defaults to 0 which indicates the helper\n#\tis a old-style single threaded program.\n#\n#\tWhen this directive is set to a value >= 1 then the protocol\n#\tused to communicate with the helper is modified to include\n#\tan ID in front of the request/response. The ID from the request\n#\tmust be echoed back with the response to that request.\n#\n#\t\tqueue-size=N\n#\n#\tSets the maximum number of queued requests to N. A request is queued\n#\twhen no existing child can accept it due to concurrency limit and no\n#\tnew child can be started due to numberofchildren limit. The default\n#\tmaximum is 2*numberofchildren. If the queued requests exceed queue\n#\tsize and redirector_bypass configuration option is set, then\n#\tredirector is bypassed. Otherwise, Squid is allowed to temporarily\n#\texceed the configured maximum, marking the affected helper as\n#\t\"overloaded\". If the helper overload lasts more than 3 minutes, the\n#\taction prescribed by the on-persistent-overload option applies.\n#\n#\t\ton-persistent-overload=action\n#\n#\tSpecifies Squid reaction to a new helper request arriving when the helper\n#\thas been overloaded for more that 3 minutes already. The number of queued\n#\trequests determines whether the helper is overloaded (see the queue-size\n#\toption).\n#\n#\tTwo actions are supported:\n#\n#\t  die\tSquid worker quits. This is the default behavior.\n#\n#\t  ERR\tSquid treats the helper request as if it was\n#\t\timmediately submitted, and the helper immediately\n#\t\treplied with an ERR response. This action has no effect\n#\t\ton the already queued and in-progress helper requests.\n#Default:\n# store_id_children 20 startup=0 idle=1 concurrency=0\n\n#  TAG: store_id_access\n#\tIf defined, this access list specifies which requests are\n#\tsent to the StoreID processes.  By default all requests\n#\tare sent.\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Allow, unless rules exist in squid.conf.\n\n#  TAG: store_id_bypass\n#\tWhen this is 'on', a request will not go through the\n#\thelper if all helpers are busy. If this is 'off' and the helper\n#\tqueue grows too large, the action is prescribed by the\n#\ton-persistent-overload option. You should only enable this if the\n#\thelpers are not critical to your caching system. If you use\n#\thelpers for critical caching components, and you enable this \n#\toption,\tusers may not get objects from cache.\n#\tThis options sets default queue-size option of the store_id_children\n#\tto 0.\n#Default:\n# store_id_bypass on\n\n# OPTIONS FOR TUNING THE CACHE\n# -----------------------------------------------------------------------------\n\n#  TAG: cache\n#\tRequests denied by this directive will not be served from the cache\n#\tand their responses will not be stored in the cache. This directive\n#\thas no effect on other transactions and on already cached responses.\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#\tThis and the two other similar caching directives listed below are\n#\tchecked at different transaction processing stages, have different\n#\taccess to response information, affect different cache operations,\n#\tand differ in slow ACLs support:\n#\n#\t* cache: Checked before Squid makes a hit/miss determination.\n#\t\tNo access to reply information!\n#\t\tDenies both serving a hit and storing a miss.\n#\t\tSupports both fast and slow ACLs.\n#\t* send_hit: Checked after a hit was detected.\n#\t\tHas access to reply (hit) information.\n#\t\tDenies serving a hit only.\n#\t\tSupports fast ACLs only.\n#\t* store_miss: Checked before storing a cachable miss.\n#\t\tHas access to reply (miss) information.\n#\t\tDenies storing a miss only.\n#\t\tSupports fast ACLs only.\n#\n#\tIf you are not sure which of the three directives to use, apply the\n#\tfollowing decision logic:\n#\n#\t* If your ACL(s) are of slow type _and_ need response info, redesign.\n#\t  Squid does not support that particular combination at this time.\n#        Otherwise:\n#\t* If your directive ACL(s) are of slow type, use \"cache\"; and/or\n#\t* if your directive ACL(s) need no response info, use \"cache\".\n#        Otherwise:\n#\t* If you do not want the response cached, use store_miss; and/or\n#\t* if you do not want a hit on a cached response, use send_hit.\n#Default:\n# By default, this directive is unused and has no effect.\n\n# I2P\n# cache deny i2p\n\n#  TAG: send_hit\n#\tResponses denied by this directive will not be served from the cache\n#\t(but may still be cached, see store_miss). This directive has no\n#\teffect on the responses it allows and on the cached objects.\n#\n#\tPlease see the \"cache\" directive for a summary of differences among\n#\tstore_miss, send_hit, and cache directives.\n#\n#\tUnlike the \"cache\" directive, send_hit only supports fast acl\n#\ttypes.  See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#\tFor example:\n#\n#\t\t# apply custom Store ID mapping to some URLs\n#\t\tacl MapMe dstdomain .c.example.com\n#\t\tstore_id_program ...\n#\t\tstore_id_access allow MapMe\n#\n#\t\t# but prevent caching of special responses\n#\t\t# such as 302 redirects that cause StoreID loops\n#\t\tacl Ordinary http_status 200-299\n#\t\tstore_miss deny MapMe !Ordinary\n#\n#\t\t# and do not serve any previously stored special responses\n#\t\t# from the cache (in case they were already cached before\n#\t\t# the above store_miss rule was in effect).\n#\t\tsend_hit deny MapMe !Ordinary\n#Default:\n# By default, this directive is unused and has no effect.\n\n#  TAG: store_miss\n#\tResponses denied by this directive will not be cached (but may still\n#\tbe served from the cache, see send_hit). This directive has no\n#\teffect on the responses it allows and on the already cached responses.\n#\n#\tPlease see the \"cache\" directive for a summary of differences among\n#\tstore_miss, send_hit, and cache directives. See the\n#\tsend_hit directive for a usage example.\n#\n#\tUnlike the \"cache\" directive, store_miss only supports fast acl\n#\ttypes.  See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# By default, this directive is unused and has no effect.\n\n#  TAG: max_stale\ttime-units\n#\tThis option puts an upper limit on how stale content Squid\n#\twill serve from the cache if cache validation fails.\n#\tCan be overriden by the refresh_pattern max-stale option.\n#Default:\n# max_stale 1 week\n\n#  TAG: refresh_pattern\n#\tusage: refresh_pattern [-i] regex min percent max [options]\n#\n#\tBy default, regular expressions are CASE-SENSITIVE.  To make\n#\tthem case-insensitive, use the -i option.\n#\n#\t'Min' is the time (in minutes) an object without an explicit\n#\texpiry time should be considered fresh. The recommended\n#\tvalue is 0, any higher values may cause dynamic applications\n#\tto be erroneously cached unless the application designer\n#\thas taken the appropriate actions.\n#\n#\t'Percent' is a percentage of the objects age (time since last\n#\tmodification age) an object without explicit expiry time\n#\twill be considered fresh.\n#\n#\t'Max' is an upper limit on how long objects without an explicit\n#\texpiry time will be considered fresh. The value is also used\n#\tto form Cache-Control: max-age header for a request sent from\n#\tSquid to origin/parent.\n#\n#\toptions: override-expire\n#\t\t override-lastmod\n#\t\t reload-into-ims\n#\t\t ignore-reload\n#\t\t ignore-no-store\n#\t\t ignore-private\n#\t\t max-stale=NN\n#\t\t refresh-ims\n#\t\t store-stale\n#\n#\t\toverride-expire enforces min age even if the server\n#\t\tsent an explicit expiry time (e.g., with the\n#\t\tExpires: header or Cache-Control: max-age). Doing this\n#\t\tVIOLATES the HTTP standard.  Enabling this feature\n#\t\tcould make you liable for problems which it causes.\n#\n#\t\tNote: override-expire does not enforce staleness - it only extends\n#\t\tfreshness / min. If the server returns a Expires time which\n#\t\tis longer than your max time, Squid will still consider\n#\t\tthe object fresh for that period of time.\n#\n#\t\toverride-lastmod enforces min age even on objects\n#\t\tthat were modified recently.\n#\n#\t\treload-into-ims changes a client no-cache or ``reload''\n#\t\trequest for a cached entry into a conditional request using\n#\t\tIf-Modified-Since and/or If-None-Match headers, provided the\n#\t\tcached entry has a Last-Modified and/or a strong ETag header.\n#\t\tDoing this VIOLATES the HTTP standard. Enabling this feature\n#\t\tcould make you liable for problems which it causes.\n#\n#\t\tignore-reload ignores a client no-cache or ``reload''\n#\t\theader. Doing this VIOLATES the HTTP standard. Enabling\n#\t\tthis feature could make you liable for problems which\n#\t\tit causes.\n#\n#\t\tignore-no-store ignores any ``Cache-control: no-store''\n#\t\theaders received from a server. Doing this VIOLATES\n#\t\tthe HTTP standard. Enabling this feature could make you\n#\t\tliable for problems which it causes.\n#\n#\t\tignore-private ignores any ``Cache-control: private''\n#\t\theaders received from a server. Doing this VIOLATES\n#\t\tthe HTTP standard. Enabling this feature could make you\n#\t\tliable for problems which it causes.\n#\n#\t\trefresh-ims causes squid to contact the origin server\n#\t\twhen a client issues an If-Modified-Since request. This\n#\t\tensures that the client will receive an updated version\n#\t\tif one is available.\n#\n#\t\tstore-stale stores responses even if they don't have explicit \n#\t\tfreshness or a validator (i.e., Last-Modified or an ETag) \n#\t\tpresent, or if they're already stale. By default, Squid will \n#\t\tnot cache such responses because they usually can't be\n#\t\treused. Note that such responses will be stale by default.\n#\n#\t\tmax-stale=NN provide a maximum staleness factor. Squid won't\n#\t\tserve objects more stale than this even if it failed to\n#\t\tvalidate the object. Default: use the max_stale global limit.\n#\n#\tBasically a cached object is:\n#\n#\t\tFRESH if expire > now, else STALE\n#\t\tSTALE if age > max\n#\t\tFRESH if lm-factor < percent, else STALE\n#\t\tFRESH if age < min\n#\t\telse STALE\n#\n#\tThe refresh_pattern lines are checked in the order listed here.\n#\tThe first entry which matches is used.  If none of the entries\n#\tmatch the default will be used.\n#\n#\tNote, you must uncomment all the default lines if you want\n#\tto change one. The default setting is only active if none is\n#\tused.\n#\n#\n\n#\n# Add any of your own refresh_pattern entries above these.\n#\nrefresh_pattern ^ftp:\t\t1440\t20%\t10080\nrefresh_pattern ^gopher:\t1440\t0%\t1440\nrefresh_pattern -i (/cgi-bin/|\\?) 0\t0%\t0\n#refresh_pattern .\t\t0\t20%\t4320\n\n# https://www.linux.com/news/speed-your-internet-access-using-squids-refresh-patterns\nrefresh_pattern -i \\.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private\nrefresh_pattern -i \\.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no-cache ignore-no-store ignore-private\nrefresh_pattern -i \\.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private\nrefresh_pattern -i \\.index.(html|htm)$ 0 40% 10080\nrefresh_pattern -i \\.(html|htm|css|js)$ 1440 40% 40320\nrefresh_pattern . 0 40% 40320\n\n#  TAG: quick_abort_min\t(KB)\n#Default:\n# quick_abort_min 16 KB\nquick_abort_min 0 KB\n\n#  TAG: quick_abort_max\t(KB)\n#Default:\n# quick_abort_max 16 KB\nquick_abort_max 0 KB\n\n#  TAG: quick_abort_pct\t(percent)\n#\tThe cache by default continues downloading aborted requests\n#\twhich are almost completed (less than 16 KB remaining). This\n#\tmay be undesirable on slow (e.g. SLIP) links and/or very busy\n#\tcaches.  Impatient users may tie up file descriptors and\n#\tbandwidth by repeatedly requesting and immediately aborting\n#\tdownloads.\n#\n#\tWhen the user aborts a request, Squid will check the\n#\tquick_abort values to the amount of data transferred until\n#\tthen.\n#\n#\tIf the transfer has less than 'quick_abort_min' KB remaining,\n#\tit will finish the retrieval.\n#\n#\tIf the transfer has more than 'quick_abort_max' KB remaining,\n#\tit will abort the retrieval.\n#\n#\tIf more than 'quick_abort_pct' of the transfer has completed,\n#\tit will finish the retrieval.\n#\n#\tIf you do not want any retrieval to continue after the client\n#\thas aborted, set both 'quick_abort_min' and 'quick_abort_max'\n#\tto '0 KB'.\n#\n#\tIf you want retrievals to always continue if they are being\n#\tcached set 'quick_abort_min' to '-1 KB'.\n#Default:\n# quick_abort_pct 95\n\n#  TAG: read_ahead_gap\tbuffer-size\n#\tThe amount of data the cache will buffer ahead of what has been\n#\tsent to the client when retrieving an object from another server.\n#Default:\n# read_ahead_gap 16 KB\n\n#  TAG: negative_ttl\ttime-units\n#\tSet the Default Time-to-Live (TTL) for failed requests.\n#\tCertain types of failures (such as \"connection refused\" and\n#\t\"404 Not Found\") are able to be negatively-cached for a short time.\n#\tModern web servers should provide Expires: header, however if they\n#\tdo not this can provide a minimum TTL.\n#\tThe default is not to cache errors with unknown expiry details.\n#\n#\tNote that this is different from negative caching of DNS lookups.\n#\n#\tWARNING: Doing this VIOLATES the HTTP standard.  Enabling\n#\tthis feature could make you liable for problems which it\n#\tcauses.\n#Default:\n# negative_ttl 0 seconds\n\n#  TAG: positive_dns_ttl\ttime-units\n#\tUpper limit on how long Squid will cache positive DNS responses.\n#\tDefault is 6 hours (360 minutes). This directive must be set\n#\tlarger than negative_dns_ttl.\n#Default:\n# positive_dns_ttl 6 hours\n\n#  TAG: negative_dns_ttl\ttime-units\n#\tTime-to-Live (TTL) for negative caching of failed DNS lookups.\n#\tThis also sets the lower cache limit on positive lookups.\n#\tMinimum value is 1 second, and it is not recommendable to go\n#\tmuch below 10 seconds.\n#Default:\n# negative_dns_ttl 1 minutes\n\n#  TAG: range_offset_limit\tsize [acl acl...]\n#\tusage: (size) [units] [[!]aclname]\n#\t\n#\tSets an upper limit on how far (number of bytes) into the file \n#\ta Range request\tmay be to cause Squid to prefetch the whole file. \n#\tIf beyond this limit, Squid forwards the Range request as it is and \n#\tthe result is NOT cached.\n#\t\n#\tThis is to stop a far ahead range request (lets say start at 17MB)\n#\tfrom making Squid fetch the whole object up to that point before\n#\tsending anything to the client.\n#\t\n#\tMultiple range_offset_limit lines may be specified, and they will \n#\tbe searched from top to bottom on each request until a match is found. \n#\tThe first match found will be used.  If no line matches a request, the \n#\tdefault limit of 0 bytes will be used.\n#\t\n#\t'size' is the limit specified as a number of units.\n#\t\n#\t'units' specifies whether to use bytes, KB, MB, etc.\n#\tIf no units are specified bytes are assumed.\n#\t\n#\tA size of 0 causes Squid to never fetch more than the\n#\tclient requested. (default)\n#\t\n#\tA size of 'none' causes Squid to always fetch the object from the\n#\tbeginning so it may cache the result. (2.0 style)\n#\t\n#\t'aclname' is the name of a defined ACL.\n#\t\n#\tNP: Using 'none' as the byte value here will override any quick_abort settings \n#\t    that may otherwise apply to the range request. The range request will\n#\t    be fully fetched from start to finish regardless of the client\n#\t    actions. This affects bandwidth usage.\n#Default:\n# none\n\n#  TAG: minimum_expiry_time\t(seconds)\n#\tThe minimum caching time according to (Expires - Date)\n#\theaders Squid honors if the object can't be revalidated.\n#\tThe default is 60 seconds.\n#\n#\tIn reverse proxy environments it might be desirable to honor\n#\tshorter object lifetimes. It is most likely better to make\n#\tyour server return a meaningful Last-Modified header however.\n#\n#\tIn ESI environments where page fragments often have short\n#\tlifetimes, this will often be best set to 0.\n#Default:\n# minimum_expiry_time 60 seconds\n\n#  TAG: store_avg_object_size\t(bytes)\n#\tAverage object size, used to estimate number of objects your\n#\tcache can hold.  The default is 13 KB.\n#\n#\tThis is used to pre-seed the cache index memory allocation to\n#\treduce expensive reallocate operations while handling clients\n#\ttraffic. Too-large values may result in memory allocation during\n#\tpeak traffic, too-small values will result in wasted memory.\n#\n#\tCheck the cache manager 'info' report metrics for the real\n#\tobject sizes seen by your Squid before tuning this.\n#Default:\n# store_avg_object_size 13 KB\n\n#  TAG: store_objects_per_bucket\n#\tTarget number of objects per bucket in the store hash table.\n#\tLowering this value increases the total number of buckets and\n#\talso the storage maintenance rate.  The default is 20.\n#Default:\n# store_objects_per_bucket 20\n\n# HTTP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: request_header_max_size\t(KB)\n#\tThis specifies the maximum size for HTTP headers in a request.\n#\tRequest headers are usually relatively small (about 512 bytes).\n#\tPlacing a limit on the request header size will catch certain\n#\tbugs (for example with persistent connections) and possibly\n#\tbuffer-overflow or denial-of-service attacks.\n#Default:\n# request_header_max_size 64 KB\n\n#  TAG: reply_header_max_size\t(KB)\n#\tThis specifies the maximum size for HTTP headers in a reply.\n#\tReply headers are usually relatively small (about 512 bytes).\n#\tPlacing a limit on the reply header size will catch certain\n#\tbugs (for example with persistent connections) and possibly\n#\tbuffer-overflow or denial-of-service attacks.\n#Default:\n# reply_header_max_size 64 KB\n\n#  TAG: request_body_max_size\t(bytes)\n#\tThis specifies the maximum size for an HTTP request body.\n#\tIn other words, the maximum size of a PUT/POST request.\n#\tA user who attempts to send a request with a body larger\n#\tthan this limit receives an \"Invalid Request\" error message.\n#\tIf you set this parameter to a zero (the default), there will\n#\tbe no limit imposed.\n#\n#\tSee also client_request_buffer_max_size for an alternative\n#\tlimitation on client uploads which can be configured.\n#Default:\n# No limit.\n\n#  TAG: client_request_buffer_max_size\t(bytes)\n#\tThis specifies the maximum buffer size of a client request.\n#\tIt prevents squid eating too much memory when somebody uploads\n#\ta large file.\n#Default:\n# client_request_buffer_max_size 512 KB\n\n#  TAG: broken_posts\n#\tA list of ACL elements which, if matched, causes Squid to send\n#\tan extra CRLF pair after the body of a PUT/POST request.\n#\n#\tSome HTTP servers has broken implementations of PUT/POST,\n#\tand rely on an extra CRLF pair sent by some WWW clients.\n#\n#\tQuote from RFC2616 section 4.1 on this matter:\n#\n#\t  Note: certain buggy HTTP/1.0 client implementations generate an\n#\t  extra CRLF's after a POST request. To restate what is explicitly\n#\t  forbidden by the BNF, an HTTP/1.1 client must not preface or follow\n#\t  a request with an extra CRLF.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#Example:\n# acl buggy_server url_regex ^http://....\n# broken_posts allow buggy_server\n#Default:\n# Obey RFC 2616.\n\n#  TAG: adaptation_uses_indirect_client\ton|off\n#\tControls whether the indirect client IP address (instead of the direct\n#\tclient IP address) is passed to adaptation services.\n#\n#\tSee also: follow_x_forwarded_for adaptation_send_client_ip\n#Default:\n# adaptation_uses_indirect_client on\n\n#  TAG: via\ton|off\n#\tIf set (default), Squid will include a Via header in requests and\n#\treplies as required by RFC2616.\n#Default:\n# via on\nvia off\n\n#  TAG: vary_ignore_expire\ton|off\n#\tMany HTTP servers supporting Vary gives such objects\n#\timmediate expiry time with no cache-control header\n#\twhen requested by a HTTP/1.0 client. This option\n#\tenables Squid to ignore such expiry times until\n#\tHTTP/1.1 is fully implemented.\n#\n#\tWARNING: If turned on this may eventually cause some\n#\tvarying objects not intended for caching to get cached.\n#Default:\n# vary_ignore_expire off\n\n#  TAG: request_entities\n#\tSquid defaults to deny GET and HEAD requests with request entities,\n#\tas the meaning of such requests are undefined in the HTTP standard\n#\teven if not explicitly forbidden.\n#\n#\tSet this directive to on if you have clients which insists\n#\ton sending request entities in GET or HEAD requests. But be warned\n#\tthat there is server software (both proxies and web servers) which\n#\tcan fail to properly process this kind of request which may make you\n#\tvulnerable to cache pollution attacks if enabled.\n#Default:\n# request_entities off\n\n#  TAG: request_header_access\n#\tUsage: request_header_access header_name allow|deny [!]aclname ...\n#\n#\tWARNING: Doing this VIOLATES the HTTP standard.  Enabling\n#\tthis feature could make you liable for problems which it\n#\tcauses.\n#\n#\tThis option replaces the old 'anonymize_headers' and the\n#\tolder 'http_anonymizer' option with something that is much\n#\tmore configurable. A list of ACLs for each header name allows\n#\tremoval of specific header fields under specific conditions.\n#\n#\tThis option only applies to outgoing HTTP request headers (i.e.,\n#\theaders sent by Squid to the next HTTP hop such as a cache peer\n#\tor an origin server). The option has no effect during cache hit\n#\tdetection. The equivalent adaptation vectoring point in ICAP\n#\tterminology is post-cache REQMOD.\n#\n#\tThe option is applied to individual outgoing request header\n#\tfields. For each request header field F, Squid uses the first\n#\tqualifying sets of request_header_access rules:\n#\n#\t    1. Rules with header_name equal to F's name.\n#\t    2. Rules with header_name 'Other', provided F's name is not\n#\t       on the hard-coded list of commonly used HTTP header names.\n#\t    3. Rules with header_name 'All'.\n#\n#\tWithin that qualifying rule set, rule ACLs are checked as usual.\n#\tIf ACLs of an \"allow\" rule match, the header field is allowed to\n#\tgo through as is. If ACLs of a \"deny\" rule match, the header is\n#\tremoved and request_header_replace is then checked to identify\n#\tif the removed header has a replacement. If no rules within the\n#\tset have matching ACLs, the header field is left as is.\n#\n#\tFor example, to achieve the same behavior as the old\n#\t'http_anonymizer standard' option, you should use:\n#\n#\t\trequest_header_access From deny all\n#\t\trequest_header_access Referer deny all\n#\t\trequest_header_access User-Agent deny all\n#\n#\tOr, to reproduce the old 'http_anonymizer paranoid' feature\n#\tyou should use:\n#\n#\t\trequest_header_access Authorization allow all\n#\t\trequest_header_access Proxy-Authorization allow all\n#\t\trequest_header_access Cache-Control allow all\n#\t\trequest_header_access Content-Length allow all\n#\t\trequest_header_access Content-Type allow all\n#\t\trequest_header_access Date allow all\n#\t\trequest_header_access Host allow all\n#\t\trequest_header_access If-Modified-Since allow all\n#\t\trequest_header_access Pragma allow all\n#\t\trequest_header_access Accept allow all\n#\t\trequest_header_access Accept-Charset allow all\n#\t\trequest_header_access Accept-Encoding allow all\n#\t\trequest_header_access Accept-Language allow all\n#\t\trequest_header_access Connection allow all\n#\t\trequest_header_access All deny all\n#\n#\tHTTP reply headers are controlled with the reply_header_access directive.\n#\n#\tBy default, all headers are allowed (no anonymizing is performed).\n#Default:\n# No limits.\n\n# allow localnet headers\nrequest_header_access From allow localnet\nrequest_header_access Server allow localnet\nrequest_header_access Link allow localnet\n\nrequest_header_access Cache-Control allow localnet\nrequest_header_access X-Cache allow localnet \nrequest_header_access X-Cache-Lookup allow localnet\nrequest_header_access Via allow localnet\nrequest_header_access Forwarded-For allow localnet\nrequest_header_access X-Forwarded-For allow localnet\nrequest_header_access Pragma allow localnet\n\n# old 'http_anonymizer standard'\nrequest_header_access From deny all\n\n# allow privoxy configuration to see the referer, then\nacl privoxy-config dstdomain config.privoxy.org p.p\nrequest_header_access Referer allow privoxy-config\ncache deny privoxy-config\n# forge Referer in Privoxy\nrequest_header_access Referer deny all\nrequest_header_access Server deny all\n\n# forge User-Agent below and in Privoxy\n# header_access User-Agent deny all\n# this breaks web authentication -- do not use\n#! header_access WWW-Authenticate deny all\nrequest_header_access Link deny all\n\n# more privacy\nrequest_header_access X-Cache deny all\nrequest_header_access X-Cache-Lookup deny all\nrequest_header_access Via deny all\nrequest_header_access Forwarded-For deny all\nrequest_header_access X-Forwarded-For deny all\nrequest_header_access Pragma deny all\n\n#! These slow down browsing a lot -- do not use\n# header_access Cache-Control deny all\n# header_access Keep-Alive deny all\n\n# Mobile carrier uniquely identifying headers\nrequest_header_access MSISDN deny all\t\t# T-Mobile\nrequest_header_access X-MSISDN deny all\t\t# T-Mobile\nrequest_header_access X-UIDH deny all\t\t# Verizon\nrequest_header_access x-up-subno deny all\t# AT&T\nrequest_header_access X-ACR deny all\t\t# AT&T\nrequest_header_access X-UP-SUBSCRIBER-COS deny all\nrequest_header_access X-OPWV-DDM-HTTPMISCDD deny all\nrequest_header_access X-OPWV-DDM-IDENTITY deny all\nrequest_header_access X-OPWV-DDM-SUBSCRIBER deny all\nrequest_header_access CLIENTID deny all\nrequest_header_access X-VF-ACR deny all\nrequest_header_access X_MTI_USERNAME deny all\nrequest_header_access X_MTI_EMAIL deny all\nrequest_header_access X_MTI_EMPID deny all\n\nrequest_header_access User-Agent deny all\nrequest_header_replace User-Agent Mozilla/5.0 (iPad; CPU OS 12_1_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1\n\n#  TAG: reply_header_access\n#\tUsage: reply_header_access header_name allow|deny [!]aclname ...\n#\n#\tWARNING: Doing this VIOLATES the HTTP standard.  Enabling\n#\tthis feature could make you liable for problems which it\n#\tcauses.\n#\n#\tThis option only applies to reply headers, i.e., from the\n#\tserver to the client.\n#\n#\tThis is the same as request_header_access, but in the other\n#\tdirection. Please see request_header_access for detailed\n#\tdocumentation.\n#\n#\tFor example, to achieve the same behavior as the old\n#\t'http_anonymizer standard' option, you should use:\n#\n#\t\treply_header_access Server deny all\n#\t\treply_header_access WWW-Authenticate deny all\n#\t\treply_header_access Link deny all\n#\n#\tOr, to reproduce the old 'http_anonymizer paranoid' feature\n#\tyou should use:\n#\n#\t\treply_header_access Allow allow all\n#\t\treply_header_access WWW-Authenticate allow all\n#\t\treply_header_access Proxy-Authenticate allow all\n#\t\treply_header_access Cache-Control allow all\n#\t\treply_header_access Content-Encoding allow all\n#\t\treply_header_access Content-Length allow all\n#\t\treply_header_access Content-Type allow all\n#\t\treply_header_access Date allow all\n#\t\treply_header_access Expires allow all\n#\t\treply_header_access Last-Modified allow all\n#\t\treply_header_access Location allow all\n#\t\treply_header_access Pragma allow all\n#\t\treply_header_access Content-Language allow all\n#\t\treply_header_access Retry-After allow all\n#\t\treply_header_access Title allow all\n#\t\treply_header_access Content-Disposition allow all\n#\t\treply_header_access Connection allow all\n#\t\treply_header_access All deny all\n#\n#\tHTTP request headers are controlled with the request_header_access directive.\n#\n#\tBy default, all headers are allowed (no anonymizing is\n#\tperformed).\n#Default:\n# No limits.\n\n#  TAG: request_header_replace\n#\tUsage:   request_header_replace header_name message\n#\tExample: request_header_replace User-Agent Nutscrape/1.0 (CP/M; 8-bit)\n#\n#\tThis option allows you to change the contents of headers\n#\tdenied with request_header_access above, by replacing them\n#\twith some fixed string.\n#\n#\tThis only applies to request headers, not reply headers.\n#\n#\tBy default, headers are removed if denied.\n#Default:\n# none\n\n#  TAG: reply_header_replace\n#        Usage:   reply_header_replace header_name message\n#        Example: reply_header_replace Server Foo/1.0\n#\n#        This option allows you to change the contents of headers\n#        denied with reply_header_access above, by replacing them\n#        with some fixed string.\n#\n#        This only applies to reply headers, not request headers.\n#\n#        By default, headers are removed if denied.\n#Default:\n# none\n\n#  TAG: request_header_add\n#\tUsage:   request_header_add field-name field-value [ acl ... ]\n#\tExample: request_header_add X-Client-CA \"CA=%ssl::>cert_issuer\" all\n#\n#\tThis option adds header fields to outgoing HTTP requests (i.e.,\n#\trequest headers sent by Squid to the next HTTP hop such as a\n#\tcache peer or an origin server). The option has no effect during\n#\tcache hit detection. The equivalent adaptation vectoring point\n#\tin ICAP terminology is post-cache REQMOD.\n#\n#\tField-name is a token specifying an HTTP header name. If a\n#\tstandard HTTP header name is used, Squid does not check whether\n#\tthe new header conflicts with any existing headers or violates\n#\tHTTP rules. If the request to be modified already contains a\n#\tfield with the same name, the old field is preserved but the\n#\theader field values are not merged.\n#\n#\tField-value is either a token or a quoted string. If quoted\n#\tstring format is used, then the surrounding quotes are removed\n#\twhile escape sequences and %macros are processed.\n#\n#\tOne or more Squid ACLs may be specified to restrict header\n#\tinjection to matching requests. As always in squid.conf, all\n#\tACLs in the ACL list must be satisfied for the insertion to\n#\thappen. The request_header_add supports fast ACLs only.\n#\n#\tSee also: reply_header_add.\n#Default:\n# none\n\n#  TAG: reply_header_add\n#\tUsage:   reply_header_add field-name field-value [ acl ... ]\n#\tExample: reply_header_add X-Client-CA \"CA=%ssl::>cert_issuer\" all\n#\n#\tThis option adds header fields to outgoing HTTP responses (i.e., response\n#\theaders delivered by Squid to the client). This option has no effect on\n#\tcache hit detection. The equivalent adaptation vectoring point in\n#\tICAP terminology is post-cache RESPMOD. This option does not apply to\n#\tsuccessful CONNECT replies.\n#\n#\tField-name is a token specifying an HTTP header name. If a\n#\tstandard HTTP header name is used, Squid does not check whether\n#\tthe new header conflicts with any existing headers or violates\n#\tHTTP rules. If the response to be modified already contains a\n#\tfield with the same name, the old field is preserved but the\n#\theader field values are not merged.\n#\n#\tField-value is either a token or a quoted string. If quoted\n#\tstring format is used, then the surrounding quotes are removed\n#\twhile escape sequences and %macros are processed.\n#\n#\tOne or more Squid ACLs may be specified to restrict header\n#\tinjection to matching responses. As always in squid.conf, all\n#\tACLs in the ACL list must be satisfied for the insertion to\n#\thappen. The reply_header_add option supports fast ACLs only.\n#\n#\tSee also: request_header_add.\n#Default:\n# none\n\n#  TAG: note\n#\tThis option used to log custom information about the master\n#\ttransaction. For example, an admin may configure Squid to log\n#\twhich \"user group\" the transaction belongs to, where \"user group\"\n#\twill be determined based on a set of ACLs and not [just]\n#\tauthentication information.\n#\tValues of key/value pairs can be logged using %{key}note macros:\n#\n#\t    note key value acl ...\n#\t    logformat myFormat ... %{key}note ...\n#Default:\n# none\n\n#  TAG: relaxed_header_parser\ton|off|warn\n#\tIn the default \"on\" setting Squid accepts certain forms\n#\tof non-compliant HTTP messages where it is unambiguous\n#\twhat the sending application intended even if the message\n#\tis not correctly formatted. The messages is then normalized\n#\tto the correct form when forwarded by Squid.\n#\n#\tIf set to \"warn\" then a warning will be emitted in cache.log\n#\teach time such HTTP error is encountered.\n#\n#\tIf set to \"off\" then such HTTP errors will cause the request\n#\tor response to be rejected.\n#Default:\n# relaxed_header_parser on\n\n#  TAG: collapsed_forwarding\t(on|off)\n#       This option controls whether Squid is allowed to merge multiple\n#       potentially cachable requests for the same URI before Squid knows\n#       whether the response is going to be cachable.\n#\n#       When enabled, instead of forwarding each concurrent request for\n#       the same URL, Squid just sends the first of them. The other, so\n#       called \"collapsed\" requests, wait for the response to the first\n#       request and, if it happens to be cachable, use that response.\n#       Here, \"concurrent requests\" means \"received after the first\n#       request headers were parsed and before the corresponding response\n#       headers were parsed\".\n#\n#       This feature is disabled by default: enabling collapsed\n#       forwarding needlessly delays forwarding requests that look\n#       cachable (when they are collapsed) but then need to be forwarded\n#       individually anyway because they end up being for uncachable\n#       content. However, in some cases, such as acceleration of highly\n#       cachable content with periodic or grouped expiration times, the\n#       gains from collapsing [large volumes of simultaneous refresh\n#       requests] outweigh losses from such delays.\n#\n#       Squid collapses two kinds of requests: regular client requests\n#       received on one of the listening ports and internal \"cache\n#       revalidation\" requests which are triggered by those regular\n#       requests hitting a stale cached object. Revalidation collapsing\n#       is currently disabled for Squid instances containing SMP-aware\n#       disk or memory caches and for Vary-controlled cached objects.\n#Default:\n# collapsed_forwarding off\n\n#  TAG: collapsed_forwarding_shared_entries_limit\t(number of entries)\n#\tThis limits the size of a table used for sharing information\n#\tabout collapsible entries among SMP workers. Limiting sharing\n#\ttoo much results in cache content duplication and missed\n#\tcollapsing opportunities. Using excessively large values\n#\twastes shared memory.\n#\n#\tThe limit should be significantly larger then the number of\n#\tconcurrent collapsible entries one wants to share. For a cache\n#\tthat handles less than 5000 concurrent requests, the default\n#\tsetting of 16384 should be plenty.\n#\n#\tIf the limit is set to zero, it disables sharing of collapsed\n#\tforwarding between SMP workers.\n#Default:\n# collapsed_forwarding_shared_entries_limit 16384\n\n# TIMEOUTS\n# -----------------------------------------------------------------------------\n\n#  TAG: forward_timeout\ttime-units\n#\tThis parameter specifies how long Squid should at most attempt in\n#\tfinding a forwarding path for the request before giving up.\n#Default:\n# forward_timeout 4 minutes\n\n#  TAG: connect_timeout\ttime-units\n#\tThis parameter specifies how long to wait for the TCP connect to\n#\tthe requested server or peer to complete before Squid should\n#\tattempt to find another path where to forward the request.\n#Default:\n# connect_timeout 1 minute\n\n#  TAG: peer_connect_timeout\ttime-units\n#\tThis parameter specifies how long to wait for a pending TCP\n#\tconnection to a peer cache.  The default is 30 seconds.   You\n#\tmay also set different timeout values for individual neighbors\n#\twith the 'connect-timeout' option on a 'cache_peer' line.\n#Default:\n# peer_connect_timeout 30 seconds\n\n#  TAG: read_timeout\ttime-units\n#\tApplied on peer server connections.\n#\n#\tAfter each successful read(), the timeout will be extended by this\n#\tamount.  If no data is read again after this amount of time,\n#\tthe request is aborted and logged with ERR_READ_TIMEOUT.\n#\n#\tThe default is 15 minutes.\n#Default:\n# read_timeout 15 minutes\n\n#  TAG: write_timeout\ttime-units\n#\tThis timeout is tracked for all connections that have data\n#\tavailable for writing and are waiting for the socket to become\n#\tready. After each successful write, the timeout is extended by\n#\tthe configured amount. If Squid has data to write but the\n#\tconnection is not ready for the configured duration, the\n#\ttransaction associated with the connection is terminated. The\n#\tdefault is 15 minutes.\n#Default:\n# write_timeout 15 minutes\n\n#  TAG: request_timeout\n#\tHow long to wait for complete HTTP request headers after initial\n#\tconnection establishment.\n#Default:\n# request_timeout 5 minutes\n\n#  TAG: request_start_timeout\n#\tHow long to wait for the first request byte after initial\n#\tconnection establishment.\n#Default:\n# request_start_timeout 5 minutes\n\n#  TAG: client_idle_pconn_timeout\n#\tHow long to wait for the next HTTP request on a persistent\n#\tclient connection after the previous request completes.\n#Default:\n# client_idle_pconn_timeout 2 minutes\n\n#  TAG: ftp_client_idle_timeout\n#\tHow long to wait for an FTP request on a connection to Squid ftp_port.\n#\tMany FTP clients do not deal with idle connection closures well,\n#\tnecessitating a longer default timeout than client_idle_pconn_timeout\n#\tused for incoming HTTP requests.\n#Default:\n# ftp_client_idle_timeout 30 minutes\n\n#  TAG: client_lifetime\ttime-units\n#\tThe maximum amount of time a client (browser) is allowed to\n#\tremain connected to the cache process.  This protects the Cache\n#\tfrom having a lot of sockets (and hence file descriptors) tied up\n#\tin a CLOSE_WAIT state from remote clients that go away without\n#\tproperly shutting down (either because of a network failure or\n#\tbecause of a poor client implementation).  The default is one\n#\tday, 1440 minutes.\n#\n#\tNOTE:  The default value is intended to be much larger than any\n#\tclient would ever need to be connected to your cache.  You\n#\tshould probably change client_lifetime only as a last resort.\n#\tIf you seem to have many client connections tying up\n#\tfiledescriptors, we recommend first tuning the read_timeout,\n#\trequest_timeout, persistent_request_timeout and quick_abort values.\n#Default:\n# client_lifetime 1 day\n\n#  TAG: pconn_lifetime\ttime-units\n#\tDesired maximum lifetime of a persistent connection.\n#\tWhen set, Squid will close a now-idle persistent connection that\n#\texceeded configured lifetime instead of moving the connection into\n#\tthe idle connection pool (or equivalent). No effect on ongoing/active\n#\ttransactions. Connection lifetime is the time period from the\n#\tconnection acceptance or opening time until \"now\".\n#\t\n#\tThis limit is useful in environments with long-lived connections\n#\twhere Squid configuration or environmental factors change during a\n#\tsingle connection lifetime. If unrestricted, some connections may\n#\tlast for hours and even days, ignoring those changes that should\n#\thave affected their behavior or their existence.\n#\t\n#\tCurrently, a new lifetime value supplied via Squid reconfiguration\n#\thas no effect on already idle connections unless they become busy.\n#\t\n#\tWhen set to '0' this limit is not used.\n#Default:\n# pconn_lifetime 0 seconds\n\n#  TAG: half_closed_clients\n#\tSome clients may shutdown the sending side of their TCP\n#\tconnections, while leaving their receiving sides open.\tSometimes,\n#\tSquid can not tell the difference between a half-closed and a\n#\tfully-closed TCP connection.\n#\n#\tBy default, Squid will immediately close client connections when\n#\tread(2) returns \"no more data to read.\"\n#\n#\tChange this option to 'on' and Squid will keep open connections\n#\tuntil a read(2) or write(2) on the socket returns an error.\n#\tThis may show some benefits for reverse proxies. But if not\n#\tit is recommended to leave OFF.\n#Default:\n# half_closed_clients off\n\n#  TAG: server_idle_pconn_timeout\n#\tTimeout for idle persistent connections to servers and other\n#\tproxies.\n#Default:\n# server_idle_pconn_timeout 1 minute\n\n#  TAG: ident_timeout\n#\tMaximum time to wait for IDENT lookups to complete.\n#\n#\tIf this is too high, and you enabled IDENT lookups from untrusted\n#\tusers, you might be susceptible to denial-of-service by having\n#\tmany ident requests going at once.\n#Default:\n# ident_timeout 10 seconds\n\n#  TAG: shutdown_lifetime\ttime-units\n#\tWhen SIGTERM or SIGHUP is received, the cache is put into\n#\t\"shutdown pending\" mode until all active sockets are closed.\n#\tThis value is the lifetime to set for all open descriptors\n#\tduring shutdown mode.  Any active clients after this many\n#\tseconds will receive a 'timeout' message.\n#Default:\n# shutdown_lifetime 30 seconds\n# Make this significantly less than daemondo's kChildDeathTimeout\n# to avoid multiple squid processes at boot or on network change\n# const CFTimeInterval kChildDeathTimeout = 20;\nshutdown_lifetime 5 seconds\n\n# ADMINISTRATIVE PARAMETERS\n# -----------------------------------------------------------------------------\n\n#  TAG: cache_mgr\n#\tEmail-address of local cache manager who will receive\n#\tmail if the cache dies.  The default is \"webmaster\".\n#Default:\n# cache_mgr webmaster\n\n#  TAG: mail_from\n#\tFrom: email-address for mail sent when the cache dies.\n#\tThe default is to use 'squid@unique_hostname'.\n#\n#\tSee also: unique_hostname directive.\n#Default:\n# none\n\n#  TAG: mail_program\n#\tEmail program used to send mail if the cache dies.\n#\tThe default is \"mail\". The specified program must comply\n#\twith the standard Unix mail syntax:\n#\t  mail-program recipient < mailfile\n#\n#\tOptional command line options can be specified.\n#Default:\n# mail_program mail\n\n#  TAG: cache_effective_user\n#\tIf you start Squid as root, it will change its effective/real\n#\tUID/GID to the user specified below.  The default is to change\n#\tto UID of squid.\n#\tsee also; cache_effective_group\n#Default:\n# cache_effective_user squid\n\n#  TAG: cache_effective_group\n#\tSquid sets the GID to the effective user's default group ID\n#\t(taken from the password file) and supplementary group list\n#\tfrom the groups membership.\n#\n#\tIf you want Squid to run with a specific GID regardless of\n#\tthe group memberships of the effective user then set this\n#\tto the group (or GID) you want Squid to run as. When set\n#\tall other group privileges of the effective user are ignored\n#\tand only this GID is effective. If Squid is not started as\n#\troot the user starting Squid MUST be member of the specified\n#\tgroup.\n#\n#\tThis option is not recommended by the Squid Team.\n#\tOur preference is for administrators to configure a secure\n#\tuser account for squid with UID/GID matching system policies.\n#Default:\n# Use system group memberships of the cache_effective_user account\n\n#  TAG: httpd_suppress_version_string\ton|off\n#\tSuppress Squid version string info in HTTP headers and HTML error pages.\n#Default:\n# httpd_suppress_version_string off\n\n#  TAG: visible_hostname\n#\tIf you want to present a special hostname in error messages, etc,\n#\tdefine this.  Otherwise, the return value of gethostname()\n#\twill be used. If you have multiple caches in a cluster and\n#\tget errors about IP-forwarding you must set them to have individual\n#\tnames with this setting.\n#Default:\n# Automatically detect the system host name\nvisible_hostname localhost\n\n#  TAG: unique_hostname\n#\tIf you want to have multiple machines with the same\n#\t'visible_hostname' you must give each machine a different\n#\t'unique_hostname' so forwarding loops can be detected.\n#Default:\n# Copy the value from visible_hostname\n\n#  TAG: hostname_aliases\n#\tA list of other DNS names your cache has.\n#Default:\n# none\n\n#  TAG: umask\n#\tMinimum umask which should be enforced while the proxy\n#\tis running, in addition to the umask set at startup.\n#\n#\tFor a traditional octal representation of umasks, start\n#        your value with 0.\n#Default:\n# umask 027\n\n# OPTIONS FOR THE CACHE REGISTRATION SERVICE\n# -----------------------------------------------------------------------------\n#\n#\tThis section contains parameters for the (optional) cache\n#\tannouncement service.  This service is provided to help\n#\tcache administrators locate one another in order to join or\n#\tcreate cache hierarchies.\n#\n#\tAn 'announcement' message is sent (via UDP) to the registration\n#\tservice by Squid.  By default, the announcement message is NOT\n#\tSENT unless you enable it with 'announce_period' below.\n#\n#\tThe announcement message includes your hostname, plus the\n#\tfollowing information from this configuration file:\n#\n#\t\thttp_port\n#\t\ticp_port\n#\t\tcache_mgr\n#\n#\tAll current information is processed regularly and made\n#\tavailable on the Web at http://www.ircache.net/Cache/Tracker/.\n\n#  TAG: announce_period\n#\tThis is how frequently to send cache announcements.\n#\n#\tTo enable announcing your cache, just set an announce period.\n#\n#\tExample:\n#\t\tannounce_period 1 day\n#Default:\n# Announcement messages disabled.\n\n#  TAG: announce_host\n#\tSet the hostname where announce registration messages will be sent.\n#\n#\tSee also announce_port and announce_file\n#Default:\n# announce_host tracker.ircache.net\n\n#  TAG: announce_file\n#\tThe contents of this file will be included in the announce\n#\tregistration messages.\n#Default:\n# none\n\n#  TAG: announce_port\n#\tSet the port where announce registration messages will be sent.\n#\n#\tSee also announce_host and announce_file\n#Default:\n# announce_port 3131\n\n# HTTPD-ACCELERATOR OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: httpd_accel_surrogate_id\n#\tSurrogates (http://www.esi.org/architecture_spec_1.0.html)\n#\tneed an identification token to allow control targeting. Because\n#\ta farm of surrogates may all perform the same tasks, they may share\n#\tan identification token.\n#Default:\n# visible_hostname is used if no specific ID is set.\n\n#  TAG: http_accel_surrogate_remote\ton|off\n#\tRemote surrogates (such as those in a CDN) honour the header\n#\t\"Surrogate-Control: no-store-remote\".\n#\n#\tSet this to on to have squid behave as a remote surrogate.\n#Default:\n# http_accel_surrogate_remote off\n\n#  TAG: esi_parser\tlibxml2|expat\n#\tSelects the XML parsing library to use when interpreting responses with\n#\tEdge Side Includes.\n#\n#\tTo disable ESI handling completely, ./configure Squid with --disable-esi.\n#Default:\n# Selects libxml2 if available at ./configure time or libexpat otherwise.\n\n# DELAY POOL PARAMETERS\n# -----------------------------------------------------------------------------\n\n#  TAG: delay_pools\n#\tThis represents the number of delay pools to be used.  For example,\n#\tif you have one class 2 delay pool and one class 3 delays pool, you\n#\thave a total of 2 delay pools.\n#\n#\tSee also delay_parameters, delay_class, delay_access for pool\n#\tconfiguration details.\n#Default:\n# delay_pools 0\n\n#  TAG: delay_class\n#\tThis defines the class of each delay pool.  There must be exactly one\n#\tdelay_class line for each delay pool.  For example, to define two\n#\tdelay pools, one of class 2 and one of class 3, the settings above\n#\tand here would be:\n#\n#\tExample:\n#\t    delay_pools 4      # 4 delay pools\n#\t    delay_class 1 2    # pool 1 is a class 2 pool\n#\t    delay_class 2 3    # pool 2 is a class 3 pool\n#\t    delay_class 3 4    # pool 3 is a class 4 pool\n#\t    delay_class 4 5    # pool 4 is a class 5 pool\n#\n#\tThe delay pool classes are:\n#\n#\t\tclass 1\t\tEverything is limited by a single aggregate\n#\t\t\t\tbucket.\n#\n#\t\tclass 2 \tEverything is limited by a single aggregate\n#\t\t\t\tbucket as well as an \"individual\" bucket chosen\n#\t\t\t\tfrom bits 25 through 32 of the IPv4 address.\n#\n#\t\tclass 3\t\tEverything is limited by a single aggregate\n#\t\t\t\tbucket as well as a \"network\" bucket chosen\n#\t\t\t\tfrom bits 17 through 24 of the IP address and a\n#\t\t\t\t\"individual\" bucket chosen from bits 17 through\n#\t\t\t\t32 of the IPv4 address.\n#\n#\t\tclass 4\t\tEverything in a class 3 delay pool, with an\n#\t\t\t\tadditional limit on a per user basis. This\n#\t\t\t\tonly takes effect if the username is established\n#\t\t\t\tin advance - by forcing authentication in your\n#\t\t\t\thttp_access rules.\n#\n#\t\tclass 5\t\tRequests are grouped according their tag (see\n#\t\t\t\texternal_acl's tag= reply).\n#\n#\n#\tEach pool also requires a delay_parameters directive to configure the pool size\n#\tand speed limits used whenever the pool is applied to a request. Along with\n#\ta set of delay_access directives to determine when it is used.\n#\n#\tNOTE: If an IP address is a.b.c.d\n#\t\t-> bits 25 through 32 are \"d\"\n#\t\t-> bits 17 through 24 are \"c\"\n#\t\t-> bits 17 through 32 are \"c * 256 + d\"\n#\n#\tNOTE-2: Due to the use of bitmasks in class 2,3,4 pools they only apply to\n#\t\tIPv4 traffic. Class 1 and 5 pools may be used with IPv6 traffic.\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#\tSee also delay_parameters and delay_access.\n#Default:\n# none\n\n#  TAG: delay_access\n#\tThis is used to determine which delay pool a request falls into.\n#\n#\tdelay_access is sorted per pool and the matching starts with pool 1,\n#\tthen pool 2, ..., and finally pool N. The first delay pool where the\n#\trequest is allowed is selected for the request. If it does not allow\n#\tthe request to any pool then the request is not delayed (default).\n#\n#\tFor example, if you want some_big_clients in delay\n#\tpool 1 and lotsa_little_clients in delay pool 2:\n#\n#\t\tdelay_access 1 allow some_big_clients\n#\t\tdelay_access 1 deny all\n#\t\tdelay_access 2 allow lotsa_little_clients\n#\t\tdelay_access 2 deny all\n#\t\tdelay_access 3 allow authenticated_clients\n#\n#\tSee also delay_parameters and delay_class.\n#\n#Default:\n# Deny using the pool, unless allow rules exist in squid.conf for the pool.\n\n#  TAG: delay_parameters\n#\tThis defines the parameters for a delay pool.  Each delay pool has\n#\ta number of \"buckets\" associated with it, as explained in the\n#\tdescription of delay_class.\n#\n#\tFor a class 1 delay pool, the syntax is:\n#\t\tdelay_class pool 1\n#\t\tdelay_parameters pool aggregate\n#\n#\tFor a class 2 delay pool:\n#\t\tdelay_class pool 2\n#\t\tdelay_parameters pool aggregate individual\n#\n#\tFor a class 3 delay pool:\n#\t\tdelay_class pool 3\n#\t\tdelay_parameters pool aggregate network individual\n#\n#\tFor a class 4 delay pool:\n#\t\tdelay_class pool 4\n#\t\tdelay_parameters pool aggregate network individual user\n#\n#\tFor a class 5 delay pool:\n#\t\tdelay_class pool 5\n#\t\tdelay_parameters pool tagrate\n#\n#\tThe option variables are:\n#\n#\t\tpool\t\ta pool number - ie, a number between 1 and the\n#\t\t\t\tnumber specified in delay_pools as used in\n#\t\t\t\tdelay_class lines.\n#\n#\t\taggregate\tthe speed limit parameters for the aggregate bucket\n#\t\t\t\t(class 1, 2, 3).\n#\n#\t\tindividual\tthe speed limit parameters for the individual\n#\t\t\t\tbuckets (class 2, 3).\n#\n#\t\tnetwork\t\tthe speed limit parameters for the network buckets\n#\t\t\t\t(class 3).\n#\n#\t\tuser\t\tthe speed limit parameters for the user buckets\n#\t\t\t\t(class 4).\n#\n#\t\ttagrate\t\tthe speed limit parameters for the tag buckets\n#\t\t\t\t(class 5).\n#\n#\tA pair of delay parameters is written restore/maximum, where restore is\n#\tthe number of bytes (not bits - modem and network speeds are usually\n#\tquoted in bits) per second placed into the bucket, and maximum is the\n#\tmaximum number of bytes which can be in the bucket at any time.\n#\n#\tThere must be one delay_parameters line for each delay pool.\n#\n#\n#\tFor example, if delay pool number 1 is a class 2 delay pool as in the\n#\tabove example, and is being used to strictly limit each host to 64Kbit/sec\n#\t(plus overheads), with no overall limit, the line is:\n#\n#\t\tdelay_parameters 1 none 8000/8000\n#\n#\tNote that 8 x 8K Byte/sec -> 64K bit/sec.\n#\n#\tNote that the word 'none' is used to represent no limit.\n#\n#\n#\tAnd, if delay pool number 2 is a class 3 delay pool as in the above\n#\texample, and you want to limit it to a total of 256Kbit/sec (strict limit)\n#\twith each 8-bit network permitted 64Kbit/sec (strict limit) and each\n#\tindividual host permitted 4800bit/sec with a bucket maximum size of 64Kbits\n#\tto permit a decent web page to be downloaded at a decent speed\n#\t(if the network is not being limited due to overuse) but slow down\n#\tlarge downloads more significantly:\n#\n#\t\tdelay_parameters 2 32000/32000 8000/8000 600/8000\n#\n#\tNote that 8 x  32K Byte/sec ->  256K bit/sec.\n#\t\t  8 x   8K Byte/sec ->   64K bit/sec.\n#\t\t  8 x 600  Byte/sec -> 4800  bit/sec.\n#\n#\n#\tFinally, for a class 4 delay pool as in the example - each user will\n#\tbe limited to 128Kbits/sec no matter how many workstations they are logged into.:\n#\n#\t\tdelay_parameters 4 32000/32000 8000/8000 600/64000 16000/16000\n#\n#\n#\tSee also delay_class and delay_access.\n#\n#Default:\n# none\n\n#  TAG: delay_initial_bucket_level\t(percent, 0-100)\n#\tThe initial bucket percentage is used to determine how much is put\n#\tin each bucket when squid starts, is reconfigured, or first notices\n#\ta host accessing it (in class 2 and class 3, individual hosts and\n#\tnetworks only have buckets associated with them once they have been\n#\t\"seen\" by squid).\n#Default:\n# delay_initial_bucket_level 50\n\n# CLIENT DELAY POOL PARAMETERS\n# -----------------------------------------------------------------------------\n\n#  TAG: client_delay_pools\n#\tThis option specifies the number of client delay pools used. It must\n#\tpreceed other client_delay_* options.\n#\n#\tExample:\n#\t\tclient_delay_pools 2\n#\n#\tSee also client_delay_parameters and client_delay_access.\n#Default:\n# client_delay_pools 0\n\n#  TAG: client_delay_initial_bucket_level\t(percent, 0-no_limit)\n#\tThis option determines the initial bucket size as a percentage of\n#\tmax_bucket_size from client_delay_parameters. Buckets are created\n#\tat the time of the \"first\" connection from the matching IP. Idle\n#\tbuckets are periodically deleted up.\n#\n#\tYou can specify more than 100 percent but note that such \"oversized\"\n#\tbuckets are not refilled until their size goes down to max_bucket_size\n#\tfrom client_delay_parameters.\n#\n#\tExample:\n#\t\tclient_delay_initial_bucket_level 50\n#Default:\n# client_delay_initial_bucket_level 50\n\n#  TAG: client_delay_parameters\n#\n#\tThis option configures client-side bandwidth limits using the\n#\tfollowing format:\n#\n#\t    client_delay_parameters pool speed_limit max_bucket_size\n#\n#\tpool is an integer ID used for client_delay_access matching.\n#\n#\tspeed_limit is bytes added to the bucket per second.\n#\n#\tmax_bucket_size is the maximum size of a bucket, enforced after any\n#\tspeed_limit additions.\n#\n#\tPlease see the delay_parameters option for more information and\n#\texamples.\n#\n#\tExample:\n#\t\tclient_delay_parameters 1 1024 2048\n#\t\tclient_delay_parameters 2 51200 16384\n#\n#\tSee also client_delay_access.\n#\n#Default:\n# none\n\n#  TAG: client_delay_access\n#\tThis option determines the client-side delay pool for the\n#\trequest:\n#\n#\t    client_delay_access pool_ID allow|deny acl_name\n#\n#\tAll client_delay_access options are checked in their pool ID\n#\torder, starting with pool 1. The first checked pool with allowed\n#\trequest is selected for the request. If no ACL matches or there\n#\tare no client_delay_access options, the request bandwidth is not\n#\tlimited.\n#\n#\tThe ACL-selected pool is then used to find the\n#\tclient_delay_parameters for the request. Client-side pools are\n#\tnot used to aggregate clients. Clients are always aggregated\n#\tbased on their source IP addresses (one bucket per source IP).\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\tAdditionally, only the client TCP connection details are available.\n#\tACLs testing HTTP properties will not work.\n#\n#\tPlease see delay_access for more examples.\n#\n#\tExample:\n#\t\tclient_delay_access 1 allow low_rate_network\n#\t\tclient_delay_access 2 allow vips_network\n#\n#\n#\tSee also client_delay_parameters and client_delay_pools.\n#Default:\n# Deny use of the pool, unless allow rules exist in squid.conf for the pool.\n\n# WCCPv1 AND WCCPv2 CONFIGURATION OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: wccp_router\n#\tUse this option to define your WCCP ``home'' router for\n#\tSquid.\n#\n#\twccp_router supports a single WCCP(v1) router\n#\n#\twccp2_router supports multiple WCCPv2 routers\n#\n#\tonly one of the two may be used at the same time and defines\n#\twhich version of WCCP to use.\n#Default:\n# WCCP disabled.\n\n#  TAG: wccp2_router\n#\tUse this option to define your WCCP ``home'' router for\n#\tSquid.\n#\n#\twccp_router supports a single WCCP(v1) router\n#\n#\twccp2_router supports multiple WCCPv2 routers\n#\n#\tonly one of the two may be used at the same time and defines\n#\twhich version of WCCP to use.\n#Default:\n# WCCPv2 disabled.\n\n#  TAG: wccp_version\n#\tThis directive is only relevant if you need to set up WCCP(v1)\n#\tto some very old and end-of-life Cisco routers. In all other\n#\tsetups it must be left unset or at the default setting.\n#\tIt defines an internal version in the WCCP(v1) protocol,\n#\twith version 4 being the officially documented protocol.\n#\n#\tAccording to some users, Cisco IOS 11.2 and earlier only\n#\tsupport WCCP version 3.  If you're using that or an earlier\n#\tversion of IOS, you may need to change this value to 3, otherwise\n#\tdo not specify this parameter.\n#Default:\n# wccp_version 4\n\n#  TAG: wccp2_rebuild_wait\n#\tIf this is enabled Squid will wait for the cache dir rebuild to finish\n#\tbefore sending the first wccp2 HereIAm packet\n#Default:\n# wccp2_rebuild_wait on\n\n#  TAG: wccp2_forwarding_method\n#\tWCCP2 allows the setting of forwarding methods between the\n#\trouter/switch and the cache.  Valid values are as follows:\n#\n#\tgre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)\n#\tl2  - L2 redirect (forward the packet using Layer 2/MAC rewriting)\n#\n#\tCurrently (as of IOS 12.4) cisco routers only support GRE.\n#\tCisco switches only support the L2 redirect assignment method.\n#Default:\n# wccp2_forwarding_method gre\n\n#  TAG: wccp2_return_method\n#\tWCCP2 allows the setting of return methods between the\n#\trouter/switch and the cache for packets that the cache\n#\tdecides not to handle.  Valid values are as follows:\n#\n#\tgre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)\n#\tl2  - L2 redirect (forward the packet using Layer 2/MAC rewriting)\n#\n#\tCurrently (as of IOS 12.4) cisco routers only support GRE.\n#\tCisco switches only support the L2 redirect assignment.\n#\n#\tIf the \"ip wccp redirect exclude in\" command has been\n#\tenabled on the cache interface, then it is still safe for\n#\tthe proxy server to use a l2 redirect method even if this\n#\toption is set to GRE.\n#Default:\n# wccp2_return_method gre\n\n#  TAG: wccp2_assignment_method\n#\tWCCP2 allows the setting of methods to assign the WCCP hash\n#\tValid values are as follows:\n#\n#\thash - Hash assignment\n#\tmask - Mask assignment\n#\n#\tAs a general rule, cisco routers support the hash assignment method\n#\tand cisco switches support the mask assignment method.\n#Default:\n# wccp2_assignment_method hash\n\n#  TAG: wccp2_service\n#\tWCCP2 allows for multiple traffic services. There are two\n#\ttypes: \"standard\" and \"dynamic\". The standard type defines\n#\tone service id - http (id 0). The dynamic service ids can be from\n#\t51 to 255 inclusive.  In order to use a dynamic service id\n#\tone must define the type of traffic to be redirected; this is done\n#\tusing the wccp2_service_info option.\n#\n#\tThe \"standard\" type does not require a wccp2_service_info option,\n#\tjust specifying the service id will suffice.\n#\n#\tMD5 service authentication can be enabled by adding\n#\t\"password=<password>\" to the end of this service declaration.\n#\n#\tExamples:\n#\n#\twccp2_service standard 0\t# for the 'web-cache' standard service\n#\twccp2_service dynamic 80\t# a dynamic service type which will be\n#\t\t\t\t\t# fleshed out with subsequent options.\n#\twccp2_service standard 0 password=foo\n#Default:\n# Use the 'web-cache' standard service.\n\n#  TAG: wccp2_service_info\n#\tDynamic WCCPv2 services require further information to define the\n#\ttraffic you wish to have diverted.\n#\n#\tThe format is:\n#\n#\twccp2_service_info <id> protocol=<protocol> flags=<flag>,<flag>..\n#\t    priority=<priority> ports=<port>,<port>..\n#\n#\tThe relevant WCCPv2 flags:\n#\t+ src_ip_hash, dst_ip_hash\n#\t+ source_port_hash, dst_port_hash\n#\t+ src_ip_alt_hash, dst_ip_alt_hash\n#\t+ src_port_alt_hash, dst_port_alt_hash\n#\t+ ports_source\n#\n#\tThe port list can be one to eight entries.\n#\n#\tExample:\n#\n#\twccp2_service_info 80 protocol=tcp flags=src_ip_hash,ports_source\n#\t    priority=240 ports=80\n#\n#\tNote: the service id must have been defined by a previous\n#\t'wccp2_service dynamic <id>' entry.\n#Default:\n# none\n\n#  TAG: wccp2_weight\n#\tEach cache server gets assigned a set of the destination\n#\thash proportional to their weight.\n#Default:\n# wccp2_weight 10000\n\n#  TAG: wccp_address\n#\tUse this option if you require WCCPv2 to use a specific\n#\tinterface address.\n#\n#\tThe default behavior is to not bind to any specific address.\n#Default:\n# Address selected by the operating system.\n\n#  TAG: wccp2_address\n#\tUse this option if you require WCCP to use a specific\n#\tinterface address.\n#\n#\tThe default behavior is to not bind to any specific address.\n#Default:\n# Address selected by the operating system.\n\n# PERSISTENT CONNECTION HANDLING\n# -----------------------------------------------------------------------------\n#\n# Also see \"pconn_timeout\" in the TIMEOUTS section\n\n#  TAG: client_persistent_connections\n#\tPersistent connection support for clients.\n#\tSquid uses persistent connections (when allowed). You can use\n#\tthis option to disable persistent connections with clients.\n#Default:\n# client_persistent_connections on\n\n#  TAG: server_persistent_connections\n#\tPersistent connection support for servers.\n#\tSquid uses persistent connections (when allowed). You can use\n#\tthis option to disable persistent connections with servers.\n#Default:\n# server_persistent_connections on\n\n#  TAG: persistent_connection_after_error\n#\tWith this directive the use of persistent connections after\n#\tHTTP errors can be disabled. Useful if you have clients\n#\twho fail to handle errors on persistent connections proper.\n#Default:\n# persistent_connection_after_error on\n\n#  TAG: detect_broken_pconn\n#\tSome servers have been found to incorrectly signal the use\n#\tof HTTP/1.0 persistent connections even on replies not\n#\tcompatible, causing significant delays. This server problem\n#\thas mostly been seen on redirects.\n#\n#\tBy enabling this directive Squid attempts to detect such\n#\tbroken replies and automatically assume the reply is finished\n#\tafter 10 seconds timeout.\n#Default:\n# detect_broken_pconn off\n\n# CACHE DIGEST OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: digest_generation\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests\n#\n#\tThis controls whether the server will generate a Cache Digest\n#\tof its contents.  By default, Cache Digest generation is\n#\tenabled if Squid is compiled with --enable-cache-digests defined.\n#Default:\n# digest_generation on\n\n#  TAG: digest_bits_per_entry\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests\n#\n#\tThis is the number of bits of the server's Cache Digest which\n#\twill be associated with the Digest entry for a given HTTP\n#\tMethod and URL (public key) combination.  The default is 5.\n#Default:\n# digest_bits_per_entry 5\n\n#  TAG: digest_rebuild_period\t(seconds)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests\n#\n#\tThis is the wait time between Cache Digest rebuilds.\n#Default:\n# digest_rebuild_period 1 hour\n\n#  TAG: digest_rewrite_period\t(seconds)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests\n#\n#\tThis is the wait time between Cache Digest writes to\n#\tdisk.\n#Default:\n# digest_rewrite_period 1 hour\n\n#  TAG: digest_swapout_chunk_size\t(bytes)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests\n#\n#\tThis is the number of bytes of the Cache Digest to write to\n#\tdisk at a time.  It defaults to 4096 bytes (4KB), the Squid\n#\tdefault swap page.\n#Default:\n# digest_swapout_chunk_size 4096 bytes\n\n#  TAG: digest_rebuild_chunk_percentage\t(percent, 0-100)\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-cache-digests\n#\n#\tThis is the percentage of the Cache Digest to be scanned at a\n#\ttime.  By default it is set to 10% of the Cache Digest.\n#Default:\n# digest_rebuild_chunk_percentage 10\n\n# SNMP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: snmp_port\n#\tThe port number where Squid listens for SNMP requests. To enable\n#\tSNMP support set this to a suitable port number. Port number\n#\t3401 is often used for the Squid SNMP agent. By default it's\n#\tset to \"0\" (disabled)\n#\n#\tExample:\n#\t\tsnmp_port 3401\n#Default:\n# SNMP disabled.\n\n#  TAG: snmp_access\n#\tAllowing or denying access to the SNMP port.\n#\n#\tAll access to the agent is denied by default.\n#\tusage:\n#\n#\tsnmp_access allow|deny [!]aclname ...\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#Example:\n# snmp_access allow snmppublic localhost\n# snmp_access deny all\n#Default:\n# Deny, unless rules exist in squid.conf.\n\n#  TAG: snmp_incoming_address\n#\tJust like 'udp_incoming_address', but for the SNMP port.\n#\n#\tsnmp_incoming_address\tis used for the SNMP socket receiving\n#\t\t\t\tmessages from SNMP agents.\n#\n#\tThe default snmp_incoming_address is to listen on all\n#\tavailable network interfaces.\n#Default:\n# Accept SNMP packets from all machine interfaces.\n\n#  TAG: snmp_outgoing_address\n#\tJust like 'udp_outgoing_address', but for the SNMP port.\n#\n#\tsnmp_outgoing_address\tis used for SNMP packets returned to SNMP\n#\t\t\t\tagents.\n#\n#\tIf snmp_outgoing_address is not set it will use the same socket\n#\tas snmp_incoming_address. Only change this if you want to have\n#\tSNMP replies sent using another address than where this Squid\n#\tlistens for SNMP queries.\n#\n#\tNOTE, snmp_incoming_address and snmp_outgoing_address can not have\n#\tthe same value since they both use the same port.\n#Default:\n# Use snmp_incoming_address or an address selected by the operating system.\n\n# ICP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: icp_port\n#\tThe port number where Squid sends and receives ICP queries to\n#\tand from neighbor caches.  The standard UDP port for ICP is 3130.\n#\n#\tExample:\n#\t\ticp_port 3130\n#Default:\n# ICP disabled.\n\n#  TAG: htcp_port\n#\tThe port number where Squid sends and receives HTCP queries to\n#\tand from neighbor caches.  To turn it on you want to set it to\n#\t4827.\n#\n#\tExample:\n#\t\thtcp_port 4827\n#Default:\n# HTCP disabled.\n\n#  TAG: log_icp_queries\ton|off\n#\tIf set, ICP queries are logged to access.log. You may wish\n#\tdo disable this if your ICP load is VERY high to speed things\n#\tup or to simplify log analysis.\n#Default:\n# log_icp_queries on\nlog_icp_queries off\n\n#  TAG: udp_incoming_address\n#\tudp_incoming_address\tis used for UDP packets received from other\n#\t\t\t\tcaches.\n#\n#\tThe default behavior is to not bind to any specific address.\n#\n#\tOnly change this if you want to have all UDP queries received on\n#\ta specific interface/address.\n#\n#\tNOTE: udp_incoming_address is used by the ICP, HTCP, and DNS\n#\tmodules. Altering it will affect all of them in the same manner.\n#\n#\tsee also; udp_outgoing_address\n#\n#\tNOTE, udp_incoming_address and udp_outgoing_address can not\n#\thave the same value since they both use the same port.\n#Default:\n# Accept packets from all machine interfaces.\n\n#  TAG: udp_outgoing_address\n#\tudp_outgoing_address\tis used for UDP packets sent out to other\n#\t\t\t\tcaches.\n#\n#\tThe default behavior is to not bind to any specific address.\n#\n#\tInstead it will use the same socket as udp_incoming_address.\n#\tOnly change this if you want to have UDP queries sent using another\n#\taddress than where this Squid listens for UDP queries from other\n#\tcaches.\n#\n#\tNOTE: udp_outgoing_address is used by the ICP, HTCP, and DNS\n#\tmodules. Altering it will affect all of them in the same manner.\n#\n#\tsee also; udp_incoming_address\n#\n#\tNOTE, udp_incoming_address and udp_outgoing_address can not\n#\thave the same value since they both use the same port.\n#Default:\n# Use udp_incoming_address or an address selected by the operating system.\n\n#  TAG: icp_hit_stale\ton|off\n#\tIf you want to return ICP_HIT for stale cache objects, set this\n#\toption to 'on'.  If you have sibling relationships with caches\n#\tin other administrative domains, this should be 'off'.  If you only\n#\thave sibling relationships with caches under your control,\n#\tit is probably okay to set this to 'on'.\n#\tIf set to 'on', your siblings should use the option \"allow-miss\"\n#\ton their cache_peer lines for connecting to you.\n#Default:\n# icp_hit_stale off\n\n#  TAG: minimum_direct_hops\n#\tIf using the ICMP pinging stuff, do direct fetches for sites\n#\twhich are no more than this many hops away.\n#Default:\n# minimum_direct_hops 4\n\n#  TAG: minimum_direct_rtt\t(msec)\n#\tIf using the ICMP pinging stuff, do direct fetches for sites\n#\twhich are no more than this many rtt milliseconds away.\n#Default:\n# minimum_direct_rtt 400\n\n#  TAG: netdb_low\n#\tThe low water mark for the ICMP measurement database.\n#\n#\tNote: high watermark controlled by netdb_high directive.\n#\n#\tThese watermarks are counts, not percents.  The defaults are\n#\t(low) 900 and (high) 1000.  When the high water mark is\n#\treached, database entries will be deleted until the low\n#\tmark is reached.\n#Default:\n# netdb_low 900\n\n#  TAG: netdb_high\n#\tThe high water mark for the ICMP measurement database.\n#\n#\tNote: low watermark controlled by netdb_low directive.\n#\n#\tThese watermarks are counts, not percents.  The defaults are\n#\t(low) 900 and (high) 1000.  When the high water mark is\n#\treached, database entries will be deleted until the low\n#\tmark is reached.\n#Default:\n# netdb_high 1000\n\n#  TAG: netdb_ping_period\n#\tThe minimum period for measuring a site.  There will be at\n#\tleast this much delay between successive pings to the same\n#\tnetwork.  The default is five minutes.\n#Default:\n# netdb_ping_period 5 minutes\n\n#  TAG: query_icmp\ton|off\n#\tIf you want to ask your peers to include ICMP data in their ICP\n#\treplies, enable this option.\n#\n#\tIf your peer has configured Squid (during compilation) with\n#\t'--enable-icmp' that peer will send ICMP pings to origin server\n#\tsites of the URLs it receives.  If you enable this option the\n#\tICP replies from that peer will include the ICMP data (if available).\n#\tThen, when choosing a parent cache, Squid will choose the parent with\n#\tthe minimal RTT to the origin server.  When this happens, the\n#\thierarchy field of the access.log will be\n#\t\"CLOSEST_PARENT_MISS\".  This option is off by default.\n#Default:\n# query_icmp off\n\n#  TAG: test_reachability\ton|off\n#\tWhen this is 'on', ICP MISS replies will be ICP_MISS_NOFETCH\n#\tinstead of ICP_MISS if the target host is NOT in the ICMP\n#\tdatabase, or has a zero RTT.\n#Default:\n# test_reachability off\n\n#  TAG: icp_query_timeout\t(msec)\n#\tNormally Squid will automatically determine an optimal ICP\n#\tquery timeout value based on the round-trip-time of recent ICP\n#\tqueries.  If you want to override the value determined by\n#\tSquid, set this 'icp_query_timeout' to a non-zero value.  This\n#\tvalue is specified in MILLISECONDS, so, to use a 2-second\n#\ttimeout (the old default), you would write:\n#\n#\t\ticp_query_timeout 2000\n#Default:\n# Dynamic detection.\n\n#  TAG: maximum_icp_query_timeout\t(msec)\n#\tNormally the ICP query timeout is determined dynamically.  But\n#\tsometimes it can lead to very large values (say 5 seconds).\n#\tUse this option to put an upper limit on the dynamic timeout\n#\tvalue.  Do NOT use this option to always use a fixed (instead\n#\tof a dynamic) timeout value. To set a fixed timeout see the\n#\t'icp_query_timeout' directive.\n#Default:\n# maximum_icp_query_timeout 2000\n\n#  TAG: minimum_icp_query_timeout\t(msec)\n#\tNormally the ICP query timeout is determined dynamically.  But\n#\tsometimes it can lead to very small timeouts, even lower than\n#\tthe normal latency variance on your link due to traffic.\n#\tUse this option to put an lower limit on the dynamic timeout\n#\tvalue.  Do NOT use this option to always use a fixed (instead\n#\tof a dynamic) timeout value. To set a fixed timeout see the\n#\t'icp_query_timeout' directive.\n#Default:\n# minimum_icp_query_timeout 5\n\n#  TAG: background_ping_rate\ttime-units\n#\tControls how often the ICP pings are sent to siblings that\n#\thave background-ping set.\n#Default:\n# background_ping_rate 10 seconds\n\n# MULTICAST ICP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: mcast_groups\n#\tThis tag specifies a list of multicast groups which your server\n#\tshould join to receive multicasted ICP queries.\n#\n#\tNOTE!  Be very careful what you put here!  Be sure you\n#\tunderstand the difference between an ICP _query_ and an ICP\n#\t_reply_.  This option is to be set only if you want to RECEIVE\n#\tmulticast queries.  Do NOT set this option to SEND multicast\n#\tICP (use cache_peer for that).  ICP replies are always sent via\n#\tunicast, so this option does not affect whether or not you will\n#\treceive replies from multicast group members.\n#\n#\tYou must be very careful to NOT use a multicast address which\n#\tis already in use by another group of caches.\n#\n#\tIf you are unsure about multicast, please read the Multicast\n#\tchapter in the Squid FAQ (http://www.squid-cache.org/FAQ/).\n#\n#\tUsage: mcast_groups 239.128.16.128 224.0.1.20\n#\n#\tBy default, Squid doesn't listen on any multicast groups.\n#Default:\n# none\n\n#  TAG: mcast_miss_addr\n# Note: This option is only available if Squid is rebuilt with the\n#       -DMULTICAST_MISS_STREAM define\n#\n#\tIf you enable this option, every \"cache miss\" URL will\n#\tbe sent out on the specified multicast address.\n#\n#\tDo not enable this option unless you are are absolutely\n#\tcertain you understand what you are doing.\n#Default:\n# disabled.\n\n#  TAG: mcast_miss_ttl\n# Note: This option is only available if Squid is rebuilt with the\n#       -DMULTICAST_MISS_STREAM define\n#\n#\tThis is the time-to-live value for packets multicasted\n#\twhen multicasting off cache miss URLs is enabled.  By\n#\tdefault this is set to 'site scope', i.e. 16.\n#Default:\n# mcast_miss_ttl 16\n\n#  TAG: mcast_miss_port\n# Note: This option is only available if Squid is rebuilt with the\n#       -DMULTICAST_MISS_STREAM define\n#\n#\tThis is the port number to be used in conjunction with\n#\t'mcast_miss_addr'.\n#Default:\n# mcast_miss_port 3135\n\n#  TAG: mcast_miss_encode_key\n# Note: This option is only available if Squid is rebuilt with the\n#       -DMULTICAST_MISS_STREAM define\n#\n#\tThe URLs that are sent in the multicast miss stream are\n#\tencrypted.  This is the encryption key.\n#Default:\n# mcast_miss_encode_key XXXXXXXXXXXXXXXX\n\n#  TAG: mcast_icp_query_timeout\t(msec)\n#\tFor multicast peers, Squid regularly sends out ICP \"probes\" to\n#\tcount how many other peers are listening on the given multicast\n#\taddress.  This value specifies how long Squid should wait to\n#\tcount all the replies.  The default is 2000 msec, or 2\n#\tseconds.\n#Default:\n# mcast_icp_query_timeout 2000\n\n# INTERNAL ICON OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: icon_directory\n#\tWhere the icons are stored. These are normally kept in\n#\t/opt/local/share/squid/icons\n#Default:\n# icon_directory /opt/local/share/squid/icons\n\n#  TAG: global_internal_static\n#\tThis directive controls is Squid should intercept all requests for\n#\t/squid-internal-static/ no matter which host the URL is requesting\n#\t(default on setting), or if nothing special should be done for\n#\tsuch URLs (off setting). The purpose of this directive is to make\n#\ticons etc work better in complex cache hierarchies where it may\n#\tnot always be possible for all corners in the cache mesh to reach\n#\tthe server generating a directory listing.\n#Default:\n# global_internal_static on\n\n#  TAG: short_icon_urls\n#\tIf this is enabled Squid will use short URLs for icons.\n#\tIf disabled it will revert to the old behavior of including\n#\tit's own name and port in the URL.\n#\n#\tIf you run a complex cache hierarchy with a mix of Squid and\n#\tother proxies you may need to disable this directive.\n#Default:\n# short_icon_urls on\n\n# ERROR PAGE OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: error_directory\n#\tIf you wish to create your own versions of the default\n#\terror files to customize them to suit your company copy\n#\tthe error/template files to another directory and point\n#\tthis tag at them.\n#\n#\tWARNING: This option will disable multi-language support\n#\t         on error pages if used.\n#\n#\tThe squid developers are interested in making squid available in\n#\ta wide variety of languages. If you are making translations for a\n#\tlanguage that Squid does not currently provide please consider\n#\tcontributing your translation back to the project.\n#\thttp://wiki.squid-cache.org/Translations\n#\n#\tThe squid developers working on translations are happy to supply drop-in\n#\ttranslated error files in exchange for any new language contributions.\n#Default:\n# Send error pages in the clients preferred language\n\n#  TAG: error_default_language\n#\tSet the default language which squid will send error pages in\n#\tif no existing translation matches the clients language\n#\tpreferences.\n#\n#\tIf unset (default) generic English will be used.\n#\n#\tThe squid developers are interested in making squid available in\n#\ta wide variety of languages. If you are interested in making\n#\ttranslations for any language see the squid wiki for details.\n#\thttp://wiki.squid-cache.org/Translations\n#Default:\n# Generate English language pages.\n\n#  TAG: error_log_languages\n#\tLog to cache.log what languages users are attempting to\n#\tauto-negotiate for translations.\n#\n#\tSuccessful negotiations are not logged. Only failures\n#\thave meaning to indicate that Squid may need an upgrade\n#\tof its error page translations.\n#Default:\n# error_log_languages on\n\n#  TAG: err_page_stylesheet\n#\tCSS Stylesheet to pattern the display of Squid default error pages.\n#\n#\tFor information on CSS see http://www.w3.org/Style/CSS/\n#Default:\n# err_page_stylesheet /opt/local/etc/squid/errorpage.css\n\n#  TAG: err_html_text\n#\tHTML text to include in error messages.  Make this a \"mailto\"\n#\tURL to your admin address, or maybe just a link to your\n#\torganizations Web page.\n#\n#\tTo include this in your error messages, you must rewrite\n#\tthe error template files (found in the \"errors\" directory).\n#\tWherever you want the 'err_html_text' line to appear,\n#\tinsert a %L tag in the error template file.\n#Default:\n# none\n\n#  TAG: email_err_data\ton|off\n#\tIf enabled, information about the occurred error will be\n#\tincluded in the mailto links of the ERR pages (if %W is set)\n#\tso that the email body contains the data.\n#\tSyntax is <A HREF=\"mailto:%w%W\">%w</A>\n#Default:\n# email_err_data on\n\n#  TAG: deny_info\n#\tUsage:   deny_info err_page_name acl\n#\tor       deny_info http://... acl\n#\tor       deny_info TCP_RESET acl\n#\n#\tThis can be used to return a ERR_ page for requests which\n#\tdo not pass the 'http_access' rules.  Squid remembers the last\n#\tacl it evaluated in http_access, and if a 'deny_info' line exists\n#\tfor that ACL Squid returns a corresponding error page.\n#\n#\tThe acl is typically the last acl on the http_access deny line which\n#\tdenied access. The exceptions to this rule are:\n#\t- When Squid needs to request authentication credentials. It's then\n#\t  the first authentication related acl encountered\n#\t- When none of the http_access lines matches. It's then the last\n#\t  acl processed on the last http_access line.\n#\t- When the decision to deny access was made by an adaptation service,\n#\t  the acl name is the corresponding eCAP or ICAP service_name.\n#\n#\tNP: If providing your own custom error pages with error_directory\n#\t    you may also specify them by your custom file name:\n#\t    Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys\n#\n#\tBy defaut Squid will send \"403 Forbidden\". A different 4xx or 5xx\n#\tmay be specified by prefixing the file name with the code and a colon.\n#\te.g. 404:ERR_CUSTOM_ACCESS_DENIED\n#\n#\tAlternatively you can tell Squid to reset the TCP connection\n#\tby specifying TCP_RESET.\n#\n#\tOr you can specify an error URL or URL pattern. The browsers will\n#\tget redirected to the specified URL after formatting tags have\n#\tbeen replaced. Redirect will be done with 302 or 307 according to\n#\tHTTP/1.1 specs. A different 3xx code may be specified by prefixing\n#\tthe URL. e.g. 303:http://example.com/\n#\n#\tURL FORMAT TAGS:\n#\t\t%a\t- username (if available. Password NOT included)\n#\t\t%B\t- FTP path URL\n#\t\t%e\t- Error number\n#\t\t%E\t- Error description\n#\t\t%h\t- Squid hostname\n#\t\t%H\t- Request domain name\n#\t\t%i\t- Client IP Address\n#\t\t%M\t- Request Method\n#\t\t%O\t- Unescaped message result from external ACL helper\n#\t\t%o\t- Message result from external ACL helper\n#\t\t%p\t- Request Port number\n#\t\t%P\t- Request Protocol name\n#\t\t%R\t- Request URL path\n#\t\t%T\t- Timestamp in RFC 1123 format\n#\t\t%U\t- Full canonical URL from client\n#\t\t\t  (HTTPS URLs terminate with *)\n#\t\t%u\t- Full canonical URL from client\n#\t\t%w\t- Admin email from squid.conf\n#\t\t%x\t- Error name\n#\t\t%%\t- Literal percent (%) code\n#\n#Default:\n# none\n\n# OPTIONS INFLUENCING REQUEST FORWARDING \n# -----------------------------------------------------------------------------\n\n#  TAG: nonhierarchical_direct\n#\tBy default, Squid will send any non-hierarchical requests\n#\t(not cacheable request type) direct to origin servers.\n#\n#\tWhen this is set to \"off\", Squid will prefer to send these\n#\trequests to parents.\n#\n#\tNote that in most configurations, by turning this off you will only\n#\tadd latency to these request without any improvement in global hit\n#\tratio.\n#\n#\tThis option only sets a preference. If the parent is unavailable a\n#\tdirect connection to the origin server may still be attempted. To\n#\tcompletely prevent direct connections use never_direct.\n#Default:\n# nonhierarchical_direct on\n\n#  TAG: prefer_direct\n#\tNormally Squid tries to use parents for most requests. If you for some\n#\treason like it to first try going direct and only use a parent if\n#\tgoing direct fails set this to on.\n#\n#\tBy combining nonhierarchical_direct off and prefer_direct on you\n#\tcan set up Squid to use a parent as a backup path if going direct\n#\tfails.\n#\n#\tNote: If you want Squid to use parents for all requests see\n#\tthe never_direct directive. prefer_direct only modifies how Squid\n#\tacts on cacheable requests.\n#Default:\n# prefer_direct off\n\n#  TAG: cache_miss_revalidate\ton|off\n#\tRFC 7232 defines a conditional request mechanism to prevent\n#\tresponse objects being unnecessarily transferred over the network.\n#\tIf that mechanism is used by the client and a cache MISS occurs\n#\tit can prevent new cache entries being created.\n#\n#\tThis option determines whether Squid on cache MISS will pass the\n#\tclient revalidation request to the server or tries to fetch new\n#\tcontent for caching. It can be useful while the cache is mostly\n#\tempty to more quickly have the cache populated by generating\n#\tnon-conditional GETs.\n#\n#\tWhen set to 'on' (default), Squid will pass all client If-* headers\n#\tto the server. This permits server responses without a cacheable\n#\tpayload to be delivered and on MISS no new cache entry is created.\n#\n#\tWhen set to 'off' and if the request is cacheable, Squid will\n#\tremove the clients If-Modified-Since and If-None-Match headers from\n#\tthe request sent to the server. This requests a 200 status response\n#\tfrom the server to create a new cache entry with.\n#Default:\n# cache_miss_revalidate on\n\n#  TAG: always_direct\n#\tUsage: always_direct allow|deny [!]aclname ...\n#\n#\tHere you can use ACL elements to specify requests which should\n#\tALWAYS be forwarded by Squid to the origin servers without using\n#\tany peers.  For example, to always directly forward requests for\n#\tlocal servers ignoring any parents or siblings you may have use\n#\tsomething like:\n#\n#\t\tacl local-servers dstdomain my.domain.net\n#\t\talways_direct allow local-servers\n#\n#\tTo always forward FTP requests directly, use\n#\n#\t\tacl FTP proto FTP\n#\t\talways_direct allow FTP\n#\n#\tNOTE: There is a similar, but opposite option named\n#\t'never_direct'.  You need to be aware that \"always_direct deny\n#\tfoo\" is NOT the same thing as \"never_direct allow foo\".  You\n#\tmay need to use a deny rule to exclude a more-specific case of\n#\tsome other rule.  Example:\n#\n#\t\tacl local-external dstdomain external.foo.net\n#\t\tacl local-servers dstdomain  .foo.net\n#\t\talways_direct deny local-external\n#\t\talways_direct allow local-servers\n#\n#\tNOTE: If your goal is to make the client forward the request\n#\tdirectly to the origin server bypassing Squid then this needs\n#\tto be done in the client configuration. Squid configuration\n#\tcan only tell Squid how Squid should fetch the object.\n#\n#\tNOTE: This directive is not related to caching. The replies\n#\tis cached as usual even if you use always_direct. To not cache\n#\tthe replies see the 'cache' directive.\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Prevent any cache_peer being used for this request.\n\n# Do not send AWS requests through Privoxy\nacl aws-domains dstdomain \\\n      .aws.amazon.com \\\n      .cloudfront.net\nalways_direct allow aws-domains\n\n# See http://www.privoxy.org/user-manual/config.html\n# Define ACL for protocol FTP\nacl ftp proto FTP\nalways_direct allow ftp\n\n# Direct to specified domain names\n#acl mydomainname dstdomain .mydomainname.com\n#always_direct allow mydomainname\n\n# Do not forward SSL requests to Privoxy\n#always_direct allow SSL_ports\n\n#  TAG: never_direct\n#\tUsage: never_direct allow|deny [!]aclname ...\n#\n#\tnever_direct is the opposite of always_direct.  Please read\n#\tthe description for always_direct if you have not already.\n#\n#\tWith 'never_direct' you can use ACL elements to specify\n#\trequests which should NEVER be forwarded directly to origin\n#\tservers.  For example, to force the use of a proxy for all\n#\trequests, except those in your local domain use something like:\n#\n#\t\tacl local-servers dstdomain .foo.net\n#\t\tnever_direct deny local-servers\n#\t\tnever_direct allow all\n#\n#\tor if Squid is inside a firewall and there are local intranet\n#\tservers inside the firewall use something like:\n#\n#\t\tacl local-intranet dstdomain .foo.net\n#\t\tacl local-external dstdomain external.foo.net\n#\t\talways_direct deny local-external\n#\t\talways_direct allow local-intranet\n#\t\tnever_direct allow all\n#\n#\tThis clause supports both fast and slow acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#Default:\n# Allow DNS results to be used for this request.\n\n# See http://www.privoxy.org/user-manual/config.html\n# Forward all the rest to Privoxy\nnever_direct allow all\n\n# ADVANCED NETWORKING OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: incoming_udp_average\n#\tHeavy voodoo here.  I can't even believe you are reading this.\n#\tAre you crazy?  Don't even think about adjusting these unless\n#\tyou understand the algorithms in comm_select.c first!\n#Default:\n# incoming_udp_average 6\n\n#  TAG: incoming_tcp_average\n#\tHeavy voodoo here.  I can't even believe you are reading this.\n#\tAre you crazy?  Don't even think about adjusting these unless\n#\tyou understand the algorithms in comm_select.c first!\n#Default:\n# incoming_tcp_average 4\n\n#  TAG: incoming_dns_average\n#\tHeavy voodoo here.  I can't even believe you are reading this.\n#\tAre you crazy?  Don't even think about adjusting these unless\n#\tyou understand the algorithms in comm_select.c first!\n#Default:\n# incoming_dns_average 4\n\n#  TAG: min_udp_poll_cnt\n#\tHeavy voodoo here.  I can't even believe you are reading this.\n#\tAre you crazy?  Don't even think about adjusting these unless\n#\tyou understand the algorithms in comm_select.c first!\n#Default:\n# min_udp_poll_cnt 8\n\n#  TAG: min_dns_poll_cnt\n#\tHeavy voodoo here.  I can't even believe you are reading this.\n#\tAre you crazy?  Don't even think about adjusting these unless\n#\tyou understand the algorithms in comm_select.c first!\n#Default:\n# min_dns_poll_cnt 8\n\n#  TAG: min_tcp_poll_cnt\n#\tHeavy voodoo here.  I can't even believe you are reading this.\n#\tAre you crazy?  Don't even think about adjusting these unless\n#\tyou understand the algorithms in comm_select.c first!\n#Default:\n# min_tcp_poll_cnt 8\n\n#  TAG: accept_filter\n#\tFreeBSD:\n#\n#\tThe name of an accept(2) filter to install on Squid's\n#\tlisten socket(s).  This feature is perhaps specific to\n#\tFreeBSD and requires support in the kernel.\n#\n#\tThe 'httpready' filter delays delivering new connections\n#\tto Squid until a full HTTP request has been received.\n#\tSee the accf_http(9) man page for details.\n#\n#\tThe 'dataready' filter delays delivering new connections\n#\tto Squid until there is some data to process.\n#\tSee the accf_dataready(9) man page for details.\n#\n#\tLinux:\n#\t\n#\tThe 'data' filter delays delivering of new connections\n#\tto Squid until there is some data to process by TCP_ACCEPT_DEFER.\n#\tYou may optionally specify a number of seconds to wait by\n#\t'data=N' where N is the number of seconds. Defaults to 30\n#\tif not specified.  See the tcp(7) man page for details.\n#EXAMPLE:\n## FreeBSD\n#accept_filter httpready\n## Linux\n#accept_filter data\n#Default:\n# none\n\n#  TAG: client_ip_max_connections\n#\tSet an absolute limit on the number of connections a single\n#\tclient IP can use. Any more than this and Squid will begin to drop\n#\tnew connections from the client until it closes some links.\n#\n#\tNote that this is a global limit. It affects all HTTP, HTCP, Gopher and FTP\n#\tconnections from the client. For finer control use the ACL access controls.\n#\n#\tRequires client_db to be enabled (the default).\n#\n#\tWARNING: This may noticably slow down traffic received via external proxies\n#\tor NAT devices and cause them to rebound error messages back to their clients.\n#Default:\n# No limit.\n\n#  TAG: tcp_recv_bufsize\t(bytes)\n#\tSize of receive buffer to set for TCP sockets.  Probably just\n#\tas easy to change your kernel's default.\n#\tOmit from squid.conf to use the default buffer size.\n#Default:\n# Use operating system TCP defaults.\n\n# ICAP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: icap_enable\ton|off\n#\tIf you want to enable the ICAP module support, set this to on.\n#Default:\n# icap_enable off\n\n#  TAG: icap_connect_timeout\n#\tThis parameter specifies how long to wait for the TCP connect to\n#\tthe requested ICAP server to complete before giving up and either\n#\tterminating the HTTP transaction or bypassing the failure.\n#\n#\tThe default for optional services is peer_connect_timeout.\n#\tThe default for essential services is connect_timeout.\n#\tIf this option is explicitly set, its value applies to all services.\n#Default:\n# none\n\n#  TAG: icap_io_timeout\ttime-units\n#\tThis parameter specifies how long to wait for an I/O activity on\n#\tan established, active ICAP connection before giving up and\n#\teither terminating the HTTP transaction or bypassing the\n#\tfailure.\n#Default:\n# Use read_timeout.\n\n#  TAG: icap_service_failure_limit\tlimit [in memory-depth time-units]\n#\tThe limit specifies the number of failures that Squid tolerates\n#\twhen establishing a new TCP connection with an ICAP service. If\n#\tthe number of failures exceeds the limit, the ICAP service is\n#\tnot used for new ICAP requests until it is time to refresh its\n#\tOPTIONS.\n#\n#\tA negative value disables the limit. Without the limit, an ICAP\n#\tservice will not be considered down due to connectivity failures\n#\tbetween ICAP OPTIONS requests.\n#\n#\tSquid forgets ICAP service failures older than the specified\n#\tvalue of memory-depth. The memory fading algorithm \n#\tis approximate because Squid does not remember individual \n#\terrors but groups them instead, splitting the option\n#\tvalue into ten time slots of equal length.\n#\n#\tWhen memory-depth is 0 and by default this option has no \n#\teffect on service failure expiration.\n#\n#\tSquid always forgets failures when updating service settings\n#\tusing an ICAP OPTIONS transaction, regardless of this option\n#\tsetting.\n#\n#\tFor example,\n#\t\t# suspend service usage after 10 failures in 5 seconds:\n#\t\ticap_service_failure_limit 10 in 5 seconds\n#Default:\n# icap_service_failure_limit 10\n\n#  TAG: icap_service_revival_delay\n#\tThe delay specifies the number of seconds to wait after an ICAP\n#\tOPTIONS request failure before requesting the options again. The\n#\tfailed ICAP service is considered \"down\" until fresh OPTIONS are\n#\tfetched.\n#\n#\tThe actual delay cannot be smaller than the hardcoded minimum\n#\tdelay of 30 seconds.\n#Default:\n# icap_service_revival_delay 180\n\n#  TAG: icap_preview_enable\ton|off\n#\tThe ICAP Preview feature allows the ICAP server to handle the\n#\tHTTP message by looking only at the beginning of the message body\n#\tor even without receiving the body at all. In some environments, \n#\tpreviews greatly speedup ICAP processing.\n#\n#\tDuring an ICAP OPTIONS transaction, the server may tell\tSquid what\n#\tHTTP messages should be previewed and how big the preview should be.\n#\tSquid will not use Preview if the server did not request one.\n#\n#\tTo disable ICAP Preview for all ICAP services, regardless of\n#\tindividual ICAP server OPTIONS responses, set this option to \"off\".\n#Example:\n#icap_preview_enable off\n#Default:\n# icap_preview_enable on\n\n#  TAG: icap_preview_size\n#\tThe default size of preview data to be sent to the ICAP server.\n#\tThis value might be overwritten on a per server basis by OPTIONS requests.\n#Default:\n# No preview sent.\n\n#  TAG: icap_206_enable\ton|off\n#\t206 (Partial Content) responses is an ICAP extension that allows the\n#\tICAP agents to optionally combine adapted and original HTTP message\n#\tcontent. The decision to combine is postponed until the end of the\n#\tICAP response. Squid supports Partial Content extension by default.\n#\n#\tActivation of the Partial Content extension is negotiated with each\n#\tICAP service during OPTIONS exchange. Most ICAP servers should handle\n#\tnegotation correctly even if they do not support the extension, but\n#\tsome might fail. To disable Partial Content support for all ICAP\n#\tservices and to avoid any negotiation, set this option to \"off\".\n#\n#\tExample:\n#\t    icap_206_enable off\n#Default:\n# icap_206_enable on\n\n#  TAG: icap_default_options_ttl\n#\tThe default TTL value for ICAP OPTIONS responses that don't have\n#\tan Options-TTL header.\n#Default:\n# icap_default_options_ttl 60\n\n#  TAG: icap_persistent_connections\ton|off\n#\tWhether or not Squid should use persistent connections to\n#\tan ICAP server.\n#Default:\n# icap_persistent_connections on\n\n#  TAG: adaptation_send_client_ip\ton|off\n#\tIf enabled, Squid shares HTTP client IP information with adaptation\n#\tservices. For ICAP, Squid adds the X-Client-IP header to ICAP requests.\n#\tFor eCAP, Squid sets the libecap::metaClientIp transaction option.\n#\n#\tSee also: adaptation_uses_indirect_client\n#Default:\n# adaptation_send_client_ip off\n\n#  TAG: adaptation_send_username\ton|off\n#\tThis sends authenticated HTTP client username (if available) to\n#\tthe adaptation service.\n#\n#\tFor ICAP, the username value is encoded based on the\n#\ticap_client_username_encode option and is sent using the header\n#\tspecified by the icap_client_username_header option.\n#Default:\n# adaptation_send_username off\n\n#  TAG: icap_client_username_header\n#\tICAP request header name to use for adaptation_send_username.\n#Default:\n# icap_client_username_header X-Client-Username\n\n#  TAG: icap_client_username_encode\ton|off\n#\tWhether to base64 encode the authenticated client username.\n#Default:\n# icap_client_username_encode off\n\n#  TAG: icap_service\n#\tDefines a single ICAP service using the following format:\n#\n#\ticap_service id vectoring_point uri [option ...]\n#\n#\tid: ID\n#\t\tan opaque identifier or name which is used to direct traffic to\n#\t\tthis specific service. Must be unique among all adaptation\n#\t\tservices in squid.conf.\n#\n#\tvectoring_point: reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache\n#\t\tThis specifies at which point of transaction processing the\n#\t\tICAP service should be activated. *_postcache vectoring points\n#\t\tare not yet supported.\n#\n#\turi: icap://servername:port/servicepath\n#\t\tICAP server and service location.\n#\t     icaps://servername:port/servicepath\n#\t\tThe \"icap:\" URI scheme is used for traditional ICAP server and\n#\t\tservice location (default port is 1344, connections are not\n#\t\tencrypted). The \"icaps:\" URI scheme is for Secure ICAP\n#\t\tservices that use SSL/TLS-encrypted ICAP connections (by\n#\t\tdefault, on port 11344).\n#\n#\tICAP does not allow a single service to handle both REQMOD and RESPMOD\n#\ttransactions. Squid does not enforce that requirement. You can specify\n#\tservices with the same service_url and different vectoring_points. You\n#\tcan even specify multiple identical services as long as their\n#\tservice_names differ.\n#\n#\tTo activate a service, use the adaptation_access directive. To group\n#\tservices, use adaptation_service_chain and adaptation_service_set.\n#\n#\tService options are separated by white space. ICAP services support\n#\tthe following name=value options:\n#\n#\tbypass=on|off|1|0\n#\t\tIf set to 'on' or '1', the ICAP service is treated as\n#\t\toptional. If the service cannot be reached or malfunctions,\n#\t\tSquid will try to ignore any errors and process the message as\n#\t\tif the service was not enabled. No all ICAP errors can be\n#\t\tbypassed.  If set to 0, the ICAP service is treated as\n#\t\tessential and all ICAP errors will result in an error page\n#\t\treturned to the HTTP client.\n#\n#\t\tBypass is off by default: services are treated as essential.\n#\n#\trouting=on|off|1|0\n#\t\tIf set to 'on' or '1', the ICAP service is allowed to\n#\t\tdynamically change the current message adaptation plan by\n#\t\treturning a chain of services to be used next. The services\n#\t\tare specified using the X-Next-Services ICAP response header\n#\t\tvalue, formatted as a comma-separated list of service names.\n#\t\tEach named service should be configured in squid.conf. Other\n#\t\tservices are ignored. An empty X-Next-Services value results\n#\t\tin an empty plan which ends the current adaptation.\n#\n#\t\tDynamic adaptation plan may cross or cover multiple supported\n#\t\tvectoring points in their natural processing order.\n#\n#\t\tRouting is not allowed by default: the ICAP X-Next-Services\n#\t\tresponse header is ignored.\n#\n#\tipv6=on|off\n#\t\tOnly has effect on split-stack systems. The default on those systems\n#\t\tis to use IPv4-only connections. When set to 'on' this option will\n#\t\tmake Squid use IPv6-only connections to contact this ICAP service.\n#\n#\ton-overload=block|bypass|wait|force\n#\t\tIf the service Max-Connections limit has been reached, do\n#\t\tone of the following for each new ICAP transaction:\n#\t\t  * block:  send an HTTP error response to the client\n#\t\t  * bypass: ignore the \"over-connected\" ICAP service\n#\t\t  * wait:   wait (in a FIFO queue) for an ICAP connection slot\n#\t\t  * force:  proceed, ignoring the Max-Connections limit \n#\n#\t\tIn SMP mode with N workers, each worker assumes the service\n#\t\tconnection limit is Max-Connections/N, even though not all\n#\t\tworkers may use a given service.\n#\n#\t\tThe default value is \"bypass\" if service is bypassable,\n#\t\totherwise it is set to \"wait\".\n#\t\t\n#\n#\tmax-conn=number\n#\t\tUse the given number as the Max-Connections limit, regardless\n#\t\tof the Max-Connections value given by the service, if any.\n#\n#\tconnection-encryption=on|off\n#\t\tDetermines the ICAP service effect on the connections_encrypted\n#\t\tACL.\n#\n#\t\tThe default is \"on\" for Secure ICAP services (i.e., those\n#\t\twith the icaps:// service URIs scheme) and \"off\" for plain ICAP\n#\t\tservices.\n#\n#\t\tDoes not affect ICAP connections (e.g., does not turn Secure\n#\t\tICAP on or off).\n#\n#\t==== ICAPS / TLS OPTIONS ====\n#\n#\tThese options are used for Secure ICAP (icaps://....) services only.\n#\n#\ttls-cert=/path/to/ssl/certificate\n#\t\t\tA client X.509 certificate to use when connecting to\n#\t\t\tthis ICAP server.\n#\n#\ttls-key=/path/to/ssl/key\n#\t\t\tThe private key corresponding to the previous\n#\t\t\ttls-cert= option.\n#\n#\t\t\tIf tls-key= is not specified tls-cert= is assumed to\n#\t\t\treference a PEM file containing both the certificate\n#\t\t\tand private key.\n#\n#\ttls-cipher=...\tThe list of valid TLS/SSL ciphers to use when connecting\n#\t\t\tto this icap server.\n#\n#\ttls-min-version=1.N\n#\t\t\tThe minimum TLS protocol version to permit. To control\n#\t\t\tSSLv3 use the tls-options= parameter.\n#\t\t\tSupported Values: 1.0 (default), 1.1, 1.2\n#\n#\ttls-options=...\tSpecify various OpenSSL library options:\n#\n#\t\t\t    NO_SSLv3    Disallow the use of SSLv3\n#\n#\t\t\t    SINGLE_DH_USE\n#\t\t\t\t      Always create a new key when using\n#\t\t\t\t      temporary/ephemeral DH key exchanges\n#\n#\t\t\t    ALL       Enable various bug workarounds\n#\t\t\t\t      suggested as \"harmless\" by OpenSSL\n#\t\t\t\t      Be warned that this reduces SSL/TLS\n#\t\t\t\t      strength to some attacks.\n#\n#\t\t\tSee the OpenSSL SSL_CTX_set_options documentation for a\n#\t\t\tmore complete list. Options relevant only to SSLv2 are\n#\t\t\tnot supported.\n#\n#\ttls-cafile=\tPEM file containing CA certificates to use when verifying\n#\t\t\tthe icap server certificate.\n#\t\t\tUse to specify intermediate CA certificate(s) if not sent\n#\t\t\tby the server. Or the full CA chain for the server when\n#\t\t\tusing the tls-default-ca=off flag.\n#\t\t\tMay be repeated to load multiple files.\n#\n#\ttls-capath=...\tA directory containing additional CA certificates to\n#\t\t\tuse when verifying the icap server certificate.\n#\t\t\tRequires OpenSSL or LibreSSL.\n#\n#\ttls-crlfile=...\tA certificate revocation list file to use when\n#\t\t\tverifying the icap server certificate.\n#\n#\ttls-flags=...\tSpecify various flags modifying the Squid TLS implementation:\n#\n#\t\t\tDONT_VERIFY_PEER\n#\t\t\t\tAccept certificates even if they fail to\n#\t\t\t\tverify.\n#\t\t\tDONT_VERIFY_DOMAIN\n#\t\t\t\tDon't verify the icap server certificate\n#\t\t\t\tmatches the server name\n#\n#\ttls-default-ca[=off]\n#\t\t\tWhether to use the system Trusted CAs. Default is ON.\n#\n#\ttls-domain=\tThe icap server name as advertised in it's certificate.\n#\t\t\tUsed for verifying the correctness of the received icap\n#\t\t\tserver certificate. If not specified the icap server\n#\t\t\thostname extracted from ICAP URI will be used.\n#\n#\tOlder icap_service format without optional named parameters is\n#\tdeprecated but supported for backward compatibility.\n#\n#Example:\n#icap_service svcBlocker reqmod_precache icap://icap1.mydomain.net:1344/reqmod bypass=0\n#icap_service svcLogger reqmod_precache icaps://icap2.mydomain.net:11344/reqmod routing=on\n#Default:\n# none\n\n#  TAG: icap_class\n#\tThis deprecated option was documented to define an ICAP service\n#\tchain, even though it actually defined a set of similar, redundant\n#\tservices, and the chains were not supported. \n#\n#\tTo define a set of redundant services, please use the\n#\tadaptation_service_set directive. For service chains, use\n#\tadaptation_service_chain.\n#Default:\n# none\n\n#  TAG: icap_access\n#\tThis option is deprecated. Please use adaptation_access, which\n#\thas the same ICAP functionality, but comes with better\n#\tdocumentation, and eCAP support.\n#Default:\n# none\n\n# eCAP OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: ecap_enable\ton|off\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-ecap\n#\n#\tControls whether eCAP support is enabled.\n#Default:\n# ecap_enable off\n\n#  TAG: ecap_service\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-ecap\n#\n#\tDefines a single eCAP service\n#\n#\tecap_service id vectoring_point uri [option ...]\n#\n#        id: ID\n#\t\tan opaque identifier or name which is used to direct traffic to\n#\t\tthis specific service. Must be unique among all adaptation\n#\t\tservices in squid.conf.\n#\n#\tvectoring_point: reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache\n#\t\tThis specifies at which point of transaction processing the\n#\t\teCAP service should be activated. *_postcache vectoring points\n#\t\tare not yet supported.\n#\n#\turi: ecap://vendor/service_name?custom&cgi=style&parameters=optional\n#\t\tSquid uses the eCAP service URI to match this configuration\n#\t\tline with one of the dynamically loaded services. Each loaded\n#\t\teCAP service must have a unique URI. Obtain the right URI from\n#\t\tthe service provider.\n#\n#\tTo activate a service, use the adaptation_access directive. To group\n#\tservices, use adaptation_service_chain and adaptation_service_set.\n#\n#\tService options are separated by white space. eCAP services support\n#\tthe following name=value options:\n#\n#\tbypass=on|off|1|0\n#\t\tIf set to 'on' or '1', the eCAP service is treated as optional.\n#\t\tIf the service cannot be reached or malfunctions, Squid will try\n#\t\tto ignore any errors and process the message as if the service\n#\t\twas not enabled. No all eCAP errors can be bypassed.\n#\t\tIf set to 'off' or '0', the eCAP service is treated as essential\n#\t\tand all eCAP errors will result in an error page returned to the\n#\t\tHTTP client.\n#\n#                Bypass is off by default: services are treated as essential.\n#\n#\trouting=on|off|1|0\n#\t\tIf set to 'on' or '1', the eCAP service is allowed to\n#\t\tdynamically change the current message adaptation plan by\n#\t\treturning a chain of services to be used next.\n#\n#\t\tDynamic adaptation plan may cross or cover multiple supported\n#\t\tvectoring points in their natural processing order.\n#\n#\t\tRouting is not allowed by default.\n#\n#\tconnection-encryption=on|off\n#\t\tDetermines the eCAP service effect on the connections_encrypted\n#\t\tACL. \n#\n#\t\tDefaults to \"on\", which does not taint the master transaction\n#\t\tw.r.t. that ACL.\n#\n#\t\tDoes not affect eCAP API calls.\n#\n#\tOlder ecap_service format without optional named parameters is\n#\tdeprecated but supported for backward compatibility.\n#\n#\n#Example:\n#ecap_service s1 reqmod_precache ecap://filters.R.us/leakDetector?on_error=block bypass=off\n#ecap_service s2 respmod_precache ecap://filters.R.us/virusFilter config=/etc/vf.cfg bypass=on\n#Default:\n# none\n\n#  TAG: loadable_modules\n# Note: This option is only available if Squid is rebuilt with the\n#       --enable-loadable-modules\n#\n#\tInstructs Squid to load the specified dynamic module(s) or activate\n#\tpreloaded module(s).\n#Example:\n#loadable_modules /opt/local/lib/MinimalAdapter.so\n#Default:\n# none\n\n# MESSAGE ADAPTATION OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: adaptation_service_set\n#\n#\tConfigures an ordered set of similar, redundant services. This is\n#\tuseful when hot standby or backup adaptation servers are available.\n#\n#\t    adaptation_service_set set_name service_name1 service_name2 ...\n#\n# \tThe named services are used in the set declaration order. The first\n#\tapplicable adaptation service from the set is used first. The next\n#\tapplicable service is tried if and only if the transaction with the\n#\tprevious service fails and the message waiting to be adapted is still\n#\tintact.\n#\n#\tWhen adaptation starts, broken services are ignored as if they were\n#\tnot a part of the set. A broken service is a down optional service.\n#\n#\tThe services in a set must be attached to the same vectoring point\n#\t(e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).\n#\n#\tIf all services in a set are optional then adaptation failures are\n#\tbypassable. If all services in the set are essential, then a\n#\ttransaction failure with one service may still be retried using\n#\tanother service from the set, but when all services fail, the master\n#\ttransaction fails as well.\n#\n#\tA set may contain a mix of optional and essential services, but that\n#\tis likely to lead to surprising results because broken services become\n#\tignored (see above), making previously bypassable failures fatal.\n#\tTechnically, it is the bypassability of the last failed service that\n#\tmatters.\n#\n#\tSee also: adaptation_access adaptation_service_chain\n#\n#Example:\n#adaptation_service_set svcBlocker urlFilterPrimary urlFilterBackup\n#adaptation service_set svcLogger loggerLocal loggerRemote\n#Default:\n# none\n\n#  TAG: adaptation_service_chain\n#\n#\tConfigures a list of complementary services that will be applied\n#\tone-by-one, forming an adaptation chain or pipeline. This is useful\n#\twhen Squid must perform different adaptations on the same message.\n#\n#\t    adaptation_service_chain chain_name service_name1 svc_name2 ...\n#\n# \tThe named services are used in the chain declaration order. The first\n#\tapplicable adaptation service from the chain is used first. The next\n#\tapplicable service is applied to the successful adaptation results of\n#\tthe previous service in the chain.\n#\n#\tWhen adaptation starts, broken services are ignored as if they were\n#\tnot a part of the chain. A broken service is a down optional service.\n#\n#\tRequest satisfaction terminates the adaptation chain because Squid\n#\tdoes not currently allow declaration of RESPMOD services at the\n#\t\"reqmod_precache\" vectoring point (see icap_service or ecap_service).\n#\n#\tThe services in a chain must be attached to the same vectoring point\n#\t(e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).\n#\n#\tA chain may contain a mix of optional and essential services. If an\n#\tessential adaptation fails (or the failure cannot be bypassed for\n#\tother reasons), the master transaction fails. Otherwise, the failure\n#\tis bypassed as if the failed adaptation service was not in the chain.\n#\n#\tSee also: adaptation_access adaptation_service_set\n#\n#Example:\n#adaptation_service_chain svcRequest requestLogger urlFilter leakDetector\n#Default:\n# none\n\n#  TAG: adaptation_access\n#\tSends an HTTP transaction to an ICAP or eCAP adaptation\tservice.\n#\n#\tadaptation_access service_name allow|deny [!]aclname...\n#\tadaptation_access set_name     allow|deny [!]aclname...\n#\n#\tAt each supported vectoring point, the adaptation_access\n#\tstatements are processed in the order they appear in this\n#\tconfiguration file. Statements pointing to the following services\n#\tare ignored (i.e., skipped without checking their ACL):\n#\n#\t    - services serving different vectoring points\n#\t    - \"broken-but-bypassable\" services\n#\t    - \"up\" services configured to ignore such transactions\n#              (e.g., based on the ICAP Transfer-Ignore header).\n#\n#        When a set_name is used, all services in the set are checked\n#\tusing the same rules, to find the first applicable one. See\n#\tadaptation_service_set for details.\n#\n#\tIf an access list is checked and there is a match, the\n#\tprocessing stops: For an \"allow\" rule, the corresponding\n#\tadaptation service is used for the transaction. For a \"deny\"\n#\trule, no adaptation service is activated.\n#\n#\tIt is currently not possible to apply more than one adaptation\n#\tservice at the same vectoring point to the same HTTP transaction.\n#\n#        See also: icap_service and ecap_service\n#\n#Example:\n#adaptation_access service_1 allow all\n#Default:\n# Allow, unless rules exist in squid.conf.\n\n#  TAG: adaptation_service_iteration_limit\n#\tLimits the number of iterations allowed when applying adaptation\n#\tservices to a message. If your longest adaptation set or chain\n#\tmay have more than 16 services, increase the limit beyond its\n#\tdefault value of 16. If detecting infinite iteration loops sooner\n#\tis critical, make the iteration limit match the actual number\n#\tof services in your longest adaptation set or chain.\n#\n#\tInfinite adaptation loops are most likely with routing services.\n#\n#\tSee also: icap_service routing=1\n#Default:\n# adaptation_service_iteration_limit 16\n\n#  TAG: adaptation_masterx_shared_names\n#\tFor each master transaction (i.e., the HTTP request and response\n#\tsequence, including all related ICAP and eCAP exchanges), Squid\n#\tmaintains a table of metadata. The table entries are (name, value)\n#\tpairs shared among eCAP and ICAP exchanges. The table is destroyed\n#\twith the master transaction.\n#\n#\tThis option specifies the table entry names that Squid must accept\n#\tfrom and forward to the adaptation transactions.\n#\n#\tAn ICAP REQMOD or RESPMOD transaction may set an entry in the \n#\tshared table by returning an ICAP header field with a name \n#\tspecified in adaptation_masterx_shared_names.\n#\n#\tAn eCAP REQMOD or RESPMOD transaction may set an entry in the\n#\tshared table by implementing the libecap::visitEachOption() API\n#\tto provide an option with a name specified in\n#\tadaptation_masterx_shared_names.\n#\n#\tSquid will store and forward the set entry to subsequent adaptation\n#\ttransactions within the same master transaction scope.\n#\n#\tOnly one shared entry name is supported at this time.\n#\n#Example:\n## share authentication information among ICAP services\n#adaptation_masterx_shared_names X-Subscriber-ID\n#Default:\n# none\n\n#  TAG: adaptation_meta\n#\tThis option allows Squid administrator to add custom ICAP request\n#\theaders or eCAP options to Squid ICAP requests or eCAP transactions.\n#\tUse it to pass custom authentication tokens and other\n#\ttransaction-state related meta information to an ICAP/eCAP service.\n#\t\n#\tThe addition of a meta header is ACL-driven:\n#\t\tadaptation_meta name value [!]aclname ...\n#\t\n#\tProcessing for a given header name stops after the first ACL list match.\n#\tThus, it is impossible to add two headers with the same name. If no ACL\n#\tlists match for a given header name, no such header is added. For \n#\texample:\n#\t\n#\t\t# do not debug transactions except for those that need debugging\n#\t\tadaptation_meta X-Debug 1 needs_debugging\n#\t\n#\t\t# log all transactions except for those that must remain secret\n#\t\tadaptation_meta X-Log 1 !keep_secret\n#\t\n#\t\t# mark transactions from users in the \"G 1\" group\n#\t\tadaptation_meta X-Authenticated-Groups \"G 1\" authed_as_G1\n#\t\n#\tThe \"value\" parameter may be a regular squid.conf token or a \"double\n#\tquoted string\". Within the quoted string, use backslash (\\) to escape\n#\tany character, which is currently only useful for escaping backslashes\n#\tand double quotes. For example,\n#\t    \"this string has one backslash (\\\\) and two \\\"quotes\\\"\"\n#\n#\tUsed adaptation_meta header values may be logged via %note\n#\tlogformat code. If multiple adaptation_meta headers with the same name\n#\tare used during master transaction lifetime, the header values are\n#\tlogged in the order they were used and duplicate values are ignored\n#\t(only the first repeated value will be logged).\n#Default:\n# none\n\n#  TAG: icap_retry\n#\tThis ACL determines which retriable ICAP transactions are\n#\tretried. Transactions that received a complete ICAP response\n#\tand did not have to consume or produce HTTP bodies to receive\n#\tthat response are usually retriable.\n#\n#\ticap_retry allow|deny [!]aclname ...\n#\n#\tSquid automatically retries some ICAP I/O timeouts and errors\n#\tdue to persistent connection race conditions.\n#\n#\tSee also: icap_retry_limit\n#Default:\n# icap_retry deny all\n\n#  TAG: icap_retry_limit\n#\tLimits the number of retries allowed.\n#\n#\tCommunication errors due to persistent connection race\n#\tconditions are unavoidable, automatically retried, and do not\n#\tcount against this limit.\n#\n#\tSee also: icap_retry\n#Default:\n# No retries are allowed.\n\n# DNS OPTIONS\n# -----------------------------------------------------------------------------\n\n#  TAG: check_hostnames\n#\tFor security and stability reasons Squid can check\n#\thostnames for Internet standard RFC compliance. If you want\n#\tSquid to perform these checks turn this directive on.\n#Default:\n# check_hostnames off\n\n#  TAG: allow_underscore\n#\tUnderscore characters is not strictly allowed in Internet hostnames\n#\tbut nevertheless used by many sites. Set this to off if you want\n#\tSquid to be strict about the standard.\n#\tThis check is performed only when check_hostnames is set to on.\n#Default:\n# allow_underscore on\n\n#  TAG: dns_retransmit_interval\n#\tInitial retransmit interval for DNS queries. The interval is\n#\tdoubled each time all configured DNS servers have been tried.\n#Default:\n# dns_retransmit_interval 5 seconds\n\n#  TAG: dns_timeout\n#\tDNS Query timeout. If no response is received to a DNS query\n#\twithin this time all DNS servers for the queried domain\n#\tare assumed to be unavailable.\n#Default:\n# dns_timeout 30 seconds\n\n#  TAG: dns_packet_max\n#\tMaximum number of bytes packet size to advertise via EDNS.\n#\tSet to \"none\" to disable EDNS large packet support.\n#\t\n#\tFor legacy reasons DNS UDP replies will default to 512 bytes which\n#\tis too small for many responses. EDNS provides a means for Squid to\n#\tnegotiate receiving larger responses back immediately without having\n#\tto failover with repeat requests. Responses larger than this limit\n#\twill retain the old behaviour of failover to TCP DNS.\n#\t\n#\tSquid has no real fixed limit internally, but allowing packet sizes\n#\tover 1500 bytes requires network jumbogram support and is usually not\n#\tnecessary.\n#\t\n#\tWARNING: The RFC also indicates that some older resolvers will reply\n#\twith failure of the whole request if the extension is added. Some\n#\tresolvers have already been identified which will reply with mangled\n#\tEDNS response on occasion. Usually in response to many-KB jumbogram\n#\tsizes being advertised by Squid.\n#\tSquid will currently treat these both as an unable-to-resolve domain\n#\teven if it would be resolvable without EDNS.\n#Default:\n# EDNS disabled\n\n#  TAG: dns_defnames\ton|off\n#\tNormally the RES_DEFNAMES resolver option is disabled\n#\t(see res_init(3)).  This prevents caches in a hierarchy\n#\tfrom interpreting single-component hostnames locally.  To allow\n#\tSquid to handle single-component names, enable this option.\n#Default:\n# Search for single-label domain names is disabled.\n\n#  TAG: dns_multicast_local\ton|off\n#\tWhen set to on, Squid sends multicast DNS lookups on the local\n#\tnetwork for domains ending in .local and .arpa.\n#\tThis enables local servers and devices to be contacted in an\n#\tad-hoc or zero-configuration network environment.\n#Default:\n# Search for .local and .arpa names is disabled.\n\n#  TAG: dns_nameservers\n#\tUse this if you want to specify a list of DNS name servers\n#\t(IP addresses) to use instead of those given in your\n#\t/etc/resolv.conf file.\n#\n#\tOn Windows platforms, if no value is specified here or in\n#\tthe /etc/resolv.conf file, the list of DNS name servers are\n#\ttaken from the Windows registry, both static and dynamic DHCP\n#\tconfigurations are supported.\n#\n#\tExample: dns_nameservers 10.0.0.1 192.172.0.4\n#Default:\n# Use operating system definitions\n\n# Google DNS\ndns_nameservers 8.8.8.8 4.4.4.4\n\n# Use LAN IP with possible backup if you're running DNS yourself\n#dns_nameservers 10.0.1.3\n\n#  TAG: hosts_file\n#\tLocation of the host-local IP name-address associations\n#\tdatabase. Most Operating Systems have such a file on different\n#\tdefault locations:\n#\t- Un*X & Linux:    /etc/hosts\n#\t- Windows NT/2000: %SystemRoot%\\system32\\drivers\\etc\\hosts\n#\t\t\t   (%SystemRoot% value install default is c:\\winnt)\n#\t- Windows XP/2003: %SystemRoot%\\system32\\drivers\\etc\\hosts\n#\t\t\t   (%SystemRoot% value install default is c:\\windows)\n#\t- Windows 9x/Me:   %windir%\\hosts\n#\t\t\t   (%windir% value is usually c:\\windows)\n#\t- Cygwin:\t   /etc/hosts\n#\n#\tThe file contains newline-separated definitions, in the\n#\tform ip_address_in_dotted_form name [name ...] names are\n#\twhitespace-separated. Lines beginning with an hash (#)\n#\tcharacter are comments.\n#\n#\tThe file is checked at startup and upon configuration.\n#\tIf set to 'none', it won't be checked.\n#\tIf append_domain is used, that domain will be added to\n#\tdomain-local (i.e. not containing any dot character) host\n#\tdefinitions.\n#Default:\n# hosts_file /etc/hosts\nhosts_file /etc/hosts-hphosts\n\n#  TAG: append_domain\n#\tAppends local domain name to hostnames without any dots in\n#\tthem.  append_domain must begin with a period.\n#\n#\tBe warned there are now Internet names with no dots in\n#\tthem using only top-domain names, so setting this may\n#\tcause some Internet sites to become unavailable.\n#\n#Example:\n# append_domain .yourdomain.com\n#Default:\n# Use operating system definitions\n\n#  TAG: ignore_unknown_nameservers\n#\tBy default Squid checks that DNS responses are received\n#\tfrom the same IP addresses they are sent to.  If they\n#\tdon't match, Squid ignores the response and writes a warning\n#\tmessage to cache.log.  You can allow responses from unknown\n#\tnameservers by setting this option to 'off'.\n#Default:\n# ignore_unknown_nameservers on\n\n#  TAG: dns_v4_first\n#\tWith the IPv6 Internet being as fast or faster than IPv4 Internet\n#\tfor most networks Squid prefers to contact websites over IPv6.\n#\n#\tThis option reverses the order of preference to make Squid contact\n#\tdual-stack websites over IPv4 first. Squid will still perform both\n#\tIPv6 and IPv4 DNS lookups before connecting.\n#\n#\tWARNING:\n#\t  This option will restrict the situations under which IPv6\n#\t  connectivity is used (and tested). Hiding network problems\n#\t  which would otherwise be detected and warned about.\n#Default:\n# dns_v4_first off\n\n#  TAG: ipcache_size\t(number of entries)\n#\tMaximum number of DNS IP cache entries.\n#Default:\n# ipcache_size 1024\nipcache_size 16384\n\n#  TAG: ipcache_low\t(percent)\n#Default:\n# ipcache_low 90\n\n#  TAG: ipcache_high\t(percent)\n#\tThe size, low-, and high-water marks for the IP cache.\n#Default:\n# ipcache_high 95\n\n#  TAG: fqdncache_size\t(number of entries)\n#\tMaximum number of FQDN cache entries.\n#Default:\n# fqdncache_size 1024\nfqdncache_size 1048576\n\n# MISCELLANEOUS\n# -----------------------------------------------------------------------------\n\n#  TAG: configuration_includes_quoted_values\ton|off\n#\tIf set, Squid will recognize each \"quoted string\" after a configuration\n#\tdirective as a single parameter. The quotes are stripped before the\n#\tparameter value is interpreted or used.\n#\tSee \"Values with spaces, quotes, and other special characters\"\n#\tsection for more details.\n#Default:\n# configuration_includes_quoted_values off\n\n#  TAG: memory_pools\ton|off\n#\tIf set, Squid will keep pools of allocated (but unused) memory\n#\tavailable for future use.  If memory is a premium on your\n#\tsystem and you believe your malloc library outperforms Squid\n#\troutines, disable this.\n#Default:\n# memory_pools on\nmemory_pools off\n\n#  TAG: memory_pools_limit\t(bytes)\n#\tUsed only with memory_pools on:\n#\tmemory_pools_limit 50 MB\n#\n#\tIf set to a non-zero value, Squid will keep at most the specified\n#\tlimit of allocated (but unused) memory in memory pools. All free()\n#\trequests that exceed this limit will be handled by your malloc\n#\tlibrary. Squid does not pre-allocate any memory, just safe-keeps\n#\tobjects that otherwise would be free()d. Thus, it is safe to set\n#\tmemory_pools_limit to a reasonably high value even if your\n#\tconfiguration will use less memory.\n#\n#\tIf set to none, Squid will keep all memory it can. That is, there\n#\twill be no limit on the total amount of memory used for safe-keeping.\n#\n#\tTo disable memory allocation optimization, do not set\n#\tmemory_pools_limit to 0 or none. Set memory_pools to \"off\" instead.\n#\n#\tAn overhead for maintaining memory pools is not taken into account\n#\twhen the limit is checked. This overhead is close to four bytes per\n#\tobject kept. However, pools may actually _save_ memory because of\n#\treduced memory thrashing in your malloc library.\n#Default:\n# memory_pools_limit 5 MB\n\n#  TAG: forwarded_for\ton|off|transparent|truncate|delete\n#\tIf set to \"on\", Squid will append your client's IP address\n#\tin the HTTP requests it forwards. By default it looks like:\n#\n#\t\tX-Forwarded-For: 192.1.2.3\n#\n#\tIf set to \"off\", it will appear as\n#\n#\t\tX-Forwarded-For: unknown\n#\n#\tIf set to \"transparent\", Squid will not alter the\n#\tX-Forwarded-For header in any way.\n#\n#\tIf set to \"delete\", Squid will delete the entire\n#\tX-Forwarded-For header.\n#\n#\tIf set to \"truncate\", Squid will remove all existing\n#\tX-Forwarded-For entries, and place the client IP as the sole entry.\n#Default:\n# forwarded_for on\nforwarded_for off\n\n#  TAG: cachemgr_passwd\n#\tSpecify passwords for cachemgr operations.\n#\n#\tUsage: cachemgr_passwd password action action ...\n#\n#\tSome valid actions are (see cache manager menu for a full list):\n#\t\t5min\n#\t\t60min\n#\t\tasndb\n#\t\tauthenticator\n#\t\tcbdata\n#\t\tclient_list\n#\t\tcomm_incoming\n#\t\tconfig *\n#\t\tcounters\n#\t\tdelay\n#\t\tdigest_stats\n#\t\tdns\n#\t\tevents\n#\t\tfiledescriptors\n#\t\tfqdncache\n#\t\thistograms\n#\t\thttp_headers\n#\t\tinfo\n#\t\tio\n#\t\tipcache\n#\t\tmem\n#\t\tmenu\n#\t\tnetdb\n#\t\tnon_peers\n#\t\tobjects\n#\t\toffline_toggle *\n#\t\tpconn\n#\t\tpeer_select\n#\t\treconfigure *\n#\t\tredirector\n#\t\trefresh\n#\t\tserver_list\n#\t\tshutdown *\n#\t\tstore_digest\n#\t\tstoredir\n#\t\tutilization\n#\t\tvia_headers\n#\t\tvm_objects\n#\n#\t* Indicates actions which will not be performed without a\n#\t  valid password, others can be performed if not listed here.\n#\n#\tTo disable an action, set the password to \"disable\".\n#\tTo allow performing an action without a password, set the\n#\tpassword to \"none\".\n#\n#\tUse the keyword \"all\" to set the same password for all actions.\n#\n#Example:\n# cachemgr_passwd secret shutdown\n# cachemgr_passwd lesssssssecret info stats/objects\n# cachemgr_passwd disable all\n#Default:\n# No password. Actions which require password are denied.\n\n#  TAG: client_db\ton|off\n#\tIf you want to disable collecting per-client statistics,\n#\tturn off client_db here.\n#Default:\n# client_db on\nclient_db off\n\n#  TAG: refresh_all_ims\ton|off\n#\tWhen you enable this option, squid will always check\n#\tthe origin server for an update when a client sends an\n#\tIf-Modified-Since request.  Many browsers use IMS\n#\trequests when the user requests a reload, and this\n#\tensures those clients receive the latest version.\n#\n#\tBy default (off), squid may return a Not Modified response\n#\tbased on the age of the cached version.\n#Default:\n# refresh_all_ims off\n\n#  TAG: reload_into_ims\ton|off\n#\tWhen you enable this option, client no-cache or ``reload''\n#\trequests will be changed to If-Modified-Since requests.\n#\tDoing this VIOLATES the HTTP standard.  Enabling this\n#\tfeature could make you liable for problems which it\n#\tcauses.\n#\n#\tsee also refresh_pattern for a more selective approach.\n#Default:\n# reload_into_ims off\n\n#  TAG: connect_retries\n#\tLimits the number of reopening attempts when establishing a single\n#\tTCP connection. All these attempts must still complete before the\n#\tapplicable connection opening timeout expires.\n#\n#\tBy default and when connect_retries is set to zero, Squid does not\n#\tretry failed connection opening attempts.\n#\n#\tThe (not recommended) maximum is 10 tries. An attempt to configure a\n#\thigher value results in the value of 10 being used (with a warning).\n#\n#\tSquid may open connections to retry various high-level forwarding\n#\tfailures. For an outside observer, that activity may look like a\n#\tlow-level connection reopening attempt, but those high-level retries\n#\tare governed by forward_max_tries instead.\n#\n#\tSee also: connect_timeout, forward_timeout, icap_connect_timeout,\n#\tident_timeout, and forward_max_tries.\n#Default:\n# Do not retry failed connections.\n\n#  TAG: retry_on_error\n#\tIf set to ON Squid will automatically retry requests when\n#\treceiving an error response with status 403 (Forbidden),\n#\t500 (Internal Error), 501 or 503 (Service not available).\n#\tStatus 502 and 504 (Gateway errors) are always retried.\n#\t\n#\tThis is mainly useful if you are in a complex cache hierarchy to\n#\twork around access control errors.\n#\t\n#\tNOTE: This retry will attempt to find another working destination.\n#\tWhich is different from the server which just failed.\n#Default:\n# retry_on_error off\n\n#  TAG: as_whois_server\n#\tWHOIS server to query for AS numbers.  NOTE: AS numbers are\n#\tqueried only when Squid starts up, not for every request.\n#Default:\n# as_whois_server whois.ra.net\n\n#  TAG: offline_mode\n#\tEnable this option and Squid will never try to validate cached\n#\tobjects.\n#Default:\n# offline_mode off\n\n#  TAG: uri_whitespace\n#\tWhat to do with requests that have whitespace characters in the\n#\tURI.  Options:\n#\n#\tstrip:  The whitespace characters are stripped out of the URL.\n#\t\tThis is the behavior recommended by RFC2396 and RFC3986\n#\t\tfor tolerant handling of generic URI.\n#\t\tNOTE: This is one difference between generic URI and HTTP URLs.\n#\n#\tdeny:   The request is denied.  The user receives an \"Invalid\n#\t\tRequest\" message.\n#\t\tThis is the behaviour recommended by RFC2616 for safe\n#\t\thandling of HTTP request URL.\n#\n#\tallow:  The request is allowed and the URI is not changed.  The\n#\t\twhitespace characters remain in the URI.  Note the\n#\t\twhitespace is passed to redirector processes if they\n#\t\tare in use.\n#\t\tNote this may be considered a violation of RFC2616\n#\t\trequest parsing where whitespace is prohibited in the\n#\t\tURL field.\n#\n#\tencode:\tThe request is allowed and the whitespace characters are\n#\t\tencoded according to RFC1738.\n#\n#\tchop:\tThe request is allowed and the URI is chopped at the\n#\t\tfirst whitespace.\n#\n#\n#\tNOTE the current Squid implementation of encode and chop violates\n#\tRFC2616 by not using a 301 redirect after altering the URL.\n#Default:\n# uri_whitespace strip\n\n#  TAG: chroot\n#\tSpecifies a directory where Squid should do a chroot() while\n#\tinitializing.  This also causes Squid to fully drop root\n#\tprivileges after initializing.  This means, for example, if you\n#\tuse a HTTP port less than 1024 and try to reconfigure, you may\n#\tget an error saying that Squid can not open the port.\n#Default:\n# none\n\n#  TAG: pipeline_prefetch\n#\tHTTP clients may send a pipeline of 1+N requests to Squid using a\n#\tsingle connection, without waiting for Squid to respond to the first\n#\tof those requests. This option limits the number of concurrent\n#\trequests Squid will try to handle in parallel. If set to N, Squid\n#\twill try to receive and process up to 1+N requests on the same\n#\tconnection concurrently.\n#\n#\tDefaults to 0 (off) for bandwidth management and access logging\n#\treasons.\n#\n#\tNOTE: pipelining requires persistent connections to clients.\n#\n#\tWARNING: pipelining breaks NTLM and Negotiate/Kerberos authentication.\n#Default:\n# Do not pre-parse pipelined requests.\npipeline_prefetch 3\n\n#  TAG: high_response_time_warning\t(msec)\n#\tIf the one-minute median response time exceeds this value,\n#\tSquid prints a WARNING with debug level 0 to get the\n#\tadministrators attention.  The value is in milliseconds.\n#Default:\n# disabled.\n\n#  TAG: high_page_fault_warning\n#\tIf the one-minute average page fault rate exceeds this\n#\tvalue, Squid prints a WARNING with debug level 0 to get\n#\tthe administrators attention.  The value is in page faults\n#\tper second.\n#Default:\n# disabled.\n\n#  TAG: high_memory_warning\n# Note: This option is only available if Squid is rebuilt with the\n#       GNU Malloc with mstats()\n#\n#\tIf the memory usage (as determined by gnumalloc, if available and used)\n#\texceeds\tthis amount, Squid prints a WARNING with debug level 0 to get\n#\tthe administrators attention.\n#Default:\n# disabled.\n\n#  TAG: sleep_after_fork\t(microseconds)\n#\tWhen this is set to a non-zero value, the main Squid process\n#\tsleeps the specified number of microseconds after a fork()\n#\tsystem call. This sleep may help the situation where your\n#\tsystem reports fork() failures due to lack of (virtual)\n#\tmemory. Note, however, if you have a lot of child\n#\tprocesses, these sleep delays will add up and your\n#\tSquid will not service requests for some amount of time\n#\tuntil all the child processes have been started.\n#\tOn Windows value less then 1000 (1 milliseconds) are\n#\trounded to 1000.\n#Default:\n# sleep_after_fork 0\n\n#  TAG: windows_ipaddrchangemonitor\ton|off\n# Note: This option is only available if Squid is rebuilt with the\n#       MS Windows\n#\n#\tOn Windows Squid by default will monitor IP address changes and will \n#\treconfigure itself after any detected event. This is very useful for\n#\tproxies connected to internet with dial-up interfaces.\n#\tIn some cases (a Proxy server acting as VPN gateway is one) it could be\n#\tdesiderable to disable this behaviour setting this to 'off'.\n#\tNote: after changing this, Squid service must be restarted.\n#Default:\n# windows_ipaddrchangemonitor on\n\n#  TAG: eui_lookup\n#\tWhether to lookup the EUI or MAC address of a connected client.\n#Default:\n# eui_lookup on\neui_lookup off\n\n#  TAG: max_filedescriptors\n#\tReduce the maximum number of filedescriptors supported below\n#\tthe usual operating system defaults.\n#\n#\tRemove from squid.conf to inherit the current ulimit setting.\n#\n#\tNote: Changing this requires a restart of Squid. Also\n#\tnot all I/O types supports large values (eg on Windows).\n#Default:\n# Use operating system limits set by ulimit.\n\n#  TAG: force_request_body_continuation\n#\tThis option controls how Squid handles data upload requests from HTTP\n#\tand FTP agents that require a \"Please Continue\" control message response\n#\tto actually send the request body to Squid. It is mostly useful in\n#\tadaptation environments.\n#\t\n#\tWhen Squid receives an HTTP request with an \"Expect: 100-continue\"\n#\theader or an FTP upload command (e.g., STOR), Squid normally sends the\n#\trequest headers or FTP command information to an adaptation service (or\n#\tpeer) and waits for a response. Most adaptation services (and some\n#\tbroken peers) may not respond to Squid at that stage because they may\n#\tdecide to wait for the HTTP request body or FTP data transfer. However,\n#\tthat request body or data transfer may never come because Squid has not\n#\tresponded with the HTTP 100 or FTP 150 (Please Continue) control message\n#\tto the request sender yet!\n#\t\n#\tAn allow match tells Squid to respond with the HTTP 100 or FTP 150\n#\t(Please Continue) control message on its own, before forwarding the\n#\trequest to an adaptation service or peer. Such a response usually forces\n#\tthe request sender to proceed with sending the body. A deny match tells\n#\tSquid to delay that control response until the origin server confirms\n#\tthat the request body is needed. Delaying is the default behavior.\n#Default:\n# Deny, unless rules exist in squid.conf.\n\n#  TAG: server_pconn_for_nonretriable\n#\tThis option provides fine-grained control over persistent connection\n#\treuse when forwarding HTTP requests that Squid cannot retry. It is useful\n#\tin environments where opening new connections is very expensive\n#\t(e.g., all connections are secured with TLS with complex client and server\n#\tcertificate validation) and race conditions associated with persistent\n#\tconnections are very rare and/or only cause minor problems.\n#\n#\tHTTP prohibits retrying unsafe and non-idempotent requests (e.g., POST).\n#\tSquid limitations also prohibit retrying all requests with bodies (e.g., PUT).\n#\tBy default, when forwarding such \"risky\" requests, Squid opens a new\n#\tconnection to the server or cache_peer, even if there is an idle persistent\n#\tconnection available. When Squid is configured to risk sending a non-retriable\n#\trequest on a previously used persistent connection, and the server closes\n#\tthe connection before seeing that risky request, the user gets an error response\n#\tfrom Squid. In most cases, that error response will be HTTP 502 (Bad Gateway)\n#\twith ERR_ZERO_SIZE_OBJECT or ERR_WRITE_ERROR (peer connection reset) error detail.\n#\n#\tIf an allow rule matches, Squid reuses an available idle persistent connection\n#\t(if any) for the request that Squid cannot retry. If a deny rule matches, then\n#\tSquid opens a new connection for the request that Squid cannot retry.\n#\n#\tThis option does not affect requests that Squid can retry. They will reuse idle\n#\tpersistent connections (if any).\n#\n#\tThis clause only supports fast acl types.\n#\tSee http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.\n#\n#\tExample:\n#\t\tacl SpeedIsWorthTheRisk method POST\n#\t\tserver_pconn_for_nonretriable allow SpeedIsWorthTheRisk\n#Default:\n# Open new connections for forwarding requests Squid cannot retry safely.\n\n"
  },
  {
    "path": "squid_restart",
    "content": "#!/bin/bash -x\n\n# restart Squid\n\nsudo launchctl unload -w /Library/LaunchDaemons/org.macports.Squid.plist\nsudo killall '(squid-1)'\nsudo killall squid\nsleep 5\nsudo launchctl load -w /Library/LaunchDaemons/org.macports.Squid.plist\n"
  },
  {
    "path": "user.action",
    "content": "######################################################################\n# \n#  File        :  $Source: /cvsroot/ijbswa/current/user.action,v $\n# \n#  $Id: user.action,v 1.13 2011/11/06 11:36:01 fabiankeil Exp $\n#\n#  Purpose     :  User-maintained actions file, see\n#                 http://www.privoxy.org/user-manual/actions-file.html\n#\n######################################################################\n\n# This is the place to add your personal exceptions and additions to\n# the general policies as defined in default.action. (Here they will be\n# safe from updates to default.action.) Later defined actions always\n# take precedence, so anything defined here should have the last word.\n\n# See http://www.privoxy.org/user-manual/actions-file.html, or the \n# comments in default.action, for an explanation of what an \"action\" is\n# and what each action does.\n\n# The examples included here either use bogus sites, or have the actual\n# rules commented out (with the '#' character). Useful aliases are\n# included in the top section as a convenience.\n\n#############################################################################\n# Aliases\n#############################################################################\n{{alias}}\n#############################################################################\n#\n# You can define a short form for a list of permissions - e.g., instead\n# of \"-crunch-incoming-cookies -crunch-outgoing-cookies -filter -fast-redirects\",\n# you can just write \"shop\". This is called an alias.\n#\n# Currently, an alias can contain any character except space, tab, '=', '{'\n# or '}'.\n# But please use only 'a'-'z', '0'-'9', '+', and '-'.\n#\n# Alias names are not case sensitive.\n#\n# Aliases beginning with '+' or '-' may be used for system action names \n# in future releases - so try to avoid alias names like this.  (e.g. \n# \"+crunch-all-cookies\" below is not a good name)\n#\n# Aliases must be defined before they are used.\n# \n# These aliases just save typing later:\n#\n+crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies\n-crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies\n allow-all-cookies  = -crunch-all-cookies -session-cookies-only -filter{content-cookies}\n allow-popups       = -filter{all-popups} -filter{unsolicited-popups}\n+block-as-image     = +block{Blocked image request.} +handle-as-image\n-block-as-image     = -block\n\n# These aliases define combinations of actions\n# that are useful for certain types of sites:\n#\nfragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -prevent-compression\nshop        = -crunch-all-cookies allow-popups\n\n# Your favourite blend of filters:\n#\nmyfilters   = +filter{html-annoyances} +filter{js-annoyances} +filter{all-popups}\\\n              +filter{webbugs} +filter{banners-by-size}\n\n# Allow ads for selected useful free sites:\n#\nallow-ads   = -block -filter{banners-by-size} -filter{banners-by-link}\n#... etc.  Customize to your heart's content.\n\n## end aliases ########################################################\n#######################################################################\n\n# Begin examples: #####################################################\n\n# Say you have accounts on some sites that you visit regularly, and you\n# don't want to have to log in manually each time. So you'd like to allow\n# persistent cookies for these sites. The allow-all-cookies alias defined\n# above does exactly that, i.e. it disables crunching of cookies in any\n# direction, and the processing of cookies to make them only temporary.\n#\n{ allow-all-cookies }\n#.sourceforge.net\n#sunsolve.sun.com\n#slashdot.org\n#.yahoo.com\n#.msdn.microsoft.com\n#.redhat.com\n\n# Say the site where you do your homebanking needs to open popup\n# windows, but you have chosen to kill popups uncoditionally by default.\n# This will allow it for your-example-bank.com:\n#\n{ -filter{all-popups} }\n.banking.example.com\n\n# Some hosts and some file types you may not want to filter for\n# various reasons:\n#\n{ -filter }\n\n# Technical documentation is likely to contain strings that might\n# erroneously get altered by the JavaScript-oriented filters:\n#\n#.tldp.org\n#/(.*/)?selfhtml/\n\n# And this stupid host sends streaming video with a wrong MIME type,\n# so that Privoxy thinks it is getting HTML and starts filtering:\n#\nstupid-server.example.com/\n\n\n# Example of a simple \"block\" action. Say you've seen an ad on your\n# favourite page on example.com that you want to get rid of. You have\n# right-clicked the image, selected \"copy image location\" and pasted\n# the URL below while removing the leading http://, into a { +block{reason} }\n# section. Note that { +handle-as-image } need not be specified, since\n# all URLs ending in .gif will be tagged as images by the general rules\n# as set in default.action anyway:\n#\n{ +block{Nasty ads.} }\nwww.example.com/nasty-ads/sponsor.gif\n\n# The URLs of dynamically generated banners, especially from large banner\n# farms, often don't use the well-known image file name extensions, which\n# makes it impossible for Privoxy to guess the file type just by looking\n# at the URL. \n# You can use the +block-as-image alias defined above for these cases.\n# Note that objects which match this rule but then turn out NOT to be an\n# image are typically rendered as a \"broken image\" icon by the browser.\n# Use cautiously.\n#\n{ +block-as-image }\n#.doubleclick.net\n#/Realmedia/ads/\n#ar.atwola.com/\n\n# Now you noticed that the default configuration breaks Forbes\n# Magazine, but you were too lazy to find out which action is the\n# culprit, and you were again too lazy to give feedback, so you just\n# used the fragile alias on the site, and -- whoa! -- it worked. The\n# 'fragile' aliases disables those actions that are most likely to break\n# a site. Also, good for testing purposes to see if it is Privoxy that\n# is causing the problem or not.\n# \n{ fragile }\n.forbes.com\n.abcya.com\n.att.com\n.forbes.com\n.neimanmarcus.com\n.tiffany.com\n\n# Here are some sites we wish to support, and we will allow their ads\n# through.\n#\n{ allow-ads }\nwww.thegreatcourses.com\n.kayak.com\nads1.msn.com/\n.bing.com/travel/jsxc\\.vjs\\?\n.onecause.com\n#.sourceforge.net\n#.slashdot.org\n#.osdn.net\n\n# user.action is generally the best place to define exceptions and\n# additions to the default policies of default.action. Some actions are\n# safe to have their default policies set here though. So let's set a\n# default policy to have a 'blank' image as opposed to the checkerboard\n# pattern for ALL sites. '/' of course matches all URLs.\n# patterns:\n#\n{ +set-image-blocker{blank} }\n#/\n\n# Enable the following section (not the regression-test directives)\n# to rewrite and redirect click-tracking URLs on news.google.com.\n# Disabling JavaScript should work as well and probably works more reliably.\n#\n# Redirected URL = http://news.google.com/news/url?ct2=us%2F0_0_s_1_1_a&sa=t&usg=AFQjCNHJWPc7ffoSXPSqBRz55jDA0KgxOQ&cid=8797762374160&url=http%3A%2F%2Fonline.wsj.com%2Farticle%2FSB10001424052970204485304576640791304008536.html&ei=YcqeTsymCIjxggf8uQE&rt=HOMEPAGE&vm=STANDARD&bvm=section&did=-6537064229385238098\n# Redirect Destination = http://online.wsj.com/article/SB10001424052970204485304576640791304008536.html\n# Ignore = Yes\n#\n{+fast-redirects{check-decoded-url}}\nnews.google.com/news/url.*&url=http.*&\n\n# Enable the following section (not the regression-test directives)\n# to block various Facebook \"like\" and similar tracking URLs.  At the\n# time this section was added it was reported to not break Facebook\n# itself but this may have changed by the time you read this. This URL\n# list is probably incomplete and if you don't have an account anyway,\n# you may prefer to block the whole domain.\n#\n# Blocked URL = http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Ffacebook.com%2Farstechnica&width=300&colorscheme=light&show_faces=false&stream=false&header=false&height=62&border_color=%23FFFFFF\n# Ignore = Yes\n# Blocked URL = http://www.facebook.com/plugins/activity.php?site=arstechnica.com&width=300&height=370&header=false&colorscheme=light&recommendations=false&border_color=%23FFFFFF\n# Ignore = Yes\n# Blocked URL = http://www.facebook.com/plugins/fan.php?api_key=368513495882&connections=10&height=250&id=8304333127&locale=en_US&sdk=joey&stream=false&width=377\n# Ignore = Yes\n# Blocked URL = http://www.facebook.com/plugins/like.php?api_key=368513495882&channel_url=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df13997452c%26origin%3Dhttp%253A%252F%252Fonline.wsj.com%252Ff1b037e354%26relation%3Dparent.parent%26transport%3Dpostmessage&extended_social_context=false&href=http%3A%2F%2Fonline.wsj.com%2Farticle%2FSB10001424052970204485304576640791304008536.html&layout=button_count&locale=en_US&node_type=link&ref=wsj_share_FB&sdk=joey&send=false&show_faces=false&width=90\n# Ignore = Yes\n#\n{+block{Facebook \"like\" and similar tracking URLs.}}\nwww.facebook.com/(extern|plugins)/(login_status|like(box)?|activity|fan)\\.php\n\n# http://serverfault.com/questions/182293/privoxy-rule-to-block-facebook-spying\n{ +block-as-image{People-tracking button.} }\n.facebook.com/(plugins|widgets)/(like|fan|activity).*\n\n# fix sites that privoxy breaks\n{ fragile }\nads1.msn.com/\n.bing.com/travel/jsxc\\.vjs\\?\n.onecause.com\n.go.com\n.drugstore.com\n.neimanmarcus.com\n.evite.com\n\n# fix icloud, photostream\n{ -block -filter -hide-user-agent -deanimate-gifs -hide-from-header -set-image-blocker }\nTAG:^User-Agent: PhotoStreamAgent/\n.apple.com\n.icloud.com\n.amazonaws.com\n\n# sourceforge\n{ -block -filter -deanimate-gifs}\n.sourceforge.net\n.dell.com\n\n# expedia\n{ -hide-user-agent }\n.expedia.com\n\n# youtube\n# See: http://superuser.com/questions/199230/privoxy-causes-problem-for-ipod-touch-youtube-app\n{ fragile -deanimate-gifs}\n.googlevideo.com\n\n{ -filter -deanimate-gifs}\n.youtube.com\n.vimeo.com\n\n# TV Guide listings on EyeTV; TitanTV Remote Scheduling\n{ -block -hide-user-agent }\nepg.eyetv.com\npartners.titantv.com\n.macrovision.com\n\n# don't filter downloads\n{-filter -deanimate-gifs}\n/.*\\.iso(\\?|$)\n/.*\\.mp3(\\?|$)\n/.*\\.mp4(\\?|$)\n/.*\\.mov(\\?|$)\n/.*\\.mpg(\\?|$)\n/.*\\.ogg(\\?|$)\n/.*\\.aac(\\?|$)\n/.*\\.zip(\\?|$)\n/.*\\.pdf(\\?|$)\n/.*\\.dmg(\\?|$)\n/.*\\.tar(\\?|$)\n/.*\\.gz(\\?|$)\n/.*\\.dat(\\?|$)\n"
  },
  {
    "path": "whitelist.txt",
    "content": "\n# whitelisted hosts (FQDN and DN) will be deleted frpm hphost's host.zip\ns3.amazonaws.com\nwww.s3.amazonaws.com\nbroker.adobe.com\nsstats.adobe.com\nstats.adobe.com\nj.mp\nsecuremetrics.apple.com\nautolinkmaker.itunes.apple.com\nrover.ebay.com\nyelp.com\nwww.yelp.com\ninc.com\nwww.inc.com\ngdlp01.c-wss.com\nh.online-metrix.net\ndrugstore.com\nwww.drugstore.com\nevite.com\nwww.evite.com\nthedailybeast.com\nwww.thedailybeast.com\nalibaba.com\nwww.alibaba.com\n# iphonehacks.com\n# www.iphonehacks.com\n# www.kqzyfj.com\nfunnyordie.com\nwww.funnyordie.com\nintensedebate.com\nwww.intensedebate.com\n\n# Blocking this domain breaks CNN app live streaming\n# To diagnose:\n# tcpdump -e -ttt -i en0 -w my-iPad-cnn-3128.pcap src my-iPad or dst my-iPad\n# grep -a 'URL: <a' < my-iPad-cnn-3128.pcap | perl -lne 's/^.*URL: <a href=\"https?:\\/\\/([-\\w.]+)\\/?.*?\">.*$/\\1/; print;' | uniq\nbea4.v.fwmrm.net\n"
  }
]