2 # I, Ian Kelling, follow the GNU license recommendations at
3 # https://www.gnu.org/licenses/license-recommendations.en.html. They
4 # recommend that small programs, < 300 lines, be licensed under the
5 # Apache License 2.0. This file contains or is part of one or more small
6 # programs. If a small program grows beyond 300 lines, I plan to switch
9 # Copyright 2024 Ian Kelling
11 # Licensed under the Apache License, Version 2.0 (the "License");
12 # you may not use this file except in compliance with the License.
13 # You may obtain a copy of the License at
15 # http://www.apache.org/licenses/LICENSE-2.0
17 # Unless required by applicable law or agreed to in writing, software
18 # distributed under the License is distributed on an "AS IS" BASIS,
19 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 # See the License for the specific language governing permissions and
21 # limitations under the License.
24 # http://askubuntu.com/questions/53443/how-do-i-ignore-a-proxy-if-not-available
25 # altered because testing a down proxy takes like 2 seconds,
26 # and we would do it like 100 times in a row. so cache a failed result
27 # locally for 10 minutes. Also, using newer option based on man apt.conf.
29 # Once when I was testing, it seemed I needed to have it output
30 # DIRECT after outputing the proxy url
32 # note, the url we are trying to fetch is $1
34 # note, if there is a problem, some ways to debug:
36 # edit /etc/apt/apt.conf.d/02proxy
37 # add, remove the autodetec
38 # Acquire::http::proxy "http://CacheServerIp:3142";
39 # see the /var/log/apt-cacher-ng logs
41 # file:///usr/share/doc/apt-cacher-ng/html/index.html
45 proxy_url
=http
://$proxy_host:$proxy_port/
47 if [[ ! -w /tmp
]]; then
51 modtime
=$
(stat
-c %Y
$f 2>/dev
/null
) ||
:
52 if [[ $modtime ]] && (( $
(( EPOCHSECONDS
- modtime
)) < 60*10 )); then
58 if getent hosts
$proxy_host &>/dev
/null
&& timeout
1 nc
-z $proxy_host $proxy_port &>/dev
/null
; then
61 if [[ ! -e $f ||
-w $f ]]; then