==============================================================================
+lib/getopt.c:
+
+/*
+ * Copyright (c) 1987, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95";
+
+==============================================================================
+
src/external_acl.c
Copyright (C) 2002 MARA Systems AB, Sweden <info@marasystems.com>
- IPv6 (Internet Protocol version 6) support
- ICMPv6 (Internet Control Message Protocol version 6) support
- - FTP agent now supports EPRT command
+ - FTP agent now supports EPSV/EPRT commands
- DNS internal resolver now supports AAAA and CNAME records
- SNMP peer and client tables now support IPv6
- SNMP peer table supports named peers with multiple entries per IP
can be expected using ICAP.
- TPROXY version 4 support now included.
- IPFW and Netfilter interception methods may now both be built in one binary.
+ - ZPH Quality of Service patch now integrated
+ - Null store now fully obsoleted and removed
+ - Unknown request methods all supported
+ - Follow_x_forwarder_for ported from 2.6
+ - Follow XFF extensions added
+
+Changes to squid-3.0.STABLE6 (20 May 2008):
+
+ - Bug 2254: umask Feature from 2.6 added
+ - cachemgr.cgi default config file added
+ - Several authentication bug fixes
+ - Improved Windows Support
+ - better DNS lookup methods for unqualified hostames
+ - better support for 64-bit environments
+ - Bug 2332: Crash when tunnelling
+ - Removed the advertisement clause from BSD licenses
+ according to the GPLv2+ changes in BSD
+ - ... and other bugs and minor cleanups
+
+Changes to squid-3.0.STABLE5 (28 Apr 2008):
+
+ - Support for resolv.conf 'domain' option
+ - Improved URI support, including
+ longer URI up to 8192 bytes accepted
+ better handling of intercepted URI
+ better port for non-FQDN URI lookups
+ - Improved logging, including
+ Bug 3210 fixed: incorrect timestamp format in earlier 3.0 releases.
+ Fixed 'log_ip_on_direct' option behaviour
+ - Support for profiling on x86 64-bit systems
+ - .. and other bugs and minor code cleanups.
+
+Changes to squid-3.0.STABLE4 (2 Apr 2008):
+
+ - Bug 2288: compile error slipped into STABLE3.
+
+Changes to squid-3.0.STABLE3 (31 Mar 2008):
+
+ - Improved HTTP 1.1 support.
+ - Improved MacOSX (Leopard) support
+ - Bug 2206: Proxy-Authentication regression in STABLE2.
+ - Strip Domain from NTLM usernames for use in class 4 Delay Pools
+ - ... and other bugs and minor code cleanup
+
+Changes to squid-3.0.STABLE2 (1 Mar 2008):
+
+ - Add myportname ACL for matching the accepting port name (see release notes)
+ - Add include directive for squid.conf (see release notes)
+ - Add ability to strip kerberos realm from usernames during Auth
+ - License cleanup to comply with GPLv2 or later
+ - Updated Error Pages and Translations
+ - Updated configuration examples
+ - Updated valgrind support for valgrind-3.3.0
+ - Improved support for Windows and MacOS X Leopard
+ - Improved support for files larger than 2GB
+ - Improved support for CARP arrays and WCCPv2
+ - Improved cachmgr, SNMP, and log reporting
+ - ... and as usual Many bug fixes since STABLE 1
Changes to squid-3.0.STABLE1 (13 Dec 2007):
Older ChangeLog follows. The sections relating to Squid-2.6 is not entirely
authorative for this release and mirrored here for reference only.
-
+
- CARP now plays well with the other peering algorithms,
and support for CARP peerings is compiled by default. Can be
disabled by --disable-carp
==============================================================================
-cache_peer, never_direct/always_direct
-
- If you have a parent cache, put it here. The administrators of the
- parent cache typically provided you with instructions. You should
- always ask permission before adding a parent cache. See also the
- never_direct/always_direct directives.
-
-cache_dir ufs /usr/local/squid/var/cache 100 16 256
-
- Add here (first number, here 100) the amount of hard disk space
- (in megabytes) to devote to caching.
-
-acl, http_access, icp_access
+acl, http_access
Access control lists. This is important because it prevents people
from stealing your network resources. To fill in the
- "allowed_hosts" ACL, use your network address (for instance
- 192.168.10.0 and your network mask (for instance 255.255.255.0):
+ "localnet" ACL, use your network address (for instance 192.168.10.0
+ your CIDR network mask (for instance 255.255.255.0 or /24):
acl manager proto cache_object
- acl localhost src 127.0.0.1/255.255.255.255
- acl all src 0.0.0.0/0.0.0.0
- acl allowed_hosts src 192.168.10.0/255.255.255.0
+ acl localhost src 127.0.0.1
+ acl localnet src 192.168.10.0/24
http_access deny manager all
- http_access allow allowed_hosts
+ http_access allow localnet
http_access deny all
- icp_access allow allowed_hosts
- icp_access deny all
-
cache_mgr
Put here the e-mail address of the manager:
+visible_hostname
+
+ The host name you advertise for the cache.
+
cache_effective_user
+ If building your own squid; use ./configure --with-default-user=X
+
If you must start Squid as root, find a safe user and group to run
as after startup (typically "nobody" and "nogroup"). Do not use
"root", for security reasons.
-visible_hostname
- The host name you advertise for the cache.
+==============================================================================
+
+Some configuration lines which are optional but may be needed.
+
+
+cache_dir ufs /usr/local/squid/var/cache 100 16 256
+
+ Add here (first number, here 100) the amount of hard disk space
+ (in megabytes) to devote to caching.
+ The default is to store files in 256 MB of memory instead of disk
+
+ Linux : use aufs instead of ufs
+ BSD : use diskd instead of ufs
+
+cache_mem 256 MB
+
+ How much memory to allocate for cached files in-memory.
+ The default is shown.
+
+cache_peer, never_direct/always_direct
+
+ If you have a parent cache, put it here. The administrators of the
+ parent cache typically provided you with instructions. You should
+ always ask permission before adding a parent cache. See also the
+ never_direct/always_direct directives.
+
==============================================================================
After editing squid.conf to your liking, run Squid from the command
line TWICE:
+To create any disk cache_dir configured:
% /usr/local/squid/sbin/squid -z
+
+To start squid:
% /usr/local/squid/sbin/squid
Check in the cache.log (/usr/local/squid/var/logs/cache.log) that
HUGE_OBJECT_FLAG=""
fi
]) # end of AC_DEFUN of AC_TEST_CHECKFORHUGEOBJECTS
+
+
+dnl ===========================================================================
+dnl http://autoconf-archive.cryp.to/ax_with_prog.html
+dnl ===========================================================================
+dnl
+dnl SYNOPSIS
+dnl
+dnl AX_WITH_PROG([VARIABLE],[program],[VALUE-IF-NOT-FOUND],[PATH])
+dnl
+dnl DESCRIPTION
+dnl
+dnl Locates an installed program binary, placing the result in the precious
+dnl variable VARIABLE. Accepts a present VARIABLE, then --with-program, and
+dnl failing that searches for program in the given path (which defaults to
+dnl the system path). If program is found, VARIABLE is set to the full path
+dnl of the binary; if it is not found VARIABLE is set to VALUE-IF-NOT-FOUND
+dnl if provided, unchanged otherwise.
+dnl
+dnl A typical example could be the following one:
+dnl
+dnl AX_WITH_PROG(PERL,perl)
+dnl
+dnl NOTE: This macro is based upon the original AX_WITH_PYTHON macro from
+dnl Dustin J. Mitchell <dustin@cs.uchicago.edu>.
+dnl
+dnl LAST MODIFICATION
+dnl
+dnl 2008-05-05
+dnl
+dnl COPYLEFT
+dnl
+dnl Copyright (c) 2008 Francesco Salvestrini <salvestrini@users.sourceforge.net>
+dnl Copyright (c) 2008 Dustin J. Mitchell <dustin@cs.uchicago.edu>
+dnl
+dnl Copying and distribution of this file, with or without modification, are
+dnl permitted in any medium without royalty provided the copyright notice
+dnl and this notice are preserved.
+dnl
+AC_DEFUN([AX_WITH_PROG],[
+ AC_PREREQ([2.61])
+
+ pushdef([VARIABLE],$1)
+ pushdef([EXECUTABLE],$2)
+ pushdef([VALUE_IF_NOT_FOUND],$3)
+ pushdef([PATH_PROG],$4)
+
+ AC_ARG_VAR(VARIABLE,Absolute path to EXECUTABLE executable)
+
+ AS_IF(test -z "$VARIABLE",[
+ AC_MSG_CHECKING(whether EXECUTABLE executable path has been provided)
+ AC_ARG_WITH(EXECUTABLE,AS_HELP_STRING([--with-EXECUTABLE=[[[[PATH]]]]],absolute path to EXECUTABLE executable), [
+ AS_IF([test "$withval" != "yes"],[
+ VARIABLE="$withval"
+ AC_MSG_RESULT($VARIABLE)
+ ],[
+ VARIABLE=""
+ AC_MSG_RESULT([no])
+ ])
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+
+ AS_IF(test -z "$VARIABLE",[
+ AC_PATH_PROG([]VARIABLE[],[]EXECUTABLE[],[]VALUE_IF_NOT_FOUND[],[]PATH_PROG[])
+ ])
+ ])
+
+ popdef([PATH_PROG])
+ popdef([VALUE_IF_NOT_FOUND])
+ popdef([EXECUTABLE])
+ popdef([VARIABLE])
+])
AC_PROG_CXX
AC_CANONICAL_HOST
+dnl Make location configure settings available to the code
+dnl Pass squid data directory (icons, errors etc) base location to code files as a compiler define
+CFLAGS="-DDEFAULT_SQUID_DATA_DIR=\\\"$datadir\\\" $CFLAGS"
+CXXFLAGS="-DDEFAULT_SQUID_DATA_DIR=\\\"$datadir\\\" $CXXFLAGS"
+dnl Pass squid.conf directory base location to code files as a compiler define
+CFLAGS="-DDEFAULT_SQUID_CONFIG_DIR=\\\"$sysconfdir\\\" $CFLAGS"
+CXXFLAGS="-DDEFAULT_SQUID_CONFIG_DIR=\\\"$sysconfdir\\\" $CXXFLAGS"
use_loadable_modules=1
AC_MSG_CHECKING(whether to use loadable modules)
use_loadable_modules=yes;
AC_MSG_RESULT([$use_loadable_modules, implicitly])
]
-)
+)
AM_CONDITIONAL(USE_LOADABLE_MODULES, test $use_loadable_modules = yes)
fi
])
-use_carp=1
-AC_ARG_ENABLE(carp,
-[ --disable-carp Disable CARP support],
-[ if test "$enableval" = "no" ; then
- echo "CARP disabled"
- use_carp=0
- fi
-])
-if test $use_carp = 1; then
- AC_DEFINE(USE_CARP, 1, [Cache Array Routing Protocol])
-fi
-
AC_ARG_ENABLE(async-io,
[ --enable-async-io[=N_THREADS]
Shorthand for
aufs_io_threads=$withval
;;
*)
- echo "ERROR: Invalid --with-aufs-threads argument"
- exit 1
+ AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
;;
esac
])
if test -d $srcdir/src/fs/$module; then
:
else
- echo "ERROR: storeio $module does not exists"
- exit 1
+ AC_MSG_ERROR(storeio $module does not exist)
fi
done
echo "Store modules built: $STORE_MODULES"
if test -d $srcdir/src/DiskIO/$module; then
:
else
- echo "ERROR: disk-io $module does not exists"
- exit 1
+ AC_MSG_ERROR(disk-io $module does not exist)
fi
done
DISK_LIBS="lib`echo $DISK_MODULES|sed -e 's% %.a lib%g'`.a"
if test -d $srcdir/src/repl/$module; then
:
else
- echo "ERROR: Removal policy $module does not exists"
- exit 1
+ AC_MSG_ERROR(Removal policy $module does not exist)
fi
done
echo "Removal policies built: $REPL_POLICIES"
AC_ARG_ENABLE(cache-digests,
[ --enable-cache-digests Use Cache Digests
- see http://www.squid-cache.org/FAQ/FAQ-16.html],
+ see http://wiki.squid-cache.org/SquidFaq/CacheDigests],
[ if test "$enableval" = "yes" ; then
echo "USE_CACHE_DIGESTS enabled"
AC_DEFINE(USE_CACHE_DIGESTS,1,[Use Cache Digests for locating objects in neighbor caches. This code is still semi-experimental.])
fi
])
-dnl Select Default Error language
-AC_ARG_ENABLE(default-err-language,
-[ --enable-default-err-language=lang
- Select default language for Error pages (see
- errors directory) ],
-[
- if test -d $srcdir/errors/$enableval; then
- ERR_DEFAULT_LANGUAGE=$enableval
- else
- echo "ERROR! Unknown language $enableval, see errors/ directory"
- exit 1
- fi
-],[ERR_DEFAULT_LANGUAGE="English"])
-AC_SUBST(ERR_DEFAULT_LANGUAGE)
-
-dnl Select languages to be installed
-AC_ARG_ENABLE(err-languages,
-[ --enable-err-languages=\"lang1 lang2..\"
- Select languages to be installed. (All will be
- installed by default) ],
-[
- for l in $enableval; do
- if test -d $srcdir/errors/$l; then :; else
- echo "ERROR! Unknown language $$l, see errors/"
- exit 1
- fi
- done
- ERR_LANGUAGES=$enableval
-],[
- ERR_LANGUAGES=
- for l in $srcdir/errors/*; do
- if test -f $l/ERR_ACCESS_DENIED; then
- ERR_LANGUAGES="$ERR_LANGUAGES `basename $l`"
- fi
- done
-])
-AC_SUBST(ERR_LANGUAGES)
-
dnl Size of COSS memory buffer
AC_ARG_WITH(coss-membuf-size,
[ --with-coss-membuf-size COSS membuf size (default 1048576 bytes) ],
-[ if test "$with_coss_membuf_size"; then
+[ if test -n "$withval" -a "x$withval" != "xno" ; then
echo "Setting COSS membuf size to $with_coss_membuf_size bytes"
AC_DEFINE_UNQUOTED(COSS_MEMBUF_SZ, $with_coss_membuf_size,[Define if you want to set the COSS membuf size])
fi
echo "IPFW Transparent Proxy enabled"
AC_DEFINE(IPFW_TRANSPARENT,1,[Enable support for Transparent Proxy on systems using FreeBSD IPFW address redirection.])
IPFW_TRANSPARENT="yes"
+ else
+ AC_DEFINE(IPFW_TRANSPARENT,0,[Enable support for Transparent Proxy on systems using FreeBSD IPFW address redirection.])
fi
])
echo "IP-Filter Transparent Proxy enabled"
AC_DEFINE(IPF_TRANSPARENT,1,[Enable support for Transparent Proxy on systems using IP-Filter address redirection. This provides "masquerading" support for non Linux system.])
IPF_TRANSPARENT="yes"
+ else
+ AC_DEFINE(IPF_TRANSPARENT,0,[Enable support for Transparent Proxy on systems using IP-Filter address redirection. This provides "masquerading" support for non Linux system.])
fi
])
echo "PF Transparent Proxy enabled"
AC_DEFINE(PF_TRANSPARENT,1,[Enable support for Transparent Proxy on systems using PF address redirection. This provides "masquerading" support for OpenBSD.])
PF_TRANSPARENT="yes"
+ else
+ AC_DEFINE(PF_TRANSPARENT,0,[Enable support for Transparent Proxy on systems using PF address redirection. This provides "masquerading" support for OpenBSD.])
fi
])
echo "Linux (Netfilter) Transparent Proxy enabled"
AC_DEFINE(LINUX_NETFILTER,1,[Enable support for Transparent Proxy on Linux (Netfilter) systems])
LINUX_NETFILTER="yes"
+ else
+ AC_DEFINE(LINUX_NETFILTER,0,[Enable support for Transparent Proxy on Linux (Netfilter) systems])
fi
])
AC_ARG_WITH(large-files,
[ --with-large-files Enable support for large files (logs etc).],
-[ if test "$withval" = yes; then
+[ if test "x$withval" = "xyes"; then
needlargefiles=1
fi
])
if test -z "$buildmodel"; then
echo "WARNING: No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64"
sleep 1
+ fi
+fi
+case "$buildmodel" in
+default|"")
+ if test "$needlargefiles"; then
+ echo "Enabling -D_FILE_OFFSET_BITS=64"
CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
fi
-fi
-if test -n "$buildmodel" && test "$buildmodel" != "default"; then
+ ;;
+*)
echo "Using $buildmodel build environment"
if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
: # All fine
else
- echo "ERROR: Build environment $buildmodel not known to getconf."
- exit 1
+ AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
fi
CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
case "$host" in
dnl
-dnl On Solaris getconf returns for CFLAGS -Xa and -Usun options, but:
-dnl -Xa is supported only by Sun cc, so we need to remove it when using gcc
-dnl The 'sun' define is needed by ipfilter includes, so we must remove -Usun
+dnl On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
+dnl for LDFLAGS -xarch=generic64, but:
+dnl "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
+dnl For gcc "-xarch=generic64" must be replaced with "-m64"
+dnl The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
*-solaris*)
if test "$GCC" = "yes"; then
echo "Removing -Xa for gcc on $host"
CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
+ echo "Replacing -xarch=generic64 with -m64 for gcc on $host"
+ CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
+ LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
fi
echo "Removing -Usun on $host"
CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
*)
;;
esac
-fi
+ ;;
+esac
dnl Enable Linux transparent proxy support for obsolete TPROXY
AC_ARG_ENABLE(linux-tproxy,
echo "Linux-Netfilter Transparent Proxy automatically enabled"
LINUX_NETFILTER="yes"
fi
+ else
+ AC_DEFINE(LINUX_TPROXY2, 0, [Enable real Transparent Proxy support for Netfilter TPROXY v2.])
fi
])
fi
])
+follow_xff=1
+AC_ARG_ENABLE(follow-x-forwarded-for,
+[ --enable-follow-x-forwarded-for
+ Enable support for following the X-Forwarded-For
+ HTTP header to try to find the IP address of the
+ original or indirect client when a request has
+ been forwarded through other proxies.],
+[ if test "$enableval" = "yes" ; then
+ echo "follow X-Forwarded-For enabled"
+ follow_xff=1
+ fi
+])
+if test $follow_xff = 1; then
+ AC_DEFINE(FOLLOW_X_FORWARDED_FOR, 1, [Enable following X-Forwarded-For headers])
+else
+ AC_DEFINE(FOLLOW_X_FORWARDED_FOR, 0)
+fi
+
use_ident=1
AC_ARG_ENABLE(ident-lookups,
[ --disable-ident-lookups
if test -d $srcdir/src/auth/$module; then
:
else
- echo "ERROR: Auth scheme $module does not exists"
- exit 1
+ AC_MSG_ERROR(Auth scheme $module does not exist)
fi
eval AUTH_MODULE_${module}=yes
done
;;
esac
else
- echo "ERROR: Basic auth helper $helper does not exists"
- exit 1
+ AC_MSG_ERROR(Basic auth helper $helper does not exist)
fi
done
echo "Basic auth helpers built: $BASIC_AUTH_HELPERS"
if test -d $srcdir/helpers/ntlm_auth/$helper; then
:
else
- echo "ERROR: NTLM Auth helper $helper does not exists"
- exit 1
+ AC_MSG_ERROR(NTLM Auth helper $helper does not exist)
fi
done
echo "NTLM auth helpers built: $NTLM_AUTH_HELPERS"
if test -d $srcdir/helpers/negotiate_auth/$helper; then
:
else
- echo "ERROR: Negotiate Auth helper $helper does not exists"
- exit 1
+ AC_MSG_ERROR(Negotiate Auth helper $helper does not exist)
fi
done
echo "Negotiate auth helpers built: $NEGOTIATE_AUTH_HELPERS"
if test -f $srcdir/helpers/digest_auth/$helper/Makefile.in; then
:
else
- echo "ERROR: digest auth helper $helper does not exists"
- exit 1
+ AC_MSG_ERROR(digest auth helper $helper does not exist)
fi
done
echo "Digest auth helpers built: $DIGEST_AUTH_HELPERS"
if test -f $srcdir/helpers/external_acl/$helper/Makefile.in; then
:
else
- echo "ERROR: external acl helper $helper does not exists"
- exit 1
+ AC_MSG_ERROR(external acl helper $helper does not exist)
fi
done
echo "External acl helpers built: $EXTERNAL_ACL_HELPERS"
echo "using SASL"
LIBSASL="-lsasl"
else
- echo "ERROR: Neither SASL nor SASL2 found"
- exit 1
+ AC_MSG_ERROR(Neither SASL nor SASL2 found)
fi
fi
AC_SUBST(LIBSASL)
dnl Enable IPv6 support
AC_MSG_CHECKING([whether to enable IPv6])
+use_ipng=no
AC_ARG_ENABLE(ipv6,
[ --enable-ipv6 Enable ipv6 support],
[ AC_MSG_RESULT(yes)
],
[ AC_DEFINE(USE_IPV6,1,[Enable support for IPv6 ])
AC_MSG_RESULT(yes)
+ use_ipng=yes
],
[ AC_DEFINE(USE_IPV6,0,[0 == Disable support for IPv6])
- AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[0 == Disable support for Split-Stack IPv6 Implementations])
- AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[0 == Keep IPv4 and IPv6 Localhosts seperate.])
- AC_DEFINE(IPV6_SPECIAL_V4MAPPING,0,[0 == Leave all v4-mapping to OS Implementation])
+ AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[Enable support for IPv6 on split-stack implementations])
+ AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[Convert IPv4-localhost requests to IPv6. Default: Keep seperate.])
+ AC_DEFINE(IPV6_SPECIAL_V4MAPPED,0,[Enable v4-mapping through v6 sockets])
AC_MSG_RESULT(no)
])
)
],
[ AC_DEFINE(USE_IPV6,0,[Disable support for IPv6])
- AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[ 0 == Disable support for Split-Stack IPv6 Implementations])
- AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[ 0 == Keep IPv4 and IPv6 Localhosts seperate.])
- AC_DEFINE(IPV6_SPECIAL_V4MAPPING,0,[ 0 == Leave v4-mapping to OS Implementation])
+ AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[Enable support for IPv6 on split-stack implementations])
+ AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[Convert IPv4-localhost requests to IPv6. Default: Keep seperate.])
+ AC_DEFINE(IPV6_SPECIAL_V4MAPPED,0,[Enable v4-mapping through v6 sockets])
AC_MSG_RESULT(no)
])
-if test $ac_cv_enable_ipv6 ; then
+
+if test "$use_ipng" = "yes"; then
+
dnl Check for Windows XP option
AC_MSG_CHECKING([for IPv6 split-stack requirement])
AC_ARG_WITH(ipv6-split-stack,
- [ --with-ipv6-split-stack Require IPv6 split-stack support (Requires IPv6 Support)],
- [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 1, [ 1 == Enable support for IPv6 on split-stack implementations]) AC_MSG_RESULT(yes)],
- [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 0, [ 0 == Disable support for split-stack IPv6 implementations]) AC_MSG_RESULT(no)]
+ [ --with-ipv6-split-stack Require IPv6 split-stack support. Requires IPv6 Support.],
+ [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 1, [Enable support for IPv6 on split-stack implementations]) AC_MSG_RESULT(yes)],
+ [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 0, [Enable support for IPv6 on split-stack implementations]) AC_MSG_RESULT(no)]
)
dnl Check for IPv6 Windows Vista option
+dnl Also useful for other OS
AC_MSG_CHECKING([for IPv6 v4-mapping requirement])
AC_ARG_WITH(ipv4-mapped,
- [ --with-ipv4-mapped Hybrid-Stack OS require Squid to do any v4-mapping (Requires IPv6 Support)],
- [AC_DEFINE(IPV6_SPECIAL_V4MAPPING, 1, [ 1 == Perform v4-mapping internally]) AC_MSG_RESULT(yes)],
- [AC_DEFINE(IPV6_SPECIAL_V4MAPPING, 0, [ 0 == Leave all v4-mapping to the OS]) AC_MSG_RESULT(no)]
+ [ --with-ipv4-mapped Hybrid-Stack OS require Squid to do any v4-mapping. Requires IPv6 Support.],
+ [AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 1, [Enable v4-mapping through v6 sockets]) AC_MSG_RESULT(yes)],
+ [AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 0, [Enable v4-mapping through v6 sockets]) AC_MSG_RESULT(no)]
)
dnl Check for IPv6-pure option
AC_MSG_CHECKING([for IPv6-Localhost requirement])
AC_ARG_WITH(localhost-ipv6,
- [ --with-localhost-ipv6 Prefer IPv6 localhost address over IPv4 (Requires IPv6 Support).
+ [ --with-localhost-ipv6 Prefer IPv6 localhost address over IPv4. Requires IPv6 Support.
Treats 127.0.0.1 and ::1 as identical and converts all inputs of to ::1
This depends on Dual-Stack support in the OS and all applications
squid contacts via localhost being IPv6 enabled.
Default: OFF. Treats these two IP as different, squid.conf must
define both 127.0.0.1 and ::1 for the localhost ACL, etc. ],
- [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 1, [ 1 == Convert IPv4-localhost requests to IPv6.]) AC_MSG_RESULT(yes)],
- [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 0, [ 0 == Keep IPv4 and IPv6 Localhosts seperate.]) AC_MSG_RESULT(no)]
+ [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 1, [Convert IPv4-localhost requests to IPv6. Default: keep seperate.]) AC_MSG_RESULT(yes)],
+ [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 0, [Convert IPv4-localhost requests to IPv6. Default: Keep seperate.]) AC_MSG_RESULT(no)]
)
+
# end IPv6-only options
fi
AC_ARG_WITH(filedescriptors,
[ --with-filedescriptors=NUMBER
Force squid to support NUMBER filedescriptors],
-[ squid_filedescriptors_num=$withval ])
+[
+ case ${withval} in
+ [[0-9]]*)
+ squid_filedescriptors_num=$withval
+ ;;
+ *)
+ AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
+ ;;
+ esac
+])
AC_PATH_PROG(CPPUNITCONFIG, cppunit-config, false)
if $CPPUNITCONFIG --help >/dev/null; then
echo "Using cppunit includes from $withval"
SQUID_CPPUNIT_INC="-I${withval}/include"
else
- echo "ERROR: Cannot find cppunit at $withval"
- exit 1
+ AC_MSG_ERROR(Cannot find cppunit at $withval)
fi
if test -f $withval/lib/libcppunit.la; then
echo "Using cppunit lib from $withval"
SQUID_CPPUNIT_LA="${withval}/lib/libcppunit.la"
SQUID_CPPUNIT_LIBS='$(SQUID_CPPUNIT_LA)'
else
- echo "ERROR: Cannot find cppunit at $withval"
+ AC_MSG_ERROR(Cannot find cppunit at $withval)
exit 1
fi
])
#if HAVE_LIMITS_H
#include <limits.h>
#endif
+/* Netfilter ip(6)tables v1.4.0 has broken headers */
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
)
dnl *BSD dont include the depenencies for all their net/ and netinet/ files
dnl Check for needed libraries
AC_CHECK_LIB(nsl, main)
AC_CHECK_LIB(socket, main)
+dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
case "$host_os" in
mingw|mingw32)
AC_MSG_CHECKING(for winsock)
LIBS="$save_LIBS"
done
AC_MSG_RESULT($have_winsock)
+ if test $have_winsock = winsock2; then
+ AC_CHECK_HEADERS(winsock2.h)
+ else
+ AC_CHECK_HEADERS(winsock.h)
+ fi
;;
esac
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
main() {
FILE *fp = fopen("conftestval", "w");
fprintf (fp, "%d\n", FD_SETSIZE);
if test "$SQUID_MAXFD" -lt 512 ; then
echo "WARNING: $SQUID_MAXFD may not be enough filedescriptors if your"
echo " cache will be very busy. Please see the FAQ page"
- echo " http://www.squid-cache.org/FAQ/FAQ-11.html#filedescriptors"
+ echo " http://wiki.squid-cache.org/SquidFaq/TroubleShooting"
echo " on how to increase your filedescriptor limit"
sleep 10
fi
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
#include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
main ()
{
FILE *fp;
int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSADATA wsaData;
+ WSAStartup(2, &wsaData);
+#endif
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) exit(1);
if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSACleanup();
+#endif
if (val<=0) exit(1);
fp = fopen("conftestval", "w");
fprintf (fp, "%d\n", val);
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
#include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
main ()
{
FILE *fp;
int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSADATA wsaData;
+ WSAStartup(2, &wsaData);
+#endif
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) exit(1);
if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSACleanup();
+#endif
if (val <= 0) exit(1);
fp = fopen("conftestval", "w");
fprintf (fp, "%d\n", val);
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
#include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
main ()
{
FILE *fp;
int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSADATA wsaData;
+ WSAStartup(2, &wsaData);
+#endif
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1);
if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSACleanup();
+#endif
if (val <= 0) exit(1);
fp = fopen("conftestval", "w");
fprintf (fp, "%d\n", val);
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
#include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
main ()
{
FILE *fp;
int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSADATA wsaData;
+ WSAStartup(2, &wsaData);
+#endif
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1);
if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+ WSACleanup();
+#endif
if (val <= 0) exit(1);
fp = fopen("conftestval", "w");
fprintf (fp, "%d\n", val);
fi
fi
+dnl Squid now has .po translation capability, given the right toolkit
+AX_WITH_PROG([PO2HTML],[po2html])
+AC_SUBST(PO2HTML)
+
+dnl Squid now has limited locale handling ...
+dnl on error pages
+AC_ARG_ENABLE(auto-locale,
+[ --enable-auto-locale This enables squid to lookup translated error pages
+ based on the clients request headers. Without it squid
+ is limited to a single language set in squid.conf],
+[ if test "$enableval" = "yes" ; then
+ echo "Enabling Multi-Language Support"
+ AC_DEFINE(USE_ERR_LOCALES,1,[Use multi-language support on error pages])
+ else
+ echo "Disabling Multi-Language Support"
+ AC_DEFINE(USE_ERR_LOCALES,0,[Use multi-language support on error pages])
+ fi
+])
+
+
dnl Need the debugging version of malloc if available
XTRA_OBJS=''
if test "$ac_cv_lib_malloc_main" = "yes" ; then
DEFAULT_CONFIG_FILE = $(sysconfdir)/squid.conf
DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf
DEFAULT_MIME_TABLE = $(sysconfdir)/mime.conf
-DEFAULT_ERROR_DIR = $(datadir)/errors/@ERR_DEFAULT_LANGUAGE@
+DEFAULT_ERROR_DIR = $(datadir)/errors
SUBSTITUTE=sed "\
s%@DEFAULT_CONFIG_FILE@%$(DEFAULT_CONFIG_FILE)%g;\
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.50">
<TITLE>Squid 3.0.RC1 release notes</TITLE>
</HEAD>
<BODY>
<H1>Squid 3.0.RC1 release notes</H1>
-<H2>Squid Developers</H2>$Id: release-3.0.html,v 1.13 2007/12/14 05:34:41 amosjeffries Exp $
+<H2>Squid Developers</H2>$Id: release-3.0.sgml,v 1.31 2007/12/14 05:34:16 amosjeffries Exp $
<HR>
<EM>This document contains the release notes for version 3.0 of Squid.
Squid is a WWW Cache application developed by the National Laboratory
<P>Although this release is deemed good enough for testing in many setups, please note the existence of
<A HREF="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&target_milestone=3.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=bugs.bug_severity&field0-0-0=noop&type0-0-0=noop&value0-0-0=">open bugs against Squid-3.0</A>.</P>
-<H2><A NAME="s3">3. Changes since earlier PRE releases of Squid-3.0</A></H2>
+<H2><A NAME="s3">3. Changes since earlier releases of Squid-3.0</A></H2>
<P>The 3.0 change history can be
<A HREF="http://www.squid-cache.org/Versions/v3/3.0/changesets/">viewed here</A>.</P>
</P>
<P>See
<A HREF="http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7">http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7</A> for a definition of all log types.</P>
+<H2><A NAME="s5">5. Windows support</A></H2>
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment,
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<BR>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<DL>
+
+<DT><B>Usage</B><DD>
+<P>Some new command line options were added for the Windows service support:<BR></P>
+<P>The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.</P>
+<P>A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<EM>"Squid"</EM> is the default when the switch is not used.</P>
+<P>So, to install the service, the syntax is: </P>
+<P>
+<PRE>
+squid -i [-f file] [-n name]
+</PRE>
+</P>
+<P>Service uninstallation is made with -r command line switch with the appropriate -n switch.</P>
+<P>The -k switch family must be used with the appropriate -f and -n switches, so the syntax is: </P>
+<P>
+<PRE>
+squid -k command [-f file] -n service-name
+</PRE>
+
+where <EM>service-name</EM> is the name specified with -n options at service install time.</P>
+<P>To use the Squid original command line, the new -O switch must be used ONCE, the syntax is: </P>
+<P>
+<PRE>
+squid -O cmdline [-n service-name]
+</PRE>
+
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.</P>
+<P>Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.</P>
+<P>In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130": </P>
+<P>
+<PRE>
+squid -O "-D -u 3130" -n squidsvc
+</PRE>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>PSAPI.DLL (Process Status Helper) Considerations</B><DD>
+<P>The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.</P>
+<P>PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.</P>
+<P>On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<A HREF="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE</A></P>
+<P>On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Registry DNS lookup</B><DD>
+<P>On Windows platforms, if no value is specified in the <EM>dns_nameservers</EM> option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Compatibility Notes</B><DD>
+<P>
+<UL>
+<LI>It's recommended to use '/' char in Squid paths instead of '\'</LI>
+<LI>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid</LI>
+<LI>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<PRE>
+acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"
+</PRE>
+
+</LI>
+<LI>The Windows equivalent of '/dev/null' is 'NUL'</LI>
+<LI>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<PRE>
+redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd
+</PRE>
+</LI>
+<LI>When Squid runs in command line mode, the launching user account must have administrative privilege on the system</LI>
+<LI>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used</LI>
+<LI>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Known Limitations</B><DD>
+<P>
+<UL>
+<LI>Squid features not operational:<BR>
+<UL>
+<LI>DISKD: still needs to be ported<BR></LI>
+<LI>WCCP: cannot work because user space GRE support on Windows is missing<BR></LI>
+<LI>Transparent Proxy: missing Windows non commercial interception driver<BR></LI>
+</UL>
+</LI>
+<LI>Some code sections can make blocking calls.</LI>
+<LI>Some external helpers may not work.</LI>
+<LI>File Descriptors number hard-limited to 2048 when building with MinGW.</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Building Squid on Windows</B><DD>
+<P>A reasonably recent release of
+<A HREF="http://www.cygwin.com/">Cygwin</A> or
+<A HREF="http://www.mingw.org/">MinGW</A> is needed.<BR>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<BR>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<BR><BR>
+OpenSSL:
+<A HREF="http://www.slproweb.com/products/Win32OpenSSL.html">Shining Light Productions Win32 OpenSSL</A><BR>
+libcrypt:
+<A HREF="http://sourceforge.net/projects/mingwrep/">MinGW packages repository</A><BR>
+db-1.85:
+<A HREF="http://tinycobol.org/download.html">TinyCOBOL download area</A><BR>
+uudecode:
+<A HREF="http://unxutils.sourceforge.net/">Native Win32 ports of some GNU utilities</A><BR><BR>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<BR>
+<UL>
+<LI>New configure options:<BR>
+<UL>
+<LI>--enable-win32-service<BR></LI>
+</UL>
+</LI>
+<LI>Updated configure options:<BR>
+<UL>
+<LI>--enable-arp-acl<BR></LI>
+<LI>--enable-default-hostsfile<BR></LI>
+</UL>
+</LI>
+<LI>Unsupported configure options:<BR>
+<UL>
+<LI>--enable-coss-aio-ops: On Windows Posix AIO is not available<BR></LI>
+<LI>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<BR></LI>
+</UL>
+</LI>
+<LI>Recommended configure minimal options for Windows:<BR>
+<UL>
+<LI>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none</LI>
+</UL>
+</LI>
+</UL>
+<BR>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<UL>
+<LI>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<BR></LI>
+<LI>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<BR></LI>
+<LI>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<BR></LI>
+</UL>
+</P>
+
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Using cache manager on Windows:</B><DD>
+<P>On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<BR>
+Some specific configuration could be needed:<BR>
+<UL>
+<LI>IIS 6 (Windows 2003):<BR>
+<UL>
+<LI>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<BR>
+<UL>
+<LI>Create a cgi-bin Directory</LI>
+<LI>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application </LI>
+<LI>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file</LI>
+<LI>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <EM>"Squid Cachemgr"</EM>, add the cachemgr.cgi file and set the
+extension status to <EM>Allowed</EM></LI>
+</UL>
+</LI>
+</UL>
+</LI>
+<LI>Apache:<BR>
+<UL>
+<LI>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+to pass the TMP and TEMP Windows environment variables to CGI applications:<BR>
+<PRE>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+<Location /squid/cgi-bin/cachemgr.cgi>
+ PassEnv TMP TEMP
+ Order allow,deny
+ Allow from workstation.example.com
+</Location>
+</PRE>
+</LI>
+</UL>
+</LI>
+</UL>
+</P>
+</DL>
+</P>
-<H2><A NAME="ss4.4">4.4 Changes to squid.conf</A>
+<H2><A NAME="ss5.1">5.1 Changes to squid.conf</A>
</H2>
<P>There have been many changes to Squid's configuration file since Squid-2.6.</P>
</P>
-<H2><A NAME="ss4.5">4.5 Changes to ./configure Options</A>
+<H2><A NAME="ss5.2">5.2 Changes to ./configure Options</A>
</H2>
<P>There have been some changes to Squid's build configuration since Squid-2.6.</P>
-<!doctype linuxdoc system>\r
-<article>\r
-<title>Squid 3.0.RC1 release notes</title>\r
-<author>Squid Developers</author>\r
-<date>$Id: release-3.0.sgml,v 1.31 2007/12/14 05:34:16 amosjeffries Exp $</date>\r
-\r
-<abstract>\r
-This document contains the release notes for version 3.0 of Squid.\r
-Squid is a WWW Cache application developed by the National Laboratory\r
-for Applied Network Research and members of the Web Caching community.\r
-</abstract>\r
-\r
-<toc>\r
-\r
-<sect>Notice\r
-<p>\r
-The Squid Team are pleased to announce the release of Squid-3.0.RC1 for pre-release testing.\r
-\r
-This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.0/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.\r
-\r
-A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support.\r
-While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.\r
-\r
-We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.\r
-\r
-<sect>Known issues\r
-<p>\r
-Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&target_milestone=3.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=bugs.bug_severity&field0-0-0=noop&type0-0-0=noop&value0-0-0=" name="open bugs against Squid-3.0">.\r
-\r
-<sect>Changes since earlier releases of Squid-3.0\r
-<p>\r
-The 3.0 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.0/changesets/" name="viewed here">.\r
-\r
-<sect>Changes since Squid-2.6\r
-\r
-<sect1>Major new features\r
-<p>\r
-Squid 3.0 represents a major rewrite of Squid and has a number of new features.\r
-\r
-The most important of these are:\r
-\r
-<itemize>\r
- <item>Code converted to C++, with significant internal restructuring and rewrites.\r
- <item>ICAP implementation (RFC 3507 and www.icap-forum.org)\r
- <item>Edge Side Includes (ESI) implementation (www.esi.org)\r
-</itemize>\r
-\r
-Most user-facing changes are reflected in squid.conf (see below).\r
-\r
-<sect2>Internet Content Adaptation Protocol (ICAP)\r
-\r
-<p>Squid 3.0 supports ICAP/1.0. To enable ICAP support, use the --enable-icap-client ./configure option and icap_enable squid.conf option. You will also need to configure ICAP services in your squid.conf using icap_service, icap_class, and icap_access options. The following example instructs Squid to talk to two ICAP services, one for request and one for response adaptation:\r
-\r
-<verb>\r
-icap_enable on\r
-icap_service service_req reqmod_precache 1 icap://127.0.0.1:1344/request\r
-icap_service service_resp respmod_precache 0 icap://127.0.0.1:1344/response\r
-icap_class class_req service_req\r
-icap_class class_resp service_resp\r
-icap_access class_req allow all\r
-icap_access class_resp allow all\r
-</verb>\r
-\r
-<p>Please see squid.conf.default for more details about these and many other icap_* options.\r
-\r
-<p>Squid supports pre-cache request and pre-cache response vectoring points. The following ICAP features are supported: message preview, 204 responses outside of preview, request satisfaction, X-Transfer-* negotiation, persistent ICAP connections, client IP/credentials sharing, and optional bypass of certain service failures.\r
-\r
-<p>No more than one ICAP service can be applied to an HTTP message. In other words, chaining or load balancing multiple services is not yet supported.\r
-\r
-<p>Proxy-directed data trickling and patience pages are not supported yet.\r
-\r
-<p>Following ICAP requirements, Squid never performs HTTP message adaptation without a successful and fresh ICAP OPTIONS response on file. A REQMOD or RESPMOD request will not be sent to a configured ICAP service until Squid receives a valid OPTIONS response from that service. If a service malfunctions or goes down, Squid may stop talking to the service for a while. Several squid.conf options can be used to tune the failure bypass algorithm (e.g., icap_service_failure_limit and icap_service_revival_delay). \r
-\r
-<p>The bypass parameter of the icap_service squid.conf option determines whether Squid will try to bypass service failures. Most connectivity and preview-stage failures can be bypassed.\r
-\r
-<p>More information about ICAP can be found from the ICAP-forum website <url url="http://www.icap-forum.org">\r
-\r
-<sect2>Edge Side Includes (ESI)\r
-\r
-<p>ESI is an open specification of an markup language enabling reverse proxies\r
-to perform some simple XML based processing, offloading the final page assembly from the webserver and similar tasks.\r
-\r
-<p>More information about ESI can be found from the ESI website <url url="http://www.esi.org">\r
-\r
-<sect1>2.6 features not found in Squid-3.0\r
-<p>\r
-Some of the features found in Squid-2.6 is not available in Squid-3.\r
-Some has been dropped as they are not needed. Some has not yet been forward-ported to Squid-3 and may appear in a later release.\r
-\r
-<itemize>\r
- <item>refresh_stale_hit option. Not yet ported.\r
- <item>ability to follow X-Forwarded-For. Not yet ported.\r
- <item>Full caching of Vary/ETag using If-None-Match. Only basic Vary cache supported. Not yet ported.\r
- <item>Mapping of server error messages. Not yet ported.\r
- <item>http_access2 access directive. Not yet ported.\r
- <item>Location header rewrites. Not yet ported.\r
- <item>umask directive. Not yet ported.\r
- <item>wais_relay. Feature dropped as it's equivalent to cache_peer + cache_peer_access.\r
- <item>urlgroup. Not yet ported.\r
- <item>collapsed forwarding. Not yet ported.\r
- <item>stable Windows support. Irregularly maintained.\r
-</itemize>\r
-\r
-<sect1>Logging changes\r
-<sect2>access.log\r
-<p>The TCP_REFRESH_HIT and TCP_REFRESH_MISS log types have been replaced because they were misleading (all refreshes need to query the origin server, so they could never be hits). The following log types have been introduced to replace them:\r
-\r
-<descrip>\r
- <tag>TCP_REFRESH_UNMODIFIED</tag>\r
- <p>The requested object was cached but STALE. The IMS query for the object resulted in "304 not modified".\r
- <tag>TCP_REFRESH_MODIFIED</tag>\r
- <p>The requested object was cached but STALE. The IMS query returned the new content.\r
-</descrip>\r
-<p>See <url url="http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7"> for a definition of all log types.\r
-\r
-\r
-\r
-\r
-<sect1>Changes to squid.conf\r
-<p>\r
-There have been many changes to Squid's configuration file since Squid-2.6.\r
-\r
-This section gives a thorough account of those changes in three categories:\r
-\r
-<itemize>\r
- <item><ref id="newtags" name="New tags">\r
- <item><ref id="modifiedtags" name="Changes to existing tags">\r
- <item><ref id="removedtags" name="Removed tags">\r
-</itemize>\r
-\r
-<p>\r
-\r
-\r
-\r
-<sect2>New tags<label id="newtags">\r
-\r
-<p>\r
-<descrip>\r
- <tag>minimum_icp_query_timeout (msec)</tag>\r
- <verb>\r
-Default: 5\r
-\r
-Normally the ICP query timeout is determined dynamically. But\r
-sometimes it can lead to very small timeouts, even lower than\r
-the normal latency variance on your link due to traffic.\r
-Use this option to put an lower limit on the dynamic timeout\r
-value. Do NOT use this option to always use a fixed (instead\r
-of a dynamic) timeout value. To set a fixed timeout see the\r
-'icp_query_timeout' directive.\r
- </verb>\r
- <tag>background_ping_rate</tag>\r
- <verb>\r
-Default: 10 seconds\r
-\r
-Controls how often the ICP pings are sent to siblings that\r
-have background-ping set.\r
- </verb>\r
-\r
- <tag>httpd_accel_surrogate_id</tag>\r
- <verb>\r
-Default: unset\r
-\r
-Surrogates (http://www.esi.org/architecture_spec_1.0.html)\r
-need an identification token to allow control targeting. Because\r
-a farm of surrogates may all perform the same tasks, they may share\r
-an identification token.\r
- </verb>\r
-\r
- <tag>http_accel_surrogate_remote on|off</tag>\r
- <verb>\r
-Default: off\r
-\r
-Remote surrogates (such as those in a CDN) honour Surrogate-Control: no-store-remote.\r
-Set this to on to have squid behave as a remote surrogate.\r
- </verb>\r
-\r
- <tag>esi_parser libxml2|expat|custom</tag>\r
- <verb>\r
-Default: custom\r
-\r
-ESI markup is not strictly XML compatible. The custom ESI parser\r
-will give higher performance, but cannot handle non ASCII character\r
-encodings.\r
- </verb>\r
-\r
- <tag>email_err_data on|off</tag>\r
- <verb>\r
-Default: on\r
-\r
-If enabled, information about the occurred error will be\r
-included in the mailto links of the ERR pages (if %W is set)\r
-so that the email body contains the data.\r
-Syntax is <A HREF="mailto:%w%W">%w</A>\r
- </verb>\r
-\r
- <tag>refresh_all_ims on|off</tag>\r
- <verb>\r
-Default: off\r
-\r
-When you enable this option, squid will always check\r
-the origin server for an update when a client sends an\r
-If-Modified-Since request. Many browsers use IMS\r
-requests when the user requests a reload, and this\r
-ensures those clients receive the latest version.\r
-\r
-By default (off), squid may return a Not Modified response\r
-based on the age of the cached version.\r
- </verb>\r
- <tag>request_header_access</tag>\r
- <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to requests only.\r
- <tag>reply_header_access</tag>\r
- <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to replies only.\r
-\r
- <tag>icap_enable on|off</tag>\r
- <verb>\r
-Default: off\r
-\r
-If you want to enable the ICAP module support, set this to on.\r
- </verb>\r
- <tag>icap_preview_enable on|off</tag>\r
- <verb>\r
-Default: off\r
-\r
-Set this to 'on' if you want to enable the ICAP preview\r
-feature in Squid.\r
- </verb>\r
- <tag>icap_preview_size</tag>\r
- <verb>\r
-Default: -1\r
-\r
-The default size of preview data to be sent to the ICAP server.\r
--1 means no preview. This value might be overwritten on a per server\r
-basis by OPTIONS requests.\r
- </verb>\r
- <tag>icap_default_options_ttl (seconds)</tag>\r
- <verb>\r
-Default: 60\r
-\r
-The default TTL value for ICAP OPTIONS responses that don't have\r
-an Options-TTL header.\r
- </verb>\r
- <tag>icap_persistent_connections on|off</tag>\r
- <verb>\r
-Default: on\r
-\r
-Whether or not Squid should use persistent connections to\r
-an ICAP server.\r
- </verb>\r
- <tag>icap_send_client_ip on|off</tag>\r
- <verb>\r
-Default: off\r
-\r
-This adds the header "X-Client-IP" to ICAP requests.\r
- </verb>\r
- <tag>icap_send_client_username on|off</tag>\r
- <verb>\r
-Default: off\r
-\r
-This adds the header "X-Client-Username" to ICAP requests\r
-if proxy access is authentified.\r
- </verb>\r
- <tag>icap_service</tag>\r
- <verb>\r
-Default: none\r
-\r
-Defines a single ICAP service\r
-\r
-icap_service servicename vectoring_point bypass service_url\r
-\r
-vectoring_point = reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache\r
-This specifies at which point of request processing the ICAP\r
-service should be plugged in.\r
-bypass = 1|0\r
-If set to 1 and the ICAP server cannot be reached, the request will go\r
-through without being processed by an ICAP server\r
-service_url = icap://servername:port/service\r
-\r
-Note: reqmod_precache and respmod_postcache is not yet implemented\r
-\r
-Example:\r
-icap_service service_1 reqmod_precache 0 icap://icap1.mydomain.net:1344/reqmod\r
-icap_service service_2 respmod_precache 0 icap://icap2.mydomain.net:1344/respmod\r
- </verb>\r
- <tag>icap_class</tag>\r
- <verb>\r
-Default: none\r
-\r
-Defines an ICAP service chain. If there are multiple services per\r
-vectoring point, they are processed in the specified order.\r
-\r
-icap_class classname servicename...\r
-\r
-Example:\r
-icap_class class_1 service_1 service_2\r
-icap class class_2 service_1 service_3\r
- </verb>\r
- <tag>icap_access</tag>\r
- <verb>\r
-Default: none\r
-\r
-Redirects a request through an ICAP service class, depending\r
-on given acls\r
-\r
-icap_access classname allow|deny [!]aclname...\r
-\r
-The icap_access statements are processed in the order they appear in\r
-this configuration file. If an access list matches, the processing stops.\r
-For an "allow" rule, the specified class is used for the request. A "deny"\r
-rule simply stops processing without using the class. You can also use the\r
-special classname "None".\r
-\r
-For backward compatibility, it is also possible to use services\r
-directly here.\r
-\r
-Example:\r
-icap_access class_1 allow all\r
- </verb>\r
-\r
- <tag>accept_filter</tag>\r
- <verb>\r
-The name of an accept(2) filter to install on Squid's\r
-listen socket(s). This feature is perhaps specific to\r
-FreeBSD and requires support in the kernel.\r
-\r
-The 'httpready' filter delays delivering new connections\r
-to Squid until a full HTTP request has been received.\r
-See the accf_http(9) man page.\r
- </verb>\r
-</descrip>\r
-\r
-\r
-<sect2>Changes to existing tags<label id="modifiedtags">\r
-<p>\r
-<descrip>\r
- <tag>http_port</tag>\r
- <p>New options:\r
- <verb>\r
- disable-pmtu-discovery=\r
- Control Path-MTU discovery usage:\r
- off lets OS decide on what to do (default).\r
- transparent disable PMTU discovery when transparent support is enabled.\r
- always disable always PMTU discovery.\r
-\r
- In many setups of transparently intercepting proxies Path-MTU\r
- discovery can not work on traffic towards the clients. This is\r
- the case when the intercepting device does not fully track\r
- connections and fails to forward ICMP must fragment messages\r
- to the cache server. If you have such setup and experience that\r
- certain clients sporadically hang or never complete requests set\r
- disable-pmtu-discovery option to 'transparent'.\r
- </verb>\r
- <p>Removed options:\r
- <verb>\r
- urlgroup=, not yet ported to Squid-3.\r
- \r
- no-connection-auth, not yet ported to Squid-3.\r
- </verb> \r
- <tag> https_port</tag>\r
- <p>Removed options:\r
- <verb>\r
- urlgroup=, not yet ported to Squid-3.\r
- </verb>\r
- <tag>cache_peer</tag>\r
- <p>New options:\r
- <verb>\r
- basetime=n\r
-\r
- background-ping\r
-\r
- weighted-round-robin\r
-\r
- use 'basetime=n' to specify a base amount to\r
- be subtracted from round trip times of parents.\r
- It is subtracted before division by weight in calculating\r
- which parent to fectch from. If the rtt is less than the\r
- base time the rtt is set to a minimal value.\r
-\r
- use 'background-ping' to only send ICP queries to this\r
- neighbor infrequently. This is used to keep the neighbor\r
- round trip time updated and is usually used in\r
- conjunction with weighted-round-robin.\r
-\r
- use 'weighted-round-robin' to define a set of parents\r
- which should be used in a round-robin fashion with the\r
- frequency of each parent being based on the round trip\r
- time. Closer parents are used more often.\r
- Usually used for background-ping parents.\r
-\r
- </verb>\r
- <p>Removed options:\r
- <verb>\r
- userhash, not yet ported to Squid-3\r
-\r
- sourcehash, not yet ported to Squid-2\r
-\r
- monitorurl, monitorsize etc, not yet ported to Squid-3\r
-\r
- connection-auth=, not yet ported to Squid-3\r
- </verb>\r
- <tag>cache_dir</tag>\r
- <p>Common options\r
- <verb>\r
- no-store, replaces the older read-only option\r
-\r
- min-size, not yet portedto Squid-3\r
- </verb>\r
- <p>COSS file system:\r
- <verb>\r
- The coss file store is experimental, and still lacks much\r
- of the functionality found in 2.6.\r
-\r
- overwrite-percent=n, not yet ported to Squid-3.\r
-\r
- max-stripe-waste=n, not yet ported to Squid-3.\r
-\r
- membufs=n, not yet ported to Squid-3.\r
-\r
- maxfullbufs=n, not yet ported to Squid-3.\r
- </verb>\r
- <tag>auth_param</tag>\r
- <p>Removed Basic auth option\r
- <verb>\r
- blankpasswor, not yet ported to squid-3.\r
- auth_param basic concurrency 0\r
- </verb>\r
- <p>Removed digest options:\r
- <verb>\r
- concurrency, not yet ported to Squid-3.\r
- </verb>\r
-\r
- <tag>external_acl_type</tag>\r
- <p>New format specifications:\r
- <verb>\r
- %URI Requested URI\r
-\r
- %PATH Requested URL path\r
- </verb>\r
- <P>Removed format specifications:\r
- <verb>\r
- %ACL, not yet ported to Squid-3\r
-\r
- %DATA, not yet ported to Squid-3\r
- </verb>\r
- <p>New result keywords:\r
- <verb>\r
- tag= Apply a tag to a request (for both ERR and OK results)\r
- Only sets a tag, does not alter existing tags.\r
- </verb>\r
-\r
- <tag>refresh_pattern</tag>\r
- <p>New options:\r
- <verb>\r
- ignore-no-store\r
- refresh-ims\r
-\r
- ignore-no-store ignores any ``Cache-control: no-store''\r
- headers received from a server. Doing this VIOLATES\r
- the HTTP standard. Enabling this feature could make you\r
- liable for problems which it causes.\r
-\r
- refresh-ims causes squid to contact the origin server\r
- when a client issues an If-Modified-Since request. This\r
- ensures that the client will receive an updated version\r
- if one is available.\r
- </verb>\r
- <tag>acl</tag>\r
- <p>New types:\r
- <verb>\r
- acl aclname http_status 200 301 500- 400-403 ... # status code in reply\r
-\r
- </verb>\r
- <p>Removed types:\r
- <verb>\r
- acl aclname urllogin [-i] [^a-zA-Z0-9] ... # regex matching on URL login field\r
-\r
- acl urlgroup group1 ...\r
- # match against the urlgroup as indicated by redirectors\r
-\r
- </verb>\r
- <tag>short_icon_urls</tag>\r
- <p>New default:\r
- <verb>\r
- Default: on\r
- (Old default: off)\r
- </verb>\r
- <tag>delay_class</tag>\r
- <p>New delay classes:\r
- <verb>\r
- class 4 Everything in a class 3 delay pool, with an\r
- additional limit on a per user basis. This\r
- only takes effect if the username is established\r
- in advance - by forcing authentication in your\r
- http_access rules.\r
-\r
- class 5 Requests are grouped according their tag (see\r
- external_acl's tag= reply).\r
- </verb>\r
-\r
- <tag>htcp_port</tag>\r
- <p>New default to require the feature to be enabled in squid.conf:\r
- <verb>\r
- Default: 0 (disabled)\r
- (Old default: 4827)\r
- </verb>\r
-\r
- <tag>icp_port</tag>\r
- <p>New default to require the feature to be enabled in squid.conf:\r
- <verb>\r
- Default: 0 (disabled)\r
- (Old default: 3130)\r
- </verb>\r
-\r
- <tag>snmp_port</tag>\r
- <p>New default to require the feature to be enabled in squid.conf:\r
- <verb>\r
- Default: 0 (disabled)\r
- (Old default: 3401)\r
- </verb>\r
-\r
- <tag>logformat</tag>\r
- <p>New format tags:\r
- <verb>\r
- rp Request URL-Path excluding hostname\r
-\r
- et Tag returned by external acl\r
-\r
- <sH Reply high offset sent\r
-\r
- <sS Upstream object size\r
- </verb>\r
-\r
- <p>Removed format tags:\r
- <verb>\r
- >st Request size including HTTP headers, not yet ported to Squid-3.\r
-\r
- st Request+Reply size including HTTP headers, not yet ported to Squid-3.\r
- </verb>\r
-\r
- <tag>reply_body_max_size</tag>\r
- <p>Syntax changed:\r
- <verb>\r
- reply_body_max_size size [acl acl...]\r
- </verb>\r
- <p>allow/deny no longer used.\r
-\r
- <tag>url_rewrite_program</tag>\r
- <p>No urlgroup support in either requests or responese\r
-</descrip>\r
-\r
-\r
-\r
-\r
-<sect2>Removed tags<label id="removedtags">\r
-<p>\r
-<descrip>\r
- <tag>broken_vary_encoding</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>cache_vary</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>collapsed_forwarding</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>follow_x_forwarded_for</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>*_uses_indirect_client</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>error_map</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>header_access</tag>\r
- <p>This has been replaced by request_header_access and reply_header_access\r
- <tag>http_access2</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>httpd_accel_no_pmtu_disc</tag>\r
- <p>Replaced by disable-pmtu-discovery http_port option\r
- <tag>location_rewrite_*</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>refresh_stale_hit</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>umask</tag>\r
- <p>Not yet ported to Squid-3.\r
- <tag>wais_relay_*</tag>\r
- <p>equivalent to cache_peer + cache_peer_access.\r
-</descrip>\r
-\r
-\r
-<sect1>Changes to ./configure Options\r
-<p>\r
-There have been some changes to Squid's build configuration since Squid-2.6.\r
-\r
-This section gives an account of those changes in three categories:\r
-\r
-<itemize>\r
- <item><ref id="newoptions" name="New options">\r
- <item><ref id="modifiedoptions" name="Changes to existing options">\r
- <item><ref id="notportedoptions" name="Not yet available options">\r
- <item><ref id="removedoptions" name="Removed options">\r
-</itemize>\r
-<p>\r
-\r
-\r
-<sect2>New options<label id="newoptions">\r
-\r
-<p>\r
-<descrip>\r
- <tag>--enable-shared[=PKGS]</tag>\r
- <p>Build shared libraries. The default is to build without.</p>\r
-\r
- <tag>--enable-static[=PKGS]</tag>\r
- <p>Build static libraries. The default is on.</p>\r
-\r
- <tag>--enable-fast-install[=PKGS]</tag>\r
- <verb>Optimize for fast installation\r
- default: yes</verb>\r
-\r
- <tag>--disable-libtool-lock</tag>\r
- <p>Avoid locking (might break parallel builds)</p>\r
-\r
- <tag>--disable-optimizations</tag>\r
- <p>Don't compile Squid with compiler optimizations enabled.\r
- Optimization is good for production builds, but not\r
- good for debugging. During development, use\r
- --disable-optimizations to reduce compilation times\r
- and allow easier debugging. This option implicitly\r
- also enables --disable-inline</p>\r
-\r
- <tag>--disable-inline</tag>\r
- <p>Don't compile trivial methods as inline. Squid\r
- is coded with much of the code able to be inlined.\r
- Inlining is good for production builds, but not\r
- good for development. During development, use\r
- --disable-inline to reduce compilation times and\r
- allow incremental builds to be quick. For\r
- production builds, or load tests, use\r
- --enable-inline to have squid make all trivial\r
- methods inlinable by the compiler.</p>\r
-\r
- <tag>--enable-debug-cbdata</tag>\r
- <p>Provide some debug information in cbdata</p>\r
-\r
- <tag>--enable-disk-io=\"list of modules\"</tag>\r
- <p>Build support for the list of disk I/O modules.\r
- The default is only to build the "Blocking" module.\r
- See src/DiskIO for a list of available modules, or\r
- Programmers Guide for details on how to build your\r
- custom disk module.</p>\r
-\r
- <tag>--enable-esi</tag>\r
- <p>Enable ESI for accelerators. Requires libexpat.\r
- Enabling ESI will cause squid to follow the Edge\r
- Acceleration Specification (www.esi.org). This\r
- causes squid to IGNORE client Cache-Control headers.</p>\r
- <p><em>DO NOT</em> use this in a squid configured as a web\r
- proxy, ONLY use it in a squid configured for\r
- webserver acceleration.</p>\r
-\r
- <tag>--enable-icap-client</tag>\r
- <p>Enable the ICAP client.</p>\r
-\r
- <tag>--disable-snmp</tag>\r
- <p>Disable SNMP monitoring support which is now built by default.</p>\r
-\r
- <tag>--disable-htcp</tag>\r
- <p>Disable HTCP protocol support which is now built by default.</p>\r
-\r
- <tag>--enable-kqueue</tag>\r
- <p>Enable kqueue() support. Marked as experimental in 3.0.</p>\r
-\r
- <tag>--enable-ipfw-transparent</tag>\r
- <p>Enable Transparent Proxy support for systems\r
- using FreeBSD IPFW style redirection.</p>\r
-\r
- <tag>--disable-mempools</tag>\r
- <p>Disable memPools. Note that this option now simply sets the\r
- default behaviour. Specific classes can override this at runtime, and\r
- only lib/MemPool.c needs to be altered to change the squid-wide\r
- default for all classes.</p>\r
-\r
- <tag>--enable-cpu-profiling</tag>\r
- <p>This option allows you to see which internal functions\r
- in Squid are consuming how much CPU. Compiles in probes\r
- that measure time spent in probed functions. Needs\r
- source modifications to add new probes. This is meant\r
- for developers to assist in performance optimisations\r
- of Squid internal functions.</p>\r
- <p>If you are not developer and not interested in the stats\r
- you shouldn't enable this, as overhead added, although\r
- small, is still overhead. See lib/Profiler.c for more.</p>\r
-\r
- <tag>--with-gnu-ld</tag>\r
- <p>Assume the C compiler uses GNU ld. The default is to auto-detect.</p>\r
-\r
- <tag>--with-pic</tag>\r
- <p>Try to use only PIC/non-PIC objects. The default is to use both.</p>\r
-\r
- <tag>--with-tags[=TAGS]</tag>\r
- <p>Include additional configurations. The default is automatic.</p>\r
-\r
- <tag>--with-default-user=USER</tag>\r
- <p>Sets the default System User account for squid permissions.\r
- The default is 'nobody' as in other releases of squid.</p>\r
-\r
- <tag>--with-cppunit-basedir=[PATH]</tag>\r
- <p>Path where the cppunit headers and libraries are found\r
- for unit testing. The default is automatic detection.</p>\r
- <p>NOTE: Since 3.0-PRE6 and 2.6STABLE14 squid no longer comes\r
- bundled with CPPUnit. Compile-time validation will be disabled\r
- if it is not installed on your system.</p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Changes to existing options<label id="modifiedoptions">\r
-\r
-<p>\r
-<descrip>\r
- <tag>--enable-carp</tag>\r
- <p>CARP support is now built by default.\r
- --disable-carp can be used to build without it.</p>\r
-\r
- <tag>--enable-htcp</tag>\r
- <p>HTCP protocol support is now built by default.\r
- Use --disable-htcp to build without it.</p>\r
-\r
- <tag>--enable-snmp</tag>\r
- <p>SNMP monitoring is now build by default.\r
- Use --disable-snmp to build without it.</p>\r
-\r
- <tag>--enable-heap-replacement</tag>\r
- <p>Please use --enable-removal-policies directive instead.</p>\r
-\r
- <tag>--with-maxfd=N</tag>\r
- <p>Replaced by --with-filedescriptors=N</p>\r
- <p>Override maximum number of filedescriptors. Useful\r
- if you build as another user who is not privileged\r
- to use the number of filedescriptors you want the\r
- resulting binary to support</p>\r
-\r
- <tag>--enable-select</tag>\r
- <p>Deprecated.\r
- Automatic checks will enable best I/O loop method available.</p>\r
-\r
- <tag>--enable-epoll</tag>\r
- <p>Deprecated.\r
- Automatic checks will enable best I/O loop method available.</p>\r
-\r
- <tag>--enable-poll</tag>\r
- <p>Deprecated.\r
- Automatic checks will enable best I/O loop method available.</p>\r
-\r
- <tag>--enable-kqueue</tag>\r
- <p>kqueue support is marked Experimental in Squid 3.0. Known to have some issues under load.</p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Not yet available options<label id="notportedoptions">\r
-\r
-<p>These configure options have not yet been ported to Squid-3. If you need something to do then\r
-porting one of these from Squid-2 to Squid-3 is most welcome.\r
-\r
-<descrip>\r
- <tag>--enable-devpoll</tag>\r
- <p>Support for Solaris /dev/poll</p>\r
-\r
- <tag>--enable-select-simple</tag>\r
- <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>\r
-\r
- <tag>--enable-follow-x-forwarded-for</tag>\r
- <p>Support following the X-Forwarded-For HTTP header for determining the\r
- client IP address</p>\r
-</descrip>\r
-\r
-<sect2>Removed options<label id="removedoptions">\r
-\r
-<p>The following configure options have been removed.\r
-\r
-<descrip>\r
- <tag>--enable-dlmalloc</tag>\r
- <p>Most OS:es have good malloc implementations these days, and the version we used to ship with Squid was very very old..</p>\r
- <tag>--enable-mempool-debug</tag>\r
- <p>Debug option, not needed and therefore removed.</p>\r
- <tag>--enable-forward-log</tag>\r
- <p>Rarely used extra log file. Removed.</p>\r
- <tag>--enable-multicast-miss</tag>\r
- <p>Rarely used feature, and multicast ICP acheives almost the same result. Removed.</p>\r
- <tag>--enable-coss-aio-ops</tag>\r
- <p>Specific to the COSS implementation in Squid-2</p>\r
- <tag>--enable-large-cache-files</tag>\r
- <p>Now enabled by default. Configure option was redundant and therefore removed.\r
- <tag>--enable-truncate</tag>\r
- <p>Known to cause race conditions where cache objects may get corrupted, and this for at most a marginal performance improvement. Removed.</p>\r
-\r
-</descrip>\r
-\r
-</article>\r
+<!doctype linuxdoc system>
+<article>
+<title>Squid 3.0.RC1 release notes</title>
+<author>Squid Developers</author>
+<date>$Id: release-3.0.sgml,v 1.31 2007/12/14 05:34:16 amosjeffries Exp $</date>
+
+<abstract>
+This document contains the release notes for version 3.0 of Squid.
+Squid is a WWW Cache application developed by the National Laboratory
+for Applied Network Research and members of the Web Caching community.
+</abstract>
+
+<toc>
+
+<sect>Notice
+<p>
+The Squid Team are pleased to announce the release of Squid-3.0.RC1 for pre-release testing.
+
+This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.0/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.
+
+A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support.
+While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.
+
+We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.
+
+<sect>Known issues
+<p>
+Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&target_milestone=3.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=bugs.bug_severity&field0-0-0=noop&type0-0-0=noop&value0-0-0=" name="open bugs against Squid-3.0">.
+
+<sect>Changes since earlier releases of Squid-3.0
+<p>
+The 3.0 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.0/changesets/" name="viewed here">.
+
+<sect>Changes since Squid-2.6
+
+<sect1>Major new features
+<p>
+Squid 3.0 represents a major rewrite of Squid and has a number of new features.
+
+The most important of these are:
+
+<itemize>
+ <item>Code converted to C++, with significant internal restructuring and rewrites.
+ <item>ICAP implementation (RFC 3507 and www.icap-forum.org)
+ <item>Edge Side Includes (ESI) implementation (www.esi.org)
+</itemize>
+
+Most user-facing changes are reflected in squid.conf (see below).
+
+<sect2>Internet Content Adaptation Protocol (ICAP)
+
+<p>Squid 3.0 supports ICAP/1.0. To enable ICAP support, use the --enable-icap-client ./configure option and icap_enable squid.conf option. You will also need to configure ICAP services in your squid.conf using icap_service, icap_class, and icap_access options. The following example instructs Squid to talk to two ICAP services, one for request and one for response adaptation:
+
+<verb>
+icap_enable on
+icap_service service_req reqmod_precache 1 icap://127.0.0.1:1344/request
+icap_service service_resp respmod_precache 0 icap://127.0.0.1:1344/response
+icap_class class_req service_req
+icap_class class_resp service_resp
+icap_access class_req allow all
+icap_access class_resp allow all
+</verb>
+
+<p>Please see squid.conf.default for more details about these and many other icap_* options.
+
+<p>Squid supports pre-cache request and pre-cache response vectoring points. The following ICAP features are supported: message preview, 204 responses outside of preview, request satisfaction, X-Transfer-* negotiation, persistent ICAP connections, client IP/credentials sharing, and optional bypass of certain service failures.
+
+<p>No more than one ICAP service can be applied to an HTTP message. In other words, chaining or load balancing multiple services is not yet supported.
+
+<p>Proxy-directed data trickling and patience pages are not supported yet.
+
+<p>Following ICAP requirements, Squid never performs HTTP message adaptation without a successful and fresh ICAP OPTIONS response on file. A REQMOD or RESPMOD request will not be sent to a configured ICAP service until Squid receives a valid OPTIONS response from that service. If a service malfunctions or goes down, Squid may stop talking to the service for a while. Several squid.conf options can be used to tune the failure bypass algorithm (e.g., icap_service_failure_limit and icap_service_revival_delay).
+
+<p>The bypass parameter of the icap_service squid.conf option determines whether Squid will try to bypass service failures. Most connectivity and preview-stage failures can be bypassed.
+
+<p>More information about ICAP can be found from the ICAP-forum website <url url="http://www.icap-forum.org">
+
+<sect2>Edge Side Includes (ESI)
+
+<p>ESI is an open specification of an markup language enabling reverse proxies
+to perform some simple XML based processing, offloading the final page assembly from the webserver and similar tasks.
+
+<p>More information about ESI can be found from the ESI website <url url="http://www.esi.org">
+
+<sect1>2.6 features not found in Squid-3.0
+<p>
+Some of the features found in Squid-2.6 is not available in Squid-3.
+Some has been dropped as they are not needed. Some has not yet been forward-ported to Squid-3 and may appear in a later release.
+
+<itemize>
+ <item>refresh_stale_hit option. Not yet ported.
+ <item>ability to follow X-Forwarded-For. Not yet ported.
+ <item>Full caching of Vary/ETag using If-None-Match. Only basic Vary cache supported. Not yet ported.
+ <item>Mapping of server error messages. Not yet ported.
+ <item>http_access2 access directive. Not yet ported.
+ <item>Location header rewrites. Not yet ported.
+ <item>umask directive. Not yet ported.
+ <item>wais_relay. Feature dropped as it's equivalent to cache_peer + cache_peer_access.
+ <item>urlgroup. Not yet ported.
+ <item>collapsed forwarding. Not yet ported.
+ <item>stable Windows support. Irregularly maintained.
+</itemize>
+
+<sect1>Logging changes
+<sect2>access.log
+<p>The TCP_REFRESH_HIT and TCP_REFRESH_MISS log types have been replaced because they were misleading (all refreshes need to query the origin server, so they could never be hits). The following log types have been introduced to replace them:
+
+<descrip>
+ <tag>TCP_REFRESH_UNMODIFIED</tag>
+ <p>The requested object was cached but STALE. The IMS query for the object resulted in "304 not modified".
+ <tag>TCP_REFRESH_MODIFIED</tag>
+ <p>The requested object was cached but STALE. The IMS query returned the new content.
+</descrip>
+<p>See <url url="http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7"> for a definition of all log types.
+<sect>Windows support
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment,
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<newline>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<descrip>
+
+<tag>Usage</tag>
+
+Some new command line options were added for the Windows service support:<newline>
+
+The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.
+
+A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<em/"Squid"/ is the default when the switch is not used.
+
+So, to install the service, the syntax is:
+
+<verb>squid -i [-f file] [-n name]</verb>
+
+Service uninstallation is made with -r command line switch with the appropriate -n switch.
+
+The -k switch family must be used with the appropriate -f and -n switches, so the syntax is:
+
+<verb>squid -k command [-f file] -n service-name</verb>
+where <em/service-name/ is the name specified with -n options at service install time.
+
+To use the Squid original command line, the new -O switch must be used ONCE, the syntax is:
+
+<verb>squid -O cmdline [-n service-name]</verb>
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.
+
+Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.
+
+In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130":
+
+<verb>squid -O "-D -u 3130" -n squidsvc</verb>
+</descrip>
+
+<descrip>
+<tag>PSAPI.DLL (Process Status Helper) Considerations</tag>
+
+The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.
+
+PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.
+
+On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<url url="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE" name="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">
+
+On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.
+</descrip>
+
+<descrip>
+<tag>Registry DNS lookup</tag>
+On Windows platforms, if no value is specified in the <em/dns_nameservers/ option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.
+</descrip>
+
+<descrip>
+<tag>Compatibility Notes</tag>
+<itemize>
+<item>It's recommended to use '/' char in Squid paths instead of '\'
+<item>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid
+<item>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<verb>acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"</verb>
+
+<item>The Windows equivalent of '/dev/null' is 'NUL'
+<item>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<verb>redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd</verb>
+<item>When Squid runs in command line mode, the launching user account must have administrative privilege on the system
+<item>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used
+<item>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Known Limitations</tag>
+<itemize>
+<item>Squid features not operational:<newline>
+<itemize>
+<item>DISKD: still needs to be ported<newline>
+<item>WCCP: cannot work because user space GRE support on Windows is missing<newline>
+<item>Transparent Proxy: missing Windows non commercial interception driver<newline>
+</itemize>
+<item>Some code sections can make blocking calls.
+<item>Some external helpers may not work.
+<item>File Descriptors number hard-limited to 2048 when building with MinGW.
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Building Squid on Windows</tag>
+A reasonably recent release of <url url="http://www.cygwin.com/" name="Cygwin"> or <url url="http://www.mingw.org/" name="MinGW"> is needed.<newline>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<newline>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<newline><newline>
+OpenSSL: <url url="http://www.slproweb.com/products/Win32OpenSSL.html" name="Shining Light Productions Win32 OpenSSL"><newline>
+libcrypt: <url url="http://sourceforge.net/projects/mingwrep/" name="MinGW packages repository"><newline>
+db-1.85: <url url="http://tinycobol.org/download.html" name="TinyCOBOL download area"><newline>
+uudecode: <url url="http://unxutils.sourceforge.net/" name="Native Win32 ports of some GNU utilities"><newline><newline>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<newline>
+<itemize>
+<item>New configure options:<newline>
+<itemize>
+<item>--enable-win32-service<newline>
+</itemize>
+<item>Updated configure options:<newline>
+<itemize>
+<item>--enable-arp-acl<newline>
+<item>--enable-default-hostsfile<newline>
+</itemize>
+<item>Unsupported configure options:<newline>
+<itemize>
+<item>--enable-coss-aio-ops: On Windows Posix AIO is not available<newline>
+<item>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<newline>
+</itemize>
+<item>Recommended configure minimal options for Windows:<newline>
+<itemize>
+<item>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none
+</itemize>
+</itemize>
+<newline>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<itemize>
+<item>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<newline>
+<item>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<newline>
+<item>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<newline>
+</itemize>
+
+</descrip>
+
+<descrip>
+<tag>Using cache manager on Windows:</tag>
+On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<newline>
+Some specific configuration could be needed:<newline>
+<itemize>
+<item>IIS 6 (Windows 2003):<newline>
+<itemize>
+<item>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<newline>
+<itemize>
+<item>Create a cgi-bin Directory
+<item>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application
+<item>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file
+<item>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <em/"Squid Cachemgr"/, add the cachemgr.cgi file and set the
+extension status to <em/Allowed/
+</itemize>
+</itemize>
+<item>Apache:<newline>
+<itemize>
+<item>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+ to pass the TMP and TEMP Windows environment variables to CGI applications:<newline>
+<verb>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+<Location /squid/cgi-bin/cachemgr.cgi>
+ PassEnv TMP TEMP
+ Order allow,deny
+ Allow from workstation.example.com
+</Location>
+</verb>
+</itemize>
+</itemize>
+</descrip>
+
+
+
+<sect1>Changes to squid.conf
+<p>
+There have been many changes to Squid's configuration file since Squid-2.6.
+
+This section gives a thorough account of those changes in three categories:
+
+<itemize>
+ <item><ref id="newtags" name="New tags">
+ <item><ref id="modifiedtags" name="Changes to existing tags">
+ <item><ref id="removedtags" name="Removed tags">
+</itemize>
+
+<p>
+
+
+
+<sect2>New tags<label id="newtags">
+
+<p>
+<descrip>
+ <tag>minimum_icp_query_timeout (msec)</tag>
+ <verb>
+Default: 5
+
+Normally the ICP query timeout is determined dynamically. But
+sometimes it can lead to very small timeouts, even lower than
+the normal latency variance on your link due to traffic.
+Use this option to put an lower limit on the dynamic timeout
+value. Do NOT use this option to always use a fixed (instead
+of a dynamic) timeout value. To set a fixed timeout see the
+'icp_query_timeout' directive.
+ </verb>
+ <tag>background_ping_rate</tag>
+ <verb>
+Default: 10 seconds
+
+Controls how often the ICP pings are sent to siblings that
+have background-ping set.
+ </verb>
+
+ <tag>httpd_accel_surrogate_id</tag>
+ <verb>
+Default: unset
+
+Surrogates (http://www.esi.org/architecture_spec_1.0.html)
+need an identification token to allow control targeting. Because
+a farm of surrogates may all perform the same tasks, they may share
+an identification token.
+ </verb>
+
+ <tag>http_accel_surrogate_remote on|off</tag>
+ <verb>
+Default: off
+
+Remote surrogates (such as those in a CDN) honour Surrogate-Control: no-store-remote.
+Set this to on to have squid behave as a remote surrogate.
+ </verb>
+
+ <tag>esi_parser libxml2|expat|custom</tag>
+ <verb>
+Default: custom
+
+ESI markup is not strictly XML compatible. The custom ESI parser
+will give higher performance, but cannot handle non ASCII character
+encodings.
+ </verb>
+
+ <tag>email_err_data on|off</tag>
+ <verb>
+Default: on
+
+If enabled, information about the occurred error will be
+included in the mailto links of the ERR pages (if %W is set)
+so that the email body contains the data.
+Syntax is <A HREF="mailto:%w%W">%w</A>
+ </verb>
+
+ <tag>refresh_all_ims on|off</tag>
+ <verb>
+Default: off
+
+When you enable this option, squid will always check
+the origin server for an update when a client sends an
+If-Modified-Since request. Many browsers use IMS
+requests when the user requests a reload, and this
+ensures those clients receive the latest version.
+
+By default (off), squid may return a Not Modified response
+based on the age of the cached version.
+ </verb>
+ <tag>request_header_access</tag>
+ <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to requests only.
+ <tag>reply_header_access</tag>
+ <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to replies only.
+
+ <tag>icap_enable on|off</tag>
+ <verb>
+Default: off
+
+If you want to enable the ICAP module support, set this to on.
+ </verb>
+ <tag>icap_preview_enable on|off</tag>
+ <verb>
+Default: off
+
+Set this to 'on' if you want to enable the ICAP preview
+feature in Squid.
+ </verb>
+ <tag>icap_preview_size</tag>
+ <verb>
+Default: -1
+
+The default size of preview data to be sent to the ICAP server.
+-1 means no preview. This value might be overwritten on a per server
+basis by OPTIONS requests.
+ </verb>
+ <tag>icap_default_options_ttl (seconds)</tag>
+ <verb>
+Default: 60
+
+The default TTL value for ICAP OPTIONS responses that don't have
+an Options-TTL header.
+ </verb>
+ <tag>icap_persistent_connections on|off</tag>
+ <verb>
+Default: on
+
+Whether or not Squid should use persistent connections to
+an ICAP server.
+ </verb>
+ <tag>icap_send_client_ip on|off</tag>
+ <verb>
+Default: off
+
+This adds the header "X-Client-IP" to ICAP requests.
+ </verb>
+ <tag>icap_send_client_username on|off</tag>
+ <verb>
+Default: off
+
+This adds the header "X-Client-Username" to ICAP requests
+if proxy access is authentified.
+ </verb>
+ <tag>icap_service</tag>
+ <verb>
+Default: none
+
+Defines a single ICAP service
+
+icap_service servicename vectoring_point bypass service_url
+
+vectoring_point = reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache
+This specifies at which point of request processing the ICAP
+service should be plugged in.
+bypass = 1|0
+If set to 1 and the ICAP server cannot be reached, the request will go
+through without being processed by an ICAP server
+service_url = icap://servername:port/service
+
+Note: reqmod_precache and respmod_postcache is not yet implemented
+
+Example:
+icap_service service_1 reqmod_precache 0 icap://icap1.mydomain.net:1344/reqmod
+icap_service service_2 respmod_precache 0 icap://icap2.mydomain.net:1344/respmod
+ </verb>
+ <tag>icap_class</tag>
+ <verb>
+Default: none
+
+Defines an ICAP service chain. If there are multiple services per
+vectoring point, they are processed in the specified order.
+
+icap_class classname servicename...
+
+Example:
+icap_class class_1 service_1 service_2
+icap class class_2 service_1 service_3
+ </verb>
+ <tag>icap_access</tag>
+ <verb>
+Default: none
+
+Redirects a request through an ICAP service class, depending
+on given acls
+
+icap_access classname allow|deny [!]aclname...
+
+The icap_access statements are processed in the order they appear in
+this configuration file. If an access list matches, the processing stops.
+For an "allow" rule, the specified class is used for the request. A "deny"
+rule simply stops processing without using the class. You can also use the
+special classname "None".
+
+For backward compatibility, it is also possible to use services
+directly here.
+
+Example:
+icap_access class_1 allow all
+ </verb>
+
+ <tag>accept_filter</tag>
+ <verb>
+The name of an accept(2) filter to install on Squid's
+listen socket(s). This feature is perhaps specific to
+FreeBSD and requires support in the kernel.
+
+The 'httpready' filter delays delivering new connections
+to Squid until a full HTTP request has been received.
+See the accf_http(9) man page.
+ </verb>
+</descrip>
+
+
+<sect2>Changes to existing tags<label id="modifiedtags">
+<p>
+<descrip>
+ <tag>http_port</tag>
+ <p>New options:
+ <verb>
+ disable-pmtu-discovery=
+ Control Path-MTU discovery usage:
+ off lets OS decide on what to do (default).
+ transparent disable PMTU discovery when transparent support is enabled.
+ always disable always PMTU discovery.
+
+ In many setups of transparently intercepting proxies Path-MTU
+ discovery can not work on traffic towards the clients. This is
+ the case when the intercepting device does not fully track
+ connections and fails to forward ICMP must fragment messages
+ to the cache server. If you have such setup and experience that
+ certain clients sporadically hang or never complete requests set
+ disable-pmtu-discovery option to 'transparent'.
+ </verb>
+ <p>Removed options:
+ <verb>
+ urlgroup=, not yet ported to Squid-3.
+
+ no-connection-auth, not yet ported to Squid-3.
+ </verb>
+ <tag> https_port</tag>
+ <p>Removed options:
+ <verb>
+ urlgroup=, not yet ported to Squid-3.
+ </verb>
+ <tag>cache_peer</tag>
+ <p>New options:
+ <verb>
+ basetime=n
+
+ background-ping
+
+ weighted-round-robin
+
+ use 'basetime=n' to specify a base amount to
+ be subtracted from round trip times of parents.
+ It is subtracted before division by weight in calculating
+ which parent to fectch from. If the rtt is less than the
+ base time the rtt is set to a minimal value.
+
+ use 'background-ping' to only send ICP queries to this
+ neighbor infrequently. This is used to keep the neighbor
+ round trip time updated and is usually used in
+ conjunction with weighted-round-robin.
+
+ use 'weighted-round-robin' to define a set of parents
+ which should be used in a round-robin fashion with the
+ frequency of each parent being based on the round trip
+ time. Closer parents are used more often.
+ Usually used for background-ping parents.
+
+ </verb>
+ <p>Removed options:
+ <verb>
+ userhash, not yet ported to Squid-3
+
+ sourcehash, not yet ported to Squid-2
+
+ monitorurl, monitorsize etc, not yet ported to Squid-3
+
+ connection-auth=, not yet ported to Squid-3
+ </verb>
+ <tag>cache_dir</tag>
+ <p>Common options
+ <verb>
+ no-store, replaces the older read-only option
+
+ min-size, not yet portedto Squid-3
+ </verb>
+ <p>COSS file system:
+ <verb>
+ The coss file store is experimental, and still lacks much
+ of the functionality found in 2.6.
+
+ overwrite-percent=n, not yet ported to Squid-3.
+
+ max-stripe-waste=n, not yet ported to Squid-3.
+
+ membufs=n, not yet ported to Squid-3.
+
+ maxfullbufs=n, not yet ported to Squid-3.
+ </verb>
+ <tag>auth_param</tag>
+ <p>Removed Basic auth option
+ <verb>
+ blankpasswor, not yet ported to squid-3.
+ auth_param basic concurrency 0
+ </verb>
+ <p>Removed digest options:
+ <verb>
+ concurrency, not yet ported to Squid-3.
+ </verb>
+
+ <tag>external_acl_type</tag>
+ <p>New format specifications:
+ <verb>
+ %URI Requested URI
+
+ %PATH Requested URL path
+ </verb>
+ <P>Removed format specifications:
+ <verb>
+ %ACL, not yet ported to Squid-3
+
+ %DATA, not yet ported to Squid-3
+ </verb>
+ <p>New result keywords:
+ <verb>
+ tag= Apply a tag to a request (for both ERR and OK results)
+ Only sets a tag, does not alter existing tags.
+ </verb>
+
+ <tag>refresh_pattern</tag>
+ <p>New options:
+ <verb>
+ ignore-no-store
+ refresh-ims
+
+ ignore-no-store ignores any ``Cache-control: no-store''
+ headers received from a server. Doing this VIOLATES
+ the HTTP standard. Enabling this feature could make you
+ liable for problems which it causes.
+
+ refresh-ims causes squid to contact the origin server
+ when a client issues an If-Modified-Since request. This
+ ensures that the client will receive an updated version
+ if one is available.
+ </verb>
+ <tag>acl</tag>
+ <p>New types:
+ <verb>
+ acl aclname http_status 200 301 500- 400-403 ... # status code in reply
+
+ </verb>
+ <p>Removed types:
+ <verb>
+ acl aclname urllogin [-i] [^a-zA-Z0-9] ... # regex matching on URL login field
+
+ acl urlgroup group1 ...
+ # match against the urlgroup as indicated by redirectors
+
+ </verb>
+ <tag>short_icon_urls</tag>
+ <p>New default:
+ <verb>
+ Default: on
+ (Old default: off)
+ </verb>
+ <tag>delay_class</tag>
+ <p>New delay classes:
+ <verb>
+ class 4 Everything in a class 3 delay pool, with an
+ additional limit on a per user basis. This
+ only takes effect if the username is established
+ in advance - by forcing authentication in your
+ http_access rules.
+
+ class 5 Requests are grouped according their tag (see
+ external_acl's tag= reply).
+ </verb>
+
+ <tag>htcp_port</tag>
+ <p>New default to require the feature to be enabled in squid.conf:
+ <verb>
+ Default: 0 (disabled)
+ (Old default: 4827)
+ </verb>
+
+ <tag>icp_port</tag>
+ <p>New default to require the feature to be enabled in squid.conf:
+ <verb>
+ Default: 0 (disabled)
+ (Old default: 3130)
+ </verb>
+
+ <tag>snmp_port</tag>
+ <p>New default to require the feature to be enabled in squid.conf:
+ <verb>
+ Default: 0 (disabled)
+ (Old default: 3401)
+ </verb>
+
+ <tag>logformat</tag>
+ <p>New format tags:
+ <verb>
+ rp Request URL-Path excluding hostname
+
+ et Tag returned by external acl
+
+ <sH Reply high offset sent
+
+ <sS Upstream object size
+ </verb>
+
+ <p>Removed format tags:
+ <verb>
+ >st Request size including HTTP headers, not yet ported to Squid-3.
+
+ st Request+Reply size including HTTP headers, not yet ported to Squid-3.
+ </verb>
+
+ <tag>reply_body_max_size</tag>
+ <p>Syntax changed:
+ <verb>
+ reply_body_max_size size [acl acl...]
+ </verb>
+ <p>allow/deny no longer used.
+
+ <tag>url_rewrite_program</tag>
+ <p>No urlgroup support in either requests or responese
+</descrip>
+
+
+
+
+<sect2>Removed tags<label id="removedtags">
+<p>
+<descrip>
+ <tag>broken_vary_encoding</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>cache_vary</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>collapsed_forwarding</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>follow_x_forwarded_for</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>*_uses_indirect_client</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>error_map</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>header_access</tag>
+ <p>This has been replaced by request_header_access and reply_header_access
+ <tag>http_access2</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>httpd_accel_no_pmtu_disc</tag>
+ <p>Replaced by disable-pmtu-discovery http_port option
+ <tag>location_rewrite_*</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>refresh_stale_hit</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>umask</tag>
+ <p>Not yet ported to Squid-3.
+ <tag>wais_relay_*</tag>
+ <p>equivalent to cache_peer + cache_peer_access.
+</descrip>
+
+
+<sect1>Changes to ./configure Options
+<p>
+There have been some changes to Squid's build configuration since Squid-2.6.
+
+This section gives an account of those changes in three categories:
+
+<itemize>
+ <item><ref id="newoptions" name="New options">
+ <item><ref id="modifiedoptions" name="Changes to existing options">
+ <item><ref id="notportedoptions" name="Not yet available options">
+ <item><ref id="removedoptions" name="Removed options">
+</itemize>
+<p>
+
+
+<sect2>New options<label id="newoptions">
+
+<p>
+<descrip>
+ <tag>--enable-shared[=PKGS]</tag>
+ <p>Build shared libraries. The default is to build without.</p>
+
+ <tag>--enable-static[=PKGS]</tag>
+ <p>Build static libraries. The default is on.</p>
+
+ <tag>--enable-fast-install[=PKGS]</tag>
+ <verb>Optimize for fast installation
+ default: yes</verb>
+
+ <tag>--disable-libtool-lock</tag>
+ <p>Avoid locking (might break parallel builds)</p>
+
+ <tag>--disable-optimizations</tag>
+ <p>Don't compile Squid with compiler optimizations enabled.
+ Optimization is good for production builds, but not
+ good for debugging. During development, use
+ --disable-optimizations to reduce compilation times
+ and allow easier debugging. This option implicitly
+ also enables --disable-inline</p>
+
+ <tag>--disable-inline</tag>
+ <p>Don't compile trivial methods as inline. Squid
+ is coded with much of the code able to be inlined.
+ Inlining is good for production builds, but not
+ good for development. During development, use
+ --disable-inline to reduce compilation times and
+ allow incremental builds to be quick. For
+ production builds, or load tests, use
+ --enable-inline to have squid make all trivial
+ methods inlinable by the compiler.</p>
+
+ <tag>--enable-debug-cbdata</tag>
+ <p>Provide some debug information in cbdata</p>
+
+ <tag>--enable-disk-io=\"list of modules\"</tag>
+ <p>Build support for the list of disk I/O modules.
+ The default is only to build the "Blocking" module.
+ See src/DiskIO for a list of available modules, or
+ Programmers Guide for details on how to build your
+ custom disk module.</p>
+
+ <tag>--enable-esi</tag>
+ <p>Enable ESI for accelerators. Requires libexpat.
+ Enabling ESI will cause squid to follow the Edge
+ Acceleration Specification (www.esi.org). This
+ causes squid to IGNORE client Cache-Control headers.</p>
+ <p><em>DO NOT</em> use this in a squid configured as a web
+ proxy, ONLY use it in a squid configured for
+ webserver acceleration.</p>
+
+ <tag>--enable-icap-client</tag>
+ <p>Enable the ICAP client.</p>
+
+ <tag>--disable-snmp</tag>
+ <p>Disable SNMP monitoring support which is now built by default.</p>
+
+ <tag>--disable-htcp</tag>
+ <p>Disable HTCP protocol support which is now built by default.</p>
+
+ <tag>--enable-kqueue</tag>
+ <p>Enable kqueue() support. Marked as experimental in 3.0.</p>
+
+ <tag>--enable-ipfw-transparent</tag>
+ <p>Enable Transparent Proxy support for systems
+ using FreeBSD IPFW style redirection.</p>
+
+ <tag>--disable-mempools</tag>
+ <p>Disable memPools. Note that this option now simply sets the
+ default behaviour. Specific classes can override this at runtime, and
+ only lib/MemPool.c needs to be altered to change the squid-wide
+ default for all classes.</p>
+
+ <tag>--enable-cpu-profiling</tag>
+ <p>This option allows you to see which internal functions
+ in Squid are consuming how much CPU. Compiles in probes
+ that measure time spent in probed functions. Needs
+ source modifications to add new probes. This is meant
+ for developers to assist in performance optimisations
+ of Squid internal functions.</p>
+ <p>If you are not developer and not interested in the stats
+ you shouldn't enable this, as overhead added, although
+ small, is still overhead. See lib/Profiler.c for more.</p>
+
+ <tag>--with-gnu-ld</tag>
+ <p>Assume the C compiler uses GNU ld. The default is to auto-detect.</p>
+
+ <tag>--with-pic</tag>
+ <p>Try to use only PIC/non-PIC objects. The default is to use both.</p>
+
+ <tag>--with-tags[=TAGS]</tag>
+ <p>Include additional configurations. The default is automatic.</p>
+
+ <tag>--with-default-user=USER</tag>
+ <p>Sets the default System User account for squid permissions.
+ The default is 'nobody' as in other releases of squid.</p>
+
+ <tag>--with-cppunit-basedir=[PATH]</tag>
+ <p>Path where the cppunit headers and libraries are found
+ for unit testing. The default is automatic detection.</p>
+ <p>NOTE: Since 3.0-PRE6 and 2.6STABLE14 squid no longer comes
+ bundled with CPPUnit. Compile-time validation will be disabled
+ if it is not installed on your system.</p>
+
+</descrip>
+</p>
+
+<sect2>Changes to existing options<label id="modifiedoptions">
+
+<p>
+<descrip>
+ <tag>--enable-carp</tag>
+ <p>CARP support is now built by default.
+ --disable-carp can be used to build without it.</p>
+
+ <tag>--enable-htcp</tag>
+ <p>HTCP protocol support is now built by default.
+ Use --disable-htcp to build without it.</p>
+
+ <tag>--enable-snmp</tag>
+ <p>SNMP monitoring is now build by default.
+ Use --disable-snmp to build without it.</p>
+
+ <tag>--enable-heap-replacement</tag>
+ <p>Please use --enable-removal-policies directive instead.</p>
+
+ <tag>--with-maxfd=N</tag>
+ <p>Replaced by --with-filedescriptors=N</p>
+ <p>Override maximum number of filedescriptors. Useful
+ if you build as another user who is not privileged
+ to use the number of filedescriptors you want the
+ resulting binary to support</p>
+
+ <tag>--enable-select</tag>
+ <p>Deprecated.
+ Automatic checks will enable best I/O loop method available.</p>
+
+ <tag>--enable-epoll</tag>
+ <p>Deprecated.
+ Automatic checks will enable best I/O loop method available.</p>
+
+ <tag>--enable-poll</tag>
+ <p>Deprecated.
+ Automatic checks will enable best I/O loop method available.</p>
+
+ <tag>--enable-kqueue</tag>
+ <p>kqueue support is marked Experimental in Squid 3.0. Known to have some issues under load.</p>
+
+</descrip>
+</p>
+
+<sect2>Not yet available options<label id="notportedoptions">
+
+<p>These configure options have not yet been ported to Squid-3. If you need something to do then
+porting one of these from Squid-2 to Squid-3 is most welcome.
+
+<descrip>
+ <tag>--enable-devpoll</tag>
+ <p>Support for Solaris /dev/poll</p>
+
+ <tag>--enable-select-simple</tag>
+ <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>
+
+ <tag>--enable-follow-x-forwarded-for</tag>
+ <p>Support following the X-Forwarded-For HTTP header for determining the
+ client IP address</p>
+</descrip>
+
+<sect2>Removed options<label id="removedoptions">
+
+<p>The following configure options have been removed.
+
+<descrip>
+ <tag>--enable-dlmalloc</tag>
+ <p>Most OS:es have good malloc implementations these days, and the version we used to ship with Squid was very very old..</p>
+ <tag>--enable-mempool-debug</tag>
+ <p>Debug option, not needed and therefore removed.</p>
+ <tag>--enable-forward-log</tag>
+ <p>Rarely used extra log file. Removed.</p>
+ <tag>--enable-multicast-miss</tag>
+ <p>Rarely used feature, and multicast ICP acheives almost the same result. Removed.</p>
+ <tag>--enable-coss-aio-ops</tag>
+ <p>Specific to the COSS implementation in Squid-2</p>
+ <tag>--enable-large-cache-files</tag>
+ <p>Now enabled by default. Configure option was redundant and therefore removed.
+ <tag>--enable-truncate</tag>
+ <p>Known to cause race conditions where cache objects may get corrupted, and this for at most a marginal performance improvement. Removed.</p>
+
+</descrip>
+
+</article>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
- <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.50">
<TITLE>Squid 3.1.PRE1 release notes</TITLE>
</HEAD>
<BODY>
<H1>Squid 3.1.PRE1 release notes</H1>
-<H2>Squid Developers</H2>$Id: release-3.1.html,v 1.5 2008/01/17 10:09:05 hno Exp $
+<H2>Squid Developers</H2>$Id: release-3.1.sgml,v 1.6 2008/01/17 10:09:05 hno Exp $
<HR>
<EM>This document contains the release notes for version 3.1 of Squid.
Squid is a WWW Cache application developed by the National Laboratory
<P>
<UL>
<LI>IPv6 Support</LI>
+<LI>Error Page Localization</LI>
</UL>
</P>
<P>Most user-facing changes are reflected in squid.conf (see below).</P>
with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.</P>
-<H2><A NAME="ss4.2">4.2 Changes to squid.conf</A>
+<H3>Error Page Localization</H3>
+
+<P>The error pages presented by squid may now be localized per-request to match the visitors local preferred language.</P>
+
+<P>Squid needs to be build with the --enable-auto-locale option. And the error_directory option in squid.conf needs to be removed.</P>
+
+<P>For best coverage of languages, using the latest language pack of error files is recommended.
+Updates can be downloaded from
+<A HREF="http://www.squid-cahch.org/Versions/langpack/">www.squid-cache.org/Versions/langpack/</A></P>
+
+<P>The squid developers are interested in making squid available in a wide variety of languages.
+Contributions of new languages is encouraged.
+Details at
+<A HREF="http://wiki.squid-cache.org/Translations">http://wiki.squid-cache.org/Translations</A></P>
+
+<H2><A NAME="s5">5. Windows support</A></H2>
+
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment,
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<BR>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<DL>
+
+<DT><B>Usage</B><DD>
+<P>Some new command line options were added for the Windows service support:<BR></P>
+<P>The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.</P>
+<P>A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<EM>"Squid"</EM> is the default when the switch is not used.</P>
+<P>So, to install the service, the syntax is: </P>
+<P>
+<PRE>
+squid -i [-f file] [-n name]
+</PRE>
+</P>
+<P>Service uninstallation is made with -r command line switch with the appropriate -n switch.</P>
+<P>The -k switch family must be used with the appropriate -f and -n switches, so the syntax is: </P>
+<P>
+<PRE>
+squid -k command [-f file] -n service-name
+</PRE>
+
+where <EM>service-name</EM> is the name specified with -n options at service install time.</P>
+<P>To use the Squid original command line, the new -O switch must be used ONCE, the syntax is: </P>
+<P>
+<PRE>
+squid -O cmdline [-n service-name]
+</PRE>
+
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.</P>
+<P>Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.</P>
+<P>In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130": </P>
+<P>
+<PRE>
+squid -O "-D -u 3130" -n squidsvc
+</PRE>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>PSAPI.DLL (Process Status Helper) Considerations</B><DD>
+<P>The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.</P>
+<P>PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.</P>
+<P>On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<A HREF="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE</A></P>
+<P>On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Registry DNS lookup</B><DD>
+<P>On Windows platforms, if no value is specified in the <EM>dns_nameservers</EM> option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Compatibility Notes</B><DD>
+<P>
+<UL>
+<LI>It's recommended to use '/' char in Squid paths instead of '\'</LI>
+<LI>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid</LI>
+<LI>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<PRE>
+acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"
+</PRE>
+
+</LI>
+<LI>The Windows equivalent of '/dev/null' is 'NUL'</LI>
+<LI>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<PRE>
+redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd
+</PRE>
+</LI>
+<LI>When Squid runs in command line mode, the launching user account must have administrative privilege on the system</LI>
+<LI>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used</LI>
+<LI>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Known Limitations</B><DD>
+<P>
+<UL>
+<LI>Squid features not operational:<BR>
+<UL>
+<LI>DISKD: still needs to be ported<BR></LI>
+<LI>WCCP: cannot work because user space GRE support on Windows is missing<BR></LI>
+<LI>Transparent Proxy: missing Windows non commercial interception driver<BR></LI>
+</UL>
+</LI>
+<LI>Some code sections can make blocking calls.</LI>
+<LI>Some external helpers may not work.</LI>
+<LI>File Descriptors number hard-limited to 2048 when building with MinGW.</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Building Squid on Windows</B><DD>
+<P>A reasonably recent release of
+<A HREF="http://www.cygwin.com/">Cygwin</A> or
+<A HREF="http://www.mingw.org/">MinGW</A> is needed.<BR>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<BR>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<BR><BR>
+OpenSSL:
+<A HREF="http://www.slproweb.com/products/Win32OpenSSL.html">Shining Light Productions Win32 OpenSSL</A><BR>
+libcrypt:
+<A HREF="http://sourceforge.net/projects/mingwrep/">MinGW packages repository</A><BR>
+db-1.85:
+<A HREF="http://tinycobol.org/download.html">TinyCOBOL download area</A><BR>
+uudecode:
+<A HREF="http://unxutils.sourceforge.net/">Native Win32 ports of some GNU utilities</A><BR><BR>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<BR>
+<UL>
+<LI>New configure options:<BR>
+<UL>
+<LI>--enable-win32-service<BR></LI>
+</UL>
+</LI>
+<LI>Updated configure options:<BR>
+<UL>
+<LI>--enable-arp-acl<BR></LI>
+<LI>--enable-default-hostsfile<BR></LI>
+</UL>
+</LI>
+<LI>Unsupported configure options:<BR>
+<UL>
+<LI>--enable-coss-aio-ops: On Windows Posix AIO is not available<BR></LI>
+<LI>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<BR></LI>
+</UL>
+</LI>
+<LI>Recommended configure minimal options for Windows:<BR>
+<UL>
+<LI>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none</LI>
+</UL>
+</LI>
+</UL>
+<BR>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<UL>
+<LI>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<BR></LI>
+<LI>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<BR></LI>
+<LI>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<BR></LI>
+</UL>
+</P>
+
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Using cache manager on Windows:</B><DD>
+<P>On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<BR>
+Some specific configuration could be needed:<BR>
+<UL>
+<LI>IIS 6 (Windows 2003):<BR>
+<UL>
+<LI>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<BR>
+<UL>
+<LI>Create a cgi-bin Directory</LI>
+<LI>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application </LI>
+<LI>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file</LI>
+<LI>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <EM>"Squid Cachemgr"</EM>, add the cachemgr.cgi file and set the
+extension status to <EM>Allowed</EM></LI>
+</UL>
+</LI>
+</UL>
+</LI>
+<LI>Apache:<BR>
+<UL>
+<LI>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+to pass the TMP and TEMP Windows environment variables to CGI applications:<BR>
+<PRE>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+<Location /squid/cgi-bin/cachemgr.cgi>
+ PassEnv TMP TEMP
+ Order allow,deny
+ Allow from workstation.example.com
+</Location>
+</PRE>
+</LI>
+</UL>
+</LI>
+</UL>
+</P>
+</DL>
+</P>
+
+
+<H2><A NAME="ss5.1">5.1 Changes to squid.conf</A>
</H2>
<P>There have been changes to Squid's configuration file since Squid-3.0.</P>
<P>
<DL>
-<DT><B>pinger_enable</B><DD><P>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.
+<DT><B>pinger_enable</B><DD>
+<P>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.
<PRE>
Control whether the pinger is active at run-time.
Enables turning ICMP pinger on and off with a simple squid -k reconfigure.
</PRE>
</P>
-<DT><B>dns_v4_fallback</B><DD><P>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.
+<DT><B>dns_v4_fallback</B><DD>
+<P>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.
Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a safety net behind IPv6.
<PRE>
Standard practice with DNS is to lookup either A or AAAA records
</PRE>
</P>
-<DT><B>include</B><DD><P>New option to import entire secondary configuration files into squid.conf.
+<DT><B>include</B><DD>
+<P>New option to import entire secondary configuration files into squid.conf.
<PRE>
Squid will follow the files immediately and insert all their content
as if it was at that position in squid.conf. As per squid.conf some
</PRE>
</P>
+<DT><B>error_default_language</B><DD>
+<P>New option to replace the old configure option --enable-default-err-language
+<PRE>
+ Set the default language which squid will send error pages in
+ if no existing translation matches the clients language
+ preferences.
+
+ If unset (default) generic English will be used.
+
+</PRE>
+</P>
+
+
</DL>
</P>
<P>
<DL>
-<DT><B>acl dst ipvs</B><DD><P>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.
+<DT><B>acl dst ipvs</B><DD>
+<P>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.
<PRE>
acl aclname dst ipv6
</PRE>
</P>
-<DT><B>http(s)_port name= option</B><DD><P>New port option to assign internal names to listening ports
+<DT><B>http(s)_port name= intercept</B><DD>
+<P>New port options.
<PRE>
name= Specifies a internal name for the port. Defaults to
the port specification (port or addr:port)
+
+ intercept Rename of old 'transparent' option to indicate proper functionality.
</PRE>
</P>
-<DT><B>acl myportname</B><DD><P>New acl type myportname, matching the name of the http(s)_port where the request was accepted
+<DT><B>acl myportname</B><DD>
+<P>New acl type myportname, matching the name of the http(s)_port where the request was accepted
<PRE>
acl aclname myportname 3128 ... # http(s)_port name
</PRE>
</P>
-
-<DT><B>external_acl_type</B><DD><P>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.
+<DT><B>external_acl_type</B><DD>
+<P>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.
Please be aware of some limits to these options. These options only affet the transport protocol used
to send data to and from the helpers. Squid in IPv6-mode may still send %SRC addresses in IPv4 or IPv6
format, so all helpers will need to be checked and converted to cope with such information cleanly.
</PRE>
</P>
-<DT><B>tcp_outgoing_address</B><DD><P>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.
+<DT><B>tcp_outgoing_address</B><DD>
+<P>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.
<PRE>
Squid is built with a capability of bridging the IPv4 and IPv6 internets.
tcp_outgoing_address as previously used breaks this bridging by forcing
</PRE>
</P>
-<DT><B>balance_on_multiple_ip</B><DD><P>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.
+<DT><B>balance_on_multiple_ip</B><DD>
+<P>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.
It has thus been turned off by default. Making the 'best choice' IP continue in use for any hostname until it encounters a connection failure and failover drops to the next known IP.
<PRE>
Modern IP resolvers in squid sort lookup results by preferred access.
</PRE>
</P>
+<DT><B>http_port</B><DD>
+<P>option 'transparent' is being deprecated in favour of 'intercept' which more clearly identifies what the option does.
+For now option 'tproxy' remains with old behaviour meaning fully-invisible proxy using TPROXY support.</P>
+
+<DT><B>error_directory</B><DD>
+<P>Now an optiona entry in squid.conf. If present it will force all visitors to receive the error pages
+contained in the directory it points at. If absent error page localization will be given a chance.
+<PRE>
+ If you wish to create your own versions of the default
+ error files to customize them to suit your company copy
+ the error/template files to another directory and point
+ this tag at them.
+
+ WARNING: This option will disable multi-language support
+ on error pages if used.
+
+ The squid developers are interested in making squid available in
+ a wide variety of languages. If you are making translations for a
+ language that Squid does not currently provide please consider
+ contributing your translation back to the project.
+ http://wiki.squid-cache.org/Translations
+
+ The squid developers working on translations are happy to supply drop-in
+ translated error files in exchange for any new language contributions.
+
+</PRE>
+</P>
+
</DL>
</P>
<P>
<DL>
+<DT><B>dns_testnames</B><DD>
+<P>Obsolete. This feature is no longer relevant to modern networks and causes boot problems.</P>
+
</DL>
</P>
-<H2><A NAME="ss4.3">4.3 Changes to ./configure Options</A>
+<H2><A NAME="ss5.2">5.2 Changes to ./configure Options</A>
</H2>
<P>There have been some changes to Squid's build configuration since Squid-3.0.</P>
<P>
<DL>
-<DT><B>--enable-ipv6</B><DD><P>Buildwith IPv6 support. The default is to build without.</P>
+<DT><B>--enable-ipv6</B><DD>
+<P>Buildwith IPv6 support. The default is to build without.</P>
-<DT><B>--with-localhost-ipv6</B><DD><P>Build support for squid to map all 127.0.0.1 traffic onto ::1.
+<DT><B>--with-localhost-ipv6</B><DD>
+<P>Build support for squid to map all 127.0.0.1 traffic onto ::1.
The default is to build with 127.0.0.1 and ::1 being considered seperate IP.
see the IPv6 details above for a better description. </P>
-<DT><B>--with-ipv6-split-stack</B><DD><P>Enable special additions for IPv6 support in Windows XP.
+<DT><B>--with-ipv6-split-stack</B><DD>
+<P>Enable special additions for IPv6 support in Windows XP.
see the IPv6 details above for a better description.</P>
-<DT><B>--with-ipv4-mapped</B><DD><P>Enable special additions for IPv6 support in Windows Vista.
+<DT><B>--with-ipv4-mapped</B><DD>
+<P>Enable special additions for IPv6 support in Windows Vista.
see the IPv6 details above for a better description.</P>
-<DT><B>--with-dns-cname</B><DD><P>Enable CNAME recursion within the Internal DNS resolver stub squid uses.
+<DT><B>--with-dns-cname</B><DD>
+<P>Enable CNAME recursion within the Internal DNS resolver stub squid uses.
This has no effect on the external DNS helper.
Please note this extension is still experimental and may encounter problems.
To see if it is actually needed you can run squid without it for a period and
If it produces ongoing serious problems the external helper may be needed
but please report the bugs anyway.</P>
+<DT><B>--enable-auto-locale</B><DD>
+<P>Enable error page localization for visitors.</P>
+
</DL>
</P>
<H3><A NAME="modifiedoptions"></A> Changes to existing options</H3>
<P>
<DL>
-<DT><B>--disable-internl-dns</B><DD><P>Better support for Linux using the external DNS helper.
+<DT><B>--disable-internl-dns</B><DD>
+<P>Better support for Linux using the external DNS helper.
The helper will compile and work with dns_nameservers on more variants of Linux than previously.</P>
+<DT><B>--enable-linux-netfilter</B><DD>
+<P>This option now enables support for all three netfilter interception targets.
+Adding TPROXY version 4+ support to squid through the TPROXY target.
+This options requires a linux kernel 2.6.25 or later for embeded netfilter TPROXY targets.
+Older REDIRECT and DNAT targets work as before on HTTP ports marked 'intercept'.</P>
+
</DL>
</P>
<H3><A NAME="notportedoptions"></A> Not yet available options</H3>
porting one of these from Squid-2 to Squid-3 is most welcome.</P>
<P>
<DL>
-<DT><B>--enable-devpoll</B><DD><P>Support for Solaris /dev/poll</P>
+<DT><B>--enable-devpoll</B><DD>
+<P>Support for Solaris /dev/poll</P>
-<DT><B>--enable-select-simple</B><DD><P>Basic POSIX select() loop without any binary fd_set optimizations.</P>
+<DT><B>--enable-select-simple</B><DD>
+<P>Basic POSIX select() loop without any binary fd_set optimizations.</P>
-<DT><B>--enable-follow-x-forwarded-for</B><DD><P>Support following the X-Forwarded-For HTTP header for determining the
+<DT><B>--enable-follow-x-forwarded-for</B><DD>
+<P>Support following the X-Forwarded-For HTTP header for determining the
client IP address</P>
</DL>
</P>
<P>The following configure options have been removed.</P>
<P>
<DL>
-
+<DT><B>--enable-linux-tproxy</B><DD>
+<P>Replaced by --enable-linux-tproxy2 to make way for differences in TPROXY v2 and v4 support.</P>
+<DT><B>--enable-default-err-language</B><DD>
+<P>Replaced by error_default_language squid.conf option</P>
+<DT><B>--enable-err-languages</B><DD>
+<P>Removed.</P>
</DL>
</P>
-<!doctype linuxdoc system>\r
-<article>\r
-<title>Squid 3.1.PRE1 release notes</title>\r
-<author>Squid Developers</author>\r
-<date>$Id: release-3.1.sgml,v 1.6 2008/01/17 10:09:05 hno Exp $</date>\r
-\r
-<abstract>\r
-This document contains the release notes for version 3.1 of Squid.\r
-Squid is a WWW Cache application developed by the National Laboratory\r
-for Applied Network Research and members of the Web Caching community.\r
-</abstract>\r
-\r
-<toc>\r
-\r
-<sect>Notice\r
-<p>\r
-The Squid Team are pleased to announce the release of Squid-3.1.PRE1 for pre-release testing.\r
-\r
-This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.1/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.\r
-\r
-A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support.\r
-While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.\r
-\r
-We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.\r
-\r
-<sect>Known issues\r
-<p>\r
-Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&target_milestone=3.1&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=bugs.bug_severity&field0-0-0=noop&type0-0-0=noop&value0-0-0=" name="open bugs against Squid-3.1">.\r
-\r
-<sect>Changes since earlier PRE releases of Squid-3.1\r
-<p>\r
-The 3.1 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.1/changesets/" name="viewed here">.\r
-\r
-<sect>Changes since Squid-3.0\r
-\r
-<sect1>Major new features\r
-<p>\r
-Squid 3.1 represents a new feature release above 3.0.\r
-\r
-The most important of these new features are:\r
-\r
-<itemize>\r
- <item>IPv6 Support\r
-</itemize>\r
-\r
-Most user-facing changes are reflected in squid.conf (see below).\r
-\r
-<sect2>Internet Protocol version 6 (IPv6)\r
-\r
-<p>Squid 3.1 supports IPv6. To enable IPv6 support, use the ./configure --enable-ipv6 option\r
-\r
-<sect3>New Features for IPv6\r
-\r
-<p>Squid handles localhost values seperately. For the purpose of ACLs and also external\r
- connections ::1 is considered a seperate IP from 127.0.0.1. This means all ACL which\r
- define behaviour for localhost may need ::1/128 included.\r
-\r
-<p>--with-localhost-ipv6 option is provided for Pure-IPv6 setups who do not want to be\r
- bothered by the localhost vagaries. It will enable logics to map all localhost traffic\r
- through ::1 unless an IPv4-only link is required.\r
-\r
-<p>Additional ./configure --with-ipv4-mapped option is provided for OS that require a socket setting\r
- to accept IPv4 addresses on IPv6 sockets, squid performs v4-mapping on these addresses\r
- It is intended primarily to be used for Windows Vista builds.\r
-\r
-<p>Pinger has been upgraded to perform both ICMP and ICMPv6 as required.\r
- As a result of this and due to a change in the binary protocol format between them,\r
- new builds of squid are no longer backwards-compatible with old pinger binaries.\r
- You will need to perform "make install-pinger" again after installing squid.\r
-\r
-<p>Peer and Client SNMP tables have been altered to handle IPv6 addresses.\r
- As a side effect of this the long-missing fix to show seperate named peers on one IP\r
- has been integrated. Making the SNMP peer table now produce correct output.\r
- The table structure change is identical for both IPv4-only and Dual modes but with\r
- IPv4-only simply not including any IP6 entries. This means any third-party SNMP\r
- software which hard coded the MIB paths needs to be upgraded for this Squid release.\r
-\r
-\r
-<sect3>Limitations of IPv6 Support\r
-\r
-<p>Specify a specific tcp_outgoing_address and the clients who match its ACL are limited\r
- to the IPv4 or IPv6 network that address belongs to. They are not permitted over the\r
- IPv4-IPv6 boundary. Some ACL voodoo can however be applied to explicitly route the\r
- IPv6/IPv4 bound traffic out an appropriate interface.\r
-<verb>\r
- acl toIP6 dst ipv6\r
- tcp_outgoing_address 2001::1 toIP6\r
- tcp_outgoing_address 10.0.0.1 !toIP6\r
-</verb>\r
-\r
-<p>WCCP is not available (neither version 1 or 2). It remains built into squid for use with IPv4 traffic but IPv6 cannot use it.\r
-\r
-<p>Transparent/Interception is done via NAT at the OS level and is not available in IPv6.\r
- Squid will ensure that any port set with transparent or tproxy options be an IPv4-only\r
- listening address. Wildcard can still be used but will not open as an IPv6.\r
- To ensure that squid can accept IPv6 traffic on its default port, an alternative should\r
- be chosen to handle transparent traffic.\r
-<verb>\r
- http_port 3128\r
- http_port 8080 transparent\r
-</verb>\r
-\r
-<p>The bundled NTLM Auth helper is IPv4-native between itself and the NTLM server.\r
- A new one will be needed for IPv6 traffic between the helper and server.\r
-\r
-<p>The bundled RADIUS Auth helper is IPv4-native, both in traffic between and data storage\r
- with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.\r
-\r
-\r
-<sect1>Changes to squid.conf\r
-<p>\r
-There have been changes to Squid's configuration file since Squid-3.0.\r
-\r
-This section gives a thorough account of those changes in three categories:\r
-\r
-<itemize>\r
- <item><ref id="newtags" name="New tags">\r
- <item><ref id="modifiedtags" name="Changes to existing tags">\r
- <item><ref id="removedtags" name="Removed tags">\r
-</itemize>\r
-\r
-<p>\r
-\r
-\r
-<sect2>New tags<label id="newtags">\r
-<p>\r
-<descrip>\r
- <tag>pinger_enable</tag>\r
- <p>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.\r
- <verb>\r
- Control whether the pinger is active at run-time.\r
- Enables turning ICMP pinger on and off with a simple squid -k reconfigure.\r
- default is on when --enable-icmp is compiled in.\r
- </verb>\r
-\r
- <tag>dns_v4_fallback</tag>\r
- <p>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.\r
- Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a safety net behind IPv6.\r
- <verb>\r
- Standard practice with DNS is to lookup either A or AAAA records\r
- and use the results if it succeeds. Only looking up the other if\r
- the first attempt fails or otherwise produces no results.\r
-\r
- That policy however will cause squid to produce error pages for some\r
- servers that advertise AAAA but are unreachable over IPv6.\r
-\r
- If this is ON squid will always lookup both AAAA and A, using both.\r
- If this is OFF squid will lookup AAAA and only try A if none found.\r
-\r
- WARNING: There are some possibly unwanted side-effects with this on:\r
- *) Doubles the load placed by squid on the DNS network.\r
- *) May negatively impact connection delay times.\r
- </verb>\r
-\r
- <tag>include</tag>\r
- <p>New option to import entire secondary configuration files into squid.conf.\r
- <verb>\r
- Squid will follow the files immediately and insert all their content\r
- as if it was at that position in squid.conf. As per squid.conf some\r
- options are order-specific within the config as a whole.\r
-\r
- A few layers of include are allowed, but too many are confusing and\r
- squid will enforce an include depth of 16 files.\r
-\r
- Syntax:\r
- include /path/to/file1 /path/to/file2\r
- </verb>\r
-\r
-</descrip>\r
-\r
-<sect2>Changes to existing tags<label id="modifiedtags">\r
-<p>\r
-<descrip>\r
- <tag>acl dst ipvs</tag>\r
- <p>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.\r
- <verb>\r
- acl aclname dst ipv6\r
- </verb>\r
-\r
- <tag>http(s)_port name= intercept</tag>\r
- <p>New port options.\r
- <verb>\r
- name= Specifies a internal name for the port. Defaults to\r
- the port specification (port or addr:port)\r
-\r
- intercept Rename of old 'transparent' option to indicate proper functionality.\r
- </verb>\r
-\r
- <tag>acl myportname</tag>\r
- <p>New acl type myportname, matching the name of the http(s)_port where the request was accepted\r
- <verb>\r
- acl aclname myportname 3128 ... # http(s)_port name\r
- </verb>\r
-\r
- <tag>external_acl_type</tag>\r
- <p>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.\r
- Please be aware of some limits to these options. These options only affet the transport protocol used\r
- to send data to and from the helpers. Squid in IPv6-mode may still send %SRC addresses in IPv4 or IPv6\r
- format, so all helpers will need to be checked and converted to cope with such information cleanly.\r
- <verb>\r
- ipv4 / ipv6 IP-mode used to communicate to this helper.\r
- For compatability with older configurations and helpers\r
- 'ipv4' is the default unless --with-localhost-ipv6 is used.\r
- --with-localhost-ipv6 changes the default to 'ipv6'.\r
- SPECIAL NOTE: explicit use of these options override --with-localhost-ipv6\r
- </verb>\r
-\r
- <tag>tcp_outgoing_address</tag>\r
- <p>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.\r
- <verb>\r
- Squid is built with a capability of bridging the IPv4 and IPv6 internets.\r
- tcp_outgoing_address as previously used breaks this bridging by forcing\r
- all outbound traffic through a certain IPv4 which may be on the wrong\r
- side of the IPv4/IPv6 boundary.\r
-\r
- To operate with tcp_outgoing_address and keep the bridging benefits\r
- an additional ACL needs to be used which ensures the IPv6-bound traffic\r
- is never forced or permitted out the IPv4 interface.\r
-\r
- acl to_ipv6 dst ipv6\r
- tcp_outgoing_address 2002::c001 good_service_net to_ipv6\r
- tcp_outgoing_address 10.0.0.2 good_service_net !to_ipv6\r
-\r
- tcp_outgoing_address 2002::beef normal_service_net to_ipv6\r
- tcp_outgoing_address 10.0.0.1 normal_service_net !to_ipv6\r
-\r
- tcp_outgoing_address 2002::1 to_ipv6\r
- tcp_outgoing_address 10.0.0.3 !to_ipv6\r
- </verb>\r
-\r
- <tag>balance_on_multiple_ip</tag>\r
- <p>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.\r
- It has thus been turned off by default. Making the 'best choice' IP continue in use for any hostname until it encounters a connection failure and failover drops to the next known IP.\r
- <verb>\r
- Modern IP resolvers in squid sort lookup results by preferred access.\r
- By default squid will use these IP in order and only rotates to\r
- the next listed when the most preffered fails.\r
-\r
- Some load balancing servers based on round robin DNS have been\r
- found not to preserve user session state across requests\r
- to different IP addresses.\r
-\r
- Enabling this directive Squid rotates IP's per request.\r
- </verb>\r
-\r
- <tag>http_port</tag>\r
- <p>option 'transparent' is being deprecated in favour of 'intercept' which more clearly identifies what the option does.\r
- For now option 'tproxy' remains with old behaviour meaning fully-invisible proxy using TPROXY support.</p>\r
-\r
-</descrip>\r
-\r
-\r
-<sect2>Removed tags<label id="removedtags">\r
-<p>\r
-<descrip>\r
-\r
-</descrip>\r
-\r
-\r
-<sect1>Changes to ./configure Options\r
-<p>\r
-There have been some changes to Squid's build configuration since Squid-3.0.\r
-\r
-This section gives an account of those changes in three categories:\r
-\r
-<itemize>\r
- <item><ref id="newoptions" name="New options">\r
- <item><ref id="modifiedoptions" name="Changes to existing options">\r
- <item><ref id="notportedoptions" name="Not yet available options">\r
- <item><ref id="removedoptions" name="Removed options">\r
-</itemize>\r
-<p>\r
-\r
-\r
-<sect2>New options<label id="newoptions">\r
-\r
-<p>\r
-<descrip>\r
- <tag>--enable-ipv6</tag>\r
- <p>Buildwith IPv6 support. The default is to build without.</p>\r
-\r
- <tag>--with-localhost-ipv6</tag>\r
- <p>Build support for squid to map all 127.0.0.1 traffic onto ::1.\r
- The default is to build with 127.0.0.1 and ::1 being considered seperate IP.\r
- see the IPv6 details above for a better description. \r
- </p>\r
-\r
- <tag>--with-ipv6-split-stack</tag>\r
- <p>Enable special additions for IPv6 support in Windows XP.\r
- see the IPv6 details above for a better description.</p>\r
-\r
- <tag>--with-ipv4-mapped</tag>\r
- <p>Enable special additions for IPv6 support in Windows Vista.\r
- see the IPv6 details above for a better description.</p>\r
-\r
- <tag>--with-dns-cname</tag>\r
- <p>Enable CNAME recursion within the Internal DNS resolver stub squid uses.\r
- This has no effect on the external DNS helper.\r
- Please note this extension is still experimental and may encounter problems.\r
- To see if it is actually needed you can run squid without it for a period and\r
- check the CNAME-Only Requests statistics squid maintains.\r
- If it produces ongoing serious problems the external helper may be needed\r
- but please report the bugs anyway.\r
- </p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Changes to existing options<label id="modifiedoptions">\r
-\r
-<p>\r
-<descrip>\r
- <tag>--disable-internl-dns</tag>\r
- <p>Better support for Linux using the external DNS helper.\r
- The helper will compile and work with dns_nameservers on more variants of Linux than previously.</p>\r
-\r
- <tag>--enable-linux-netfilter</tag>\r
- <p>This option now enables support for all three netfilter interception targets.\r
- Adding TPROXY version 4+ support to squid through the TPROXY target.\r
- This options requires a linux kernel 2.6.25 or later for embeded netfilter TPROXY targets.\r
- Older REDIRECT and DNAT targets work as before on HTTP ports marked 'intercept'.\r
- </p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Not yet available options<label id="notportedoptions">\r
-\r
-<p>These configure options have not yet been ported to Squid-3. If you need something to do then\r
-porting one of these from Squid-2 to Squid-3 is most welcome.\r
-\r
-<descrip>\r
- <tag>--enable-devpoll</tag>\r
- <p>Support for Solaris /dev/poll</p>\r
-\r
- <tag>--enable-select-simple</tag>\r
- <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>\r
-\r
- <tag>--enable-follow-x-forwarded-for</tag>\r
- <p>Support following the X-Forwarded-For HTTP header for determining the\r
- client IP address</p>\r
-</descrip>\r
-\r
-<sect2>Removed options<label id="removedoptions">\r
-\r
-<p>The following configure options have been removed.\r
-\r
-<descrip>\r
- <tag>--enable-linux-tproxy</tag>\r
- <p>Replaced by --enable-linux-tproxy2 to make way for differences in TPROXY v2 and v4 support.</p>\r
-\r
-</descrip>\r
-\r
-</article>\r
+<!doctype linuxdoc system>
+<article>
+<title>Squid 3.1.PRE1 release notes</title>
+<author>Squid Developers</author>
+<date>$Id: release-3.1.sgml,v 1.6 2008/01/17 10:09:05 hno Exp $</date>
+
+<abstract>
+This document contains the release notes for version 3.1 of Squid.
+Squid is a WWW Cache application developed by the National Laboratory
+for Applied Network Research and members of the Web Caching community.
+</abstract>
+
+<toc>
+
+<sect>Notice
+<p>
+The Squid Team are pleased to announce the release of Squid-3.1.PRE1 for pre-release testing.
+
+This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.1/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.
+
+A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support.
+While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.
+
+We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.
+
+<sect>Known issues
+<p>
+Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&target_milestone=3.1&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=bugs.bug_severity&field0-0-0=noop&type0-0-0=noop&value0-0-0=" name="open bugs against Squid-3.1">.
+
+<sect>Changes since earlier PRE releases of Squid-3.1
+<p>
+The 3.1 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.1/changesets/" name="viewed here">.
+
+<sect>Changes since Squid-3.0
+
+<sect1>Major new features
+<p>
+Squid 3.1 represents a new feature release above 3.0.
+
+The most important of these new features are:
+
+<itemize>
+ <item>IPv6 Support
+ <item>Error Page Localization
+</itemize>
+
+Most user-facing changes are reflected in squid.conf (see below).
+
+<sect2>Internet Protocol version 6 (IPv6)
+
+<p>Squid 3.1 supports IPv6. To enable IPv6 support, use the ./configure --enable-ipv6 option
+
+<sect3>New Features for IPv6
+
+<p>Squid handles localhost values seperately. For the purpose of ACLs and also external
+ connections ::1 is considered a seperate IP from 127.0.0.1. This means all ACL which
+ define behaviour for localhost may need ::1/128 included.
+
+<p>--with-localhost-ipv6 option is provided for Pure-IPv6 setups who do not want to be
+ bothered by the localhost vagaries. It will enable logics to map all localhost traffic
+ through ::1 unless an IPv4-only link is required.
+
+<p>Additional ./configure --with-ipv4-mapped option is provided for OS that require a socket setting
+ to accept IPv4 addresses on IPv6 sockets, squid performs v4-mapping on these addresses
+ It is intended primarily to be used for Windows Vista builds.
+
+<p>Pinger has been upgraded to perform both ICMP and ICMPv6 as required.
+ As a result of this and due to a change in the binary protocol format between them,
+ new builds of squid are no longer backwards-compatible with old pinger binaries.
+ You will need to perform "make install-pinger" again after installing squid.
+
+<p>Peer and Client SNMP tables have been altered to handle IPv6 addresses.
+ As a side effect of this the long-missing fix to show seperate named peers on one IP
+ has been integrated. Making the SNMP peer table now produce correct output.
+ The table structure change is identical for both IPv4-only and Dual modes but with
+ IPv4-only simply not including any IP6 entries. This means any third-party SNMP
+ software which hard coded the MIB paths needs to be upgraded for this Squid release.
+
+
+<sect3>Limitations of IPv6 Support
+
+<p>Specify a specific tcp_outgoing_address and the clients who match its ACL are limited
+ to the IPv4 or IPv6 network that address belongs to. They are not permitted over the
+ IPv4-IPv6 boundary. Some ACL voodoo can however be applied to explicitly route the
+ IPv6/IPv4 bound traffic out an appropriate interface.
+<verb>
+ acl toIP6 dst ipv6
+ tcp_outgoing_address 2001::1 toIP6
+ tcp_outgoing_address 10.0.0.1 !toIP6
+</verb>
+
+<p>WCCP is not available (neither version 1 or 2). It remains built into squid for use with IPv4 traffic but IPv6 cannot use it.
+
+<p>Transparent/Interception is done via NAT at the OS level and is not available in IPv6.
+ Squid will ensure that any port set with transparent or tproxy options be an IPv4-only
+ listening address. Wildcard can still be used but will not open as an IPv6.
+ To ensure that squid can accept IPv6 traffic on its default port, an alternative should
+ be chosen to handle transparent traffic.
+<verb>
+ http_port 3128
+ http_port 8080 transparent
+</verb>
+
+<p>The bundled NTLM Auth helper is IPv4-native between itself and the NTLM server.
+ A new one will be needed for IPv6 traffic between the helper and server.
+
+<p>The bundled RADIUS Auth helper is IPv4-native, both in traffic between and data storage
+ with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.
+
+
+<sect2>Error Page Localization
+<p>
+The error pages presented by squid may now be localized per-request to match the visitors local preferred language.
+
+<p>Squid needs to be build with the --enable-auto-locale option. And the error_directory option in squid.conf needs to be removed.
+
+<p>For best coverage of languages, using the latest language pack of error files is recommended.
+Updates can be downloaded from <url url="http://www.squid-cahch.org/Versions/langpack/" name="www.squid-cache.org/Versions/langpack/">
+
+<p>The squid developers are interested in making squid available in a wide variety of languages.
+ Contributions of new languages is encouraged.
+ Details at <url url="http://wiki.squid-cache.org/Translations" named="The Squid wiki">
+
+<sect>Windows support
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment,
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<newline>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<descrip>
+
+<tag>Usage</tag>
+
+Some new command line options were added for the Windows service support:<newline>
+
+The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.
+
+A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<em/"Squid"/ is the default when the switch is not used.
+
+So, to install the service, the syntax is:
+
+<verb>squid -i [-f file] [-n name]</verb>
+
+Service uninstallation is made with -r command line switch with the appropriate -n switch.
+
+The -k switch family must be used with the appropriate -f and -n switches, so the syntax is:
+
+<verb>squid -k command [-f file] -n service-name</verb>
+where <em/service-name/ is the name specified with -n options at service install time.
+
+To use the Squid original command line, the new -O switch must be used ONCE, the syntax is:
+
+<verb>squid -O cmdline [-n service-name]</verb>
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.
+
+Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.
+
+In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130":
+
+<verb>squid -O "-D -u 3130" -n squidsvc</verb>
+</descrip>
+
+<descrip>
+<tag>PSAPI.DLL (Process Status Helper) Considerations</tag>
+
+The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.
+
+PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.
+
+On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<url url="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE" name="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">
+
+On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.
+</descrip>
+
+<descrip>
+<tag>Registry DNS lookup</tag>
+On Windows platforms, if no value is specified in the <em/dns_nameservers/ option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.
+</descrip>
+
+<descrip>
+<tag>Compatibility Notes</tag>
+<itemize>
+<item>It's recommended to use '/' char in Squid paths instead of '\'
+<item>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid
+<item>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<verb>acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"</verb>
+
+<item>The Windows equivalent of '/dev/null' is 'NUL'
+<item>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<verb>redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd</verb>
+<item>When Squid runs in command line mode, the launching user account must have administrative privilege on the system
+<item>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used
+<item>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Known Limitations</tag>
+<itemize>
+<item>Squid features not operational:<newline>
+<itemize>
+<item>DISKD: still needs to be ported<newline>
+<item>WCCP: cannot work because user space GRE support on Windows is missing<newline>
+<item>Transparent Proxy: missing Windows non commercial interception driver<newline>
+</itemize>
+<item>Some code sections can make blocking calls.
+<item>Some external helpers may not work.
+<item>File Descriptors number hard-limited to 2048 when building with MinGW.
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Building Squid on Windows</tag>
+A reasonably recent release of <url url="http://www.cygwin.com/" name="Cygwin"> or <url url="http://www.mingw.org/" name="MinGW"> is needed.<newline>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<newline>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<newline><newline>
+OpenSSL: <url url="http://www.slproweb.com/products/Win32OpenSSL.html" name="Shining Light Productions Win32 OpenSSL"><newline>
+libcrypt: <url url="http://sourceforge.net/projects/mingwrep/" name="MinGW packages repository"><newline>
+db-1.85: <url url="http://tinycobol.org/download.html" name="TinyCOBOL download area"><newline>
+uudecode: <url url="http://unxutils.sourceforge.net/" name="Native Win32 ports of some GNU utilities"><newline><newline>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<newline>
+<itemize>
+<item>New configure options:<newline>
+<itemize>
+<item>--enable-win32-service<newline>
+</itemize>
+<item>Updated configure options:<newline>
+<itemize>
+<item>--enable-arp-acl<newline>
+<item>--enable-default-hostsfile<newline>
+</itemize>
+<item>Unsupported configure options:<newline>
+<itemize>
+<item>--enable-coss-aio-ops: On Windows Posix AIO is not available<newline>
+<item>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<newline>
+</itemize>
+<item>Recommended configure minimal options for Windows:<newline>
+<itemize>
+<item>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none
+</itemize>
+</itemize>
+<newline>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<itemize>
+<item>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<newline>
+<item>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<newline>
+<item>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<newline>
+</itemize>
+
+</descrip>
+
+<descrip>
+<tag>Using cache manager on Windows:</tag>
+On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<newline>
+Some specific configuration could be needed:<newline>
+<itemize>
+<item>IIS 6 (Windows 2003):<newline>
+<itemize>
+<item>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<newline>
+<itemize>
+<item>Create a cgi-bin Directory
+<item>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application
+<item>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file
+<item>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <em/"Squid Cachemgr"/, add the cachemgr.cgi file and set the
+extension status to <em/Allowed/
+</itemize>
+</itemize>
+<item>Apache:<newline>
+<itemize>
+<item>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+ to pass the TMP and TEMP Windows environment variables to CGI applications:<newline>
+<verb>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+<Location /squid/cgi-bin/cachemgr.cgi>
+ PassEnv TMP TEMP
+ Order allow,deny
+ Allow from workstation.example.com
+</Location>
+</verb>
+</itemize>
+</itemize>
+</descrip>
+
+
+<sect1>Changes to squid.conf
+<p>
+There have been changes to Squid's configuration file since Squid-3.0.
+
+This section gives a thorough account of those changes in three categories:
+
+<itemize>
+ <item><ref id="newtags" name="New tags">
+ <item><ref id="modifiedtags" name="Changes to existing tags">
+ <item><ref id="removedtags" name="Removed tags">
+</itemize>
+
+<p>
+
+
+<sect2>New tags<label id="newtags">
+<p>
+<descrip>
+ <tag>pinger_enable</tag>
+ <p>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.
+ <verb>
+ Control whether the pinger is active at run-time.
+ Enables turning ICMP pinger on and off with a simple squid -k reconfigure.
+ default is on when --enable-icmp is compiled in.
+ </verb>
+
+ <tag>dns_v4_fallback</tag>
+ <p>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.
+ Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a safety net behind IPv6.
+ <verb>
+ Standard practice with DNS is to lookup either A or AAAA records
+ and use the results if it succeeds. Only looking up the other if
+ the first attempt fails or otherwise produces no results.
+
+ That policy however will cause squid to produce error pages for some
+ servers that advertise AAAA but are unreachable over IPv6.
+
+ If this is ON squid will always lookup both AAAA and A, using both.
+ If this is OFF squid will lookup AAAA and only try A if none found.
+
+ WARNING: There are some possibly unwanted side-effects with this on:
+ *) Doubles the load placed by squid on the DNS network.
+ *) May negatively impact connection delay times.
+ </verb>
+
+ <tag>include</tag>
+ <p>New option to import entire secondary configuration files into squid.conf.
+ <verb>
+ Squid will follow the files immediately and insert all their content
+ as if it was at that position in squid.conf. As per squid.conf some
+ options are order-specific within the config as a whole.
+
+ A few layers of include are allowed, but too many are confusing and
+ squid will enforce an include depth of 16 files.
+
+ Syntax:
+ include /path/to/file1 /path/to/file2
+ </verb>
+
+ <tag>error_default_language</tag>
+ <p>New option to replace the old configure option --enable-default-err-language
+ <verb>
+ Set the default language which squid will send error pages in
+ if no existing translation matches the clients language
+ preferences.
+
+ If unset (default) generic English will be used.
+ </verb>
+
+
+</descrip>
+
+<sect2>Changes to existing tags<label id="modifiedtags">
+<p>
+<descrip>
+ <tag>acl dst ipvs</tag>
+ <p>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.
+ <verb>
+ acl aclname dst ipv6
+ </verb>
+
+ <tag>http(s)_port name= intercept</tag>
+ <p>New port options.
+ <verb>
+ name= Specifies a internal name for the port. Defaults to
+ the port specification (port or addr:port)
+
+ intercept Rename of old 'transparent' option to indicate proper functionality.
+ </verb>
+
+ <tag>acl myportname</tag>
+ <p>New acl type myportname, matching the name of the http(s)_port where the request was accepted
+ <verb>
+ acl aclname myportname 3128 ... # http(s)_port name
+ </verb>
+
+ <tag>external_acl_type</tag>
+ <p>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.
+ Please be aware of some limits to these options. These options only affet the transport protocol used
+ to send data to and from the helpers. Squid in IPv6-mode may still send %SRC addresses in IPv4 or IPv6
+ format, so all helpers will need to be checked and converted to cope with such information cleanly.
+ <verb>
+ ipv4 / ipv6 IP-mode used to communicate to this helper.
+ For compatability with older configurations and helpers
+ 'ipv4' is the default unless --with-localhost-ipv6 is used.
+ --with-localhost-ipv6 changes the default to 'ipv6'.
+ SPECIAL NOTE: explicit use of these options override --with-localhost-ipv6
+ </verb>
+
+ <tag>tcp_outgoing_address</tag>
+ <p>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.
+ <verb>
+ Squid is built with a capability of bridging the IPv4 and IPv6 internets.
+ tcp_outgoing_address as previously used breaks this bridging by forcing
+ all outbound traffic through a certain IPv4 which may be on the wrong
+ side of the IPv4/IPv6 boundary.
+
+ To operate with tcp_outgoing_address and keep the bridging benefits
+ an additional ACL needs to be used which ensures the IPv6-bound traffic
+ is never forced or permitted out the IPv4 interface.
+
+ acl to_ipv6 dst ipv6
+ tcp_outgoing_address 2002::c001 good_service_net to_ipv6
+ tcp_outgoing_address 10.0.0.2 good_service_net !to_ipv6
+
+ tcp_outgoing_address 2002::beef normal_service_net to_ipv6
+ tcp_outgoing_address 10.0.0.1 normal_service_net !to_ipv6
+
+ tcp_outgoing_address 2002::1 to_ipv6
+ tcp_outgoing_address 10.0.0.3 !to_ipv6
+ </verb>
+
+ <tag>balance_on_multiple_ip</tag>
+ <p>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.
+ It has thus been turned off by default. Making the 'best choice' IP continue in use for any hostname until it encounters a connection failure and failover drops to the next known IP.
+ <verb>
+ Modern IP resolvers in squid sort lookup results by preferred access.
+ By default squid will use these IP in order and only rotates to
+ the next listed when the most preffered fails.
+
+ Some load balancing servers based on round robin DNS have been
+ found not to preserve user session state across requests
+ to different IP addresses.
+
+ Enabling this directive Squid rotates IP's per request.
+ </verb>
+
+ <tag>http_port</tag>
+ <p>option 'transparent' is being deprecated in favour of 'intercept' which more clearly identifies what the option does.
+ For now option 'tproxy' remains with old behaviour meaning fully-invisible proxy using TPROXY support.</p>
+
+ <tag>error_directory</tag>
+ <p>Now an optiona entry in squid.conf. If present it will force all visitors to receive the error pages
+ contained in the directory it points at. If absent error page localization will be given a chance.
+ <verb>
+ If you wish to create your own versions of the default
+ error files to customize them to suit your company copy
+ the error/template files to another directory and point
+ this tag at them.
+
+ WARNING: This option will disable multi-language support
+ on error pages if used.
+
+ The squid developers are interested in making squid available in
+ a wide variety of languages. If you are making translations for a
+ language that Squid does not currently provide please consider
+ contributing your translation back to the project.
+ http://wiki.squid-cache.org/Translations
+
+ The squid developers working on translations are happy to supply drop-in
+ translated error files in exchange for any new language contributions.
+ </verb>
+
+</descrip>
+
+
+<sect2>Removed tags<label id="removedtags">
+<p>
+<descrip>
+
+ <tag>dns_testnames</tag>
+ <p>Obsolete. This feature is no longer relevant to modern networks and causes boot problems.</p>
+
+</descrip>
+
+
+<sect1>Changes to ./configure Options
+<p>
+There have been some changes to Squid's build configuration since Squid-3.0.
+
+This section gives an account of those changes in three categories:
+
+<itemize>
+ <item><ref id="newoptions" name="New options">
+ <item><ref id="modifiedoptions" name="Changes to existing options">
+ <item><ref id="notportedoptions" name="Not yet available options">
+ <item><ref id="removedoptions" name="Removed options">
+</itemize>
+<p>
+
+
+<sect2>New options<label id="newoptions">
+
+<p>
+<descrip>
+ <tag>--enable-ipv6</tag>
+ <p>Buildwith IPv6 support. The default is to build without.</p>
+
+ <tag>--with-localhost-ipv6</tag>
+ <p>Build support for squid to map all 127.0.0.1 traffic onto ::1.
+ The default is to build with 127.0.0.1 and ::1 being considered seperate IP.
+ see the IPv6 details above for a better description.
+ </p>
+
+ <tag>--with-ipv6-split-stack</tag>
+ <p>Enable special additions for IPv6 support in Windows XP.
+ see the IPv6 details above for a better description.</p>
+
+ <tag>--with-ipv4-mapped</tag>
+ <p>Enable special additions for IPv6 support in Windows Vista.
+ see the IPv6 details above for a better description.</p>
+
+ <tag>--with-dns-cname</tag>
+ <p>Enable CNAME recursion within the Internal DNS resolver stub squid uses.
+ This has no effect on the external DNS helper.
+ Please note this extension is still experimental and may encounter problems.
+ To see if it is actually needed you can run squid without it for a period and
+ check the CNAME-Only Requests statistics squid maintains.
+ If it produces ongoing serious problems the external helper may be needed
+ but please report the bugs anyway.
+ </p>
+
+ <tag>--enable-auto-locale</tag>
+ <p>Enable error page localization for visitors.</p>
+
+</descrip>
+</p>
+
+<sect2>Changes to existing options<label id="modifiedoptions">
+
+<p>
+<descrip>
+ <tag>--disable-internl-dns</tag>
+ <p>Better support for Linux using the external DNS helper.
+ The helper will compile and work with dns_nameservers on more variants of Linux than previously.</p>
+
+ <tag>--enable-linux-netfilter</tag>
+ <p>This option now enables support for all three netfilter interception targets.
+ Adding TPROXY version 4+ support to squid through the TPROXY target.
+ This options requires a linux kernel 2.6.25 or later for embeded netfilter TPROXY targets.
+ Older REDIRECT and DNAT targets work as before on HTTP ports marked 'intercept'.
+ </p>
+
+</descrip>
+</p>
+
+<sect2>Not yet available options<label id="notportedoptions">
+
+<p>These configure options have not yet been ported to Squid-3. If you need something to do then
+porting one of these from Squid-2 to Squid-3 is most welcome.
+
+<descrip>
+ <tag>--enable-devpoll</tag>
+ <p>Support for Solaris /dev/poll</p>
+
+ <tag>--enable-select-simple</tag>
+ <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>
+
+ <tag>--enable-follow-x-forwarded-for</tag>
+ <p>Support following the X-Forwarded-For HTTP header for determining the
+ client IP address</p>
+</descrip>
+
+<sect2>Removed options<label id="removedoptions">
+
+<p>The following configure options have been removed.
+
+<descrip>
+ <tag>--enable-linux-tproxy</tag>
+ <p>Replaced by --enable-linux-tproxy2 to make way for differences in TPROXY v2 and v4 support.</p>
+ <tag>--enable-default-err-language</tag>
+ <p>Replaced by error_default_language squid.conf option</p>
+ <tag>--enable-err-languages</tag>
+ <p>Removed.</p>
+</descrip>
+
+</article>
-\r
-\r
-\r
-\r
-\r
-\r
-Network Working Group O. Gudmundsson\r
-Request for Comments: 3226 December 2001\r
-Updates: 2874, 2535\r
-Category: Standards Track\r
-\r
-\r
- DNSSEC and IPv6 A6 aware server/resolver message size requirements\r
-\r
-Status of this Memo\r
-\r
- This document specifies an Internet standards track protocol for the\r
- Internet community, and requests discussion and suggestions for\r
- improvements. Please refer to the current edition of the "Internet\r
- Official Protocol Standards" (STD 1) for the standardization state\r
- and status of this protocol. Distribution of this memo is unlimited.\r
-\r
-Copyright Notice\r
-\r
- Copyright (C) The Internet Society (2001). All Rights Reserved.\r
-\r
-Abstract\r
-\r
- This document mandates support for EDNS0 (Extension Mechanisms for\r
- DNS) in DNS entities claiming to support either DNS Security\r
- Extensions or A6 records. This requirement is necessary because\r
- these new features increase the size of DNS messages. If EDNS0 is\r
- not supported fall back to TCP will happen, having a detrimental\r
- impact on query latency and DNS server load. This document updates\r
- RFC 2535 and RFC 2874, by adding new requirements.\r
-\r
-1. Introduction\r
-\r
- Familiarity with the DNS [RFC1034, RFC1035], DNS Security Extensions\r
- [RFC2535], EDNS0 [RFC2671] and A6 [RFC2874] is helpful.\r
-\r
- STD 13, RFC 1035 Section 2.3.4 requires that DNS messages over UDP\r
- have a data payload of 512 octets or less. Most DNS software today\r
- will not accept larger UDP datagrams. Any answer that requires more\r
- than 512 octets, results in a partial and sometimes useless reply\r
- with the Truncation Bit set; in most cases the requester will then\r
- retry using TCP. Furthermore, server delivery of truncated responses\r
- varies widely and resolver handling of these responses also varies,\r
- leading to additional inefficiencies in handling truncation.\r
-\r
- Compared to UDP, TCP is an expensive protocol to use for a simple\r
- transaction like DNS: a TCP connection requires 5 packets for setup\r
- and tear down, excluding data packets, thus requiring at least 3\r
- round trips on top of the one for the original UDP query. The DNS\r
-\r
-\r
-\r
-Gudmundsson Standards Track [Page 1]\r
-\f\r
-RFC 3226 DNSSEC and IPv6 A6 requirements December 2001\r
-\r
-\r
- server also needs to keep a state of the connection during this\r
- transaction. Many DNS servers answer thousands of queries per\r
- second, requiring them to use TCP will cause significant overhead and\r
- delays.\r
-\r
-1.1. Requirements\r
-\r
- The key words "MUST", "REQUIRED", "SHOULD", "RECOMMENDED", and "MAY"\r
- in this document are to be interpreted as described in RFC 2119.\r
-\r
-2. Motivating factors\r
-\r
-2.1. DNSSEC motivations\r
-\r
- DNSSEC [RFC2535] secures DNS by adding a Public Key signature on each\r
- RR set. These signatures range in size from about 80 octets to 800\r
- octets, most are going to be in the range of 80 to 200 octets. The\r
- addition of signatures on each or most RR sets in an answer\r
- significantly increases the size of DNS answers from secure zones.\r
-\r
- For performance reasons and to reduce load on DNS servers, it is\r
- important that security aware servers and resolvers get all the data\r
- in Answer and Authority section in one query without truncation.\r
- Sending Additional Data in the same query is helpful when the server\r
- is authoritative for the data, and this reduces round trips.\r
-\r
- DNSSEC OK[OK] specifies how a client can, using EDNS0, indicate that\r
- it is interested in receiving DNSSEC records. The OK bit does not\r
- eliminate the need for large answers for DNSSEC capable clients.\r
-\r
-2.1.1. Message authentication or TSIG motivation\r
-\r
- TSIG [RFC2845] allows for the light weight authentication of DNS\r
- messages, but increases the size of the messages by at least 70\r
- octets. DNSSEC specifies for computationally expensive message\r
- authentication SIG(0) using a standard public key signature. As only\r
- one TSIG or SIG(0) can be attached to each DNS answer the size\r
- increase of message authentication is not significant, but may still\r
- lead to a truncation.\r
-\r
-2.2. IPv6 Motivations\r
-\r
- IPv6 addresses [RFC2874] are 128 bits and can be represented in the\r
- DNS by multiple A6 records, each consisting of a domain name and a\r
- bit field. The domain name refers to an address prefix that may\r
- require additional A6 RRs to be included in the answer. Answers\r
- where the queried name has multiple A6 addresses may overflow a 512-\r
- octet UDP packet size.\r
-\r
-\r
-\r
-Gudmundsson Standards Track [Page 2]\r
-\f\r
-RFC 3226 DNSSEC and IPv6 A6 requirements December 2001\r
-\r
-\r
-2.3. Root server and TLD server motivations\r
-\r
- The current number of root servers is limited to 13 as that is the\r
- maximum number of name servers and their address records that fit in\r
- one 512-octet answer for a SOA record. If root servers start\r
- advertising A6 or KEY records then the answer for the root NS records\r
- will not fit in a single 512-octet DNS message, resulting in a large\r
- number of TCP query connections to the root servers. Even if all\r
- client resolver query their local name server for information, there\r
- are millions of these servers. Each name server must periodically\r
- update its information about the high level servers.\r
-\r
- For redundancy, latency and load balancing reasons, large numbers of\r
- DNS servers are required for some zones. Since the root zone is used\r
- by the entire net, it is important to have as many servers as\r
- possible. Large TLDs (and many high-visibility SLDs) often have\r
- enough servers that either A6 or KEY records would cause the NS\r
- response to overflow the 512 byte limit. Note that these zones with\r
- large numbers of servers are often exactly those zones that are\r
- critical to network operation and that already sustain fairly high\r
- loads.\r
-\r
-2.4. UDP vs TCP for DNS messages\r
-\r
- Given all these factors, it is essential that any implementation that\r
- supports DNSSEC and or A6 be able to use larger DNS messages than 512\r
- octets.\r
-\r
- The original 512 restriction was put in place to reduce the\r
- probability of fragmentation of DNS responses. A fragmented UDP\r
- message that suffers a loss of one of the fragments renders the\r
- answer useless and the query must be retried. A TCP connection\r
- requires a larger number of round trips for establishment, data\r
- transfer and tear down, but only the lost data segments are\r
- retransmitted.\r
-\r
- In the early days a number of IP implementations did not handle\r
- fragmentation well, but all modern operating systems have overcome\r
- that issue thus sending fragmented messages is fine from that\r
- standpoint. The open issue is the effect of losses on fragmented\r
- messages. If connection has high loss ratio only TCP will allow\r
- reliable transfer of DNS data, most links have low loss ratios thus\r
- sending fragmented UDP packet in one round trip is better than\r
- establishing a TCP connection to transfer a few thousand octets.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson Standards Track [Page 3]\r
-\f\r
-RFC 3226 DNSSEC and IPv6 A6 requirements December 2001\r
-\r
-\r
-2.5. EDNS0 and large UDP messages\r
-\r
- EDNS0 [RFC2671] allows clients to declare the maximum size of UDP\r
- message they are willing to handle. Thus, if the expected answer is\r
- between 512 octets and the maximum size that the client can accept,\r
- the additional overhead of a TCP connection can be avoided.\r
-\r
-3. Protocol changes:\r
-\r
- This document updates RFC 2535 and RFC 2874, by adding new\r
- requirements.\r
-\r
- All RFC 2535 compliant servers and resolvers MUST support EDNS0 and\r
- advertise message size of at least 1220 octets, but SHOULD advertise\r
- message size of 4000. This value might be too low to get full\r
- answers for high level servers and successor of this document may\r
- require a larger value.\r
-\r
- All RFC 2874 compliant servers and resolver MUST support EDNS0 and\r
- advertise message size of at least 1024 octets, but SHOULD advertise\r
- message size of 2048. The IPv6 datagrams should be 1024 octets,\r
- unless the MTU of the path is known. (Note that this is smaller than\r
- the minimum IPv6 MTU to allow for some extension headers and/or\r
- encapsulation without exceeding the minimum MTU.)\r
-\r
- All RFC 2535 and RFC 2874 compliant entities MUST be able to handle\r
- fragmented IPv4 and IPv6 UDP packets.\r
-\r
- All hosts supporting both RFC 2535 and RFC 2874 MUST use the larger\r
- required value in EDNS0 advertisements.\r
-\r
-4. Acknowledgments\r
-\r
- Harald Alvestrand, Rob Austein, Randy Bush, David Conrad, Andreas\r
- Gustafsson, Jun-ichiro itojun Hagino, Bob Halley, Edward Lewis\r
- Michael Patton and Kazu Yamamoto were instrumental in motivating and\r
- shaping this document.\r
-\r
-5. Security Considerations:\r
-\r
- There are no additional security considerations other than those in\r
- RFC 2671.\r
-\r
-6. IANA Considerations:\r
-\r
- None\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson Standards Track [Page 4]\r
-\f\r
-RFC 3226 DNSSEC and IPv6 A6 requirements December 2001\r
-\r
-\r
-7. References\r
-\r
- [RFC1034] Mockapetris, P., "Domain Names - Concepts and Facilities",\r
- STD 13, RFC 1034, November 1987.\r
-\r
- [RFC1035] Mockapetris, P., "Domain Names - Implementation and\r
- Specification", STD 13, RFC 1035, November 1987.\r
-\r
- [RFC2535] Eastlake, D. "Domain Name System Security Extensions", RFC\r
- 2535, March 1999.\r
-\r
- [RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC\r
- 2671, August 1999.\r
-\r
- [RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D. and B.\r
- Wellington, "Secret Key Transaction Authentication for DNS\r
- (TSIG)", RFC 2845, May 2000.\r
-\r
- [RFC2874] Crawford, M. and C. Huitema, "DNS Extensions to Support\r
- IPv6 Address Aggregation and Renumbering", RFC 2874, July\r
- 2000.\r
-\r
- [RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC\r
- 3225, December 2001.\r
-\r
-8. Author Address\r
-\r
- Olafur Gudmundsson\r
- 3826 Legation Street, NW\r
- Washington, DC 20015\r
- USA\r
-\r
- EMail: ogud@ogud.com\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson Standards Track [Page 5]\r
-\f\r
-RFC 3226 DNSSEC and IPv6 A6 requirements December 2001\r
-\r
-\r
-9. Full Copyright Statement\r
-\r
- Copyright (C) The Internet Society (2001). All Rights Reserved.\r
-\r
- This document and translations of it may be copied and furnished to\r
- others, and derivative works that comment on or otherwise explain it\r
- or assist in its implementation may be prepared, copied, published\r
- and distributed, in whole or in part, without restriction of any\r
- kind, provided that the above copyright notice and this paragraph are\r
- included on all such copies and derivative works. However, this\r
- document itself may not be modified in any way, such as by removing\r
- the copyright notice or references to the Internet Society or other\r
- Internet organizations, except as needed for the purpose of\r
- developing Internet standards in which case the procedures for\r
- copyrights defined in the Internet Standards process must be\r
- followed, or as required to translate it into languages other than\r
- English.\r
-\r
- The limited permissions granted above are perpetual and will not be\r
- revoked by the Internet Society or its successors or assigns.\r
-\r
- This document and the information contained herein is provided on an\r
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\r
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\r
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\r
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\r
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\r
-\r
-Acknowledgement\r
-\r
- Funding for the RFC Editor function is currently provided by the\r
- Internet Society.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson Standards Track [Page 6]\r
-\f\r
+
+
+
+
+
+
+Network Working Group O. Gudmundsson
+Request for Comments: 3226 December 2001
+Updates: 2874, 2535
+Category: Standards Track
+
+
+ DNSSEC and IPv6 A6 aware server/resolver message size requirements
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+Abstract
+
+ This document mandates support for EDNS0 (Extension Mechanisms for
+ DNS) in DNS entities claiming to support either DNS Security
+ Extensions or A6 records. This requirement is necessary because
+ these new features increase the size of DNS messages. If EDNS0 is
+ not supported fall back to TCP will happen, having a detrimental
+ impact on query latency and DNS server load. This document updates
+ RFC 2535 and RFC 2874, by adding new requirements.
+
+1. Introduction
+
+ Familiarity with the DNS [RFC1034, RFC1035], DNS Security Extensions
+ [RFC2535], EDNS0 [RFC2671] and A6 [RFC2874] is helpful.
+
+ STD 13, RFC 1035 Section 2.3.4 requires that DNS messages over UDP
+ have a data payload of 512 octets or less. Most DNS software today
+ will not accept larger UDP datagrams. Any answer that requires more
+ than 512 octets, results in a partial and sometimes useless reply
+ with the Truncation Bit set; in most cases the requester will then
+ retry using TCP. Furthermore, server delivery of truncated responses
+ varies widely and resolver handling of these responses also varies,
+ leading to additional inefficiencies in handling truncation.
+
+ Compared to UDP, TCP is an expensive protocol to use for a simple
+ transaction like DNS: a TCP connection requires 5 packets for setup
+ and tear down, excluding data packets, thus requiring at least 3
+ round trips on top of the one for the original UDP query. The DNS
+
+
+
+Gudmundsson Standards Track [Page 1]
+\f
+RFC 3226 DNSSEC and IPv6 A6 requirements December 2001
+
+
+ server also needs to keep a state of the connection during this
+ transaction. Many DNS servers answer thousands of queries per
+ second, requiring them to use TCP will cause significant overhead and
+ delays.
+
+1.1. Requirements
+
+ The key words "MUST", "REQUIRED", "SHOULD", "RECOMMENDED", and "MAY"
+ in this document are to be interpreted as described in RFC 2119.
+
+2. Motivating factors
+
+2.1. DNSSEC motivations
+
+ DNSSEC [RFC2535] secures DNS by adding a Public Key signature on each
+ RR set. These signatures range in size from about 80 octets to 800
+ octets, most are going to be in the range of 80 to 200 octets. The
+ addition of signatures on each or most RR sets in an answer
+ significantly increases the size of DNS answers from secure zones.
+
+ For performance reasons and to reduce load on DNS servers, it is
+ important that security aware servers and resolvers get all the data
+ in Answer and Authority section in one query without truncation.
+ Sending Additional Data in the same query is helpful when the server
+ is authoritative for the data, and this reduces round trips.
+
+ DNSSEC OK[OK] specifies how a client can, using EDNS0, indicate that
+ it is interested in receiving DNSSEC records. The OK bit does not
+ eliminate the need for large answers for DNSSEC capable clients.
+
+2.1.1. Message authentication or TSIG motivation
+
+ TSIG [RFC2845] allows for the light weight authentication of DNS
+ messages, but increases the size of the messages by at least 70
+ octets. DNSSEC specifies for computationally expensive message
+ authentication SIG(0) using a standard public key signature. As only
+ one TSIG or SIG(0) can be attached to each DNS answer the size
+ increase of message authentication is not significant, but may still
+ lead to a truncation.
+
+2.2. IPv6 Motivations
+
+ IPv6 addresses [RFC2874] are 128 bits and can be represented in the
+ DNS by multiple A6 records, each consisting of a domain name and a
+ bit field. The domain name refers to an address prefix that may
+ require additional A6 RRs to be included in the answer. Answers
+ where the queried name has multiple A6 addresses may overflow a 512-
+ octet UDP packet size.
+
+
+
+Gudmundsson Standards Track [Page 2]
+\f
+RFC 3226 DNSSEC and IPv6 A6 requirements December 2001
+
+
+2.3. Root server and TLD server motivations
+
+ The current number of root servers is limited to 13 as that is the
+ maximum number of name servers and their address records that fit in
+ one 512-octet answer for a SOA record. If root servers start
+ advertising A6 or KEY records then the answer for the root NS records
+ will not fit in a single 512-octet DNS message, resulting in a large
+ number of TCP query connections to the root servers. Even if all
+ client resolver query their local name server for information, there
+ are millions of these servers. Each name server must periodically
+ update its information about the high level servers.
+
+ For redundancy, latency and load balancing reasons, large numbers of
+ DNS servers are required for some zones. Since the root zone is used
+ by the entire net, it is important to have as many servers as
+ possible. Large TLDs (and many high-visibility SLDs) often have
+ enough servers that either A6 or KEY records would cause the NS
+ response to overflow the 512 byte limit. Note that these zones with
+ large numbers of servers are often exactly those zones that are
+ critical to network operation and that already sustain fairly high
+ loads.
+
+2.4. UDP vs TCP for DNS messages
+
+ Given all these factors, it is essential that any implementation that
+ supports DNSSEC and or A6 be able to use larger DNS messages than 512
+ octets.
+
+ The original 512 restriction was put in place to reduce the
+ probability of fragmentation of DNS responses. A fragmented UDP
+ message that suffers a loss of one of the fragments renders the
+ answer useless and the query must be retried. A TCP connection
+ requires a larger number of round trips for establishment, data
+ transfer and tear down, but only the lost data segments are
+ retransmitted.
+
+ In the early days a number of IP implementations did not handle
+ fragmentation well, but all modern operating systems have overcome
+ that issue thus sending fragmented messages is fine from that
+ standpoint. The open issue is the effect of losses on fragmented
+ messages. If connection has high loss ratio only TCP will allow
+ reliable transfer of DNS data, most links have low loss ratios thus
+ sending fragmented UDP packet in one round trip is better than
+ establishing a TCP connection to transfer a few thousand octets.
+
+
+
+
+
+
+
+Gudmundsson Standards Track [Page 3]
+\f
+RFC 3226 DNSSEC and IPv6 A6 requirements December 2001
+
+
+2.5. EDNS0 and large UDP messages
+
+ EDNS0 [RFC2671] allows clients to declare the maximum size of UDP
+ message they are willing to handle. Thus, if the expected answer is
+ between 512 octets and the maximum size that the client can accept,
+ the additional overhead of a TCP connection can be avoided.
+
+3. Protocol changes:
+
+ This document updates RFC 2535 and RFC 2874, by adding new
+ requirements.
+
+ All RFC 2535 compliant servers and resolvers MUST support EDNS0 and
+ advertise message size of at least 1220 octets, but SHOULD advertise
+ message size of 4000. This value might be too low to get full
+ answers for high level servers and successor of this document may
+ require a larger value.
+
+ All RFC 2874 compliant servers and resolver MUST support EDNS0 and
+ advertise message size of at least 1024 octets, but SHOULD advertise
+ message size of 2048. The IPv6 datagrams should be 1024 octets,
+ unless the MTU of the path is known. (Note that this is smaller than
+ the minimum IPv6 MTU to allow for some extension headers and/or
+ encapsulation without exceeding the minimum MTU.)
+
+ All RFC 2535 and RFC 2874 compliant entities MUST be able to handle
+ fragmented IPv4 and IPv6 UDP packets.
+
+ All hosts supporting both RFC 2535 and RFC 2874 MUST use the larger
+ required value in EDNS0 advertisements.
+
+4. Acknowledgments
+
+ Harald Alvestrand, Rob Austein, Randy Bush, David Conrad, Andreas
+ Gustafsson, Jun-ichiro itojun Hagino, Bob Halley, Edward Lewis
+ Michael Patton and Kazu Yamamoto were instrumental in motivating and
+ shaping this document.
+
+5. Security Considerations:
+
+ There are no additional security considerations other than those in
+ RFC 2671.
+
+6. IANA Considerations:
+
+ None
+
+
+
+
+
+Gudmundsson Standards Track [Page 4]
+\f
+RFC 3226 DNSSEC and IPv6 A6 requirements December 2001
+
+
+7. References
+
+ [RFC1034] Mockapetris, P., "Domain Names - Concepts and Facilities",
+ STD 13, RFC 1034, November 1987.
+
+ [RFC1035] Mockapetris, P., "Domain Names - Implementation and
+ Specification", STD 13, RFC 1035, November 1987.
+
+ [RFC2535] Eastlake, D. "Domain Name System Security Extensions", RFC
+ 2535, March 1999.
+
+ [RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC
+ 2671, August 1999.
+
+ [RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D. and B.
+ Wellington, "Secret Key Transaction Authentication for DNS
+ (TSIG)", RFC 2845, May 2000.
+
+ [RFC2874] Crawford, M. and C. Huitema, "DNS Extensions to Support
+ IPv6 Address Aggregation and Renumbering", RFC 2874, July
+ 2000.
+
+ [RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC
+ 3225, December 2001.
+
+8. Author Address
+
+ Olafur Gudmundsson
+ 3826 Legation Street, NW
+ Washington, DC 20015
+ USA
+
+ EMail: ogud@ogud.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Gudmundsson Standards Track [Page 5]
+\f
+RFC 3226 DNSSEC and IPv6 A6 requirements December 2001
+
+
+9. Full Copyright Statement
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Gudmundsson Standards Track [Page 6]
+\f
-\r
-\r
-\r
-\r
-\r
-Network Working Group R. Hinden\r
-Request for Comments: 3513 Nokia\r
-Obsoletes: 2373 S. Deering\r
-Category: Standards Track Cisco Systems\r
- April 2003\r
-\r
-\r
- Internet Protocol Version 6 (IPv6) Addressing Architecture\r
-\r
-Status of this Memo\r
-\r
- This document specifies an Internet standards track protocol for the\r
- Internet community, and requests discussion and suggestions for\r
- improvements. Please refer to the current edition of the "Internet\r
- Official Protocol Standards" (STD 1) for the standardization state\r
- and status of this protocol. Distribution of this memo is unlimited.\r
-\r
-Copyright Notice\r
-\r
- Copyright (C) The Internet Society (2003). All Rights Reserved.\r
-\r
-Abstract\r
-\r
- This specification defines the addressing architecture of the IP\r
- Version 6 (IPv6) protocol. The document includes the IPv6 addressing\r
- model, text representations of IPv6 addresses, definition of IPv6\r
- unicast addresses, anycast addresses, and multicast addresses, and an\r
- IPv6 node's required addresses.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 1]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-Table of Contents\r
-\r
- 1. Introduction.................................................3\r
- 2. IPv6 Addressing..............................................3\r
- 2.1 Addressing Model.........................................4\r
- 2.2 Text Representation of Addresses.........................4\r
- 2.3 Text Representation of Address Prefixes..................5\r
- 2.4 Address Type Identification..............................6\r
- 2.5 Unicast Addresses........................................7\r
- 2.5.1 Interface Identifiers..............................8\r
- 2.5.2 The Unspecified Address............................9\r
- 2.5.3 The Loopback Address...............................9\r
- 2.5.4 Global Unicast Addresses..........................10\r
- 2.5.5 IPv6 Addresses with Embedded IPv4 Addresses.......10\r
- 2.5.6 Local-use IPv6 Unicast Addresses..................11\r
- 2.6 Anycast Addresses.......................................12\r
- 2.6.1 Required Anycast Address..........................13\r
- 2.7 Multicast Addresses.....................................13\r
- 2.7.1 Pre-Defined Multicast Addresses...................15\r
- 2.8 A Node's Required Addresses.............................17\r
- 3. Security Considerations.....................................17\r
- 4. IANA Considerations.........................................18\r
- 5. References..................................................19\r
- 5.1 Normative References....................................19\r
- 5.2 Informative References..................................19\r
- APPENDIX A: Creating Modified EUI-64 format Interface IDs......21\r
- APPENDIX B: Changes from RFC-2373..............................24\r
- Authors' Addresses.............................................25\r
- Full Copyright Statement.......................................26\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 2]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-1. Introduction\r
-\r
- This specification defines the addressing architecture of the IP\r
- Version 6 (IPv6) protocol. It includes the basic formats for the\r
- various types of IPv6 addresses (unicast, anycast, and multicast).\r
-\r
- The authors would like to acknowledge the contributions of Paul\r
- Francis, Scott Bradner, Jim Bound, Brian Carpenter, Matt Crawford,\r
- Deborah Estrin, Roger Fajman, Bob Fink, Peter Ford, Bob Gilligan,\r
- Dimitry Haskin, Tom Harsch, Christian Huitema, Tony Li, Greg\r
- Minshall, Thomas Narten, Erik Nordmark, Yakov Rekhter, Bill Simpson,\r
- Sue Thomson, Markku Savela, and Larry Masinter.\r
-\r
-2. IPv6 Addressing\r
-\r
- IPv6 addresses are 128-bit identifiers for interfaces and sets of\r
- interfaces (where "interface" is as defined in section 2 of [IPV6]).\r
- There are three types of addresses:\r
-\r
- Unicast: An identifier for a single interface. A packet sent to a\r
- unicast address is delivered to the interface identified\r
- by that address.\r
-\r
- Anycast: An identifier for a set of interfaces (typically belonging\r
- to different nodes). A packet sent to an anycast address\r
- is delivered to one of the interfaces identified by that\r
- address (the "nearest" one, according to the routing\r
- protocols' measure of distance).\r
-\r
- Multicast: An identifier for a set of interfaces (typically belonging\r
- to different nodes). A packet sent to a multicast address\r
- is delivered to all interfaces identified by that address.\r
-\r
- There are no broadcast addresses in IPv6, their function being\r
- superseded by multicast addresses.\r
-\r
- In this document, fields in addresses are given a specific name, for\r
- example "subnet". When this name is used with the term "ID" for\r
- identifier after the name (e.g., "subnet ID"), it refers to the\r
- contents of the named field. When it is used with the term "prefix"\r
- (e.g., "subnet prefix") it refers to all of the address from the left\r
- up to and including this field.\r
-\r
- In IPv6, all zeros and all ones are legal values for any field,\r
- unless specifically excluded. Specifically, prefixes may contain, or\r
- end with, zero-valued fields.\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 3]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-2.1 Addressing Model\r
-\r
- IPv6 addresses of all types are assigned to interfaces, not nodes.\r
- An IPv6 unicast address refers to a single interface. Since each\r
- interface belongs to a single node, any of that node's interfaces'\r
- unicast addresses may be used as an identifier for the node.\r
-\r
- All interfaces are required to have at least one link-local unicast\r
- address (see section 2.8 for additional required addresses). A\r
- single interface may also have multiple IPv6 addresses of any type\r
- (unicast, anycast, and multicast) or scope. Unicast addresses with\r
- scope greater than link-scope are not needed for interfaces that are\r
- not used as the origin or destination of any IPv6 packets to or from\r
- non-neighbors. This is sometimes convenient for point-to-point\r
- interfaces. There is one exception to this addressing model:\r
-\r
- A unicast address or a set of unicast addresses may be assigned to\r
- multiple physical interfaces if the implementation treats the\r
- multiple physical interfaces as one interface when presenting it\r
- to the internet layer. This is useful for load-sharing over\r
- multiple physical interfaces.\r
-\r
- Currently IPv6 continues the IPv4 model that a subnet prefix is\r
- associated with one link. Multiple subnet prefixes may be assigned\r
- to the same link.\r
-\r
-2.2 Text Representation of Addresses\r
-\r
- There are three conventional forms for representing IPv6 addresses as\r
- text strings:\r
-\r
- 1. The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the\r
- hexadecimal values of the eight 16-bit pieces of the address.\r
-\r
- Examples:\r
-\r
- FEDC:BA98:7654:3210:FEDC:BA98:7654:3210\r
-\r
- 1080:0:0:0:8:800:200C:417A\r
-\r
- Note that it is not necessary to write the leading zeros in an\r
- individual field, but there must be at least one numeral in every\r
- field (except for the case described in 2.).\r
-\r
- 2. Due to some methods of allocating certain styles of IPv6\r
- addresses, it will be common for addresses to contain long strings\r
- of zero bits. In order to make writing addresses containing zero\r
- bits easier a special syntax is available to compress the zeros.\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 4]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- The use of "::" indicates one or more groups of 16 bits of zeros.\r
- The "::" can only appear once in an address. The "::" can also be\r
- used to compress leading or trailing zeros in an address.\r
-\r
- For example, the following addresses:\r
-\r
- 1080:0:0:0:8:800:200C:417A a unicast address\r
- FF01:0:0:0:0:0:0:101 a multicast address\r
- 0:0:0:0:0:0:0:1 the loopback address\r
- 0:0:0:0:0:0:0:0 the unspecified addresses\r
-\r
- may be represented as:\r
-\r
- 1080::8:800:200C:417A a unicast address\r
- FF01::101 a multicast address\r
- ::1 the loopback address\r
- :: the unspecified addresses\r
-\r
- 3. An alternative form that is sometimes more convenient when dealing\r
- with a mixed environment of IPv4 and IPv6 nodes is\r
- x:x:x:x:x:x:d.d.d.d, where the 'x's are the hexadecimal values of\r
- the six high-order 16-bit pieces of the address, and the 'd's are\r
- the decimal values of the four low-order 8-bit pieces of the\r
- address (standard IPv4 representation). Examples:\r
-\r
- 0:0:0:0:0:0:13.1.68.3\r
-\r
- 0:0:0:0:0:FFFF:129.144.52.38\r
-\r
- or in compressed form:\r
-\r
- ::13.1.68.3\r
-\r
- ::FFFF:129.144.52.38\r
-\r
-2.3 Text Representation of Address Prefixes\r
-\r
- The text representation of IPv6 address prefixes is similar to the\r
- way IPv4 addresses prefixes are written in CIDR notation [CIDR]. An\r
- IPv6 address prefix is represented by the notation:\r
-\r
- ipv6-address/prefix-length\r
-\r
- where\r
-\r
- ipv6-address is an IPv6 address in any of the notations listed\r
- in section 2.2.\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 5]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- prefix-length is a decimal value specifying how many of the\r
- leftmost contiguous bits of the address comprise\r
- the prefix.\r
-\r
- For example, the following are legal representations of the 60-bit\r
- prefix 12AB00000000CD3 (hexadecimal):\r
-\r
- 12AB:0000:0000:CD30:0000:0000:0000:0000/60\r
- 12AB::CD30:0:0:0:0/60\r
- 12AB:0:0:CD30::/60\r
-\r
- The following are NOT legal representations of the above prefix:\r
-\r
- 12AB:0:0:CD3/60 may drop leading zeros, but not trailing zeros,\r
- within any 16-bit chunk of the address\r
-\r
- 12AB::CD30/60 address to left of "/" expands to\r
- 12AB:0000:0000:0000:0000:000:0000:CD30\r
-\r
- 12AB::CD3/60 address to left of "/" expands to\r
- 12AB:0000:0000:0000:0000:000:0000:0CD3\r
-\r
- When writing both a node address and a prefix of that node address\r
- (e.g., the node's subnet prefix), the two can combined as follows:\r
-\r
- the node address 12AB:0:0:CD30:123:4567:89AB:CDEF\r
- and its subnet number 12AB:0:0:CD30::/60\r
-\r
- can be abbreviated as 12AB:0:0:CD30:123:4567:89AB:CDEF/60\r
-\r
-2.4 Address Type Identification\r
-\r
- The type of an IPv6 address is identified by the high-order bits of\r
- the address, as follows:\r
-\r
- Address type Binary prefix IPv6 notation Section\r
- ------------ ------------- ------------- -------\r
- Unspecified 00...0 (128 bits) ::/128 2.5.2\r
- Loopback 00...1 (128 bits) ::1/128 2.5.3\r
- Multicast 11111111 FF00::/8 2.7\r
- Link-local unicast 1111111010 FE80::/10 2.5.6\r
- Site-local unicast 1111111011 FEC0::/10 2.5.6\r
- Global unicast (everything else)\r
-\r
- Anycast addresses are taken from the unicast address spaces (of any\r
- scope) and are not syntactically distinguishable from unicast\r
- addresses.\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 6]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- The general format of global unicast addresses is described in\r
- section 2.5.4. Some special-purpose subtypes of global unicast\r
- addresses which contain embedded IPv4 addresses (for the purposes of\r
- IPv4-IPv6 interoperation) are described in section 2.5.5.\r
-\r
- Future specifications may redefine one or more sub-ranges of the\r
- global unicast space for other purposes, but unless and until that\r
- happens, implementations must treat all addresses that do not start\r
- with any of the above-listed prefixes as global unicast addresses.\r
-\r
-2.5 Unicast Addresses\r
-\r
- IPv6 unicast addresses are aggregable with prefixes of arbitrary\r
- bit-length similar to IPv4 addresses under Classless Interdomain\r
- Routing.\r
-\r
- There are several types of unicast addresses in IPv6, in particular\r
- global unicast, site-local unicast, and link-local unicast. There\r
- are also some special-purpose subtypes of global unicast, such as\r
- IPv6 addresses with embedded IPv4 addresses or encoded NSAP\r
- addresses. Additional address types or subtypes can be defined in\r
- the future.\r
-\r
- IPv6 nodes may have considerable or little knowledge of the internal\r
- structure of the IPv6 address, depending on the role the node plays\r
- (for instance, host versus router). At a minimum, a node may\r
- consider that unicast addresses (including its own) have no internal\r
- structure:\r
-\r
- | 128 bits |\r
- +-----------------------------------------------------------------+\r
- | node address |\r
- +-----------------------------------------------------------------+\r
-\r
- A slightly sophisticated host (but still rather simple) may\r
- additionally be aware of subnet prefix(es) for the link(s) it is\r
- attached to, where different addresses may have different values for\r
- n:\r
-\r
- | n bits | 128-n bits |\r
- +------------------------------------------------+----------------+\r
- | subnet prefix | interface ID |\r
- +------------------------------------------------+----------------+\r
-\r
- Though a very simple router may have no knowledge of the internal\r
- structure of IPv6 unicast addresses, routers will more generally have\r
- knowledge of one or more of the hierarchical boundaries for the\r
- operation of routing protocols. The known boundaries will differ\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 7]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- from router to router, depending on what positions the router holds\r
- in the routing hierarchy.\r
-\r
-2.5.1 Interface Identifiers\r
-\r
- Interface identifiers in IPv6 unicast addresses are used to identify\r
- interfaces on a link. They are required to be unique within a subnet\r
- prefix. It is recommended that the same interface identifier not be\r
- assigned to different nodes on a link. They may also be unique over\r
- a broader scope. In some cases an interface's identifier will be\r
- derived directly from that interface's link-layer address. The same\r
- interface identifier may be used on multiple interfaces on a single\r
- node, as long as they are attached to different subnets.\r
-\r
- Note that the uniqueness of interface identifiers is independent of\r
- the uniqueness of IPv6 addresses. For example, a global unicast\r
- address may be created with a non-global scope interface identifier\r
- and a site-local address may be created with a global scope interface\r
- identifier.\r
-\r
- For all unicast addresses, except those that start with binary value\r
- 000, Interface IDs are required to be 64 bits long and to be\r
- constructed in Modified EUI-64 format.\r
-\r
- Modified EUI-64 format based Interface identifiers may have global\r
- scope when derived from a global token (e.g., IEEE 802 48-bit MAC or\r
- IEEE EUI-64 identifiers [EUI64]) or may have local scope where a\r
- global token is not available (e.g., serial links, tunnel end-points,\r
- etc.) or where global tokens are undesirable (e.g., temporary tokens\r
- for privacy [PRIV]).\r
-\r
- Modified EUI-64 format interface identifiers are formed by inverting\r
- the "u" bit (universal/local bit in IEEE EUI-64 terminology) when\r
- forming the interface identifier from IEEE EUI-64 identifiers. In\r
- the resulting Modified EUI-64 format the "u" bit is set to one (1) to\r
- indicate global scope, and it is set to zero (0) to indicate local\r
- scope. The first three octets in binary of an IEEE EUI-64 identifier\r
- are as follows:\r
-\r
- 0 0 0 1 1 2\r
- |0 7 8 5 6 3|\r
- +----+----+----+----+----+----+\r
- |cccc|ccug|cccc|cccc|cccc|cccc|\r
- +----+----+----+----+----+----+\r
-\r
- written in Internet standard bit-order , where "u" is the\r
- universal/local bit, "g" is the individual/group bit, and "c" are the\r
- bits of the company_id. Appendix A: "Creating Modified EUI-64 format\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 8]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- Interface Identifiers" provides examples on the creation of Modified\r
- EUI-64 format based interface identifiers.\r
-\r
- The motivation for inverting the "u" bit when forming an interface\r
- identifier is to make it easy for system administrators to hand\r
- configure non-global identifiers when hardware tokens are not\r
- available. This is expected to be case for serial links, tunnel end-\r
- points, etc. The alternative would have been for these to be of the\r
- form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler 1, 2,\r
- etc.\r
-\r
- The use of the universal/local bit in the Modified EUI-64 format\r
- identifier is to allow development of future technology that can take\r
- advantage of interface identifiers with global scope.\r
-\r
- The details of forming interface identifiers are defined in the\r
- appropriate "IPv6 over <link>" specification such as "IPv6 over\r
- Ethernet" [ETHER], "IPv6 over FDDI" [FDDI], etc.\r
-\r
-2.5.2 The Unspecified Address\r
-\r
- The address 0:0:0:0:0:0:0:0 is called the unspecified address. It\r
- must never be assigned to any node. It indicates the absence of an\r
- address. One example of its use is in the Source Address field of\r
- any IPv6 packets sent by an initializing host before it has learned\r
- its own address.\r
-\r
- The unspecified address must not be used as the destination address\r
- of IPv6 packets or in IPv6 Routing Headers. An IPv6 packet with a\r
- source address of unspecified must never be forwarded by an IPv6\r
- router.\r
-\r
-2.5.3 The Loopback Address\r
-\r
- The unicast address 0:0:0:0:0:0:0:1 is called the loopback address.\r
- It may be used by a node to send an IPv6 packet to itself. It may\r
- never be assigned to any physical interface. It is treated as\r
- having link-local scope, and may be thought of as the link-local\r
- unicast address of a virtual interface (typically called "the\r
- loopback interface") to an imaginary link that goes nowhere.\r
-\r
- The loopback address must not be used as the source address in IPv6\r
- packets that are sent outside of a single node. An IPv6 packet with\r
- a destination address of loopback must never be sent outside of a\r
- single node and must never be forwarded by an IPv6 router. A packet\r
- received on an interface with destination address of loopback must be\r
- dropped.\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 9]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-2.5.4 Global Unicast Addresses\r
-\r
- The general format for IPv6 global unicast addresses is as follows:\r
-\r
- | n bits | m bits | 128-n-m bits |\r
- +------------------------+-----------+----------------------------+\r
- | global routing prefix | subnet ID | interface ID |\r
- +------------------------+-----------+----------------------------+\r
-\r
- where the global routing prefix is a (typically hierarchically-\r
- structured) value assigned to a site (a cluster of subnets/links),\r
- the subnet ID is an identifier of a link within the site, and the\r
- interface ID is as defined in section 2.5.1.\r
-\r
- All global unicast addresses other than those that start with binary\r
- 000 have a 64-bit interface ID field (i.e., n + m = 64), formatted as\r
- described in section 2.5.1. Global unicast addresses that start with\r
- binary 000 have no such constraint on the size or structure of the\r
- interface ID field.\r
-\r
- Examples of global unicast addresses that start with binary 000 are\r
- the IPv6 address with embedded IPv4 addresses described in section\r
- 2.5.5 and the IPv6 address containing encoded NSAP addresses\r
- specified in [NSAP]. An example of global addresses starting with a\r
- binary value other than 000 (and therefore having a 64-bit interface\r
- ID field) can be found in [AGGR].\r
-\r
-2.5.5 IPv6 Addresses with Embedded IPv4 Addresses\r
-\r
- The IPv6 transition mechanisms [TRAN] include a technique for hosts\r
- and routers to dynamically tunnel IPv6 packets over IPv4 routing\r
- infrastructure. IPv6 nodes that use this technique are assigned\r
- special IPv6 unicast addresses that carry a global IPv4 address in\r
- the low-order 32 bits. This type of address is termed an "IPv4-\r
- compatible IPv6 address" and has the format:\r
-\r
- | 80 bits | 16 | 32 bits |\r
- +--------------------------------------+--------------------------+\r
- |0000..............................0000|0000| IPv4 address |\r
- +--------------------------------------+----+---------------------+\r
-\r
- Note: The IPv4 address used in the "IPv4-compatible IPv6 address"\r
- must be a globally-unique IPv4 unicast address.\r
-\r
- A second type of IPv6 address which holds an embedded IPv4 address is\r
- also defined. This address type is used to represent the addresses\r
- of IPv4 nodes as IPv6 addresses. This type of address is termed an\r
- "IPv4-mapped IPv6 address" and has the format:\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 10]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- | 80 bits | 16 | 32 bits |\r
- +--------------------------------------+--------------------------+\r
- |0000..............................0000|FFFF| IPv4 address |\r
- +--------------------------------------+----+---------------------+\r
-\r
-2.5.6 Local-Use IPv6 Unicast Addresses\r
-\r
- There are two types of local-use unicast addresses defined. These\r
- are Link-Local and Site-Local. The Link-Local is for use on a single\r
- link and the Site-Local is for use in a single site. Link-Local\r
- addresses have the following format:\r
-\r
- | 10 |\r
- | bits | 54 bits | 64 bits |\r
- +----------+-------------------------+----------------------------+\r
- |1111111010| 0 | interface ID |\r
- +----------+-------------------------+----------------------------+\r
-\r
- Link-Local addresses are designed to be used for addressing on a\r
- single link for purposes such as automatic address configuration,\r
- neighbor discovery, or when no routers are present.\r
-\r
- Routers must not forward any packets with link-local source or\r
- destination addresses to other links.\r
-\r
- Site-Local addresses have the following format:\r
-\r
- | 10 |\r
- | bits | 54 bits | 64 bits |\r
- +----------+-------------------------+----------------------------+\r
- |1111111011| subnet ID | interface ID |\r
- +----------+-------------------------+----------------------------+\r
-\r
- Site-local addresses are designed to be used for addressing inside of\r
- a site without the need for a global prefix. Although a subnet ID\r
- may be up to 54-bits long, it is expected that globally-connected\r
- sites will use the same subnet IDs for site-local and global\r
- prefixes.\r
-\r
- Routers must not forward any packets with site-local source or\r
- destination addresses outside of the site.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 11]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-2.6 Anycast Addresses\r
-\r
- An IPv6 anycast address is an address that is assigned to more than\r
- one interface (typically belonging to different nodes), with the\r
- property that a packet sent to an anycast address is routed to the\r
- "nearest" interface having that address, according to the routing\r
- protocols' measure of distance.\r
-\r
- Anycast addresses are allocated from the unicast address space, using\r
- any of the defined unicast address formats. Thus, anycast addresses\r
- are syntactically indistinguishable from unicast addresses. When a\r
- unicast address is assigned to more than one interface, thus turning\r
- it into an anycast address, the nodes to which the address is\r
- assigned must be explicitly configured to know that it is an anycast\r
- address.\r
-\r
- For any assigned anycast address, there is a longest prefix P of that\r
- address that identifies the topological region in which all\r
- interfaces belonging to that anycast address reside. Within the\r
- region identified by P, the anycast address must be maintained as a\r
- separate entry in the routing system (commonly referred to as a "host\r
- route"); outside the region identified by P, the anycast address may\r
- be aggregated into the routing entry for prefix P.\r
-\r
- Note that in the worst case, the prefix P of an anycast set may be\r
- the null prefix, i.e., the members of the set may have no topological\r
- locality. In that case, the anycast address must be maintained as a\r
- separate routing entry throughout the entire internet, which presents\r
- a severe scaling limit on how many such "global" anycast sets may be\r
- supported. Therefore, it is expected that support for global anycast\r
- sets may be unavailable or very restricted.\r
-\r
- One expected use of anycast addresses is to identify the set of\r
- routers belonging to an organization providing internet service.\r
- Such addresses could be used as intermediate addresses in an IPv6\r
- Routing header, to cause a packet to be delivered via a particular\r
- service provider or sequence of service providers.\r
-\r
- Some other possible uses are to identify the set of routers attached\r
- to a particular subnet, or the set of routers providing entry into a\r
- particular routing domain.\r
-\r
- There is little experience with widespread, arbitrary use of internet\r
- anycast addresses, and some known complications and hazards when\r
- using them in their full generality [ANYCST]. Until more experience\r
- has been gained and solutions are specified, the following\r
- restrictions are imposed on IPv6 anycast addresses:\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 12]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- o An anycast address must not be used as the source address of an\r
- IPv6 packet.\r
-\r
- o An anycast address must not be assigned to an IPv6 host, that is,\r
- it may be assigned to an IPv6 router only.\r
-\r
-2.6.1 Required Anycast Address\r
-\r
- The Subnet-Router anycast address is predefined. Its format is as\r
- follows:\r
-\r
- | n bits | 128-n bits |\r
- +------------------------------------------------+----------------+\r
- | subnet prefix | 00000000000000 |\r
- +------------------------------------------------+----------------+\r
-\r
- The "subnet prefix" in an anycast address is the prefix which\r
- identifies a specific link. This anycast address is syntactically\r
- the same as a unicast address for an interface on the link with the\r
- interface identifier set to zero.\r
-\r
- Packets sent to the Subnet-Router anycast address will be delivered\r
- to one router on the subnet. All routers are required to support the\r
- Subnet-Router anycast addresses for the subnets to which they have\r
- interfaces.\r
-\r
- The subnet-router anycast address is intended to be used for\r
- applications where a node needs to communicate with any one of the\r
- set of routers.\r
-\r
-2.7 Multicast Addresses\r
-\r
- An IPv6 multicast address is an identifier for a group of interfaces\r
- (typically on different nodes). An interface may belong to any\r
- number of multicast groups. Multicast addresses have the following\r
- format:\r
-\r
- | 8 | 4 | 4 | 112 bits |\r
- +------ -+----+----+---------------------------------------------+\r
- |11111111|flgs|scop| group ID |\r
- +--------+----+----+---------------------------------------------+\r
-\r
- binary 11111111 at the start of the address identifies the\r
- address as being a multicast address.\r
-\r
- +-+-+-+-+\r
- flgs is a set of 4 flags: |0|0|0|T|\r
- +-+-+-+-+\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 13]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- The high-order 3 flags are reserved, and must be initialized\r
- to 0.\r
-\r
- T = 0 indicates a permanently-assigned ("well-known")\r
- multicast address, assigned by the Internet Assigned Number\r
- Authority (IANA).\r
-\r
- T = 1 indicates a non-permanently-assigned ("transient")\r
- multicast address.\r
-\r
- scop is a 4-bit multicast scope value used to limit the scope\r
- of the multicast group. The values are:\r
-\r
- 0 reserved\r
- 1 interface-local scope\r
- 2 link-local scope\r
- 3 reserved\r
- 4 admin-local scope\r
- 5 site-local scope\r
- 6 (unassigned)\r
- 7 (unassigned)\r
- 8 organization-local scope\r
- 9 (unassigned)\r
- A (unassigned)\r
- B (unassigned)\r
- C (unassigned)\r
- D (unassigned)\r
- E global scope\r
- F reserved\r
-\r
- interface-local scope spans only a single interface on a\r
- node, and is useful only for loopback transmission of\r
- multicast.\r
-\r
- link-local and site-local multicast scopes span the same\r
- topological regions as the corresponding unicast scopes.\r
-\r
- admin-local scope is the smallest scope that must be\r
- administratively configured, i.e., not automatically derived\r
- from physical connectivity or other, non- multicast-related\r
- configuration.\r
-\r
- organization-local scope is intended to span multiple sites\r
- belonging to a single organization.\r
-\r
- scopes labeled "(unassigned)" are available for\r
- administrators to define additional multicast regions.\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 14]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- group ID identifies the multicast group, either permanent or\r
- transient, within the given scope.\r
-\r
- The "meaning" of a permanently-assigned multicast address is\r
- independent of the scope value. For example, if the "NTP servers\r
- group" is assigned a permanent multicast address with a group ID of\r
- 101 (hex), then:\r
-\r
- FF01:0:0:0:0:0:0:101 means all NTP servers on the same interface\r
- (i.e., the same node) as the sender.\r
-\r
- FF02:0:0:0:0:0:0:101 means all NTP servers on the same link as the\r
- sender.\r
-\r
- FF05:0:0:0:0:0:0:101 means all NTP servers in the same site as the\r
- sender.\r
-\r
- FF0E:0:0:0:0:0:0:101 means all NTP servers in the internet.\r
-\r
- Non-permanently-assigned multicast addresses are meaningful only\r
- within a given scope. For example, a group identified by the non-\r
- permanent, site-local multicast address FF15:0:0:0:0:0:0:101 at one\r
- site bears no relationship to a group using the same address at a\r
- different site, nor to a non-permanent group using the same group ID\r
- with different scope, nor to a permanent group with the same group\r
- ID.\r
-\r
- Multicast addresses must not be used as source addresses in IPv6\r
- packets or appear in any Routing header.\r
-\r
- Routers must not forward any multicast packets beyond of the scope\r
- indicated by the scop field in the destination multicast address.\r
-\r
- Nodes must not originate a packet to a multicast address whose scop\r
- field contains the reserved value 0; if such a packet is received, it\r
- must be silently dropped. Nodes should not originate a packet to a\r
- multicast address whose scop field contains the reserved value F; if\r
- such a packet is sent or received, it must be treated the same as\r
- packets destined to a global (scop E) multicast address.\r
-\r
-2.7.1 Pre-Defined Multicast Addresses\r
-\r
- The following well-known multicast addresses are pre-defined. The\r
- group ID's defined in this section are defined for explicit scope\r
- values.\r
-\r
- Use of these group IDs for any other scope values, with the T flag\r
- equal to 0, is not allowed.\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 15]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- Reserved Multicast Addresses: FF00:0:0:0:0:0:0:0\r
- FF01:0:0:0:0:0:0:0\r
- FF02:0:0:0:0:0:0:0\r
- FF03:0:0:0:0:0:0:0\r
- FF04:0:0:0:0:0:0:0\r
- FF05:0:0:0:0:0:0:0\r
- FF06:0:0:0:0:0:0:0\r
- FF07:0:0:0:0:0:0:0\r
- FF08:0:0:0:0:0:0:0\r
- FF09:0:0:0:0:0:0:0\r
- FF0A:0:0:0:0:0:0:0\r
- FF0B:0:0:0:0:0:0:0\r
- FF0C:0:0:0:0:0:0:0\r
- FF0D:0:0:0:0:0:0:0\r
- FF0E:0:0:0:0:0:0:0\r
- FF0F:0:0:0:0:0:0:0\r
-\r
- The above multicast addresses are reserved and shall never be\r
- assigned to any multicast group.\r
-\r
- All Nodes Addresses: FF01:0:0:0:0:0:0:1\r
- FF02:0:0:0:0:0:0:1\r
-\r
- The above multicast addresses identify the group of all IPv6 nodes,\r
- within scope 1 (interface-local) or 2 (link-local).\r
-\r
- All Routers Addresses: FF01:0:0:0:0:0:0:2\r
- FF02:0:0:0:0:0:0:2\r
- FF05:0:0:0:0:0:0:2\r
-\r
- The above multicast addresses identify the group of all IPv6 routers,\r
- within scope 1 (interface-local), 2 (link-local), or 5 (site-local).\r
-\r
- Solicited-Node Address: FF02:0:0:0:0:1:FFXX:XXXX\r
-\r
- Solicited-node multicast address are computed as a function of a\r
- node's unicast and anycast addresses. A solicited-node multicast\r
- address is formed by taking the low-order 24 bits of an address\r
- (unicast or anycast) and appending those bits to the prefix\r
- FF02:0:0:0:0:1:FF00::/104 resulting in a multicast address in the\r
- range\r
-\r
- FF02:0:0:0:0:1:FF00:0000\r
-\r
- to\r
-\r
- FF02:0:0:0:0:1:FFFF:FFFF\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 16]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- For example, the solicited node multicast address corresponding to\r
- the IPv6 address 4037::01:800:200E:8C6C is FF02::1:FF0E:8C6C. IPv6\r
- addresses that differ only in the high-order bits, e.g., due to\r
- multiple high-order prefixes associated with different aggregations,\r
- will map to the same solicited-node address thereby, reducing the\r
- number of multicast addresses a node must join.\r
-\r
- A node is required to compute and join (on the appropriate interface)\r
- the associated Solicited-Node multicast addresses for every unicast\r
- and anycast address it is assigned.\r
-\r
-2.8 A Node's Required Addresses\r
-\r
- A host is required to recognize the following addresses as\r
- identifying itself:\r
-\r
- o Its required Link-Local Address for each interface.\r
- o Any additional Unicast and Anycast Addresses that have been\r
- configured for the node's interfaces (manually or\r
- automatically).\r
- o The loopback address.\r
- o The All-Nodes Multicast Addresses defined in section 2.7.1.\r
- o The Solicited-Node Multicast Address for each of its unicast\r
- and anycast addresses.\r
- o Multicast Addresses of all other groups to which the node\r
- belongs.\r
-\r
- A router is required to recognize all addresses that a host is\r
- required to recognize, plus the following addresses as identifying\r
- itself:\r
-\r
- o The Subnet-Router Anycast Addresses for all interfaces for\r
- which it is configured to act as a router.\r
- o All other Anycast Addresses with which the router has been\r
- configured.\r
- o The All-Routers Multicast Addresses defined in section 2.7.1.\r
-\r
-3. Security Considerations\r
-\r
- IPv6 addressing documents do not have any direct impact on Internet\r
- infrastructure security. Authentication of IPv6 packets is defined\r
- in [AUTH].\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 17]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-4. IANA Considerations\r
-\r
- The table and notes at http://www.isi.edu/in-\r
- notes/iana/assignments/ipv6-address-space.txt should be replaced with\r
- the following:\r
-\r
- INTERNET PROTOCOL VERSION 6 ADDRESS SPACE\r
-\r
- The initial assignment of IPv6 address space is as follows:\r
-\r
- Allocation Prefix Fraction of\r
- (binary) Address Space\r
- ----------------------------------- -------- -------------\r
- Unassigned (see Note 1 below) 0000 0000 1/256\r
- Unassigned 0000 0001 1/256\r
- Reserved for NSAP Allocation 0000 001 1/128 [RFC1888]\r
- Unassigned 0000 01 1/64\r
- Unassigned 0000 1 1/32\r
- Unassigned 0001 1/16\r
- Global Unicast 001 1/8 [RFC2374]\r
- Unassigned 010 1/8\r
- Unassigned 011 1/8\r
- Unassigned 100 1/8\r
- Unassigned 101 1/8\r
- Unassigned 110 1/8\r
- Unassigned 1110 1/16\r
- Unassigned 1111 0 1/32\r
- Unassigned 1111 10 1/64\r
- Unassigned 1111 110 1/128\r
- Unassigned 1111 1110 0 1/512\r
- Link-Local Unicast Addresses 1111 1110 10 1/1024\r
- Site-Local Unicast Addresses 1111 1110 11 1/1024\r
- Multicast Addresses 1111 1111 1/256\r
-\r
- Notes:\r
-\r
- 1. The "unspecified address", the "loopback address", and the IPv6\r
- Addresses with Embedded IPv4 Addresses are assigned out of the\r
- 0000 0000 binary prefix space.\r
-\r
- 2. For now, IANA should limit its allocation of IPv6 unicast address\r
- space to the range of addresses that start with binary value 001.\r
- The rest of the global unicast address space (approximately 85% of\r
- the IPv6 address space) is reserved for future definition and use,\r
- and is not to be assigned by IANA at this time.\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 18]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-5. References\r
-\r
-5.1 Normative References\r
-\r
- [IPV6] Deering, S. and R. Hinden, "Internet Protocol, Version 6\r
- (IPv6) Specification", RFC 2460, December 1998.\r
-\r
- [RFC2026] Bradner, S., "The Internet Standards Process -- Revision\r
- 3", BCP 9 , RFC 2026, October 1996.\r
-\r
-5.2 Informative References\r
-\r
- [ANYCST] Partridge, C., Mendez, T. and W. Milliken, "Host Anycasting\r
- Service", RFC 1546, November 1993.\r
-\r
- [AUTH] Kent, S. and R. Atkinson, "IP Authentication Header", RFC\r
- 2402, November 1998.\r
-\r
- [AGGR] Hinden, R., O'Dell, M. and S. Deering, "An Aggregatable\r
- Global Unicast Address Format", RFC 2374, July 1998.\r
-\r
- [CIDR] Fuller, V., Li, T., Yu, J. and K. Varadhan, "Classless\r
- Inter-Domain Routing (CIDR): An Address Assignment and\r
- Aggregation Strategy", RFC 1519, September 1993.\r
-\r
- [ETHER] Crawford, M., "Transmission of IPv6 Packets over Ethernet\r
- Networks", RFC 2464, December 1998.\r
-\r
- [EUI64] IEEE, "Guidelines for 64-bit Global Identifier (EUI-64)\r
- Registration Authority",\r
- http://standards.ieee.org/regauth/oui/tutorials/EUI64.html,\r
- March 1997.\r
-\r
- [FDDI] Crawford, M., "Transmission of IPv6 Packets over FDDI\r
- Networks", RFC 2467, December 1998.\r
-\r
- [MASGN] Hinden, R. and S. Deering, "IPv6 Multicast Address\r
- Assignments", RFC 2375, July 1998.\r
-\r
- [NSAP] Bound, J., Carpenter, B., Harrington, D., Houldsworth, J.\r
- and A. Lloyd, "OSI NSAPs and IPv6", RFC 1888, August 1996.\r
-\r
- [PRIV] Narten, T. and R. Draves, "Privacy Extensions for Stateless\r
- Address Autoconfiguration in IPv6", RFC 3041, January 2001.\r
-\r
- [TOKEN] Crawford, M., Narten, T. and S. Thomas, "Transmission of\r
- IPv6 Packets over Token Ring Networks", RFC 2470, December\r
- 1998.\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 19]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- [TRAN] Gilligan, R. and E. Nordmark, "Transition Mechanisms for\r
- IPv6 Hosts and Routers", RFC 2893, August 2000.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 20]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-APPENDIX A: Creating Modified EUI-64 format Interface Identifiers\r
-\r
- Depending on the characteristics of a specific link or node there are\r
- a number of approaches for creating Modified EUI-64 format interface\r
- identifiers. This appendix describes some of these approaches.\r
-\r
-Links or Nodes with IEEE EUI-64 Identifiers\r
-\r
- The only change needed to transform an IEEE EUI-64 identifier to an\r
- interface identifier is to invert the "u" (universal/local) bit. For\r
- example, a globally unique IEEE EUI-64 identifier of the form:\r
-\r
- |0 1|1 3|3 4|4 6|\r
- |0 5|6 1|2 7|8 3|\r
- +----------------+----------------+----------------+----------------+\r
- |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|\r
- +----------------+----------------+----------------+----------------+\r
-\r
- where "c" are the bits of the assigned company_id, "0" is the value\r
- of the universal/local bit to indicate global scope, "g" is\r
- individual/group bit, and "m" are the bits of the manufacturer-\r
- selected extension identifier. The IPv6 interface identifier would\r
- be of the form:\r
-\r
- |0 1|1 3|3 4|4 6|\r
- |0 5|6 1|2 7|8 3|\r
- +----------------+----------------+----------------+----------------+\r
- |cccccc1gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|\r
- +----------------+----------------+----------------+----------------+\r
-\r
- The only change is inverting the value of the universal/local bit.\r
-\r
-Links or Nodes with IEEE 802 48 bit MAC's\r
-\r
- [EUI64] defines a method to create a IEEE EUI-64 identifier from an\r
- IEEE 48bit MAC identifier. This is to insert two octets, with\r
- hexadecimal values of 0xFF and 0xFE, in the middle of the 48 bit MAC\r
- (between the company_id and vendor supplied id). For example, the 48\r
- bit IEEE MAC with global scope:\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 21]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- |0 1|1 3|3 4|\r
- |0 5|6 1|2 7|\r
- +----------------+----------------+----------------+\r
- |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|\r
- +----------------+----------------+----------------+\r
-\r
- where "c" are the bits of the assigned company_id, "0" is the value\r
- of the universal/local bit to indicate global scope, "g" is\r
- individual/group bit, and "m" are the bits of the manufacturer-\r
- selected extension identifier. The interface identifier would be of\r
- the form:\r
-\r
- |0 1|1 3|3 4|4 6|\r
- |0 5|6 1|2 7|8 3|\r
- +----------------+----------------+----------------+----------------+\r
- |cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|\r
- +----------------+----------------+----------------+----------------+\r
-\r
- When IEEE 802 48bit MAC addresses are available (on an interface or a\r
- node), an implementation may use them to create interface identifiers\r
- due to their availability and uniqueness properties.\r
-\r
-Links with Other Kinds of Identifiers\r
-\r
- There are a number of types of links that have link-layer interface\r
- identifiers other than IEEE EIU-64 or IEEE 802 48-bit MACs. Examples\r
- include LocalTalk and Arcnet. The method to create an Modified EUI-\r
- 64 format identifier is to take the link identifier (e.g., the\r
- LocalTalk 8 bit node identifier) and zero fill it to the left. For\r
- example, a LocalTalk 8 bit node identifier of hexadecimal value 0x4F\r
- results in the following interface identifier:\r
-\r
- |0 1|1 3|3 4|4 6|\r
- |0 5|6 1|2 7|8 3|\r
- +----------------+----------------+----------------+----------------+\r
- |0000000000000000|0000000000000000|0000000000000000|0000000001001111|\r
- +----------------+----------------+----------------+----------------+\r
-\r
- Note that this results in the universal/local bit set to "0" to\r
- indicate local scope.\r
-\r
-Links without Identifiers\r
-\r
- There are a number of links that do not have any type of built-in\r
- identifier. The most common of these are serial links and configured\r
- tunnels. Interface identifiers must be chosen that are unique within\r
- a subnet-prefix.\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 22]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- When no built-in identifier is available on a link the preferred\r
- approach is to use a global interface identifier from another\r
- interface or one which is assigned to the node itself. When using\r
- this approach no other interface connecting the same node to the same\r
- subnet-prefix may use the same identifier.\r
-\r
- If there is no global interface identifier available for use on the\r
- link the implementation needs to create a local-scope interface\r
- identifier. The only requirement is that it be unique within a\r
- subnet prefix. There are many possible approaches to select a\r
- subnet-prefix-unique interface identifier. These include:\r
-\r
- Manual Configuration\r
- Node Serial Number\r
- Other node-specific token\r
-\r
- The subnet-prefix-unique interface identifier should be generated in\r
- a manner that it does not change after a reboot of a node or if\r
- interfaces are added or deleted from the node.\r
-\r
- The selection of the appropriate algorithm is link and implementation\r
- dependent. The details on forming interface identifiers are defined\r
- in the appropriate "IPv6 over <link>" specification. It is strongly\r
- recommended that a collision detection algorithm be implemented as\r
- part of any automatic algorithm.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 23]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-APPENDIX B: Changes from RFC-2373\r
-\r
- The following changes were made from RFC-2373 "IP Version 6\r
- Addressing Architecture":\r
-\r
- - Clarified text in section 2.2 to allow "::" to represent one or\r
- more groups of 16 bits of zeros.\r
- - Changed uniqueness requirement of Interface Identifiers from\r
- unique on a link to unique within a subnet prefix. Also added a\r
- recommendation that the same interface identifier not be assigned\r
- to different machines on a link.\r
- - Change site-local format to make the subnet ID field 54-bit long\r
- and remove the 38-bit zero's field.\r
- - Added description of multicast scop values and rules to handle the\r
- reserved scop value 0.\r
- - Revised sections 2.4 and 2.5.6 to simplify and clarify how\r
- different address types are identified. This was done to insure\r
- that implementations do not build in any knowledge about global\r
- unicast format prefixes. Changes include:\r
- o Removed Format Prefix (FP) terminology\r
- o Revised list of address types to only include exceptions to\r
- global unicast and a singe entry that identifies everything\r
- else as Global Unicast.\r
- o Removed list of defined prefix exceptions from section 2.5.6\r
- as it is now the main part of section 2.4.\r
- - Clarified text relating to EUI-64 identifiers to distinguish\r
- between IPv6's "Modified EUI-64 format" identifiers and IEEE EUI-\r
- 64 identifiers.\r
- - Combined the sections on the Global Unicast Addresses and NSAP\r
- Addresses into a single section on Global Unicast Addresses,\r
- generalized the Global Unicast format, and cited [AGGR] and [NSAP]\r
- as examples.\r
- - Reordered sections 2.5.4 and 2.5.5.\r
- - Removed section 2.7.2 Assignment of New IPv6 Multicast Addresses\r
- because this is being redefined elsewhere.\r
- - Added an IANA considerations section that updates the IANA IPv6\r
- address allocations and documents the NSAP and AGGR allocations.\r
- - Added clarification that the "IPv4-compatible IPv6 address" must\r
- use global IPv4 unicast addresses.\r
- - Divided references in to normative and non-normative sections.\r
- - Added reference to [PRIV] in section 2.5.1\r
- - Added clarification that routers must not forward multicast\r
- packets outside of the scope indicated in the multicast address.\r
- - Added clarification that routers must not forward packets with\r
- source address of the unspecified address.\r
- - Added clarification that routers must drop packets received on an\r
- interface with destination address of loopback.\r
- - Clarified the definition of IPv4-mapped addresses.\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 24]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
- - Removed the ABNF Description of Text Representations Appendix.\r
- - Removed the address block reserved for IPX addresses.\r
- - Multicast scope changes:\r
- o Changed name of scope value 1 from "node-local" to\r
- "interface-local"\r
- o Defined scope value 4 as "admin-local"\r
- - Corrected reference to RFC1933 and updated references.\r
- - Many small changes to clarify and make the text more consistent.\r
-\r
-Authors' Addresses\r
-\r
- Robert M. Hinden\r
- Nokia\r
- 313 Fairchild Drive\r
- Mountain View, CA 94043\r
- USA\r
-\r
- Phone: +1 650 625-2004\r
- EMail: hinden@iprg.nokia.com\r
-\r
-\r
- Stephen E. Deering\r
- Cisco Systems, Inc.\r
- 170 West Tasman Drive\r
- San Jose, CA 95134-1706\r
- USA\r
-\r
- Phone: +1 408 527-8213\r
- EMail: deering@cisco.com\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 25]\r
-\f\r
-RFC 3513 IPv6 Addressing Architecture April 2003\r
-\r
-\r
-Full Copyright Statement\r
-\r
- Copyright (C) The Internet Society (2003). All Rights Reserved.\r
-\r
- This document and translations of it may be copied and furnished to\r
- others, and derivative works that comment on or otherwise explain it\r
- or assist in its implementation may be prepared, copied, published\r
- and distributed, in whole or in part, without restriction of any\r
- kind, provided that the above copyright notice and this paragraph are\r
- included on all such copies and derivative works. However, this\r
- document itself may not be modified in any way, such as by removing\r
- the copyright notice or references to the Internet Society or other\r
- Internet organizations, except as needed for the purpose of\r
- developing Internet standards in which case the procedures for\r
- copyrights defined in the Internet Standards process must be\r
- followed, or as required to translate it into languages other than\r
- English.\r
-\r
- The limited permissions granted above are perpetual and will not be\r
- revoked by the Internet Society or its successors or assigns.\r
-\r
- This document and the information contained herein is provided on an\r
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\r
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\r
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\r
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\r
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\r
-\r
-Acknowledgement\r
-\r
- Funding for the RFC Editor function is currently provided by the\r
- Internet Society.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering Standards Track [Page 26]\r
-\f\r
-\r
-\r
+
+
+
+
+
+Network Working Group R. Hinden
+Request for Comments: 3513 Nokia
+Obsoletes: 2373 S. Deering
+Category: Standards Track Cisco Systems
+ April 2003
+
+
+ Internet Protocol Version 6 (IPv6) Addressing Architecture
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+Abstract
+
+ This specification defines the addressing architecture of the IP
+ Version 6 (IPv6) protocol. The document includes the IPv6 addressing
+ model, text representations of IPv6 addresses, definition of IPv6
+ unicast addresses, anycast addresses, and multicast addresses, and an
+ IPv6 node's required addresses.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 1]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+Table of Contents
+
+ 1. Introduction.................................................3
+ 2. IPv6 Addressing..............................................3
+ 2.1 Addressing Model.........................................4
+ 2.2 Text Representation of Addresses.........................4
+ 2.3 Text Representation of Address Prefixes..................5
+ 2.4 Address Type Identification..............................6
+ 2.5 Unicast Addresses........................................7
+ 2.5.1 Interface Identifiers..............................8
+ 2.5.2 The Unspecified Address............................9
+ 2.5.3 The Loopback Address...............................9
+ 2.5.4 Global Unicast Addresses..........................10
+ 2.5.5 IPv6 Addresses with Embedded IPv4 Addresses.......10
+ 2.5.6 Local-use IPv6 Unicast Addresses..................11
+ 2.6 Anycast Addresses.......................................12
+ 2.6.1 Required Anycast Address..........................13
+ 2.7 Multicast Addresses.....................................13
+ 2.7.1 Pre-Defined Multicast Addresses...................15
+ 2.8 A Node's Required Addresses.............................17
+ 3. Security Considerations.....................................17
+ 4. IANA Considerations.........................................18
+ 5. References..................................................19
+ 5.1 Normative References....................................19
+ 5.2 Informative References..................................19
+ APPENDIX A: Creating Modified EUI-64 format Interface IDs......21
+ APPENDIX B: Changes from RFC-2373..............................24
+ Authors' Addresses.............................................25
+ Full Copyright Statement.......................................26
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 2]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+1. Introduction
+
+ This specification defines the addressing architecture of the IP
+ Version 6 (IPv6) protocol. It includes the basic formats for the
+ various types of IPv6 addresses (unicast, anycast, and multicast).
+
+ The authors would like to acknowledge the contributions of Paul
+ Francis, Scott Bradner, Jim Bound, Brian Carpenter, Matt Crawford,
+ Deborah Estrin, Roger Fajman, Bob Fink, Peter Ford, Bob Gilligan,
+ Dimitry Haskin, Tom Harsch, Christian Huitema, Tony Li, Greg
+ Minshall, Thomas Narten, Erik Nordmark, Yakov Rekhter, Bill Simpson,
+ Sue Thomson, Markku Savela, and Larry Masinter.
+
+2. IPv6 Addressing
+
+ IPv6 addresses are 128-bit identifiers for interfaces and sets of
+ interfaces (where "interface" is as defined in section 2 of [IPV6]).
+ There are three types of addresses:
+
+ Unicast: An identifier for a single interface. A packet sent to a
+ unicast address is delivered to the interface identified
+ by that address.
+
+ Anycast: An identifier for a set of interfaces (typically belonging
+ to different nodes). A packet sent to an anycast address
+ is delivered to one of the interfaces identified by that
+ address (the "nearest" one, according to the routing
+ protocols' measure of distance).
+
+ Multicast: An identifier for a set of interfaces (typically belonging
+ to different nodes). A packet sent to a multicast address
+ is delivered to all interfaces identified by that address.
+
+ There are no broadcast addresses in IPv6, their function being
+ superseded by multicast addresses.
+
+ In this document, fields in addresses are given a specific name, for
+ example "subnet". When this name is used with the term "ID" for
+ identifier after the name (e.g., "subnet ID"), it refers to the
+ contents of the named field. When it is used with the term "prefix"
+ (e.g., "subnet prefix") it refers to all of the address from the left
+ up to and including this field.
+
+ In IPv6, all zeros and all ones are legal values for any field,
+ unless specifically excluded. Specifically, prefixes may contain, or
+ end with, zero-valued fields.
+
+
+
+
+
+Hinden & Deering Standards Track [Page 3]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+2.1 Addressing Model
+
+ IPv6 addresses of all types are assigned to interfaces, not nodes.
+ An IPv6 unicast address refers to a single interface. Since each
+ interface belongs to a single node, any of that node's interfaces'
+ unicast addresses may be used as an identifier for the node.
+
+ All interfaces are required to have at least one link-local unicast
+ address (see section 2.8 for additional required addresses). A
+ single interface may also have multiple IPv6 addresses of any type
+ (unicast, anycast, and multicast) or scope. Unicast addresses with
+ scope greater than link-scope are not needed for interfaces that are
+ not used as the origin or destination of any IPv6 packets to or from
+ non-neighbors. This is sometimes convenient for point-to-point
+ interfaces. There is one exception to this addressing model:
+
+ A unicast address or a set of unicast addresses may be assigned to
+ multiple physical interfaces if the implementation treats the
+ multiple physical interfaces as one interface when presenting it
+ to the internet layer. This is useful for load-sharing over
+ multiple physical interfaces.
+
+ Currently IPv6 continues the IPv4 model that a subnet prefix is
+ associated with one link. Multiple subnet prefixes may be assigned
+ to the same link.
+
+2.2 Text Representation of Addresses
+
+ There are three conventional forms for representing IPv6 addresses as
+ text strings:
+
+ 1. The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the
+ hexadecimal values of the eight 16-bit pieces of the address.
+
+ Examples:
+
+ FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
+
+ 1080:0:0:0:8:800:200C:417A
+
+ Note that it is not necessary to write the leading zeros in an
+ individual field, but there must be at least one numeral in every
+ field (except for the case described in 2.).
+
+ 2. Due to some methods of allocating certain styles of IPv6
+ addresses, it will be common for addresses to contain long strings
+ of zero bits. In order to make writing addresses containing zero
+ bits easier a special syntax is available to compress the zeros.
+
+
+
+Hinden & Deering Standards Track [Page 4]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ The use of "::" indicates one or more groups of 16 bits of zeros.
+ The "::" can only appear once in an address. The "::" can also be
+ used to compress leading or trailing zeros in an address.
+
+ For example, the following addresses:
+
+ 1080:0:0:0:8:800:200C:417A a unicast address
+ FF01:0:0:0:0:0:0:101 a multicast address
+ 0:0:0:0:0:0:0:1 the loopback address
+ 0:0:0:0:0:0:0:0 the unspecified addresses
+
+ may be represented as:
+
+ 1080::8:800:200C:417A a unicast address
+ FF01::101 a multicast address
+ ::1 the loopback address
+ :: the unspecified addresses
+
+ 3. An alternative form that is sometimes more convenient when dealing
+ with a mixed environment of IPv4 and IPv6 nodes is
+ x:x:x:x:x:x:d.d.d.d, where the 'x's are the hexadecimal values of
+ the six high-order 16-bit pieces of the address, and the 'd's are
+ the decimal values of the four low-order 8-bit pieces of the
+ address (standard IPv4 representation). Examples:
+
+ 0:0:0:0:0:0:13.1.68.3
+
+ 0:0:0:0:0:FFFF:129.144.52.38
+
+ or in compressed form:
+
+ ::13.1.68.3
+
+ ::FFFF:129.144.52.38
+
+2.3 Text Representation of Address Prefixes
+
+ The text representation of IPv6 address prefixes is similar to the
+ way IPv4 addresses prefixes are written in CIDR notation [CIDR]. An
+ IPv6 address prefix is represented by the notation:
+
+ ipv6-address/prefix-length
+
+ where
+
+ ipv6-address is an IPv6 address in any of the notations listed
+ in section 2.2.
+
+
+
+
+Hinden & Deering Standards Track [Page 5]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ prefix-length is a decimal value specifying how many of the
+ leftmost contiguous bits of the address comprise
+ the prefix.
+
+ For example, the following are legal representations of the 60-bit
+ prefix 12AB00000000CD3 (hexadecimal):
+
+ 12AB:0000:0000:CD30:0000:0000:0000:0000/60
+ 12AB::CD30:0:0:0:0/60
+ 12AB:0:0:CD30::/60
+
+ The following are NOT legal representations of the above prefix:
+
+ 12AB:0:0:CD3/60 may drop leading zeros, but not trailing zeros,
+ within any 16-bit chunk of the address
+
+ 12AB::CD30/60 address to left of "/" expands to
+ 12AB:0000:0000:0000:0000:000:0000:CD30
+
+ 12AB::CD3/60 address to left of "/" expands to
+ 12AB:0000:0000:0000:0000:000:0000:0CD3
+
+ When writing both a node address and a prefix of that node address
+ (e.g., the node's subnet prefix), the two can combined as follows:
+
+ the node address 12AB:0:0:CD30:123:4567:89AB:CDEF
+ and its subnet number 12AB:0:0:CD30::/60
+
+ can be abbreviated as 12AB:0:0:CD30:123:4567:89AB:CDEF/60
+
+2.4 Address Type Identification
+
+ The type of an IPv6 address is identified by the high-order bits of
+ the address, as follows:
+
+ Address type Binary prefix IPv6 notation Section
+ ------------ ------------- ------------- -------
+ Unspecified 00...0 (128 bits) ::/128 2.5.2
+ Loopback 00...1 (128 bits) ::1/128 2.5.3
+ Multicast 11111111 FF00::/8 2.7
+ Link-local unicast 1111111010 FE80::/10 2.5.6
+ Site-local unicast 1111111011 FEC0::/10 2.5.6
+ Global unicast (everything else)
+
+ Anycast addresses are taken from the unicast address spaces (of any
+ scope) and are not syntactically distinguishable from unicast
+ addresses.
+
+
+
+
+Hinden & Deering Standards Track [Page 6]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ The general format of global unicast addresses is described in
+ section 2.5.4. Some special-purpose subtypes of global unicast
+ addresses which contain embedded IPv4 addresses (for the purposes of
+ IPv4-IPv6 interoperation) are described in section 2.5.5.
+
+ Future specifications may redefine one or more sub-ranges of the
+ global unicast space for other purposes, but unless and until that
+ happens, implementations must treat all addresses that do not start
+ with any of the above-listed prefixes as global unicast addresses.
+
+2.5 Unicast Addresses
+
+ IPv6 unicast addresses are aggregable with prefixes of arbitrary
+ bit-length similar to IPv4 addresses under Classless Interdomain
+ Routing.
+
+ There are several types of unicast addresses in IPv6, in particular
+ global unicast, site-local unicast, and link-local unicast. There
+ are also some special-purpose subtypes of global unicast, such as
+ IPv6 addresses with embedded IPv4 addresses or encoded NSAP
+ addresses. Additional address types or subtypes can be defined in
+ the future.
+
+ IPv6 nodes may have considerable or little knowledge of the internal
+ structure of the IPv6 address, depending on the role the node plays
+ (for instance, host versus router). At a minimum, a node may
+ consider that unicast addresses (including its own) have no internal
+ structure:
+
+ | 128 bits |
+ +-----------------------------------------------------------------+
+ | node address |
+ +-----------------------------------------------------------------+
+
+ A slightly sophisticated host (but still rather simple) may
+ additionally be aware of subnet prefix(es) for the link(s) it is
+ attached to, where different addresses may have different values for
+ n:
+
+ | n bits | 128-n bits |
+ +------------------------------------------------+----------------+
+ | subnet prefix | interface ID |
+ +------------------------------------------------+----------------+
+
+ Though a very simple router may have no knowledge of the internal
+ structure of IPv6 unicast addresses, routers will more generally have
+ knowledge of one or more of the hierarchical boundaries for the
+ operation of routing protocols. The known boundaries will differ
+
+
+
+Hinden & Deering Standards Track [Page 7]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ from router to router, depending on what positions the router holds
+ in the routing hierarchy.
+
+2.5.1 Interface Identifiers
+
+ Interface identifiers in IPv6 unicast addresses are used to identify
+ interfaces on a link. They are required to be unique within a subnet
+ prefix. It is recommended that the same interface identifier not be
+ assigned to different nodes on a link. They may also be unique over
+ a broader scope. In some cases an interface's identifier will be
+ derived directly from that interface's link-layer address. The same
+ interface identifier may be used on multiple interfaces on a single
+ node, as long as they are attached to different subnets.
+
+ Note that the uniqueness of interface identifiers is independent of
+ the uniqueness of IPv6 addresses. For example, a global unicast
+ address may be created with a non-global scope interface identifier
+ and a site-local address may be created with a global scope interface
+ identifier.
+
+ For all unicast addresses, except those that start with binary value
+ 000, Interface IDs are required to be 64 bits long and to be
+ constructed in Modified EUI-64 format.
+
+ Modified EUI-64 format based Interface identifiers may have global
+ scope when derived from a global token (e.g., IEEE 802 48-bit MAC or
+ IEEE EUI-64 identifiers [EUI64]) or may have local scope where a
+ global token is not available (e.g., serial links, tunnel end-points,
+ etc.) or where global tokens are undesirable (e.g., temporary tokens
+ for privacy [PRIV]).
+
+ Modified EUI-64 format interface identifiers are formed by inverting
+ the "u" bit (universal/local bit in IEEE EUI-64 terminology) when
+ forming the interface identifier from IEEE EUI-64 identifiers. In
+ the resulting Modified EUI-64 format the "u" bit is set to one (1) to
+ indicate global scope, and it is set to zero (0) to indicate local
+ scope. The first three octets in binary of an IEEE EUI-64 identifier
+ are as follows:
+
+ 0 0 0 1 1 2
+ |0 7 8 5 6 3|
+ +----+----+----+----+----+----+
+ |cccc|ccug|cccc|cccc|cccc|cccc|
+ +----+----+----+----+----+----+
+
+ written in Internet standard bit-order , where "u" is the
+ universal/local bit, "g" is the individual/group bit, and "c" are the
+ bits of the company_id. Appendix A: "Creating Modified EUI-64 format
+
+
+
+Hinden & Deering Standards Track [Page 8]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ Interface Identifiers" provides examples on the creation of Modified
+ EUI-64 format based interface identifiers.
+
+ The motivation for inverting the "u" bit when forming an interface
+ identifier is to make it easy for system administrators to hand
+ configure non-global identifiers when hardware tokens are not
+ available. This is expected to be case for serial links, tunnel end-
+ points, etc. The alternative would have been for these to be of the
+ form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler 1, 2,
+ etc.
+
+ The use of the universal/local bit in the Modified EUI-64 format
+ identifier is to allow development of future technology that can take
+ advantage of interface identifiers with global scope.
+
+ The details of forming interface identifiers are defined in the
+ appropriate "IPv6 over <link>" specification such as "IPv6 over
+ Ethernet" [ETHER], "IPv6 over FDDI" [FDDI], etc.
+
+2.5.2 The Unspecified Address
+
+ The address 0:0:0:0:0:0:0:0 is called the unspecified address. It
+ must never be assigned to any node. It indicates the absence of an
+ address. One example of its use is in the Source Address field of
+ any IPv6 packets sent by an initializing host before it has learned
+ its own address.
+
+ The unspecified address must not be used as the destination address
+ of IPv6 packets or in IPv6 Routing Headers. An IPv6 packet with a
+ source address of unspecified must never be forwarded by an IPv6
+ router.
+
+2.5.3 The Loopback Address
+
+ The unicast address 0:0:0:0:0:0:0:1 is called the loopback address.
+ It may be used by a node to send an IPv6 packet to itself. It may
+ never be assigned to any physical interface. It is treated as
+ having link-local scope, and may be thought of as the link-local
+ unicast address of a virtual interface (typically called "the
+ loopback interface") to an imaginary link that goes nowhere.
+
+ The loopback address must not be used as the source address in IPv6
+ packets that are sent outside of a single node. An IPv6 packet with
+ a destination address of loopback must never be sent outside of a
+ single node and must never be forwarded by an IPv6 router. A packet
+ received on an interface with destination address of loopback must be
+ dropped.
+
+
+
+
+Hinden & Deering Standards Track [Page 9]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+2.5.4 Global Unicast Addresses
+
+ The general format for IPv6 global unicast addresses is as follows:
+
+ | n bits | m bits | 128-n-m bits |
+ +------------------------+-----------+----------------------------+
+ | global routing prefix | subnet ID | interface ID |
+ +------------------------+-----------+----------------------------+
+
+ where the global routing prefix is a (typically hierarchically-
+ structured) value assigned to a site (a cluster of subnets/links),
+ the subnet ID is an identifier of a link within the site, and the
+ interface ID is as defined in section 2.5.1.
+
+ All global unicast addresses other than those that start with binary
+ 000 have a 64-bit interface ID field (i.e., n + m = 64), formatted as
+ described in section 2.5.1. Global unicast addresses that start with
+ binary 000 have no such constraint on the size or structure of the
+ interface ID field.
+
+ Examples of global unicast addresses that start with binary 000 are
+ the IPv6 address with embedded IPv4 addresses described in section
+ 2.5.5 and the IPv6 address containing encoded NSAP addresses
+ specified in [NSAP]. An example of global addresses starting with a
+ binary value other than 000 (and therefore having a 64-bit interface
+ ID field) can be found in [AGGR].
+
+2.5.5 IPv6 Addresses with Embedded IPv4 Addresses
+
+ The IPv6 transition mechanisms [TRAN] include a technique for hosts
+ and routers to dynamically tunnel IPv6 packets over IPv4 routing
+ infrastructure. IPv6 nodes that use this technique are assigned
+ special IPv6 unicast addresses that carry a global IPv4 address in
+ the low-order 32 bits. This type of address is termed an "IPv4-
+ compatible IPv6 address" and has the format:
+
+ | 80 bits | 16 | 32 bits |
+ +--------------------------------------+--------------------------+
+ |0000..............................0000|0000| IPv4 address |
+ +--------------------------------------+----+---------------------+
+
+ Note: The IPv4 address used in the "IPv4-compatible IPv6 address"
+ must be a globally-unique IPv4 unicast address.
+
+ A second type of IPv6 address which holds an embedded IPv4 address is
+ also defined. This address type is used to represent the addresses
+ of IPv4 nodes as IPv6 addresses. This type of address is termed an
+ "IPv4-mapped IPv6 address" and has the format:
+
+
+
+Hinden & Deering Standards Track [Page 10]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ | 80 bits | 16 | 32 bits |
+ +--------------------------------------+--------------------------+
+ |0000..............................0000|FFFF| IPv4 address |
+ +--------------------------------------+----+---------------------+
+
+2.5.6 Local-Use IPv6 Unicast Addresses
+
+ There are two types of local-use unicast addresses defined. These
+ are Link-Local and Site-Local. The Link-Local is for use on a single
+ link and the Site-Local is for use in a single site. Link-Local
+ addresses have the following format:
+
+ | 10 |
+ | bits | 54 bits | 64 bits |
+ +----------+-------------------------+----------------------------+
+ |1111111010| 0 | interface ID |
+ +----------+-------------------------+----------------------------+
+
+ Link-Local addresses are designed to be used for addressing on a
+ single link for purposes such as automatic address configuration,
+ neighbor discovery, or when no routers are present.
+
+ Routers must not forward any packets with link-local source or
+ destination addresses to other links.
+
+ Site-Local addresses have the following format:
+
+ | 10 |
+ | bits | 54 bits | 64 bits |
+ +----------+-------------------------+----------------------------+
+ |1111111011| subnet ID | interface ID |
+ +----------+-------------------------+----------------------------+
+
+ Site-local addresses are designed to be used for addressing inside of
+ a site without the need for a global prefix. Although a subnet ID
+ may be up to 54-bits long, it is expected that globally-connected
+ sites will use the same subnet IDs for site-local and global
+ prefixes.
+
+ Routers must not forward any packets with site-local source or
+ destination addresses outside of the site.
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 11]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+2.6 Anycast Addresses
+
+ An IPv6 anycast address is an address that is assigned to more than
+ one interface (typically belonging to different nodes), with the
+ property that a packet sent to an anycast address is routed to the
+ "nearest" interface having that address, according to the routing
+ protocols' measure of distance.
+
+ Anycast addresses are allocated from the unicast address space, using
+ any of the defined unicast address formats. Thus, anycast addresses
+ are syntactically indistinguishable from unicast addresses. When a
+ unicast address is assigned to more than one interface, thus turning
+ it into an anycast address, the nodes to which the address is
+ assigned must be explicitly configured to know that it is an anycast
+ address.
+
+ For any assigned anycast address, there is a longest prefix P of that
+ address that identifies the topological region in which all
+ interfaces belonging to that anycast address reside. Within the
+ region identified by P, the anycast address must be maintained as a
+ separate entry in the routing system (commonly referred to as a "host
+ route"); outside the region identified by P, the anycast address may
+ be aggregated into the routing entry for prefix P.
+
+ Note that in the worst case, the prefix P of an anycast set may be
+ the null prefix, i.e., the members of the set may have no topological
+ locality. In that case, the anycast address must be maintained as a
+ separate routing entry throughout the entire internet, which presents
+ a severe scaling limit on how many such "global" anycast sets may be
+ supported. Therefore, it is expected that support for global anycast
+ sets may be unavailable or very restricted.
+
+ One expected use of anycast addresses is to identify the set of
+ routers belonging to an organization providing internet service.
+ Such addresses could be used as intermediate addresses in an IPv6
+ Routing header, to cause a packet to be delivered via a particular
+ service provider or sequence of service providers.
+
+ Some other possible uses are to identify the set of routers attached
+ to a particular subnet, or the set of routers providing entry into a
+ particular routing domain.
+
+ There is little experience with widespread, arbitrary use of internet
+ anycast addresses, and some known complications and hazards when
+ using them in their full generality [ANYCST]. Until more experience
+ has been gained and solutions are specified, the following
+ restrictions are imposed on IPv6 anycast addresses:
+
+
+
+
+Hinden & Deering Standards Track [Page 12]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ o An anycast address must not be used as the source address of an
+ IPv6 packet.
+
+ o An anycast address must not be assigned to an IPv6 host, that is,
+ it may be assigned to an IPv6 router only.
+
+2.6.1 Required Anycast Address
+
+ The Subnet-Router anycast address is predefined. Its format is as
+ follows:
+
+ | n bits | 128-n bits |
+ +------------------------------------------------+----------------+
+ | subnet prefix | 00000000000000 |
+ +------------------------------------------------+----------------+
+
+ The "subnet prefix" in an anycast address is the prefix which
+ identifies a specific link. This anycast address is syntactically
+ the same as a unicast address for an interface on the link with the
+ interface identifier set to zero.
+
+ Packets sent to the Subnet-Router anycast address will be delivered
+ to one router on the subnet. All routers are required to support the
+ Subnet-Router anycast addresses for the subnets to which they have
+ interfaces.
+
+ The subnet-router anycast address is intended to be used for
+ applications where a node needs to communicate with any one of the
+ set of routers.
+
+2.7 Multicast Addresses
+
+ An IPv6 multicast address is an identifier for a group of interfaces
+ (typically on different nodes). An interface may belong to any
+ number of multicast groups. Multicast addresses have the following
+ format:
+
+ | 8 | 4 | 4 | 112 bits |
+ +------ -+----+----+---------------------------------------------+
+ |11111111|flgs|scop| group ID |
+ +--------+----+----+---------------------------------------------+
+
+ binary 11111111 at the start of the address identifies the
+ address as being a multicast address.
+
+ +-+-+-+-+
+ flgs is a set of 4 flags: |0|0|0|T|
+ +-+-+-+-+
+
+
+
+Hinden & Deering Standards Track [Page 13]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ The high-order 3 flags are reserved, and must be initialized
+ to 0.
+
+ T = 0 indicates a permanently-assigned ("well-known")
+ multicast address, assigned by the Internet Assigned Number
+ Authority (IANA).
+
+ T = 1 indicates a non-permanently-assigned ("transient")
+ multicast address.
+
+ scop is a 4-bit multicast scope value used to limit the scope
+ of the multicast group. The values are:
+
+ 0 reserved
+ 1 interface-local scope
+ 2 link-local scope
+ 3 reserved
+ 4 admin-local scope
+ 5 site-local scope
+ 6 (unassigned)
+ 7 (unassigned)
+ 8 organization-local scope
+ 9 (unassigned)
+ A (unassigned)
+ B (unassigned)
+ C (unassigned)
+ D (unassigned)
+ E global scope
+ F reserved
+
+ interface-local scope spans only a single interface on a
+ node, and is useful only for loopback transmission of
+ multicast.
+
+ link-local and site-local multicast scopes span the same
+ topological regions as the corresponding unicast scopes.
+
+ admin-local scope is the smallest scope that must be
+ administratively configured, i.e., not automatically derived
+ from physical connectivity or other, non- multicast-related
+ configuration.
+
+ organization-local scope is intended to span multiple sites
+ belonging to a single organization.
+
+ scopes labeled "(unassigned)" are available for
+ administrators to define additional multicast regions.
+
+
+
+
+Hinden & Deering Standards Track [Page 14]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ group ID identifies the multicast group, either permanent or
+ transient, within the given scope.
+
+ The "meaning" of a permanently-assigned multicast address is
+ independent of the scope value. For example, if the "NTP servers
+ group" is assigned a permanent multicast address with a group ID of
+ 101 (hex), then:
+
+ FF01:0:0:0:0:0:0:101 means all NTP servers on the same interface
+ (i.e., the same node) as the sender.
+
+ FF02:0:0:0:0:0:0:101 means all NTP servers on the same link as the
+ sender.
+
+ FF05:0:0:0:0:0:0:101 means all NTP servers in the same site as the
+ sender.
+
+ FF0E:0:0:0:0:0:0:101 means all NTP servers in the internet.
+
+ Non-permanently-assigned multicast addresses are meaningful only
+ within a given scope. For example, a group identified by the non-
+ permanent, site-local multicast address FF15:0:0:0:0:0:0:101 at one
+ site bears no relationship to a group using the same address at a
+ different site, nor to a non-permanent group using the same group ID
+ with different scope, nor to a permanent group with the same group
+ ID.
+
+ Multicast addresses must not be used as source addresses in IPv6
+ packets or appear in any Routing header.
+
+ Routers must not forward any multicast packets beyond of the scope
+ indicated by the scop field in the destination multicast address.
+
+ Nodes must not originate a packet to a multicast address whose scop
+ field contains the reserved value 0; if such a packet is received, it
+ must be silently dropped. Nodes should not originate a packet to a
+ multicast address whose scop field contains the reserved value F; if
+ such a packet is sent or received, it must be treated the same as
+ packets destined to a global (scop E) multicast address.
+
+2.7.1 Pre-Defined Multicast Addresses
+
+ The following well-known multicast addresses are pre-defined. The
+ group ID's defined in this section are defined for explicit scope
+ values.
+
+ Use of these group IDs for any other scope values, with the T flag
+ equal to 0, is not allowed.
+
+
+
+Hinden & Deering Standards Track [Page 15]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ Reserved Multicast Addresses: FF00:0:0:0:0:0:0:0
+ FF01:0:0:0:0:0:0:0
+ FF02:0:0:0:0:0:0:0
+ FF03:0:0:0:0:0:0:0
+ FF04:0:0:0:0:0:0:0
+ FF05:0:0:0:0:0:0:0
+ FF06:0:0:0:0:0:0:0
+ FF07:0:0:0:0:0:0:0
+ FF08:0:0:0:0:0:0:0
+ FF09:0:0:0:0:0:0:0
+ FF0A:0:0:0:0:0:0:0
+ FF0B:0:0:0:0:0:0:0
+ FF0C:0:0:0:0:0:0:0
+ FF0D:0:0:0:0:0:0:0
+ FF0E:0:0:0:0:0:0:0
+ FF0F:0:0:0:0:0:0:0
+
+ The above multicast addresses are reserved and shall never be
+ assigned to any multicast group.
+
+ All Nodes Addresses: FF01:0:0:0:0:0:0:1
+ FF02:0:0:0:0:0:0:1
+
+ The above multicast addresses identify the group of all IPv6 nodes,
+ within scope 1 (interface-local) or 2 (link-local).
+
+ All Routers Addresses: FF01:0:0:0:0:0:0:2
+ FF02:0:0:0:0:0:0:2
+ FF05:0:0:0:0:0:0:2
+
+ The above multicast addresses identify the group of all IPv6 routers,
+ within scope 1 (interface-local), 2 (link-local), or 5 (site-local).
+
+ Solicited-Node Address: FF02:0:0:0:0:1:FFXX:XXXX
+
+ Solicited-node multicast address are computed as a function of a
+ node's unicast and anycast addresses. A solicited-node multicast
+ address is formed by taking the low-order 24 bits of an address
+ (unicast or anycast) and appending those bits to the prefix
+ FF02:0:0:0:0:1:FF00::/104 resulting in a multicast address in the
+ range
+
+ FF02:0:0:0:0:1:FF00:0000
+
+ to
+
+ FF02:0:0:0:0:1:FFFF:FFFF
+
+
+
+
+Hinden & Deering Standards Track [Page 16]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ For example, the solicited node multicast address corresponding to
+ the IPv6 address 4037::01:800:200E:8C6C is FF02::1:FF0E:8C6C. IPv6
+ addresses that differ only in the high-order bits, e.g., due to
+ multiple high-order prefixes associated with different aggregations,
+ will map to the same solicited-node address thereby, reducing the
+ number of multicast addresses a node must join.
+
+ A node is required to compute and join (on the appropriate interface)
+ the associated Solicited-Node multicast addresses for every unicast
+ and anycast address it is assigned.
+
+2.8 A Node's Required Addresses
+
+ A host is required to recognize the following addresses as
+ identifying itself:
+
+ o Its required Link-Local Address for each interface.
+ o Any additional Unicast and Anycast Addresses that have been
+ configured for the node's interfaces (manually or
+ automatically).
+ o The loopback address.
+ o The All-Nodes Multicast Addresses defined in section 2.7.1.
+ o The Solicited-Node Multicast Address for each of its unicast
+ and anycast addresses.
+ o Multicast Addresses of all other groups to which the node
+ belongs.
+
+ A router is required to recognize all addresses that a host is
+ required to recognize, plus the following addresses as identifying
+ itself:
+
+ o The Subnet-Router Anycast Addresses for all interfaces for
+ which it is configured to act as a router.
+ o All other Anycast Addresses with which the router has been
+ configured.
+ o The All-Routers Multicast Addresses defined in section 2.7.1.
+
+3. Security Considerations
+
+ IPv6 addressing documents do not have any direct impact on Internet
+ infrastructure security. Authentication of IPv6 packets is defined
+ in [AUTH].
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 17]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+4. IANA Considerations
+
+ The table and notes at http://www.isi.edu/in-
+ notes/iana/assignments/ipv6-address-space.txt should be replaced with
+ the following:
+
+ INTERNET PROTOCOL VERSION 6 ADDRESS SPACE
+
+ The initial assignment of IPv6 address space is as follows:
+
+ Allocation Prefix Fraction of
+ (binary) Address Space
+ ----------------------------------- -------- -------------
+ Unassigned (see Note 1 below) 0000 0000 1/256
+ Unassigned 0000 0001 1/256
+ Reserved for NSAP Allocation 0000 001 1/128 [RFC1888]
+ Unassigned 0000 01 1/64
+ Unassigned 0000 1 1/32
+ Unassigned 0001 1/16
+ Global Unicast 001 1/8 [RFC2374]
+ Unassigned 010 1/8
+ Unassigned 011 1/8
+ Unassigned 100 1/8
+ Unassigned 101 1/8
+ Unassigned 110 1/8
+ Unassigned 1110 1/16
+ Unassigned 1111 0 1/32
+ Unassigned 1111 10 1/64
+ Unassigned 1111 110 1/128
+ Unassigned 1111 1110 0 1/512
+ Link-Local Unicast Addresses 1111 1110 10 1/1024
+ Site-Local Unicast Addresses 1111 1110 11 1/1024
+ Multicast Addresses 1111 1111 1/256
+
+ Notes:
+
+ 1. The "unspecified address", the "loopback address", and the IPv6
+ Addresses with Embedded IPv4 Addresses are assigned out of the
+ 0000 0000 binary prefix space.
+
+ 2. For now, IANA should limit its allocation of IPv6 unicast address
+ space to the range of addresses that start with binary value 001.
+ The rest of the global unicast address space (approximately 85% of
+ the IPv6 address space) is reserved for future definition and use,
+ and is not to be assigned by IANA at this time.
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 18]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+5. References
+
+5.1 Normative References
+
+ [IPV6] Deering, S. and R. Hinden, "Internet Protocol, Version 6
+ (IPv6) Specification", RFC 2460, December 1998.
+
+ [RFC2026] Bradner, S., "The Internet Standards Process -- Revision
+ 3", BCP 9 , RFC 2026, October 1996.
+
+5.2 Informative References
+
+ [ANYCST] Partridge, C., Mendez, T. and W. Milliken, "Host Anycasting
+ Service", RFC 1546, November 1993.
+
+ [AUTH] Kent, S. and R. Atkinson, "IP Authentication Header", RFC
+ 2402, November 1998.
+
+ [AGGR] Hinden, R., O'Dell, M. and S. Deering, "An Aggregatable
+ Global Unicast Address Format", RFC 2374, July 1998.
+
+ [CIDR] Fuller, V., Li, T., Yu, J. and K. Varadhan, "Classless
+ Inter-Domain Routing (CIDR): An Address Assignment and
+ Aggregation Strategy", RFC 1519, September 1993.
+
+ [ETHER] Crawford, M., "Transmission of IPv6 Packets over Ethernet
+ Networks", RFC 2464, December 1998.
+
+ [EUI64] IEEE, "Guidelines for 64-bit Global Identifier (EUI-64)
+ Registration Authority",
+ http://standards.ieee.org/regauth/oui/tutorials/EUI64.html,
+ March 1997.
+
+ [FDDI] Crawford, M., "Transmission of IPv6 Packets over FDDI
+ Networks", RFC 2467, December 1998.
+
+ [MASGN] Hinden, R. and S. Deering, "IPv6 Multicast Address
+ Assignments", RFC 2375, July 1998.
+
+ [NSAP] Bound, J., Carpenter, B., Harrington, D., Houldsworth, J.
+ and A. Lloyd, "OSI NSAPs and IPv6", RFC 1888, August 1996.
+
+ [PRIV] Narten, T. and R. Draves, "Privacy Extensions for Stateless
+ Address Autoconfiguration in IPv6", RFC 3041, January 2001.
+
+ [TOKEN] Crawford, M., Narten, T. and S. Thomas, "Transmission of
+ IPv6 Packets over Token Ring Networks", RFC 2470, December
+ 1998.
+
+
+
+Hinden & Deering Standards Track [Page 19]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ [TRAN] Gilligan, R. and E. Nordmark, "Transition Mechanisms for
+ IPv6 Hosts and Routers", RFC 2893, August 2000.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 20]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+APPENDIX A: Creating Modified EUI-64 format Interface Identifiers
+
+ Depending on the characteristics of a specific link or node there are
+ a number of approaches for creating Modified EUI-64 format interface
+ identifiers. This appendix describes some of these approaches.
+
+Links or Nodes with IEEE EUI-64 Identifiers
+
+ The only change needed to transform an IEEE EUI-64 identifier to an
+ interface identifier is to invert the "u" (universal/local) bit. For
+ example, a globally unique IEEE EUI-64 identifier of the form:
+
+ |0 1|1 3|3 4|4 6|
+ |0 5|6 1|2 7|8 3|
+ +----------------+----------------+----------------+----------------+
+ |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|
+ +----------------+----------------+----------------+----------------+
+
+ where "c" are the bits of the assigned company_id, "0" is the value
+ of the universal/local bit to indicate global scope, "g" is
+ individual/group bit, and "m" are the bits of the manufacturer-
+ selected extension identifier. The IPv6 interface identifier would
+ be of the form:
+
+ |0 1|1 3|3 4|4 6|
+ |0 5|6 1|2 7|8 3|
+ +----------------+----------------+----------------+----------------+
+ |cccccc1gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|
+ +----------------+----------------+----------------+----------------+
+
+ The only change is inverting the value of the universal/local bit.
+
+Links or Nodes with IEEE 802 48 bit MAC's
+
+ [EUI64] defines a method to create a IEEE EUI-64 identifier from an
+ IEEE 48bit MAC identifier. This is to insert two octets, with
+ hexadecimal values of 0xFF and 0xFE, in the middle of the 48 bit MAC
+ (between the company_id and vendor supplied id). For example, the 48
+ bit IEEE MAC with global scope:
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 21]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ |0 1|1 3|3 4|
+ |0 5|6 1|2 7|
+ +----------------+----------------+----------------+
+ |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|
+ +----------------+----------------+----------------+
+
+ where "c" are the bits of the assigned company_id, "0" is the value
+ of the universal/local bit to indicate global scope, "g" is
+ individual/group bit, and "m" are the bits of the manufacturer-
+ selected extension identifier. The interface identifier would be of
+ the form:
+
+ |0 1|1 3|3 4|4 6|
+ |0 5|6 1|2 7|8 3|
+ +----------------+----------------+----------------+----------------+
+ |cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|
+ +----------------+----------------+----------------+----------------+
+
+ When IEEE 802 48bit MAC addresses are available (on an interface or a
+ node), an implementation may use them to create interface identifiers
+ due to their availability and uniqueness properties.
+
+Links with Other Kinds of Identifiers
+
+ There are a number of types of links that have link-layer interface
+ identifiers other than IEEE EIU-64 or IEEE 802 48-bit MACs. Examples
+ include LocalTalk and Arcnet. The method to create an Modified EUI-
+ 64 format identifier is to take the link identifier (e.g., the
+ LocalTalk 8 bit node identifier) and zero fill it to the left. For
+ example, a LocalTalk 8 bit node identifier of hexadecimal value 0x4F
+ results in the following interface identifier:
+
+ |0 1|1 3|3 4|4 6|
+ |0 5|6 1|2 7|8 3|
+ +----------------+----------------+----------------+----------------+
+ |0000000000000000|0000000000000000|0000000000000000|0000000001001111|
+ +----------------+----------------+----------------+----------------+
+
+ Note that this results in the universal/local bit set to "0" to
+ indicate local scope.
+
+Links without Identifiers
+
+ There are a number of links that do not have any type of built-in
+ identifier. The most common of these are serial links and configured
+ tunnels. Interface identifiers must be chosen that are unique within
+ a subnet-prefix.
+
+
+
+
+Hinden & Deering Standards Track [Page 22]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ When no built-in identifier is available on a link the preferred
+ approach is to use a global interface identifier from another
+ interface or one which is assigned to the node itself. When using
+ this approach no other interface connecting the same node to the same
+ subnet-prefix may use the same identifier.
+
+ If there is no global interface identifier available for use on the
+ link the implementation needs to create a local-scope interface
+ identifier. The only requirement is that it be unique within a
+ subnet prefix. There are many possible approaches to select a
+ subnet-prefix-unique interface identifier. These include:
+
+ Manual Configuration
+ Node Serial Number
+ Other node-specific token
+
+ The subnet-prefix-unique interface identifier should be generated in
+ a manner that it does not change after a reboot of a node or if
+ interfaces are added or deleted from the node.
+
+ The selection of the appropriate algorithm is link and implementation
+ dependent. The details on forming interface identifiers are defined
+ in the appropriate "IPv6 over <link>" specification. It is strongly
+ recommended that a collision detection algorithm be implemented as
+ part of any automatic algorithm.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 23]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+APPENDIX B: Changes from RFC-2373
+
+ The following changes were made from RFC-2373 "IP Version 6
+ Addressing Architecture":
+
+ - Clarified text in section 2.2 to allow "::" to represent one or
+ more groups of 16 bits of zeros.
+ - Changed uniqueness requirement of Interface Identifiers from
+ unique on a link to unique within a subnet prefix. Also added a
+ recommendation that the same interface identifier not be assigned
+ to different machines on a link.
+ - Change site-local format to make the subnet ID field 54-bit long
+ and remove the 38-bit zero's field.
+ - Added description of multicast scop values and rules to handle the
+ reserved scop value 0.
+ - Revised sections 2.4 and 2.5.6 to simplify and clarify how
+ different address types are identified. This was done to insure
+ that implementations do not build in any knowledge about global
+ unicast format prefixes. Changes include:
+ o Removed Format Prefix (FP) terminology
+ o Revised list of address types to only include exceptions to
+ global unicast and a singe entry that identifies everything
+ else as Global Unicast.
+ o Removed list of defined prefix exceptions from section 2.5.6
+ as it is now the main part of section 2.4.
+ - Clarified text relating to EUI-64 identifiers to distinguish
+ between IPv6's "Modified EUI-64 format" identifiers and IEEE EUI-
+ 64 identifiers.
+ - Combined the sections on the Global Unicast Addresses and NSAP
+ Addresses into a single section on Global Unicast Addresses,
+ generalized the Global Unicast format, and cited [AGGR] and [NSAP]
+ as examples.
+ - Reordered sections 2.5.4 and 2.5.5.
+ - Removed section 2.7.2 Assignment of New IPv6 Multicast Addresses
+ because this is being redefined elsewhere.
+ - Added an IANA considerations section that updates the IANA IPv6
+ address allocations and documents the NSAP and AGGR allocations.
+ - Added clarification that the "IPv4-compatible IPv6 address" must
+ use global IPv4 unicast addresses.
+ - Divided references in to normative and non-normative sections.
+ - Added reference to [PRIV] in section 2.5.1
+ - Added clarification that routers must not forward multicast
+ packets outside of the scope indicated in the multicast address.
+ - Added clarification that routers must not forward packets with
+ source address of the unspecified address.
+ - Added clarification that routers must drop packets received on an
+ interface with destination address of loopback.
+ - Clarified the definition of IPv4-mapped addresses.
+
+
+
+Hinden & Deering Standards Track [Page 24]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+ - Removed the ABNF Description of Text Representations Appendix.
+ - Removed the address block reserved for IPX addresses.
+ - Multicast scope changes:
+ o Changed name of scope value 1 from "node-local" to
+ "interface-local"
+ o Defined scope value 4 as "admin-local"
+ - Corrected reference to RFC1933 and updated references.
+ - Many small changes to clarify and make the text more consistent.
+
+Authors' Addresses
+
+ Robert M. Hinden
+ Nokia
+ 313 Fairchild Drive
+ Mountain View, CA 94043
+ USA
+
+ Phone: +1 650 625-2004
+ EMail: hinden@iprg.nokia.com
+
+
+ Stephen E. Deering
+ Cisco Systems, Inc.
+ 170 West Tasman Drive
+ San Jose, CA 95134-1706
+ USA
+
+ Phone: +1 408 527-8213
+ EMail: deering@cisco.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 25]
+\f
+RFC 3513 IPv6 Addressing Architecture April 2003
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering Standards Track [Page 26]
+\f
+
+
-\r
-\r
-\r
-\r
-\r
-\r
-Network Working Group S. Thomson\r
-Request for Comments: 3596 Cisco\r
-Obsoletes: 3152, 1886 C. Huitema\r
-Category: Standards Track Microsoft\r
- V. Ksinant\r
- 6WIND\r
- M. Souissi\r
- AFNIC\r
- October 2003\r
-\r
-\r
- DNS Extensions to Support IP Version 6\r
-\r
-Status of this Memo\r
-\r
- This document specifies an Internet standards track protocol for the\r
- Internet community, and requests discussion and suggestions for\r
- improvements. Please refer to the current edition of the "Internet\r
- Official Protocol Standards" (STD 1) for the standardization state\r
- and status of this protocol. Distribution of this memo is unlimited.\r
-\r
-Copyright Notice\r
-\r
- Copyright (C) The Internet Society (2003). All Rights Reserved.\r
-\r
-Abstract\r
-\r
- This document defines the changes that need to be made to the Domain\r
- Name System (DNS) to support hosts running IP version 6 (IPv6). The\r
- changes include a resource record type to store an IPv6 address, a\r
- domain to support lookups based on an IPv6 address, and updated\r
- definitions of existing query types that return Internet addresses as\r
- part of additional section processing. The extensions are designed\r
- to be compatible with existing applications and, in particular, DNS\r
- implementations themselves.\r
-\r
-Table of Contents\r
-\r
- 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2\r
- 2. New resource record definition and domain. . . . . . . . . . . 2\r
- 2.1. AAAA record type . . . . . . . . . . . . . . . . . . . . 3\r
- 2.2. AAAA data format . . . . . . . . . . . . . . . . . . . . 3\r
- 2.3. AAAA query . . . . . . . . . . . . . . . . . . . . . . . 3\r
- 2.4. Textual format of AAAA records . . . . . . . . . . . . . 3\r
- 2.5. IP6.ARPA domain. . . . . . . . . . . . . . . . . . . . . 3\r
- 3. Modifications to existing query types. . . . . . . . . . . . . 4\r
- 4. Security Considerations. . . . . . . . . . . . . . . . . . . . 4\r
- 5. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 4\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 1]\r
-\f\r
-RFC 3596 DNS Extensions to Support IPv6 October 2003\r
-\r
-\r
- 6. Intellectual Property Statement. . . . . . . . . . . . . . . . 4\r
- Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . 5\r
- Appendix A: Changes from RFC 1886. . . . . . . . . . . . . . . . . 6\r
- Normative References . . . . . . . . . . . . . . . . . . . . . . . 6\r
- Informative References . . . . . . . . . . . . . . . . . . . . . . 6\r
- Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 7\r
- Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 8\r
-\r
-1. Introduction\r
-\r
- Current support for the storage of Internet addresses in the Domain\r
- Name System (DNS) [1,2] cannot easily be extended to support IPv6\r
- addresses [3] since applications assume that address queries return\r
- 32-bit IPv4 addresses only.\r
-\r
- To support the storage of IPv6 addresses in the DNS, this document\r
- defines the following extensions:\r
-\r
- o A resource record type is defined to map a domain name to an\r
- IPv6 address.\r
-\r
- o A domain is defined to support lookups based on address.\r
-\r
- o Existing queries that perform additional section processing to\r
- locate IPv4 addresses are redefined to perform additional\r
- section processing on both IPv4 and IPv6 addresses.\r
-\r
- The changes are designed to be compatible with existing software.\r
- The existing support for IPv4 addresses is retained. Transition\r
- issues related to the co-existence of both IPv4 and IPv6 addresses in\r
- the DNS are discussed in [4].\r
-\r
- The IP protocol version used for querying resource records is\r
- independent of the protocol version of the resource records; e.g.,\r
- IPv4 transport can be used to query IPv6 records and vice versa.\r
-\r
- This document combines RFC 1886 [5] and changes to RFC 1886 made by\r
- RFC 3152 [6], obsoleting both. Changes mainly consist in replacing\r
- the IP6.INT domain by IP6.ARPA as defined in RFC 3152.\r
-\r
-2. New resource record definition and domain\r
-\r
- A record type is defined to store a host's IPv6 address. A host that\r
- has more than one IPv6 address must have more than one such record.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 2]\r
-\f\r
-RFC 3596 DNS Extensions to Support IPv6 October 2003\r
-\r
-\r
-2.1 AAAA record type\r
-\r
- The AAAA resource record type is a record specific to the Internet\r
- class that stores a single IPv6 address.\r
-\r
- The IANA assigned value of the type is 28 (decimal).\r
-\r
-2.2 AAAA data format\r
-\r
- A 128 bit IPv6 address is encoded in the data portion of an AAAA\r
- resource record in network byte order (high-order byte first).\r
-\r
-2.3 AAAA query\r
-\r
- An AAAA query for a specified domain name in the Internet class\r
- returns all associated AAAA resource records in the answer section of\r
- a response.\r
-\r
- A type AAAA query does not trigger additional section processing.\r
-\r
-2.4 Textual format of AAAA records\r
-\r
- The textual representation of the data portion of the AAAA resource\r
- record used in a master database file is the textual representation\r
- of an IPv6 address as defined in [3].\r
-\r
-2.5 IP6.ARPA Domain\r
-\r
- A special domain is defined to look up a record given an IPv6\r
- address. The intent of this domain is to provide a way of mapping an\r
- IPv6 address to a host name, although it may be used for other\r
- purposes as well. The domain is rooted at IP6.ARPA.\r
-\r
- An IPv6 address is represented as a name in the IP6.ARPA domain by a\r
- sequence of nibbles separated by dots with the suffix ".IP6.ARPA".\r
- The sequence of nibbles is encoded in reverse order, i.e., the\r
- low-order nibble is encoded first, followed by the next low-order\r
- nibble and so on. Each nibble is represented by a hexadecimal digit.\r
- For example, the reverse lookup domain name corresponding to the\r
- address\r
-\r
- 4321:0:1:2:3:4:567:89ab\r
-\r
- would be\r
-\r
- b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.\r
- ARPA.\r
-\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 3]\r
-\f\r
-RFC 3596 DNS Extensions to Support IPv6 October 2003\r
-\r
-\r
-3. Modifications to existing query types\r
-\r
- All existing query types that perform type A additional section\r
- processing, i.e., name server (NS), location of services (SRV) and\r
- mail exchange (MX) query types, must be redefined to perform both\r
- type A and type AAAA additional section processing. These\r
- definitions mean that a name server must add any relevant IPv4\r
- addresses and any relevant IPv6 addresses available locally to the\r
- additional section of a response when processing any one of the above\r
- queries.\r
-\r
-4. Security Considerations\r
-\r
- Any information obtained from the DNS must be regarded as unsafe\r
- unless techniques specified in [7] or [8] are used. The definitions\r
- of the AAAA record type and of the IP6.ARPA domain do not change the\r
- model for use of these techniques.\r
-\r
- So, this specification is not believed to cause any new security\r
- problems, nor to solve any existing ones.\r
-\r
-5. IANA Considerations\r
-\r
- There are no IANA assignments to be performed.\r
-\r
-6. Intellectual Property Statement\r
-\r
- The IETF takes no position regarding the validity or scope of any\r
- intellectual property or other rights that might be claimed to\r
- pertain to the implementation or use of the technology described in\r
- this document or the extent to which any license under such rights\r
- might or might not be available; neither does it represent that it\r
- has made any effort to identify any such rights. Information on the\r
- IETF's procedures with respect to rights in standards-track and\r
- standards-related documentation can be found in BCP-11. Copies of\r
- claims of rights made available for publication and any assurances of\r
- licenses to be made available, or the result of an attempt made to\r
- obtain a general license or permission for the use of such\r
- proprietary rights by implementors or users of this specification can\r
- be obtained from the IETF Secretariat.\r
-\r
- The IETF invites any interested party to bring to its attention any\r
- copyrights, patents or patent applications, or other proprietary\r
- rights which may cover technology that may be required to practice\r
- this standard. Please address the information to the IETF Executive\r
- Director.\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 4]\r
-\f\r
-RFC 3596 DNS Extensions to Support IPv6 October 2003\r
-\r
-\r
-Acknowledgments\r
-\r
- Vladimir Ksinant and Mohsen Souissi would like to thank Sebastien\r
- Barbin (IRISA), Luc Beloeil (France Telecom R&D), Jean-Mickael Guerin\r
- (6WIND), Vincent Levigneron (AFNIC), Alain Ritoux (6WIND), Frederic\r
- Roudaut (IRISA) and G6 group for their help during the RFC 1886\r
- Interop tests sessions.\r
-\r
- Many thanks to Alain Durand and Olafur Gudmundsson for their support.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 5]\r
-\f\r
-RFC 3596 DNS Extensions to Support IPv6 October 2003\r
-\r
-\r
-Appendix A: Changes from RFC 1886\r
-\r
- The following changes were made from RFC 1886 "DNS Extensions to\r
- support IP version 6":\r
-\r
- - Replaced the "IP6.INT" domain by "IP6.ARPA".\r
- - Mentioned SRV query types in section 3 "MODIFICATIONS TO\r
- EXISTING QUERY TYPES"\r
- - Added security considerations.\r
- - Updated references :\r
- * From RFC 1884 to RFC 3513 (IP Version 6 Addressing\r
- Architecture).\r
- * From "work in progress" to RFC 2893 (Transition Mechanisms for\r
- IPv6 Hosts and Routers).\r
- * Added reference to RFC 1886, RFC 3152, RFC 2535 and RFC 2845.\r
- - Updated document abstract\r
- - Added table of contents\r
- - Added full copyright statement\r
- - Added IANA considerations section\r
- - Added Intellectual Property Statement\r
-\r
-Normative References\r
-\r
- [1] Mockapetris, P., "Domain Names - Concepts and Facilities", STD\r
- 13, RFC 1034, November 1987.\r
-\r
- [2] Mockapetris, P., "Domain Names - Implementation and\r
- Specification", STD 13, RFC 1035, November 1987.\r
-\r
- [3] Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6)\r
- Addressing Architecture", RFC 3513, April 2003.\r
-\r
-Informative References\r
-\r
- [4] Gilligan, R. and E. Nordmark, "Transition Mechanisms for IPv6\r
- Hosts and Routers", RFC 2893, August 2000.\r
-\r
- [5] Thomson, S. and C. Huitema, "DNS Extensions to support IP\r
- version 6", RFC 1886, December 1995.\r
-\r
- [6] Bush, R., "Delegation of IP6.ARPA", BCP 49, RFC 3152, August\r
- 2001.\r
-\r
- [7] Eastlake, D., "Domain Name System Security Extensions", RFC\r
- 2535, March 1999\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 6]\r
-\f\r
-RFC 3596 DNS Extensions to Support IPv6 October 2003\r
-\r
-\r
- [8] Vixie, P., Gudmundsson, O., Eastlake, D. and B. Wellington,\r
- "Secret Key Transaction Authentication for DNS (TSIG)", RFC\r
- 2845, May 2000.\r
-\r
-Authors' Addresses\r
-\r
- Susan Thomson\r
- Cisco Systems\r
- 499 Thornall Street, 8th floor\r
- Edison, NJ 08837\r
-\r
- Phone: +1 732-635-3086\r
- EMail: sethomso@cisco.com\r
-\r
-\r
- Christian Huitema\r
- Microsoft Corporation\r
- One Microsoft Way\r
- Redmond, WA 98052-6399\r
-\r
- EMail: huitema@microsoft.com\r
-\r
-\r
- Vladimir Ksinant\r
- 6WIND S.A.\r
- Immeuble Central Gare - Bat.C\r
- 1, place Charles de Gaulle\r
- 78180, Montigny-Le-Bretonneux - France\r
-\r
- Phone: +33 1 39 30 92 36\r
- EMail: vladimir.ksinant@6wind.com\r
-\r
-\r
- Mohsen Souissi\r
- AFNIC\r
- Immeuble International\r
- 2, rue Stephenson,\r
- 78181, Saint-Quentin en Yvelines Cedex - France\r
-\r
- Phone: +33 1 39 30 83 40\r
- EMail: Mohsen.Souissi@nic.fr\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 7]\r
-\f\r
-RFC 3596 DNS Extensions to Support IPv6 October 2003\r
-\r
-\r
-Full Copyright Statement\r
-\r
- Copyright (C) The Internet Society (2003). All Rights Reserved.\r
-\r
- This document and translations of it may be copied and furnished to\r
- others, and derivative works that comment on or otherwise explain it\r
- or assist in its implementation may be prepared, copied, published\r
- and distributed, in whole or in part, without restriction of any\r
- kind, provided that the above copyright notice and this paragraph are\r
- included on all such copies and derivative works. However, this\r
- document itself may not be modified in any way, such as by removing\r
- the copyright notice or references to the Internet Society or other\r
- Internet organizations, except as needed for the purpose of\r
- developing Internet standards in which case the procedures for\r
- copyrights defined in the Internet Standards process must be\r
- followed, or as required to translate it into languages other than\r
- English.\r
-\r
- The limited permissions granted above are perpetual and will not be\r
- revoked by the Internet Society or its successors or assignees.\r
-\r
- This document and the information contained herein is provided on an\r
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\r
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\r
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\r
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\r
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\r
-\r
-Acknowledgement\r
-\r
- Funding for the RFC Editor function is currently provided by the\r
- Internet Society.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al. Standards Track [Page 8]\r
-\f\r
+
+
+
+
+
+
+Network Working Group S. Thomson
+Request for Comments: 3596 Cisco
+Obsoletes: 3152, 1886 C. Huitema
+Category: Standards Track Microsoft
+ V. Ksinant
+ 6WIND
+ M. Souissi
+ AFNIC
+ October 2003
+
+
+ DNS Extensions to Support IP Version 6
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+Abstract
+
+ This document defines the changes that need to be made to the Domain
+ Name System (DNS) to support hosts running IP version 6 (IPv6). The
+ changes include a resource record type to store an IPv6 address, a
+ domain to support lookups based on an IPv6 address, and updated
+ definitions of existing query types that return Internet addresses as
+ part of additional section processing. The extensions are designed
+ to be compatible with existing applications and, in particular, DNS
+ implementations themselves.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
+ 2. New resource record definition and domain. . . . . . . . . . . 2
+ 2.1. AAAA record type . . . . . . . . . . . . . . . . . . . . 3
+ 2.2. AAAA data format . . . . . . . . . . . . . . . . . . . . 3
+ 2.3. AAAA query . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2.4. Textual format of AAAA records . . . . . . . . . . . . . 3
+ 2.5. IP6.ARPA domain. . . . . . . . . . . . . . . . . . . . . 3
+ 3. Modifications to existing query types. . . . . . . . . . . . . 4
+ 4. Security Considerations. . . . . . . . . . . . . . . . . . . . 4
+ 5. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 4
+
+
+
+Thomson, et al. Standards Track [Page 1]
+\f
+RFC 3596 DNS Extensions to Support IPv6 October 2003
+
+
+ 6. Intellectual Property Statement. . . . . . . . . . . . . . . . 4
+ Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . 5
+ Appendix A: Changes from RFC 1886. . . . . . . . . . . . . . . . . 6
+ Normative References . . . . . . . . . . . . . . . . . . . . . . . 6
+ Informative References . . . . . . . . . . . . . . . . . . . . . . 6
+ Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 7
+ Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 8
+
+1. Introduction
+
+ Current support for the storage of Internet addresses in the Domain
+ Name System (DNS) [1,2] cannot easily be extended to support IPv6
+ addresses [3] since applications assume that address queries return
+ 32-bit IPv4 addresses only.
+
+ To support the storage of IPv6 addresses in the DNS, this document
+ defines the following extensions:
+
+ o A resource record type is defined to map a domain name to an
+ IPv6 address.
+
+ o A domain is defined to support lookups based on address.
+
+ o Existing queries that perform additional section processing to
+ locate IPv4 addresses are redefined to perform additional
+ section processing on both IPv4 and IPv6 addresses.
+
+ The changes are designed to be compatible with existing software.
+ The existing support for IPv4 addresses is retained. Transition
+ issues related to the co-existence of both IPv4 and IPv6 addresses in
+ the DNS are discussed in [4].
+
+ The IP protocol version used for querying resource records is
+ independent of the protocol version of the resource records; e.g.,
+ IPv4 transport can be used to query IPv6 records and vice versa.
+
+ This document combines RFC 1886 [5] and changes to RFC 1886 made by
+ RFC 3152 [6], obsoleting both. Changes mainly consist in replacing
+ the IP6.INT domain by IP6.ARPA as defined in RFC 3152.
+
+2. New resource record definition and domain
+
+ A record type is defined to store a host's IPv6 address. A host that
+ has more than one IPv6 address must have more than one such record.
+
+
+
+
+
+
+
+Thomson, et al. Standards Track [Page 2]
+\f
+RFC 3596 DNS Extensions to Support IPv6 October 2003
+
+
+2.1 AAAA record type
+
+ The AAAA resource record type is a record specific to the Internet
+ class that stores a single IPv6 address.
+
+ The IANA assigned value of the type is 28 (decimal).
+
+2.2 AAAA data format
+
+ A 128 bit IPv6 address is encoded in the data portion of an AAAA
+ resource record in network byte order (high-order byte first).
+
+2.3 AAAA query
+
+ An AAAA query for a specified domain name in the Internet class
+ returns all associated AAAA resource records in the answer section of
+ a response.
+
+ A type AAAA query does not trigger additional section processing.
+
+2.4 Textual format of AAAA records
+
+ The textual representation of the data portion of the AAAA resource
+ record used in a master database file is the textual representation
+ of an IPv6 address as defined in [3].
+
+2.5 IP6.ARPA Domain
+
+ A special domain is defined to look up a record given an IPv6
+ address. The intent of this domain is to provide a way of mapping an
+ IPv6 address to a host name, although it may be used for other
+ purposes as well. The domain is rooted at IP6.ARPA.
+
+ An IPv6 address is represented as a name in the IP6.ARPA domain by a
+ sequence of nibbles separated by dots with the suffix ".IP6.ARPA".
+ The sequence of nibbles is encoded in reverse order, i.e., the
+ low-order nibble is encoded first, followed by the next low-order
+ nibble and so on. Each nibble is represented by a hexadecimal digit.
+ For example, the reverse lookup domain name corresponding to the
+ address
+
+ 4321:0:1:2:3:4:567:89ab
+
+ would be
+
+ b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.
+ ARPA.
+
+
+
+
+Thomson, et al. Standards Track [Page 3]
+\f
+RFC 3596 DNS Extensions to Support IPv6 October 2003
+
+
+3. Modifications to existing query types
+
+ All existing query types that perform type A additional section
+ processing, i.e., name server (NS), location of services (SRV) and
+ mail exchange (MX) query types, must be redefined to perform both
+ type A and type AAAA additional section processing. These
+ definitions mean that a name server must add any relevant IPv4
+ addresses and any relevant IPv6 addresses available locally to the
+ additional section of a response when processing any one of the above
+ queries.
+
+4. Security Considerations
+
+ Any information obtained from the DNS must be regarded as unsafe
+ unless techniques specified in [7] or [8] are used. The definitions
+ of the AAAA record type and of the IP6.ARPA domain do not change the
+ model for use of these techniques.
+
+ So, this specification is not believed to cause any new security
+ problems, nor to solve any existing ones.
+
+5. IANA Considerations
+
+ There are no IANA assignments to be performed.
+
+6. Intellectual Property Statement
+
+ The IETF takes no position regarding the validity or scope of any
+ intellectual property or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; neither does it represent that it
+ has made any effort to identify any such rights. Information on the
+ IETF's procedures with respect to rights in standards-track and
+ standards-related documentation can be found in BCP-11. Copies of
+ claims of rights made available for publication and any assurances of
+ licenses to be made available, or the result of an attempt made to
+ obtain a general license or permission for the use of such
+ proprietary rights by implementors or users of this specification can
+ be obtained from the IETF Secretariat.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights which may cover technology that may be required to practice
+ this standard. Please address the information to the IETF Executive
+ Director.
+
+
+
+
+
+Thomson, et al. Standards Track [Page 4]
+\f
+RFC 3596 DNS Extensions to Support IPv6 October 2003
+
+
+Acknowledgments
+
+ Vladimir Ksinant and Mohsen Souissi would like to thank Sebastien
+ Barbin (IRISA), Luc Beloeil (France Telecom R&D), Jean-Mickael Guerin
+ (6WIND), Vincent Levigneron (AFNIC), Alain Ritoux (6WIND), Frederic
+ Roudaut (IRISA) and G6 group for their help during the RFC 1886
+ Interop tests sessions.
+
+ Many thanks to Alain Durand and Olafur Gudmundsson for their support.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Thomson, et al. Standards Track [Page 5]
+\f
+RFC 3596 DNS Extensions to Support IPv6 October 2003
+
+
+Appendix A: Changes from RFC 1886
+
+ The following changes were made from RFC 1886 "DNS Extensions to
+ support IP version 6":
+
+ - Replaced the "IP6.INT" domain by "IP6.ARPA".
+ - Mentioned SRV query types in section 3 "MODIFICATIONS TO
+ EXISTING QUERY TYPES"
+ - Added security considerations.
+ - Updated references :
+ * From RFC 1884 to RFC 3513 (IP Version 6 Addressing
+ Architecture).
+ * From "work in progress" to RFC 2893 (Transition Mechanisms for
+ IPv6 Hosts and Routers).
+ * Added reference to RFC 1886, RFC 3152, RFC 2535 and RFC 2845.
+ - Updated document abstract
+ - Added table of contents
+ - Added full copyright statement
+ - Added IANA considerations section
+ - Added Intellectual Property Statement
+
+Normative References
+
+ [1] Mockapetris, P., "Domain Names - Concepts and Facilities", STD
+ 13, RFC 1034, November 1987.
+
+ [2] Mockapetris, P., "Domain Names - Implementation and
+ Specification", STD 13, RFC 1035, November 1987.
+
+ [3] Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6)
+ Addressing Architecture", RFC 3513, April 2003.
+
+Informative References
+
+ [4] Gilligan, R. and E. Nordmark, "Transition Mechanisms for IPv6
+ Hosts and Routers", RFC 2893, August 2000.
+
+ [5] Thomson, S. and C. Huitema, "DNS Extensions to support IP
+ version 6", RFC 1886, December 1995.
+
+ [6] Bush, R., "Delegation of IP6.ARPA", BCP 49, RFC 3152, August
+ 2001.
+
+ [7] Eastlake, D., "Domain Name System Security Extensions", RFC
+ 2535, March 1999
+
+
+
+
+
+
+Thomson, et al. Standards Track [Page 6]
+\f
+RFC 3596 DNS Extensions to Support IPv6 October 2003
+
+
+ [8] Vixie, P., Gudmundsson, O., Eastlake, D. and B. Wellington,
+ "Secret Key Transaction Authentication for DNS (TSIG)", RFC
+ 2845, May 2000.
+
+Authors' Addresses
+
+ Susan Thomson
+ Cisco Systems
+ 499 Thornall Street, 8th floor
+ Edison, NJ 08837
+
+ Phone: +1 732-635-3086
+ EMail: sethomso@cisco.com
+
+
+ Christian Huitema
+ Microsoft Corporation
+ One Microsoft Way
+ Redmond, WA 98052-6399
+
+ EMail: huitema@microsoft.com
+
+
+ Vladimir Ksinant
+ 6WIND S.A.
+ Immeuble Central Gare - Bat.C
+ 1, place Charles de Gaulle
+ 78180, Montigny-Le-Bretonneux - France
+
+ Phone: +33 1 39 30 92 36
+ EMail: vladimir.ksinant@6wind.com
+
+
+ Mohsen Souissi
+ AFNIC
+ Immeuble International
+ 2, rue Stephenson,
+ 78181, Saint-Quentin en Yvelines Cedex - France
+
+ Phone: +33 1 39 30 83 40
+ EMail: Mohsen.Souissi@nic.fr
+
+
+
+
+
+
+
+
+
+
+Thomson, et al. Standards Track [Page 7]
+\f
+RFC 3596 DNS Extensions to Support IPv6 October 2003
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assignees.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Thomson, et al. Standards Track [Page 8]
+\f
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Accés no autoritzat.
-</STRONG>
-<P>
-La configuració del control d'accés impedeix realitzar
-aquesta operació. Contacteu amb el vostre proveïdor
-de servei si creieu que es tracta d'un error.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Accés denegat a la cache</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Accés denegat a la cache</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Accés denegat a la <i>cache</i>.
-</STRONG>
-</UL>
-</P>
-
-<P>L'accés a l'objecte:
-<PRE> %U</PRE>
-no està permès sense autentificació prèvia.
-</P>
-
-<P>
-Cal que el vostre navegador tingui suport per a autentificació.
-Podeu usar el Netscape versió 2.0 o superior o l'Internet Explorer 3.0,
-o un navegador que compleixi l'estàndar HTTP/1.1 - Contacteu amb
-el vostre <A HREF="mailto:%w%W">administrador de <i>cache</i></a> si teniu
-dificultats per a autentificar-vos o <A
-HREF="http://%h/cgi-bin/chpasswd.cgi">canvieu</a> la vostra contrasenya.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Accés denegat a l'administració de la cache</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>ERROR: Accés denegat a l'administració de la cache</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Accés denegat a l'administració de la cache.
-</STRONG>
-</UL>
-</P>
-
-<P>L'accés a l'objecte:
-<PRE> %U</PRE>
-no està permès sense autentificació prèvia.
-</P>
-Cal que el vostre navegador tingui suport per a autentificació.
-Podeu usar el Netscape versió 2.0 o superior o l'Internet Explorer 3.0,
-o un navegador que compleixi l'estàndar HTTP/1.1 - Contacteu amb
-el vostre <A HREF="mailto:%w%W">administrador de <i>cache</i></a>. Si
-vosaltres <em>sou</em> l'administrador d'aquesta <i>cache</i>, llegiu-vos
-la documentació de l'Squid en l'apartat de l'administrador de la
-<i>cache</i>.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-No ha estat possible de reenviar aquesta petició
-</STRONG>
-</UL>
-<P>
-Aquesta petició no s'ha pogut enviar al servidor d'origen o
-a una <i>cache</i> superior. La causa més probable per
-aquest error és:
-<UL>
-<LI>L'administrador de la <i>cache</i> no permet connexions
-directes amb els servidors d'origen, o
-<LI>No hi ha cap <i>cache</i> superior disponible.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Ha fallat la connexió.
-</STRONG>
-</UL>
-
-<P>
-El sistema diu:
-<PRE><I> %E</I></PRE>
-
-<P>
-El servidor o la xarxa remota no es troben disponibles.
-Torneu-ho a provar d'aqui a una estona.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<BLOCKQUOTE>
-No ha estat possible determinar l'adreça IP del servidor
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-El servidor de DNS diu:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Aix&ograce; vol dir que:
-<PRE>
- La <i>cache<i> no ha pogut resoldre el nom del servidor que heu escrit
- a la URL. Comproveu si aquesta adreça és correcta.
-</PRE>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Reenviament denegat.
-</STRONG>
-</UL>
-
-<P>
-Aquesta <i>cache</i> no reenviarà la vostra petició
-donat que està forçant una connexió a una <i>cache</i>
-germana. Potser que el client %i sigui una <i>cache</i> mal configurada.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-El protocol FTP està deshabilitat.
-</STRONG>
-</UL>
-
-<P>
-Aquesta <i>cache</i> no accepta connexions FTP.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-S'ha produït un error FTP mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-S'ha produït un error en l'autentificació FTP
-mentre s'intentava llegir la URL
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-URL:
-<A HREF="%U">%U</A>
-<P>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Aquest error pot ser causat per una URL del protocol FTP amb
-un camí absolut (que no compleix amb la RFC 1738). Si aquesta
-n'és la causa, trobareu el fitxer desitjat a <A HREF="%B">%B</A>.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>Comanda FTP PUT executada amb èxit: Fitxer creat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operació completada</H1>
-<H2>Fitxer creat</H2>
-<HR noshade size="1px">
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Ha fallat l'enviament del fitxer FTP</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>Ha fallat la comanda FTP d'enviament de fitxer</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava la comanda PUT a la URL:
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-i ha rebut aquesta resposta:
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-<PRE>
-Verifiqueu camí, permisos, espai de disc i proveu de nou.
-</PRE>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>Comanda FTP PUT completada amb éxit: Fitxer actualitzat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operació completada</H1>
-<H2>Fitxer actualitzat</H2>
-<HR noshade size="1px">
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-El servidor FTP estava massa ocupat quan intentava mostrar la URL:
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>L'administrador d'aquesta <i>cache</i> és<A
-HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<PRE>
-%R
-</PRE>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Petició no vàlida
-</STRONG>
-</UL>
-
-<P>
-Algun camp de la petició HTTP no és vàlid. Causes probables:
-<UL>
-<LI>Mètode de petició desconegut o absent.
-<LI>no hi ha URL.
-<LI>Falta l'identificador HTTP (HTTP/1.0).
-<LI>La petici&ocute; és massa llarga.
-<LI>Falta el camp <i>Content-Length</i>.
-<LI>Caràcter no permès en el nom del servidor.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-URL incorrecte.
-</STRONG>
-</UL>
-
-<P>
-Alguna part de la URL no és correcte. Possibles problemes:
-<UL>
-<LI>Protocol d'accés absent o incorrecte ( http:// o similar )
-<LI>Falta el nom del servidor.
-<LI>La URL conté un doble caràcter d'escapament.
-<LI>Caràcter no permès en el nom del servidor.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-La connexió ha excedit el temps màxim
-</STRONG>
-</UL>
-
-<P>
-La <i>cache</i> ha finalitzat la connexió perque aquesta ha
-excedit el temps màxim permès.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-No hi ha reenviament de protocol WAIS
-</STRONG>
-</UL>
-
-<P>
-No hi ha un reenviador de protocol WAIS per a aquesta <i>cache</i>.
-Comenta-li a l'administrador.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-S'ha especificat una directiva <code>only-if-cached</code> i no s'ha trobat un document vàlid a la <i>cache</i>.
-</STRONG>
-</UL>
-
-<P>
-Heu fet una petició amb la directiva de control de <i>cache</i>
-<code>only-if-cached</code>. El document no s'ha trobat a la <i>cache</i>, o
-necessitava revalidació, expressament prohibida per la directiva
-<code>only-if-cached</code>.
-
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Error de lectura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha respost:
-<PRE><I> %E</I></PRE>
-
-<P>
-S'ha produït un error quan es llegien les dades de la xarxa.
-Repetiu la petició
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-S'ha excedit el temps de lectura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha respost:
-<PRE><I> %E</I></PRE>
-
-<P>
-Hi ha hagut un excés en el temps de lectura de dades de la xarxa.
-Hi ha congestió o indisposició del servidor i/o la xarxa.
-Intenteu-ho d'aqui a una estona.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<P>
-Aquesta <i>cache</i> està en procés d'aturada inmediata
-i no pot atendre la vostra petició. Reintenteu la petició
-d'aqui a uns minuts.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Errada de connexió de xarxa
-</STRONG>
-</UL>
-
-<P>
-El sistema diu:
-<PRE><I> %E</I></PRE>
-
-<P>
-La <i>cache</i> no pot obrir sessions TCP, possiblement degut a un
-excés de càrrega.
-Reintenteu d'aqui a una estona
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-La petició o la resposta són massa llargues
-</STRONG>
-<P>
-Si esteu fent una petició de tipus POST o PUT, llavors
-el cos de la petició és massa llarg (el fitxer
-que intenteu enviar). Si esteu intentant descarregar-vos algun
-fitxer, aques és massa gros. Aquests límits han
-estat establerts pel proveïdor Internet que opera aquesta
-<i>cache</i>. Contacta amb ells si creus que es tracta d'un error.
-</UL>
-<P>
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Mètode i protocol no admesos
-</STRONG>
-</UL>
-
-<P>
-La <i>cache</i> no admet tots els tipus de petició per a tots
-els protocols. Per exemple, no es pot fer una petició tipus POST
-en el protocol Gopher.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URN que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URN que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URN:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-No s'ha pogut resoldre la URN
-</STRONG>
-</UL>
-
-<P>
-Ei :) no esperis massa de les URN a %T !!
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Error d'escriptura
-</STRONG>
-</UL>
-
-<P>
-El sistema diu:
-<PRE><I> %E</I></PRE>
-
-<P>
-S'ha produït un error mentre s'intentava escriure a la xarxa.
-Reintenteu-ho en breus instants.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-Resposta de longitut ZERO :)
-</STRONG>
-</UL>
-
-<P>
-La <i>cache</i> ha rebut una resposta sense dades, un document buit.
-<P>L'administrador d'aquesta <i>cache</i> és<A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-Thank you to Jordi Bruguera <jordi@dns1.grn.es> for
-creating these error pages in Catalan!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL::
-<A HREF="%U">%U</A>
-<P>
-S'ha produït el següent error:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-El sistema ha respost:
-<PRE><I> %E</I></PRE>
-
-<P>
-Això vol dir que:
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Adgang nægtet.
-</STRONG>
-<P>
-Adgangs kontrollen tillader ikke din forespørgsel.
-Kontakt din udbyder nu, hvis du mener dette er en fejl.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Cache Adgang Nægtet</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Cache Adgang Nægtet</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Cache Adgang Nægtet.
-</STRONG>
-</UL>
-</P>
-
-<P>Du har desværre ikke lov til at hente:
-<PRE> %U</PRE>
-fra denne cache førend du har autenticieret dig selv.
-</P>
-
-<P>
-Du er nødt til at bruge Netscape version 2.0 eller bedre,
-Internet Explorer version 3.0 eller bedre, eller en browser der
-opfylder HTTP/1.1 standarden. Kontakt
-<A HREF="mailto:%w%W">cache administratoren</a> hvis du har problemer
-med at autenticiere dig eller
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">skift</a> dit
-password.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Cache Administrator Adgang Nægtet</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Cache Administrator Adgang Nægtet</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Cache Administrator Adgang Nægtet.
-</STRONG>
-</UL>
-</P>
-
-<P>Du har desværre ikke lov til at hente:
-<PRE> %U</PRE>
-fra denne cache førend du har autenticieret dig selv.
-</P>
-
-<P>
-Du er nødt til at bruge Netscape version 2.0 eller bedre,
-Internet Explorer version 3.0 eller bedre, eller en browser der
-opfylder HTTP/1.1 standarden. Kontakt
-<A HREF="mailto:%w%W">cache administratoren</a> hvis du har problemer
-med at autenticiere dig eller hvis du <em>er</em> cache
-administratoren, læs Squid dokumentationen for cache
-administrator interfacet og check cache loggen for mere detaljerede
-fejlmeddelelser
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Kunne ikke vidersende forespørgslen.
-</STRONG>
-<P>
-Denne forespørgsel kunne ikke videresendes til den
-oprindelige server eller en af forældre cache'ene. Dette
-skyldes sandsynligvis at:
-<UL>
-<LI>Cache administratoren tillader ikke denne cache at udføre
-direkte forbindelser til servere og
-<LI>Alle forældre cache'er kan ikke nås for øjeblikket.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Forbindelses fejl.
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I> %E</I></PRE>
-
-<P>
-Der kunne ikke opnås forbindelse til
-den anden computer. Netværket eller
-computeren kan være nede.
-Prøv eventuelt igen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<BLOCKQUOTE>
-Kunne ikke finde IP nummeret for navnet
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Dns serveren returnerede:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Dette betyder at:
-<PRE>
- Cachen kunne ikke opløse det angivne navn i URL'en.
- Check at adressen er korrekt.
-</PRE>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Videresendelse nægtet.
-</STRONG>
-
-<P>
-Denne cache vil ikke videresende din forespørgsel fordi
-den prøver at opretholde et søskendeforhold. Måske
-er klienten på %i en fejlkonfigureret cache.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-FTP er slået fra
-</STRONG>
-</UL>
-
-<P>
-Denne cache understøtter ikke FTP.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-En FTP protokol fejl opstod
-under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte følgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik følgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dette kan muligvis forårsages af en FTP URL med en
-absolut sti (hvilket ikke er i overensstemmelse med standarden
-RFC 1738). Hvis dette er årsagen, kan filen findes på
-<A HREF="%B">%B</A>.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-En FTP autenticierings fejl opstod
-under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte følgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik følgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Den føgende URL kunne ikke hentes:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte følgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik følgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dette kan muligvis forårsages af en FTP URL med en
-absolut sti (hvilket ikke er i overensstemmelse med standarden
-RFC 1738). Hvis dette er årsagen, kan filen findes på
-<A HREF="%B">%B</A>.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FTP PUT Lykkedes: Fil Oprettet</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Handlingen lykkedes</H1>
-<H2>Fil oprettet</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: FTP upload fejlede</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>FTP PUT/upload fejlede</H2>
-<HR noshade size="1px">
-<P>
-Under udførelse af PUT kommando (sending) på
-følgende URL:
-<A HREF="%U">%U</A>
-<P>
-sendte proxy'en Squid følgende FTP kommando:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-og fik dette svar:
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Dette betyder at:
-<PRE>
-Du skal checke sti, rettigheder, diskplads og eventuelt prøve igen.
-</PRE>
-<P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FTP PUT Lykkedes: Fil Opdateret</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Handlingen lykkedes</H1>
-<H2>Fil opdateret</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-FTP serveren var optaget da
-føgende URL skulle hentes:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte følgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik følgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under bearbejdning af forespørgslen:
-<PRE>
-%R
-</PRE>
-<P>
-Stødte poxy'en Squid ind i følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Ugyldig forespørgsel.
-</STRONG>
-</UL>
-
-<P>
-Et eller andet i HTTP forspørgslen er fejlbehæftet.
-Mulige problemer kan være:
-<UL>
-<LI>Manglende eller ukendt forespørgsels metode
-<LI>Manglende URL
-<LI>Manglende HTTP Identifikator (ved HTTP/1.0)
-<LI>Forespørgslen er for stor
-<LI>"Content-Length" mangler til POST eller PUT forespørgsler
-<LI>Ulovlige bogstaver i maskinnavnet; æ, ø , å og _ tegn
-er ikke tilladt i maskinnavne (som f.eks. i: www.øl.dk)!
-<LI>Blanktegn i forespørgslen (kan som regel slettes)
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Ugyldig URL
-</STRONG>
-</UL>
-
-<P>
-Et eller andet i HTTP forspørgslen er fejlbehæftet.
-Mulige problemer kan være:
-<UL>
-<LI>Manglende eller ukendt adgangsprotokol (burde være `http:// eller tilsvarende)
-<LI>Manglende maskinnavn
-<LI>Manglende HTTP Identifikator (ved HTTP/1.0)
-<LI>Ugyldig dobbelt-escape i URL sti
-<LI>Ulovlige bogstaver i maskinnavnet; æ, ø , å og _ -tegn
-er ikke tilladt i maskinnavne (som f.eks. i: www.øl.dk)!
-<LI>Blanktegn i URL (kan normalt slettes)
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Levetiden for forbindelsen udløb
-</STRONG>
-</UL>
-
-<P>
-Proxy'en Squid har afsluttet forespørgslen fordi den
-har overskredet den maksimale levetid for forbindelser (connection timeout).
-Hvis dette er en fejl kontakt
-<A HREF="mailto:%w%W">cache administratoren</a>.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Ingen WAIS Relæ
-</STRONG>
-</UL>
-
-<P>
-Der er ikke nogen WAIS Relæ maskine defineret for denne proxy
-cache! Råb efter <A HREF="mailto:%w%W">cache administratoren</a>!
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Dokumentet blev ikke fundet i cachen og <code>only-if-cached</code>
-(kun-hvis-gemt-i-cachen) direktivet var specificeret.
-</STRONG>
-</UL>
-<P>
-Du har sendt en forespørgsel med en <code>only-if-cached</code>
-cache kontrol direktiv. Dokumentet blev ikke fundet i cachen, <em>eller</em>
-det kræver en bekræftelse af gyldighed som bliver forbudt
-af <code>only-if-cached</code> direktivet.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Læse fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I> %E</I></PRE>
-
-<P>
-En fejl opstod mens der blev læst data fra nettet. Prøv igen.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Læse fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I> %E</I></PRE>
-
-<P>
-En timeout opstod mens der der blev ventet pæ at læse data
-fra netværket. Netværket kan være nede eller
-forstoppet. Hvis dette sker meget ofte kan du kontakte
-<A HREF="mailto:%w%W">cache administratoren</a> og eventuelt få
-øget timeout værdien. Prøv igen.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-opstod følgende fejl:
-<UL>
-<P>
-Proxy cachen er i gang med at lukke ned og kan
-derfor ikke betjene din forespørgsel nu.
-Prøv venligst igen snart.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Socket Fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I> %E</I></PRE>
-
-<P>
-Proxy'en Squid kunne ikke skabe en TCP socket, sandsynligvis pga.
-høj last på proxy maskinen. Ved gentagne fejl
-af denne type kontakt venligst
-<A HREF="mailto:%w%W">cache administratoren</a>. Prøv igen nu
-eller på et mindre belastet tidspunkt.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-The request or reply is too large.
-</STRONG>
-<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large. If you are
-making a GET request, then the reply body (what you are trying
-to download) is too large. These limits have been established
-by the Internet Service Provider who operates this cache. Please
-contact them directly if you feel this is an error.
-</UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Uunderstøttet Forespørgsels Metode og Protokol
-</STRONG>
-</UL>
-
-
-<P>
-Proxy'en Squid understøtter ikke alle forespørgselsmetoder
-for alle adgangs protokoller. For eksempel kan du ikke POST en
-Gopher forespørgsel.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URN kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>URL for den angivne URN kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URN:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Kan Ikke Opløse URN
-</STRONG>
-</UL>
-
-<P>
-Hallo, forvent nu ikke for meget af URNs på %T :)
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Skrive Fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I> %E</I></PRE>
-
-<P>
-En fejl opstod mens der blev skrevet data til nettet. Prøv igen.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-Nul Størrelse Svar
-</STRONG>
-</UL>
-
-<P>
-Proxy'en Squid modtog ingen data for denne forespørgsel.
-Hvis du får svar når du prøver igen, kontakt
-da <A HREF="mailto:%w%W">cache administratoren</a> med angivelse
-af nøjagtigt tidspunkt og URL for forespørgslen.
-</P>
-
+++ /dev/null
-Thank you to Morten S. Nielsen <mortensn@geocities.com> for
-creating these error pages in Danish!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af føgende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod følgende fejl:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I> %E</I></PRE>
-
-<P>
-Dette betyder at
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
-
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Toegang niet toegestaan.
-</STRONG>
-<P>
-U heeft geen toegang tot de URL die u probeerde op te vragen van deze
-server. Neem contact op met uw service provider als u denkt dat dit niet
-klopt.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: Cache toegang niet toegestaan</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FOUT</H1>
-<H2>Cache toegang niet toegestaan</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Cache toegang niet toegestaan.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, het is u niet toegestaan om:
-<PRE> %U</PRE>
-van deze cache op te vragen totdat u zich geidentificeerd hebt.
-</P>
-
-<P>
-U dient Netscape 2.0 of recenter, Microsoft Internet Explorer 3.0, of een HTTP/1.1 compatibele browser te gebruiken om dit te laten werken. Neem contact op met de <A HREF="mailto:%w%W">cache beheerder</a> als u problemen heeft om uzelf te identificeren of <A HREF="http://%h/cgi-bin/chpasswd.cgi">verander</a> hier uw standaard wachtwoord.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: Cache Manager toegang niet toegestaan</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FOUT</H1>
-<H2>Cache Manager toegang niet toegestaan</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Cache Manager toegang niet toegestaan.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, het is u momenteel niet toegestaan om:
-<PRE> %U</PRE>
-op te vragen van deze cache manager totdat u zichzelf hebt geidentificeerd.
-</P>
-
-<P>
-U dient Netscape 2.0 of recenter, Microsoft Internet Explorer 3.0, of een HTTP/1.1 compatibele browser te gebruiken om dit te laten werken. Neem contact op met de <A HREF="mailto:%w%W">cache beheerder</a> als u problemen heeft om uzelf te identificeren. Als <em>U</em> de beheerder bent, lees dan de Squid documentatie over de cache manager interface en lees de cache log voor meer gedetailleerde foutmeldingen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Momenteel niet in staat dit verzoek door te sturen.
-</STRONG>
-</UL>
-
-<P>
-Dit verzoek kon niet worden doorgestuurd naar de oorspronkelijke server of een van de parent caches. De meest waarschijnlijke reden voor deze fout is dat
-<UL>
-<LI>De cache beheerder het deze cache niet toestaat met de oorspronkelijke server te praten, en
-<LI>alle ingestelde parent caches op dit moment onbereikbaar zijn.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Verbinding mislukt.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I> %E</I></PRE>
-
-<P>
-De door u gezochte server of het netwerk is onbereikbaar. Probeer het verzoek opnieuw.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<BLOCKQUOTE>
-Niet in staat om het IP adres te bepalen van de hostnaam.
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-De dnsserver gaf als antwoord:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Dit betekent dat:
-<PRE>
- De cache niet in staat was om de hostnaam uit de URL te herleiden.
- Controleer of de naam klopt.
-</PRE>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Doorsturen niet toegestaan.
-</STRONG>
-</UL>
-
-<P>
-Deze cache zal uw verzoek niet doorsturen, omdat het een sibling relatie tracht te bewerkstelligen. Wellicht dat de client op %i een fout ingestelde cache is.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-FTP is uitgeschakeld.
-</STRONG>
-</UL>
-
-<P>
-Deze cache ondersteunt geen FTP.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Er is een FTP protocolfout voorgekomen
-tijdens het ophalen van de URL:
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-en ontving daarop het volgende antwoord:
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Dit kan veroorzaakt worden door een FTP URL met een absoluut pad (hetgeen niet in overeenstemming is met RFC 1738). Als dit de oorzaak is, dan kan het bestand gevonden worden op <A HREF="%B">%B</A>.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-De FTP authenticatie is mislukt
-tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-en ontving daarop het volgende antwoord:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-De volgende URL kon niet worden opgehaald:
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-en ontving daarop het volgende antwoord:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dit kan veroorzaakt worden door een FTP URL met een absoluut pad (hetgeen niet in overeenstemming is met RFC 1738). Als dit de oorzaak is, dan kan het bestand gevonden worden op <A HREF="%B">%B</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Succesvol: Bestand aangemaakt</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Bewerking succesvol</H1>
-<H2>Bestand aangemaakt</H2>
-<HR noshade size="1px">
-<P>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: FTP PUT/upload mislukt</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FTP PUT/upload mislukt</H2>
-<HR noshade size="1px">
-<P>
-Bij een poging om naar de volgende URL te schrijven:
-<A HREF="%U">%U</A>
-<P>
-stuurde Squid de volgende FTP opdracht:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-en ontving daarop dit antwoord:
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Dit betekent dat:
-<PRE>
-Controleer paden, permissies en schijfruimte en probeer het opnieuw.
-</PRE>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Succesvol: Bestand vernieuwd</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Bewerking succesvol</H1>
-<H2>Bestand vernieuwd</H2>
-<HR noshade size="1px">
-<P>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-De FTP server was te druk bezet tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-en ontving daarop het volgende antwoord:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het verwerken van het verzoek:
-<PRE>
-%R
-</PRE>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Ongeldig verzoek.
-</STRONG>
-</UL>
-
-<P>
-
-Een gedeelte van het HTTP verzoek is ongeldig. Mogelijke problemen:
-<UL>
-<LI>Ontbrekende of onbekende verzoekmethode (GET, POST)
-<LI>Ontbrekende URL
-<LI>Ontbrekende HTTP identificatie (HTTP/1.0)
-<LI>Het verzoek is mogelijk te lang
-<LI>De Content-Length ontbreekt voor het POST of PUT verzoek
-<LI>Er staat een ongeldig teken in de hostnaam; Het teken '_' is niet toegestaan.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het verwerken van het verzoek:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Ongeldige URL.
-</STRONG>
-</UL>
-
-<P>
-Een gedeelte van de gevraagde URL is ongeldig. Mogelijke problemen:
-<UL>
-<LI>Ontbrekend of onjuist toegangsprotocol (moet zijn: `http://' of vergelijkbaar)
-<LI>Ontbrekende hostnaam
-<LI>Ongeldige 'double-escape' in het URL pad
-<LI>Er staat een ongeldig teken in de hostnaam; Het teken '_' is niet toegestaan.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-De levensduur van de verbindings is verstreken.
-</STRONG>
-</UL>
-
-<P>
-Squid heeft het verzoek afgebroken omdat het de maximale verbindingslevensduur heeft overschreden.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Geen WAIS Relay.
-</STRONG>
-</UL>
-
-<P>
-Er is geen WAIS Relay host gedefinieerd voor deze Cache! Neem contact op met de cachebeheerder.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Een geldig document werd niet gevonden in de cache, en de <code>only-if-cached</code> richtlijn was ingesteld.
-</STRONG>
-</UL>
-
-<P>
-U heeft een verzoek gedaan met een <code>only-if-cached</code> cachebeheer richtlijn. Het document werd niet gevonden in de cache <em>of</em> er was een herbevestiging nodig die niet werd toegestaan door de <code>only-if-cached</code> richtlijn.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Leesfout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I> %E</I></PRE>
-
-<P>
-Een foutwaarde kwam voor tijdens het lezen van data van het netwerk. Probeer uw verzoek opnieuw.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Lees Timeout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I> %E</I></PRE>
-
-<P>
-Een timeout kwam voor bij het lezen van data van het netwerk. Het netwerk of de server kan niet beschikbaar of overbelast zijn. Probeer uw verzoek opnieuw.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<P>
-Deze cache is bezig met herstarten en kan daarom momenteel niet aan uw
-verzoek voldoen. Probeer uw verzoek zo nog eens.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Socket Fout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid is niet in staat een TCP socket aan te maken, waarschijnlijk als gevolg van een te hoge bezettingsgraad. Probeer uw verzoek opnieuw.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-De aanvraag of het antwoord is te groot.
-</STRONG>
-<P>
-Indien U een POST of PUT aanvraag stuurde, dan was uw aanvraag
-(hetgeen U probeert te verzenden) te groot. Indien u een GET
-aanvraag stuurde, dan was het antwoord (hetgeen U probeert te
-ontvangen) te groot. Deze grootte-beperkingen zijn ingesteld
-door de beheerder van deze cache. Neem contact op met de
-beheerder van deze cache, wanneer U van mening bent dat deze
-beperking onjuist is.
-</UL>
-<P>
-De beheerder van deze cache is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Niet ondersteunde verzoekmethode of protocol.
-</STRONG>
-</UL>
-
-<P>
-Squid ondersteunt niet alle verzoekmethoden voor alle toegangsprotocollen.
-U kunt bijvoorbeeld geen Gopher verzoek POSTen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URN kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URN kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URN:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Kan de URN niet herleiden.
-</STRONG>
-</UL>
-
-<P>
-Hmmm, verwacht niet teveel van URNs op %T :)
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Schrijffout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I> %E</I></PRE>
-
-<P>
-Een foutwaarde kwam voor tijdens het schrijven naar het netwerk. Probeer uw verzoek opnieuw.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Leeg object antwoord.
-</STRONG>
-</UL>
-
-<P>
-Squid ontving in het geheel geen data op dit verzoek.
-</P>
+++ /dev/null
-Thank you to Mark Visser <mark@cal026031.student.utwente.nl>
-Remco van Mook and Bart Koelman for creating these error
-pages in Dutch!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf als antwoord:
-<PRE><I> %E</I></PRE>
-
-<P>
-Dit betekent dat:
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Access Denied.
-</STRONG>
-<P>
-Access control configuration prevents your request from
-being allowed at this time. Please contact your service provider if
-you feel this is incorrect.
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Cache Access Denied</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Cache Access Denied</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Cache Access Denied.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, you are not currently allowed to request:
-<PRE> %U</PRE>
-from this cache until you have authenticated yourself.
-</P>
-
-<P>
-You need to use Netscape version 2.0 or greater, or Microsoft Internet
-Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please
-contact the <A HREF="mailto:%w%W">cache administrator</a> if you have
-difficulties authenticating yourself or
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">change</a> your default password.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Cache Manager Access Denied</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Cache Manager Access Denied</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Cache Manager Access Denied.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, you are not currently allowed to request:
-<PRE> %U</PRE>
-from this cache manager until you have authenticated yourself.
-</P>
-
-<P> You need to use Netscape version 2.0 or greater, or Microsoft Internet
-Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please
-contact the <A HREF="mailto:%w%W">cache administrator</a> if you have
-difficulties authenticating yourself or, if you <em>are</em> the
-administrator, read Squid documentation on cache manager interface and check
-cache log for more detailed error messages.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Unable to forward this request at this time.
-</STRONG>
-</UL>
-
-<P>
-This request could not be forwarded to the origin server or to any
-parent caches. The most likely cause for this error is that:
-<UL>
-<LI>The cache administrator does not allow this cache to make
- direct connections to origin servers, and
-<LI>All configured parent caches are currently unreachable.
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Connection to %I Failed
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-The remote host or network may be down. Please try the request again.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-Unable to determine IP address from host name for
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-The dnsserver returned:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The cache was not able to resolve the hostname presented in the URL.
- Check if the address is correct.
-</PRE>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Forwarding Denied.
-</STRONG>
-</UL>
-
-<P>
-This cache will not forward your request because it is trying to enforce a
-sibling relationship. Perhaps the client at %i is a cache which has been
-misconfigured.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-FTP is Disabled
-</STRONG>
-</UL>
-
-<P>
-This cache does not support FTP.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-An FTP protocol error occurred
-while trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-An FTP authentication failure occurred
-while trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-The following URL could not be retrieved:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-This might be caused by an FTP URL with an absolute path (which does
-not comply with RFC 1738). If this is the cause, then the file
-can be found at <A HREF="%B">%B</A>.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Successful: File Created</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation successful</H1>
-<H2>File created</H2>
-<HR noshade size="1px">
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: FTP upload failed</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>FTP PUT/upload failed</H2>
-<HR noshade size="1px">
-<P>
-While trying to PUT the following URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-and then received this reply
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-This means that:
-<PRE>
-Check path, permissions, diskspace and try again.
-</PRE>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Successful: File updated</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation successful</H1>
-<H2>File updated</H2>
-<HR noshade size="1px">
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-The FTP server was too busy while trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Request
-</STRONG>
-</UL>
-
-<P>
-Some aspect of the HTTP Request is invalid. Possible problems:
-<UL>
-<LI>Missing or unknown request method
-<LI>Missing URL
-<LI>Missing HTTP Identifier (HTTP/1.0)
-<LI>Request is too large
-<LI>Content-Length missing for POST or PUT requests
-<LI>Illegal character in hostname; underscores are not allowed
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid URL
-</STRONG>
-</UL>
-
-<P>
-Some aspect of the requested URL is incorrect. Possible problems:
-<UL>
-<LI>Missing or incorrect access protocol (should be `http://'' or similar)
-<LI>Missing hostname
-<LI>Illegal double-escape in the URL-Path
-<LI>Illegal character in hostname; underscores are not allowed
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Connection Lifetime Expired
-</STRONG>
-</UL>
-
-<P>
-Squid has terminated the request because it has exceeded the maximum
-connection lifetime.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-No Wais Relay
-</STRONG>
-</UL>
-
-<P>
-There is no WAIS Relay host defined for this Cache! Yell at the administrator.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Valid document was not found in the cache and <code>only-if-cached</code>
-directive was specified.
-</STRONG>
-</UL>
-
-<P>
-
-You have issued a request with a <code>only-if-cached</code> cache control
-directive. The document was not found in the cache, <em>or</em> it required
-revalidation prohibited by <code>only-if-cached</code> directive.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Read Error
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-An error condition occurred while reading data from the network. Please
-retry your request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Read Timeout
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-A Timeout occurred while waiting to read data from the network. The network
-or server may be down or congested. Please retry your request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<P>
-This cache is in the process of shutting down and can not
-service your request at this time. Please retry your
-request again soon.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Socket Failure
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid is unable to create a TCP socket, presumably due to excessive load.
-Please retry your request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-The request or reply is too large.
-</STRONG>
-<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large. If you are
-making a GET request, then the reply body (what you are trying
-to download) is too large. These limits have been established
-by the Internet Service Provider who operates this cache. Please
-contact them directly if you feel this is an error.
-</UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Unsupported Request Method and Protocol
-</STRONG>
-</UL>
-
-<P>
-Squid does not support all request methods for all access protocols.
-For example, you can not POST a Gopher request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URN not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>A URL for the requested URN could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URN:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Cannot Resolve URN
-</STRONG>
-</UL>
-
-<P>
-Hey, don't expect too much from URNs on %T :)
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Write Error
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-An error condition occurred while writing to the network. Please retry your
-request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Zero Sized Reply
-</STRONG>
-</UL>
-
-<P>
-Squid did not receive any data for this request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Accès interdit.
-</STRONG>
-<P>
-La configuration du contrôle d'accès interdit à votre requête d'être
-acceptée à cette heure-ci. Veuillez contacter votre
-prestataire de service si vous pensez que ceci n'a pas lieu d'être.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : Accès au cache interdit</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERREUR</H1>
-<H2>Accès au cache interdit</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Accès au cache interdit.
-</STRONG>
-</UL>
-</P>
-
-<P>Désolé, vous n'êtes actuellement pas autorisé
-à demander
-<PRE> %U</PRE>
-à ce cache tant que vous ne vous êtes pas identifié.
-</P>
-
-<P>
-Vous avez besoin de Netscape version 2.0 ou supérieure, ou Microsoft
-Internet Explorer 3.0, ou un navigateur conforme à HTTP/1.1 pour que
-ceci fonctionne. Veuillez contacter l'<A HREF="mailto:%w%W">administrateur du cache</a>
-si vous avez des difficultés à vous authentifier, ou
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">changez</a> votre mot de passe.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : Accès au gestionnaire de cache interdit</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERREUR</H1>
-<H2>Accès au gestionnaire de cache interdit</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Accès au gestionnaire de cache interdit.
-</STRONG>
-</UL>
-</P>
-
-<P>Désolé, vous n'êtes pas autorisé à accéder à
-<PRE> %U</PRE>
-au travers de ce gestionnaire de cache sans vous être identifié.
-</P>
-
-<P> Vous avez besoin de Netscape version 2.0 ou supérieure, ou
-Microsoft Internet Explorer 3.0, ou un navigateur conforme à HTTP/1.1
-pour que ceci fonctionne. Veuillez contacter l'<A HREF="mailto:%w%W">administrateur du cache</a>
-si vous avez des difficultés à vous authentifier ou, si vous
-<em>êtes</em> l'administrateur, lisez la documentation de Squid sur
-l'interface du gestionnaire de cache, et vérifiez l'historique du
-cache pour des messages d'erreur plus détaillés.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Impossible de relayer cette requête en ce moment.
-</STRONG>
-</UL>
-
-<P>
-Cette requête n'a pu être transmise au serveur d'origine ou à l'un
-des caches parents. La cause la plus probable de cette erreur est :
-<UL>
-<LI>L'administrateur du cache a interdit à ce cache de faire des
- connexions directes aux serveurs d'origine, et
-<LI>tous les parents configurés sont actuellement injoignables.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-La connexion a échoué
-</STRONG>
-</UL>
-
-<P>
-Le système a retourné :
-<PRE><I> %E</I></PRE>
-
-<P>
-La machine distante ou le réseau sont peut-être hors service. Veuillez
-réitérer votre requête.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<BLOCKQUOTE>
-Impossible d'associer une adresse IP à la machine
-<I>%H</I>.
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Le serveur de noms a retourné :
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-En d'autres termes :
-<PRE>
- Le cache n'a pas été en mesure de résoudre le nom de
-machine présenté dans l'URL.
- Vérifiez si l'adresse est correcte.
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Relais interdit.
-</STRONG>
-</UL>
-
-<P>
-Ce cache ne fera pas suivre votre requête car il tente de respecter une relation
-de voisinage. Le client %i est peut-être un cache mal configuré.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Le FTP est désactivé.
-</STRONG>
-</UL>
-
-<P>
-Ce cache ne prend pas en compte le protocole FTP.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-Une erreur du protocole FTP est survenue
-en essayant de charger l'URL suivante :
-<A HREF="%U">%U</A>
-<P>
-Squid a envoyé la commande FTP suivante :
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-et a reçu la réponse :
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Ceci pourrait être dû à une URL FTP contenant un chemin absolu (ce
-qui est en contradiction avec la RFC 1738). Dans ce cas,
- le fichier peut être récupéré à l'URL : <A HREF="%B">%B</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-Une erreur d'authentification sur un FTP a eu lieu.
-En tentant de charger l'URL:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoyé la commande FTP suivante:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-et a recu en réponse
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-L'URL suivante n'a pu être chargée:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoyé la commande FTP suivante:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-et a recu en retour:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Ceci pourrait etre causé par une URL de FTP avec un
-chemin absolu (ce qui n'est pas conforme au RFC 1738) . Si c'est
-effectivement le cas, alors le fichier se trouve à
-l'adresse <A HREF="%B">%B</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT réussi : Fichier créé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Opération réussie</H1>
-<H2>Fichier créé</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : envoi FTP défectueux</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>FTP PUT/envoi défectueux</H2>
-<HR noshade size="1px">
-<P>
-En essayant d'envoyer (PUT) l'URL suivante :
-<A HREF="%U">%U</A>
-<P>
-Squid a envoyé la commande FTP suivante :
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-et a reçu la réponse :
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-En d'autres termes :
-<PRE>
-Vérifiez le chemin, les droits, l'espace disque et essayez à nouveau.
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT réussi : Fichier mis à jour</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Opération réussie</H1>
-<H2>Fichier mis à jour</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée.</H2>
-<HR noshade size="1px">
-<P>
-Le serveur FTP était trop encombré pour charger l'URL:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoyé la commande FTP suivante:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-et a recu la réponse suivante en retour:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de traiter la requête :
-<PRE>
-%R
-</PRE>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Requête invalide
-</STRONG>
-</UL>
-
-<P>
-Quelque chose est invalide dans la requéte HTTP. Problèmes envisageables :
-<UL>
-<LI>Méthode de requête absente ou inconnue (GET, POST)
-<LI>Absence d'URL
-<LI>Absence d'identifiant HTTP (HTTP/1.0)
-<LI>La requête est peut-être trop volumineuse
-<LI>Champ <code>Content-Length</code> absent pour les requêtes POST ou PUT
-<LI>Caractère illégal dans le nom de la machine, les soulignés (underscores) ne sont pas autorisés.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-URL invalide
-</STRONG>
-</UL>
-
-<P>
-Quelque chose dans l'URL est incorrect. Problèmes envisageables :
-<UL>
-<LI>Protocole d'accès absent ou incorrect (il devrait être de la forme `http://')
-<LI>Nom de machine absent
-<LI>Double échappement illégal dans le chemin de l'URL
-<LI>Caractère illégal dans le nom de la machine, les soulignés (underscores) ne sont pas autorisés
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Durée de vie de la connexion dépassée
-</STRONG>
-</UL>
-
-<P>
-Squid a mis fin à cette requête car elle a excédé la
-durée de vie maximale.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Pas de relais WAIS
-</STRONG>
-</UL>
-
-<P>
-Il n'y a pas de machine définie comme relais WAIS sur ce cache !
-Adressez-vous à votre administrateur.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Aucun document valide n'a été trouvé dans le cache et la directive
-<code>only-if-cached</code> a été spécifiée.
-</STRONG>
-</UL>
-
-<P>
-
-Vous avez formulé une requête avec la directive de contrôle
-<code>only-if-cached</code>. Le document n'a pas été trouvé dans le cache,
-<em>ou</em> il nécessite une revalidation, interdite par la directive
-<code>only-if-cached</code>.
-
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Erreur de lecture
-</STRONG>
-</UL>
-
-<P>
-Le système a retourné :
-<PRE><I> %E</I></PRE>
-
-<P>
-Une erreur est survenue en essayant d'accéder au réseau.
-Veuillez réitérer votre requête.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Délai de lecture dépassé
-</STRONG>
-</UL>
-
-<P>
-Le système a retourné :
-<PRE><I> %E</I></PRE>
-
-<P>
-Un délai critique s'est écoulé en attendant des
-données du réseau. Le réseau ou le serveur sont
-peut-être hors service ou défaillants. Veuillez réitérer
-votre requête.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: La requete demandée n'a pu etre effectuée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>La requete demandée n'a pu etre effectuée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante fut rencontrée:
-<UL>
-<P>
-Ce cache est en cours de mise hors-service temporaire et il
-lui est impossible de satisfaire votre requete actuellement.
-Veuillez réiterer votre requete ultérieurement.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Erreur de socket
-</STRONG>
-</UL>
-
-<P>
-Le système a retourné:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid n'est pas en mesure de créer une socket TCP, probablement
-à cause d'une charge excessive. Veuillez réitérer votre
-requête.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-The request or reply is too large.
-</STRONG>
-<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large. If you are
-making a GET request, then the reply body (what you are trying
-to download) is too large. These limits have been established
-by the Internet Service Provider who operates this cache. Please
-contact them directly if you feel this is an error.
-</UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Combinaison de méthode et de protocole non gérée
-</STRONG>
-</UL>
-
-<P>
-Squid ne permet pas toutes les méthodes de requêtes pour tous les
-protocoles. Vous ne pouvez par exemple pas utiliser le protocole POST dans une requête Gopher.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URN suivante n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>Une URL de l'URN n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URN :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Impossible de résoudre l'URN
-</STRONG>
-</UL>
-
-<P>
-Hé ! N'espérez pas trop des URNs de %T :)
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Erreur d'écriture
-</STRONG>
-</UL>
-
-<P>
-Le système a retourné :
-<PRE><I> %E</I></PRE>
-
-<P>
-Une erreur s'est produite lors de l'accès au réseau. Veuillez
-réitérer votre requête.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-Réponse de taille nulle
-</STRONG>
-</UL>
-
-<P>
-Squid n'a reçu aucune donnée pour cette requête.
-</P>
+++ /dev/null
-Thank you to Frank DENIS -Jedi/Sector One- <j@4u.net> for
-creating these error pages in French!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demandée n'a pu être chargée</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL :
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a été rencontrée :
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Le système a retourné :
-<PRE><I> %E</I></PRE>
-
-<P>
-En d'autres termes :
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Zugriff verweigert</STRONG>
-</UL>
-
-<P>
-Aufgrund von Zugriffsbeschränkungen ist Ihre Anfrage zur Zeit
-nicht erlaubt.<br>
-Bitte kontaktieren Sie Ihren Service Provider, wenn Sie der Meinung
-sind, daß dies nicht korrekt ist.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Cache-Zugriff Verweigert</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEHLER</H1>
-<H2>Cache-Zugriff Verweigert</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Cache-Zugriff verweigert</STRONG>
-</P>
-</UL>
-
-<P>Leider sind Sie zur Zeit nicht berechtigt
-<PRE> %U</PRE>
-von diesem Cache zu beziehen, bis Sie sich authentifiziert haben.
-</P>
-
-<P>
-Sie benötigen hierzu Netscape Version 2.0 (oder höher), Microsoft Internet
-Explorer 3.0 oder einen anderen HTTP/1.1 Browser. Bitte kontaktieren Sie
-den <A HREF="mailto:%w%W">Cache-Administrator</a>, wenn Sie Probleme haben,
-sich zu authentifizieren, oder
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">ändern</a> Sie Ihr Passwort.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Cache-Manager-Zugriff Verweigert</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEHLER</H1>
-<H2>Cache-Manager-Zugriff verweigert</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Cache-Manager-Zugriff verweigert</STRONG>
-</UL>
-</P>
-
-<P>Leider sind Sie zur Zeit nicht berechtigt
-<PRE> %U</PRE>
-von diesem Cache zu beziehen, bis Sie sich authentifiziert haben.
-</P>
-
-<P>
-Sie benötigen hierzu Netscape Version 2.0 (oder höher), Microsoft Internet
-Explorer 3.0 oder einen anderen HTTP/1.1 Browser.
-Bitte kontaktieren Sie den <A HREF="mailto:%w%W">Cache-Administrator</a>, wenn Sie Probleme haben,
-sich zu authentifizieren, oder wenn Sie der Administrator <em>sind</em>,
-lesen Sie die Squid-Dokumentation über das Cache-Manager
-Interface und überprüfen Sie das Cache-Log für detailiertere
-Fehlermeldungen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Die Anfrage kann zur Zeit nicht weitergeleitet werden</STRONG>
-</UL>
-
-<P>
-Diese Anfrage konnte nicht zum WWW-Server oder einem
-Parent-Cache weitergeleitet werden. Der wahrscheinlichste Grund für
-diesen Fehler ist:
-<UL>
-<LI>Der Cache-Administrator erlaubt nicht, daß dieser Server
- direkte Verbindungen zu WWW-Servern aufbaut, und
-<LI>alle konfigurierten Parent-Caches sind zur Zeit nicht erreichbar.
-</UL>
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Verbindung schlug fehl</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I> %E</I></PRE>
-zurück.
-<P>
-Der Zielrechner oder das Zielnetzwerk könnten deaktiviert sein.
-Bitte versuchen Sie die Anfrage noch einmal.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Es war unmöglich, eine IP-Adresse für <I>%H</I>
-zu bestimmen.
-</STRONG>
-</UL>
-
-<P>
-Der DNS-Server gab:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-zurück.
-<P>
- Der Cache war nicht in der Lage, den in der URL enthaltenen Hostnamen
- aufzulösen.
- Überprüfen Sie, ob die Adresse korrekt ist.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Weiterleiten verweigert</STRONG>
-</UL>
-
-<P>
-Dieser Cache wird Ihre Anfrage nicht weiterleiten, da er versucht, eine
-Sibling-Beziehung zu erzwingen.
-Wahrscheinlich ist der Client bei %i ein Cache, der falsch
-konfiguriert wurde. Informieren Sie dessen Administrator und/oder überprüfen
-Sie Ihre Proxy-Einstellungen.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>FTP ist deaktiviert</STRONG>
-</UL>
-
-<P>
-Dieser Cache unterstützt kein FTP.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Ein FTP-Protokollfehler ist aufgetreten
-während des Versuches, den URL:
-<A HREF="%U">%U</A><BR>
-zu laden.
-
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<PRE><STRONG> %f</STRONG></PRE>
-und erhielt die Antwort:
-<PRE><STRONG> %F</STRONG></PRE>
-<P>
-Dies könnte durch einen FTP-URL verursacht worden sein, der ein
-absoluter Pfad ist (was nicht der RFC 1738 entspricht).
-Wenn dies der Fall sein sollte, kann die Datei unter <A
-HREF="%B">%B</A> gefunden werden.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Ein FTP-Berechtigungsfehlschlag ist aufgetreten während des Versuches, den URL: <A HREF="%U">%U</A><BR>
-zu laden.
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-und erhielt die Antwort:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat ein Problem auf:
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-und erhielt die Antwort:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dies könnte durch einen FTP-URL verursacht worden sein, der ein
-absoluter Pfad ist (was nicht der RFC 1738 entspricht).
-Wenn dies der Fall sein sollte, kann die Datei unter <A href="%B">%B</A> gefunden werden.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Erfolgreich: Datei angelegt</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation erfolgreich</H1>
-<H2>Datei angelegt</H2>
-<HR noshade size="1px">
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: FTP Upload fehlgeschlagen</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>FTP PUT/Upload fehlgeschlagen</H2>
-<HR noshade size="1px">
-<P>
-Während dem PUT/Upload-Versuch zum URL:
-<A HREF="%U">%U</A><BR>
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<PRE><STRONG> %f</STRONG></PRE>
-und erhielt die Antwort:
-<PRE><STRONG> %F</STRONG></PRE>
-<P>
-Überprüfen Sie den Pfad, die Zugriffsrechte und den
-Plattenplatz. Versuchen Sie es dann erneut.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT erfolgreich: Datei aktualisiert</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation erfolgreich</H1>
-<H2>Datei aktualisiert</H2>
-<HR noshade size="1px">
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Der FTP Server war zu beschäftigt während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden.
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-und erhielt die Antwort:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, die Anfrage
-<PRE>
-%R
-</PRE>
-zu verarbeiten, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Ungültige Anfrage</STRONG>
-</UL>
-
-<P>
-Ein Teil der HTTP-Anfrage ist ungültig. Mögliche Gründe:
-<UL>
-<LI>Fehlende oder unbekannte Anfrage-Methode (GET, POST)
-<LI>Fehlender URL
-<LI>Fehlender HTTP Identifier (HTTP/1.0)
-<LI>Anfrage ist zu groß
-<LI>Content-Length fehlt für POST- oder PUT-Anfragen
-<LI>Ungültige Zeichen im Hostnamen - z.B. Unterstriche ('_'),
- Umlaute und Kommata sind nicht erlaubt.
-</UL>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, die Anfrage
-<PRE>
-%R
-</PRE>
-<P>
-zu verarbeiten, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>
-Ungültige Antwort
-</STRONG>
-</UL>
-
-<P>
-Die HTTP Antwortmeldung des kontaktierten Servers konnte nicht verstanden werden
-oder war auf andere Weise missgebildet. Bitte kontaktieren Sie den Betreiber der
-betreffenden Webseite. Wenn nötig kann Ihr Cache Administrator in der Lage sein,
-Sie mit mehr Details über die genaue Ursache des Problems zu versorgen.
-
-<P>Ihr Cache Administrator ist <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Ungültiger URL</STRONG>
-</UL>
-
-<P>
-Ein Teil des angefragten URL ist ungültig. Mögliche Gründe:
-<UL>
-<LI>Fehlendes oder unkorrektes Zugriffsprotokoll (sollte 'http://' oder ähnlich sein)
-<LI>Fehlender Hostname
-<LI>Ungültiges 'double-escape' im URL-Pfad
-<LI>Ungültige Zeichen im Hostnamen - z.B. Unterstriche ('_'),
- Umlaute und Kommata sind nicht erlaubt.
-</UL>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Verbindungs-Lebensdauer ist abgelaufen</STRONG>
-</UL>
-
-<P>
-Squid hat die Anfrage abgebrochen, weil sie die maximale
-Verbindungs-Lebensdauer überschritten hat.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Kein WAIS-Relay</STRONG>
-</UL>
-
-<P>
-Es sind keine WAIS-Relay-Rechner für diesen Cache definiert.
-Teilen Sie dies Ihrem <A HREF="mailto:%w%W">Cache Administrator</A> mit.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Ein gültiges Dokument wurde nicht im Cache gefunden, und die '<code>only-if-cached</code> directive' war angegeben.
-</STRONG>
-</UL>
-
-<P>
-Sie haben eine Anfrage mit einer <code>only-if-cached</code>
-Cache-Control-Direktive abgeschickt. Das Dokument wurde nicht im Cache gefunden,
-<em>oder</em> es hätte eine Überprüfung benötigt,
-die durch die <code>only-if-cached</code> dicective verboten wurde.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Lesefehler</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I> %E</I></PRE>
-zurück.
-<P>
-Bei dem Versuch, Daten vom Netzwerk zu lesen, trat ein Fehler
-auf. Bitte versuchen Sie Ihre Anfrage erneut.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Read Timeout</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I> %E</I></PRE>
-zurück.
-<P>
-Bei dem Versuch Daten vom Netzwerk zu lesen, mußte zu lange
-gewartet werden (timeout).
-Das Netzwerk oder der Server könnten deaktiviert oder
-überlastet sein. Bitte versuchen Sie Ihre Anfrage erneut.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat folgendes Problem auf:
-
-<UL>
-<LI>Dieser Cache ist im Begriff herunterzufahren und kann Ihre Anfrage
-zur Zeit nicht bearbeiten. Bitte wiederholen Sie Ihre Anfrage etwas später.
-</UL>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Socket Failure</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I> %E</I></PRE>
-zurück.
-<P>
-Squid ist nicht in der Lage, einen TCP-Socket zu öffnen,
-wahrscheinlich wegen extremer Überlastung.
-Bitte versuchen Sie Ihre Anfrage erneut.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat folgendes Problem auf:
-<UL>
-<LI>
-<STRONG>
-Die Anfrage oder die Antwort ist zu groß.
-</STRONG>
-</UL>
-
-<P>
-Wenn Sie eine POST oder PUT Anfrage gemacht haben, dann ist der 'request body'
-(das was Sie versucht haben hochzuladen) zu groß. Wenn Sie eine GET
-Anfrage gemacht haben, dann ist der 'reply body' (das was Sie versuchen
-herunterzuladen) zu groß. Diese Beschränkungen wurden von Ihrem
-Internet Service Provider, der diesen Cache Server unterhält, festgelegt.
-Bitte setzen Sie sich direkt mit ihm in Kontakt wenn Sie meinen, daß
-dies ein Fehler ist.
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Nicht unterstützte Zugriffsmethode oder nicht unterstütztes Protokoll</STRONG>
-</UL>
-
-<P>
-Squid unterstützt nicht alle Anfragemethoden für alle
-Zugriffsprotokolle.
-Beispielsweise können Sie keine Gopher-Anfrage POST'en.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Die angeforderete URN konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Ein URL für den angeforderten URN konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URN
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Die URN konnte nicht aufgelöst werden</STRONG>
-</UL>
-
-<P>
-Erwarten Sie nicht zu viel von URNs auf %T
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Schreibfehler</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I> %E</I></PRE>
-zurück.
-<P>
-Ein Fehler trat während des Schreibens zum Netzwerk auf.
-Bitte wiederholen Sie Ihre Anfrage.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Leeres Dokument</STRONG>
-</UL>
-
-<P>
-Squid hat keinerlei Daten auf diese Anfrage empfangen.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-Thank you to Bernd P. Ziller <bziller@BA-Stuttgart.De>,
-Jens Frank <jf@jf.kki.org>, and Anke S. <as@kki.org> for
-creating these error pages in German!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Während des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden,
-<P>
-trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I> %E</I></PRE>
-zurück.
-<P>
-Das bedeutet, daß:
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Accesso Negato.
-</STRONG>
-<P>
-La configurazione del controllo d'accesso non permette alla vostra richiesta
-di essere soddisfatta. Contattate il vostro fornitore se pensate che
-ciò sia errato.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: Negato l'accesso alla cache</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERRORE</H1>
-<H2>Negato l'accesso alla cache</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Negato l'accesso alla cache
-</STRONG>
-</UL>
-</P>
-
-<P>Ci dispiace, ma non siete autorizzati a recuperare
-<PRE> %U</PRE>
-da questa cache fino a quando non vi sarete autenticati.
-</P>
-
-<P>
-Dovete utilizzare Netscape versione 2.0 o maggiore, o Microsoft
-Internet Explorer 3.0, o un browser compatibile HTTP/1.1 perché
-ciò sia possibile. Contattate
-<A HREF="mailto:%w%W">l'amministratore della cache</a> se avete
-difficoltà ad autenticarvi o
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">cambiate</a> la vostra
-password.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: Negato l'accesso al Cache Manager</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERRORE</H1>
-<H2>Negato l'accesso al Cache Manager</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Negato l'accesso al Cache Manager.
-</STRONG>
-</UL>
-</P>
-
-<P>Ci dispiace, ma non siete autorizzati a recuperare
-<PRE> %U</PRE>
-da questo cache manager fino a quando non vi sarete autenticati.
-</P>
-
-<P>Dovete utilizzare Netscape versione 2.0 o maggiore, o Microsoft
-Internet Explorer 3.0, o un browser compatibile HTTP/1.1 perché
-ciò sia possibile. Contattate
-<A HREF="mailto:%w%W">l'amministratore della cache</a> se avete
-difficoltà ad autenticarvi o, se <em>siete</em> l'amministratore,
-consultate la documentazione di Squid sull'interfaccia cache manager
-e controllate i log della cache per messaggi d'errore dettagliati.
-</p>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Impossibile inoltrare questa richiesta.
-</STRONG>
-</UL>
-
-<P>
-La richiesta non può essere inoltrata al server originale
-o ad alcuna delle cache padri. La causa più probabile è che:
-<UL>
-<LI>l'amministratore della cache non consente che questa cache si colleghi
-direttamente ai server originali;
-<LI>tutte le cache padri configurate sono al momento irrangiungibili.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Collegamento a %I fallito
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I> %E</I></PRE>
-
-<P>
-Il server o la rete esterna possono essere scollegati. Riprovate la richiesta.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<BLOCKQUOTE>
-Impossibile determinare l'indirizzo IP dal nome dell'host per
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Il dnsserver ha risposto:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Ciò significa che:
-<PRE>
-La cache non ha potuto risolvere il nome dell'host presente nella URL.
-Controllate che l'indirizzo sia corretto.
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<BLOCKQUOTE>
-Elaborazione ESI fallita.
-</BLOCKQUOTE>
-
-<P>
-Il processore ESI ha risposto:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-Ciò significa che:
-<PRE>
- Il "surrogate" server non ha potuto elaborare la template ESI. Si prega di segnalare questo errore al webmaster.
-</PRE>
-<P>Il vostro webmaster è <A HREF="mailto:%w">%w</A>.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Inoltramento vietato.
-</STRONG>
-</UL>
-
-<P>
-Questa cache non inoltra la vostra richiesta in quanto si vuole
-stabilire una relazione di "fratellanza". Probabilmente il cliente %i
-è una cache mal configurata.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-FTP è disabilitato
-</STRONG>
-</UL>
-
-<P>
-Questa cache non supporta FTP.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Un errore nel protocollo FTP è avvenuto
-mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-Squid ha spedito il seguente comando FTP:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-e ha ricevuto in risposta
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Questo può essere stato causato da un'URL FTP con un percorso
-assoluto (scorretta secondo la RFC 1738). Se questa è la
-causa, allora il file può essere trovato a <A HREF="%B">%B</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Un errore di autenticazione tramite FTP è avvenuto
-mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-Squid ha inviato il seguente comando FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-e ha ricevuto la seguente risposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-La seguente URL non può essere recuperata:
-<A HREF="%U">%U</A>
-<P>
-Squid ha inviato il seguente comando FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-e ha ricevuto la risposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Questo potrebbe essere dovuto ad una URL FTP con un percorso assoluto
-(che non è conforme al RFC 1738). In tal caso, si può
-recuperare il file in <A HREF="%B">%B</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Completato: File Creato</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operazione completata</H1>
-<H2>File aggiornato</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: Trasferimento FTP fallito</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>Trasferimento FTP fallito</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di trasferire la seguente URL:
-<A HREF="%U">%U</A>
-<P>
-Squid ha spedito il seguente comando FTP:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-e ha ricevuto in risposta
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Ciò significa che:
-<PRE>
-Controllate il percorso, i permessi, lo spazio sul disco e riprovate.
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Completato: File aggiornato</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operazione completata</H1>
-<H2>File aggiornato</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Il server FTP era troppo occupato al momento di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-Squid ha inviato il seguente comando FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-e ha ricevuto la seguente risposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Errore protocollo ICAP.
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I> %E</I></PRE>
-
-<P>
-Ciò significa che:
-Alcune fasi della comunicazione ICAP sono fallitte. Possibili problemi:
-<UL>
-<LI>Il server ICAP non è raggiungibile.
-<LI>Risposta illegale dal server ICAP.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si elaborava la richiesta:
-<PRE>
-%R
-</PRE>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Richiesta non valida
-</STRONG>
-</UL>
-
-<P>
-Alcuni aspetti della richiesta HTTP non sono validi. Possibili problemi:
-<UL>
-<LI>Metodo mancante o sconosciuto (GET, POST)
-<LI>URL mancante
-<LI>Identificativo HTTP mancante (HTTP/1.0)
-<LI>La richiesta può essere troppo grande
-<LI>Mancanza di <i>Content-Length</i> per richieste POST o PUT
-<LI>Caratteri illegali nel nome dell'host; gli "underscores" ('<TT>_</TT>')
-non sono permessi
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si elaborava la richiesta:
-<PRE>
-%R
-</PRE>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Risposta non valida
-</STRONG>
-</UL>
-
-<P>
-Il messaggio contenente la risposta HTTP ricevuto dal server che si sta
-contattando non può essere interpretato od è stato in qualche modo alterato.
-Si prega di contattare un operatore del sito. Se necessario, l'amministratore della vostra
-cache potrà fornirvi maggiori dettagli sull'esatta natura del problema.
-
-<P>L'amministratore della vostra cache è <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-URL non valida
-</STRONG>
-</UL>
-
-<P>
-Alcuni aspetti dell'URL richiesta sono errati. Possibili problemi:
-<UL>
-<LI>Protocollo d'accesso mancante o errato (dev'essere `http://' o simile)
-<LI>Nome dell'host mancante
-<LI>Errata doppia conversione di caratteri nell'<i>URL-Path</i>
-<LI>Caratteri illegali nel nome dell'host; gli "underscores" ('<TT>_</TT>')
-non sono permessi
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Durata massima della connessione raggiunta
-</STRONG>
-</UL>
-
-<P>
-Squid ha chiuso la connessione in quanto ha raggiunto
-la durata massima consentita.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Nessun servizio WAIS
-</STRONG>
-</UL>
-
-<P>
-Non c'è nessun servizio WAIS definito per questa cache!
-Segnalare all'amministratore.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Un documento valido non è stato trovato in questa cache ed è
-stata specificata l'istruzione "solo se in cache".
-</STRONG>
-</UL>
-
-<P>
-
-Avete formulato una richiesta contenente la direttiva di controllo
-"solo se in cache" (<code>only-if-cached</code>). Il documento non
-è stato trovato nella cache, <em>oppure</em> necessitava di una
-ri-validazione proibita dall'istruzione <code>only-if-cached</code>.
-
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Errore di lettura
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I> %E</I></PRE>
-
-<P>
-Una condizione di errore è avvenuta mentre si leggevano i dati
-dalla rete. Riprovate la richiesta.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Attesa scaduta per la lettura
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I> %E</I></PRE>
-
-<P>
-Il tempo di attesa è scaduto mentre si attendeva risposta dalla rete.
-La rete o il server possono essere scollegati o congestionati.
-Riprovate la richiesta.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Impossibile stabilre una conessione di tipo sicuro verso %I
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I> %E</I></PRE>
-
-<P>
-Questo proxy ed il sistema remoto non sono riusciti a negoziare delle impostazioni di
-sicurezza mutuamente accettabili per gestire la vostra richiesta. È possibile che il sistema remoto
-non supporti connessioni di tipo sicuro, o che il proxy non non reputi accettabili le
-credenziali di sicurezza del sistema remoto.
-
-<P>L'amministratore della cache è <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Cercando di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È occorso il seguente errore:
-<UL>
-<P>
-Questa cache è in fase di shutdown e non può
-provvedere alla vostra richiesta in questo momento. Si prega
-di riprovare più tardi.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Socket Failure
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid è impossibilitato a creare un socket TCP, probabilmente
-a causa di un carico eccessivo. Riprovate la richiesta.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-La richiesta o la risposta è troppo grande.
-</STRONG>
-<P>
-Se state eseguendo una richiesta POST o PUT, allora il corpo della richiesta
-(l'oggetto di cui state tendando l'upload) è troppo grande. Se state
-eseguendo una richiesta GET, allora il corpo della risposta (l'oggetto di cui
-state tendando il download) è troppo grande. Questi limiti sono stati
-impostati dal gestore di questa cache. Se ritenete che questo sia un errore
-siete pregati di contattarlo direttamente.
-</UL>
-<P>
-L'amministratore di questa cache è <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Metodo e protocollo della richiesta non supportati
-</STRONG>
-</UL>
-
-<P>
-Squid non supporta tutte i metodi richiesti per tutti i protocolli
-d'accesso. Ad esempio, non è possibile una richiesta POST per
-un Gopher.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URN richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>Non può essere recuperata una URL per la URN richiesta</h2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URN:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Impossibile risolvere la URN
-</STRONG>
-</UL>
-
-<P>
-Non aspettatevi molte URN nel %T! :)
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Errore di scrittura
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I> %E</I></PRE>
-
-<P>
-Un errore è avvenuto mentre si scriveva in rete.
-Riprovate la vostra richiesta.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Risposta di dimensione nulla
-</STRONG>
-</UL>
-
-<P>
-Squid non ha ricevuto alcun dato in risposta alla richiesta.
-</P>
+++ /dev/null
-Thank you to Alessio Bragadini <alessio@dsnet.it> and Marco Mesturino
-<sw_tools@beatles.cselt.it> for creating these error pages in Italian!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERRORE: La URL richiesta non può essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non può essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-È avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha riportato:
-<PRE><I> %E</I></PRE>
-
-<P>
-Questo significa che:
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
-
DEFAULT_ERROR_DIR = $(errordir)
-INSTALL_LANGUAGES = @ERR_LANGUAGES@
+# List of automated translations possible:
+TRANSLATIONS = \
+ ca \
+ da \
+ de \
+ en en-au en-gb \
+ es \
+ fr \
+ id \
+ it \
+ nl \
+ pt-br \
+ sv \
+ uk
+
+# Legacy language contributions...
+#
LANGUAGES = \
Armenian \
Azerbaijani \
Bulgarian \
- Catalan \
Czech \
- Danish \
- Dutch \
- English \
Estonian \
Finnish \
- French \
- German \
Greek \
Hebrew \
Hungarian \
- Italian \
Japanese \
Korean \
Lithuanian \
Serbian \
Simplify_Chinese \
Slovak \
- Spanish \
- Swedish \
Traditional_Chinese \
- Turkish \
- Ukrainian-1251 \
- Ukrainian-koi8-u \
- Ukrainian-utf8
+ Turkish
install-data-local:
- @for l in $(INSTALL_LANGUAGES); do \
+ @for l in $(LANGUAGES); do \
$(mkinstalldirs) $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l && \
for f in $(srcdir)/$$l/ERR_*; do \
echo "$(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l"; \
$(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l; \
- done \
+ done; \
+ done; \
+ for l in $(TRANSLATIONS) templates; do \
+ if test -d $(srcdir)/$$l; then \
+ $(mkinstalldirs) $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l && \
+ for f in $(srcdir)/$$l/ERR_*; do \
+ echo "$(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l"; \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l; \
+ done; \
+ fi \
done
uninstall-local:
- @for l in $(INSTALL_LANGUAGES); do \
+ @ for l in $(LANGUAGES); do \
for f in $(srcdir)/$$l/ERR_*; do \
rm -f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l/`basename $$f`; \
- done \
+ done; \
+ done; \
+ for l in $(TRANSLATIONS) templates; do \
+ if test -d $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l; then \
+ for f in $(srcdir)/$$l/ERR_*; do \
+ rm -f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l/`basename $$f`; \
+ done; \
+ fi \
done
# undocumented hack. You can use this target to create multi-lingual
#
# by Andres Kroonmaa <andre@mail.lbi.ee>
#
+# UPDATE: this hack completely breaks HTML standards and with the addition
+# of language translations is now largely obsolete.
+# It will be removed without notice at some future date.
+#
addlang: all
-@if test -d $(srcdir)/$(ADDLANG); then \
if test -d $(DEFAULT_ERROR_DIR)/$(DESTLANG); then \
fi
dist-hook:
- @ for lang in $(LANGUAGES); do \
- if test "$$lang" = .; then :; else \
+ for lang in $(LANGUAGES); do \
+ if test -d $(srcdir)/$$lang ; then \
test -d $(distdir)/$$lang \
|| mkdir $(distdir)/$$lang \
|| exit 1; \
cp -p $(srcdir)/$$lang/ERR_* $(distdir)/$$lang \
|| exit 1; \
fi; \
- done
+ done; \
+ $(MAKE) translate; \
+ for lang in $(TRANSLATIONS); do \
+ if test -d $(srcdir)/$$lang ; then \
+ test -d $(distdir)/$$lang \
+ || mkdir $(distdir)/$$lang \
+ || exit 1; \
+ cp -p $(srcdir)/$$lang/ERR_* $(distdir)/$$lang \
+ || exit 1; \
+ fi; \
+ done
+
+translate:
+ @ if test "$(PO2HTML)" != "" ; then \
+ for lang in $(TRANSLATIONS); do \
+ test -d $$lang && rm -r $$lang; \
+ mkdir $$lang; \
+ cd $$lang; \
+ echo -n "Translate '$$lang' ..."; \
+ for f in `ls -1 ../templates`; do \
+ $(PO2HTML) --progress=none -i ../$$lang.po -t ../templates/$$f >$$f || exit 1; \
+ done; \
+ echo "done."; \
+ cd ..; \
+ done; \
+ else \
+ echo "WARNING: Translation toolkit was not detected."; \
+ echo "A drop-in bundle of pre-translated files is available from"; \
+ echo "http://www.squid-cache.org/Versions/langpack/"; \
+ fi
+
+all:
+ $(MAKE) translate
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
Sistem za kontrolu pristupa konfigurisan je tako da vam u ovom trenutku pristup nije dozvoljen.
Ako smatrate da to nije u redu, molimo da kontaktirate va\9aeg servis provajdera.
</UL>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
-
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>GRE\8aKA: Pristup proxy/cache serveru nije dozvoljen</TITLE>
+<TITLE>GRE\8aKA: Pristup proksi/ke\9a serveru nije dozvoljen</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
<H1>GRE\8aKA</H1>
-<H2>Pristup proxy/cache serveru nije dozvoljen/H2>
+<H2>Pristup proksi/ke\9a serveru nije dozvoljen</H2>
<HR noshade size="1px">
<P>
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
-Pristup proxy/cache serveru nije dozvoljen
-</STRONG>
+Pristup proksi/ke\9a serveru nije dozvoljen</STRONG>
</UL>
</P>
<P>Na \9ealost trenutno vam nije dozvoljeno da zahtevate:
<PRE> %U</PRE>
-iz ovog proxy servera pre nego \9ato se ne autentifikujete.
+iz ovog proksi servera pre nego \9ato se ne autentifikujete.
</P>
<P>
-Da bi to funkcionisalo potreban vam je Netscape verzija 2 i vi\9ae ili
-Microsoft Internet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
+Da bi to funkcionisalo potreban vam je Netscape verzija 2 ili novija ili
+Microsoft Intenet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
Ukoliko budete imali problema oko autentifikacije molimo kontaktirajte
-<A HREF="mailto:%w%W">proxy administratora</a> ili \9eelite da
+<A HREF="mailto:%w">proksi administratora</a> ili \9eelite da
<A HREF="http://%h/cgi-bin/chpasswd.cgi">promenite</a> svoju poèetnu lozinku.
</P>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>GRE\8aKA: Pristup proxy/cache server menad\9eeru nije dozvoljen</TITLE>
+<TITLE>GRE\8aKA: Pristup proksi/ke\9a server menad\9eeru nije dozvoljen</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
<H1>GRE\8aKA</H1>
-<H2>Pristup proxy/cache server menad\9eeru nije dozvoljen/H2>
+<H2>Pristup proksi/ke\9a server menad\9eeru nije dozvoljen</H2>
<HR noshade size="1px">
<P>
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
-Pristup proxy/cache server menad\9eeru nije dozvoljen
-</STRONG>
+Pristup proksi/ke\9a server menad\9eeru nije dozvoljen</STRONG>
</UL>
</P>
<P>Na \9ealost trenutno vam nije dozvoljeno da zahtevate:
<PRE> %U</PRE>
-iz ovog cache menad\9eera pre nego \9ato se ne autentifikujete.
+iz ovog ke\9a menad\9eera pre nego \9ato se autentifikujete.
</P>
<P> Da bi to funkcionisalo potreban vam je Netscape verzija 2 i vi\9ae ili
-Microsoft Internet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
+Microsoft Intenet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
Ukoliko budete imali problema oko autentifikacije molimo kontaktirajte
-<A HREF="mailto:%w%W">proxy administratora</a> a ako vi <em>jeste</em> administrator,
-proèitajte dokumentaciju o cache menad\9eeru za Squid i proverite cache log
+<A HREF="mailto:%w">proxy administratora</a> a ako vi <em>jeste</em> administrator,
+proèitajte dokumentaciju o ke\9a menad\9eeru za Squid i proverite ke\9a log
za detaljnije opise gre\9aaka.</P>
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
</UL>
<P>
-Ovaj zahtev nije moga da bude prosleðen izvornom serveru niti bilo kom
-nadreðenom proksi serveru. Najverovatniji uzrok ove gre\9ake je da:
-This request could not be forwarded to the origin server or to any
-parent caches. The most likely cause for this error is that:
+Ovaj zahtev nije mogao da bude prosleðen izvonom serveru niti bilo kom
+nadreðenom proxy serveru. Najverovatniji uzrok ove gre\9ake je da:
<UL>
-<LI>Cache administrator ne dozvoljava da ovaj proksi server
-direktno pristupi izvornom serveru,
+<LI>Ke\9a administrator ne dozvoljava da ovaj proksi server
+direktno pristupi izvonom serveru,
<LI>Svi konfigurisani nadreðeni proksi serveri su trenutno nedostupni.
</UL>
-<P>Va\9a cache administrator je <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
Udaljeni raèunar ili mre\9ea nisu operativni. Molimo poku\9aajte kasnije.
</PRE>
</P>
-<P>Va\9a cache administrator je <A HREF="mailto:%w%W">%w</A>.
-
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
<P>
\9ato znaèi:
<PRE>
- Proksi server nije u stanju da identifikuje ime raèunara koje je upisano u
+ Proksi server nije u stanju da identifikuje ime raèunara koje se nalazi u
adresi (URL). Proverite da li je adresa ispravna.
</PRE>
</P>
-<P>Va\9a cache administrator je <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
<HR noshade size="1px">
<P>
-While trying to retrieve the URL:
+Tokom poku\9aaja da se dovuce strana sa sledecom adresom (URL):
<A HREF="%U">%U</A>
<P>
-The following error was encountered:
+Dogodila se sledeca gre\9aka:
<BLOCKQUOTE>
-ESI Processing failed.
+ESI obrada nije uspela.
</BLOCKQUOTE>
<P>
-The ESI processor returned:
+ESI procesor je vratio:
<BLOCKQUOTE>
%Z
</BLOCKQUOTE>
<P>
-This means that:
+Ovo znaci da:
<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
+ Surogat nije uspeo da obradi ESI zahtev. Molimo obavestite webmastera o ovoj gre\9aci
</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.</P>
+<P>Va\9a webmaster je <A HREF="mailto:%w">%w</A>.</P>
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
\9ato znaèi:
<PRE>
Ovaj proksi server neæe da prosledi va\9a zahtev zato \9ato poku\9aava da
- po\9atuje sibling odnose. Mo\9eda je klijent na %i proksi koji je pogre\9ano
+ po\9atuje sibling odnose. Mo\9eda je klijent na %i proksi serveru koji je pogre\9ano
konfigurisan.
</PRE>
</P>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
</PRE>
</P>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<H1>GRE\8aKA</H1>
<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuèe</H2>
<HR noshade size="1px">
-Prilikom poku\9aaja da se dovuèe URL: <A HREF="%U">%U</A> desila
-se gre\9aka u FTP protokolu.
+Desila se gre\9aka u FTP protokolu prilikom dovlaèenja URL-a: <A HREF="%U">%U</A>
<P>
<P>
Squid je poslao sledeæu FTP komandu:
<blockquote><strong><pre>%F</pre></strong></blockquote>
<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<blockquote><strong><pre>%F</pre></strong></blockquote>
<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<blockquote><strong><pre>%F</pre></strong></blockquote>
<blockquote><strong><pre>%g</pre></strong></blockquote>
<P>
-To mo\9ee da bude prouzrokovano \9ato je FTP adresa (URL) sa
+To mo\9ee da bude prouzrokovano time \9ato je FTP adresa (URL) sa
apsolutnom putanjom (\9ato se ne sla\9ee sa RFC 1738). Ukoliko je to
-sluèaj, datoteku mo\9eete da naðete na <A HREF="%B">%B</A>.
-
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+sluèaj, fajl mo\9eete da naðete na <A HREF="%B">%B</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>FTP PUT uspe\9aan: Datoteka je postavljena</TITLE>
+<TITLE>FTP PUT uspe\9aan: Fajl je prenesen</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
-<H1>Operatcija je okonèana uspe\9ano.</H1>
-<H2>Datoteka je postavljena.</H2>
+<H1>Operacija je okonèana uspe\9ano.</H1>
+<H2>Fajl je prenesen.</H2>
<HR noshade size="1px">
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
<H1>GRE\8aKA</H1>
-<H2>FTP upload nije uspeo </H2>
+<H2>FTP upload nije uspeo</H2>
<HR noshade size="1px">
<P>
Tokom poku\9aaja da se PRENESE strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-Dok je poku\9aavao da prenese (PUT) sledeæi URL:
+dok je poku\9aavao da prenese (PUT) sledeæi URL:
<A HREF="%U">%U</A>
<P>
Squid je zadao sledeæu komandu:
treba da proverite putanju, privilegije, raspolo\9eiv prostor na disku i poku\9aate ponovo.
</PRE>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>FTP PUT uspe\9aan: Datoteka je osve\9eena</TITLE>
+<TITLE>FTP PUT uspe\9aan: Fajl je osve\9een</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
-<H1>Operatcija je okonèana uspe\9ano.</H1>
-<H2>Datoteka je osve\9eena.</H2>
+<H1>Operacija je okonèana uspe\9ano.</H1>
+<H2>Fajl je osve\9een.</H2>
<HR noshade size="1px">
<blockquote><strong><pre>%F</pre></strong></blockquote>
<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
<HR noshade size="1px">
<P>
-While trying to retrieve the URL:
+Tokom poku\9aaja da se dovuce strana sa sledecom adresom (URL):
<A HREF="%U">%U</A>
<P>
-The following error was encountered:
+Dogodila se sledeca gre\9aka:
<UL>
<LI>
<STRONG>
-ICAP protocol error.
+Gre\9aka u ICAP protokolu.
</STRONG>
</UL>
<P>
-The system returned:
+Sistem je vratio:
<PRE><I> %E</I></PRE>
<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
+Ovo znaci da:
+Neki aspekti ICAP protokola nisu u redu. Moguci problemi:
<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
+<LI>ICAP server je nedostupan.
+<LI>Pogre\9aan odgovor od ICAP servera.
</UL>
</P>
</UL>
<P>
-Neki aspekt HTTP zahteva nije ispravan. Moguæi problemi:
+Jedan od aspekta HTTP zahteva nije ispravan. Moguæi problemi:
<UL>
<LI>Metod zahteva je nepoznat ili nedostaje
<LI>Nedostaje adresa (URL)
<LI>Nedostaje HTTP identifikator (HTTP/1.0)
<LI>Zahtev je predug
-<LI>Nedostaje du\9eina zahteva (Content-Length) za POST ili PUT zahteva
+<LI>Nedostaje du\9eina zahteva (Content-Length) za POST ili PUT zahtev
<LI>Nedozvoljeni karakteri u imenu raèunara; donja crta (_) nije dozvoljena
</UL>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
</UL>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
<HR noshade size="1px">
<P>
-While trying to process the request:
+U poku\9aaju da se izvr\9ai zahtev:
<PRE>
%R
</PRE>
<P>
-The following error was encountered:
+Desila se sledeca gre\9aka:
<UL>
<LI>
<STRONG>
-Invalid Response
+Pogre\9aan odgovor
</STRONG>
</UL>
<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
+HTTP odgovor koji je dobijen od kontaktiranog servera
+ne mo\9ee da se razume ili je na neki nacin pogre\9ano formirana.
+Molimo kontaktirajte operatora sajta. Va\9a ke\9a administrator
+vas mo\9ee informisati o detaljima prirode va\9aeg problema.
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
</STRONG>
</UL>
<P>
-Neki aspekt zahtevane adrese (URL) nije ispravan. Moguæi problemi:
+Jedan od aspekata zahtevane adrese (URL) nije ispravan. Moguæi problemi:
<UL>
-<LI>Pristupni protokol nedostaje ili je neispravan (trebao bi da bude `http://'' ili slièno)
+<LI>Pristupni protokol nedostaje ili je neispravan (trebao bi da bude "http://'' ili slièno)
<LI>Nedostaje ime raèunara (servera)
<LI>Nedozvoljeni dvostruki-escape u URL putanji
<LI>Nedozvoljeni karakteri u imenu raèunara; donja crta (_) nije dozvoljena
</UL>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
-
-
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
-Dozvoljeno vreme du\9eine konekcije je prekoraèeno.
+Dozvoljeno trajanje konekcije je prekoraèeno.
</STRONG>
</UL>
<P>
Proksi server je prekinuo konekciju jer je prekoraèila
-dozvoljenu du\9einu trajanja konekcije.
+dozvoljeno trajanje konekcije.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
<P>
Za ovaj proksi server nije definisan WAIS relay raèunar! Pitajte administratora.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
-U proksi arhivi nije naðen validan dokument a specificirane je direktiva <code>only-if-cached</code>.
-</STRONG>
+U ke\9au nije naðen validan dokument a specificirane je direktiva <code>only-if-cached</code>.</STRONG>
</UL>
<P>
Za va\9a zahtev postavljena je <code>only-if-cached</code> proksi direktiva.
Dokument nije naðen u proksi arhivi, <em>ili</em> se zahteva revalidacija koja
je zabranjena direktivom <code>only-if-cached</code>.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
<P>
<PRE>
-Desila se gre\9aka prilikom isèitavanja podataka sa mre\9ee.
+Desila se gre\9aka prilikom èitanja podataka sa mre\9ee.
Molimo poku\9aajte ponovo.
</PRE>
</P>
+
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
Molimo poku\9aajte ponovo.
</PRE>
</P>
+
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
<HR noshade size="1px">
<P>
-While trying to retrieve the URL:
+Tokom poku\9aaja da se dovuce strana sa sledecom adresom (URL):
<A HREF="%U">%U</A>
<P>
-The following error was encountered:
+Dogodila se sledeca gre\9aka:
<UL>
<LI>
<STRONG>
-Failed to establish a secure connection to %I
+Nije uspelo uspostavljanje sigune konekcije sa %I
</STRONG>
</UL>
<P>
-The system returned:
+Sistem je vratio:
<PRE><I> %E</I></PRE>
<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
+Ovaj proksi i udaljeni server nisu uspeli da se dogovore oko sigunosnih
+pode\9aavanja za izvr\9aavanje va\9aeg zahteva. Moguce je da je udaljeni server
+ne podr\9eava sigune konekcije, ili da proksi nije zadovoljan sa pravilima
+sigunosti udaljenog servera.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
-Ovaj proksi server je u procesu obaranja i ne mo\9ee da
-opslu\9ei zahtev u ovom trenutku. Molimo poku\9aajte ponovo
-uskoro.
+Ovaj proksi server je u procesu iskljuèivanja i ne mo\9ee da
+izvr\9ai zahtev u ovom trenutku. Molimo poku\9aajte ponovo uskoro.
</STRONG>
</UL>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
</PRE>
</P>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
Ukoliko je va\9a zahtev POST ili PUT, onda je telo zahteva (to \9ato
poku\9aavate da upload-ujete) preveliko. Ako ste uputili GET zahtev,
onda je telo odgovora (to \9ato poku\9aavate da skinete) preveliko.
-Ove limite postavio je internet servis provajder koji koristi ovaj
+Ove limite postavio je intenet servis provajder koji koristi ovaj
proksi server. Ako smatrate da je to gre\9aka, molimo stupite u kontakt
sa administratorom.
</UL>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
-Nepodr\9eani metod ili protokol zahteva (request)
+Nepodr\9ean metod ili protokol zahteva (request)
</STRONG>
</UL>
<P>
-Proksi server ne podr\9eava sve request metode za sve moguæe pristupne protokole.
+Proksi server ne podr\9eava sve metode zahteva za sve moguæe pristupne protokole.
Na primer ne mo\9eete da uradite POST na Gopher zahtev.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
<H1>GRE\8aKA</H1>
-<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuèe</H2>
+<H2>Tra\9eena adresa (URL) za URN ne mo\9ee da se dovuèe</H2>
<HR noshade size="1px">
<P>
-Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
+Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URN):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
<P>
Hej, nemoj mnogo da oèekujes od URNova na %T! :)
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
-Gre\9aka u pisanju.
+Gre\9aka u upisu.
</STRONG>
</UL>
<PRE><I> %E</I></PRE>
<P>
-Desila se gre\9aka prilikom pisanja po mre\9ei. Molimo poku\9aajte ponovo.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<PRE>
+Desila se gre\9aka prilikom upisa u mre\9ei. Molimo poku\9aajte ponovo.
+</PRE>
+</P>
+
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
</UL>
<P>
-Squid nije dobio nikakav odgovor na va\9a zahtev.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+Proksi nije dobio nikakav odgovor na va\9a zahtev.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
-Thank you to Zoran Verovski <Zoran@HEMOFARM.CO.YU> for
-creating these error pages in Serbian!
+Thank you to Zoran Verovski <Zoran@HEMOFARM.CO.YU> for creating these error pages in Serbian!
+Fixed some typos and errors by Dragutin Cirkovic (auto@gromnet.net)
encoding: latin-win1250
Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
<A HREF="%U">%U</A>
<P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
<UL>
<LI>
<STRONG>
</PRE>
</P>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Acceso Denegado.
-</STRONG>
-<P>
-Las reglas de control de acceso impiden que su petición sea
-permitida en este momento. Contacte con su proveedor de servicios
-si cree que esto es incorrecto.
-</P>
-</UL>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Acceso Denegado al Caché</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Acceso Denegado al Caché</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Acceso denegado al caché.
-</STRONG>
-</UL>
-
-<P>
-Disculpe, Ud. no está autorizado a acceder a:
-<PRE> %U</PRE>
-desde este caché hasta que se haya autenticado.
-
-
-<P>
-Ud. necesita utilizar Netscape versión 2.0 o superior, o Microsoft
-Internet Explorer 3.0, o un navegador que cumpla con HTTP/1.1 para que funcione.
-Por favor contacte al <A HREF="mailto:%w">administrador del caché</a> si
-tiene dificultad para autenticarse o <A HREF="http://%h/cgi-bin/chpasswd.cgi">
-cambie</a> su password.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Acceso Denegado al Caché Manager</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Acceso Denegado al Cache Manager</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Acceso Denegado al Cache Manager.
-</STRONG>
-</UL>
-
-<P>Disculpe, Ud. no está autorizado a acceder a:
-<PRE> %U</PRE>
-desde este caché hasta que se haya autenticado.
-
-<P>
-Ud. necesita utilizar Netscape versión 2.0 o superior, o Microsoft
-Internet Explorer 3.0, o un navegador que cumpla con HTTP/1.1 para que funcione.
-Por favor contacte al <A HREF="mailto:%w">administrador del caché</a> si
-tiene dificultad para autenticarse, o si Ud. <em>es</em> el administrador,
-lea la documentación de Squid sobre interfaz del cache manager y
-chequee en el log de caché mensajes de error más detallados.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Imposibilidad de enviar la petición en este momento.
-</STRONG>
-</UL>
-
-<P>
-La petición no ha podido ser enviada al servidor origen o a alguno
-de los cachés padres. Las razones más probables de que haya
-ocurrido este error son:
-<UL>
-<LI>El administrador de lo caché no permite que este
- caché realice conexiones directas a los servidores
- origen, y
-<LI>Todos los cachés configurados como padres son inalcanzables
- en este momento.
-</UL>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Conexión fallida.
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I> %E</I></PRE>
-
-<P>
-El equipo remoto o la red pueden estar fuera de servicio.
-Por favor, intente de nuevo la petición.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<BLOCKQUOTE>
-Incapaz de determinar la dirección IP a partir
-del nombre de la máquina:
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-El programa dnsserver ha devuelto el siguiente mensaje:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Esto significa que:
-<PRE>
- El caché no ha sido capaz de resolver el nombre de máquina
- presente en la URL.
- Compruebe que la dirección sea correcta.
-</PRE>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster.
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Reenvío denegado.
-</STRONG>
-</UL>
-
-<P>
-Este caché no permite reenviar su petición porque trata de
-obligar a mantener una relación de hermandad.
-Quizás el cliente en %i es un caché que ha sido mal configurado.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Servicio FTP deshabilitado
-</STRONG>
-</UL>
-
-<P>
-Este caché no proporciona servicio caché para el protocolo FTP.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Ha ocurrido un error de protocolo FTP
-mientras se intentaba traer el documento con URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envió la siguiente orden FTP:
-<BLOCKQUOTE><PRE><STRONG>%f</STRONG></PRE></BLOCKQUOTE>
-y recibió la siguiente respuesta:
-<BLOCKQUOTE><PRE><STRONG>%F</STRONG></PRE></BLOCKQUOTE>
-<BLOCKQUOTE><PRE><STRONG>%g</STRONG></PRE></BLOCKQUOTE>
-<P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Ha ocurrido una falla de autenticación cuando se
-trataba de conseguir el URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envió el siguiente comando FTP:
-<blockquote><pre><strong>%f</strong></pre></blockquote>
-y recibió esta respuesta
-<blockquote><pre><strong>%F</strong></pre></blockquote>
-<blockquote><pre><strong>%g</strong></pre></blockquote>
-
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-El siguiente URL no pudo ser obtenido:
-<A HREF="%U">%U</A>
-<P>
-Squid envió el siguiente comando FTP:
-<blockquote><pre><strong>%f</strong></pre></blockquote>
-y recibió esta respuesta
-<blockquote><pre><strong>%F</strong></pre></blockquote>
-<blockquote><pre><strong>%g</strong></pre></blockquote>
-<P>
-Esto puede ser causado por un URL FTP con un camino absoluto (y por
-lo tanto no cumple con RFC 1738). Si esta es la causa, entonces el
-archivo puede ser obtenido en <A HREF="%B">%B</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Exitoso: Archivo Creado</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operación Exitosa</H1>
-<H2>Archivo creado</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: falla en envio FTP</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>FTP PUT/envio fallido</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba hacer un PUT del siguiente URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envió el siguiente comando FTP:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-y recibió esta respuesta
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Esto significa que:
-<PRE>
-Chequee el camino, los permisos, espacio en disco e intente nuevamente.
-</PRE>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Exitoso: Archivo actualizado</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operación Exitosa</H1>
-<H2>Archivo actualizado</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>EL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-El servidor FTP estaba muy ocupado cuando se intentaba obtener el URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envió el siguiente comando FTP:
-<blockquote><pre><strong>%f</strong></pre></blockquote>
-y recibió esta respuesta
-<blockquote><pre><strong>%F</strong></pre></blockquote>
-<blockquote><pre><strong>%g</strong></pre></blockquote>
-
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba procesar la petición:
-<PRE>
-%R
-</PRE>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Petición no válida.
-</STRONG>
-</UL>
-
-<P>
-Algún aspecto de la petición HTTP no es válido.
-Posibles problemas:
-<UL>
-<LI>Falta o es desconocido el método de la petición (no es
- GET ni POST)
-<LI>Falta el URL
-<LI>Falta el identificador HTTP (HTTP/1.0)
-<LI>La petición es demasiado grande.
-<LI>Hay caracteres ilegales en el nombre de máquina;
- el carácter subrayado (_) no está permitido.
-</UL>
-
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba procesar la petición:
-<PRE>
-%R
-</PRE>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Respuesta no válida.
-</STRONG>
-</UL>
-
-<P>
-El mensaje de Respuesta HTTP recibido del servidor contactado
-no pudo ser entendido o tenía alguna malformación.
-Por favor contacte al operador del sitio web. Quizas su
-administrador del caché pueda darle a Ud. más
-detalles acerca de la naturaleza exacta del problema en caso
-de ser necesario.
-<P>Su administrador del caché es <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-URL incorrecto.
-</STRONG>
-</UL>
-
-<P>
-Algún aspecto del URL solicitado es incorrecto. Posibles problemas:
-<UL>
-<LI>Falta o es incorrecto el protocolo de acceso (debe ser ``http://'' o
- similar)
-<LI>Falta el nombre de la máquina
-<LI>Hay un doble-escape ilegal en la ruta de la URL
-<LI>Hay caracteres ilegales en el nombre de máquina;
- el caracter de subrayado (_) no está permitido
-</UL>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Ha expirado el tiempo de vida de la conexión
-</STRONG>
-</UL>
-
-<P>
-Squid ha dado por terminada la petición porque se ha excedido
-el tiempo de vida máximo para una conexión.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-No hay una pasarela para protocolo Wais.
-</STRONG>
-</UL>
-
-<P>
-Este caché no tiene definido ninguna pasarela para el protocolo WAIS !!
-¡Grítele al administrador del caché !
-<P> Su administrador del caché es <A HREF="mailto:%w>%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-No se encontró un documento válido en el caché y se
-especificó la directiva <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-
-Ud. ha enviado una solicitud con la directiva de control del caché
-<code>only-if-cached</code>. El documento no fue encontrado en el caché,
-<em>o</em> requiere revalidación prohibida por la directiva
-<code>only-if-cached</code>.
-
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Error de lectura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I> %E</I></PRE>
-
-<P>
-Ha ocurrido algún problema mientras se leían datos de la red.
-Por favor, inténtelo de nuevo.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Se acabó el tiempo máximo para lectura de datos de la red.
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I> %E</I></PRE>
-
-<P>
-Se acabó el tiempo máximo de lectura mientras se leían
-datos de la red. La red o el servidor pueden estar congestionados. Por
-favor, inténtelo de nuevo
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-
-Este caché esta siendo desactivado y no puede atender su
-solicitud en este momento. Por favor reintente su solicitud
-nuevamente más tarde.
-
-</UL>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Fallo en el puerto (socket)
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid ha sido incapaz de crear un puerto TCP, posiblemente debido
-al exceso de carga. Inténtelo de nuevo, por favor.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: La dirección solicitada no puede ser obtenida</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La dirección solicitada no puede ser obtenida</H2>
-<HR noshade size="1px">
-<P>
-Mientras se descargaba la dirección:
-<A HREF="%U">%U</A>
-<P>
-Se encontró el siguiente error:
-<UL>
-<LI>
-<STRONG>
-La dirección solicitada es demasiado larga.
-</STRONG>
-<P>
-Si está haciendo una petición POST o PUT, el cuerpo (lo
-que está intentando subir) es demasiado grande. Si está
-haciendo una petición GET, entonces el cuerpo de la respuesta
-(que está tratando de bajar) es demasiado grande. Estos
-límites fueron establecidos por el Proveedor de Servicios de
-Internet que opera este caché. Por favor, contacte con él
-directamente si cree que esto es un error.
-</UL>
-<P>
-Su administrador del caché es <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Método de la petición y protocolo no soportados.
-</STRONG>
-</UL>
-
-<P>
-Squid no admite todos los métodos para todos los protocolos de acceso.
-Por ejemplo, no se puede hacer un POST a un servidor Gopher.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URN solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No se ha podido obtener una URL para el URN solicitado</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba obtener el URN:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-No se puede resolver el URN
-</STRONG>
-</UL>
-
-<P>
-Hey, no espere mucho de URNs en %T :)
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Error de escritura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I> %E</I></PRE>
-
-<P>
-Se ha producido un error mientras se escribían datos en la red.
-Por favor, inténtelo de nuevo.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Respuesta vacía (tamaño cero)
-</STRONG>
-</UL>
-
-<P>
-Squid no ha recibido ninguna información en respuesta a esta
-petición.
-</P>
+++ /dev/null
-Thanks to Javier Puche <javier.puche@rediris.es>, Roberto Lumbreras
-<rover-squid@lander.es>, Juan Nicolas Ruiz N. <nicolas@ula.ve> and
-Sergio Rua <srua@debian.org> for creating these error pages in Spanish!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I> %E</I></PRE>
-
-<P>
-Esto significa que:
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Tillträde Nekas.
-</STRONG>
-<P>
-Tillträdeskontrollen förhindrar Er begäran från
-att tillåtas vid den här tidpunkten. Vänligen kontakta Er
-tjänsteleverantör om Ni finner detta inkorrekt.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Tillträde till Cache Nekas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEL</H1>
-<H2>Tillträde till Cache Nekas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Tillträde till Cache Nekas.
-</STRONG>
-</UL>
-</P>
-
-<P>Ledsen, Ni är förnärvarande ej berättigad att begära:
-<PRE> %U</PRE>
-från denna cache tills det att Ni har autentifierat Er.
-</P>
-
-<P> Ni måste använda Netscape version 2.0 eller högre, eller Microsoft Internet
-Explorer 3.0, eller en HTTP/1.1 kompatibel läsare för att detta skall fungera.
-Vänligen kontakta <A HREF="mailto:%w%W">cacheadministratorn</a> om Ni har svårigh
-eter
-med att autentifiera Er själv, eller <A HREF="http://%h/cgi-bin/chpasswd.cgi">byt</a> Ert lösenord.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Tillträde till Cachehanteraren Nekas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEL</H1>
-<H2>Tillträde till Cachehanteraren Nekas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Tillträde till Cachehanteraren Nekas
-</STRONG>
-</UL>
-</P>
-
-<P>Ledsen, Ni är förnärvarande ej berättigad att begära:
-<PRE> %U</PRE>
-från denna cache tills det att Ni har autentifierat Er.
-</P>
-
-<P> Ni måste använda Netscape version 2.0 eller högre, eller Microsoft Internet
-Explorer 3.0, eller en HTTP/1.1 kompatibel läsare för att detta skall fungera.
-Vänligen kontakta <A HREF="mailto:%w%W">cacheadministratorn</a> om Ni har svårigheter
-med att autentifiera Er själv, om Ni <em>är</em>
-administratorn, läs Squid dokumentationen om cache hanterar interfacet och kontrollera
-cache loggen för mer detaljerade felmeddelanden.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Kunde ej vidarebefodra förfrågan vid detta tillfälle.
-</STRONG>
-</UL>
-
-<P>
-Denna förfrågan kunde ej vidarebefodras till ursprunglig server eller till
-överliggande cache-noder. Den mest sannolika anledningen till detta fel är:
-<UL>
-<LI>Cacheadministratorn tillåter inte denna cache att göra
- direkta anslutningar till ursprungliga servrar, och
-<LI>alla överliggande cache-noder kan ej nås för tillfället.
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde ej hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde ej hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Anslutningen Misslyckades
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I> %E</I></PRE>
-
-<P>
-Begärd värd eller nätverk kan vara nere. Vänligen försök igen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<BLOCKQUOTE>
-Kunde inte få fram IP-adressen för värdnamnet.
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Namnservern returnerade:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Detta betyder att:
-<PRE>
- Cachen kunde inte lösa upp värdnamnet angivet i sökvägen.
- Kontrollera att adressen är korrekt.
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<BLOCKQUOTE>
-ESI bearbetning misslyckades.
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-ESI motorn returnerade:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Detta betyder att:
-<PRE>
- Surrogat servern kunde inte bearbeta ESI mallen.
- Vänligen kontakta den ansvariga för webbservern ifråga.
-</PRE>
-<P>
-Addressen till ansvarig administratör är <A HREF="mailto:%w">%w</A>.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Vidarebefodran Nekad.
-</STRONG>
-</UL>
-
-<P>
-Denna cache kommer inte vidarebefodra en begäran eftersom den försöker att tvinga sig till en rättighet som den inte har.
- Kanske klienten vid %i är en cache som är felkonfigurerad.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-FTP är Avstängd
-</STRONG>
-</UL>
-
-<P>
-Denna cache stödjer inte FTP.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Ett FTP protokollfel inträffade
-vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sände följande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Ett misslyckande vid FTP autentifiering inträffade
-vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sände följande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Följande URL kunde inte hämtas:
-<A HREF="%U">%U</A>
-<P>
-Squid sände följande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Detta kan orsakas av en FTP URL med en absolut sökväg (vilket inte
-överensstämmer med RFC 1738). Om detta är orsaken, kan filen
-återfinnas vid <A HREF="%B">%B</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP SKICKA lyckades: Filen Skapades</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operationen lyckades</H1>
-<H2>Filein skapades</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: FTP skicka misslyckades</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>FTP SKICKA/överföra misslyckades</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att SKICKA följande URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sände följande FTP kommando:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-och fick till svar
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Prova att:
-<PRE>
-Kontrollera sökväg, rättigheter, diskutrymme och försök igen.
-</PRE>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP Skicka Lyckades!: Filen uppdaterades</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation var lyckad</H1>
-<H2>Filen uppdaterades</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-FTP servern var ej tillgänglig vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sände följande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde ej hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde ej hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att behandla förfrågan:
-<PRE>
-%R
-</PRE>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Felaktig Förfrågan
-</STRONG>
-</UL>
-
-<P>
-Någon eller några aspekter av HTTP förfrågan är felaktiga. Möjliga problem:
-<UL>
-<LI>Avsaknad eller okänd method för förfrågan
-<LI>Avsaknad URL
-<LI>Avsaknad HTTP identifierare (HTTP/1.0)
-<LI>Förfrågan är för stor
-<LI>Innehållslängden saknas för POST(posta) eller PUT(sätt) förfrågan
-<LI>Ej tillåtet tecken i värdnamnet; '_' är ej tillåtna
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>Fel: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Felaktigt svarsmeddelande
-</STRONG>
-</UL>
-
-<P>
-HTTP svarsmeddelandet ifrån den kontaktade servern är felaktigt och
-kunde inte tolkas. Vänligen kontakta den ansvariga för webbservern ifråga.
-Din cacheserver administratör man eventuellt ge dig mera information om
-det specifika problemet med denna sida.
-</P>
-
-<P>Din cacheserver administratör är <A HREF="mailto:%w">%w</A>.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde ej hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde ej hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Felaktig URL
-</STRONG>
-</UL>
-
-<P>
-Någon eller några aspekter av begärd URL är inkorrekta. Möjliga problem:
-<UL>
-<LI>Avsaknat eller felaktigt tillträdesprotokoll (ska vara `http://'' eller liknande)
-<LI>Avsaknat värdnamn
-<LI>Ej tillåten dubbel-escape i URL-Sökvägen
-<LI>Ej tillåtna tecken i värdnamnet; '_' är ej tillåtna
-</UL>
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Anslutnings levnadstid tog slut
-</STRONG>
-</UL>
-
-<P>
-Squid har terminerat Er begäran på grund av att den har överskridikt den tillåtna livstiden för en anslutning.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Igen Wais Relay
-</STRONG>
-</UL>
-
-<P>
-Det finns ingen WAIS Relay värd definerad för denna cache! Skrik på din administratör.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Senaste dokumentet återfanns inte i cachen och <code>bara-om-i-cache</code>
-direktivet är satt.
-</STRONG>
-</UL>
-
-<P>
-
-Du har begärt ett dokument med <code>bara-om-i-cache</code> cache kontroll
-direktivet. Dokumentet återfanns inte i cache databasen, <em>eller</em> det krävs en uppdatering av cache databasen, men förhindras av
-<code>bara-om-i-cache</code> direktivet.
-
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Läsfel
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I> %E</I></PRE>
-
-<P>
-Ett fel inträffade vid försök att läsa data från nätverket. Vänligen
-försök igen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Läsningen fick en timeout
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I> %E</I></PRE>
-
-<P>
-En timeout inträffade i väntan på att få läsa data från nätverket. Antingen är servern nere eller också är nätverket tungt belastat. Vänligen försök igen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<P>
-Denna cache håller på att stänga av sig och kan därför inte behandla din förfrågan. Vänligen försök igen lite senare.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Socket Fel
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid kan inte skapa en TCP socket, gissningsvis på grund av tung last.
-Vänligen försök igen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Den begärda URL:en kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Den begärda URL:en kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-När följande URL försöktes hämtas:
-<A HREF="%U">%U</A>
-<P>
-Inträffade följande fel:
-<UL>
-<LI>
-<STRONG>
-Begäran är för stor.
-</STRONG>
-<P>
-Ifall du utför en POST eller PUT begäran, så är begäran
-(det du försöker ladda upp) för stor. Ifall du utförde
-en GET begäran, så är svaret (det du försöker ladda ned)
-för stort. Dessa gränser är inställda av den internet
-leverantör som handhar den här cacheservern. Var vänlig
-kontakta dem direkt ifall du anser att detta är ett fel.
-</UL>
-<P>
-Din cacheserver administratör är <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Ej stöd för begärd metod och protokoll
-</STRONG>
-</UL>
-
-<P>
-Squid stödjer inte alla frågemetoder för alla protokoll.
-Till exempel, Ni kan inte POST'a en Gopher förfrågan.
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URN kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>En URL för begärd URN kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URN:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Kan inte lösa upp URN namnet
-</STRONG>
-</UL>
-
-<P>
-Men hallå, förvänta dig inte för mycket från en URNs på %T :)
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Skriv Fel
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I> %E</I></PRE>
-
-<P>
-Ett fel inträffade vid försök att skriva till nätverket. Vänligen försök igen.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-Storleken på svaret var lika med noll
-</STRONG>
-</UL>
-
-<P>
-Squid tog inte emot något data för denna förfrågan.
-</P>
+++ /dev/null
-Thank you to Stefan Månsby <stefan@mansby.com> for
-creating these error pages in Swedish!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>Fel: Begärd URL kunde inte hämtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Begärd URL kunde inte hämtas</H2>
-<HR noshade size="1px">
-<P>
-Vid försöket att hämta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs följande fel:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I> %E</I></PRE>
-
-<P>
-Detta innebär att:
-<PRE>
- @LONG_DESCRIPTION@
-</PRE>
-</P>
-
--- /dev/null
+Special thanks go to people who have volunteered their time, effort,
+and ideas to make Squid available as multi-langual software.
+
+ Aecio F. Neto <aecioneto@gmail.com>
+ Alexandre Correa <ajcorrea@gmail.com>
+ Amos Jeffries <squid3@treenet.co.nz>
+ Constantin Rack <constantin.rack@vigos.com>
+ Francesco Chemolli <gkinkie@gmail.com>
+ Robert Forster <Dessa@gmake.de>
+
+via Rosetta Translation Project and Canonical Ltd.
+
+ Brie A. Gordon
+ Hasbinur
+ Iker Sagasti Markina <iker@irontec.com>
+ Ricardo Ichizo <n1ghtcr4wler@gmail.com>
+ Tobias
+
+
+Thanks also to all the original translators for their great
+work on the old squid translations.
+
+Armenian Arthur Tumanyan <arthurtumanyan@yahoo.com>
+Azerbaijani Rauf Kuliyev <rauf@kuliyev.com>
+Bulgarian Evgeny Gechev <etg@setcom.bg>
+Bulgarian Svetlin Simeonov <simeonov@netplusdb.bg>
+Catalan Jordi Bruguera <jordi@dns1.grn.es>
+Czech Jakub Nantl <Jakub.Nantl@angel.cz>
+Czech Radek Malcic <malcic@sdc.bno.cdrail.cz>
+Danish Morten S. Nielsen <mortensn@geocities.com>
+Dutch Mark Visser <mark@cal026031.student.utwente.nl>
+Dutch Remco van Mook
+Dutch Bart Koelman
+Estonian Toomas Soome <tsoome@ut.ee>
+Finnish Panu H_llfors <panupa@iki.fi>
+French Frank DENIS -Jedi/Sector One- <j@4u.net>
+German Bernd P. Ziller <bziller@ba-stuttgart.de>
+German Jens Frank <jf@jf.kki.org>
+German Anke S. <as@kki.org>
+Greek George Papamichelakis <george@step.gr>
+Hebrew "yoav" <yoavb@zavit.net.il>
+Hungarian Bertold Kolics <bertold@sztaki.hu>
+Italian Alessio Bragadini <alessio@dsnet.it>
+Italian Marco Mesturino <sw_tools@beatles.cselt.it>
+Japanese Makoto MATSUSHITA <matusita@ics.es.osaka-u.ac.jp>
+Korean Jaeyeon Jung <jjung@cosmos.kaist.ac.kr>
+Lithuanian "DVM" <dvm382@takas.lt>
+Polish Maciej Kozinski <Maciej.Kozinski@boa.uni.torun.pl>
+Portugese Pedro Lineu Orso <orso@pop.hsbcbamerindus.com.br>
+Romanian Iusty Pop Daniel <iusty@netcompsj.ro>
+Russian Ilia Zadorozhko <falcon@netsy.com>
+Russian Andrew L. Davydov <davydov@okbmei.msk.su>
+Serian Zoran Verovski <zoran@hemofarm.co.yu>
+Simplify Chinese Wang DaQing <wdq@bigfoot.com>
+Slovak Peter Hanecak <hany@megaloman.sk>
+Spanish Javier Puche <javier.puche@rediris.es>
+Spanish Roberto Lumbreras <rover-squid@lander.es>
+Spanish Juan Nicolas Ruiz N. <nicolas@ula.ve>
+Spanish Sergio Rua <srua@debian.org>
+Swedish Stefan M_nsby <stefan@mansby.com>
+Traditional Chinese Erick C. Chang <erick@mail.thu.edu.tw>
+Turkish Tural KAPTAN <kaptan@kaptan.ulakbim.gov.tr>
+Ukrainian <mr.petruccio@gmail.com>
+Ukrainian Vitaliy Matytsyn <vm@if.bank.gov.ua>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Äîñòóï çàáîðîíåíèé.
-</STRONG>
-<P>
-Íàñòðîéêà êîíòðîëþ äîñòóïó íå äîçâîëÿº âèêîíàòè Âàø
-çàïèò â äàíèé ÷àñ. ßêùî Âè ââàæàºòå öå íåïðàâèëüíèì, òî,
-áóäü-ëàñêà, êîíòàêòóéòå ç Âàøèì ²íòåðíåò ïðîâàéäåðîì.
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Äîñòóï äî êåøó çàáîðîíåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Äîñòóï äî êåøó çàáîðîíåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Äîñòóï äî êåøó çàáîðîíåíèé
-</STRONG>
-</UL>
-</P>
-
-<P>Âèáà÷òå, àëå Âè íå ìîæåòå çàïðîñèòè:
-<PRE> %U</PRE>
-ç öüîãî êåøó äî òèõ ï³ð, ïîêè íå ïðîéäåòå àóòåíòèô³êàö³þ.
-</P>
-
-<P>
-Âàì ïîòð³áíî âèêîðèñòîâóâàòè Netscape âåðñ³¿ 2.0 ÷è âèùå, àáî Microsoft Internet
-Explorer 3.0, àáî HTTP/1.1 ñóì³ñíèé áðîóçåð. Áóäü-ëàñêà, çâ'ÿæ³òüñÿ
-ç <A HREF="mailto:%w">àäì³í³ñòðàòîðîì êåøó</a>, ÿêùî ó Âàñ âèíèêëè òðóäíîù³
-ç àóòåíòèô³êàö³ºþ, àáî <A HREF="http://%h/cgi-bin/chpasswd.cgi">çì³í³òü</a>
-Âàø ïàðîëü ïî çàìîâ÷óâàííþ.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé
-</STRONG>
-</UL>
-</P>
-
-<P>Âèáà÷òå, Âè íå ìîæåòå çàïðîñèòè:
-<PRE> %U</PRE>
-ç öüîãî êåø ìåíåäæåðà äî òèõ ï³ð, ïîêè íå ïðîéäåòå àóòåíòèô³êàö³þ.
-</P>
-<P>
-Âàì ïîòð³áíî âèêîðèñòîâóâàòè Netscape âåðñ³¿ 2.0 ÷è âèùå, àáî Microsoft Internet
-Explorer 3.0, àáî HTTP/1.1 ñóì³ñíèé áðîóçåð. Áóäü-ëàñêà, çâ'ÿæ³òüñÿ
-ç <A HREF="mailto:%w">àäì³í³ñòðàòîðîì êåøó</a>, ÿêùî ó Âàñ âèíèêëè òðóäíîù³
-ç àóòåíòèô³êàö³ºþ, à ÿêùî <em>Âè</em> º àäì³í³ñòðàòîðîì,
-ïðî÷èòàéòå äîêóìåíòàö³þ Squid ïî ³íòåðôåéñó êåðóâàííÿ êåøîì ³ ïåðåâ³ðòå
-æóðíàë êåøó (cache log) íà ïðåäìåò á³ëüø äåòàëüíèõ ïîâ³äîìëåíü ïðî ïîìèëêè.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Â äàíèé ìîìåíò íåìîæëèâî ïåðåñëàòè öåé çàïèò
-</STRONG>
-</UL>
-
-<P>
-Äàíèé çàïèò íå ìîæå áóòè ïåðåñëàíèé äî ñåðâåðà-äæåðåëà, ÷è äî áóäü-ÿêîãî
-ç âèùåñòîÿ÷èõ êåø³â. Íàéá³ëüø â³ðîã³äíà ïðè÷èíà ïîìèëêè:
-<UL>
-<LI>Àäì³í³ñòðàòîð êåøó çàáîðîíèâ âèêîíóâàòè ïðÿì³ ç'ºäíàííÿ
-ç ñåðâåðàìè-äæåðåëàìè (origin servers) ³
-<LI>óñ³ âèùåñòîÿ÷³ êåø-ñåðâåðà (parent caches) â äàíèé ìîìåíò íåäîñòóïí³.
-</UL>
-<P>Âàøèì êåø àäì³í³ñòðàòîðîì º <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íå âäàëîñü âñòàíîâèòè ç'ºäíàííÿ
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìëÿº:
-<PRE><I> %E</I></PRE>
-
-<P>
-³ääàëåí³ õîñò ÷è ìåðåæà íå â³äïîâ³äàþòü. Áóäü-ëàñêà, ïîâòîð³òü ñâ³é çàïèò ùå ðàç.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<BLOCKQUOTE>
-Íåìîæëèâî âèçíà÷èòè IP àäðåñó âóçëà
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-DNS ñåðâåð ïîâ³äîìëÿº:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Öå îçíà÷àº:
-<PRE>
- Êåøó íå âäàëîñÿ âèçíà÷èòè ³ì'ÿ ñåðâåðà, âêàçàíå â URL.
- Ïåðåâ³ðòå ïðàâèëüí³ñòü íàïèñàííÿ àäðåñó.
-</PRE>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<BLOCKQUOTE>
-Îáðîáêà ESI çàâåðøèëàñü íåâäàëî.
-</BLOCKQUOTE>
-
-<P>
-ESI ïðîöåñîð ïîâ³äîìèâ:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-Öå îçíà÷ຠùî:
-<PRE>
- Çàì³ííèê íå çì³ã îáðîáèòè ESI òåìïëåéò. Áóäü-ëàñêà ïîâ³äîìòå ïðî öþ ïîìèëêó âåáìàéñòðà.
-</PRE>
-<P>Âàøèì âåáìàéñòðîì º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïåðåñèëêà çàáîðîíåíà
-</STRONG>
-</UL>
-
-<P>
-Öåé êåø íå ïåðåñèëàòèìå Âàø çàïèò, òîìó ùî â³í íàìàãàºòüñÿ âñòàíîâèòè áðàòí³ â³äíîñèíè (sibling relationship).
-Ìîæëèâî, ê볺íò %i - íåâ³ðíî ñêîíô³ãóðîâàíèé êåø.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-FTP äîñòóï çàáîðîíåíèé.
-</STRONG>
-</UL>
-
-<P>
-Öåé êåø íå ï³äòðèìóº ïðîòîêîë FTP.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL
-âèíèêëà ïîìèëêà ïðîòîêîëó FTP:
-<A HREF="%U">%U</A>
-<P>
-Squid ïîñëàâ íàñòóïíó êîìàíäó FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-Ñòàëàñü íåâäàëà FTP àóòåíòèô³êàö³ÿ
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-Äàíèé URL íå ìîæå áóòè äîñòàâëåíèé:
-<A HREF="%U">%U</A>
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Öå ìîæå áóòè âèêëèêàíî FTP àäðåñîþ ç àáñîëþòíèì øëÿõîì (ÿêèé íå
-â³äïîâ³äຠñòàíäàðòó RFC 1738).  òàêîìó âèïàäêó, ôàéë ìîæå áóòè
-çíàéäåíèé çà àäðåñîþ <A HREF="%B">%B</A>.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>Êîìàíäà FTP PUT çàâåðøèëàñü óñï³øíî: Ôàéë ñòâîðåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Îïåðàö³ÿ çàâåðøèëàñü óñï³øíî</H1>
-<H2>Ôàéë ñòâîðåíèé</H2>
-<HR noshade size="1px">
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Êîìàíäà FTP PUT/upload çàâåðøèëàñü íåâäàëî</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>FTP PUT/upload çàâåðøèëàñü íåâäàëî</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè ôàéëà çà àäðåñîþ:
-<A HREF="%U">%U</A>
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Öå îçíà÷ຠùî:
-<PRE>
-Âàì ñë³ä ïåðåâ³ðèòè øëÿõ, ïðàâà äîñòóïó, â³ëüíå ì³ñöå ³ ï³ñëÿ öüîãî ñïðîáóâàòè çíîâó.
-</PRE>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>Êîìàíäà FTP PUT çàâåðøèëàñü óñï³øíî: Ôàéë îíîâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Îïåðàö³ÿ çàâåðøèëàñü óñï³øíî.</H1>
-<H2>Ôàéë îíîâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-FTP ñåðâåð áóâ ïåðåãðóæåíèé
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà ïðîòîêîëó ICAP.
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I> %E</I></PRE>
-
-<P>
-Öå ìîæå îçíà÷àòè:
-Äåÿê³ àñïåêòè ICAP ç'ºäíàííÿ íåñïðàâí³. Ìîæëèâ³ ïðîáëåìè:
-<UL>
-<LI>Äîñòóï äî ICAP ñåðâåðó íåìîæëèâèé.
-<LI>Íåâ³ðíà â³äïîâ³äü â³ä ICAP ñåðâåðó.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåâ³ðíèé çàïèò
-</STRONG>
-</UL>
-
-<P>
-Äåÿê³ àñïåêòè HTTP çàïèòó íåâ³ðí³. Ìîæëèâ³ ïðîáëåìè:
-<UL>
-<LI>³äñóòí³é àáî íåâ³äîìèé ìåòîä çàïèòó (GET, POST)
-<LI>³äñóòí³é URL
-<LI>³äñóòí³é HTTP ³äåíòèô³êàòîð (HTTP/1.0)
-<LI>Çàïèò íàäòî âåëèêèé
-<LI>Íå âêàçàíèé Content-Length äëÿ çàïèò³â POST ÷è PUT
-<LI>Íåäîïóñòèìèé ñèìâîë â ³ìåí³ ñåðâåðà; ï³ä÷åðêóâàííÿ íåäîïóñòèì³
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåâ³ðíèé çàïèò
-</STRONG>
-</UL>
-
-<P>
-The HTTP â³äïîâ³äíå ïîâ³äîìëåííÿ, îòðèìàíå â³ä ñåðâåðà
-íå ìîæå áóòè âèçíà÷åíå àáî º íåïðàâèëüíî çôîðìîâàíèì.
-Áóäü-ëàñêà, êîíòàêòóéòå ç àäì³í³ñòðàòîðîì ñàéòó. Âàø àäì³í³ñòðàòîð
-êåøó ìîæå íàäàòè Âàì á³ëüø äåòàëüíó ³íôîðìàö³þ ïðî
-äàíó ïîìèëêó, ÿêùî öå íåîáõ³äíî.
-
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåïðàâèëüíèé URL
-</STRONG>
-</UL>
-
-<P>
-Äåÿê³ àñïåêòè çàïðîøåíîãî URL º íåïðàâèëüíèìè. Ìîæëèâ³ ïðîáëåìè:
-<UL>
-<LI>³äñóòí³é ÷è íåâ³ðíèé ïðîòîêîë äîñòóïó (ïîâèíåí áóòè `http://'' àáî
-ñõîæèé)
-<LI>³äñóòíº ³ì'ÿ ñåðâåðà
-<LI>Íåäîïóñòèìèé ïîäâ³éíèé êåðóþ÷èé ñèìâîë â URL-øëÿõó
-<LI>Íåäîïóñòèìèé ñèìâîë â ³ìåí³ ñåðâåðà; ï³ä÷åðêóâàííÿ íåäîïóñòèì³
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-×àñ ç'ºäíàííÿ çàê³í÷èâñÿ
-</STRONG>
-</UL>
-
-<P>
-Squid çàâåðøèâ Âàø çàïèò ó çâ'ÿçêó ç ïåðåâèùåííÿì
-ìàêñèìàëüíîãî ÷àñó ç'ºäíàííÿ.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Wais Relay íå âèçíà÷åíèé
-</STRONG>
-</UL>
-
-<P>
-Äëÿ öüîãî êåøó íå âèçíà÷åíèé WAIS Relay host! Çâåðí³òüñÿ äî àäì³í³ñòðàòîðà.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-³äïîâ³äíèé îá'ºêò íå áóâ çíàéäåíèé â êåø³, â ðåçóëüòàò³ ÷îãî áóëà
-âèçíà÷åíà äèðåêòèâà <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-Âû ïîñëàëè çàïèò ç äèðåêòèâîþ êåø-êîíòðîëþ <code>only-if-cached</code>.
-Îá'ºêò íå áóâ çíàéäåíèé â êåø³, <em>àáî</em> â³í âèìàãຠîíîâëåííÿ,
-ÿêå çàáîðîíåíî <code>only-if-cached</code> äèðåêòèâîþ.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà ÷èòàííÿ
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I> %E</I></PRE>
-
-<P>
-ϳä ÷àñ ÷èòàííÿ äàíèõ ç ìåðåæ³ âèíèêëà ïîìèëêà. Áóäü-ëàñêà, ïîâòîð³òü
-Âàø çàïèò.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïåðåâèùåíèé ÷àñ î÷³êóâàííÿ â³äïîâ³ä³.
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I> %E</I></PRE>
-
-<P>
-Ïåðåâèùåíèé ÷àñ î÷³êóâàííÿ â³äïîâ³ä³ ï³ä ÷àñ ÷èòàííÿ äàíèõ ç ìåðåæ³. Ìåðåæà
-÷è ñåðâåð ìîæóòü íå ïðàöþâàòè ÷è áóòè ïåðåãðóæåíèìè. Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<P>
-Öåé êåø â äàíèé ìîìåíò ÷àñó çíàõîäèòüñÿ â ïðîöåñ³ çóïèíêè ³ íå ìîæå îáñëóæèòè
-âàø çàïèò. Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò ÷åðåç äåÿêèé ÷àñ çíîâó.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà TCP socket.
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid íå ìîæå ñòâîðèòè TCP socket, ñêîð³ø çà âñå ÷åðåç äóæå âèñîêó çàãðóçêó ñåðâåðà.
-Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Çàïèò ÷è â³äïîâ³äü íàäòî âåëèêà.
-</STRONG>
-
-<P>
-Ó âèïàäêó, ÿêùî Âè çä³éñíþâàëè POST ÷è PUT çàïèò, òîä³ Âàø çàïèò
-(òå, ùî Âè íàìàãàëèñü çàêà÷àòè) º íàäòî âåëèêèì. ßêùî Âè
-çä³éñíþâàëè GET çàïèò, òîä³ â³äêëèê (òå, ùî Âè íàìàãàëèñü âèêà÷àòè
-) º íàäòî âåëèêèì. Ö³ îáìåæåííÿ áóëè âñòàíîâëåí³
-Âàøèì ²íòåðíåò Ïðîâàéäåðîì, ÿêèé êåðóº êåøîì. Áóäü-ëàñêà,
-ïîâ³äîìòå éîãî, ÿêùî Âè ââàæàºòå äàíå ïîâ³äîìëåííÿ ïîìèëêîþ.
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ìåòîä ÷è ïðîòîêîë çàïèòó íå ï³äòðèìóþòüñÿ
-</STRONG>
-</UL>
-
-<P>
-Squid íå ï³äòðèìóº âñ³ ìåòîäè çàïèò³â äëÿ óñ³õ ïðîòîêîë³â.
-Íàïðèêëàä, äëÿ ïðîòîêîëó Gopher Âè íå ìîæåòå âèêîíàòè çàïèò POST.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URN íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>URL äëÿ çàïðîøåíîãî URN íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URN:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåìîæëèâî âèçíà÷èòè URN <br>
-(Cannot Resolve URN)
-</STRONG>
-</UL>
-
-<P>
-Íå âàðòî áàãàòî ÷îãî î÷³êóâàòè â³ä ö³º¿ òåõíîëî㳿 URNs íà %T :)
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà çàïèñó
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I> %E</I></PRE>
-
-<P>
-ϳä ÷àñ â³äïðàâëåííÿ ³íôîðìàö³¿ â ìåðåæó âèíèêëà ïîìèëêà. Áóäü-ëàñêà, ïîâòîð³òü
-Âàø çàïèò
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
-
-
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-³äïîâ³äü íóëüîâî¿ äîâæèíè
-</STRONG>
-</UL>
-
-<P>
-Squid íå îòðèìàâ áóäü-ÿêèõ äàíèõ äëÿ öüîãî çàïèòó.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-Thank you to
- Ïåòðî Íåê <mr.petruccio@gmail.com>
- Vitaliy Matytsyn (main) <vm@if.bank.gov.ua>
-for creating these error pages in Ukrainian!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-äÏÓÔÕÐ ÚÁÂÏÒÏÎÅÎÉÊ.
-</STRONG>
-<P>
-îÁÓÔÒÏÊËÁ ËÏÎÔÒÏÌÀ ÄÏÓÔÕÐÕ ÎÅ ÄÏÚ×ÏÌѤ ×ÉËÏÎÁÔÉ ÷ÁÛ
-ÚÁÐÉÔ × ÄÁÎÉÊ ÞÁÓ. ñËÝÏ ÷É ××ÁÖÁ¤ÔÅ ÃÅ ÎÅÐÒÁ×ÉÌØÎÉÍ, ÔÏ,
-ÂÕÄØ-ÌÁÓËÁ, ËÏÎÔÁËÔÕÊÔÅ Ú ÷ÁÛÉÍ ¶ÎÔÅÒÎÅÔ ÐÒÏ×ÁÊÄÅÒÏÍ.
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: äÏÓÔÕÐ ÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ðïíéìëá</H1>
-<H2>äÏÓÔÕÐ ÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-äÏÓÔÕÐ ÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ
-</STRONG>
-</UL>
-</P>
-
-<P>÷ÉÂÁÞÔÅ, ÁÌÅ ÷É ÎÅ ÍÏÖÅÔÅ ÚÁÐÒÏÓÉÔÉ:
-<PRE> %U</PRE>
-Ú ÃØÏÇÏ ËÅÛÕ ÄÏ ÔÉÈ Ð¦Ò, ÐÏËÉ ÎÅ ÐÒÏÊÄÅÔÅ ÁÕÔÅÎÔÉƦËÁæÀ.
-</P>
-
-<P>
-÷ÁÍ ÐÏÔÒ¦ÂÎÏ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ Netscape ×ÅÒÓ¦§ 2.0 ÞÉ ×ÉÝÅ, ÁÂÏ Microsoft Internet
-Explorer 3.0, ÁÂÏ HTTP/1.1 ÓÕͦÓÎÉÊ ÂÒÏÕÚÅÒ. âÕÄØ-ÌÁÓËÁ, Ú×'ÑÖ¦ÔØÓÑ
-Ú <A HREF="mailto:%w">ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ</a>, ÑËÝÏ Õ ÷ÁÓ ×ÉÎÉËÌÉ ÔÒÕÄÎÏݦ
-Ú ÁÕÔÅÎÔÉƦËÁæ¤À, ÁÂÏ <A HREF="http://%h/cgi-bin/chpasswd.cgi">ÚͦΦÔØ</a>
-÷ÁÛ ÐÁÒÏÌØ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: äÏÓÔÕÐ ÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ðïíéìëá</H1>
-<H2>äÏÓÔÕÐ ÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-äÏÓÔÕÐ ÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ
-</STRONG>
-</UL>
-</P>
-
-<P>÷ÉÂÁÞÔÅ, ÷É ÎÅ ÍÏÖÅÔÅ ÚÁÐÒÏÓÉÔÉ:
-<PRE> %U</PRE>
-Ú ÃØÏÇÏ ËÅÛ ÍÅÎÅÄÖÅÒÁ ÄÏ ÔÉÈ Ð¦Ò, ÐÏËÉ ÎÅ ÐÒÏÊÄÅÔÅ ÁÕÔÅÎÔÉƦËÁæÀ.
-</P>
-<P>
-÷ÁÍ ÐÏÔÒ¦ÂÎÏ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ Netscape ×ÅÒÓ¦§ 2.0 ÞÉ ×ÉÝÅ, ÁÂÏ Microsoft Internet
-Explorer 3.0, ÁÂÏ HTTP/1.1 ÓÕͦÓÎÉÊ ÂÒÏÕÚÅÒ. âÕÄØ-ÌÁÓËÁ, Ú×'ÑÖ¦ÔØÓÑ
-Ú <A HREF="mailto:%w">ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ</a>, ÑËÝÏ Õ ÷ÁÓ ×ÉÎÉËÌÉ ÔÒÕÄÎÏݦ
-Ú ÁÕÔÅÎÔÉƦËÁæ¤À, Á ÑËÝÏ <em>÷É</em> ¤ ÁÄͦΦÓÔÒÁÔÏÒÏÍ,
-ÐÒÏÞÉÔÁÊÔÅ ÄÏËÕÍÅÎÔÁæÀ Squid ÐÏ ¦ÎÔÅÒÆÅÊÓÕ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ¦ ÐÅÒÅצÒÔÅ
-ÖÕÒÎÁÌ ËÅÛÕ (cache log) ÎÁ ÐÒÅÄÍÅÔ Â¦ÌØÛ ÄÅÔÁÌØÎÉÈ ÐÏצÄÏÍÌÅÎØ ÐÒÏ ÐÏÍÉÌËÉ.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-÷ ÄÁÎÉÊ ÍÏÍÅÎÔ ÎÅÍÏÖÌÉ×Ï ÐÅÒÅÓÌÁÔÉ ÃÅÊ ÚÁÐÉÔ
-</STRONG>
-</UL>
-
-<P>
-äÁÎÉÊ ÚÁÐÉÔ ÎÅ ÍÏÖÅ ÂÕÔÉ ÐÅÒÅÓÌÁÎÉÊ ÄÏ ÓÅÒ×ÅÒÁ-ÄÖÅÒÅÌÁ, ÞÉ ÄÏ ÂÕÄØ-ÑËÏÇÏ
-Ú ×ÉÝÅÓÔÏÑÞÉÈ ËÅÛ¦×. îÁʦÌØÛ ×¦ÒÏǦÄÎÁ ÐÒÉÞÉÎÁ ÐÏÍÉÌËÉ:
-<UL>
-<LI>áÄͦΦÓÔÒÁÔÏÒ ËÅÛÕ ÚÁÂÏÒÏÎÉ× ×ÉËÏÎÕ×ÁÔÉ ÐÒÑͦ Ú'¤ÄÎÁÎÎÑ
-Ú ÓÅÒ×ÅÒÁÍÉ-ÄÖÅÒÅÌÁÍÉ (origin servers) ¦
-<LI>ÕÓ¦ ×ÉÝÅÓÔÏÑÞ¦ ËÅÛ-ÓÅÒ×ÅÒÁ (parent caches) × ÄÁÎÉÊ ÍÏÍÅÎÔ ÎÅÄÏÓÔÕÐΦ.
-</UL>
-<P>÷ÁÛÉÍ ËÅÛ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ¤ <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅ ×ÄÁÌÏÓØ ×ÓÔÁÎÏ×ÉÔÉ Ú'¤ÄÎÁÎÎÑ
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÌѤ:
-<PRE><I> %E</I></PRE>
-
-<P>
-÷¦ÄÄÁÌÅΦ ÈÏÓÔ ÞÉ ÍÅÒÅÖÁ ΊצÄÐÏצÄÁÀÔØ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ Ó×¦Ê ÚÁÐÉÔ ÝÅ ÒÁÚ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<BLOCKQUOTE>
-îÅÍÏÖÌÉ×Ï ×ÉÚÎÁÞÉÔÉ IP ÁÄÒÅÓÕ ×ÕÚÌÁ
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-DNS ÓÅÒ×ÅÒ ÐÏצÄÏÍÌѤ:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-ãÅ ÏÚÎÁÞÁ¤:
-<PRE>
- ëÅÛÕ ÎÅ ×ÄÁÌÏÓÑ ×ÉÚÎÁÞÉÔÉ ¦Í'Ñ ÓÅÒ×ÅÒÁ, ×ËÁÚÁÎÅ × URL.
- ðÅÒÅצÒÔÅ ÐÒÁ×ÉÌØΦÓÔØ ÎÁÐÉÓÁÎÎÑ ÁÄÒÅÓÕ.
-</PRE>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<BLOCKQUOTE>
-ïÂÒÏÂËÁ ESI ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ.
-</BLOCKQUOTE>
-
-<P>
-ESI ÐÒÏÃÅÓÏÒ ÐÏצÄÏÍÉ×:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-ãÅ ÏÚÎÁÞÁ¤ ÝÏ:
-<PRE>
- úÁͦÎÎÉË ÎÅ ÚÍ¦Ç ÏÂÒÏÂÉÔÉ ESI ÔÅÍÐÌÅÊÔ. âÕÄØ-ÌÁÓËÁ ÐÏצÄÏÍÔÅ ÐÒÏ ÃÀ ÐÏÍÉÌËÕ ×ÅÂÍÁÊÓÔÒÁ.
-</PRE>
-<P>÷ÁÛÉÍ ×ÅÂÍÁÊÓÔÒÏÍ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÅÒÅÓÉÌËÁ ÚÁÂÏÒÏÎÅÎÁ
-</STRONG>
-</UL>
-
-<P>
-ãÅÊ ËÅÛ ÎÅ ÐÅÒÅÓÉÌÁÔÉÍÅ ÷ÁÛ ÚÁÐÉÔ, ÔÏÍÕ ÝÏ ×¦Î ÎÁÍÁÇÁ¤ÔØÓÑ ×ÓÔÁÎÏ×ÉÔÉ ÂÒÁÔΦ צÄÎÏÓÉÎÉ (sibling relationship).
-íÏÖÌÉ×Ï, Ë̦¤ÎÔ %i - ÎÅצÒÎÏ ÓËÏÎƦÇÕÒÏ×ÁÎÉÊ ËÅÛ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-FTP ÄÏÓÔÕÐ ÚÁÂÏÒÏÎÅÎÉÊ.
-</STRONG>
-</UL>
-
-<P>
-ãÅÊ ËÅÛ ÎŠЦÄÔÒÉÍÕ¤ ÐÒÏÔÏËÏÌ FTP.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL
-×ÉÎÉËÌÁ ÐÏÍÉÌËÁ ÐÒÏÔÏËÏÌÕ FTP:
-<A HREF="%U">%U</A>
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ ËÏÍÁÎÄÕ FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-óÔÁÌÁÓØ ÎÅ×ÄÁÌÁ FTP ÁÕÔÅÎÔÉƦËÁæÑ
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-äÁÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ:
-<A HREF="%U">%U</A>
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-ãÅ ÍÏÖÅ ÂÕÔÉ ×ÉËÌÉËÁÎÏ FTP ÁÄÒÅÓÏÀ Ú ÁÂÓÏÌÀÔÎÉÍ ÛÌÑÈÏÍ (ÑËÉÊ ÎÅ
-צÄÐÏצÄÁ¤ ÓÔÁÎÄÁÒÔÕ RFC 1738). ÷ ÔÁËÏÍÕ ×ÉÐÁÄËÕ, ÆÁÊÌ ÍÏÖÅ ÂÕÔÉ
-ÚÎÁÊÄÅÎÉÊ ÚÁ ÁÄÒÅÓÏÀ <A HREF="%B">%B</A>.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ëÏÍÁÎÄÁ FTP PUT ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ: æÁÊÌ ÓÔ×ÏÒÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ïÐÅÒÁÃ¦Ñ ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ</H1>
-<H2>æÁÊÌ ÓÔ×ÏÒÅÎÉÊ</H2>
-<HR noshade size="1px">
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: ëÏÍÁÎÄÁ FTP PUT/upload ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>FTP PUT/upload ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ ÆÁÊÌÁ ÚÁ ÁÄÒÅÓÏÀ:
-<A HREF="%U">%U</A>
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצÄØ
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-ãÅ ÏÚÎÁÞÁ¤ ÝÏ:
-<PRE>
-÷ÁÍ ÓÌ¦Ä ÐÅÒÅצÒÉÔÉ ÛÌÑÈ, ÐÒÁ×Á ÄÏÓÔÕÐÕ, צÌØΊͦÓÃÅ ¦ ЦÓÌÑ ÃØÏÇÏ ÓÐÒÏÂÕ×ÁÔÉ ÚÎÏ×Õ.
-</PRE>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ëÏÍÁÎÄÁ FTP PUT ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ: æÁÊÌ ÏÎÏ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ïÐÅÒÁÃ¦Ñ ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ.</H1>
-<H2>æÁÊÌ ÏÎÏ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-FTP ÓÅÒ×ÅÒ ÂÕ× ÐÅÒÅÇÒÕÖÅÎÉÊ
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ ÐÒÏÔÏËÏÌÕ ICAP.
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I> %E</I></PRE>
-
-<P>
-ãÅ ÍÏÖÅ ÏÚÎÁÞÁÔÉ:
-äÅÑ˦ ÁÓÐÅËÔÉ ICAP Ú'¤ÄÎÁÎÎÑ ÎÅÓÐÒÁ×Φ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ:
-<UL>
-<LI>äÏÓÔÕÐ ÄÏ ICAP ÓÅÒ×ÅÒÕ ÎÅÍÏÖÌÉ×ÉÊ.
-<LI>îÅצÒÎÁ צÄÐÏצÄØ ×¦Ä ICAP ÓÅÒ×ÅÒÕ.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅצÒÎÉÊ ÚÁÐÉÔ
-</STRONG>
-</UL>
-
-<P>
-äÅÑ˦ ÁÓÐÅËÔÉ HTTP ÚÁÐÉÔÕ ÎÅצÒΦ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ:
-<UL>
-<LI>÷¦ÄÓÕÔÎ¦Ê ÁÂÏ ÎÅצÄÏÍÉÊ ÍÅÔÏÄ ÚÁÐÉÔÕ (GET, POST)
-<LI>÷¦ÄÓÕÔÎ¦Ê URL
-<LI>÷¦ÄÓÕÔÎ¦Ê HTTP ¦ÄÅÎÔÉƦËÁÔÏÒ (HTTP/1.0)
-<LI>úÁÐÉÔ ÎÁÄÔÏ ×ÅÌÉËÉÊ
-<LI>îÅ ×ËÁÚÁÎÉÊ Content-Length ÄÌÑ ÚÁÐÉÔ¦× POST ÞÉ PUT
-<LI>îÅÄÏÐÕÓÔÉÍÉÊ ÓÉÍ×ÏÌ × ¦ÍÅΦ ÓÅÒ×ÅÒÁ; ЦÄÞÅÒËÕ×ÁÎÎÑ ÎÅÄÏÐÕÓÔÉͦ
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅצÒÎÉÊ ÚÁÐÉÔ
-</STRONG>
-</UL>
-
-<P>
-The HTTP צÄÐÏצÄÎÅ ÐÏצÄÏÍÌÅÎÎÑ, ÏÔÒÉÍÁÎÅ ×¦Ä ÓÅÒ×ÅÒÁ
-ÎÅ ÍÏÖÅ ÂÕÔÉ ×ÉÚÎÁÞÅÎÅ ÁÂÏ ¤ ÎÅÐÒÁ×ÉÌØÎÏ ÚÆÏÒÍÏ×ÁÎÉÍ.
-âÕÄØ-ÌÁÓËÁ, ËÏÎÔÁËÔÕÊÔÅ Ú ÁÄͦΦÓÔÒÁÔÏÒÏÍ ÓÁÊÔÕ. ÷ÁÛ ÁÄͦΦÓÔÒÁÔÏÒ
-ËÅÛÕ ÍÏÖÅ ÎÁÄÁÔÉ ÷ÁÍ Â¦ÌØÛ ÄÅÔÁÌØÎÕ ¦ÎÆÏÒÍÁæÀ ÐÒÏ
-ÄÁÎÕ ÐÏÍÉÌËÕ, ÑËÝÏ ÃÅ ÎÅÏÂȦÄÎÏ.
-
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅÐÒÁ×ÉÌØÎÉÊ URL
-</STRONG>
-</UL>
-
-<P>
-äÅÑ˦ ÁÓÐÅËÔÉ ÚÁÐÒÏÛÅÎÏÇÏ URL ¤ ÎÅÐÒÁ×ÉÌØÎÉÍÉ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ:
-<UL>
-<LI>÷¦ÄÓÕÔÎ¦Ê ÞÉ ÎÅצÒÎÉÊ ÐÒÏÔÏËÏÌ ÄÏÓÔÕÐÕ (ÐÏ×ÉÎÅÎ ÂÕÔÉ `http://'' ÁÂÏ
-ÓÈÏÖÉÊ)
-<LI>÷¦ÄÓÕÔΤ ¦Í'Ñ ÓÅÒ×ÅÒÁ
-<LI>îÅÄÏÐÕÓÔÉÍÉÊ ÐÏÄצÊÎÉÊ ËÅÒÕÀÞÉÊ ÓÉÍ×ÏÌ × URL-ÛÌÑÈÕ
-<LI>îÅÄÏÐÕÓÔÉÍÉÊ ÓÉÍ×ÏÌ × ¦ÍÅΦ ÓÅÒ×ÅÒÁ; ЦÄÞÅÒËÕ×ÁÎÎÑ ÎÅÄÏÐÕÓÔÉͦ
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-þÁÓ Ú'¤ÄÎÁÎÎÑ ÚÁ˦ÎÞÉ×ÓÑ
-</STRONG>
-</UL>
-
-<P>
-Squid ÚÁ×ÅÒÛÉ× ÷ÁÛ ÚÁÐÉÔ Õ Ú×'ÑÚËÕ Ú ÐÅÒÅ×ÉÝÅÎÎÑÍ
-ÍÁËÓÉÍÁÌØÎÏÇÏ ÞÁÓÕ Ú'¤ÄÎÁÎÎÑ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-Wais Relay ÎÅ ×ÉÚÎÁÞÅÎÉÊ
-</STRONG>
-</UL>
-
-<P>
-äÌÑ ÃØÏÇÏ ËÅÛÕ ÎÅ ×ÉÚÎÁÞÅÎÉÊ WAIS Relay host! ú×ÅÒΦÔØÓÑ ÄÏ ÁÄͦΦÓÔÒÁÔÏÒÁ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-÷¦ÄÐÏצÄÎÉÊ ÏÂ'¤ËÔ ÎÅ ÂÕ× ÚÎÁÊÄÅÎÉÊ × ËÅÛ¦, × ÒÅÚÕÌØÔÁÔ¦ ÞÏÇÏ ÂÕÌÁ
-×ÉÚÎÁÞÅÎÁ ÄÉÒÅËÔÉ×Á <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-÷Ù ÐÏÓÌÁÌÉ ÚÁÐÉÔ Ú ÄÉÒÅËÔÉ×ÏÀ ËÅÛ-ËÏÎÔÒÏÌÀ <code>only-if-cached</code>.
-ïÂ'¤ËÔ ÎÅ ÂÕ× ÚÎÁÊÄÅÎÉÊ × ËÅÛ¦, <em>ÁÂÏ</em> צΠ×ÉÍÁÇÁ¤ ÏÎÏ×ÌÅÎÎÑ,
-ÑËÅ ÚÁÂÏÒÏÎÅÎÏ <code>only-if-cached</code> ÄÉÒÅËÔÉ×ÏÀ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ ÞÉÔÁÎÎÑ
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I> %E</I></PRE>
-
-<P>
-ð¦Ä ÞÁÓ ÞÉÔÁÎÎÑ ÄÁÎÉÈ Ú ÍÅÒÅÖ¦ ×ÉÎÉËÌÁ ÐÏÍÉÌËÁ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ
-÷ÁÛ ÚÁÐÉÔ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÅÒÅ×ÉÝÅÎÉÊ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎÑ ×¦ÄÐÏצĦ.
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I> %E</I></PRE>
-
-<P>
-ðÅÒÅ×ÉÝÅÎÉÊ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎÑ ×¦ÄÐÏצĦ Ð¦Ä ÞÁÓ ÞÉÔÁÎÎÑ ÄÁÎÉÈ Ú ÍÅÒÅÖ¦. íÅÒÅÖÁ
-ÞÉ ÓÅÒ×ÅÒ ÍÏÖÕÔØ ÎÅ ÐÒÁÃÀ×ÁÔÉ ÞÉ ÂÕÔÉ ÐÅÒÅÇÒÕÖÅÎÉÍÉ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<P>
-ãÅÊ ËÅÛ × ÄÁÎÉÊ ÍÏÍÅÎÔ ÞÁÓÕ ÚÎÁÈÏÄÉÔØÓÑ × ÐÒÏÃÅÓ¦ ÚÕÐÉÎËÉ ¦ ÎÅ ÍÏÖÅ ÏÂÓÌÕÖÉÔÉ
-×ÁÛ ÚÁÐÉÔ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ ÞÅÒÅÚ ÄÅÑËÉÊ ÞÁÓ ÚÎÏ×Õ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ TCP socket.
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid ÎÅ ÍÏÖÅ ÓÔ×ÏÒÉÔÉ TCP socket, ÓËÏÒ¦Û ÚÁ ×ÓÅ ÞÅÒÅÚ ÄÕÖÅ ×ÉÓÏËÕ ÚÁÇÒÕÚËÕ ÓÅÒ×ÅÒÁ.
-âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-úÁÐÉÔ ÞÉ ×¦ÄÐÏצÄØ ÎÁÄÔÏ ×ÅÌÉËÁ.
-</STRONG>
-
-<P>
-õ ×ÉÐÁÄËÕ, ÑËÝÏ ÷É ÚĦÊÓÎÀ×ÁÌÉ POST ÞÉ PUT ÚÁÐÉÔ, ÔÏĦ ÷ÁÛ ÚÁÐÉÔ
-(ÔÅ, ÝÏ ÷É ÎÁÍÁÇÁÌÉÓØ ÚÁËÁÞÁÔÉ) ¤ ÎÁÄÔÏ ×ÅÌÉËÉÍ. ñËÝÏ ÷É
-ÚĦÊÓÎÀ×ÁÌÉ GET ÚÁÐÉÔ, ÔÏĦ צÄËÌÉË (ÔÅ, ÝÏ ÷É ÎÁÍÁÇÁÌÉÓØ ×ÉËÁÞÁÔÉ
-) ¤ ÎÁÄÔÏ ×ÅÌÉËÉÍ. 㦠ÏÂÍÅÖÅÎÎÑ ÂÕÌÉ ×ÓÔÁÎÏ×ÌÅΦ
-÷ÁÛÉÍ ¶ÎÔÅÒÎÅÔ ðÒÏ×ÁÊÄÅÒÏÍ, ÑËÉÊ ËÅÒÕ¤ ËÅÛÏÍ. âÕÄØ-ÌÁÓËÁ,
-ÐÏצÄÏÍÔÅ ÊÏÇÏ, ÑËÝÏ ÷É ××ÁÖÁ¤ÔÅ ÄÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ ÐÏÍÉÌËÏÀ.
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-íÅÔÏÄ ÞÉ ÐÒÏÔÏËÏÌ ÚÁÐÉÔÕ ÎŠЦÄÔÒÉÍÕÀÔØÓÑ
-</STRONG>
-</UL>
-
-<P>
-Squid ΊЦÄÔÒÉÍÕ¤ ×Ó¦ ÍÅÔÏÄÉ ÚÁÐÉÔ¦× ÄÌÑ ÕÓ¦È ÐÒÏÔÏËÏ̦×.
-îÁÐÒÉËÌÁÄ, ÄÌÑ ÐÒÏÔÏËÏÌÕ Gopher ÷É ÎÅ ÍÏÖÅÔÅ ×ÉËÏÎÁÔÉ ÚÁÐÉÔ POST.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URN ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>URL ÄÌÑ ÚÁÐÒÏÛÅÎÏÇÏ URN ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URN:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅÍÏÖÌÉ×Ï ×ÉÚÎÁÞÉÔÉ URN <br>
-(Cannot Resolve URN)
-</STRONG>
-</UL>
-
-<P>
-îÅ ×ÁÒÔÏ ÂÁÇÁÔÏ ÞÏÇÏ ÏÞ¦ËÕ×ÁÔÉ ×¦Ä Ã¦¤§ ÔÅÈÎÏÌÏǦ§ URNs ÎÁ %T :)
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ ÚÁÐÉÓÕ
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I> %E</I></PRE>
-
-<P>
-ð¦Ä ÞÁÓ ×¦ÄÐÒÁ×ÌÅÎÎÑ ¦ÎÆÏÒÍÁæ§ × ÍÅÒÅÖÕ ×ÉÎÉËÌÁ ÐÏÍÉÌËÁ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ
-÷ÁÛ ÚÁÐÉÔ
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
-
-
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-÷¦ÄÐÏצÄØ ÎÕÌØÏ×ϧ ÄÏ×ÖÉÎÉ
-</STRONG>
-</UL>
-
-<P>
-Squid ÎÅ ÏÔÒÉÍÁ× ÂÕÄØ-ÑËÉÈ ÄÁÎÉÈ ÄÌÑ ÃØÏÇÏ ÚÁÐÉÔÕ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-Thank you to
- ðÅÔÒÏ îÅË <mr.petruccio@gmail.com>
- Vitaliy Matytsyn (main) <vm@if.bank.gov.ua>
-for creating these error pages in Ukrainian!
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Доступ заборонений.
-</STRONG>
-<P>
-Настройка контролю доступу не дозволяє виконати Ваш
-запит в даний час. Якщо Ви вважаєте це неправильним, то,
-будь-ласка, контактуйте з Вашим Інтернет провайдером.
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Доступ до кешу заборонений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Доступ до кешу заборонений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Доступ до кешу заборонений
-</STRONG>
-</UL>
-</P>
-
-<P>Вибачте, але Ви не можете запросити:
-<PRE> %U</PRE>
-з цього кешу до тих пір, поки не пройдете аутентифікацію.
-</P>
-
-<P>
-Вам потрібно використовувати Netscape версії 2.0 чи вище, або Microsoft Internet
-Explorer 3.0, або HTTP/1.1 сумісний броузер. Будь-ласка, зв'яжіться
-з <A HREF="mailto:%w">адміністратором кешу</a>, якщо у Вас виникли труднощі
-з аутентифікацією, або <A HREF="http://%h/cgi-bin/chpasswd.cgi">змініть</a>
-Ваш пароль по замовчуванню.
-</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Доступ до керування кешом заборонений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Доступ до керування кешом заборонений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Доступ до керування кешом заборонений
-</STRONG>
-</UL>
-</P>
-
-<P>Вибачте, Ви не можете запросити:
-<PRE> %U</PRE>
-з цього кеш менеджера до тих пір, поки не пройдете аутентифікацію.
-</P>
-<P>
-Вам потрібно використовувати Netscape версії 2.0 чи вище, або Microsoft Internet
-Explorer 3.0, або HTTP/1.1 сумісний броузер. Будь-ласка, зв'яжіться
-з <A HREF="mailto:%w">адміністратором кешу</a>, якщо у Вас виникли труднощі
-з аутентифікацією, а якщо <em>Ви</em> є адміністратором,
-прочитайте документацію Squid по інтерфейсу керування кешом і перевірте
-журнал кешу (cache log) на предмет більш детальних повідомлень про помилки.</P>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-В даний момент неможливо переслати цей запит
-</STRONG>
-</UL>
-
-<P>
-Даний запит не може бути пересланий до сервера-джерела, чи до будь-якого
-з вищестоячих кешів. Найбільш вірогідна причина помилки:
-<UL>
-<LI>Адміністратор кешу заборонив виконувати прямі з'єднання
-з серверами-джерелами (origin servers) і
-<LI>усі вищестоячі кеш-сервера (parent caches) в даний момент недоступні.
-</UL>
-<P>Вашим кеш адміністратором є <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Не вдалось встановити з'єднання
-</STRONG>
-</UL>
-
-<P>
-Система повідомляє:
-<PRE><I> %E</I></PRE>
-
-<P>
-Віддалені хост чи мережа не відповідають. Будь-ласка, повторіть свій запит ще раз.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<BLOCKQUOTE>
-Неможливо визначити IP адресу вузла
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-DNS сервер повідомляє:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Це означає:
-<PRE>
- Кешу не вдалося визначити ім'я сервера, вказане в URL.
- Перевірте правильність написання адресу.
-</PRE>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<BLOCKQUOTE>
-Обробка ESI завершилась невдало.
-</BLOCKQUOTE>
-
-<P>
-ESI процесор повідомив:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-Це означає що:
-<PRE>
- Замінник не зміг обробити ESI темплейт. Будь-ласка повідомте про цю помилку вебмайстра.
-</PRE>
-<P>Вашим вебмайстром є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Пересилка заборонена
-</STRONG>
-</UL>
-
-<P>
-Цей кеш не пересилатиме Ваш запит, тому що він намагається встановити братні відносини (sibling relationship).
-Можливо, клієнт %i - невірно сконфігурований кеш.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-FTP доступ заборонений.
-</STRONG>
-</UL>
-
-<P>
-Цей кеш не підтримує протокол FTP.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL
-виникла помилка протоколу FTP:
-<A HREF="%U">%U</A>
-<P>
-Squid послав наступну команду FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-Сталась невдала FTP аутентифікація
-<P>
-Squid послав наступну FTP команду:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Даний URL не може бути доставлений:
-<A HREF="%U">%U</A>
-<P>
-Squid послав наступну FTP команду:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Це може бути викликано FTP адресою з абсолютним шляхом (який не
-відповідає стандарту RFC 1738). В такому випадку, файл може бути
-знайдений за адресою <A HREF="%B">%B</A>.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>Команда FTP PUT завершилась успішно: Файл створений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Операція завершилась успішно</H1>
-<H2>Файл створений</H2>
-<HR noshade size="1px">
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Команда FTP PUT/upload завершилась невдало</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>FTP PUT/upload завершилась невдало</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки файла за адресою:
-<A HREF="%U">%U</A>
-<P>
-Squid послав наступну FTP команду:
-<PRE><STRONG>
- %f
-</STRONG></PRE>
-і потім отримав таку відповідь
-<PRE><STRONG>
- %F
-</STRONG></PRE>
-<P>
-Це означає що:
-<PRE>
-Вам слід перевірити шлях, права доступу, вільне місце і після цього спробувати знову.
-</PRE>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>Команда FTP PUT завершилась успішно: Файл оновлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Операція завершилась успішно.</H1>
-<H2>Файл оновлений</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-FTP сервер був перегружений
-<P>
-Squid послав наступну FTP команду:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка протоколу ICAP.
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I> %E</I></PRE>
-
-<P>
-Це може означати:
-Деякі аспекти ICAP з'єднання несправні. Можливі проблеми:
-<UL>
-<LI>Доступ до ICAP серверу неможливий.
-<LI>Невірна відповідь від ICAP серверу.
-</UL>
-</P>
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Невірний запит
-</STRONG>
-</UL>
-
-<P>
-Деякі аспекти HTTP запиту невірні. Можливі проблеми:
-<UL>
-<LI>Відсутній або невідомий метод запиту (GET, POST)
-<LI>Відсутній URL
-<LI>Відсутній HTTP ідентифікатор (HTTP/1.0)
-<LI>Запит надто великий
-<LI>Не вказаний Content-Length для запитів POST чи PUT
-<LI>Недопустимий символ в імені сервера; підчеркування недопустимі
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Невірний запит
-</STRONG>
-</UL>
-
-<P>
-The HTTP відповідне повідомлення, отримане від сервера
-не може бути визначене або є неправильно зформованим.
-Будь-ласка, контактуйте з адміністратором сайту. Ваш адміністратор
-кешу може надати Вам більш детальну інформацію про
-дану помилку, якщо це необхідно.
-
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Неправильний URL
-</STRONG>
-</UL>
-
-<P>
-Деякі аспекти запрошеного URL є неправильними. Можливі проблеми:
-<UL>
-<LI>Відсутній чи невірний протокол доступу (повинен бути `http://'' або
-схожий)
-<LI>Відсутнє ім'я сервера
-<LI>Недопустимий подвійний керуючий символ в URL-шляху
-<LI>Недопустимий символ в імені сервера; підчеркування недопустимі
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Час з'єднання закінчився
-</STRONG>
-</UL>
-
-<P>
-Squid завершив Ваш запит у зв'язку з перевищенням
-максимального часу з'єднання.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Wais Relay не визначений
-</STRONG>
-</UL>
-
-<P>
-Для цього кешу не визначений WAIS Relay host! Зверніться до адміністратора.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Відповідний об'єкт не був знайдений в кеші, в результаті чого була
-визначена директива <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-Вы послали запит з директивою кеш-контролю <code>only-if-cached</code>.
-Об'єкт не був знайдений в кеші, <em>або</em> він вимагає оновлення,
-яке заборонено <code>only-if-cached</code> директивою.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка читання
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I> %E</I></PRE>
-
-<P>
-Під час читання даних з мережі виникла помилка. Будь-ласка, повторіть
-Ваш запит.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Перевищений час очікування відповіді.
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I> %E</I></PRE>
-
-<P>
-Перевищений час очікування відповіді під час читання даних з мережі. Мережа
-чи сервер можуть не працювати чи бути перегруженими. Будь-ласка, повторіть Ваш запит.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I> %E</I></PRE>
-
-<P>
-This proxy and the remote host failed to negotiate a mutually acceptable
-security settings for handling your request. It is possible that the remote
-host does not support secure connections, or the proxy is not satisfied with
-the host security credentials.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<P>
-Цей кеш в даний момент часу знаходиться в процесі зупинки і не може обслужити
-ваш запит. Будь-ласка, повторіть Ваш запит через деякий час знову.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка TCP socket.
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I> %E</I></PRE>
-
-<P>
-Squid не може створити TCP socket, скоріш за все через дуже високу загрузку сервера.
-Будь-ласка, повторіть Ваш запит.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Запит чи відповідь надто велика.
-</STRONG>
-
-<P>
-У випадку, якщо Ви здійснювали POST чи PUT запит, тоді Ваш запит
-(те, що Ви намагались закачати) є надто великим. Якщо Ви
-здійснювали GET запит, тоді відклик (те, що Ви намагались викачати
-) є надто великим. Ці обмеження були встановлені
-Вашим Інтернет Провайдером, який керує кешом. Будь-ласка,
-повідомте його, якщо Ви вважаєте дане повідомлення помилкою.
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Метод чи протокол запиту не підтримуються
-</STRONG>
-</UL>
-
-<P>
-Squid не підтримує всі методи запитів для усіх протоколів.
-Наприклад, для протоколу Gopher Ви не можете виконати запит POST.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URN не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>URL для запрошеного URN не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URN:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Неможливо визначити URN <br>
-(Cannot Resolve URN)
-</STRONG>
-</UL>
-
-<P>
-Не варто багато чого очікувати від цієї технології URNs на %T :)
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка запису
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I> %E</I></PRE>
-
-<P>
-Під час відправлення інформації в мережу виникла помилка. Будь-ласка, повторіть
-Ваш запит
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
-
-
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Відповідь нульової довжини
-</STRONG>
-</UL>
-
-<P>
-Squid не отримав будь-яких даних для цього запиту.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
+++ /dev/null
-Thank you to
- Петро Нек <mr.petruccio@gmail.com>
- Vitaliy Matytsyn (main) <vm@if.bank.gov.ua>
-for creating these error pages in Ukrainian!
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-17 19:57+1200\n"
+"Last-Translator: Jordi Bruguera <jordi@dns1.grn.es>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Hi ha hagut un excés en el temps de lectura de dades de la xarxa.Hi "
+"ha congestió o indisposició del servidor i/o la xarxa.Intenteu-"
+"ho d'aqui a una estona."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "No es pot mostrar la URN que heu sol.licitat"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Accés no autoritzat."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"La configuració del control d'accés impedeix realitzar aquesta "
+"operació. Contacteu amb el vostre proveïdor de servei si creieu "
+"que es tracta d'un error."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"S'ha produït un error en l'autentificació FTP mentre s'intentava "
+"llegir la URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"S'ha produït un error FTP mentre s'intentava llegir la URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"S'ha produït un error quan es llegien les dades de la xarxa. Repetiu "
+"la petició"
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"S'ha produït un error mentre s'intentava escriure a la xarxa. "
+"Reintenteu-ho en breus instants."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Accés denegat a la cache"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Accés denegat a l'administració de la cache."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "No s'ha pogut resoldre la URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "La connexió ha excedit el temps màxim"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Falta el camp <q>Content-Length</q>."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Accés denegat a la cache"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Accés denegat a l'administració de la cache"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: Ha fallat l'enviament del fitxer FTP"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: No es pot mostrar la URL que heu sol.licitat"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: No es pot mostrar la URN que heu sol.licitat"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "Comanda FTP PUT executada amb èxit: Fitxer creat"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "Comanda FTP PUT completada amb éxit: Fitxer actualitzat"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "Ha fallat la comanda FTP d'enviament de fitxer"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "El protocol FTP està deshabilitat."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Fitxer creat"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Fitxer actualitzat"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Reenviament denegat."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Ei :) no esperis massa de les URN a %T !!"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Si esteu intentant descarregar-vos algunfitxer, aques és massa gros."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Si esteu fent una petició de tipus POST o PUT, llavors el cos de la "
+"petició és massa llarg (el fitxer que intenteu enviar)."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Caràcter no permès en el nom del servidor."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "La URL conté un doble caràcter d'escapament."
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL incorrecte."
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Falta l'identificador HTTP (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "no hi ha URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Falta el nom del servidor."
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr "Protocol d'accés absent o incorrecte ( http:// o similar )"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Mètode de petició desconegut o absent."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No hi ha reenviament de protocol WAIS"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operació completada"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Contacteu ambel vostre <a href=\"mailto:%w%W\">administrador de <i>cache</"
+"i></a> si teniudificultats per a autentificar-vos o <ahref=\"http://%h/cgi-"
+"bin/chpasswd.cgi\">canvieu</a> la vostra contrasenya."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Contacteu ambel vostre <a href=\"mailto:%w%W\">administrador de cache</a>. "
+"Si vosaltres <em>sou</em> l'administrador d'aquesta cache, llegiu-vos la "
+"documentació de l'Squid en l'apartat de l'administrador de la cache."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Error de lectura"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "S'ha excedit el temps de lectura"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La petici&ocute; és massa llarga."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Errada de connexió de xarxa"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Alguna part de la URL no és correcte."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+#, fuzzy
+msgid "Some possible problems are:"
+msgstr "Alguna possibles problemes:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"L'accés a l'objecte %U no està permès sense "
+"autentificació prèvia."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"L'accés a l'objecte %U no està permès sense "
+"autentificació prèvia."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+#, fuzzy
+msgid "Squid did not receive any data for this request."
+msgstr "La <i>cache</i> ha rebut una resposta sense dades, un document buit."
+
+#: templates/ERR_UNSUP_REQ:6
+#, fuzzy
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"La <i>cache</i> no admet tots els tipus de petició per a tots els "
+"protocols. Per exemple, no es pot fer una petició tipus POST en el "
+"protocol Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+#, fuzzy
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"La <i>cache</i> ha finalitzat la connexió perque aquesta haexcedit el "
+"temps màxim permès."
+
+#: templates/ERR_SOCKET_FAILURE:7
+#, fuzzy
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"La <i>cache</i> no pot obrir sessions TCP, possiblement degut a un "
+"excés de càrrega. Reintenteu d'aqui a una estona."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+#, fuzzy
+msgid "Squid sent the following FTP command:"
+msgstr "La <i>cache</i> ha enviat la comanda FTP:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "El servidor de DNS diu:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"El servidor FTP estava massa ocupat quan intentava mostrar la URL: <a href="
+"\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"El servidor o la xarxa remota no es troben disponibles. Torneu-ho a provar "
+"d'aqui a una estona."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "La petició o la resposta són massa llargues."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "No es pot mostrar la URL que heu sol.licitat"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "El sistema diu: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"No hi ha un reenviador de protocol WAIS per a aquesta cache. Comenta-li a "
+"l'administrador."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Aquests límits han estat establerts pel proveïdor Internet que "
+"opera aquesta cache. Contacta amb ells si creus que es tracta d'un error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Aquesta cache no accepta connexions FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Aquesta <i>cache</i> està en procés d'aturada inmediata i no "
+"pot atendre la vostra petició. Reintenteu la petició d'aqui a "
+"uns minuts."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Aquesta cache no reenviarà la vostra petició donat que "
+"està forçant una connexió a una cachegermana. Potser "
+"que el client %i sigui una cache mal configurada."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+#, fuzzy
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Aix&ograce; vol dir que la cache no ha pogut resoldre el nom del servidor "
+"que heu escrit a la URL. Comproveu si aquesta adreça és "
+"correcta."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Aquest error pot ser causat per una URL del protocol FTP amb un camí "
+"absolut (que no compleix amb la RFC 1738). Si aquesta n'és la causa, "
+"trobareu el fitxer desitjat a <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+#, fuzzy
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Aquesta petició no s'ha pogut enviar al servidor d'origen o a una cache "
+"superior. La causa més probable per aquest error és "
+"l'administrador de la cache no permet connexions directes amb els servidors "
+"d'origen, o no hi ha cap cache superior disponible."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+"No ha estat possible determinar l'adreça IP del servidor <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "No ha estat possible de reenviar aquesta petició."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Mètode i protocol no admesos"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"S'ha especificat una directiva <q>only-if-cached</q> i no s'ha trobat un "
+"document vàlid a la cache."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "Mentre s'intentava la comanda PUT a la URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Error d'escriptura"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Heu fet una petició amb la directiva de control de cache <q>only-if-cached</"
+"q>. El document no s'ha trobat a la cache, o necessitava revalidació, "
+"expressament prohibida per la directiva <q>only-if-cached</q>."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+"L'administrador d'aquesta cache és <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+#, fuzzy
+msgid "Zero Sized Reply"
+msgstr "Resposta de longitut ZERO :)"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-23 18:07+1200\n"
+"Last-Translator: Morten S. Nielsen <mortensn@geocities.com>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"En timeout opstod mens der der blev ventet pæ at læse data fra "
+"netværket. Netværket kan være nede eller forstoppet. "
+"Prøv igen."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "URL for den angivne URN kunne ikke hentes"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Adgang Nægtet."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Adgangs kontrollen tillader ikke din forespørgsel. Kontakt din "
+"udbyder nu, hvis du mener dette er en fejl."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"En FTP autenticierings fejl opstod under hentning af føgende URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"En FTP protokol fejl opstod under hentning af føgende URL: <a href=\"%"
+"U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"En fejl opstod mens der blev læst data fra nettet. Prøv igen."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"En fejl opstod mens der blev skrevet data til nettet. Prøv igen."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Adgang Nægtet."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Administrator Adgang Nægtet."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Kan Ikke Opløse URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Levetiden for forbindelsen udløb"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length mangler til POST eller PUT forespørgsler"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FEJL"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FEJL: Cache Adgang Nægtet"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FEJL: Cache Administrator Adgang Nægtet"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FEJL: FTP upload fejlede"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FEJL: Den angivne URL kunne ikke hentes"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FEJL: Den angivne URN kunne ikke hentes"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Lykkedes: Fil Oprettet"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Lykkedes: Fil Opdateret"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload fejlede"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP er slået fra"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Fil oprettet"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Fil opdateret"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Videresendelse Nægtet."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hallo, forvent nu ikke for meget af URNs på %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ugyldig dobbelt-escape i URL sti"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Ugyldig URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Manglende HTTP Identifikator (ved HTTP/1.0)"
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Manglende URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Manglende maskinnavn"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Manglende eller ukendt adgangsprotokol (burde være <q>http://</q> "
+"eller tilsvarende)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Manglende eller ukendt forespørgsels metode."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Ingen WAIS Relæ"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Handlingen lykkedes"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Kontakt <a href=\"mailto:%w%W\">cache administratoren</a> hvis du har "
+"problemer med at autenticiere dig eller <a href=\"http://%h/cgi-bin/chpasswd."
+"cgi\">skift</a> dit password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Kontakt <a href=\"mailto:%w%W\">cache administratoren</a> hvis du har "
+"problemer med at autenticiere dig eller hvis du <em>er</em> cache "
+"administratoren, læs Squid dokumentationen for cache administrator "
+"interfacet og check cache loggen for mere detaljerede fejlmeddelelser."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Læse fejl"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Forespørgslen er for stor."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Fejl"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Mulige problemer kan være:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Du har desværre ikke lov til at hente %U fra denne cache førend "
+"du har autenticieret dig selv."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Du har desværre ikke lov til at hente %U fra denne cache førend "
+"du har autenticieret dig selv."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+#, fuzzy
+msgid "Squid did not receive any data for this request."
+msgstr "Proxy'en Squid modtog ingen data for denne forespørgsel."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Proxy'en Squid understøtter ikke alle forespørgselsmetoder for "
+"alle adgangs protokoller. For eksempel kan du ikke POST en Gopher "
+"forespørgsel."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Proxy'en Squid har afsluttet forespørgslen fordi den har overskredet "
+"den maksimale levetid for forbindelser (connection timeout)."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Proxy'en Squid sendte følgende FTP kommando:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr ""
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"FTP serveren var optaget da føgende URL skulle hentes: <a href=\"%U\">"
+"%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Den føgende URL kunne ikke hentes: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"Der kunne ikke opnås forbindelse til den anden computer. Netvæ"
+"rket eller computeren kan være nede. Prøv eventuelt igen."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Den angivne URL kunne ikke hentes"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Systemet returnerede: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+#, fuzzy
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Der er ikke nogen WAIS Relæ maskine defineret for denne proxy cache! "
+"Råb efter administratoren!"
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Denne cache understøtter ikke FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Proxy cachen er i gang med at lukke ned og kan derfor ikke betjene din "
+"forespørgsel nu. Prøv venligst igen snart."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Denne cache vil ikke videresende din forespørgsel fordi den prø"
+"ver at opretholde et søskendeforhold. Måske er klienten "
+"på %i en fejlkonfigureret cache."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+#, fuzzy
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Dette betyder at cachen kunne ikke opløse det angivne navn i URL'en. "
+"Check at adressen er korrekt."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Dette kan muligvis forårsages af en FTP URL med en absolut sti "
+"(hvilket ikke er i overensstemmelse med standarden RFC 1738). Hvis dette er "
+"årsagen, kan filen findes på <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Denne forespørgsel kunne ikke videresendes til den oprindelige server "
+"eller en af forældre cache'ene. Dette skyldes sandsynligvis at cache "
+"administratoren tillader ikke denne cache at udføre direkte "
+"forbindelser til servere og alle forældre cache'er kan ikke nås "
+"for øjeblikket."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Kunne ikke finde IP nummeret for navnet <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Kunne ikke vidersende forespørgslen."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Uunderstøttet Forespørgsels Metode og Protokol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Dokumentet blev ikke fundet i cachen og <q>only-if-cached</q> (kun-hvis-gemt-"
+"i-cachen) direktivet var specificeret."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Under udførelse af PUT kommando (sending) på følgende "
+"URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Skrive Fejl"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Du har sendt en forespørgsel med en <q>only-if-cached</q> cache "
+"kontrol direktiv. Dokumentet blev ikke fundet i cachen, <em>eller</em> det "
+"kræver en bekræftelse af gyldighed som bliver forbudt af <q>only-"
+"if-cached</q> direktivet."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Nul Størrelse Svar"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-13 11:56+1200\n"
+"Last-Translator: Robert Förster <Dessa@gmake.de>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Ungültige Anfrage</b> Fehler erhalten als versucht wurde die Anfrage zu "
+"Bearbeiten:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Ungültige Antwort</b> Fehler erhalten als versucht wurde die Anfrage zu "
+"bearbeiten:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Zeitüberschreitung beim Warten auf Daten des Netzwerks. Das Netzwerk oder "
+"der Server könnten nicht Verfügbar oder überlastet sein. Bitte versuchen "
+"sie es erneut."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "Eine URL für den angeforderten URN konnte nicht gefunden werden"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Zugriff verweigert."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Die Anfrage wurde aufgrund mangelnder Zugriffsrechte verweigert. Bitte "
+"kontaktieren Sie Ihren Dienstanbieter falls sie denken, dass dies ein Fehler "
+"ist."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Die FTP Authentifizierung bei der URL <a href=\"%U\">%U</a> ist "
+"Fehlgeschlagen."
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Ein FTP Protokollfehler ist bei der URL <a href=\"%U\">%U</a> aufgetreten."
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Die Antwort des ICAP Servers war ungültig."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Ein Fehler ist beim Lesen vom Netzwerk aufgetreten. Bitte wiederholen sie "
+"die Anfrage."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"Ein Fehler ist beim Schreiben auf das Netzwerk aufgetreten. Bitte "
+"wiederholen sie die Anfrage."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Zugriff verweigert."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Zugriff verweigert."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Konnte URN nicht auflösen"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Zeitlimit der Verbindung erreicht"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Verbindung zu %I Fehlgeschlagen."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length fehlt für POST oder PUT Anfragen."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FEHLER"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FEHLER: Cache Zugriff verweigert"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FEHLER: Cache Manager Zugriff verweigert"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FEHLER: FTP Upload fehlgeschlagen"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FEHLER: Die angeforderte URL konnte nicht gefunden werden"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FEHLER: Die angeforderte URN konnte nicht gefunden werden"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI-Verarbeitung fehlgeschlagen."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Erfolgreich: Datei Erstellt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Erfolgreich: Datei aktualisiert"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/Upload fehlgeschlagen"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP ist deaktiviert"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Konnte keine sichere Verbindung zu %I herstellen"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Datei erstellt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Datei aktualisiert"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Weiterleitung verweigert."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Erzeugt am %T von %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, erwarte nicht zuviel von URNs am %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP Protokoll Fehler."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr "Für einen GET-Request ist die angeforderte Resource zu groß."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr "Für einen POST-Request ist die hochzuladene Resource zu groß."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Ungültiges Zeichen im Hostname; Unterstriche sind nicht erlaubt."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ungültiger Doppel-Escape im URL-Pfad"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Ungültige URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Fehlende HTTP-Version (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Fehlende URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Fehlender Hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Fehlendes oder ungültiges Adressprotokoll (Versuchen sie zum "
+"Beispiel<q>http://</q>)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Fehlende oder unbekannte Anfragemethode."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Kein Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation Erfolgreich"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Bitte kontaktieren sie den <a href=\"mailto:%w%W\">Cache Administrator</a> "
+"Falls sie Schwierigkeiten haben sich zu authentifizieren oder <a href="
+"\"http://%h/cgi-bin/chpasswd.cgi\">ändern</a> sie ihr Standardpasswort."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Bitte kontaktieren sie den <a href=\"mailto:%w%W\">Cache Administrator</a> "
+"Falls sie Schwierigkeiten haben sich zu authentifizieren oder, falls "
+"<em>sie</em> der Administrator sind, lesen sie die Squid Dokumentation zum "
+"Thema Cacheverwaltungsoberfläche und prüfen sie das Cachelog für "
+"detaillierte Fehlermeldungen."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Lesefehler"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Zeitüberschreitung beim Lesen"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Anfrage ist zu lang."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socketfehler"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Der Syntax der angeforderten URL ist falsch."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Mögliche Probleme sind:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sie sind momentan nicht berechtigt %U von diesem Cache Manager abzurufen, "
+"bis sie sich authentifiziert haben."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sie sind momentan nicht berechtigt %U von diesem Cache abzurufen, bis sie "
+"sich authentifiziert haben."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid hat keine Daten für diese Anfrage empfangen."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid unterstützt nicht alle Anfragemethoden für alle Protokolle. Sie können "
+"zum Beispiel keine POST Anfrage über das Gopher Protokoll senden."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid hat die Anfrage beendet, da die maximale Verbindungszeit überschritten "
+"wurde."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid kann keinen TCP Socket erstellen, warscheinlich aufgrund von großer "
+"Systemlast. Bitte wiederholen sie die Anfrage."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sendete das folgende FTP Kommando:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "Der DNS-Server meldete:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "Der ESI-Prozessor meldete:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Der FTP Server war zu beschäftigt um die URL: <a href=\"%U\">%U</a> abzurufen"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"Die HTTP Antwortnachricht, die vom Kontaktierten Server empfangen wurde, "
+"wurde nicht verstanden oder ist falsch. Bitte kontaktieren sie den Webmaster."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "Der ICAP Server ist nicht erreichbar."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Die folgende URL konnte nicht gefunden werden: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Der folgende Fehler wurde beim Versuch die URL <a href=\"%U\">%U</a> zu "
+"holen festgestellt:"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Der folgende Fehler wurde beim Versuch die URN <a href=\"%U\">%U</a> zu "
+"holen festgestellt:"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"Der Zielhost oder das Zielnetzwerk ist momentan nicht verfügbar. Bitte "
+"wiederholen sie die Anfrage."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "Die Anfrage oder Antwort ist zu lang."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Die angeforderte URL konnte nicht gefunden werden"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "Der Server antwortete:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Das System antwortete: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Es ist kein WAIS Relay für diesen Cache definiert! Sagen sie dies dem "
+"Administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Diese Einschränkungen wurden vom Internetdienstanbieter eingerichtet der "
+"diesen Cache betreibt. Bitte kontaktieren sie ihn falls sie denken, dass "
+"dies ein Fehler ist."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Dieser Cache unterstützt kein FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Dieser Cache wird momentan heruntergefahren und kann daher die Anfrage nicht "
+"bearbeiten. Bitte wiederholen sie die Anfrage gleich noch einmal."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Dieser Cache wird ihre Anfrage nicht weiterleiten da er versucht ein "
+"Geschwisterverhältnis zu erzwingen. Warscheinlich ist der Client auf %i ein "
+"Cache der falsch konfiguriert wurde."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "Das heißt, dass etwas mit der ICAP Kommunikation nicht stimmt."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Das heißt, dass der FTP Server keine Berechtigung oder nicht genug "
+"Plattenplatz zum Speichern der Datei zur Verfügung hat. Überprüfen sie Pfad, "
+"Berechtigungen und Plattenplatz und wiederholen sie die Anfrage."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Das heißt, dass der Cache nicht in der Lage war den Hostnamen aufzulösen der "
+"in der URL gefunden wurde. Überprüfen sie ob die Adresse korrekt ist."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Das heißt, dass der Ersatz nicht in der Lage war das ESI Template zu "
+"verarbeiten. Bitte melden sie diesen Fehler dem Webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Die Ursache kann eine FTP URL mit einem Absoluten Pfad sein (was nicht RFC "
+"1738 konform ist). Wenn dies der Fall ist, ist die Datei unter <a href=\"%B"
+"\">%B</a> zu finden."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+"Dieser Proxy und der Zielhost waren nicht in der Lage "
+"Sicherheitseinstellungen auszuhandeln die beidseitig akzeptiert werden. Es "
+"ist möglich dass der Zielhost keine sicheren Verbindungen unterstützte oder "
+"der Proxy nicht mit dem Sicherheitszertifikat des Hosts einverstanden ist."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Die Anfrage kann nicht an den Quellserver oder irgendeinen Vergeschalteten "
+"Cache weitergeleitet werden. Der wahrscheinlichste Grund ist, dass der "
+"Administrator diesem Cache nicht erlaubt direkte Verbindungen zu "
+"Quellservern herzustellen oder alle vorgeschalteten Cache Server momentan "
+"nicht erreichbar sind."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Konnte keine IP Adresse vom Hostnamen <q>%H</q> ermitteln."
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Kann die Anfrage zurzeit nicht weiterleiten."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Anfragemethode und Protokoll nicht unterstützt"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Kein gültiges Dokument wurde im Cache gefunden und <q>only-if-cached</q> "
+"Option wurde angegeben."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Als versucht wurde eine PUT Anfrage an die folgende URL zu senden: <a href="
+"\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Fehler beim Schreiben"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Sie haben eine Anfrage mit der <q>only-if-cached</q> Cache Kontrolloption "
+"getätigt. Das Dokument wurde nicht im Cache gefunden, <em>oder</em> ioder es "
+"forderte eine Aktualisierung an welche durch die <q>only-if-cached</q> "
+"Option unterbunden wurde."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Ihr Cache Administrator ist <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Ihr Cache Administrator ist in der Lage ihnen mehr über das Problem zu "
+"erklären, falls dies Notwendig ist."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Ihr Webmaster ist <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Nullgrößenantwort"
--- /dev/null
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.1.1\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr ""
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr ""
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr ""
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr ""
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr ""
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr ""
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-07 16:21+1200\n"
+"Last-Translator: Amos Jeffries <squid3@treenet.co.nz>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+"X-Launchpad-Export-Date: 2008-07-31 11:24+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "A URL for the requested URN could not be retrieved"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Access Denied."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "An Illegal response was received from the ICAP server."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Access Denied."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Access Denied."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Cannot Resolve URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Connection Lifetime Expired"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Connection to %I failed."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length missing for POST or PUT requests."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Cache Access Denied"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Cache Manager Access Denied"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: FTP upload failed"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: The requested URL could not be retrieved"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: The requested URN not be retrieved"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI Processing failed."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Successful: File Created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Successful: File updated"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload failed"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is Disabled"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Failed to establish a secure connection to %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "File created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File updated"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Denied."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generated %T by %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, don't expect too much from URNs on %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP protocol error."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Illegal character in hostname; underscores are not allowed."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Illegal double-escape in the URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Missing HTTP Identifier (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Missing URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Missing hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Missing or unknown request method."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation successful"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Read Error"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Read Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Request is too large."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Failure"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Some aspect of the requested URL is incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Some possible problems are:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid did not receive any data for this request."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sent the following FTP command:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "The DNS server returned:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "The ESI processor returned:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "The ICAP server is not reachable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr "The remote host or network may be down. Please try the request again."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "The request or reply is too large."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "The requested URL could not be retrieved"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "The server responded with:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "The system returned: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "This cache does not support FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "This means that some aspect of the ICAP communication failed."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Unable to determine IP address from host name <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Unable to forward this request at this time."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Unsupported Request Method and Protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Write Error"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Zero Sized Reply"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-07 16:23+1200\n"
+"Last-Translator: Amos Jeffries <squid3@treenet.co.nz>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+"X-Launchpad-Export-Date: 2008-07-31 11:24+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "A URL for the requested URN could not be retrieved"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Access Denied."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "An Illegal response was received from the ICAP server."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Access Denied."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Access Denied."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Cannot Resolve URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Connection Lifetime Expired"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Connection to %I failed."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length missing for POST or PUT requests."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Cache Access Denied"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Cache Manager Access Denied"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: FTP upload failed"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: The requested URL could not be retrieved"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: The requested URN not be retrieved"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI Processing failed."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Successful: File Created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Successful: File updated"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload failed"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is Disabled"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Failed to establish a secure connection to %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "File created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File updated"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Denied."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generated %T by %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, don't expect too much from URNs on %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP protocol error."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Illegal character in hostname; underscores are not allowed."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Illegal double-escape in the URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Missing HTTP Identifier (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Missing URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Missing hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Missing or unknown request method."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation successful"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Read Error"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Read Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Request is too large."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Failure"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Some aspect of the requested URL is incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Some possible problems are:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid did not receive any data for this request."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sent the following FTP command:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "The DNS server returned:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "The ESI processor returned:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "The ICAP server is not reachable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr "The remote host or network may be down. Please try the request again."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "The request or reply is too large."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "The requested URL could not be retrieved"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "The server responded with:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "The system returned: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "This cache does not support FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "This means that some aspect of the ICAP communication failed."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Unable to determine IP address from host name <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Unable to forward this request at this time."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Unsupported Request Method and Protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Write Error"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Zero Sized Reply"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-07 16:23+1200\n"
+"Last-Translator: Amos Jeffries <squid3@treenet.co.nz>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "A URL for the requested URN could not be retrieved"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Access Denied."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "An Illegal response was received from the ICAP server."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Access Denied."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Access Denied."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Cannot Resolve URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Connection Lifetime Expired"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Connection to %I failed."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length missing for POST or PUT requests."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Cache Access Denied"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Cache Manager Access Denied"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: FTP upload failed"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: The requested URL could not be retrieved"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: The requested URN not be retrieved"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI Processing failed."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Successful: File Created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Successful: File updated"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload failed"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is Disabled"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Failed to establish a secure connection to %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "File created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File updated"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Denied."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generated %T by %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, don't expect too much from URNs on %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP protocol error."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Illegal character in hostname; underscores are not allowed."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Illegal double-escape in the URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Missing HTTP Identifier (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Missing URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Missing hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Missing or unknown request method."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation successful"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Read Error"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Read Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Request is too large."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Failure"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Some aspect of the requested URL is incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Some possible problems are:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid did not receive any data for this request."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sent the following FTP command:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "The DNS server returned:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "The ESI processor returned:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "The ICAP server is not reachable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr "The remote host or network may be down. Please try the request again."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "The request or reply is too large."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "The requested URL could not be retrieved"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "The server responded with:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "The system returned: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "This cache does not support FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "This means that some aspect of the ICAP communication failed."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Unable to determine IP address from host name <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Unable to forward this request at this time."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Unsupported Request Method and Protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Write Error"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Zero Sized Reply"
--- /dev/null
+# Spanish translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-17 00:27+1200\n"
+"Last-Translator: Javier Puche <javier.puche@rediris.es>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Petición Incorrecta</b> se ha encontrado un error mientras se intentaba "
+"procesar la petición:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Respuesta Incorrecta</b> se ha encontrado un error mientras se intentaba "
+"procesar la petición:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Se acabó el tiempo máximo de lectura mientras se leían "
+"datos de la red. La red o el servidor pueden estar congestionados. Por "
+"favor, inténtelo de nuevo"
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "No se ha podido obtener una URL para el URN solicitado"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Acceso Denegado"
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Las reglas de control de acceso impiden que su petición sea permitida "
+"en este momento. Contacte con su proveedor de servicios si cree que esto "
+"es incorrecto."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Ha ocurrido una falla de autenticación cuando se trataba de conseguir "
+"el URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Ha ocurrido un error de protocolo FTP mientras se intentaba traer el "
+"documento con URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Se ha recibido una respuesta ilegal desde el servidor ICAP."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Ha ocurrido algún problema mientras se leían datos de la red. "
+" Por favor, inténtelo de nuevo."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"Se ha producido un error mientras se escribían datos en la red. Por "
+"favor, inténtelo de nuevo."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Acceso Denegado a la Caché"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Acceso Denegado al Cache Manager."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "No se puede resolver el URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Ha expirado el tiempo de vida de la conexión"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Conexión a %I fallida."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Falta Content-Length en las peticiones POST o PUT"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Acceso Denegado a la Caché"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Acceso Denegado al Caché Manager"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: falla en envio FTP"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: El URL solicitado no se ha podido conseguir"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: El URN solicitado no se ha podido conseguir"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Exitoso: Archivo Creado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Exitoso: Archivo actualizado"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/envio fallido"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "Servicio FTP deshabilitado"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Archivo creado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Archivo actualizado"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Reenvío denegado."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generado %T por %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, no espere mucho de URNs en %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+#, fuzzy
+msgid "ICAP protocol error."
+msgstr "Error de protocolo ICAP"
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Si está haciendo una petición GET, entonces que está "
+"tratando de bajar es demasiado grande."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Si está haciendo una petición POST o PUT, lo que está "
+"intentando subir es demasiado grande."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Hay caracteres ilegales en el nombre de máquina; el carácter "
+"subrayado (_) no está permitido."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Hay un doble-escape ilegal en la ruta de la URL"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL Inválida"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Falta el identificador HTTP (HTTP/1.0)"
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "URL Perdido."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Falta el nombre de la máquina"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Falta o es incorrecto el protocolo de acceso (debe ser <q>http://</q> o "
+"similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr ""
+"Falta o es desconocido el método de la petición (no es GET ni "
+"POST)"
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No hay una pasarela para protocolo Wais."
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operación éxitoso"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Por favor contacte al <a href=\"mailto:%w%W\">administrador del "
+"caché</a> si tiene dificultad para autenticarse o <a href=\"http://%h"
+"/cgi-bin/chpasswd.cgi\">cambie</a> su password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Por favor contacte al <a href=\"mailto:%w%W\">administrador del "
+"caché</a> si tiene dificultad para autenticarse, o si Ud. <em>es</em> "
+"el administrador, lea la documentación de Squid sobre interfaz del "
+"cache manager y chequee en el log de caché mensajes de error "
+"más detallados."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Error de Lectura"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+"Se acabó el tiempo máximo para lectura de datos de la red."
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La petición es demasiado grande."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Fallo en el puerto (socket)"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Algún aspecto del URL solicitado es incorrecto."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Algunos posibles problemas son:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Lo lamento, tu no estás autorizado a solicitar %U de este gestor de caché "
+"hasta que te hayas autenticado."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Lo lamento, tu no estás autorizado a solicitar %U de este caché hasta que te "
+"hayas autenticado."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid no ha recibido ninguna información en respuesta a esta petición."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid no admite todos los métodos para todos los protocolos de "
+"acceso. Por ejemplo, no se puede hacer un POST a un servidor Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid ha dado por terminada la petición porque se ha excedido el "
+"tiempo de vida máximo para una conexión."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid no ha sido capaz de crear un socket TCP, probablemente debido a una "
+"carga excesiva. Por favor reintenta tu petición."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid ha enviado el siguiente comando FTP:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "El servidor DNS devolvió:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"El mensaje de Respuesta HTTP recibido del servidor contactado no pudo ser "
+"entendido o tenía alguna malformación. Por favor contacte al "
+"operador del sitio."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "El servidor ICAP no es alcanzable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "El siguiente URL no pudo ser obtenido: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"El equipo remoto o la red deben estar caídas. Por favor intenta la petición "
+"de nuevo."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "La petición o la respuesta es demasiado larga."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "El URL solicitado no se ha podido conseguir"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "El servidor ha respondido con:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "El sistema ha devuelto: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Este caché no tiene definido ninguna pasarela para el protocolo WAIS "
+"!! ¡Grítele al administrador del caché !"
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Estos límites fueron establecidos por el Proveedor de Servicios de "
+"Internet que opera este caché. Por favor, contacte con él "
+"directamente si cree que esto es un error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Esta caché no soporta FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Esta caché está en proceso de apagarse y no puede servir tu petición en este "
+"momento. Por favor vuelve a intentar tu petición de nuevo pronto."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Este caché no permite reenviar su petición porque trata de "
+"obligar a mantener una relación de hermandad. Quizás el "
+"cliente en %i es un caché que ha sido mal configurado."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Esto significa que el caché no ha sido capaz de resolver el nombre de "
+"máquina presente en la URL. Compruebe que la dirección sea "
+"correcta."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Esto puede ser causado por un URL FTP con un camino absoluto (y por lo tanto "
+"no cumple con RFC 1738). Si esta es la causa, entonces el archivo puede "
+"ser obtenido en <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"La petición no ha podido ser enviada al servidor origen o a alguno de "
+"los cachés padres. Las razones más probables de que haya "
+"ocurrido este error son el administrador de lo caché no permite que "
+"este caché realice conexiones directas a los servidores origen, y "
+"todos los cachés configurados como padres son inalcanzables en este "
+"momento."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+"Incapaz de determinar la dirección IP a partir del nombre de la "
+"máquina <i>%H</i>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Imposibilidad de enviar la petición en este momento."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Método de la petición y protocolo no soportados."
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"No se encontró un documento válido en el caché y se "
+"especificó la directiva <q>only-if-cached</q>."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Mientras se intentaba hacer un PUT del siguiente URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Error de Escritura"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Ud. ha enviado una solicitud con la directiva de control del caché <q"
+">only-if-cached</q>. El documento no fue encontrado en el caché, "
+"<em>o</em> requiere revalidación prohibida por la directiva <q>only-"
+"if-cached</q>"
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Su administrador del caché es <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Quizas su administrador del caché pueda darle a Ud. más "
+"detalles acerca de la naturaleza exacta del problema en caso de ser "
+"necesario."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Respuesta vacía (tamaño cero)"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-17 17:39+1200\n"
+"Last-Translator: Frank Denia <j@4u.net>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Un délai critique s'est écoulé en attendant "
+"desdonnées du réseau. Le réseau ou le serveur sontpeut-"
+"être hors service ou défaillants. Veuillez réité"
+"rer votre requête."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "Une URL de l'URN n'a pu être chargée"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Accès interdit."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"La configuration du contrôle d'accès interdit à votre "
+"requête d'êtreacceptée à cette heure-ci. Veuillez "
+"contacter votreprestataire de service si vous pensez que ceci n'a pas lieu "
+"d'être."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Une erreur d'authentification sur un FTP a eu lieu.En tentant de charger "
+"l'URL:<a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Une erreur du protocole FTP est survenueen essayant de charger l'URL "
+"suivante:<a href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Une erreur est survenue en essayant d'accéder au réseau."
+"Veuillez réitérer votre requête."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"Une erreur s'est produite lors de l'accès au réseau. Veuillez "
+"réitérer votre requête."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Accès au cache interdit."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Accès au gestionnaire de cache interdit"
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Impossible de résoudre l'URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Durée de vie de la connexion dépassée"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Champ Content-Length absent pour les requêtes POST ou PUT"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERREUR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERREUR: Accès au cache interdit"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERREUR: Accès au gestionnaire de cache interdit"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERREUR: envoi FTP défectueux"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERREUR: L'URL demandée n'a pu être chargée"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERREUR: L'URN suivante n'a pu être chargée"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT réussi: Fichier créé"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT réussi: Fichier mis à jour"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/envoi défectueux"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "Le FTP est désactivé"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Fichier créé"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Fichier mis à jour"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Relais interdit."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hé ! N'espérez pas trop des URNs de %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Caractère illégal dans le nom de la machine, les "
+"soulignés (underscores) ne sont pas autorisés."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Double échappement illégal dans le chemin de l'URL"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL invalide"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Absence d'identifiant HTTP (HTTP/1.0)"
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Absence d'URL"
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Nom de machine absent"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Protocole d'accès absent ou incorrect (il devrait être de la "
+"forme `http://')"
+
+#: templates/ERR_INVALID_REQ:6
+#, fuzzy
+msgid "Missing or unknown request method."
+msgstr "Méthode de requête absente ou inconnue"
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Pas de relais WAIS"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Opération réussie"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+#, fuzzy
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Veuillez contacter l'<a href=\"mailto:%w%W\">administrateur du cache</a>si "
+"vous avez des difficultés à vous authentifier, ou<a href="
+"\"http://%h/cgi-bin/chpasswd.cgi\">changez</a> votre mot de passe."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+#, fuzzy
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Veuillez contacter l'<a href=\"mailto:%w%W\">administrateur du cache</a>si "
+"vous avez des difficultés à vous authentifier ou, si "
+"vous<em>êtes</em> l'administrateur, lisez la documentation de Squid "
+"surl'interface du gestionnaire de cache, et vérifiez l'historique "
+"ducache pour des messages d'erreur plus détaillés."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Erreur de lecture"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Délai de lecture dépassé"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La requête est peut-être trop volumineuse"
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Erreur de socket"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Quelque chose dans l'URL est incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Problèmes envisageables:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Désolé, vous n'êtes pas autorisé à "
+"accéder à %U au travers de ce gestionnaire de cache sans vous "
+"être identifié."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Désolé, vous n'êtes actuellement pas autorisé"
+"à demander %U à ce cache tant que vous ne vous êtes pas "
+"identifié."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid n'a reçu aucune donnée pour cette requête."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid ne permet pas toutes les méthodes de requêtes pour tous "
+"lesprotocoles. Vous ne pouvez par exemple pas utiliser le protocole POST "
+"dans une requête Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid a mis fin à cette requête car elle a excédé "
+"ladurée de vie maximale."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid n'est pas en mesure de créer une socket TCP, "
+"probablementà cause d'une charge excessive. Veuillez ré"
+"itérer votrerequête."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid a envoyé la commande FTP suivante:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "Le serveur de noms a retourné:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Le serveur FTP était trop encombré pour charger l'URL: <a href="
+"\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "L'URL suivante n'a pu être chargée: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"La machine distante ou le réseau sont peut-être hors service. "
+"Veuillezréitérer votre requête."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "L'URL demandée n'a pu être chargée"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Le système a retourné: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Il n'y a pas de machine définie comme relais WAIS sur ce cache !"
+"Adressez-vous à votre administrateur."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Ce cache ne prend pas en compte le protocole FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Ce cache est en cours de mise hors-service temporaire et il lui est "
+"impossible de satisfaire votre requete actuellement. Veuillez ré"
+"iterer votre requete ultérieurement."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Ce cache ne fera pas suivre votre requête car il tente de respecter "
+"une relation de voisinage. Le client %i est peut-être un cache mal "
+"configuré."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+#, fuzzy
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"En d'autres termes le cache n'a pas été en mesure de ré"
+"soudre le nom de machine présenté dans l'URL. Vérifiez "
+"si l'adresse est correcte."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Ceci pourrait etre causé par une URL de FTP avec un chemin absolu (ce "
+"qui n'est pas conforme au RFC 1738) . Si c'est effectivement le cas, alors "
+"le fichier se trouve à l'adresse <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+#, fuzzy
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Cette requête n'a pu être transmise au serveur d'origine ou "
+"à l'undes caches parents. La cause la plus probable de cette erreur "
+"est L'administrateur du cache a interdit à ce cache de faire des "
+"connexions directes aux serveurs d'origine, et tous les parents "
+"configurés sont actuellement injoignables."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Impossible d'associer une adresse IP à la machine <i>%H</i>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Impossible de relayer cette requête en ce moment."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Combinaison de méthode et de protocole non gérée"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Aucun document valide n'a été trouvé dans le cache et "
+"la directive<q>only-if-cached</q> a été spécifié"
+"e."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "En essayant d'envoyer (PUT) l'URL suivante: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Erreur d'écriture"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Vous avez formulé une requête avec la directive de contrô"
+"le<q>only-if-cached</q>. Le document n'a pas été trouvé "
+"dans le cache, <em>ou</em> il nécessite une revalidation, interdite "
+"par la directive<q>only-if-cached</q>."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Réponse de taille nulle"
--- /dev/null
+# Indonesian translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-07-28 18:47+0000\n"
+"Last-Translator: Hasbinur <Unknown>\n"
+"Language-Team: Indonesian <id@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2008-07-31 11:24+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Akses Ditolak"
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Akses Cache Ditolak"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr ""
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP tidak aktif"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File sudah diperbaharui"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr ""
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr ""
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr ""
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr ""
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr ""
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-08 21:04+1200\n"
+"Last-Translator: Francesco Chemolli <kinkie@squid-cache.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Richiesta invalida</b>. C'è stato un errore mentre si cercava di "
+"elaborare la richiesta:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Risposta non valida</b>. Si è verificato un errore mentre veniva "
+"elaborata la richiesta:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Si è verificato un timeout mentre si attendeva di ricevere dati dalla rete. "
+"La rete o il server potrebbero essere sovraccarichi o indisponibili. Si "
+"prega di ritentare la richiesta tra qualche minuto."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr ""
+"Non è stato possibile ottenere una URL corrispondente alla URN richiesta."
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Accesso negato."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Le configurazioni di controllo dell'accesso impediscono di soddisfare la "
+"richiesta. Si prega di contattare il fornitore del servizio nel caso questo "
+"comportamento sia scorretto."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Le credenziali fornite per l'accesso al server FTP relativo alla URL <a href="
+"\"%U\">%U</a> sono invalide."
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Si è verificato un errore di protocollo FTP durante il dialogo con il server "
+"mentre si accedeva alla URL <a href=\"%U\">%U</a>."
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Il server ICAP ha dato una risposta irregolare (illegal response)."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Si è verificato un errore nella ricezione dei dati dalla rete. Si prega di "
+"ritentare la richiesta."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"Si è verificato un errore durante la ricezione dei dati dalla rete. Si prega "
+"di ritentare la richiesta."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Accesso alla cache negato."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "L'accesso al cache manager è negato."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Impossibile risolvere la URN."
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Il timeout di mantenimento della connessione è scaduto."
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "La connessione a %I è fallita."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+"Richiesta non valida: una richiesta di tipo POST oppure PUT non contiene il "
+"campo Content-Length."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERRORE"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERRORE: accesso alla cache negato."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERRORE: l'accesso al Cache Manager è negato."
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERRORE: l'invio del file via FTP è fallito."
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERRORE: non è stato possibile accedere alla URL richiesta"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERRORE: non è stato possibile accedere alla URN richiesta"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "L'elaborazione ESI è fallita."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "L'invio dati (PUT) FTP ha avuto successo: il file è stato creato."
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "L'invio dati (PUT) FTP ha avuto successo: il file è stato aggiornato."
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "L'invio dati (PUT) FTP è fallito."
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "Il protocollo FTP non è disponibile (disabilitato)."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Non è stato possibile stabilire una connessione sicura verso %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Il file è stato creato."
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Il file è stato aggiornato."
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Inoltro negato."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generato da %h (%s) il %T."
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, non ci si deve aspettare granchè dalle URN su %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "Si è verificato un errore nel dialogo ICAP."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Se la richiesta è di tipo GET, ciò che si sta cercando di scaricare è di "
+"dimensioni troppo grandi."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Se la richiesta è di tipo PUT, ciò che si sta cercando di inviare è di "
+"dimensioni troppo grandi."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"C'è un carattere irregolare nel nome host: gli underscore \"_\" non sono "
+"consentiti."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr ""
+"Doppia codifica (\"double-escape\") irregolare nella porzione Path della URL."
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL non valida"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "L'identificativo del protocollo HTTP è mancante (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "URL non specificata."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Nome host non specificato."
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Protocollo di accesso mancante o scorretto nella richiesta (dovrebbe essere "
+"<q>http://</q> o simile)."
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Metodo non specificato nella richiesta, o sconoscito."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Le funzioni di inoltro Wais non sono implementate."
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "L'operazione richiesta è stata portata a termine con successo."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Si prega di contattare il <a href=\"mailto:%w%W\">gestore del vostro proxy</"
+"a> se avete diffcoltà nell'identificarvi per l'accesso al servizio, o di <a "
+"href=\"http://%h/cgi-bin/chpasswd.cgi\">cambiare</a> la vostra password "
+"iniziale."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Si prega di contattare il <a href=\"mailto:%w%W\">gestore del vostro proxy</"
+"a> se avete diffcoltà nell'identificarvi per l'accesso al servizio o, se "
+"<em>siete</em> l'amministratore, di consultare la documentazione di Squid "
+"riguardante l'interfaccia del <em>cache manager</em> e di verificare il log "
+"del servizio alla ricerca informazioni più dettagliate sull'errore."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Errore di lettura."
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Timeout nella lettura."
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La richiesta è di dimensioni troppo grandi."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "L'operazione di rete (socket) è fallita."
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Qualche aspetto della URL richiesta non è irregolare."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Alcuni dei possibili problemi sono:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Non siete autorizzati a richiedere %U da questo cache manager finchè non vi "
+"sarete identificati con successo."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Non siete autorizzati a richiedere %U da questa cache finchè non vi sarete "
+"identificati con successo."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid non ha ricevuto alcun dato in risposta a questa richiesta."
+
+# The translated text is less generous in details than the original, but IMO clearer to the admin and less confusing to the user.
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr "Il metodo di accesso non è supportato per questo protocollo."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"La richiesta è stata interrotta perchè è stato superato il limite di durata "
+"massimo della connessione."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid non è in grado di aprire un socket TCP, probabilmente a causa del "
+"sovraccarico. Si prega di ritentare la richiesta."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Il comando FTP inviato da Squid era:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "Il processo dnsserver ha risposto:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "Il sistema di gestione delle funzioni ESI ha risposto:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Il FTP server era sovraccarico e non ha consentito di accedere alla URL: <a "
+"href=\"%U\">%U</a>."
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"Il messaggio di risposta HTTP ricevuto dal server non era comprensibile o "
+"era irregolare. Si prega di contattare il gestore del sito per segnalargli "
+"l'errore."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "Il server ICAP non è raggiungibile."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Non è stato possibile accedere alla URL: <a href=\"%U\">%U</a>."
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Mentre si cercava di accedere alla URL <a href=\"%U\">%U</a> si è "
+"manifestato il seguente errore:"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Mentre si cercava di accedere alla URN <a href=\"%U\">%U</a> si è "
+"manifestato il seguente errore:"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"Il server remoto o un tratto di rete necessario a raggiungerlo potrebbero "
+"essere guasti. Si prega di ritentare la richiesta tra qualche minuto."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "La richesta o la risposta è di dimensioni troppo grandi."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Non è stato possibile accedere alla URL richiesta."
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "Il server ha risposto:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Il sistema ha risposto: <i>%E</i>"
+
+# The administrator should be congratulated, rather than being yelled at. Wais is not relevant anymore.
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Non è stato configurato alcun server di relay per il protocollo WAIS su "
+"questa Cache."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Questi limiti sono stati imposti dal provider che gestisce questo Proxy. Se "
+"ritenete che questo sia scorretto si prega di rivolgersi alle strutture di "
+"supporto degli utenti corrette."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Questo Proxy non supporta il protocollo FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Questo Proxy non è in grado di soddisfare la richiesta perchè è in fase di "
+"spegnimento. si prega di riprovare tra qualche minuto."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Questo Proxy non può inoltrare la richiesta: il client di indirizzo %i è "
+"noto al Proxy come <em>sibling</em> ma si comporta come client. Potrebbe "
+"essere configurato in maniera sbagliata?"
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+"Questo significa che qualche aspetto della comunicazione ICAP non è stato "
+"completato regolarmente."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Questo significa che il server FTP potrebbe non avere i permessi o lo spazio "
+"per ricevere il file. Si prega di controllare il percorso, i permessi e lo "
+"spazio su disco e riprovare."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Questo significa che il Proxy non è riuscito a tradurre il nome host nella "
+"URL nel relativo indirizzo. Verificate la correttezza dell'indirizzo e "
+"riprovate."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Questo significa che il surrogate non è stato in grado di processare il "
+"template ESI. Si prega di segnalare l'errore al webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Questo potrebbe essere causato da una URL FTP con un percorso completo, "
+"comportamento questo non conforme allo standard imposto dalla RFC 1738. Se "
+"questo è il caso, il file è disponibile alla URL <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+"Questo Proxy e il server remoto non sono riusciti a negoziare una "
+"connessione cifrata con caratteristiche mutuamente accettabili. È possibile "
+"che il server non supporti le connessioni cifrate, o che il proxy non sia "
+"soddisfatto dalle credenziali di sicurezza proposte dal server."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Non è stato possibile inoltrare la richiesta al server di origine nè ad "
+"alcun proxy di tipo <em>parent</em> noto. La causa più probabile è che "
+"questo proxy sia configurato per non contattare mai direttamente il server "
+"di origine, e che tutti i proxy <em>parent</em> non siano disponibili in "
+"questo momento."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+"Non è stato possibile risalire all'indirizzo IP corrispondente al nome host "
+"<q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Non è possibile inoltrare la richiesta in questo momento."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Metodo e protocollo della richiesta non sono supportati."
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Non è stato possibile reperire un documento aggiornato nella cache e la "
+"richiesta contiene la direttiva <q>only-if-cached</q>."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Mentre si cercava di effettuare un'operazione di FTP PUT verso la URL <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Errore durante l'operazione di scrittura"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"La richiesta contiene la direttiva di controllo della cache <q>only-if-"
+"cached</q>. Non è stato possibile trovare il relativo documento nella cache, "
+"<em>oppure</em> richiedeva una operazione di verifica, non consentita dalla "
+"direttiva."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "L'amministratore del proxy è <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"L'amministratore del proxy potrebbe essere in grado di fornire ulteriori "
+"dettagli sul tipo di problema."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Il webmaster è <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Risposta di dimensione nulla."
--- /dev/null
+# Dutch translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-29 00:49+1200\n"
+"Last-Translator: Mark Visser <mark@cal026031.student.utwente.nl>\n"
+"Language-Team: Dutch <nl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Een timeout kwam voor bij het lezen van data van het netwerk. Het netwerk "
+"of de server kan niet beschikbaar of overbelast zijn. Probeer uw verzoek "
+"opnieuw."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "De gevraagde URN kon niet worden opgehaald"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Toegang niet toegestaan."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"U heeft geen toegang tot de URL die u probeerde op te vragen van deze "
+"server. Neem contact op met uw service provider als u denkt dat dit niet "
+"klopt."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"De FTP authenticatie is mislukt tijdens het opvragen van de URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Er is een FTP protocolfout voorgekomen tijdens het ophalen van de URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Een foutwaarde kwam voor tijdens het lezen van data van het netwerk. "
+"Probeer uw verzoek opnieuw."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"Een foutwaarde kwam voor tijdens het schrijven naar het netwerk. Probeer uw "
+"verzoek opnieuw."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache toegang niet toegestaan."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager toegang niet toegestaan."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Kan de URN niet herleiden"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "De levensduur van de verbindings is verstreken"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "De Content-Length ontbreekt voor het POST of PUT verzoek."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FOUT"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FOUT: Cache toegang niet toegestaan"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FOUT: Cache Manager toegang niet toegestaan"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FOUT: FTP upload mislukt"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FOUT: De gevraagde URL kon niet worden opgehaald"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FOUT: De gevraagde URN kon niet worden opgehaald"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Succesvol: Bestand aangemaakt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Succesvol: Bestand vernieuwd"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload mislukt"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is uitgeschakeld"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Bestand aangemaakt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Bestand vernieuwd"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Doorsturen niet toegestaan."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hmmm, verwacht niet teveel van URNs op %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+#, fuzzy
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Indien u een GET aanvraag stuurde, dan was het antwoord hetgeen U probeert "
+"te ontvangen te groot."
+
+#: templates/ERR_TOO_BIG:6
+#, fuzzy
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Indien U een POST of PUT aanvraag stuurde, dan hetgeen U probeert te "
+"verzenden te groot."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Er staat een ongeldig teken in de hostnaam; Het teken <q>_</q> is niet "
+"toegestaan."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ongeldige <q>double-escape</q> in het URL pad"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Ongeldige URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Ontbrekende HTTP identificatie (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Ontbrekende URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Ontbrekende hostnaam"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Ontbrekend of onjuist toegangsprotocol (moet zijn <q>http://</q> of "
+"vergelijkbaar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Ontbrekende of onbekende verzoekmethode."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Geen WAIS Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Bewerking succesvol"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Neem contact op met de <a href=\"mailto:%w%W\">cache beheerder</a> als u "
+"problemen heeft om uzelf te identificeren of <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">verander</a> hier uw standaard wachtwoord."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Neem contact op met de <a href=\"mailto:%w%W\">cache beheerder</a> als u "
+"problemen heeft om uzelf te identificeren. Als <em>U</em> de beheerder bent, "
+"lees dan de Squid documentatie over de cache manager interface en lees de "
+"cache log voor meer gedetailleerde foutmeldingen."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Leesfout"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Lees Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Het verzoek is mogelijk te lang."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Fout"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Een gedeelte van de gevraagde URL is ongeldig."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Mogelijke problemen zijn:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+#, fuzzy
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, het is u momenteel niet toegestaan om %U op te vragen van deze cache "
+"manager totdat u zichzelf hebt geidentificeerd."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, het is u niet toegestaan om %U van deze cache op te vragen totdat u "
+"zich geidentificeerd hebt."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid ontving in het geheel geen data op dit verzoek."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid ondersteunt niet alle verzoekmethoden voor alle toegangsprotocollen. U "
+"kunt bijvoorbeeld geen Gopher verzoek POSTen."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid heeft het verzoek afgebroken omdat het de maximale "
+"verbindingslevensduur heeft overschreden."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is niet in staat een TCP socket aan te maken, waarschijnlijk als "
+"gevolg van een te hoge bezettingsgraad. Probeer uw verzoek opnieuw."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid stuurde de volgende FTP opdracht:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "De dnsserver gaf als antwoord:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"De FTP server was te druk bezet tijdens het opvragen van de URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"De door u gezochte server of het netwerk is onbereikbaar. Probeer het "
+"verzoek opnieuw."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "De aanvraag of het antwoord is te groot."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "De gevraagde URL kon niet worden opgehaald"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Het systeem gaf terug: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Er is geen WAIS Relay host gedefinieerd voor deze Cache! Neem contact op "
+"met de cachebeheerder."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Deze grootte-beperkingen zijn ingesteld door de beheerder van deze cache. "
+"Neem contact op met de beheerder van deze cache, wanneer U van mening bent "
+"dat deze beperking onjuist is."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Deze cache ondersteunt geen FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Deze cache is bezig met herstarten en kan daarom momenteel niet aan uw "
+"verzoek voldoen. Probeer uw verzoek zo nog eens."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Deze cache zal uw verzoek niet doorsturen, omdat het een sibling relatie "
+"tracht te bewerkstelligen. Wellicht dat de client op %i een fout ingestelde "
+"cache is."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Dit betekent dat de cache niet in staat was om de hostnaam uit de URL te "
+"herleiden. Controleer of de naam klopt."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Dit kan veroorzaakt worden door een FTP URL met een absoluut pad (hetgeen "
+"niet in overeenstemming is met RFC 1738). Als dit de oorzaak is, dan kan "
+"het bestand gevonden worden op <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Dit verzoek kon niet worden doorgestuurd naar de oorspronkelijke server of "
+"een van de parent caches. De meest waarschijnlijke reden voor deze fout is "
+"dat de cache beheerder het deze cache niet toestaat met de oorspronkelijke "
+"server te praten, en alle ingestelde parent caches op dit moment "
+"onbereikbaar zijn."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Niet in staat om het IP adres te bepalen van de hostnaam <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Momenteel niet in staat dit verzoek door te sturen."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Niet ondersteunde verzoekmethode of protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Een geldig document werd niet gevonden in de cache, en de <q>only-if-cached</"
+"q> richtlijn was ingesteld."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+#, fuzzy
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Bij een poging om naar de volgende URL te schrijven: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Schrijffout"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"U heeft een verzoek gedaan met een <q>only-if-cached</q> cachebeheer "
+"richtlijn. Het document werd niet gevonden in de cache <em>of</em> er was "
+"een herbevestiging nodig die niet werd toegestaan door de <q>only-if-cached</"
+"q> richtlijn."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "De beheerder van deze cache is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Leeg object antwoord"
--- /dev/null
+# Brazilian Portuguese translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-23 01:28+1200\n"
+"Last-Translator: Aecio F. Neto <aecioneto@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+"X-Launchpad-Export-Date: 2008-07-27 05:12+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Requisição Inválida</b> erro encontrado ao tentar processar a requisição:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Resposta Inválida</b> erro encontrado ao tentar processar a requisição:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Tempo esgotado esperando a leitura de dados pela rede. A rede ou o servidor "
+"pode estar desconectado ou congestionado. Por favor, tente novamente sua "
+"requisição."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "Uma URL para a URN requisitada não pode ser recuperada"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Acesso Negado."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"A configuração do controle de acesso impede que sua requisição seja "
+"permitida neste momento. Por favor, contate seu provedor de serviço se você "
+"acha que isso está incorreto."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Ocorreu uma falha na autenticação do FTP ao tentar recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Um erro no protocolo FTP ocorreu ao tentar recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Uma resposta ilegal foi recebida do servidor ICAP."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Uma condição de erro ocorreu ao ler dados da rede. Por favor, repita sua "
+"requisição."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"Ocorreu um erro ao tentar escrever na rede. Por favor, repita sua "
+"requisição."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Acesso negado ao cache."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Acesso negado ao gerenciador de cache."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Não é possível resolver URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Tempo de vida da conexão expirou"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Conexão para %I falhou."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length faltando para requisições POST ou PUT."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERRO"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERRO: Acesso negado ao cache"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERRO: Acesso negado ao gerenciador de cache"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERRO: upload via FTP falhou"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERRO: A URL requisitada não pode ser recuperada"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERRO: A URN requisitada não pode ser recuperada"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "O processamento de ESI falhou."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP - PUT bem sucedido: Arquivo Criado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP - PUT bem sucedido: Arquivo Atualizado"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP - PUT/envio falhou"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP está Desabilitado"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Falhou ao estabelecer uma conexão segura com %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Arquivo criado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Arquivo atualizado"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Encaminhamento Negado."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Gerado %T por %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Olha, não espere muito por URNs em %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "Erro de protocolo ICAP."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Se você está fazendo uma requisição GET, então o item que você está tentando "
+"baixar é muito grande."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Se você está fazendo uma requisição POST ou PUT, então o item que você está "
+"tentando enviar é muito grande."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Caracter ilegal no nome de host; underscores não são permitidos."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Escape duplo ilegal na URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL inválida"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Identificador HTTP faltando (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "URL faltando."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Nome do host faltando"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Protocolo de acesso faltando ou incorreto (deveria ser <q>http://</q> ou "
+"semelhante)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Método de requisição faltando ou desconhecido."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Sem Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operação bem sucedida"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Por favor, contate o <a href=\"mailto:%w%W\">administrador do cache</a> se "
+"você está tendo dificuldades em se autenticar ou <a href=\"http://%h/cgi-"
+"bin/chpasswd.cgi\">mude</a> sua senha."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Por favor, contate o <a href=\"mailto:%w%W\">administrador do cache</a> se "
+"você está tendo dificuldades em se autenticar ou, se você <em>é</em> o "
+"administrador, leia a documentação do Squid na interface de gerenciamento de "
+"cache e cheque o log para maiores detalhes sobre mensagens de erro."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Erro de Leitura"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Tempo de leitura esgotado"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Requisição é muito grande."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Falha de socket"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Alguma característica da URL requisitada é incorreta."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Alguns dos possíveis problemas são:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Desculpe. Atualmente, você não tem permissão para requisitar %U deste "
+"gerenciador de cache até que você tenha se autenticado."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Desculpe. Atualmente, você não está permitido a requisitar %U desse cache "
+"até que você tenha se autenticado."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid não recebeu nenhum dado para essa requisição."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid não suporta todos os métodos de requisição para todos os protocolos de "
+"acesso. Por exemplo, você não pode emitir uma requisição POST ao protocolo "
+"Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid terminou a requisição porque foi excedido o tempo de vida máximo da "
+"conexão."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid não pode criar um socket TCP, presumivelmente devido a uma carga "
+"excessiva. Por favor, repita sua requisição."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid enviou o seguinte comando FTP:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "O servidor DNS retornou:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "O processador ESI retornou:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"O servidor FTP estava muito ocupado para recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"A mensagem da resposta HTTP recebida do servidor contatado não pode ser "
+"entendida ou estava mal-formada. Por favor, contate o administrador do site."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "O servidor ICAP não é alcançável."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "A seguinte URL não pôde ser recuperada: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"O seguinte erro foi encontrado ao tentar recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"O seguinte erro foi encontrado ao tentar recuperar a URN: <a href=\"%U\">%U</"
+"a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"O host remoto ou a rede pode estar fora do ar. Por favor, faça a requisição "
+"novamente."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "A requisição ou a resposta é muito grande."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "A URL requisitada não pôde ser recuperada"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "O servidor respondeu com:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "O sistema retornou: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Não há nenhum host de WAIS Relay definido para esse Cache! Contate o "
+"administrador."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Esses limites foram estabelecidos pelo Provedor de Serviço Internet em que "
+"este cache opera. Por favor, contate-os diretamente se você acha que isso é "
+"um erro."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Esse cache não suporta FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Este cache está sendo desligado ou não pode servir sua requisição neste "
+"momento. Por favor, tente novamente sua requisição em breve."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Este cache não encaminhará sua requisição porque está tentando forçar um "
+"relacionamento. Talvez o cliente em %i é um cache que está mal configurado."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "Isto significa que alguma característica da comunicação ICAP falhou."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Isto significa que o servidor FTP não tem permissão ou espaço suficiente "
+"para armazenar o arquivo. Verifique o caminho, permissão, espaço em disco e "
+"tente novamente."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Isto significa que o cache não pode resolver o nome de host contido na URL. "
+"Verifique se o endereço está correto."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Isto significa que o surrogate não pode processar o modelo do ESI. Por "
+"favor, informe este erro ao webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Isto pode ter sido causado por uma URL de FTP com um caminho absoluto (que "
+"não é conforme com a RFC 1738). Se esta for a causa, então o arquivo pode "
+"ser encontrado em <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+"Este proxy e o host remoto falharam em negociar uma configuração de "
+"segurança aceitável entre si para atender sua requisição. É possível que o "
+"host remoto não suporte conexões seguras ou que o proxy não está satisfeito "
+"com as credenciais de segurança do host."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Esta requisição não pode ser encaminhada ao servidor de origem or para "
+"nenhum cache superior. A causa mais provável para este erro é que o "
+"administrador do cache não permite que este cache faça conexões diretas aos "
+"servidores de origem e que todos caches superiores estão inalcançáveis no "
+"momento."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Impossível determinar o endereço IP do nome de host <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Impossível encaminhar essa requisição nesse momento."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "O método de Requisição ou o procoloco não é suportado"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Um documento válido não foi encontrado no cache e a diretiva <q>only-if-"
+"cached</q> foi especificada."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "Ao tentar executar o PUT na seguinte URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Erro ao enviar"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Você enviou uma requisição com a diretiva de controle de cache <q>only-if-"
+"cached</q>. O documento não foi encontrado no cache <em>ou</em> o cache "
+"requer uma revalidação, que é proibida por esta diretiva."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Seu administrador do cache é <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Seu administrador do cache pode providenciar com maiores detalhes a exata "
+"natureza do problema, caso seja necessário."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Seu webmaster é <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Resposta de tamanho zero"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-22 17:26+1200\n"
+"Last-Translator: Stefan M_nsby <stefan@mansby.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"En timeout inträffade i väntan på att få läsa "
+"data från nätverket. Antingen är servern nere eller "
+"också är nätverket tungt belastat. Vänligen "
+"försök igen."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "En URL för begärd URN kunde inte hämtas"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Tillträde Nekas."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Tillträdeskontrollen förhindrar Er begäran från att "
+"tillåtas vid den här tidpunkten. Vänligen kontakta Er "
+"tjänsteleverantör om Ni finner detta inkorrekt."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Ett misslyckande vid FTP autentifiering inträffade vid "
+"försöket att hämta URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Ett FTP protokollfel inträffade vid försöket att hämta "
+"URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Ett fel inträffade vid försök att läsa data från "
+"nätverket. Vänligen försök igen."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+"Ett fel inträffade vid försök att skriva till nätverket. "
+" Vänligen försök igen."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Tillträde till Cache Nekas."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Tillträde till Cachehanteraren Nekas."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Kan inte lösa upp URN namnet"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Anslutnings levnadstid tog slut"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Anslutnings att %I misslyckades."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+"Innehållslängden saknas för POST(posta) eller PUT(sätt) "
+"förfrågan"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FEL"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FEL: Tillträde till Cache Nekas"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FEL: Tillträde till Cachehanteraren Nekas"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FEL: FTP skicka misslyckades"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FEL: Begärd URL kunde inte hämtas"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FEL: Begärd URN kunde inte hämtas"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI bearbetning misslyckades."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP SKICKA lyckades: Filen Skapades"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP Skicka Lyckades!: Filen uppdaterades"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP SKICKA/överföra misslyckades"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP är Avstängd"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Filein skapades"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Filen uppdaterades"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Vidarebefodran Nekad."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr ""
+"Men hallå, förvänta dig inte för mycket från en "
+"URNs på %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+#, fuzzy
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Ifall du utförde en GET begäran, så är svaret du "
+"försöker ladda nedför stort."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Ifall du utför en POST eller PUT begäran, så är "
+"begäran du försöker ladda upp för stor."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Ej tillåtet tecken i värdnamnet; '_' är ej tillåtna."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ej tillåten dubbel-escape i URL-Sökvägen"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Felaktig URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Avsaknad HTTP identifierare (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Avsaknad URL"
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Avsaknat värdnamn"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Avsaknat eller felaktigt tillträdesprotokoll (ska vara <q>http://</q> "
+"eller liknande)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Avsaknad eller okänd method för förfrågan."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Igen Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operationen lyckades"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Vänligen kontakta <a href=\"mailto:%w%W\">cacheadministratorn</a> om Ni "
+"har svårigh eter med att autentifiera Er själv, eller <a "
+"href=\"http://%h/cgi-bin/chpasswd.cgi\">byt</a> Ert lösenord."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Vänligen kontakta <a href=\"mailto:%w%W\">cacheadministratorn</a> om Ni "
+"har svårigheter med att autentifiera Er själv, om Ni "
+"<em>är</em> administratorn, läs Squid dokumentationen om cache "
+"hanterar interfacet och kontrollera cache loggen för mer detaljerade "
+"felmeddelanden."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Läsfel"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Läsningen fick en timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Förfrågan är för stor"
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Fel"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+"Någon eller några aspekter av begärd URL är "
+"inkorrekta."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+#, fuzzy
+msgid "Some possible problems are:"
+msgstr "Möjliga problem:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Ledsen, Ni är förnärvarande ej berättigad att "
+"begära %U från denna cache tills det att Ni har autentifierat Er."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Ledsen, Ni är förnärvarande ej berättigad att "
+"begära %U från denna cache tills det att Ni har autentifierat Er."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr ""
+"Squid tog inte emot något data för denna förfrågan."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid stödjer inte alla frågemetoder för alla protokoll. "
+"Till exempel, Ni kan inte POST'a en Gopher förfrågan."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid har terminerat Er begäran på grund av att den har "
+"överskridikt den tillåtna livstiden för en anslutning."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid kan inte skapa en TCP socket, gissningsvis på grund av tung "
+"last. Vänligen försök igen."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sände följande FTP kommando:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "Namnservern returnerade:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "ESI motorn returnerade:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+#, fuzzy
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"FTP servern var ej tillgänglig vid försöket att hämta "
+"URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+#, fuzzy
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"HTTP svarsmeddelandet ifrån den kontaktade servern är felaktigt "
+"och kunde inte tolkas. Vänligen kontakta den ansvariga för "
+"webbservern ifråga."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Följande URL kunde inte hämtas: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down. Please try the request again."
+msgstr ""
+"Begärd värd eller nätverk kan vara nere. Vänligen "
+"försök igen."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "Begäran är för stor."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Den begärda URL:en kunde inte hämtas"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Systemet returnerade: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Det finns ingen WAIS Relay värd definerad för denna cache! Skrik "
+"på din administratör."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Dessa gränser är inställda av den Internet Leverantör "
+"som handhar den här cacheservern. Var vänlig kontakta dem direkt "
+"ifall du anser att detta är ett fel."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Denna cache stödjer inte FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+"Denna cache håller på att stänga av sig och kan "
+"därför inte behandla din förfrågan. Vänligen "
+"försök igen lite senare."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Denna cache kommer inte vidarebefodra en begäran eftersom den "
+"försöker att tvinga sig till en rättighet som den inte har. "
+"Kanske klienten vid %i är en cache som är felkonfigurerad."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Detta betyder att cachen kunde inte lösa upp värdnamnet angivet i "
+"sökvägen. Kontrollera att adressen är korrekt."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Detta betyder att surrogat servern kunde inte bearbeta ESI mallen. "
+"Vänligen kontakta den ansvariga för webbservern ifråga."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Detta kan orsakas av en FTP URL med en absolut sökväg (vilket inte "
+"överensstämmer med RFC 1738). Om detta är orsaken, kan "
+"filen återfinnas vid <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Denna förfrågan kunde ej vidarebefodras till ursprunglig server "
+"eller till överliggande cache-noder. Den mest sannolika anledningen "
+"till detta fel är cacheadministratorn tillåter inte denna cache "
+"att göra direkta anslutningar till ursprungliga servrar, och alla "
+"överliggande cache-noder kan ej nås för tillfället."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Kunde inte få fram IP-adressen för värdnamnet <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Kunde ej vidarebefodra förfrågan vid detta tillfälle."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Ej stöd för begärd Metod och Protokoll"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Senaste dokumentet återfanns inte i cachen och bara-om-i-cache (<q"
+">only-if-cached</q>) direktivet är satt."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Vid försöket att SKICKA (PUT) följande URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Skriv Fel"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+#, fuzzy
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Du har begärt ett dokument med <q>bara-om-i-cache</q> cache kontroll "
+"direktivet. Dokumentet återfanns inte i cache databasen, "
+"<em>eller</em> det krävs en uppdatering av cache databasen, men "
+"förhindras av <q>bara-om-i-cache</q> direktivet."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+"Din cacheserver administratör är <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Din cacheserver administratör man eventuellt ge dig mera information om "
+"det specifika problemet med denna sida."
+
+#: templates/ERR_ESI:8
+#, fuzzy
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+"Addressen till ansvarig administratör är <a "
+"href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Storleken på svaret var lika med noll"
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Access Denied.</b></p>
+</blockquote>
+
+<p>Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: Cache Access Denied</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head>
+<body>
+<h1>ERROR</h1>
+<h2>Cache Access Denied.</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Cache Access Denied.</b></p>
+</blockquote>
+
+<p>Sorry, you are not currently allowed to request %U from this cache until you have authenticated yourself.</p>
+
+<p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself or <a href="http://%h/cgi-bin/chpasswd.cgi">change</a> your default password.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: Cache Manager Access Denied</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>Cache Manager Access Denied.</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Cache Manager Access Denied.</b></p>
+</blockquote>
+
+<p>Sorry, you are not currently allowed to request %U from this cache manager until you have authenticated yourself.</p>
+
+<p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself or, if you <em>are</em> the administrator, read Squid documentation on cache manager interface and check cache log for more detailed error messages.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head>
+<body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Unable to forward this request at this time.</b></p>
+</blockquote>
+
+<p>This request could not be forwarded to the origin server or to any parent caches. The most likely cause for this error is that the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+<blockquote>
+<p><b>Connection to %I failed.</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>The remote host or network may be down. Please try the request again.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Unable to determine IP address from host name <q>%H</q></b></p>
+</blockquote>
+
+<p>The DNS server returned:</p>
+<blockquote>
+<pre>%z</pre>
+</blockquote>
+
+<p>This means that the cache was not able to resolve the hostname presented in the URL. Check if the address is correct.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>ESI Processing failed.</b></p>
+</blockquote>
+
+<p>The ESI processor returned:</p>
+<blockquote>
+<pre>%Z</pre>
+</blockquote>
+
+<p>This means that the surrogate was not able to process the ESI template. Please report this error to the webmaster.</p>
+
+<p>Your webmaster is <a href="mailto:%w">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Forwarding Denied.</b></p>
+</blockquote>
+
+<p>This cache will not forward your request because it is trying to enforce a sibling relationship. Perhaps the client at %i is a cache which has been misconfigured.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>FTP is Disabled</b></p>
+</blockquote>
+
+<p>This cache does not support FTP.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>An FTP protocol error occurred while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>An FTP authentication failure occurred while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following URL could not be retrieved: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>This might be caused by an FTP URL with an absolute path (which does not comply with RFC 1738). If this is the cause, then the file can be found at <a href="%B">%B</a>.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>FTP PUT Successful: File Created</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1 style="background-color:#00ff00; width:100%">Operation successful</h1>
+<h2>File created</h2>
+<hr>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: FTP upload failed</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>FTP PUT/upload failed</h2>
+<hr>
+<p>While trying to PUT the following URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+</blockquote>
+
+<p>This means that the FTP server may not have permission or space to store the file. Check the path, permissions, diskspace and try again.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>FTP PUT Successful: File updated</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1 style="background-color:#00ff00; width:100%">Operation successful</h1>
+<h2>File updated</h2>
+<hr>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The FTP server was too busy to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>ICAP protocol error.</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>This means that some aspect of the ICAP communication failed.</p>
+
+<p>Some possible problems are:</p>
+<ul>
+<li><p>The ICAP server is not reachable.</p></li>
+<li><p>An Illegal response was received from the ICAP server.</p></li>
+</ul>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p><b>Invalid Request</b> error was encountered while trying to process the request:</p>
+
+<blockquote>
+<pre>%R</pre>
+</blockquote>
+
+<p>Some possible problems are:</p>
+<ul>
+<li><p>Missing or unknown request method.</p></li>
+<li><p>Missing URL.</p></li>
+<li><p>Missing HTTP Identifier (HTTP/1.0).</p></li>
+<li><p>Request is too large.</p></li>
+<li><p>Content-Length missing for POST or PUT requests.</p></li>
+<li><p>Illegal character in hostname; underscores are not allowed.</p></li>
+</ul>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p><b>Invalid Response</b> error was encountered while trying to process the request:</p>
+
+<blockquote>
+<pre>%R</pre>
+</blockquote>
+
+<p>The HTTP Response message received from the contacted server could not be understood or was otherwise malformed. Please contact the site operator.</p>
+
+<p>Your cache administrator may be able to provide you with more details about the exact nature of the problem if needed.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Invalid URL</b></p>
+</blockquote>
+
+<p>Some aspect of the requested URL is incorrect.</p>
+
+<p>Some possible problems are:</p>
+<ul>
+<li><p>Missing or incorrect access protocol (should be <q>http://</q> or similar)</p></li>
+<li><p>Missing hostname</p></li>
+<li><p>Illegal double-escape in the URL-Path</p></li>
+<li><p>Illegal character in hostname; underscores are not allowed.</p></li>
+</ul>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Connection Lifetime Expired</b></p>
+</blockquote>
+
+<p>Squid has terminated the request because it has exceeded the maximum connection lifetime.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>No Wais Relay</b></p>
+</blockquote>
+
+<p>There is no WAIS Relay host defined for this Cache! Yell at the administrator.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Valid document was not found in the cache and <q>only-if-cached</q> directive was specified.</b></p>
+</blockquote>
+
+<p>You have issued a request with a <q>only-if-cached</q> cache control directive. The document was not found in the cache, <em>or</em> it required revalidation prohibited by the <q>only-if-cached</q> directive.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Read Error</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>An error condition occurred while reading data from the network. Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Read Timeout</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>A Timeout occurred while waiting to read data from the network. The network or server may be down or congested. Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Failed to establish a secure connection to %I</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>This proxy and the remote host failed to negotiate a mutually acceptable security settings for handling your request. It is possible that the remote host does not support secure connections, or the proxy is not satisfied with the host security credentials.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p> The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>This cache is in the process of shutting down and can not service your request at this time. Please retry your request again soon.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Socket Failure</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>Squid is unable to create a TCP socket, presumably due to excessive load. Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>The request or reply is too large.</b></p>
+</blockquote>
+
+<p>If you are making a POST or PUT request, then the item you are trying to upload is too large.</p>
+<p>If you are making a GET request, then the item you are trying to download is too large.</p>
+<p>These limits have been established by the Internet Service Provider who operates this cache. Please contact them directly if you feel this is an error.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Unsupported Request Method and Protocol</b></p>
+</blockquote>
+
+<p>Squid does not support all request methods for all access protocols. For example, you can not POST a Gopher request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URN not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>A URL for the requested URN could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URN: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Cannot Resolve URN</b></p>
+</blockquote>
+
+<p>Hey, don't expect too much from URNs on %T :)</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Write Error</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>An error condition occurred while writing to the network. Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Zero Sized Reply</b></p>
+</blockquote>
+
+<p>Squid did not receive any data for this request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>@SHORT_DESCRIPTION@</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>This means:</p>
+<blockquote>
+ <p>@LONG_DESCRIPTION@</p>
+</blockquote>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
--- /dev/null
+# Ukrainian translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2008-08-06 22:11+1300\n"
+"PO-Revision-Date: 2008-09-24 23:28+0000\n"
+"Last-Translator: FrenzY <frenzy.ivan@gmail.com>\n"
+"Language-Team: Ukrainian <uk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2008-09-25 11:56+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr "<b>Хибний Запит</b> під час спроби запиту сталася помилка:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr "<b>Хибна Відповідь</b> під час спроби запиту сталася помилка:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network. The network "
+"or server may be down or congested. Please retry your request."
+msgstr ""
+"Час очікування при отриманні даних з мережі перевищено. Мережа чи сервер не "
+"працюють чи перенавантажені. Будь-ласка, спробуйте знову."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "URL для запитаного URN не може бути отримано"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Доступ Заборонено."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time. Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"FTP аутентифікація, на етапі отримання URL, пройшла невдало: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Всі нелегальні запити були отримані від ICAP сервера."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network. Please "
+"retry your request."
+msgstr ""
+"Під час отримання даних з мережі сталася помилка. Будь-ласка, спробуйте "
+"знову."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network. Please retry your "
+"request."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Доступ до Кешу Заборонено."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Доступ до Менеджеру Кешу Заборонено"
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Неможливо отримати URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Час життя з'єднання перевищено. R.I.P."
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "З'єднання з %I втрачене."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ПОМИЛКА"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ПОМИЛКА: Доступ до Кешу Заборонено"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "Доступ до Менеджеру Кешу Заборонено"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ПОМИЛКА: FTP завантаження невдале"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ПОМИЛКА: Запитаний URL не може бути отриманий"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ПОМИЛКА: Запитаний URN не може бути отриманий"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Вдалий: Файл Створено"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Вдалий: Файл Оновлено"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/заванатження зазанло краху"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP відключено"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Неможливо свторити безпечне з'єднання до %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Файл створено"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Файл поновлено"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Заборонено."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Згенеровано %T за %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Ей, чувак, не очікуй забагато від URN'ів на %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "Помилка протоколу ICAP."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Якщо ви створюєте GET запит, тоді інформація яку ви завантажуєте - завелика."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Якщо ви створюєте POST чи PUT запит, тоді інформація яку ви завантажуєте - "
+"завелика."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Заборонений символ в назві хосту; підчеркування недозволені."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Заборонений double-escape в URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Не чинна адреса URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Відсутній HTTP Ідентифікатор (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Відсутній URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Відсутнє ім'я хотсу"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Відсутній або невірний протокол доступу (повинен бути <q>http://</q> або "
+"якась схожа фігня)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Відсутній або невідомий природі метод запиту."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Операція пройшла успішно"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-"
+"bin/chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Будь-ласка, зв'яжіться з <a href=\"mailto:%w%W\">адміністратором кеш-"
+"серверу</a> якщо у вас виникли труднощі під час аутентифікації або <a "
+"href=\"http://%h/cgi-bin/chpasswd.cgi\">змініть</a> ваш пароль по-замовченні."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Будь-ласка, зв'яжіться з <a href=\"mailto:%w%W\">адміністратором кеш-"
+"серверу</a> якщо у вас виникли труднощі під час аутентифікації або, якщо ви "
+"і <em>є</em> цей самий адміністратор, перегляньте документацію по Squid'у і "
+"перевірте кеш-лог для більш детальних повідомлень про помилки."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Помилка Зчитування"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Таймаут при Зчитуванні"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Запит завеликий."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Помилка Сокету"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Деякі аспекти запитаного URL не правильні."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Деякі можливі проблеми це:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Вибачайте, вам зараз недозволено запитувати %U з цього менеджеру кешу. "
+"Спочатку пройдіть процедуру аутентифікації."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Вибачайте, вам зараз недозволено запитувати %U з цього кешу. Спочатку "
+"пройдіть процедуру аутентифікації."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid чомусь не отримав жодних даниз з цього запиту."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid не підтримує всі методи запитів для всіх наявних протоколів. Як "
+"приклад, ви не можете використати метод POST в запиті протоколу Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid знищив запит бо він вибрав максимальний ліміт часу з'єднання з мережею."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid не вдається створити TCP сокет, скоріш за все через надмірне "
+"навантаження. Будь-ласка, повторіть запит."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid надіслав наступну FTP команду:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "ESI процесор повернув наступне:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid ""
+"The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "FTP сервер занадто зайнятий, щоб отримати URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "ICAP сервер чомусь недоступний."
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The dnsserver returned:"
+msgstr "DNS сервер повернув наступне:"
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Поточний URL не може бути отриманий: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Наступна помилка була отримана під час спроби отримання URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Наступна помилка була отримана під час спроби отримання URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid ""
+"The remote host or network may be down. Please try the request again."
+msgstr ""
+"Віддалений сервер чи мережа \"не дихає\". Будь-ласка, спробуйте запит знову."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "Відповідь на запит завелика."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Запитаний URL не може бути отриманий."
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "Відповідь сервера була наступною:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Сервер повернув наступне: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache! Yell at the "
+"administrator."
+msgstr ""
+"Не існує WAIS Relay сервера для цього Кешу! Кличте тунеядця адміністратора."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache. Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Цей кеш не підтримує FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time. Please retry your request again soon."
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship. Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "Це означає, що деякі частини ICAP комунікації \"впали\"."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Це означає, що бісовий FTP сервер не має права чи відсутнє вільне місце, щоб "
+"зберегти файл. Перевірте шлях, права, кількість вільного місця і спробуйте "
+"щнову."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Це означає, що кеш не зміг з'єднатися з сервером, що вказаний в URL. "
+"Перевірте правильність адреси."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738). If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"This proxy and the remote host failed to negotiate a mutually acceptable "
+"security settings for handling your request. It is possible that the remote "
+"host does not support secure connections, or the proxy is not satisfied with "
+"the host security credentials."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches. The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Неможливо визначити IP адресу з ім'я сервера <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Помилка Запису"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Ваш адміністратор кешу цей чувак: <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Ваш вебмастер - <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Нульова по Розміру Відповідь (Zero Sized Reply)"
--- /dev/null
+#!/bin/sh
+#
+# Update the core dictionary file from the basic templates
+# Useful if any template has altered.
+#
+
+# Make sure any existing temp stuff is gone from previous updates...
+rm -r -f ./pot
+rm -f dictionary.pot.new
+rm dictionary.pot
+
+# make a temp directory for all our workings...
+mkdir ./pot
+
+# Generate per-page disctionaries ...
+for f in `ls -1 ./templates/`; do
+ if test "${f}" != "generic" ; then
+ html2po -i ./templates/${f} -P --duplicates=merge -o ./pot/${f}.pot
+ fi
+done
+
+# merge and sort the per-page dictionaries into a single master
+msgcat ./pot/*.pot -s -o dictionary.pot.new &&
+ (
+ cat dictionary.pot.new |
+ sed s/PACKAGE\ VERSION/squid\ 3\.0/ |
+ sed s/LANGUAGE\ \<LL\@li\.org\>/Squid\ Developers\ \<squid-dev\@squid-cache\.org\>/
+ ) >dictionary.pot
+
+## Update all existing dictionaries with the new content ...
+for f in `ls -1 ./*.po` ; do
+ echo -n "Update: ${f} ... "
+ msgmerge --verbose -s -o ${f}.new ${f} dictionary.pot
+ chown --reference=${f} ${f}.new
+ mv ${f}.new ${f}
+done
+
+# cleanup.
+rm -r -f ./pot
+rm -f dictionary.pot.new
* authenticating function.
*/
+/* Squid provides a number of portability overrides */
+#include "config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void
RFCNB_Get_Error(char *buffer, int buf_len)
{
-
if (RFCNB_saved_errno <= 0) {
- sprintf(buffer, "%s", RFCNB_Error_Strings[RFCNB_errno]);
+ snprintf(buffer, (buf_len-1) ,"%s", RFCNB_Error_Strings[RFCNB_errno]);
} else {
- sprintf(buffer, "%s\n\terrno:%s", RFCNB_Error_Strings[RFCNB_errno],
+ snprintf(buffer, (buf_len-1), "%s\n\terrno:%s", RFCNB_Error_Strings[RFCNB_errno],
strerror(RFCNB_saved_errno));
}
-
}
/* Pick up the last error response and returns as a code */
int
RFCNB_Get_Last_Error(void)
{
-
return (RFCNB_errno);
-
}
/* Pick up saved errno as well */
char *progname = "squid_rad_auth";
int debug_flag = 0;
+#ifdef _SQUID_MSWIN_
+void
+Win32SockCleanup(void)
+{
+ WSACleanup();
+ return;
+}
+#endif /* ifdef _SQUID_MSWIN_ */
+
/*
* Diff two timeval, b - a
*/
totallen, length);
return -1;
}
-
if (auth->id != request_id) {
/* Duplicate response of an earlier query, ignore */
return -1;
}
-
/* Verify the reply digest */
memcpy(reply_digest, auth->vector, AUTH_VECTOR_LEN);
memcpy(auth->vector, vector, AUTH_VECTOR_LEN);
fprintf(stderr, "Warning: Received invalid reply digest from server\n");
return -1;
}
-
if (auth->code != PW_AUTHENTICATION_ACK)
return 1;
crt = sscanf(line, "secret %s", secretkey);
if (!memcmp(line, "identifier", 10))
sscanf(line, "identifier %s", identifier);
- if (!memcmp(line, "service", 7))
+ if (!memcmp(line, "service", 7))
sscanf(line, "service %s", svc_name);
- if (!memcmp(line, "port", 4))
+ if (!memcmp(line, "port", 4))
sscanf(line, "port %s", svc_name);
}
if (srv && crt)
memcpy(cbc, auth->vector, AUTH_VECTOR_LEN);
for (j = 0; j < length; j += AUTH_VECTOR_LEN) {
/* Calculate the MD5 Digest */
- strcpy((char *)md5buf, secretkey);
+ strcpy((char *) md5buf, secretkey);
memcpy(md5buf + secretlen, cbc, AUTH_VECTOR_LEN);
md5_calc(cbc, md5buf, secretlen + AUTH_VECTOR_LEN);
*/
auth->length = htons(total_length);
- while(retry--) {
+ while (retry--) {
int time_spent;
struct timeval sent;
/*
if (rc == 0)
return 1;
if (rc == 1)
- return 0;
+ return 0;
}
}
int c;
while ((c = getopt(argc, argv, "h:p:f:w:i:t:")) != -1) {
- switch(c) {
+ switch (c) {
case 'f':
cfname = optarg;
break;
exit(1);
}
}
-
if (!*server) {
fprintf(stderr, "%s: Server not specified\n", argv[0]);
exit(1);
}
-
if (!*secretkey) {
fprintf(stderr, "%s: Shared secret not specified\n", argv[0]);
exit(1);
}
-
#ifdef _SQUID_MSWIN_
{
WSADATA wsaData;
WSAStartup(2, &wsaData);
+ atexit(Win32SockCleanup);
}
#endif
/*
fprintf(stderr, "\n" PROGRAM_NAME " version " PROGRAM_VERSION "\n\n");
fprintf(stderr, "Usage: " PROGRAM_NAME " -b basedn -f filter [options] ldap_server_name\n\n");
fprintf(stderr, "\t-b basedn (REQUIRED)\tbase dn under where to search for groups\n");
- fprintf(stderr, "\t-f filter (REQUIRED)\tgroup search filter pattern. %%v = user,\n\t\t\t\t%%a = group\n");
+ fprintf(stderr, "\t-f filter (REQUIRED)\tgroup search filter pattern. %%u = user,\n\t\t\t\t%%v = group\n");
fprintf(stderr, "\t-B basedn (REQUIRED)\tbase dn under where to search for users\n");
fprintf(stderr, "\t-F filter (REQUIRED)\tuser search filter pattern. %%s = login\n");
fprintf(stderr, "\t-s base|one|sub\t\tsearch scope\n");
#!/bin/sh
-if [ -f /usr/include/w32api/windows.h ]; then
- exit 0
+if [ -f /usr/include/w32api/dsrole.h ]; then
+ if grep -q DsRoleGetPrimaryDomainInformation /usr/include/w32api/dsrole.h; then
+ exit 0
+ fi
fi
-if [ -f /usr/include/windows.h ]; then
- exit 0
+if [ -f /usr/include/dsrole.h ]; then
+ if grep -q DsRoleGetPrimaryDomainInformation /usr/include/dsrole.h; then
+ exit 0
+ fi
fi
exit 1
-/* -----------------------------------------------------------------------------\r
- * spnegohelp.c defines RFC 2478 SPNEGO GSS-API mechanism APIs.\r
- *\r
- * Author: Frank Balluffi\r
- *\r
- * Copyright (C) 2002-2003 All rights reserved.\r
- *\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.\r
- *\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-#include "spnegohelp.h"\r
-#include "spnego.h"\r
-\r
-#include <stdlib.h>\r
-\r
-int makeNegTokenTarg (const unsigned char * kerberosToken,\r
- size_t kerberosTokenLength,\r
- const unsigned char ** negTokenTarg,\r
- size_t * negTokenTargLength)\r
-{\r
- SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;\r
- int rc1 = 1;\r
- int rc2 = SPNEGO_E_SUCCESS;\r
-\r
- /* Check arguments. */\r
-\r
- if (!kerberosToken ||\r
- !negTokenTarg ||\r
- !negTokenTargLength)\r
- return 10;\r
-\r
- /* Does IIS reply with 1.2.840.48018.1.2.2 or 1.2.840.113554.1.2.2? */\r
-\r
- /* Does IIS always reply with accept_completed? */\r
-\r
- /* IIS does not include a MIC. */\r
-\r
- rc2 = spnegoCreateNegTokenTarg (spnego_mech_oid_Kerberos_V5_Legacy,\r
- spnego_negresult_success,\r
- (unsigned char *) kerberosToken,\r
- kerberosTokenLength,\r
- NULL,\r
- 0,\r
- &hSpnegoToken);\r
-\r
- if (rc2 != SPNEGO_E_SUCCESS)\r
- {\r
- rc1 = abs(rc2)+100;\r
- goto cleanup;\r
- }\r
-\r
- /* Get NegTokenTarg length. */\r
-\r
- rc2 = spnegoTokenGetBinary (hSpnegoToken,\r
- NULL,\r
- (unsigned long*) negTokenTargLength);\r
-\r
- if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)\r
- {\r
- rc1 = abs(rc2)+200;\r
- goto cleanup;\r
- }\r
-\r
- *negTokenTarg = malloc (*negTokenTargLength);\r
-\r
- if (!*negTokenTarg)\r
- {\r
- rc1 = abs(rc2)+300;\r
- goto cleanup;\r
- }\r
-\r
- /* Get NegTokenTarg data. */\r
-\r
- rc2 = spnegoTokenGetBinary (hSpnegoToken,\r
- (unsigned char *) *negTokenTarg,\r
- (unsigned long*) negTokenTargLength);\r
-\r
-\r
- if (rc2 != SPNEGO_E_SUCCESS)\r
- {\r
- rc1 = abs(rc2)+400;\r
- goto error;\r
- }\r
-\r
- rc1 = 0;\r
-\r
- goto cleanup;\r
-\r
-error:\r
-\r
- if (*negTokenTarg)\r
- {\r
- free ((unsigned char *) *negTokenTarg);\r
- *negTokenTarg = NULL;\r
- *negTokenTargLength = 0;\r
- }\r
-\r
-cleanup:\r
-\r
- if (hSpnegoToken)\r
- spnegoFreeData (hSpnegoToken);\r
-\r
- LOG(("makeNegTokenTarg returned %d\n",rc1));\r
- return rc1;\r
-}\r
-\r
-int parseNegTokenInit (const unsigned char * negTokenInit,\r
- size_t negTokenInitLength,\r
- const unsigned char ** kerberosToken,\r
- size_t * kerberosTokenLength)\r
-{\r
- SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;\r
- int pindex = -1;\r
- int rc1 = 1;\r
- int rc2 = SPNEGO_E_SUCCESS;\r
- unsigned char reqFlags = 0;\r
- int tokenType = 0;\r
-\r
- /* Check arguments. */\r
-\r
- if (!negTokenInit ||\r
- !kerberosToken ||\r
- !kerberosTokenLength)\r
- return 10;\r
-\r
- /* Decode SPNEGO token. */\r
-\r
- rc2 = spnegoInitFromBinary ((unsigned char *) negTokenInit,\r
- negTokenInitLength,\r
- &hSpnegoToken);\r
-\r
- if (rc2 != SPNEGO_E_SUCCESS)\r
- {\r
- rc1 = abs(rc2)+100;\r
- goto cleanup;\r
- }\r
-\r
- /* Check for negTokenInit choice. */\r
-\r
- rc2 = spnegoGetTokenType (hSpnegoToken,\r
- &tokenType);\r
-\r
- if (rc2 != SPNEGO_E_SUCCESS)\r
- {\r
- rc1 = abs(rc2)+200;\r
- goto cleanup;\r
- }\r
-\r
- if (tokenType != SPNEGO_TOKEN_INIT)\r
- {\r
- rc1 = abs(rc2)+300;\r
- goto cleanup;\r
- }\r
-\r
- /*\r
- Check that first mechType is 1.2.840.113554.1.2.2 or 1.2.840.48018.1.2.2.\r
- */\r
-\r
- /*\r
- IE seems to reply with 1.2.840.48018.1.2.2 and then 1.2.840.113554.1.2.2.\r
- */\r
-\r
- rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,\r
- spnego_mech_oid_Kerberos_V5_Legacy,\r
- &pindex);\r
-\r
- if (rc2 != SPNEGO_E_SUCCESS ||\r
- pindex != 0)\r
- {\r
- rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,\r
- spnego_mech_oid_Kerberos_V5,\r
- &pindex);\r
-\r
- if (rc2 != SPNEGO_E_SUCCESS ||\r
- pindex != 0)\r
- {\r
- rc1 = abs(rc2)+400;\r
- goto cleanup;\r
- }\r
- }\r
-\r
- /* Check for no reqFlags. */\r
-\r
- /* Does IE ever send reqFlags? */\r
-\r
- rc2 = spnegoGetContextFlags (hSpnegoToken,\r
- &reqFlags);\r
-\r
- if (rc2 == SPNEGO_E_SUCCESS)\r
- {\r
- rc1 = abs(rc2)+500;\r
- goto cleanup;\r
- }\r
-\r
- /* Get mechanism token length. */\r
-\r
- rc2 = spnegoGetMechToken (hSpnegoToken,\r
- NULL,\r
- (unsigned long*) kerberosTokenLength);\r
-\r
- if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)\r
- {\r
- rc1 = abs(rc2)+600;\r
- goto cleanup;\r
- }\r
-\r
- *kerberosToken = malloc (*kerberosTokenLength);\r
-\r
- if (!*kerberosToken)\r
- {\r
- rc1 = abs(rc2)+700;\r
- goto cleanup;\r
- }\r
-\r
- /* Get mechanism token data. */\r
-\r
- rc2 = spnegoGetMechToken (hSpnegoToken,\r
- (unsigned char *) *kerberosToken,\r
- (unsigned long*) kerberosTokenLength);\r
-\r
- if (rc2 != SPNEGO_E_SUCCESS)\r
- {\r
- rc1 = abs(rc2)+800;\r
- goto error;\r
- }\r
-\r
- /* According to Microsoft, IE does not send a MIC. */\r
-\r
- rc1 = 0;\r
-\r
- goto cleanup;\r
-\r
-error:\r
-\r
- if (*kerberosToken)\r
- {\r
- free ((unsigned char *) *kerberosToken);\r
- *kerberosToken = NULL;\r
- *kerberosTokenLength = 0;\r
- }\r
-\r
-cleanup:\r
-\r
- if (hSpnegoToken)\r
- spnegoFreeData (hSpnegoToken);\r
-\r
- LOG(("parseNegTokenInit returned %d\n",rc1));\r
- return rc1;\r
-}\r
+/* -----------------------------------------------------------------------------
+ * spnegohelp.c defines RFC 2478 SPNEGO GSS-API mechanism APIs.
+ *
+ * Author: Frank Balluffi
+ *
+ * Copyright (C) 2002-2003 All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * -----------------------------------------------------------------------------
+ */
+
+#include "spnegohelp.h"
+#include "spnego.h"
+
+#include <stdlib.h>
+
+int makeNegTokenTarg (const unsigned char * kerberosToken,
+ size_t kerberosTokenLength,
+ const unsigned char ** negTokenTarg,
+ size_t * negTokenTargLength)
+{
+ SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;
+ int rc1 = 1;
+ int rc2 = SPNEGO_E_SUCCESS;
+
+ /* Check arguments. */
+
+ if (!kerberosToken ||
+ !negTokenTarg ||
+ !negTokenTargLength)
+ return 10;
+
+ /* Does IIS reply with 1.2.840.48018.1.2.2 or 1.2.840.113554.1.2.2? */
+
+ /* Does IIS always reply with accept_completed? */
+
+ /* IIS does not include a MIC. */
+
+ rc2 = spnegoCreateNegTokenTarg (spnego_mech_oid_Kerberos_V5_Legacy,
+ spnego_negresult_success,
+ (unsigned char *) kerberosToken,
+ kerberosTokenLength,
+ NULL,
+ 0,
+ &hSpnegoToken);
+
+ if (rc2 != SPNEGO_E_SUCCESS)
+ {
+ rc1 = abs(rc2)+100;
+ goto cleanup;
+ }
+
+ /* Get NegTokenTarg length. */
+
+ rc2 = spnegoTokenGetBinary (hSpnegoToken,
+ NULL,
+ (unsigned long*) negTokenTargLength);
+
+ if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)
+ {
+ rc1 = abs(rc2)+200;
+ goto cleanup;
+ }
+
+ *negTokenTarg = malloc (*negTokenTargLength);
+
+ if (!*negTokenTarg)
+ {
+ rc1 = abs(rc2)+300;
+ goto cleanup;
+ }
+
+ /* Get NegTokenTarg data. */
+
+ rc2 = spnegoTokenGetBinary (hSpnegoToken,
+ (unsigned char *) *negTokenTarg,
+ (unsigned long*) negTokenTargLength);
+
+
+ if (rc2 != SPNEGO_E_SUCCESS)
+ {
+ rc1 = abs(rc2)+400;
+ goto error;
+ }
+
+ rc1 = 0;
+
+ goto cleanup;
+
+error:
+
+ if (*negTokenTarg)
+ {
+ free ((unsigned char *) *negTokenTarg);
+ *negTokenTarg = NULL;
+ *negTokenTargLength = 0;
+ }
+
+cleanup:
+
+ if (hSpnegoToken)
+ spnegoFreeData (hSpnegoToken);
+
+ LOG(("makeNegTokenTarg returned %d\n",rc1));
+ return rc1;
+}
+
+int parseNegTokenInit (const unsigned char * negTokenInit,
+ size_t negTokenInitLength,
+ const unsigned char ** kerberosToken,
+ size_t * kerberosTokenLength)
+{
+ SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;
+ int pindex = -1;
+ int rc1 = 1;
+ int rc2 = SPNEGO_E_SUCCESS;
+ unsigned char reqFlags = 0;
+ int tokenType = 0;
+
+ /* Check arguments. */
+
+ if (!negTokenInit ||
+ !kerberosToken ||
+ !kerberosTokenLength)
+ return 10;
+
+ /* Decode SPNEGO token. */
+
+ rc2 = spnegoInitFromBinary ((unsigned char *) negTokenInit,
+ negTokenInitLength,
+ &hSpnegoToken);
+
+ if (rc2 != SPNEGO_E_SUCCESS)
+ {
+ rc1 = abs(rc2)+100;
+ goto cleanup;
+ }
+
+ /* Check for negTokenInit choice. */
+
+ rc2 = spnegoGetTokenType (hSpnegoToken,
+ &tokenType);
+
+ if (rc2 != SPNEGO_E_SUCCESS)
+ {
+ rc1 = abs(rc2)+200;
+ goto cleanup;
+ }
+
+ if (tokenType != SPNEGO_TOKEN_INIT)
+ {
+ rc1 = abs(rc2)+300;
+ goto cleanup;
+ }
+
+ /*
+ Check that first mechType is 1.2.840.113554.1.2.2 or 1.2.840.48018.1.2.2.
+ */
+
+ /*
+ IE seems to reply with 1.2.840.48018.1.2.2 and then 1.2.840.113554.1.2.2.
+ */
+
+ rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,
+ spnego_mech_oid_Kerberos_V5_Legacy,
+ &pindex);
+
+ if (rc2 != SPNEGO_E_SUCCESS ||
+ pindex != 0)
+ {
+ rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,
+ spnego_mech_oid_Kerberos_V5,
+ &pindex);
+
+ if (rc2 != SPNEGO_E_SUCCESS ||
+ pindex != 0)
+ {
+ rc1 = abs(rc2)+400;
+ goto cleanup;
+ }
+ }
+
+ /* Check for no reqFlags. */
+
+ /* Does IE ever send reqFlags? */
+
+ rc2 = spnegoGetContextFlags (hSpnegoToken,
+ &reqFlags);
+
+ if (rc2 == SPNEGO_E_SUCCESS)
+ {
+ rc1 = abs(rc2)+500;
+ goto cleanup;
+ }
+
+ /* Get mechanism token length. */
+
+ rc2 = spnegoGetMechToken (hSpnegoToken,
+ NULL,
+ (unsigned long*) kerberosTokenLength);
+
+ if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)
+ {
+ rc1 = abs(rc2)+600;
+ goto cleanup;
+ }
+
+ *kerberosToken = malloc (*kerberosTokenLength);
+
+ if (!*kerberosToken)
+ {
+ rc1 = abs(rc2)+700;
+ goto cleanup;
+ }
+
+ /* Get mechanism token data. */
+
+ rc2 = spnegoGetMechToken (hSpnegoToken,
+ (unsigned char *) *kerberosToken,
+ (unsigned long*) kerberosTokenLength);
+
+ if (rc2 != SPNEGO_E_SUCCESS)
+ {
+ rc1 = abs(rc2)+800;
+ goto error;
+ }
+
+ /* According to Microsoft, IE does not send a MIC. */
+
+ rc1 = 0;
+
+ goto cleanup;
+
+error:
+
+ if (*kerberosToken)
+ {
+ free ((unsigned char *) *kerberosToken);
+ *kerberosToken = NULL;
+ *kerberosTokenLength = 0;
+ }
+
+cleanup:
+
+ if (hSpnegoToken)
+ spnegoFreeData (hSpnegoToken);
+
+ LOG(("parseNegTokenInit returned %d\n",rc1));
+ return rc1;
+}
-/* -----------------------------------------------------------------------------\r
- * spnegohelp.c declares RFC 2478 SPNEGO GSS-API mechanism APIs.\r
- *\r
- * Author: Frank Balluffi\r
- *\r
- * Copyright (C) 2002-2003. All rights reserved.\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-#ifndef SPNEGOHELP_H\r
-#define SPNEGOHELP_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#include <stddef.h>\r
-\r
-/* -----------------------------------------------------------------------------\r
- * makeNegTokenTarg makes an RFC 2478 SPNEGO NegTokenTarg (token) from an\r
- * RFC 1964 Kerberos GSS-API token.\r
- *\r
- * If makeNegTokenTarg is successful, call free (*negTokenTarg) to free the\r
- * memory allocated by parseNegTokenInit.\r
- *\r
- * Returns 0 if successful, 1 otherwise.\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-int makeNegTokenTarg (const unsigned char * kerberosToken,\r
- size_t kerberosTokenLength,\r
- const unsigned char ** negTokenTarg,\r
- size_t * negTokenTargLength);\r
-\r
-/* -----------------------------------------------------------------------------\r
- * parseNegTokenInit parses an RFC 2478 SPNEGO NegTokenInit (token) to extract\r
- * an RFC 1964 Kerberos GSS-API token.\r
- *\r
- * If the NegTokenInit does cotain a Kerberos GSS-API token, parseNegTokenInit\r
- * returns an error.\r
- *\r
- * If parseNegTokenInit is successful, call free (*kerberosToken) to\r
- * free the memory allocated by parseNegTokenInit.\r
- *\r
- * Returns 0 if successful, 1 otherwise.\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-int parseNegTokenInit (const unsigned char * negTokenInit,\r
- size_t negTokenInitLength,\r
- const unsigned char ** kerberosToken,\r
- size_t * kerberosTokenLength);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* SPNEGOHELP_H */\r
+/* -----------------------------------------------------------------------------
+ * spnegohelp.c declares RFC 2478 SPNEGO GSS-API mechanism APIs.
+ *
+ * Author: Frank Balluffi
+ *
+ * Copyright (C) 2002-2003. All rights reserved.
+ * -----------------------------------------------------------------------------
+ */
+
+#ifndef SPNEGOHELP_H
+#define SPNEGOHELP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+
+/* -----------------------------------------------------------------------------
+ * makeNegTokenTarg makes an RFC 2478 SPNEGO NegTokenTarg (token) from an
+ * RFC 1964 Kerberos GSS-API token.
+ *
+ * If makeNegTokenTarg is successful, call free (*negTokenTarg) to free the
+ * memory allocated by parseNegTokenInit.
+ *
+ * Returns 0 if successful, 1 otherwise.
+ * -----------------------------------------------------------------------------
+ */
+
+int makeNegTokenTarg (const unsigned char * kerberosToken,
+ size_t kerberosTokenLength,
+ const unsigned char ** negTokenTarg,
+ size_t * negTokenTargLength);
+
+/* -----------------------------------------------------------------------------
+ * parseNegTokenInit parses an RFC 2478 SPNEGO NegTokenInit (token) to extract
+ * an RFC 1964 Kerberos GSS-API token.
+ *
+ * If the NegTokenInit does cotain a Kerberos GSS-API token, parseNegTokenInit
+ * returns an error.
+ *
+ * If parseNegTokenInit is successful, call free (*kerberosToken) to
+ * free the memory allocated by parseNegTokenInit.
+ *
+ * Returns 0 if successful, 1 otherwise.
+ * -----------------------------------------------------------------------------
+ */
+
+int parseNegTokenInit (const unsigned char * negTokenInit,
+ size_t negTokenInitLength,
+ const unsigned char ** kerberosToken,
+ size_t * kerberosTokenLength);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SPNEGOHELP_H */
#include "spnegohelp.h"
#endif
+// AYJ: must match the definition in src/auth/negotiate/auth_negotiate.cc
+#define MAX_AUTHTOKEN_LEN 32768
+
+// AYJ: match define in include/rfc2181.h
#ifndef HOST_NAME_MAX
#define HOST_NAME_MAX 256
#endif
return(0);
}
-
-
int main(int argc, char * const argv[])
{
- char buf[6400];
+ char buf[MAX_AUTHTOKEN_LEN];
char *c;
int length=0;
static int err=0;
buf += (s - 1);
*buf++ = '\\'; /* Using \ is more consistent with MS-proxy */
- p = ntlmGetString(&auth->hdr, &auth->user, auth->flags);
+ if( (p = ntlmGetString(&auth->hdr, &auth->user, auth->flags)) == NULL)
+ return 1;
+
if ((s = strlen(p) + 1) >= size)
return 1;
+
while (*p)
*buf++ = (*p++); //tolower
if (!ntlmDecodeAuth((struct ntlm_authenticate *) decoded, user, 256)) {
lc(user);
if (strip_domain_enabled) {
- strtok_r(user, "\\", &p);
+ strtok(user, "\\");
+ p = strtok(NULL, "\\");
+ if (!p)
+ p = user;
SEND2("AF %s", p);
} else {
SEND2("AF %s", user);
while(<STDIN>) {
chop;
- if (substr($_, 2) eq "YR") {
+ if (substr($_, 0, 2) eq "YR") {
print "TT ".encode_base64(&make_ntlm_static_challenge);
next;
}
}
if ($res{type} eq "challenge") { # Huh? WE are the challengers.
print "BH Squid-helper protocol error: unexpected challenge-request\n";
- next;
+ next;
}
if ($res{type} eq "authentication") {
print "AF $res{domain}\\$res{user}\n";
- next;
+ next;
}
print "BH internal error\n"; # internal error
}
-# $Id: Makefile.am,v 1.11 2003/05/21 08:24:26 hno Exp $
+# $Id$
#
-ICON1 = anthony-binhex.gif
-ICON2 = anthony-bomb.gif \
+ICONS = anthony-binhex.gif \
+ anthony-bomb.gif \
anthony-box.gif \
anthony-box2.gif \
anthony-c.gif \
anthony-xpm.gif
icondir = $(datadir)/icons
-icon_DATA = $(ICON1) $(ICON2)
-EXTRA_DIST = $(ICON1) $(ICON2) icons.shar
+icon_DATA = $(ICONS)
+EXTRA_DIST = $(ICONS)
DISTCLEANFILES =
-# The magic with ICON1,2 is to have a single dependency
-# for all of the icons.
-$(ICON2): $(ICON1)
-
-$(ICON1):
- @if [ ! -f "$(srcdir)/$(ICON1)" ]; then \
- $(SHELL) "$(srcdir)/icons.shar" ; \
- touch -r "$(srcdir)/icons.shar" *.gif ; \
- fi
-
-update-icons.shar:
- shar --no-timestamp $(ICON1) $(ICON2) > $@ 2>/dev/null || \
- shar $(ICON1) $(ICON2) > $@
-
## DEFAULT_ICON_DIR = $(sysconfdir)/icons
-
+++ /dev/null
-#!/bin/sh
-# This is a shell archive (produced by GNU sharutils 4.2).
-# To extract the files from this archive, save it to some FILE, remove
-# everything before the `!/bin/sh' line above, then type `sh FILE'.
-#
-# Made on 1997-07-18 22:53 MDT by <wessels@surf>.
-# Source directory was `/usr/people/wessels/Edit/squid-1.2/icons'.
-#
-# Existing files will *not* be overwritten unless `-c' is specified.
-#
-# This shar contains:
-# length mode name
-# ------ ---------- ------------------------------------------
-# 166 -r--r----- anthony-binhex.gif
-# 192 -r--r----- anthony-bomb.gif
-# 176 -r--r----- anthony-box.gif
-# 168 -r--r----- anthony-box2.gif
-# 160 -r--r----- anthony-c.gif
-# 169 -r--r----- anthony-compressed.gif
-# 137 -r--r----- anthony-dir.gif
-# 147 -r--r----- anthony-dirup.gif
-# 156 -r--r----- anthony-dvi.gif
-# 154 -r--r----- anthony-f.gif
-# 227 -r--r----- anthony-image.gif
-# 204 -r--r----- anthony-image2.gif
-# 194 -r--r----- anthony-layout.gif
-# 124 -r--r----- anthony-link.gif
-# 151 -r--r----- anthony-movie.gif
-# 173 -r--r----- anthony-pdf.gif
-# 172 -r--r----- anthony-portal.gif
-# 162 -r--r----- anthony-ps.gif
-# 166 -r--r----- anthony-quill.gif
-# 155 -r--r----- anthony-script.gif
-# 166 -r--r----- anthony-sound.gif
-# 156 -r--r----- anthony-tar.gif
-# 164 -r--r----- anthony-tex.gif
-# 153 -r--r----- anthony-text.gif
-# 163 -r--r----- anthony-unknown.gif
-# 154 -r--r----- anthony-xbm.gif
-# 168 -r--r----- anthony-xpm.gif
-#
-save_IFS="${IFS}"
-IFS="${IFS}:"
-gettext_dir=FAILED
-locale_dir=FAILED
-first_param="$1"
-for dir in $PATH
-do
- if test "$gettext_dir" = FAILED && test -f $dir/gettext \
- && ($dir/gettext --version >/dev/null 2>&1)
- then
- set `$dir/gettext --version 2>&1`
- if test "$3" = GNU
- then
- gettext_dir=$dir
- fi
- fi
- if test "$locale_dir" = FAILED && test -f $dir/shar \
- && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
- then
- locale_dir=`$dir/shar --print-text-domain-dir`
- fi
-done
-IFS="$save_IFS"
-if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
-then
- echo=echo
-else
- TEXTDOMAINDIR=$locale_dir
- export TEXTDOMAINDIR
- TEXTDOMAIN=sharutils
- export TEXTDOMAIN
- echo="$gettext_dir/gettext -s"
-fi
-if mkdir _sh03044; then
- $echo 'x -' 'creating lock directory'
-else
- $echo 'failed to create lock directory'
- exit 1
-fi
-# ============= anthony-binhex.gif ==============
-if test -f 'anthony-binhex.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-binhex.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-binhex.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-binhex.gif
-M1TE&.#EA%``6`,(``````-S<W"]/3____W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-K*+J\];"(0:N=(KX)NN_#%&K<YX55!HD4F%[K8)Z`4-^;
-M/`.ZF5M`"F%(`.2*)H*%:)3T3,%B#A!05GA`J=,VBS9+R(YU^1V,@^1IC<+U
-?JKO9\A6+UI;@:6='U([_T&X2`D2$A4,V$3N*30D`.S9+
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-binhex.gif' ||
- $echo 'restore of' 'anthony-binhex.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-binhex.gif:' 'MD5 check failed'
-af42e18b16cc7c0d522862c1a3f0f3e8 anthony-binhex.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-binhex.gif'`"
- test 166 -eq "$shar_count" ||
- $echo 'anthony-binhex.gif:' 'original size' '166,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-bomb.gif ==============
-if test -f 'anthony-bomb.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-bomb.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-bomb.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-bomb.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3______7`'"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```.%*+J\]M"(0:N=(KYI.\_11`S`,%;<`&[5>5W0!!`"45:`
-MD.\L110=@'`(8(T`!5>EP"P4)1?=;<E\IE1(*2"PM%JR@N:6XNQ1A.$!4\<M
-M0[^%=D%1<E])S3E=[86OZ75].']:?&84`3ET;(9O%HE:7(UWB$.2DQV9%G9A
-,>9YY.A%$HZ1/"0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-bomb.gif' ||
- $echo 'restore of' 'anthony-bomb.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-bomb.gif:' 'MD5 check failed'
-4383bbd438da26abd13003009718aeea anthony-bomb.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-bomb.gif'`"
- test 192 -eq "$shar_count" ||
- $echo 'anthony-bomb.gif:' 'original size' '192,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-box.gif ==============
-if test -f 'anthony-box.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-box.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-box.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-box.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3RZ+5____W"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```-U*+J\]M`(0JN=(KYI.\\1UU4BN(W7!8D48`$"+)\54+@M
-MH.\T81<!5V%(O-%^P&"1"#@.AH$HDNE\1J7+IJ0UZ%YCV:I7@208M[YN=_&C
-IG$4`-;M0>;_69(O]GM=K62TQ(WL=.!V$*(=_`DN-1#$1.Y*3D@\)`#MN
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-box.gif' ||
- $echo 'restore of' 'anthony-box.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-box.gif:' 'MD5 check failed'
-982cb717724e05c054ba592332976b2a anthony-box.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-box.gif'`"
- test 176 -eq "$shar_count" ||
- $echo 'anthony-box.gif:' 'original size' '176,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-box2.gif ==============
-if test -f 'anthony-box2.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-box2.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-box2.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-box2.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3RZ+5____W"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```-M:+K<_C`:("$HM+);0M9<YVG34(AC!0QFX*:.<*[L*X2G
-MH`@$0=>"VVF8X?E8K*!PB-GU?@,EKFDP0J5#`M6*C`8YO6WOF/P6QN(Q33K6
-A%MO'+SS=!MS@;B<>@,]7^X!;,DR$3#<;`(F*BXP*"0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-box2.gif' ||
- $echo 'restore of' 'anthony-box2.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-box2.gif:' 'MD5 check failed'
-8b578e9789cd27f087838a18b23166c6 anthony-box2.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-box2.gif'`"
- test 168 -eq "$shar_count" ||
- $echo 'anthony-box2.gif:' 'original size' '168,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-c.gif ==============
-if test -f 'anthony-c.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-c.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-c.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-c.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-E&+J\])`$0:N=(;YI.\\1)P#D58$;1:[G!7%EJ08`3:<C
-MD%=KC\L=P6`X`/QTP`K1*%$A=4$A$]:+2G$Y:)52Q%HMW6:VQ^).O\$PE5R^
-9BM'*\Y@=]\+5</`T0.S[AS<0;(,K#PD`.W$Y
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-c.gif' ||
- $echo 'restore of' 'anthony-c.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-c.gif:' 'MD5 check failed'
-47e22190738a27aa4039ff195b3e25fa anthony-c.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-c.gif'`"
- test 160 -eq "$shar_count" ||
- $echo 'anthony-c.gif:' 'original size' '160,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-compressed.gif ==============
-if test -f 'anthony-compressed.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-compressed.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-compressed.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-compressed.gif
-M1TE&.#EA%``6`,(``````+(B(B]/3_]C1____W"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```-N:&K2O3`N00@5,K-*K8Y=YWU*6''D1@`"ZY(=(,\`?!)%
-M7M11,)0W7(XW""A\/]%M9Q@4C\Z!\K2+&@U(9[!2B#ZQWL$V?,T6M^:R=8O+
-BJHM3+@"I-L9Q-5_Y>F=BKQ!]/!J",`(Z.BTI!C0T$@D`.\$V
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-compressed.gif' ||
- $echo 'restore of' 'anthony-compressed.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-compressed.gif:' 'MD5 check failed'
-13ca8bb5773109a25f5fa4f65e99c62a anthony-compressed.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-compressed.gif'`"
- test 169 -eq "$shar_count" ||
- $echo 'anthony-compressed.gif:' 'original size' '169,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-dir.gif ==============
-if test -f 'anthony-dir.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-dir.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-dir.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-dir.gif
-M1TE&.#EA%``6`,(``````/7>LZ!2+2]/3[^_OP```````````"'Y!`$```0`
-M+``````4`!8```-.2+K<_C#*21FX^$X0NN]`Q'UDIBF`0'IJB09"+,<K'(YU
-M+0Q7GN\]WPJ($[)X12,,J?P0F\<@]`E=2IM`0FK&Y0YXJ*]X3.8-%J9TYIP`
-"`#M7
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-dir.gif' ||
- $echo 'restore of' 'anthony-dir.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-dir.gif:' 'MD5 check failed'
-30206a4b35a70e342cef25b892bed136 anthony-dir.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-dir.gif'`"
- test 137 -eq "$shar_count" ||
- $echo 'anthony-dir.gif:' 'original size' '137,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-dirup.gif ==============
-if test -f 'anthony-dirup.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-dirup.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-dirup.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-dirup.gif
-M1TE&.#EA%``6`,(``````/7>LZ!2+2]/3[^_OP```````````"'Y!`$```0`
-M+``````4`!8```-82+K<_C#*21FX^$X0NN]`Q'UDIBF`0'IJB09"+,<K'(ZU
-MAPO#E>L^6`]7,PF#O\!NF`2QF$I=Z>G#**O(XPA')/&R36WX\R6D9FCTH(=:
-,N]_PWF!AJF?F"0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-dirup.gif' ||
- $echo 'restore of' 'anthony-dirup.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-dirup.gif:' 'MD5 check failed'
-264ae666e8bed6eccdbeba55bb5aa8f5 anthony-dirup.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-dirup.gif'`"
- test 147 -eq "$shar_count" ||
- $echo 'anthony-dirup.gif:' 'original size' '147,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-dvi.gif ==============
-if test -f 'anthony-dvi.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-dvi.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-dvi.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-dvi.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-A&+J\])`$0:N=(;X)NN_"%&K<YX55!I46*%*J))@G$-CX
-M)@ST,-,ZBY`R*/*".Y/%"-#Q:,.C[#1<-F5/I5#ZRH*VUU<5K*-]K65S-#RN
-5<MMK))S(GE>X`:-^7[Q%S(!7"0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-dvi.gif' ||
- $echo 'restore of' 'anthony-dvi.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-dvi.gif:' 'MD5 check failed'
-a19a057f846468be9db21a1cabeacaa0 anthony-dvi.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-dvi.gif'`"
- test 156 -eq "$shar_count" ||
- $echo 'anthony-dvi.gif:' 'original size' '156,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-f.gif ==============
-if test -f 'anthony-f.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-f.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-f.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-f.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-?&+J\])`$0:N=(;YI.\\1UU4BN%%`FI(7Q*DK&@#S?`JQ
-M!:LW/`[``:"G&@F"0PD*8+0(B<W*4XEC5GR4J2@J3;YVV*.7V]$NP3DSN4M$
-36\6W-9PJUP:"^#S0!G&['PD`.\W*
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-f.gif' ||
- $echo 'restore of' 'anthony-f.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-f.gif:' 'MD5 check failed'
-30c06990ecae4c7ecae1f405b29871b0 anthony-f.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-f.gif'`"
- test 154 -eq "$shar_count" ||
- $echo 'anthony-f.gif:' 'original size' '154,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-image.gif ==============
-if test -f 'anthony-image.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-image.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-image.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-image.gif
-M1TE&.#EA%``6`.,``````!Z0_[(B(KZ^OB]/3RZ+5P``@/]C1____W"`D+^_
-MOP```````````````````"'Y!`$```H`+``````4`!8```20D,A)I[I8$<2[
-MWT1V;5Y)AAE9=BHZ(D<L'P.BVM@VRP("$+_@:Q?K`8Y(P)#8XR2>":4&-BM8
-M"S4$5*J3%3@#:U;+10QBW_"5-(B^!@(!]FK=#`SN:8>^'@3P92Q\"00!?WDW
-M`P17A(:'@1V*$XZ/+RMFE)5Z)7Z9@)8>=P:CI)^;ER6(!%"LK4]`&4FRLU(1
-"`#M7
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-image.gif' ||
- $echo 'restore of' 'anthony-image.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-image.gif:' 'MD5 check failed'
-78cfc371f01ce9a11534f87ec2c837dd anthony-image.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-image.gif'`"
- test 227 -eq "$shar_count" ||
- $echo 'anthony-image.gif:' 'original size' '227,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-image2.gif ==============
-if test -f 'anthony-image2.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-image2.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-image2.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-image2.gif
-M1TE&.#EA%``6`.,``````!Z0_[(B(B]/3RZ+5P``@/]C1____W"`D+^_OP``
-M`````````````````````"'Y!`$```D`+``````4`!8```1Y<,A)9[HXC<.[
-MWT-V;5Y)AAE9=BHZ=D(L"^KAJH*A[\#0_R].;J<#&(^`X"''-#`14$12LZI&
-MIZW*I"-5#@C@,$'5I7*^XC`7RQJ[OV1VU2H_%.YX_%I9"/C_`05[9G:`@(,J
-8?8J!@8AS=$J/B`-1E990/AE(FYQ3$0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-image2.gif' ||
- $echo 'restore of' 'anthony-image2.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-image2.gif:' 'MD5 check failed'
-aaba8674a5053db62e10b84b45c9feb3 anthony-image2.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-image2.gif'`"
- test 204 -eq "$shar_count" ||
- $echo 'anthony-image2.gif:' 'original size' '204,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-layout.gif ==============
-if test -f 'anthony-layout.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-layout.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-layout.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-layout.gif
-M1TE&.#EA%``6`.,``````(?.ZZ!2+2]/3_]C1______7`'"`D+^_OP``````
-M`````````````````````"'Y!`$```@`+``````4`!8```1O<,A))[H8C<*[
-MWT-V;5Y)AME9<62!CJQA!#3[8>=,!QPP^$"8:U<K`(Y(@'`@:#8]A^A!J6$Y
-MG]`HM57J%J9";Q=<-2;/'3)7G-[VSLEVF"TO<PCF.$=-+_$[>'!U:W1_?7M;
-X.`U*+C%$_&7"12!<1`#O/
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-layout.gif' ||
- $echo 'restore of' 'anthony-layout.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-layout.gif:' 'MD5 check failed'
-7a0161bcf19320e63671bb5718c2f094 anthony-layout.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-layout.gif'`"
- test 194 -eq "$shar_count" ||
- $echo 'anthony-layout.gif:' 'original size' '194,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-link.gif ==============
-if test -f 'anthony-link.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-link.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-link.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-link.gif
-M1TE&.#EA%``6`*$``````"]/3W"`D+^_OR'Y!`$```,`+``````4`!8```)-
-MG(^I*A$B5FKN/6EH=1#KW43+MSVB4H+7`@PI=R9`ZX+8,`-K<!MYOD+0#K]B
-B<"8L*HN'P/*)'`B@T`SUF7%><PQM]=90]A31L=`\+@``.P-K
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-link.gif' ||
- $echo 'restore of' 'anthony-link.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-link.gif:' 'MD5 check failed'
-dc034c34323a0cef5fcbb7dd10290df4 anthony-link.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-link.gif'`"
- test 124 -eq "$shar_count" ||
- $echo 'anthony-link.gif:' 'original size' '124,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-movie.gif ==============
-if test -f 'anthony-movie.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-movie.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-movie.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-movie.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3____W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-<"+K<6A"$X-H$(E[".Q\2E16,YX'+&`)F!U[JUA*O&"TS
-MS<147F.:WNRG6@R.2.0N6&'`F+Y541%-08?2:XMXHV*M)-DV&Q:.GR1C,KDL
-0-Q?HU9M<$-CO^+P=D@``.V'`
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-movie.gif' ||
- $echo 'restore of' 'anthony-movie.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-movie.gif:' 'MD5 check failed'
-8d8a692e445c8c195c5c75304b276325 anthony-movie.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-movie.gif'`"
- test 151 -eq "$shar_count" ||
- $echo 'anthony-movie.gif:' 'original size' '151,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-pdf.gif ==============
-if test -f 'anthony-pdf.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-pdf.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-pdf.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-pdf.gif
-M1TE&.#EA%``6`,(``````"]/3_\``/___W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-R&+J\];"$0:N=(;YI.\\19PF5"&X=20XB"[6$2@Q`4-_H
-M.*Q`[P.Y&46P&A".1Z"DLRM2D,J)<+BK"`G15(7(-69US:(`BYIVAT1O+LR\
-F?E5,"WFY<CZM6;CQ+G_'.W,M?WAK@X02`4B*BT<V$3^0D4H)`#MV
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-pdf.gif' ||
- $echo 'restore of' 'anthony-pdf.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-pdf.gif:' 'MD5 check failed'
-7b5afe82b81ce71fde7603add0c6075f anthony-pdf.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-pdf.gif'`"
- test 173 -eq "$shar_count" ||
- $echo 'anthony-pdf.gif:' 'original size' '173,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-portal.gif ==============
-if test -f 'anthony-portal.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-portal.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-portal.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-portal.gif
-M1TE&.#EA%``6`,(``````,V%/[Z^OB]/3______7`'"`D+^_OR'Y!`$```<`
-M+``````4`!8```-Q.+J\]_`,0JN=([YI.\\1UU4BN)&-<D&EX;[`$,\G-1A`
-MKN]Y3=R`@$X`>.%\MT!!""`28$@<LPFH'"4D7$[HI%Q;O.X3$`T.JUXRUJ8]
-E6]7@+?6-%-COXF^%MZ.O1X!Z@(%P@X0;-T:*1C(1?(\Z#PD`.PT.
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-portal.gif' ||
- $echo 'restore of' 'anthony-portal.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-portal.gif:' 'MD5 check failed'
-b65db2f42d4ae0044ccf2bced749e3e5 anthony-portal.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-portal.gif'`"
- test 172 -eq "$shar_count" ||
- $echo 'anthony-portal.gif:' 'original size' '172,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-ps.gif ==============
-if test -f 'anthony-ps.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-ps.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-ps.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-ps.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-G&+J\])`$0:N=(;X)NN_"%&K<YX55!HD"V`)HNE8F#`1W
-MOE7#-[RFG65(&1A[NYZM\^,9`3N/TF5!2EY8*@]Z]9V&ULGTU:QR641B.,U>
-;L]7G-UPHW]+K`C<^?PX<_X!&.!$UA1X/"0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-ps.gif' ||
- $echo 'restore of' 'anthony-ps.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-ps.gif:' 'MD5 check failed'
-ac18ae0d0984eec459878cec544b6d57 anthony-ps.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-ps.gif'`"
- test 162 -eq "$shar_count" ||
- $echo 'anthony-ps.gif:' 'original size' '162,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-quill.gif ==============
-if test -f 'anthony-quill.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-quill.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-quill.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-quill.gif
-M1TE&.#EA%``6`,(``````(?.ZR]/3____W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-K*+J\];"(0:N=(KYI.U=`"'!=A84!`4CEA1+JUE(O',HM
-MD,)JS)8Z7L]'J@1Y``JQ<[15EL:=\[GZ#01250<Z:":WU8_T"\;I!*'9$BL@
-?S)3A;OL-EP'<],&23.?F]6%M0H-":!$BB(F(#PD`.R:W
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-quill.gif' ||
- $echo 'restore of' 'anthony-quill.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-quill.gif:' 'MD5 check failed'
-b95a126efb90d179c885263b71363313 anthony-quill.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-quill.gif'`"
- test 166 -eq "$shar_count" ||
- $echo 'anthony-quill.gif:' 'original size' '166,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-script.gif ==============
-if test -f 'anthony-script.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-script.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-script.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-script.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-@&+J\])`$0:N=(;YI.\\1UU4BN%6`D)(7Q`$PC`8`39]4
-MNN9QC/<[RF`X`.!4R!'1*!DYA4S1TU+\`7N5:G/:T;ZNL6R4VQVKP#+HD2SP
-4\M#B-=G-5DL"Q+Q^>(.@T0\)`#O1
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-script.gif' ||
- $echo 'restore of' 'anthony-script.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-script.gif:' 'MD5 check failed'
-1a090281ba78aa7092f9908890012deb anthony-script.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-script.gif'`"
- test 155 -eq "$shar_count" ||
- $echo 'anthony-script.gif:' 'original size' '155,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-sound.gif ==============
-if test -f 'anthony-sound.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-sound.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-sound.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-sound.gif
-M1TE&.#EA%``6`,(``````+(B(KZ^OB]/3_]C1____W"`D+^_OR'Y!`$```<`
-M+``````4`!8```-K>+K<_C"VP0B1"H!C58^`L7$7"87%:'X-FG*>=VFT4=Q;
-MUP5$:/RVVVMWX;F$P@WOL#0&D3AF<7J$*J?2*O(JS1H&WV_2U)S1`()!5(<]
-?#-X#M#H7,TWD*C8D+AA]2GL:=BQ[%`N$&(F*"PD`.QH&
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-sound.gif' ||
- $echo 'restore of' 'anthony-sound.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-sound.gif:' 'MD5 check failed'
-5350a7f6218f61c8ec4c32a8564af8f2 anthony-sound.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-sound.gif'`"
- test 166 -eq "$shar_count" ||
- $echo 'anthony-sound.gif:' 'original size' '166,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-tar.gif ==============
-if test -f 'anthony-tar.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-tar.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-tar.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-tar.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-A&+J\])`$0:N=(;YI!0`4ET739WYA-6[>B0I<",75"P1W
-MSG:6^[&^SF`X``"#%J)14@.]A,L2$GH\\2C%W9679?I`W&C+=>W&4,^D^%M>
-5.]-J[3;.G%,E`:)^/\1%OH!+"0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-tar.gif' ||
- $echo 'restore of' 'anthony-tar.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-tar.gif:' 'MD5 check failed'
-516061955993427e3aa1929d5c9175c6 anthony-tar.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-tar.gif'`"
- test 156 -eq "$shar_count" ||
- $echo 'anthony-tar.gif:' 'original size' '156,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-tex.gif ==============
-if test -f 'anthony-tex.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-tex.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-tex.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-tex.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-I&+J\])`$0:N=(;YI*0`"ET739YIA-6[">:8JQ'5?&P#W
-MS0[F8+D?EJLC&!AYPI:2>`0D440*4E+Y^*)%)Q7+U)9PE!NH,_T"NZSJ.%IN
-=`=>5]D=4(WNYZ"T^?M_S-P%'@H-&.A!OB%H)`#O+
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-tex.gif' ||
- $echo 'restore of' 'anthony-tex.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-tex.gif:' 'MD5 check failed'
-9e2cc5c42025c323b03c3074daef5e31 anthony-tex.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-tex.gif'`"
- test 164 -eq "$shar_count" ||
- $echo 'anthony-tex.gif:' 'original size' '164,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-text.gif ==============
-if test -f 'anthony-text.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-text.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-text.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-text.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```->&+J\])`$0:N=(;YI.\\1UU4BN(W7!7%`ZU)`$,\G"KMN
-MC;?6X`^`FJWR"TINNQ<%*!P2C2R`=#I]-IT"YE%`[0*L6^P2VO%^QU>G5H2D
-2@MG8M?@=^-GO/EG$S#<F```[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-text.gif' ||
- $echo 'restore of' 'anthony-text.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-text.gif:' 'MD5 check failed'
-6115039fc538f0f7212ea17dd9adf34b anthony-text.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-text.gif'`"
- test 153 -eq "$shar_count" ||
- $echo 'anthony-text.gif:' 'original size' '153,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-unknown.gif ==============
-if test -f 'anthony-unknown.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-unknown.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-unknown.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-unknown.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-H&+J\])`$0:N=(;YI.\\1)PP#8)HBN%'E>8J"RK4N"@0W
-ML`KN,-:GG:O2(^DDG0H-0"KM+$L3ZPC[U7R_)P6(S2(MO8[S2SPEQ]4DE-H9
-<BME@\UO+DZ_I:B4\/Y<$FH"!)#@10(9!!`D`.P6(
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-unknown.gif' ||
- $echo 'restore of' 'anthony-unknown.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-unknown.gif:' 'MD5 check failed'
-f8ec9ff9f4eb30d34b29ac1b10a84aae anthony-unknown.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-unknown.gif'`"
- test 163 -eq "$shar_count" ||
- $echo 'anthony-unknown.gif:' 'original size' '163,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-xbm.gif ==============
-if test -f 'anthony-xbm.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-xbm.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-xbm.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-xbm.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-?&+J\])`$0:N=(;YI.\\1UU4BN(W7!8D48`$!+)\58-=V
-M#M""[E:#X&`G:?E^%"%Q<LQUACS4<XER6J#%CN]*?1V!7=PV&3:.!5B6^0:.
-3BJ=N*3DN3P>$^'PP%FGZB0D`.SS4
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-xbm.gif' ||
- $echo 'restore of' 'anthony-xbm.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-xbm.gif:' 'MD5 check failed'
-9f2ec7af479158b89912fc67c7886770 anthony-xbm.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-xbm.gif'`"
- test 154 -eq "$shar_count" ||
- $echo 'anthony-xbm.gif:' 'original size' '154,' 'current size' "$shar_count!"
- fi
-fi
-# ============= anthony-xpm.gif ==============
-if test -f 'anthony-xpm.gif' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'anthony-xpm.gif' '(file already exists)'
-else
- $echo 'x -' extracting 'anthony-xpm.gif' '(binary)'
- sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-xpm.gif
-M1TE&.#EA%``6`,(``````"]/3_\``/___W"`D+^_OP``_P```"'Y!`$```4`
-M+``````4`!8```-M&+J\];"$0:N=(;YI.\\1UU4BN(W7!8D48`$!+)\5(+@M
-MH._T8`LW"V%(`-!^P&"%:)3X=E#<LLE"":FH7:?8JQF^T@'7^?J:I>,JP`R>
-A=GUL`QK;6;?=Y+IN2[?RWWYB5`%$A89#,1%1BU$/"0`[
-`
-end
-SHAR_EOF
- chmod 0440 'anthony-xpm.gif' ||
- $echo 'restore of' 'anthony-xpm.gif' 'failed'
- if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
- && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
- md5sum -c << SHAR_EOF >/dev/null 2>&1 \
- || $echo 'anthony-xpm.gif:' 'MD5 check failed'
-8d2724de7e9e46198a9dd3e805b18a02 anthony-xpm.gif
-SHAR_EOF
- else
- shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-xpm.gif'`"
- test 168 -eq "$shar_count" ||
- $echo 'anthony-xpm.gif:' 'original size' '168,' 'current size' "$shar_count!"
- fi
-fi
-rm -fr _sh03044
-exit 0
/// \ingroup POD
template <class C>
-class List
+class CbDataList
{
public:
void *operator new (size_t);
void operator delete (void *);
- List (C const &);
- ~List();
+ CbDataList (C const &);
+ ~CbDataList();
bool find(C const &)const;
bool findAndTune(C const &);
- List *next;
+ CbDataList *next;
C element;
bool empty() const { return this == NULL; }
private:
- CBDATA_CLASS(List);
+ CBDATA_CLASS(CbDataList);
};
/// \ingroup POD
template<class C>
-class ListContainer
+class CbDataListContainer
{
public:
- ListContainer();
- ~ListContainer();
- List<C> *push_back (C const &);
+ CbDataListContainer();
+ ~CbDataListContainer();
+ CbDataList<C> *push_back (C const &);
C pop_front();
bool empty() const;
- List<C> *head;
+ CbDataList<C> *head;
};
/// \ingroup POD
template<class C>
-class ListIterator
+class CbDataListIterator
{
public:
- ListIterator(ListContainer<C> const &list) : next_entry(list.head) {}
+ CbDataListIterator(CbDataListContainer<C> const &list) : next_entry(list.head) {}
const C & next() {
- List<C> *entry = next_entry;
+ CbDataList<C> *entry = next_entry;
if (entry)
next_entry = entry->next;
return entry->element;
}
private:
- List<C> *next_entry;
+ CbDataList<C> *next_entry;
};
/* implementation follows */
/** \cond AUTODOCS-IGNORE */
template <class C>
-cbdata_type List<C>::CBDATA_List = CBDATA_UNKNOWN;
+cbdata_type CbDataList<C>::CBDATA_CbDataList = CBDATA_UNKNOWN;
/** \endcond */
template <class C>
void *
-List<C>::operator new (size_t byteCount)
+CbDataList<C>::operator new (size_t byteCount)
{
- CBDATA_INIT_TYPE(List);
+ CBDATA_INIT_TYPE(CbDataList);
- List<C> *result = cbdataAlloc(List);
+ CbDataList<C> *result = cbdataAlloc(CbDataList);
return result;
}
template <class C>
void
-List<C>::operator delete (void *address)
+CbDataList<C>::operator delete (void *address)
{
cbdataFree(address);
}
template <class C>
-List<C>::List(C const &value) : next(NULL), element (value)
+CbDataList<C>::CbDataList(C const &value) : next(NULL), element (value)
{}
template <class C>
-List<C>::~List()
+CbDataList<C>::~CbDataList()
{
if (next)
delete next;
template <class C>
bool
-List<C>::find (C const &toFind) const
+CbDataList<C>::find (C const &toFind) const
{
- List<C> const *node = NULL;
+ CbDataList<C> const *node = NULL;
for (node = this; node; node = node->next)
if (node->element == toFind)
template <class C>
bool
-List<C>::findAndTune(C const & toFind)
+CbDataList<C>::findAndTune(C const & toFind)
{
- List<C> *prev = NULL;
+ CbDataList<C> *prev = NULL;
- for (List<C> *node = this; node; node = node->
+ for (CbDataList<C> *node = this; node; node = node->
next) {
if (node->element == toFind) {
if (prev != NULL) {
}
template <class C>
-ListContainer<C>::ListContainer() : head (NULL)
+CbDataListContainer<C>::CbDataListContainer() : head (NULL)
{}
template <class C>
-ListContainer<C>::~ListContainer()
+CbDataListContainer<C>::~CbDataListContainer()
{
if (head)
delete head;
}
template <class C>
-List<C> *
-ListContainer<C>::push_back (C const &element)
+CbDataList<C> *
+CbDataListContainer<C>::push_back (C const &element)
{
- List<C> *node = new List<C> (element);
+ CbDataList<C> *node = new CbDataList<C> (element);
if (head) {
- List<C> *tempNode = NULL;
+ CbDataList<C> *tempNode = NULL;
for (tempNode = head; tempNode->next; tempNode = tempNode->next);
tempNode->next = node;
template <class C>
C
-ListContainer<C>::pop_front()
+CbDataListContainer<C>::pop_front()
{
if (head) {
C result = head->element;
- List<C> *node = head;
+ CbDataList<C> *node = head;
head = head->next;
node->next = NULL;
delete node;
template <class C>
bool
-ListContainer<C>::empty() const
+CbDataListContainer<C>::empty() const
{
return head == NULL;
}
* This OS has at least one version that defines these as private
* kernel macros commented as being 'non-standard'.
* We need to use them, much nicer than the OS-provided __u*_*[]
+ * UPDATE: OpenBSD 4.3 has the same.
*/
-#if USE_IPV6 && defined(_SQUID_FREEBSD_)
+#if USE_IPV6 && ( defined(_SQUID_FREEBSD_) || defined(_SQUID_OPENBSD_) )
#define s6_addr8 __u6_addr.__u6_addr8
#define s6_addr16 __u6_addr.__u6_addr16
#define s6_addr32 __u6_addr.__u6_addr32
#endif
+/* OpenBSD also hide v6only socket option we need for comm layer. :-( */
+#if !defined(IPV6_V6ONLY) && defined(_SQUID_OPENBSD_)
+#define IPV6_V6ONLY 27 // from OpenBSD 4.3 headers. (NP: does not match non-BSD OS values)
+#endif
+
+
/// Length of buffer that needs to be allocated to old a null-terminated IP-string
// Yuck. But there are still structures that need it to be an 'integer constant'.
#define MAX_IPSTRLEN 75
* Valid results IF and only IF the stored IP address is actually a network bitmask
\retval N number of bits which are set in the bitmask stored.
*/
- int GetCIDR();
+ int GetCIDR() const;
/** Apply a mask to the stored address.
\param mask Netmask format to be bit-mask-AND'd over the stored address.
#elif defined(__OpenBSD__)
#define _SQUID_OPENBSD_
+#elif defined(__DragonFly__)
+#define _SQUID_DRAGONFLY_
+
#elif defined(__CYGWIN32__) || defined(__CYGWIN__)
#define _SQUID_CYGWIN_
#define _SQUID_WIN32_
/*
* Don't allow inclusion of malloc.h on FreeBSD, Next and OpenBSD
*/
-#if defined(HAVE_MALLOC_H) && (defined(_SQUID_FREEBSD_) || defined(_SQUID_NEXT_) || defined(_SQUID_OPENBSD_))
+#if defined(HAVE_MALLOC_H) && (defined(_SQUID_FREEBSD_) || defined(_SQUID_NEXT_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_))
#undef HAVE_MALLOC_H
#endif
SQUIDCEXTERN void xprof_start(xprof_type type, const char *timer);
SQUIDCEXTERN void xprof_stop(xprof_type type, const char *timer);
SQUIDCEXTERN void xprof_event(void *data);
-#if __cplusplus
-extern void xprofRegisterWithCacheManager(CacheManager & manager);
-#endif
#define PROF_start(type) xprof_start(XPROF_##type, #type)
#define PROF_stop(type) xprof_stop(XPROF_##type, #type)
#include "default_config_file.h"
/* Some tricks for MS Compilers */
#define __STDC__ 1
-#pragma include_alias(<dirent.h>, <direct.h>)
#define THREADLOCAL __declspec(thread)
#elif defined(__GNUC__) /* gcc environment */
#include <ws2spi.h>
#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
#pragma warning (pop)
-#include "readdir.h"
-#else
+#endif
#include <io.h>
#include <stdlib.h>
-#include <sys/types.h>
-#endif
typedef char * caddr_t;
#undef FD_CLR
#define FD_CLR(fd, set) do { \
u_int __i; \
- SOCKET __sock = fd_table[fd].win32.handle; \
+ SOCKET __sock = _get_osfhandle(fd); \
for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
if (((fd_set FAR *)(set))->fd_array[__i] == __sock) { \
while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
#undef FD_SET
#define FD_SET(fd, set) do { \
u_int __i; \
- SOCKET __sock = fd_table[fd].win32.handle; \
+ SOCKET __sock = _get_osfhandle(fd); \
for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
if (((fd_set FAR *)(set))->fd_array[__i] == (__sock)) { \
break; \
*/
#define _SQUID_EXTERNNEW_ extern
#else
+#ifdef __GNUC_STDC_INLINE__
+#define _SQUID_EXTERNNEW_ extern inline __attribute__((gnu_inline))
+#else
#define _SQUID_EXTERNNEW_ extern inline
#endif
#endif
+#endif
#include "SquidNew.h"
#endif
SQUIDCEXTERN char *rfc1738_escape_part(const char *);
SQUIDCEXTERN void rfc1738_unescape(char *);
+/* charset.c */
+SQUIDCEXTERN char *latin1_to_utf8(char *out, size_t size, const char *in);
+
/* html.c */
SQUIDCEXTERN char *html_quote(const char *);
#ifndef SQUID_RELEASE_TIME
#define SQUID_RELEASE_TIME squid_curtime
#endif
+
+#ifndef APP_SHORTNAME
+#define APP_SHORTNAME "squid"
+#endif
+#ifndef APP_FULLNAME
+#define APP_FULLNAME PACKAGE "/" VERSION
+#endif
}
int
-IPAddress::GetCIDR()
+IPAddress::GetCIDR() const
{
uint8_t shift,byte;
uint8_t bit,caught;
int len = 0;
#if USE_IPV6
- uint8_t *ptr= m_SocketAddr.sin6_addr.s6_addr;
+ const uint8_t *ptr= m_SocketAddr.sin6_addr.s6_addr;
#else
- uint8_t *ptr= (uint8_t *)&m_SocketAddr.sin_addr.s_addr;
+ const uint8_t *ptr= (uint8_t *)&m_SocketAddr.sin_addr.s_addr;
#endif
/* Let's scan all the bits from Most Significant to Least */
libntlmauth.a \
$(LIBSSPWIN32) \
@LIBREGEX@
+#
+# dirent.c, encrypt.c and getopt.c are needed for native Windows support.
+#
EXTRA_libmiscutil_a_SOURCES = \
+ dirent.c \
+ encrypt.c \
+ getopt.c \
md5.c \
Profiler.c \
strsep.c \
libmiscutil_a_SOURCES = \
MemPool.cc \
base64.c \
+ charset.c \
getfullhostname.c \
hash.c \
heap.c \
--- /dev/null
+/*
+ * $Id: charset.c,v 1.1 2008/07/07 11:04:47 hno Exp $
+ *
+ * DEBUG:
+ * AUTHOR: Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * Copyright (C) 2008 Henrik Nordstrom
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "config.h"
+#include "util.h"
+
+/* Convert ISO-LATIN-1 to UTF-8
+ */
+char *
+latin1_to_utf8(char *out, size_t size, const char *in)
+{
+ unsigned char *p;
+ for (p = (unsigned char *)out; *in && size > 2; in++) {
+ unsigned char ch = (unsigned char)*in;
+ if (ch < 0x80) {
+ *p++ = ch;
+ size--;
+ } else {
+ *p++ = (ch >> 6) | 0xc0;
+ size--;
+ *p++ = (ch & 0x3f) | 0x80;
+ size--;
+ }
+ }
+ *p++ = '\0';
+ if (*in)
+ return NULL;
+ return out;
+}
+
+
--- /dev/null
+/*
+ * $Id$
+ *
+ * Implement dirent-style opendir(), readdir(), closedir(), rewinddir(),
+ * seekdir() and telldir on Windows - Based on mingw-runtime package sources.
+ * AUTHOR: Guido Serassio <serassio@squid-cache.org>
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ * Original file info follow:
+ *
+ * dirent.c
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Derived from DIRLIB.C by Matt J. Weinstein
+ * This note appears in the DIRLIB.H
+ * DIRLIB.H by M. J. Weinstein Released to public domain 1-Jan-89
+ *
+ * Updated by Jeremy Bettis <jeremy@hksys.com>
+ * Significantly revised and rewinddir, seekdir and telldir added by Colin
+ * Peters <colin@fu.is.saga-u.ac.jp>
+ *
+ */
+
+#include "util.h"
+
+/* The following code section is part of the native Windows Squid port */
+#if defined(_SQUID_MSWIN_)
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <io.h>
+#include <dirent.h>
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h> /* for GetFileAttributes */
+
+#define SUFFIX ("*")
+#define SLASH ("\\")
+
+
+/*
+ * opendir
+ *
+ * Returns a pointer to a DIR structure appropriately filled in to begin
+ * searching a directory.
+ */
+DIR *
+opendir(const CHAR * szPath)
+{
+ DIR *nd;
+ unsigned int rc;
+ CHAR szFullPath[MAX_PATH];
+
+ errno = 0;
+
+ if (!szPath) {
+ errno = EFAULT;
+ return (DIR *) 0;
+ }
+ if (szPath[0] == '\0') {
+ errno = ENOTDIR;
+ return (DIR *) 0;
+ }
+ /* Attempt to determine if the given path really is a directory. */
+ rc = GetFileAttributes(szPath);
+ if (rc == (unsigned int) -1) {
+ /* call GetLastError for more error info */
+ errno = ENOENT;
+ return (DIR *) 0;
+ }
+ if (!(rc & FILE_ATTRIBUTE_DIRECTORY)) {
+ /* Error, entry exists but not a directory. */
+ errno = ENOTDIR;
+ return (DIR *) 0;
+ }
+ /* Make an absolute pathname. */
+ _fullpath(szFullPath, szPath, MAX_PATH);
+
+ /* Allocate enough space to store DIR structure and the complete
+ * directory path given. */
+ nd = (DIR *) malloc(sizeof(DIR) + (strlen(szFullPath)
+ + strlen(SLASH)
+ + strlen(SUFFIX) + 1)
+ * sizeof(CHAR));
+
+ if (!nd) {
+ /* Error, out of memory. */
+ errno = ENOMEM;
+ return (DIR *) 0;
+ }
+ /* Create the search expression. */
+ strcpy(nd->dd_name, szFullPath);
+
+ /* Add on a slash if the path does not end with one. */
+ if (nd->dd_name[0] != '\0'
+ && strchr(nd->dd_name, '/') != nd->dd_name
+ + strlen(nd->dd_name) - 1
+ && strchr(nd->dd_name, '\\') != nd->dd_name
+ + strlen(nd->dd_name) - 1) {
+ strcat(nd->dd_name, SLASH);
+ }
+ /* Add on the search pattern */
+ strcat(nd->dd_name, SUFFIX);
+
+ /* Initialize handle to -1 so that a premature closedir doesn't try
+ * to call _findclose on it. */
+ nd->dd_handle = -1;
+
+ /* Initialize the status. */
+ nd->dd_stat = 0;
+
+ /* Initialize the dirent structure. ino and reclen are invalid under
+ * Win32, and name simply points at the appropriate part of the
+ * findfirst_t structure. */
+ nd->dd_dir.d_ino = 0;
+ nd->dd_dir.d_reclen = 0;
+ nd->dd_dir.d_namlen = 0;
+ memset(nd->dd_dir.d_name, 0, FILENAME_MAX);
+
+ return nd;
+}
+
+
+/*
+ * readdir
+ *
+ * Return a pointer to a dirent structure filled with the information on the
+ * next entry in the directory.
+ */
+struct dirent *
+readdir(DIR * dirp)
+{
+ errno = 0;
+
+ /* Check for valid DIR struct. */
+ if (!dirp) {
+ errno = EFAULT;
+ return (struct dirent *) 0;
+ }
+ if (dirp->dd_stat < 0) {
+ /* We have already returned all files in the directory
+ * (or the structure has an invalid dd_stat). */
+ return (struct dirent *) 0;
+ } else if (dirp->dd_stat == 0) {
+ /* We haven't started the search yet. */
+ /* Start the search */
+ dirp->dd_handle = _findfirst(dirp->dd_name, &(dirp->dd_dta));
+
+ if (dirp->dd_handle == -1) {
+ /* Whoops! Seems there are no files in that
+ * directory. */
+ dirp->dd_stat = -1;
+ } else {
+ dirp->dd_stat = 1;
+ }
+ } else {
+ /* Get the next search entry. */
+ if (_findnext(dirp->dd_handle, &(dirp->dd_dta))) {
+ /* We are off the end or otherwise error.
+ * _findnext sets errno to ENOENT if no more file
+ * Undo this. */
+ DWORD winerr = GetLastError();
+ if (winerr == ERROR_NO_MORE_FILES)
+ errno = 0;
+ _findclose(dirp->dd_handle);
+ dirp->dd_handle = -1;
+ dirp->dd_stat = -1;
+ } else {
+ /* Update the status to indicate the correct
+ * number. */
+ dirp->dd_stat++;
+ }
+ }
+
+ if (dirp->dd_stat > 0) {
+ /* Successfully got an entry. Everything about the file is
+ * already appropriately filled in except the length of the
+ * file name. */
+ dirp->dd_dir.d_namlen = strlen(dirp->dd_dta.name);
+ strcpy(dirp->dd_dir.d_name, dirp->dd_dta.name);
+ return &dirp->dd_dir;
+ }
+ return (struct dirent *) 0;
+}
+
+
+/*
+ * closedir
+ *
+ * Frees up resources allocated by opendir.
+ */
+int
+closedir(DIR * dirp)
+{
+ int rc;
+
+ errno = 0;
+ rc = 0;
+
+ if (!dirp) {
+ errno = EFAULT;
+ return -1;
+ }
+ if (dirp->dd_handle != -1) {
+ rc = _findclose(dirp->dd_handle);
+ }
+ /* Delete the dir structure. */
+ free(dirp);
+
+ return rc;
+}
+
+/*
+ * rewinddir
+ *
+ * Return to the beginning of the directory "stream". We simply call findclose
+ * and then reset things like an opendir.
+ */
+void
+rewinddir(DIR * dirp)
+{
+ errno = 0;
+
+ if (!dirp) {
+ errno = EFAULT;
+ return;
+ }
+ if (dirp->dd_handle != -1) {
+ _findclose(dirp->dd_handle);
+ }
+ dirp->dd_handle = -1;
+ dirp->dd_stat = 0;
+}
+
+/*
+ * telldir
+ *
+ * Returns the "position" in the "directory stream" which can be used with
+ * seekdir to go back to an old entry. We simply return the value in stat.
+ */
+long
+telldir(DIR * dirp)
+{
+ errno = 0;
+
+ if (!dirp) {
+ errno = EFAULT;
+ return -1;
+ }
+ return dirp->dd_stat;
+}
+
+/*
+ * seekdir
+ *
+ * Seek to an entry previously returned by telldir. We rewind the directory
+ * and call readdir repeatedly until either dd_stat is the position number
+ * or -1 (off the end). This is not perfect, in that the directory may
+ * have changed while we weren't looking. But that is probably the case with
+ * any such system.
+ */
+void
+seekdir(DIR * dirp, long lPos)
+{
+ errno = 0;
+
+ if (!dirp) {
+ errno = EFAULT;
+ return;
+ }
+ if (lPos < -1) {
+ /* Seeking to an invalid position. */
+ errno = EINVAL;
+ return;
+ } else if (lPos == -1) {
+ /* Seek past end. */
+ if (dirp->dd_handle != -1) {
+ _findclose(dirp->dd_handle);
+ }
+ dirp->dd_handle = -1;
+ dirp->dd_stat = -1;
+ } else {
+ /* Rewind and read forward to the appropriate index. */
+ rewinddir(dirp);
+
+ while ((dirp->dd_stat < lPos) && readdir(dirp));
+ }
+}
+#endif /* _SQUID_MSWIN_ */
--- /dev/null
+/* encrypt.c - providing 56 bit DES encryption
+ * Copyright (C) 1991 Jochen Obalek
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <time.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define BS 64
+#define BS2 32
+#define KS 48
+#define KS2 24
+#define IS 56
+#define IS2 28
+
+static char schluessel[16][KS];
+
+
+static char PC1[] =
+{
+ 56, 48, 40, 32, 24, 16, 8, 0,
+ 57, 49, 41, 33, 25, 17, 9, 1,
+ 58, 50, 42, 34, 26, 18, 10, 2,
+ 59, 51, 43, 35,
+ 62, 54, 46, 38, 30, 22, 14, 6,
+ 61, 53, 45, 37, 29, 21, 13, 5,
+ 60, 52, 44, 36, 28, 20, 12, 4,
+ 27, 19, 11, 3
+};
+
+
+static char PC2[] =
+{
+ 13, 16, 10, 23, 0, 4, 2, 27,
+ 14, 5, 20, 9, 22, 18, 11, 3,
+ 25, 7, 15, 6, 26, 19, 12, 1,
+ 40, 51, 30, 36, 46, 54, 29, 39,
+ 50, 44, 32, 47, 43, 48, 38, 55,
+ 33, 52, 45, 41, 49, 35, 28, 31
+};
+
+
+static char IP[] =
+{
+ 57, 49, 41, 33, 25, 17, 9, 1,
+ 59, 51, 43, 35, 27, 19, 11, 3,
+ 61, 53, 45, 37, 29, 21, 13, 5,
+ 63, 55, 47, 39, 31, 23, 15, 7,
+ 56, 48, 40, 32, 24, 16, 8, 0,
+ 58, 50, 42, 34, 26, 18, 10, 2,
+ 60, 52, 44, 36, 28, 20, 12, 4,
+ 62, 54, 46, 38, 30, 22, 14, 6
+};
+
+
+static char EP[] =
+{
+ 7, 39, 15, 47, 23, 55, 31, 63,
+ 6, 38, 14, 46, 22, 54, 30, 62,
+ 5, 37, 13, 45, 21, 53, 29, 61,
+ 4, 36, 12, 44, 20, 52, 28, 60,
+ 3, 35, 11, 43, 19, 51, 27, 59,
+ 2, 34, 10, 42, 18, 50, 26, 58,
+ 1, 33, 9, 41, 17, 49, 25, 57,
+ 0, 32, 8, 40, 16, 48, 24, 56
+};
+
+
+static char E0[] =
+{
+ 31, 0, 1, 2, 3, 4, 3, 4,
+ 5, 6, 7, 8, 7, 8, 9, 10,
+ 11, 12, 11, 12, 13, 14, 15, 16,
+ 15, 16, 17, 18, 19, 20, 19, 20,
+ 21, 22, 23, 24, 23, 24, 25, 26,
+ 27, 28, 27, 28, 29, 30, 31, 0
+};
+
+
+static char E[KS];
+
+
+static char PERM[] =
+{
+ 15, 6, 19, 20, 28, 11, 27, 16,
+ 0, 14, 22, 25, 4, 17, 30, 9,
+ 1, 7, 23, 13, 31, 26, 2, 8,
+ 18, 12, 29, 5, 21, 10, 3, 24
+};
+
+
+static char S_BOX[][64] =
+{
+ {
+ 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,
+ 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,
+ 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,
+ 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13
+ },
+ {
+ 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,
+ 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,
+ 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,
+ 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9
+ },
+ {
+ 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,
+ 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,
+ 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,
+ 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12
+ },
+ {
+ 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,
+ 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,
+ 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,
+ 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14
+ },
+ {
+ 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,
+ 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,
+ 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,
+ 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3
+ },
+ {
+ 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,
+ 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,
+ 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,
+ 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13
+ },
+ {
+ 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,
+ 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,
+ 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,
+ 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12
+ },
+ {
+ 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,
+ 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,
+ 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,
+ 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11
+ }
+};
+
+static void
+perm(a, e, pc, n)
+ register char *a, *e;
+ register char *pc;
+ int n;
+{
+ for (; n--; pc++, a++)
+ *a = e[*pc];
+}
+
+static void
+crypt_main(nachr_l, nachr_r, schl)
+ register char *nachr_l, *nachr_r;
+ register char *schl;
+{
+ char tmp[KS];
+ register int sbval;
+ register char *tp = tmp;
+ register char *e = E;
+ register int i, j;
+
+ for (i = 0; i < 8; i++) {
+ for (j = 0, sbval = 0; j < 6; j++)
+ sbval = (sbval << 1) | (nachr_r[*e++] ^ *schl++);
+ sbval = S_BOX[i][sbval];
+ for (tp += 4, j = 4; j--; sbval >>= 1)
+ *--tp = sbval & 1;
+ tp += 4;
+ }
+
+ e = PERM;
+ for (i = 0; i < BS2; i++)
+ *nachr_l++ ^= tmp[*e++];
+}
+
+void
+encrypt(char *nachr, int decr)
+{
+ char (*schl)[KS] = decr ? schluessel + 15 : schluessel;
+ char tmp[BS];
+ int i;
+
+ perm(tmp, nachr, IP, BS);
+
+ for (i = 8; i--;) {
+ crypt_main(tmp, tmp + BS2, *schl);
+ if (decr)
+ schl--;
+ else
+ schl++;
+ crypt_main(tmp + BS2, tmp, *schl);
+ if (decr)
+ schl--;
+ else
+ schl++;
+ }
+
+ perm(nachr, tmp, EP, BS);
+}
+
+void
+setkey(char *schl)
+{
+ char tmp1[IS];
+ register unsigned int ls = 0x7efc;
+ register int i, j, k;
+ register int shval = 0;
+ register char *akt_schl;
+
+ memcpy(E, E0, KS);
+ perm(tmp1, schl, PC1, IS);
+
+ for (i = 0; i < 16; i++) {
+ shval += 1 + (ls & 1);
+ akt_schl = schluessel[i];
+ for (j = 0; j < KS; j++) {
+ if ((k = PC2[j]) >= IS2) {
+ if ((k += shval) >= IS)
+ k = (k - IS2) % IS2 + IS2;
+ } else if ((k += shval) >= IS2)
+ k %= IS2;
+ *akt_schl++ = tmp1[k];
+ }
+ ls >>= 1;
+ }
+}
+
+char *
+crypt(const char *wort, const char *salt)
+{
+ static char retkey[14];
+ char key[BS + 2];
+ char *k;
+ int tmp, keybyte;
+ int i, j;
+
+ memset(key, 0, BS + 2);
+
+ for (k = key, i = 0; i < BS; i++) {
+ if (!(keybyte = *wort++))
+ break;
+ k += 7;
+ for (j = 0; j < 7; j++, i++) {
+ *--k = keybyte & 1;
+ keybyte >>= 1;
+ }
+ k += 8;
+ }
+
+ setkey(key);
+ memset(key, 0, BS + 2);
+
+ for (k = E, i = 0; i < 2; i++) {
+ retkey[i] = keybyte = *salt++;
+ if (keybyte > 'Z')
+ keybyte -= 'a' - 'Z' - 1;
+ if (keybyte > '9')
+ keybyte -= 'A' - '9' - 1;
+ keybyte -= '.';
+
+ for (j = 0; j < 6; j++, keybyte >>= 1, k++) {
+ if (!(keybyte & 1))
+ continue;
+ tmp = *k;
+ *k = k[24];
+ k[24] = tmp;
+ }
+ }
+
+ for (i = 0; i < 25; i++)
+ encrypt(key, 0);
+
+ for (k = key, i = 0; i < 11; i++) {
+ for (j = keybyte = 0; j < 6; j++) {
+ keybyte <<= 1;
+ keybyte |= *k++;
+ }
+
+ keybyte += '.';
+ if (keybyte > '9')
+ keybyte += 'A' - '9' - 1;
+ if (keybyte > 'Z')
+ keybyte += 'a' - 'Z' - 1;
+ retkey[i + 2] = keybyte;
+ }
+
+ retkey[i + 2] = 0;
+
+ if (!retkey[1])
+ retkey[1] = *retkey;
+
+ return retkey;
+}
#endif
#include "getaddrinfo.h"
+#include "inet_pton.h"
static struct addrinfo *
dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen)
return (*res == NULL) ? EAI_MEMORY : 0;
}
- /* If AI_NUMERIC is specified, use inet_addr to translate numbers and
+ /* If AI_NUMERIC is specified, use xinet_pton to translate numbers and
dots notation. */
if (hints->ai_flags & AI_NUMERICHOST)
{
sin.sin_family = result.ai_family;
sin.sin_port = htons (port);
+ if (xinet_pton(result.ai_family, nodename, &sin.sin_addr))
+ return EAI_NONAME;
sin.sin_addr.s_addr = inet_addr (nodename);
/* Duplicate result and addr and return */
*res = dup_addrinfo (&result, &sin, sizeof sin);
--- /dev/null
+/*
+ * Copyright (c) 1987, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95";
+#endif /* LIBC_SCCS and not lint */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int opterr = 1, /* if error message should be printed */
+ optind = 1, /* index into parent argv vector */
+ optopt, /* character checked for validity */
+ optreset; /* reset getopt */
+char *optarg; /* argument associated with option */
+
+#define BADCH (int)'?'
+#define BADARG (int)':'
+#define EMSG ""
+
+/*
+ * getopt --
+ * Parse argc/argv argument vector.
+ */
+int
+getopt(nargc, nargv, ostr)
+ int nargc;
+ char *const *nargv;
+ const char *ostr;
+{
+ static char *place = EMSG; /* option letter processing */
+ char *oli; /* option letter list index */
+
+ if (optreset || !*place) { /* update scanning pointer */
+ optreset = 0;
+ if (optind >= nargc || *(place = nargv[optind]) != '-') {
+ place = EMSG;
+ return (-1);
+ }
+ if (place[1] && *++place == '-') { /* found "--" */
+ ++optind;
+ place = EMSG;
+ return (-1);
+ }
+ } /* option letter okay? */
+ if ((optopt = (int) *place++) == (int) ':' ||
+ !(oli = strchr(ostr, optopt))) {
+ /*
+ * if the user didn't specify '-' as an option,
+ * assume it means -1.
+ */
+ if (optopt == (int) '-')
+ return (-1);
+ if (!*place)
+ ++optind;
+ if (opterr && *ostr != ':')
+ (void) fprintf(stderr,
+ "%s: illegal option -- %c\n", __FILE__, optopt);
+ return (BADCH);
+ }
+ if (*++oli != ':') { /* don't need argument */
+ optarg = NULL;
+ if (!*place)
+ ++optind;
+ } else { /* need an argument */
+ if (*place) /* no white space */
+ optarg = place;
+ else if (nargc <= ++optind) { /* no arg */
+ place = EMSG;
+ if (*ostr == ':')
+ return (BADARG);
+ if (opterr)
+ (void) fprintf(stderr,
+ "%s: option requires an argument -- %c\n",
+ __FILE__, optopt);
+ return (BADCH);
+ } else /* white space */
+ optarg = nargv[optind];
+ place = EMSG;
+ ++optind;
+ }
+ return (optopt); /* dump back option letter */
+}
/* Initialize auth identity structure */
ZeroMemory(&ai, sizeof(ai));
- ai.Domain = szDomain;
+ ai.Domain = (void *)szDomain;
ai.DomainLength = lstrlen(szDomain);
- ai.User = szUser;
+ ai.User = (void *)szUser;
ai.UserLength = lstrlen(szUser);
- ai.Password = szPassword;
+ ai.Password = (void *)szPassword;
ai.PasswordLength = lstrlen(szPassword);
#if defined(UNICODE) || defined(_UNICODE)
ai.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
-#include <stdexcept>
+#include "config.h"
+#include <stdexcept>
+#include <cstring>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <string>
-#include "config.h"
#include "testIPAddress.h"
#include "IPAddress.h"
void
default_failure_notify(const char *message)
{
- write(2, message, strlen(message));
- write(2, "\n", 1);
+ if(write(2, message, strlen(message))) {}
+ if(write(2, "\n", 1)) {}
abort();
}
# Nightly cron job to generate snapshot releases
top=$PWD
versions=/server/httpd/htdocs/squid-cache.org/Versions/
-TMPDIR=/tmp/hno.cron
+TMPDIR=/tmp/$LOGNAME.cron
export TMPDIR
if [ -d $TMPDIR ]; then
chmod -R +w $TMPDIR
*-cfgman.tar.gz)
type=-cfgman.tar.gz
;;
+ *-langpack.tar.gz)
+ type=-langpack.tar.gz
+ ;;
*)
type=`echo $file | sed -e 's/.*\.tar\.gz/.tar.gz/' -e 's/.*\.tar\.bz2/.tar.bz2/' -e 's/.*\.patch/.patch/' -e 's/.*\.diff/.diff/' -e 's/.*-RELEASENOTES.html/-RELEASENOTES.html/' -e 's/^.*ChangeLog.txt$/-ChangeLog.txt/' -e 's/.*-cfgman/-cfgman/'`
esac
rm -f $dst/squid-$ver.snapshot$type
ln -s $file $dst/squid-$ver.snapshot$type
rm -f $dst/squid-$ver.snapshot$type.md5
- ln -s $file $dst/squid-$ver.snapshot$type.md5
+ ln -s $file.md5 $dst/squid-$ver.snapshot$type.md5
# cleanup old snapshots
ls $dst/*-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$type | sed -e 's/.*-\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'$type'\)/\1/' | sort -r | tail +$save | while read f; do
../commit/bootstrap squid-2.7
make_snapshot ../commit/squid-2.7/mksnapshot.sh SQUID_2_7 v2 2.7 3
-../commit/bootstrap squid-2.6
-make_snapshot ../commit/squid-2.6/mksnapshot.sh SQUID_2_6 v2 2.6 3
+#../commit/bootstrap squid-2.6
+#make_snapshot ../commit/squid-2.6/mksnapshot.sh SQUID_2_6 v2 2.6 3
#../commit/bootstrap squid-2.5
#make_snapshot ../commit/squid-2.5/mksnapshot.sh SQUID_2_5 v2 2.5 3
gzip -f -9 ${PACKAGE}-${VERSION}-${date}-cfgman.html
echo ${PACKAGE}-${VERSION}-${date}-cfgman.html.gz >>${tag}.out
fi
+
+# Generate language-pack tarballs
+# NP: Only to be done on HEAD branch.
+if test "${VERSION}" = "3.HEAD" ; then
+ sh -c "cd $tmpdir/errors && tar -zcf ${PWD}/${PACKAGE}-${VERSION}-${date}-langpack.tar.gz ./*/*"
+ echo ${PACKAGE}-${VERSION}-${date}-langpack.tar.gz >>${tag}.out
+fi
--- /dev/null
+#!/usr/bin/perl
+#
+# Author: Tsantilas Christos
+# email: christos@chtsanti.net
+#
+# Distributed under the terms of the GNU General Public License as published
+# by the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# The ldap_manager library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See LICENSE or http://www.gnu.org/licenses/gpl.html for details .
+#
+
+
+use IPC::Open2;
+
+#
+# NP: The Squid code requires astyle version 1.22 or later
+#
+$ASTYLE_BIN="/usr/bin/astyle";
+
+#$ASTYLE_BIN="/usr/local/src/astyle-1.22/bin/astyle";
+$ASTYLE_ARGS ="--mode=c -s4 -O -l";
+
+#$ASTYLE_ARGS="--mode=c -s4 -O --break-blocks -l";
+#$ASTYLE_BIN="/usr/local/src/astyle-1.22/bin/astyle";
+
+
+if(! -e $ASTYLE_BIN){
+ print "\nFile $ASTYLE_BIN not found\n";
+ print "Please fix the ASTYLE_BIN variable in this script!\n\n";
+ exit -1;
+}
+$ASTYLE_BIN=$ASTYLE_BIN." ".$ASTYLE_ARGS;
+
+$INDENT = "";
+
+$out = shift @ARGV;
+#read options, currently no options available
+while($out eq "" || $out =~ /^-\w+$/){
+ if($out eq "-h") {
+ usage($0);
+ exit 0;
+ }
+ else {
+ usage($0);
+ exit -1;
+ }
+}
+
+
+while($out){
+
+ if( $out !~ /\.cc$|\.cci$|\.h$|\.c$/) {
+ print "Unknown suffix for file $out, ignoring....\n";
+ $out = shift @ARGV;
+ next;
+ }
+
+ $in= "$out.astylebak";
+ my($new_in) = $in;
+ my($i) = 0;
+ while(-e $new_in) {
+ $new_in=$in.".".$i;
+ $i++;
+ }
+ $in=$new_in;
+ rename($out, $in);
+
+ local (*FROM_ASTYLE, *TO_ASTYLE);
+ $pid_style=open2(\*FROM_ASTYLE, \*TO_ASTYLE, $ASTYLE_BIN);
+
+ if(!$pid_style){
+ print "An error while open2\n";
+ exit -1;
+ }
+
+
+ if($pid=fork()){
+ #do parrent staf
+ close(FROM_ASTYLE);
+
+ if(!open(IN, "<$in")){
+ print "Can not open input file: $in\n";
+ exit -1;
+ }
+ my($line) = '';
+ while(<IN>){
+ $line=$line.$_;
+ if(input_filter(\$line)==0){
+ next;
+ }
+ print TO_ASTYLE $line;
+ $line = '';
+ }
+ if($line){
+ print TO_ASTYLE $line;
+ }
+ close(TO_ASTYLE);
+ waitpid($pid,0);
+ }
+ else{
+ # child staf
+ close(TO_ASTYLE);
+
+ if(!open(OUT,">$out")){
+ print "Can't open output file: $out\n";
+ exit -1;
+ }
+ my($line)='';
+ while(<FROM_ASTYLE>){
+ $line = $line.$_;
+ if(output_filter(\$line)==0){
+ next;
+ }
+ print OUT $line;
+ $line = '';
+ }
+ if($line){
+ print OUT $line;
+ }
+ close(OUT);
+ exit 0;
+ }
+
+ $out = shift @ARGV;
+}
+
+
+sub input_filter{
+ my($line)=@_;
+ #if we have integer declaration, get it all before processing it..
+
+ if($$line =~/\s+int\s+.*/s || $$line=~ /\s+unsigned\s+.*/s ||
+ $$line =~/^int\s+.*/s || $$line=~ /^unsigned\s+.*/s
+ ){
+ if( $$line =~ /(\(|,|\)|\#|typedef)/s ){
+ #excluding int/unsigned appeared inside function prototypes,typedefs etc....
+ return 1;
+ }
+
+ if(index($$line,";") == -1){
+# print "Getting one more for \"".$$line."\"\n";
+ return 0;
+ }
+
+ if($$line =~ /(.*)\s*int\s+([^:]*):\s*(\w+)\s*\;(.*)/s){
+# print ">>>>> ".$$line." ($1)\n";
+ local($prx,$name,$val,$extra)=($1,$2,$3,$4);
+ $prx =~ s/\s*$//g;
+ $$line= $prx." int ".$name."__FORASTYLE__".$val.";".$extra;
+# print "----->".$$line."\n";
+ }
+ elsif($$line =~ /\s*unsigned\s+([^:]*):\s*(\w+)\s*\;(.*)/s){
+ local($name,$val,$extra)=($1,$2,$3);
+ $prx =~ s/\s*$//g;
+ $$line= "unsigned ".$name."__FORASTYLE__".$val.";".$extra;
+ }
+ return 1;
+ }
+
+ if($$line =~ /\#endif/ ||
+ $$line =~ /\#else/ ||
+ $$line =~ /\#if/
+ ){
+ $$line =$$line."//__ASTYLECOMMENT__\n";
+ return 1;
+ }
+
+ return 1;
+}
+
+sub output_filter{
+ my($line)=@_;
+
+ if($$line =~ /^\s*$/){
+ return 1;
+ }
+
+ if($$line =~ s/\s*\/\/__ASTYLECOMMENT__//) {
+ chomp($$line);
+ }
+
+ # "The "unsigned int:1; case ....."
+ $$line =~ s/__FORASTYLE__/:/;
+
+ return 1;
+}
+
+sub usage{
+ my($name)=@_;
+ print "Usage:\n $name file1 file2 file3 ....\n";
+}
--- /dev/null
+#!/bin/bash
+# A checker
+
+
+for FILENAME in $*; do
+
+ if test -e $FILENAME -a -e "$FILENAME.astylebak"; then
+ md51=`cat $FILENAME| tr -d "\n \t\r" | md5sum|sed 's/ -//'`;
+ md52=`cat $FILENAME.astylebak| tr -d "\n \t\r" | md5sum|sed 's/ -//'`;
+
+ if test $md51 != $md52; then
+ echo "File $FILENAME not converted well";
+ fi
+ else
+ echo "can not check file: $FILENAME";
+ fi
+
+done
+
+
+
+
+
return (NULL);
}
integer = *intp;
- mask = (u_int) 0xFF << (8 * (sizeof(int) - 1));
- /* mask is 0xFF000000 on a big-endian machine */
- if ((u_char) ((integer & mask) >> (8 * (sizeof(int) - 1))) & 0x80) {
- /* if MSB is set */
+ mask = (u_int) 0x80 << (8 * (sizeof(int) - 1));
+ /* mask is 0x80000000 on a big-endian machine */
+ if ((integer & mask) != 0) {
+ /* add a null byte if MSB is set, to prevent sign extension */
add_null_byte = 1;
intsize++;
}
* this 2's complement integer.
* There should be no sequence of 9 consecutive 1's or 0's at the
* most significant end of the integer.
+ * The 1's case is taken care of above by adding a null byte.
*/
mask = (u_int) 0x1FF << ((8 * (sizeof(int) - 1)) - 1);
/* mask is 0xFF800000 on a big-endian machine */
- while ((((integer & mask) == 0)
- || ((integer & mask) == mask)) && intsize > 1) {
+ while (((integer & mask) == 0) && intsize > 1) {
intsize--;
integer <<= 8;
}
return (NULL);
header_len = bufp - data;
- if (header_len + asn_length > *datalength) {
+ if (header_len + asn_length > *datalength || asn_length > (u_int)(2 << 18) ) {
snmp_set_api_error(SNMPERR_ASN_DECODE);
return (NULL);
}
USE_ARP_ACL \
USE_ASYNC_IO \
USE_CACHE_DIGESTS \
- USE_CARP \
USE_CLASSFUL \
USE_DLMALLOC \
USE_DNSSERVERS \
USE_WCCP \
USE_WCCPv2 \
USE_WIN32_SERVICE \
- USE_XPROF_STATS
+ USE_XPROF_STATS \
+ FOLLOW_X_FORWARDED_FOR
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
#endif
#include <net/route.h>
#include <net/if.h>
-#if defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_)
+#if defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_)
#include <net/if_arp.h>
#endif
#if HAVE_NETINET_IF_ETHER_H
return (0 == splayLastResult);
}
-#elif defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_)
+#elif defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_)
SplayNode<acl_arp_data *> **Top = dataptr;
#define SQUID_ACLASN_H
#include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
#include "ACLStrategised.h"
#include "ACLChecklist.h"
#include "IPAddress.h"
-/* forward decls */
-
-class CacheManager;
-
-SQUIDCEXTERN int asnMatchIp(List<int> *, IPAddress &);
+SQUIDCEXTERN int asnMatchIp(CbDataList<int> *, IPAddress &);
/// \ingroup ACLAPI
SQUIDCEXTERN void asnInit(void);
-/// \ingroup ACLAPI
-extern void asnRegisterWithCacheManager(CacheManager & manager);
-
/// \ingroup ACLAPI
SQUIDCEXTERN void asnFreeMemory(void);
static ACLStrategised<IPAddress> SourceRegistryEntry_;
static ACL::Prototype DestinationRegistryProtoype;
static ACLStrategised<IPAddress> DestinationRegistryEntry_;
- List<int> *data;
+ CbDataList<int> *data;
};
MEMPROXY_CLASS_INLINE(ACLASN) /**DOCS_NOSEMI*/
if (A)
checklist->accessList = cbdataReference(A);
- if (request != NULL) {
+ if (request != NULL)
+ {
checklist->request = HTTPMSGLOCK(request);
- checklist->src_addr = request->client_addr;
+#if FOLLOW_X_FORWARDED_FOR
+ if (Config.onoff.acl_uses_indirect_client)
+ checklist->src_addr = request->indirect_client_addr;
+ else
+#endif /* FOLLOW_X_FORWARDED_FOR */
+ checklist->src_addr = request->client_addr;
checklist->my_addr = request->my_addr;
}
fatal ("ACLIP::operator delete: unused");
}
+/**
+ * Writes an IP ACL data into a buffer, then copies the buffer into the wordlist given
+ *
+ \param ip ACL data structure to display
+ \param state wordlist structure which is being generated
+ */
void
ACLIP::DumpIpListWalkee(acl_ip_data * const & ip, void *state)
{
- char tmpbuf[MAX_IPSTRLEN];
+ char tmpbuf[ ((MAX_IPSTRLEN*2)+6) ]; // space for 2 IPs and a CIDR mask(3) and seperators(3).
MemBuf mb;
wordlist **W = static_cast<wordlist **>(state);
- mb.init();
- mb.Printf("%s", ip->addr1.NtoA(tmpbuf,MAX_IPSTRLEN));
+ tmpbuf[0] = '\0';
- if (!ip->addr2.IsAnyAddr())
- mb.Printf("-%s", ip->addr2.NtoA(tmpbuf,MAX_IPSTRLEN));
-
- if (!ip->mask.IsNoAddr())
- mb.Printf("/%s", ip->mask.NtoA(tmpbuf,MAX_IPSTRLEN));
+ mb.init();
+ assert(mb.max_capacity > 0 && 1==1 );
+ ip->toStr(tmpbuf, sizeof(tmpbuf) );
+ assert(mb.max_capacity > 0 && 2==2 );
+ mb.append(tmpbuf, strlen(tmpbuf) );
+ assert(mb.max_capacity > 0 && 3==3);
wordlistAdd(W, mb.buf);
-
mb.clean();
}
-/*
- * aclIpDataToStr - print/format an acl_ip_data structure for
- * debugging output.
+/**
+ * print/format an acl_ip_data structure for debugging output.
+ *
+ \param buf string buffer to write to
+ \param len size of the buffer available
*/
void
acl_ip_data::toStr(char *buf, int len) const
rlen = strlen(buf);
b2 = buf + rlen;
- if (!addr2.IsAnyAddr())
- {
+ if (!addr2.IsAnyAddr()) {
b2[0] = '-'; rlen++;
addr2.NtoA(&(b2[1]), len - rlen );
rlen = strlen(buf);
b3 = buf + rlen;
- if (!mask.IsNoAddr())
- {
+ if (!mask.IsNoAddr()) {
b3[0] = '/'; rlen++;
- mask.NtoA(&(b3[1]), len - rlen );
+#if USE_IPV6
+ snprintf(&(b3[1]), (len-rlen), "%u", mask.GetCIDR() - (addr1.IsIPv4()?96:0) );
+#else
+ snprintf(&(b3[1]), (len-rlen), "%u", mask.GetCIDR() );
+#endif
}
else
b3[0] = '\0';
#endif
/* Decode addr1 */
- if (!*addr1) {
+ if (!*addr1 || !(q->addr1 = addr1)) {
debugs(28, 0, "aclIpParseIpData: unknown first address in '" << t << "'");
delete q;
self_destruct();
return NULL;
}
- else q->addr1 = addr1;
/* Decode addr2 */
- if (*addr2 && !(q->addr2=addr2) ) {
+ if (!*addr2)
+ q->addr2.SetAnyAddr();
+ else if (!(q->addr2=addr2) ) {
debugs(28, 0, "aclIpParseIpData: unknown second address in '" << t << "'");
delete q;
self_destruct();
return NULL;
}
- else q->addr2 = addr2;
/* Decode mask (NULL or empty means a exact host mask) */
if (!DecodeMask(mask, q->mask, iptype)) {
#include "ACLRegexData.h"
#include "ACLUserData.h"
#include "client_side.h"
+#include "ident.h"
ACLIdent::~ACLIdent()
{
#include "Parsing.h"
/* explicit instantiation required for some systems */
-template cbdata_type List< Range<int> >::CBDATA_List;
+template cbdata_type CbDataList< Range<int> >::CBDATA_CbDataList;
void
ACLIntRange::parse()
ACLIntRange::match(int i)
{
RangeType const toFind (i, i+1);
- ListIterator<RangeType> iter(ranges);
+ CbDataListIterator<RangeType> iter(ranges);
while (!iter.end()) {
const RangeType & element = iter.next();
{
wordlist *W = NULL;
char buf[32];
- ListIterator<RangeType> iter(ranges);
+ CbDataListIterator<RangeType> iter(ranges);
while (!iter.end()) {
const RangeType & element = iter.next();
#define SQUID_ACLINTRANGE_H
#include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
#include "Range.h"
/// \ingroup ACLAPI
private:
typedef Range<int> RangeType;
- ListContainer <RangeType> ranges;
+ CbDataListContainer <RangeType> ranges;
};
#endif /* SQUID_ACLINTRANGE_H */
ti = match(checklist->auth_user_request, checklist->src_addr);
- checklist->auth_user_request = NULL;
+ AUTHUSERREQUESTUNLOCK(checklist->auth_user_request, "ACLChecklist via ACLMaxUserIP");
return ti;
}
/* explicit instantiation required for some systems */
/// \cond AUTODOCS-IGNORE
-template cbdata_type List<HttpRequestMethod>
-::CBDATA_List;
+template cbdata_type CbDataList<HttpRequestMethod>::CBDATA_CbDataList;
/// \endcond
wordlist *
ACLMethodData::dump()
{
wordlist *W = NULL;
- List<HttpRequestMethod> *data = values;
+ CbDataList<HttpRequestMethod> *data = values;
while (data != NULL) {
wordlistAdd(&W, RequestMethodStr(data->element));
void
ACLMethodData::parse()
{
- List<HttpRequestMethod> **Tail;
+ CbDataList<HttpRequestMethod> **Tail;
char *t = NULL;
for (Tail = &values; *Tail; Tail = &((*Tail)->next));
while ((t = strtokFile())) {
- List<HttpRequestMethod> *q = new List<HttpRequestMethod> (HttpRequestMethod(t, NULL));
+ CbDataList<HttpRequestMethod> *q = new CbDataList<HttpRequestMethod> (HttpRequestMethod(t, NULL));
*(Tail) = q;
Tail = &q->next;
}
#include "ACL.h"
#include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
/// \ingroup ACLAPI
class ACLMethodData : public ACLData<HttpRequestMethod>
bool empty() const;
virtual ACLData<HttpRequestMethod> *clone() const;
- List<HttpRequestMethod> *values;
+ CbDataList<HttpRequestMethod> *values;
};
MEMPROXY_CLASS_INLINE(ACLMethodData);
/* explicit instantiation required for some systems */
/// \cond AUTODOCS-IGNORE
-template cbdata_type List<protocol_t>::CBDATA_List;
+template cbdata_type CbDataList<protocol_t>::CBDATA_CbDataList;
/// \endcond
wordlist *
ACLProtocolData::dump()
{
wordlist *W = NULL;
- List<protocol_t> *data = values;
+ CbDataList<protocol_t> *data = values;
while (data != NULL) {
wordlistAdd(&W, ProtocolStr[data->element]);
void
ACLProtocolData::parse()
{
- List<protocol_t> **Tail;
+ CbDataList<protocol_t> **Tail;
char *t = NULL;
for (Tail = &values; *Tail; Tail = &((*Tail)->next));
while ((t = strtokFile())) {
- List<protocol_t> *q = new List<protocol_t> (urlParseProtocol(t));
+ CbDataList<protocol_t> *q = new CbDataList<protocol_t> (urlParseProtocol(t));
*(Tail) = q;
Tail = &q->next;
}
#define SQUID_ACLPROTOCOLDATA_H
#include "ACL.h"
#include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
class ACLProtocolData : public ACLData<protocol_t>
{
bool empty() const;
virtual ACLData<protocol_t> *clone() const;
- List<protocol_t> *values;
+ CbDataList<protocol_t> *values;
};
MEMPROXY_CLASS_INLINE(ACLProtocolData);
/* check to see if we have matched the user-acl before */
int result = cacheMatchAcl(&checklist->auth_user_request->user()->
proxy_match_cache, checklist);
- checklist->auth_user_request = NULL;
+ AUTHUSERREQUESTUNLOCK(checklist->auth_user_request, "ACLChecklist via ACLProxyAuth");
return result;
}
/* explicit instantiation required for some systems */
-template cbdata_type List<ssl_error_t>::CBDATA_List;
+template cbdata_type CbDataList<ssl_error_t>::CBDATA_CbDataList;
wordlist *
ACLSslErrorData::dump()
{
wordlist *W = NULL;
- List<ssl_error_t> *data = values;
+ CbDataList<ssl_error_t> *data = values;
while (data != NULL) {
wordlistAdd(&W, sslFindErrorString(data->element));
void
ACLSslErrorData::parse()
{
- List<ssl_error_t> **Tail;
+ CbDataList<ssl_error_t> **Tail;
char *t = NULL;
for (Tail = &values; *Tail; Tail = &((*Tail)->next));
while ((t = strtokFile())) {
- List<ssl_error_t> *q = new List<ssl_error_t>(sslParseErrorString(t));
+ CbDataList<ssl_error_t> *q = new CbDataList<ssl_error_t>(sslParseErrorString(t));
*(Tail) = q;
Tail = &q->next;
}
#define SQUID_ACLSSL_ERRORDATA_H
#include "ACL.h"
#include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
#include "ssl_support.h"
class ACLSslErrorData : public ACLData<ssl_error_t>
bool empty() const;
virtual ACLData<ssl_error_t> *clone() const;
- List<ssl_error_t> *values;
+ CbDataList<ssl_error_t> *values;
};
MEMPROXY_CLASS_INLINE(ACLSslErrorData);
#include "HttpRequestMethod.h"
/* forward decls */
-class CacheManager;
class HttpReply;
class HttpRequest;
public:
CacheDetails() : caddr(),
- size(0),
+ requestSize(0),
+ replySize(0),
highOffset(0),
objectSize(0),
code (LOG_TAG_NONE),
}
IPAddress caddr;
- int64_t size;
+ int64_t requestSize;
+ int64_t replySize;
int64_t highOffset;
int64_t objectSize;
log_type code;
extern void accessLogRotate(void);
extern void accessLogClose(void);
extern void accessLogInit(void);
-extern void accessLogRegisterWithCacheManager(CacheManager & manager);
extern void accessLogFreeMemory(AccessLogEntry * aLogEntry);
extern const char *accessLogTime(time_t);
extern int accessLogParseLogFormat(logformat_token ** fmt, char *def);
--- /dev/null
+/**
+\defgroup AsyncCalls Asynchronous Calls
+\ingroup Components
+
+
+\section Terminology Terminology
+
+- \b Call: an AsyncCall object meant to be delivered from the Caller to the
+ Recipient.
+- \b Recipient: the code being the destination of the Call. The specific
+ function receiving the call is often called "handler".
+- \b Caller: the code scheduling or placing the Call.
+- \b Creator: the code creating the Call.
+- \b Dialing: the final act of delivering the Call to the Recipient.
+- \b Canceling: preventing the call from being dialed in the future.
+- <b>Pending call</b>: the call which has been scheduled but no attempt to dial
+ it has been made.
+- <b>Live call</b>: the in-progress call that has been dialed and the Recipient
+ (receiving) function has not finished yet.
+
+
+\section Life Typical life cycle
+
+-# Creator creates a Call object and stores its pointer, possibly in a
+temporary variable. If Creator is the future Recipient of the Call, it
+is customary to talk about a "callback". In such context, Creator gives
+the Call pointer to some other code (the future Caller). Calls are
+refcounted and the AsyncCall::Pointer class must be used to point and
+share them.
+-# Time passes and something triggers the need to dial the call.
+-# Caller schedules (a.k.a, places) the Call. The Call is placed in the
+AsyncCallQueue. The queue preserves the scheduling call order.
+-# Time passes and it is now time to dial the call.
+-# AsyncCallQueue checks whether the call can be dialed. If yes,
+AsyncCallQueue dials the Call and the Recipient receives it. Otherwise,
+only a debugging message is logged (if enabled). Dialing a call involves
+several state checks at several stages, depending on the Call type.
+-# The Call is alive while the Recipient is handling it. That state ends
+when the Recipient code (a.k.a., handler) returns. At that point, the
+AsyncCallQueue proceeds to handle other calls.
+-# The Call object is destroyed when the last reference to it is gone.
+One should not try to invalidate or delete the call.
+
+
+\section Rules Basic rules
+
+- Callbacks must be called: If a Caller has a Call pointer as a
+callback, the Caller must make that Call when conditions are right
+(possibly with a call-specific error indicator). Whether that Call will
+be dialed is irrelevant here.
+
+- Unwanted calls must be canceled: If Recipient may not be able to
+handle the call back, then it must cancel it. Whether that Call will be
+scheduled is irrelevant here. If the Recipient has an AsyncCall pointer,
+calling AsyncCall::cancel is sufficient, but the code should use
+call-specific APIs when possible (e.g., comm_read_cancel or comm_close).
+
+- Processed calls should be forgotten: If you scheduled, received, or
+cancel the call, set its pointer to NULL. The Caller should forget the
+call after scheduling it. the recipient should forget the call when it
+receives or cancels it. These are just cleanup rules to avoid
+double-scheduling or double-cancellation as well as situations where the
+code assumes it can still change a pending Call (which will not work for
+SMP code).
+
+- The calls are received in the order they were scheduled.
+
+- The Recipient is guaranteed to receive at most one Call at a time. An
+attempt to dial call B while some call A is alive is a bug, and call B
+will not be dialed.
+
+
+\section Canceling Call Canceling
+
+- A call may be canceled at any time.
+
+- A canceled call will not be dialed.
+
+- Cancellation has immediate effect: The call will never be dialed
+after cancel() is called
+
+- Cancellation by non-Recipients is discouraged because it may not work
+in an SMP environment.
+
+- A late call cancellation is cancellation that is performed after the Call
+has already been dialed (i.e., the call is or was alive at the time of the
+cancellation). Late cancellation is a no-op. It is not a bug to cancel
+something late, but the canceling code should be aware of that possibility.
+
+
+*/
/* Default behaviour is to expose nothing */
void
-AuthConfig::registerWithCacheManager(CacheManager & manager)
+AuthConfig::registerWithCacheManager(void)
{}
class StoreEntry;
class HttpReply;
class HttpRequest;
-class CacheManager;
/* for http_hdr_type parameters-by-value */
#include "HttpHeader.h"
/** prepare to handle requests */
virtual void init(AuthConfig *) = 0;
/** expose any/all statistics to a CacheManager */
- virtual void registerWithCacheManager(CacheManager & manager);
+ virtual void registerWithCacheManager(void);
/** parse config options */
virtual void parse(AuthConfig *, int, char *) = 0;
/** the http string id */
-
/*
* $Id: AuthUser.cc,v 1.10 2007/12/14 23:11:45 amosjeffries Exp $
*
#define SQUID_CACHEMANAGER_H
#include "squid.h"
+#include "Array.h"
/**
\defgroup CacheManagerAPI Cache Manager API
\ingroup Components
- */
-
-/// \ingroup CacheManagerAPI
-extern void cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry);
-/**
+ \defgroup CacheManagerInternal Cache Manager intenal API (not for public use)
\ingroup CacheManagerAPI
- * A single menu item in the cache manager - an 'action'.
*/
-class CacheManagerAction
-{
-public:
- char *action;
- char *desc;
- OBJH *handler;
+/**
+ \ingroup CacheManagerInternal
+ * The basic action handler. Its virtual method run(StoreEntry *) is invoked
+ * to perform the actual action.
+ */
+class CacheManagerAction {
+public:
+ virtual void run(StoreEntry *sentry) = 0;
+ char *action;
+ char *desc;
+ struct
+ {
+ unsigned int pw_req:1;
+ unsigned int atomic:1;
+ } flags;
+ virtual ~CacheManagerAction();
+ CacheManagerAction(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic);
- struct
- {
- unsigned int pw_req:1;
- unsigned int atomic:1;
- } flags;
+};
- CacheManagerAction *next;
+/**
+ \ingroup CacheManagerInternal
+ * wrapper allowing c-style callbacks to be used. Arguments are supposed to
+ * managed by the caller.
+ * This object is generated by CacheManager::registerAction
+ */
+class CacheManagerActionLegacy : public CacheManagerAction {
+public:
+ OBJH *handler;
+ virtual void run (StoreEntry *sentry);
+ CacheManagerActionLegacy(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic, OBJH *aHandler);
};
* This is currently just an adapter to the global cachemgr* routines to
* provide looser coupling between modules, but once fully transitioned,
* an instance of this class will represent a single independent manager.
+ * TODO: update documentation to reflect the new singleton model.
*/
class CacheManager
{
public:
- CacheManager();
/* the holy trinity - assignment, copy cons, destructor */
/* unimplemented - prevents bugs from synthetic */
CacheManager & operator = (CacheManager &);
/* inline so that we dont need to link in cachemgr.cc at all in tests */
virtual ~CacheManager() {}
- virtual void registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic);
- virtual CacheManagerAction * findAction(char const * action);
+ void registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic);
+ void registerAction(CacheManagerAction *anAction);
+ CacheManagerAction * findAction(char const * action);
+
+ void Start(int fd, HttpRequest * request, StoreEntry * entry);
+
+ static CacheManager* GetInstance();
+ const char *ActionProtection(const CacheManagerAction * at);
+
+protected:
+ // command classes. They are private to the cachemanager, they
+ // may require access to local data, plus we avoid polluting
+ // the namespace more than needed.
+ class ShutdownAction : public CacheManagerAction {
+ public:
+ virtual void run (StoreEntry *sentry);
+ ShutdownAction();
+ };
+ class ReconfigureAction : public CacheManagerAction {
+ public:
+ virtual void run (StoreEntry *sentry);
+ ReconfigureAction();
+ };
+ class OfflineToggleAction : public CacheManagerAction {
+ public:
+ virtual void run (StoreEntry *sentry);
+ OfflineToggleAction();
+ };
+ class MenuAction : public CacheManagerAction {
+ private:
+ //needs to reference the cachemgr in order to get to ActionsList
+ CacheManager *cmgr;
+ public:
+ virtual void run (StoreEntry *sentry);
+ MenuAction(CacheManager *);
+
+ };
+
+ /// \ingroup CacheManagerInternal
+ typedef struct
+ {
+ StoreEntry *entry;
+ char *action;
+ char *user_name;
+ char *passwd;
+ } cachemgrStateData;
+
+
+ CacheManager();
+ cachemgrStateData* ParseUrl(const char *url);
+ void ParseHeaders(cachemgrStateData * mgr, const HttpRequest * request);
+ int CheckPassword(cachemgrStateData * mgr);
+ char *PasswdGet(cachemgr_passwd *, const char *);
+
+ // \ingroup CacheManagerInternal
+ typedef Vector<CacheManagerAction *> CacheManagerActionList;
+ CacheManagerActionList ActionsList;
+
+
+private:
+ static CacheManager* instance;
+
+ void StateFree(cachemgrStateData * mgr);
+
+
};
#endif /* SQUID_CACHEMANAGER_H */
--- /dev/null
+/**
+\defgroup Comm Comm Module
+\ingroup Components
+
+
+\section Basic Basic Comm API principles
+
+ \par
+ Comm API supports four major kinds of socket-related operations:
+ accept, connect, read, and write. Sockets are identified by their
+ descriptors.
+
+ \par
+ A Comm user requests its interest in operations by calling an
+ appropriate API function (e.g., comm_read()) and optionally providing
+ a notification "callback" (a.k.a., handler). For a given descriptor,
+ there can be no more than one registered user per operation.
+
+ \par
+ In addition to the four operations listed above, a user can register
+ to be notified when a given descriptor is closed.
+
+ \par
+ When a Comm operation completes, all users that registered the
+ corresponding handler are notified. When a descriptor is closed, all
+ users that registered any callback for the descriptor are notified
+ (this will change though, see "Anticipated changes" below).
+
+ \par
+ All Comm notifications are asynchronous, performed using the
+ AsyncCall API.
+
+ \par
+ Notifications for four operations listed above are scheduled in the
+ order of the corresponding operations completion. User code can assume
+ that the operation has completed (possibly with an error) only after
+ receiving a notification. Until then, I/O resources such as buffers
+ must remain available for the operation.
+
+ \par
+ Notifications related to closing of a descriptor are documented
+ separately.
+
+
+\section IO-cancel I/O cancellation
+
+ \par
+ To cancel an interest in a read operation, call comm_read_cancel()
+ with an AsyncCall object. This call guarantees that the passed Call
+ will be canceled (see the AsyncCall API for call cancellation
+ definitions and details). Naturally, the code has to store the
+ original read callback Call pointer to use this interface.
+
+ \par
+ The comm_read_cancel() call does not guarantee that the read operation
+ has not already happen.
+
+ \par
+ The comm_read_cancel() call guarantees that the read operation will not
+ start for read operations that are performed by Comm (i.e., where read
+ start is controlled by Comm). There is no such guarantee for
+ asynchronous read operations scheduled by Comm but started by the
+ operating system or other threads.
+
+ \par
+ The above applies to comm_read_cancel() interface with an AsyncCall
+ object as a parameter. You cannot reliably cancel an interest in read
+ operation using the old comm_read_cancel() call that uses a function
+ pointer. The handler may get even called after old comm_read_cancel()
+ was called.
+
+ \par
+ It is OK to call comm_read_cancel (both flavors) at any time as long
+ as the descriptor has not been closed and there is either no read
+ interest registered or the passed parameters match the registered
+ ones. If the descriptor has been closed, the behavior is undefined.
+ Otherwise, if parameters do not match, you get an assertion.
+
+ \par
+ To cancel Comm operations other than read, close the descriptor with
+ comm_close().
+
+
+\section comm-close Descriptor closing with comm_close
+
+ \par
+ The comm_close() function does not close the descriptor but initiates
+ the following closing sequence:
+
+ \par
+ -# The descriptor is placed in a "closing" state.
+ -# The registered read, write, and accept callbacks (if any) are
+ scheduled (in an unspecified order).
+ -# The close callbacks are scheduled (in an unspecified order).
+ -# A call to the internal descriptor closing handler is
+ scheduled.
+
+ \par
+ The "unspecified" order above means that the user should not rely on
+ any specific or deterministic order because the currently hard-coded
+ order may change.
+
+ \par
+ The read, write, and accept notifications (scheduled in step #2
+ above) carry the COMM_ERR_CLOSING error flag. When handling
+ COMM_ERR_CLOSING event, the user code should limit
+ descriptor-related processing, especially Comm calls, because
+ supported Comm functionality is very limited when the descriptor is
+ closing. New code should use the close handlers instead (scheduled
+ in step #3).
+
+ \par
+ The internal closing handler (scheduled in step #4 above) closes the
+ descriptor. When the descriptor is closed, all operations on the
+ descriptor are prohibited and may cause bugs and asserts. Currently,
+ the same descriptor will eventually be reused for another socket and
+ Comm may not notice that a buggy code is still using a stale
+ descriptor, but that may change.
+
+ \par
+ Since all notifications are asynchronous, it is possible for a read
+ or write notification that was scheduled before comm_close() was
+ called to arrive at its destination after comm_close() was called.
+ Such notification will arrive with COMM_ERR_CLOSING flag even though
+ that flag was not set at the time of the I/O (and the I/O may have
+ been successful). This behavior may change.
+
+
+\section Future Anticipated changes and preparation recommendations
+
+ \par
+ This section lists anticipated Comm API changes and provides
+ recommendations for developers writing new (or rewriting old) Comm
+ user code. The changes are listed in a rough order from more likely
+ to less certain and from near-feature to long-term.
+
+ \par
+ The old comm_read_cancel() function that uses a function pointer will be
+ removed as unreliable. Use the AsyncCall-based comm_read_cancel()
+ instead.
+
+ \par
+ COMM_ERR_CLOSING interface will be removed. The read, write, and
+ accept notifications will not be scheduled after comm_close() is
+ called. New user code should register close handlers instead.
+
+ \par
+ When COMM_ERR_CLOSING interface is removed, pending notifications
+ (if any) will be canceled after comm_close() is called. However, the
+ cancellation may be removed later if Comm is modified to provide safe
+ access to closing descriptors and their fragile state. New user code
+ should continue to assume that it is safe to access Comm in a read,
+ write, and accept handlers.
+
+ \par
+ The old comm_read_cancel() call that uses a function pointer will be
+ removed as unreliable. New user code should use comm_read_cancel() with
+ an AsyncCall parameter.
+
+ \par
+ Comm users may be required to become children of Comm-provided
+ classes, to eliminate the need for a complicated (albeit hidden)
+ hierarchy of Comm callback dialers (see CommCalls.h) and to provide
+ default implementation for common I/O handling cases. New user code
+ should use methods of AsyncJob-derived classes to handle Comm
+ notifications instead of using stand-alone functions. Additionally, it
+ should not call comm_close() for descriptors it does not "own".
+
+ \par
+ The comm_close() API will be used exclusively for "stop future I/O,
+ schedule a close callback call, and cancel all other callbacks"
+ purposes. New user code should not use comm_close() for the purpose of
+ immediately ending a job.
+
+ \par
+ Raw socket descriptors will be replaced with unique IDs or small
+ objects that help detect stale descriptor/socket usage bugs and
+ encapsulate access to socket-specific information. New user code
+ should treat descriptor integers as opaque objects.
+
+
+ */
#include "squid.h"
+#include "fde.h"
#include "CommCalls.h"
/* CommCommonCbParams */
{
}
+bool
+CommConnectCbParams::syncWithComm()
+{
+ // drop the call if the call was scheduled before comm_close but
+ // is being fired after comm_close
+ if (fd >= 0 && fd_table[fd].closing()) {
+ debugs(5, 3, HERE << "droppin late connect call: FD " << fd);
+ return false;
+ }
+ return true; // now we are in sync and can handle the call
+}
/* CommIoCbParams */
{
}
+bool
+CommIoCbParams::syncWithComm()
+{
+ // change parameters if the call was scheduled before comm_close but
+ // is being fired after comm_close
+ if (fd >= 0 && fd_table[fd].closing() && flag != COMM_ERR_CLOSING) {
+ debugs(5, 3, HERE << "converting late call to COMM_ERR_CLOSING: FD " << fd);
+ flag = COMM_ERR_CLOSING;
+ size = 0;
+ }
+ return true; // now we are in sync and can handle the call
+}
+
+
void
CommIoCbParams::print(std::ostream &os) const
{
CommCommonCbParams(const CommCommonCbParams ¶ms);
~CommCommonCbParams();
+ /// adjust using the current Comm state; returns false to cancel the call
+ // not virtual because callers know dialer type
+ bool syncWithComm() { return true; }
+
void print(std::ostream &os) const;
public:
class CommConnectCbParams: public CommCommonCbParams {
public:
CommConnectCbParams(void *aData);
+
+ bool syncWithComm(); // see CommCommonCbParams::syncWithComm
};
// read/write (I/O) parameters
CommIoCbParams(void *aData);
void print(std::ostream &os) const;
+ bool syncWithComm(); // see CommCommonCbParams::syncWithComm
public:
char *buf;
CommCbMemFunT(C *obj, Method meth): JobDialer(obj),
CommDialerParamsT<Params>(obj), object(obj), method(meth) {}
+ virtual bool canDial(AsyncCall &c) { return JobDialer::canDial(c) &&
+ this->params.syncWithComm(); }
+
virtual void print(std::ostream &os) const {
os << '('; this->params.print(os); os << ')'; }
if (!cbdataReferenceValid(dialer.params.data))
return cancel("callee gone");
+ if (!dialer.params.syncWithComm())
+ return cancel("out of sync w/comm");
+
return true;
}
#include "squid.h"
#include "comm.h"
#include "CommCalls.h"
-#include "List.h"
+#include "CbDataList.h"
class CommRead
{
private:
static PF CloseHandler;
- static DeferredRead popHead(ListContainer<DeferredRead> &deferredReads);
+ static DeferredRead popHead(CbDataListContainer<DeferredRead> &deferredReads);
void kickARead(DeferredRead const &);
void flushReads();
- ListContainer<DeferredRead> deferredReads;
+ CbDataListContainer<DeferredRead> deferredReads;
};
/* skip comments */
/* skip blank lines */
- } while( *t != '#' && !*t );
+ } while( *t == '#' || !*t );
return t;
}
#include "squid.h"
-/* forward decls */
-
-class CacheManager;
-
/*
* A configuration file Parser. Instances of this class track
* parsing state and perform tokenisation. Syntax is currently
static char * strtokFile();
};
-extern int parseConfigFile(const char *file_name, CacheManager & manager);
+extern int parseConfigFile(const char *file_name);
#endif /* SQUID_CONFIGPARSER_H */
return DelayId();
}
- for (pool = 0; pool < DelayPools::pools(); pool++) {
+ for (pool = 0; pool < DelayPools::pools(); pool++)
+ {
ACLChecklist ch;
+#if FOLLOW_X_FORWARDED_FOR
+ if (Config.onoff.delay_pool_uses_indirect_client)
+ ch.src_addr = r->indirect_client_addr;
+ else
+#endif /* FOLLOW_X_FORWARDED_FOR */
ch.src_addr = r->client_addr;
ch.my_addr = r->my_addr;
};
/* forward decls */
-class CacheManager;
class DelayPool;
class Updateable;
class StoreEntry;
public:
static void Init();
- static void RegisterWithCacheManager(CacheManager & manager);
static void Update(void *);
static unsigned short pools();
static void pools (u_short pools);
static unsigned short pools_;
static void FreeDelayData ();
static Vector<Updateable *> toUpdate;
+ static void RegisterWithCacheManager(void);
};
#endif /* SQUID_DELAYPOOLS_H */
--- /dev/null
+
+/*
+ * $Id$
+ *
+ * DEBUG: section 5 Comm
+ */
+
+#include "DescriptorSet.h"
+
+// pre-allocates descriptor store and index for Squid_MaxFD descriptors
+DescriptorSet::DescriptorSet(): descriptors_(NULL), index_(NULL),
+ capacity_(0), size_(0)
+{
+ // we allocate once and never realloc, at least for now
+ capacity_ = Squid_MaxFD;
+ descriptors_ = new int[capacity_];
+ index_ = new int[capacity_];
+
+ // fill index with -1s to be able to say whether a descriptor is present
+ // it is not essential to fill the descriptors, but it enables more checks
+ for (int i = 0; i < capacity_; ++i)
+ index_[i] = descriptors_[i] = -1;
+}
+
+DescriptorSet::~DescriptorSet()
+{
+ delete[] descriptors_;
+ delete[] index_;
+}
+
+/// adds if unique; returns true if added
+bool
+DescriptorSet::add(int fd)
+{
+ assert(0 <= fd && fd < capacity_); // \todo: replace with Must()
+
+ if (has(fd))
+ return false; // already have it
+
+ assert(size_ < capacity_); // \todo: replace with Must()
+ const int pos = size_++;
+ index_[fd] = pos;
+ descriptors_[pos] = fd;
+ return true; // really added
+}
+
+/// deletes if there; returns true if deleted
+bool
+DescriptorSet::del(int fd)
+{
+ assert(0 <= fd && fd < capacity_); // \todo: here and below, use Must()
+
+ if (!has(fd))
+ return false; // we do not have it
+
+ assert(!empty());
+ const int delPos = index_[fd];
+ assert(0 <= delPos && delPos < capacity_);
+
+ // move the last descriptor to the deleted fd position
+ // to avoid skipping deleted descriptors in pop()
+ const int lastPos = size_-1;
+ const int lastFd = descriptors_[lastPos];
+ assert(delPos <= lastPos); // may be the same
+ descriptors_[delPos] = lastFd;
+ index_[lastFd] = delPos;
+
+ descriptors_[lastPos] = -1;
+ index_[fd] = -1;
+ --size_;
+
+ return true; // really added
+}
+
+/// ejects one descriptor in unspecified order
+int
+DescriptorSet::pop()
+{
+ assert(!empty());
+ const int lastPos =--size_;
+ const int lastFd = descriptors_[lastPos];
+ assert(0 <= lastFd && lastFd < capacity_);
+
+ // cleanup
+ descriptors_[lastPos] = -1;
+ index_[lastFd] = -1;
+
+ return lastFd;
+}
+
+void
+DescriptorSet::print(std::ostream &os) const
+{
+ // \todo add "name" if the set is used for more than just half-closed FDs
+ os << size_ << " FDs";
+}
--- /dev/null
+#ifndef SQUID_DESCRIPTOR_SET_H
+#define SQUID_DESCRIPTOR_SET_H
+
+#include "squid.h"
+
+/** \ingroup Comm
+
+ \todo: Should we use std::set<int> with its flexibility? Our implementation
+ has constant overhead, which is smaller than log(n) of std::set.
+
+an unordered collection of unique descriptors with O(1) add/del/has ops */
+class DescriptorSet {
+public:
+ // for STL compatibility, should we decide to switch to std::set or similar
+ typedef const int *const_iterator;
+
+ DescriptorSet();
+ ~DescriptorSet();
+
+ /// checks whether fd is in the set
+ bool has(const int fd) const { return 0 <= fd && fd < capacity_ &&
+ index_[fd] >= 0; }
+
+ bool add(int fd); ///< adds if unique; returns true if added
+ bool del(int fd); ///< deletes if there; returns true if deleted
+ int pop(); ///< deletes and returns one descriptor, in unspecified order
+
+ bool empty() const { return !size_; } ///< number of descriptors in the set
+
+ /// begin iterator a la STL; may become invalid if the object is modified
+ const_iterator begin() const { return descriptors_; }
+ /// end iterator a la STL; may become invalid if the object is modified
+ const_iterator end() const { return begin() + size_; }
+
+ /// outputs debugging info about the set
+ void print(std::ostream &os) const;
+
+private:
+ // these would be easy to support when needed; prohibit for now
+ DescriptorSet(const DescriptorSet &s); // declared but undefined
+ DescriptorSet &operator =(const DescriptorSet &s); // declared, undefined
+
+ int *descriptors_; ///< descriptor values in random order
+ int *index_; ///< descriptor:position index into descriptors_
+ int capacity_; ///< total number of descriptor slots
+ int size_; ///< number of descriptors in the set
+};
+
+/// convenience wrapper to be used in debugs() context
+inline std::ostream &
+operator <<(std::ostream &os, const DescriptorSet &ds)
+{
+ ds.print(os);
+ return os;
+}
+
+#endif /* SQUID_DESCRIPTOR_SET_H */
+
debugs(47, 1, "diskd started");
#endif
initialised = true;
+
+ registerWithCacheManager();
}
void
-DiskDaemonDiskIOModule::registerWithCacheManager(CacheManager & manager)
+DiskDaemonDiskIOModule::registerWithCacheManager(void)
{
- manager.registerAction("diskd", "DISKD Stats", Stats, 0, 1);
+ CacheManager::GetInstance()->registerAction("diskd", "DISKD Stats", Stats, 0, 1);
}
void
static DiskDaemonDiskIOModule &GetInstance();
DiskDaemonDiskIOModule();
virtual void init();
- virtual void registerWithCacheManager(CacheManager & manager);
virtual void shutdown();
virtual char const *type () const;
virtual DiskIOStrategy* createStrategy();
static void Stats(StoreEntry * sentry);
static DiskDaemonDiskIOModule Instance;
bool initialised;
+ void registerWithCacheManager(void);
};
#endif /* SQUID_DISKDAEMONDISKIOMODULE_H */
*/
}
-void
-DiskIOModule::RegisterAllModulesWithCacheManager(CacheManager & manager)
-{
- for (iterator i = GetModules().begin(); i != GetModules().end(); ++i)
- (*i)->registerWithCacheManager(manager);
-}
-
void
DiskIOModule::SetupAllModules()
{
return result;
}
-/* disk modules dont export anything by default */
-void
-DiskIOModule::registerWithCacheManager(CacheManager & manager)
-{}
{
public:
- static void RegisterAllModulesWithCacheManager(CacheManager & manager);
static void SetupAllModules();
static void ModuleAdd(DiskIOModule &);
static void FreeAllModules();
virtual ~DiskIOModule(){}
virtual void init() = 0;
- virtual void registerWithCacheManager(CacheManager & manager);
+ //virtual void registerWithCacheManager(void);
virtual void shutdown() = 0;
virtual DiskIOStrategy *createStrategy() = 0;
protected:
//bool initialised;
+ static void RegisterAllModulesWithCacheManager(void);
private:
static Vector<DiskIOModule*> &GetModules();
DiskThreadsIOStrategy::Instance.init();
}
-void
-DiskThreadsDiskIOModule::registerWithCacheManager(CacheManager & manager)
-{
- DiskThreadsIOStrategy::Instance.registerWithCacheManager(manager);
-}
-
void
DiskThreadsDiskIOModule::shutdown()
{
static DiskThreadsDiskIOModule &GetInstance();
DiskThreadsDiskIOModule();
virtual void init();
- virtual void registerWithCacheManager(CacheManager & manager);
+ //virtual void registerWithCacheManager(void);
virtual void shutdown();
virtual char const *type () const;
virtual DiskIOStrategy* createStrategy();
* hasn't been parsed yet and we don't know how many cache_dirs
* there are, which means we don't know how many threads to start.
*/
+
+ registerWithCacheManager();
}
void
-DiskThreadsIOStrategy::registerWithCacheManager(CacheManager & manager)
+DiskThreadsIOStrategy::registerWithCacheManager(void)
{
- manager.registerAction("squidaio_counts", "Async IO Function Counters",
- aioStats, 0, 1);
+ CacheManager::GetInstance()->
+ registerAction("squidaio_counts", "Async IO Function Counters",
+ aioStats, 0, 1);
}
void
virtual int callback();
virtual void sync();
virtual void init();
- virtual void registerWithCacheManager(CacheManager & manager);
void done();
/* Todo: add access limitations */
bool initialised;
private:
static void aioStats(StoreEntry * sentry);
+ void registerWithCacheManager(void);
};
#endif
void
ESIContext::freeResources ()
{
- debugs(86, 5, "ESIContext::freeResources: Freeing for this=" << this);
+ debugs(86, 5, HERE << "Freeing for this=" << this);
- if (rep) {
- delete rep;
- rep = NULL;
- }
+ HTTPMSGUNLOCK(rep);
finishChildren ();
ErrorState * err = clientBuildError(errorpage, errorstatus, NULL, http->getConn()->peer, http->request);
err->err_msg = errormessage;
errormessage = NULL;
- rep = errorBuildReply (err);
+ rep = err->BuildHttpReply();
assert (rep->body.mb->contentSize() >= 0);
size_t errorprogress = rep->body.mb->contentSize();
/* Tell esiSend where to start sending from */
virtual bool addElement(ESIElement::Pointer)
{
/* Don't accept children */
- debug (86,5)("ESIElement::addElement: Failed for %p\n",this);
+ debugs(86,5, "ESIElement::addElement: Failed for " << this);
return false;
}
/* process this element */
virtual esiProcessResult_t process (int dovars)
{
- debug (86,5) ("esiProcessComplete: Processed %p\n",this);
+ debugs(86,5, "esiProcessComplete: Processed " << this);
return ESI_PROCESS_COMPLETE;
}
clientStreamDetach (node, http);
}
-/*
- * Write a chunk of data to a client 'socket'.
- * If the reply is present, send the reply headers down the wire too,
- * and clean them up when finished.
- * Pre-condition:
+/**
+ * Write a chunk of data to a client 'socket'.
+ * If the reply is present, send the reply headers down the wire too.
+ *
+ * Pre-condition:
* The request is an internal ESI subrequest.
* data context is not NULL
* There are no more entries in the stream chain.
+ * The caller is responsible for creation and deletion of the Reply headers.
+ *
+ \note
+ * Bug 975, bug 1566 : delete rep; 2006/09/02: TS, #975
+ *
+ * This was causing double-deletes. Its possible that not deleting
+ * it here will cause memory leaks, but if so, this delete should
+ * not be reinstated or it will trigger bug #975 again - RBC 20060903
*/
void
esiBufferRecipient (clientStreamNode *node, ClientHttpRequest *http, HttpReply *rep, StoreIOBuffer receivedData)
assert (receivedData.length <= sizeof(esiStream->localbuffer->buf));
assert (!esiStream->finished);
- debugs (86,5, "esiBufferRecipient rep " << rep << " body " << receivedData.data << " len " << receivedData.length);
+ debugs (86,5, HERE << "rep " << rep << " body " << receivedData.data << " len " << receivedData.length);
assert (node->readBuffer.offset == receivedData.offset || receivedData.length == 0);
/* trivial case */
headersLog(0, 0, http->request->method, rep);
#endif
-
- /* delete rep; 2006/09/02: TS, #975
- *
- * This was causing double-deletes. Its possible that not deleting
- * it here will cause memory leaks, but if so, this delete should
- * not be reinstated or it will trigger bug #975 again - RBC
- * 20060903
- */
-
rep = NULL;
}
}
/* EOF / Read error / aborted entry */
if (rep == NULL && receivedData.data == NULL && receivedData.length == 0) {
/* TODO: get stream status to test the entry for aborts */
- debugs(86, 5, "Finished reading upstream data in subrequest");
+ debugs(86, 5, HERE << "Finished reading upstream data in subrequest");
esiStream->include->subRequestDone (esiStream, true);
esiStream->finished = 1;
httpRequestFree (http);
tempBuffer.length = sizeof (esiStream->buffer->buf);
tempBuffer.data = esiStream->buffer->buf;
/* now just read into 'buffer' */
- clientStreamRead (node,
- http, tempBuffer);
- debugs(86, 5, "esiBufferRecipient: Requested more data for ESI subrequest");
+ clientStreamRead (node, http, tempBuffer);
+ debugs(86, 5, HERE << "Requested more data for ESI subrequest");
}
break;
MEMPROXY_CLASS_INLINE(ACLExternal);
-extern void externalAclRegisterWithCacheManager(CacheManager & manager);
-
#endif /* SQUID_EXTERNALACL_H */
HDR_USER_AGENT, HDR_X_FORWARDED_FOR, HDR_SURROGATE_CAPABILITY
};
+static HttpHeaderMask HopByHopHeadersMask;
static http_hdr_type HopByHopHeadersArr[] =
{
- HDR_CONNECTION, HDR_KEEP_ALIVE, HDR_PROXY_AUTHENTICATE, HDR_PROXY_AUTHORIZATION,
- HDR_TE, HDR_TRAILERS, HDR_TRANSFER_ENCODING, HDR_UPGRADE
+ HDR_CONNECTION, HDR_KEEP_ALIVE, /*HDR_PROXY_AUTHENTICATE,*/ HDR_PROXY_AUTHORIZATION,
+ HDR_TE, HDR_TRAILERS, HDR_TRANSFER_ENCODING, HDR_UPGRADE, HDR_PROXY_CONNECTION
};
/* header accounting */
* Module initialization routines
*/
+static void
+httpHeaderRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("http_headers",
+ "HTTP Header Statistics",
+ httpHeaderStoreReport, 0, 1);
+}
+
void
httpHeaderInitModule(void)
{
httpHeaderCalcMask(&RequestHeadersMask, EntityHeadersArr, countof(EntityHeadersArr));
+ httpHeaderCalcMask(&HopByHopHeadersMask, HopByHopHeadersArr, countof(HopByHopHeadersArr));
+
/* init header stats */
assert(HttpHeaderStatCount == hoReply + 1);
httpHdrCcInitModule();
httpHdrScInitModule();
-}
-void
-httpHeaderRegisterWithCacheManager(CacheManager & manager)
-{
- /* register with cache manager */
- manager.registerAction("http_headers",
- "HTTP Header Statistics",
- httpHeaderStoreReport, 0, 1);
+ httpHeaderRegisterWithCacheManager();
}
void
{
removeConnectionHeaderEntries();
- int count = countof(HopByHopHeadersArr);
-
- for (int i=0; i<count; i++)
- delById(HopByHopHeadersArr[i]);
-
+ const HttpHeaderEntry *e;
+ HttpHeaderPos pos = HttpHeaderInitPos;
+ int headers_deleted = 0;
+ while ((e = getEntry(&pos))) {
+ int id = e->id;
+ if(CBIT_TEST(HopByHopHeadersMask, id)){
+ delAt(pos, headers_deleted);
+ CBIT_CLR(mask, id);
+ }
+ }
}
void
#ifndef SQUID_HTTPHEADER_H
#define SQUID_HTTPHEADER_H
-/* forward decls */
-
-class CacheManager;
/* because we pass a spec by value */
#include "HttpHeaderRange.h"
};
-extern void httpHeaderRegisterWithCacheManager(CacheManager & manager);
extern int httpHeaderParseQuotedString (const char *start, String *val);
SQUIDCEXTERN int httpHeaderHasByNameListMember(const HttpHeader * hdr, const char *name, const char *member, const char separator);
SQUIDCEXTERN void httpHeaderUpdate(HttpHeader * old, const HttpHeader * fresh, const HttpHeaderMask * denied_mask);
HttpVersion ver(1,0);
httpStatusLineSet(&sline, ver, status, httpStatusString(status));
hdr = &header;
- hdr->putStr(HDR_SERVER, full_appname_string);
+ hdr->putStr(HDR_SERVER, APP_FULLNAME);
hdr->putTime(HDR_DATE, squid_curtime);
hdr->putInt64(HDR_CONTENT_LENGTH, 0);
hdr->putStr(HDR_LOCATION, loc);
extacl_passwd = null_string;
extacl_log = null_string;
pstate = psReadyToParseStartLine;
+#if FOLLOW_X_FORWARDED_FOR
+ indirect_client_addr.SetEmpty();
+#endif /* FOLLOW_X_FORWARDED_FOR */
}
void
IPAddress client_addr;
+#if FOLLOW_X_FORWARDED_FOR
+ IPAddress indirect_client_addr;
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
IPAddress my_addr;
HierarchyLogEntry hier;
String extacl_log; /* String to be used for access.log purposes */
+#if FOLLOW_X_FORWARDED_FOR
+ String x_forwarded_for_iterator; /* XXX a list of IP addresses */
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
public:
bool multipartRangeRequest() const;
bool
HttpRequestMethod::isCacheble() const
{
+ // TODO: optimize the lookup with a precomputed flags array
+ // XXX: the list seems wrong; e.g., Is METHOD_DELETE really cachable?
+ // see also http.cc::httpCachable()
+
if (theMethod == METHOD_CONNECT)
return false;
return true;
}
+
+bool
+HttpRequestMethod::purgesOthers() const
+{
+ // TODO: optimize the lookup with a precomputed flags array
+
+ switch (theMethod) {
+ /* common sense suggests purging is not required? */
+ case METHOD_GET: // XXX: but we do purge HEAD on successful GET
+ case METHOD_HEAD:
+ case METHOD_NONE:
+ case METHOD_CONNECT:
+ case METHOD_TRACE:
+ case METHOD_OPTIONS:
+ case METHOD_PROPFIND:
+ case METHOD_BPROPFIND:
+ case METHOD_COPY:
+ case METHOD_BCOPY:
+ case METHOD_LOCK:
+ case METHOD_UNLOCK:
+ case METHOD_SEARCH:
+ return false;
+
+ /* purging mandated by RFC 2616 */
+ case METHOD_POST:
+ case METHOD_PUT:
+ case METHOD_DELETE:
+ return true;
+
+ /* purging suggested by common sense */
+ case METHOD_PURGE:
+ return true;
+
+ /*
+ * RFC 2616 sayeth, in section 13.10, final paragraph:
+ * A cache that passes through requests for methods it does not
+ * understand SHOULD invalidate any entities referred to by the
+ * Request-URI.
+ */
+ case METHOD_OTHER:
+ default:
+ return true;
+ }
+
+ return true; // not reached, but just in case
+}
char const* image() const;
bool isCacheble() const;
+ bool purgesOthers() const;
private:
static const char *RequestMethodStr[];
#include "HttpStatusLine.h"
/* local constants */
+/* AYJ: see bug 2469 - RFC2616 confirms stating 'SP characters' plural! */
const char *HttpStatusLineFormat = "HTTP/%d.%d %3d %s\r\n";
void
startWriting();
else
waitForService();
-
- // XXX: If commConnectStart in startWriting fails, we may get here
- //_after_ the object got destroyed. Somebody please fix commConnectStart!
- // TODO: Does re-entrance protection in callStart() solve the above?
- // TODO: Check that comm using AsyncCalls solves this problem.
}
void ICAPModXact::waitForService()
decideOnRetries();
openConnection();
- // put nothing here as openConnection calls commConnectStart
- // and that may call us back without waiting for the next select loop
}
// connection with the ICAP service established
// end cloning
// remove all hop-by-hop headers from the clone
+ headClone->header.delById(HDR_PROXY_AUTHENTICATE);
headClone->header.removeHopByHopEntries();
// pack polished HTTP header
check_PROGRAMS = testHeaders
## test .h correctness
-testHeaders: *.h
+testHeaders: $(top_srcdir)/src/ICAP/*.h
$(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "." || exit 1
## No such file...
Close();
}
+#ifdef _SQUID_MSWIN_
+void
+Win32SockCleanup(void)
+{
+ WSACleanup();
+ return;
+}
+#endif
+
int
ICMPPinger::Open(void)
{
struct sockaddr_in PS;
WSAStartup(2, &wsaData);
+ atexit(Win32SockCleanup);
getCurrentTime();
_db_init(NULL, "ALL,1");
return;
}
/** All other send errors are ignored. */
- } else if (x != len) {
+ } else if (x != slen) {
debugs(37, 1, HERE << "Wrote " << x << " of " << slen << " bytes");
}
}
#ifdef _SQUID_MSWIN_
+#if HAVE_WINSOCK2_H
#include <winsock2.h>
+#endif
#include <process.h>
#endif
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
*
*/
-
+#include "config.h"
#include "IPInterception.h"
#include "fde.h"
#endif /* PF_TRANSPARENT required headers */
#if LINUX_NETFILTER
+#include <linux/types.h>
#include <linux/netfilter_ipv4.h>
#endif
* Try NAT lookup for REDIRECT or DNAT targets. */
if( getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, lookup->ai_addr, &lookup->ai_addrlen) == 0) {
if(!silent) {
- debugs(89, DBG_IMPORTANT, HERE << " NF getsockopt(SO_ORIGINAL_DST) failed: " << xstrerror());
+ debugs(89, DBG_IMPORTANT, HERE << " NF getsockopt(SO_ORIGINAL_DST) failed on FD " << fd << ": " << xstrerror());
last_reported = squid_curtime;
}
}
}
int
-IPIntercept::NetfilterTransparent(int fd, const IPAddress &me, IPAddress &dst, int silent)
+IPIntercept::NetfilterTransparent(int fd, const IPAddress &me, IPAddress &client, int silent)
{
#if LINUX_NETFILTER
- struct addrinfo *lookup = NULL;
-
- if( ! fd_table[fd].flags.transparent) return -1;
-
- dst.GetAddrInfo(lookup,AF_INET);
- /** \par
- * Try lookup for TPROXY targets. BUT, only if the FD is flagged for transparent operations. */
- if(getsockopt(fd, SOL_IP, IP_TRANSPARENT, lookup->ai_addr, &lookup->ai_addrlen) != 0) {
- if(!silent) {
- debugs(89, DBG_IMPORTANT, HERE << " NF getsockopt(IP_TRANSPARENT) failed: " << xstrerror());
- last_reported = squid_curtime;
- }
- }
- else {
- dst = *lookup;
- }
-
- dst.FreeAddrInfo(lookup);
-
- if(me != dst) {
- debugs(89, 5, HERE << "address: " << dst);
+ /* Trust the user configured properly. If not no harm done.
+ * We will simply attempt a bind outgoing on our own IP.
+ */
+ if(fd_table[fd].flags.transparent) {
+ client.SetPort(0); // allow random outgoing port to prevent address clashes
return 0;
}
-
- debugs(89, 9, HERE << "address: me= " << me << ", dst= " << dst);
#endif
return -1;
}
/** \par
* Try lookup for IPFW interception. */
- if( getsockname(fd, lookup->ai_addr, &lookup->ai_addrlen) >= 0 ) {
+ if( getsockname(fd, lookup->ai_addr, &lookup->ai_addrlen) != 0 ) {
if( !silent ) {
debugs(89, DBG_IMPORTANT, HERE << " IPFW getsockname(...) failed: " << xstrerror());
last_reported = squid_curtime;
return -1;
}
-
-// TODO split this one call into one per transparency method
-// with specific switching at run-time ??
-
int
-IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &dst)
+IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &client, IPAddress &dst)
{
#if IPF_TRANSPARENT /* --enable-ipf-transparent */
- dst = me;
+ client = me;
if( !me.IsIPv4() ) return -1;
if( !peer.IsIPv4() ) return -1;
} else
{
if (me != natLookup.nl_realip) {
- dst = natLookup.nl_realip;
+ client = natLookup.nl_realip;
- dst.SetPort(ntohs(natLookup.nl_realport));
+ client.SetPort(ntohs(natLookup.nl_realport));
}
// else. we already copied it.
/* Netfilter and IPFW share almost identical lookup methods for their NAT tables.
* This allows us to perform a nice clean failover sequence for them.
*/
- int silent = (squid_curtime - last_reported > 60 ? 0 : 1);
- dst = me;
+ client = me;
+ dst = peer;
if( !me.IsIPv4() ) return -1;
if( !peer.IsIPv4() ) return -1;
+#if 0
+ // Crop interception errors down to one per minute.
+ int silent = (squid_curtime - last_reported > 60 ? 0 : 1);
+#else
+ // Show all interception errors.
+ int silent = 0;
+#endif
+
if(intercept_active) {
- if( NetfilterInterception(fd, me, dst, silent) == 0) return 0;
- if( IPFWInterception(fd, me, dst, silent) == 0) return 0;
+ if( NetfilterInterception(fd, me, client, silent) == 0) return 0;
+ if( IPFWInterception(fd, me, client, silent) == 0) return 0;
}
if(transparent_active) {
if( NetfilterTransparent(fd, me, dst, silent) == 0) return 0;
if( !peer.IsIPv4() ) return -1;
if (pffd < 0)
- pffd = open("/dev/pf", O_RDWR);
+ pffd = open("/dev/pf", O_RDONLY);
if (pffd < 0)
{
}
- dst.SetEmpty();
+ client.SetEmpty();
memset(&nl, 0, sizeof(struct pfioc_natlook));
peer.GetInAddr(nl.saddr.v4);
} else
{
int natted = (me != nl.rdaddr.v4);
- dst = nl.rdaddr.v4;
- dst.SetPort(ntohs(nl.rdport));
+ client = nl.rdaddr.v4;
+ client.SetPort(ntohs(nl.rdport));
if (natted)
return 0;
~IPIntercept() {};
/** Perform NAT lookups */
- int NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &dst);
+ int NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &client, IPAddress &dst);
#if LINUX_TPROXY2
// only relevant to TPROXY v2 connections.
\retval 0 Successfuly located the new address.
\retval -1 An error occured during NAT lookups.
*/
- int NetfilterInterception(int fd, const IPAddress &me, IPAddress &dst, int silent);
+ int NetfilterInterception(int fd, const IPAddress &me, IPAddress &client, int silent);
/**
* perform Lookups on Netfilter fully-transparent interception targets (TPROXY).
\retval 0 Successfuly located the new address.
\retval -1 An error occured during NAT lookups.
*/
- int IPFWInterception(int fd, const IPAddress &me, IPAddress &dst, int silent);
+ int IPFWInterception(int fd, const IPAddress &me, IPAddress &client, int silent);
int transparent_active;
AIOPS_SOURCE = DiskIO/DiskThreads/aiops.cc
endif
-IDENT_ALL_SOURCE = ACLIdent.cc ACLIdent.h ident.cc
+IDENT_ALL_SOURCE = ACLIdent.cc ACLIdent.h ident.cc ident.h
if ENABLE_IDENT
IDENT_SOURCE = $(IDENT_ALL_SOURCE)
else
comm.h \
CommCalls.cc \
CommCalls.h \
+ DescriptorSet.cc \
+ DescriptorSet.h \
IPInterception.cc \
IPInterception.h \
ICAP/AsyncJob.cc \
PeerDigest.h \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
PeerSelectState.h \
PingData.h \
protos.h \
pconn.cc \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
protos.h \
redirect.cc \
referer.cc \
sysconf_DATA = \
squid.conf.default \
+ squid.conf.documented \
mime.conf.default
data_DATA = \
DEFAULT_UNLINKD = $(libexecdir)/`echo unlinkd | sed '$(transform);s/$$/$(EXEEXT)/'`
DEFAULT_DISKD = $(libexecdir)/`echo diskd | sed '$(transform);s/$$/$(EXEEXT)/'`
DEFAULT_ICON_DIR = $(datadir)/icons
-DEFAULT_ERROR_DIR = $(datadir)/errors/@ERR_DEFAULT_LANGUAGE@
+DEFAULT_ERROR_DIR = $(datadir)/errors
DEFAULT_MIB_PATH = $(datadir)/mib.txt
DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
## If autodependency works well this is not needed anymore
cache_cf.o: cf_parser.h
-# squd.conf.default is built by cf_gen when making cf_parser.h
-squid.conf.default: cf_parser.h
+# squid.conf.default is built by cf_gen when making cf_parser.h
+squid.conf.documented: cf_parser.h
true
+squid.conf.default: squid.conf.documented
+ grep -v -E "^[#\ ]" squid.conf.documented | grep . >squid.conf.default
+
cf_parser.h: cf.data cf_gen$(EXEEXT)
./cf_gen cf.data $(srcdir)/cf.data.depend
## FIXME: generate a sed command file from configure. Then this doesn't
-## depend on the Makefile.
+## depend on the Makefile.
cf.data: cf.data.pre Makefile
sed "\
s%@DEFAULT_HTTP_PORT@%$(DEFAULT_HTTP_PORT)%g;\
echo "$(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
$(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE); \
fi
+ echo "$(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE).default"; \
+ $(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE).default; \
+ echo "$(INSTALL_DATA) squid.conf.documented $(DESTDIR)$(DEFAULT_CONFIG_FILE).documented"; \
+ $(INSTALL_DATA) squid.conf.documented $(DESTDIR)$(DEFAULT_CONFIG_FILE).documented; \
$(mkinstalldirs) $(DESTDIR)$(DEFAULT_LOG_PREFIX)
uninstall-local:
# $(RM) -f $(DESTDIR)$(DEFAULT_CONFIG_FILE); \
# fi
-DISTCLEANFILES = cf_gen_defines.h cf.data cf_parser.h squid.conf.default \
+DISTCLEANFILES = cf_gen_defines.h cf.data cf_parser.h squid.conf.default squid.conf.documented \
globals.cc string_arrays.c repl_modules.cc
##install-pinger:
AsyncCall.cc
-check_PROGRAMS+= testHeaders \
- tests/testAuth \
+check_PROGRAMS+= tests/testAuth \
tests/testACLMaxUserIP \
tests/testBoilerplate \
tests/testCacheManager \
## Special Universal .h dependency test script
## aborts if error encountered
-testHeaders: *.h DiskIO/*.h
+testHeaders: $(top_srcdir)/src/*.h $(top_srcdir)/src/DiskIO/*.h
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "." || exit 1
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "DiskIO" || exit 1
## src/repl/ has no .h files and its own makefile.
StatHist.cc HttpHdrRange.cc ETag.cc tests/stub_errorpage.cc \
tests/stub_HttpRequest.cc tests/stub_DelayId.cc \
tests/stub_MemObject.cc mem_node.cc \
+ tests/stub_cache_manager.cc \
stmem.cc \
tests/stub_comm.cc \
tests/stub_http.cc \
tests/stub_DelayId.cc \
tests/stub_MemObject.cc \
tests/stub_store.cc \
+ tests/stub_cache_manager.cc \
tests/testACLMaxUserIP.cc \
tests/testACLMaxUserIP.h \
tests/testMain.cc \
pconn.cc \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
redirect.cc \
referer.cc \
refresh.cc \
$(SWAP_TEST_SOURCES) \
tests/testDiskIO.cc \
tests/testDiskIO.h \
- tests/testMain.cc
+ tests/testMain.cc \
+ tests/stub_cache_manager.cc
+
tests_testDiskIO_LDADD= \
$(SWAP_TEST_LDADD) \
libsquid.la \
pconn.cc \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
redirect.cc \
referer.cc \
refresh.cc \
pconn.cc \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
redirect.cc \
referer.cc \
refresh.cc \
Parsing.cc \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
pconn.cc \
redirect.cc \
referer.cc \
pconn.cc \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
redirect.cc \
referer.cc \
refresh.cc \
tests/TestSwapDir.h \
tests/stub_fd.cc \
tests/stub_HttpReply.cc \
+ tests/stub_cache_manager.cc \
$(STORE_TEST_SOURCES)
tests_testStore_LDADD= \
tests/testMain.cc \
tests/testString.cc \
tests/testString.h \
+ tests/stub_cache_manager.cc \
$(TESTSOURCES) \
time.cc
tests_testUfs_SOURCES= tests/testUfs.cc \
tests/testMain.cc \
tests/testUfs.h \
+ tests/stub_cache_manager.cc \
$(SWAP_TEST_SOURCES)
tests_testUfs_LDADD= \
libsquid.la \
tests_testCoss_SOURCES= tests/testCoss.cc \
tests/testMain.cc \
tests/testCoss.h \
+ tests/stub_cache_manager.cc \
$(SWAP_TEST_SOURCES)
tests_testCoss_LDADD= \
libsquid.la \
pconn.cc \
peer_digest.cc \
peer_select.cc \
+ peer_sourcehash.cc \
+ peer_userhash.cc \
redirect.cc \
referer.cc \
refresh.cc \
#ifndef SQUID_MEM
#define SQUID_MEM
-class CacheManager;
class StoreEntry;
class MemPoolStats;
class MemPoolMeter;
public:
static void Init();
static void Report();
- static void RegisterWithCacheManager(CacheManager & manager);
static void Stats(StoreEntry *);
static void CleanIdlePools(void *unused);
static void Report(std::ostream &);
static void PoolReport(const MemPoolStats * mp_st, const MemPoolMeter * AllMeter, std::ostream &);
+
+protected:
+ static void RegisterWithCacheManager(void);
};
#endif /* SQUID_MEM */
PROF_stop(MemBuf_consume);
}
-// calls memcpy, appends exactly size bytes, extends buffer if needed
+/**
+ * calls memcpy, appends exactly size bytes,
+ * extends buffer or creates buffer if needed.
+ */
void MemBuf::append(const char *newContent, mb_size_t sz)
{
assert(sz >= 0);
- assert(buf);
+ assert(buf || (0==capacity && 0==size));
assert(!stolen); /* not frozen */
PROF_start(MemBuf_append);
PROF_stop(MemBuf_append);
}
-// updates content size after external append
+/// updates content size after external append
void MemBuf::appended(mb_size_t sz)
{
assert(size + sz <= capacity);
}
}
+static void
+xprofRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("cpu_profile", "CPU Profiling Stats", xprof_summary, 0, 1);
+}
+
+// FIXME:
+// this gets colled once per event. This doesn't seem to make much sense,
+// does it?
static hrtime_t now;
static void
xprof_Init(void)
xprof_delta = xprof_verystart = xprof_start_t = now;
xprof_inited = 1;
-}
-void
-xprofRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("cpu_profile", "CPU Profiling Stats", xprof_summary, 0, 1);
+ xprofRegisterWithCacheManager(); //moved here so it's not double-init'ed
}
void
#include "Store.h"
#include "HttpRequest.h"
#include "HttpReply.h"
+#include "TextException.h"
#include "errorpage.h"
#if USE_ADAPTATION
#include "adaptation/Service.h"
#endif
+// implemented in client_side_reply.cc until sides have a common parent
+extern void purgeEntriesByUrl(HttpRequest * req, const char *url);
+
+
ServerStateData::ServerStateData(FwdState *theFwdState): AsyncJob("ServerStateData"),requestSender(NULL)
#if USE_ADAPTATION
, adaptedHeadSource(NULL)
}
}
-// called by noteAdaptationAnswer(), HTTP server overwrites this
+// Compares hosts in urls, returns false if different, no sheme, or no host.
+static bool
+sameUrlHosts(const char *url1, const char *url2)
+{
+ // XXX: Want urlHostname() here, but it uses static storage and copying
+ const char *host1 = strchr(url1, ':');
+ const char *host2 = strchr(url2, ':');
+
+ if (host1 && host2) {
+ // skip scheme slashes
+ do {
+ ++host1;
+ ++host2;
+ } while (*host1 == '/' && *host2 == '/');
+
+ if (!*host1)
+ return false; // no host
+
+ // increment while the same until we reach the end of the URL/host
+ while (*host1 && *host1 != '/' && *host1 == *host2) {
+ ++host1;
+ ++host2;
+ }
+ return *host1 == *host2;
+ }
+
+ return false; // no URL scheme
+}
+
+// purges entries that match the value of a given HTTP [response] header
+static void
+purgeEntriesByHeader(HttpRequest *req, const char *reqUrl, HttpMsg *rep, http_hdr_type hdr)
+{
+ const char *hdrUrl, *absUrl;
+
+ absUrl = NULL;
+ hdrUrl = rep->header.getStr(hdr);
+ if (hdrUrl == NULL) {
+ return;
+ }
+
+ /*
+ * If the URL is relative, make it absolute so we can find it.
+ * If it's absolute, make sure the host parts match to avoid DOS attacks
+ * as per RFC 2616 13.10.
+ */
+ if (urlIsRelative(hdrUrl)) {
+ absUrl = urlMakeAbsolute(req, hdrUrl);
+ if (absUrl != NULL) {
+ hdrUrl = absUrl;
+ }
+ } else if (!sameUrlHosts(reqUrl, hdrUrl)) {
+ return;
+ }
+
+ purgeEntriesByUrl(req, hdrUrl);
+
+ if (absUrl != NULL) {
+ safe_free(absUrl);
+ }
+}
+
+// some HTTP methods should purge matching cache entries
+void
+ServerStateData::maybePurgeOthers()
+{
+ // only some HTTP methods should purge matching cache entries
+ if (!request->method.purgesOthers())
+ return;
+
+ // and probably only if the response was successful
+ if (theFinalReply->sline.status >= 400)
+ return;
+
+ // XXX: should we use originalRequest() here?
+ const char *reqUrl = urlCanonical(request);
+ debugs(88, 5, "maybe purging due to " << RequestMethodStr(request->method) << ' ' << reqUrl);
+ purgeEntriesByUrl(request, reqUrl);
+ purgeEntriesByHeader(request, reqUrl, theFinalReply, HDR_LOCATION);
+ purgeEntriesByHeader(request, reqUrl, theFinalReply, HDR_CONTENT_LOCATION);
+}
+
+// called (usually by kids) when we have final (possibly adapted) reply headers
void
ServerStateData::haveParsedReplyHeaders()
{
- // default does nothing
+ Must(theFinalReply);
+ maybePurgeOthers();
}
HttpRequest *
if (entry->isEmpty()) {
debugs(11,9, HERE << "creating ICAP error entry after ICAP failure");
- ErrorState *err =
- errorCon(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
+ ErrorState *err = errorCon(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
err->xerrno = errno;
fwd->fail(err);
fwd->dontRetry(true);
protected:
// kids customize these
- virtual void haveParsedReplyHeaders(); /**< default does nothing */
+ virtual void haveParsedReplyHeaders(); /**< called when got final headers */
virtual void completeForwarding(); /**< default calls fwd->complete() */
// BodyConsumer for HTTP: consume request body.
private:
void quitIfAllDone(); /**< successful termination */
void sendBodyIsTooLargeError();
+ void maybePurgeOthers();
HttpReply *theVirginReply; /**< reply received from the origin server */
HttpReply *theFinalReply; /**< adapted reply from ICAP or virgin reply */
#include "config.h"
-/* forward decls */
-
-class CacheManager;
-
/** todo checks to wrap this include properly */
#include <ostream>
void add
(String const *);
- void registerWithCacheManager(CacheManager & manager);
+ StringRegistry();
void remove
(String const *);
/// \ingroup StoreAPI
SQUIDCEXTERN void storeInit(void);
-/// \ingroup StoreAPI
-extern void storeRegisterWithCacheManager(CacheManager & manager);
-
/// \ingroup StoreAPI
SQUIDCEXTERN void storeConfigure(void);
Vector<StoreFileSystem*> *StoreFileSystem::_FileSystems = NULL;
void
-StoreFileSystem::RegisterAllFsWithCacheManager(CacheManager & manager)
+StoreFileSystem::RegisterAllFsWithCacheManager(void)
{
for (iterator i = GetFileSystems().begin(); i != GetFileSystems().end(); ++i)
- (*i)->registerWithCacheManager(manager);
+ (*i)->registerWithCacheManager();
}
void
/* no filesystem is required to export statistics */
void
-StoreFileSystem::registerWithCacheManager(CacheManager & manager)
+StoreFileSystem::registerWithCacheManager(void)
{}
* given StoreEntry. A maxobjsize of -1 means 'any size'.
*/
-class CacheManager;
class SwapDir;
/**
{
public:
- static void RegisterAllFsWithCacheManager(CacheManager & manager);
static void SetupAllFs();
static void FsAdd(StoreFileSystem &);
static void FreeAllFs();
virtual char const *type () const = 0;
virtual SwapDir *createSwapDir() = 0;
virtual void done() = 0;
- virtual void registerWithCacheManager(CacheManager & manager);
virtual void setup() = 0;
// Not implemented
StoreFileSystem(StoreFileSystem const &);
protected:
bool initialised;
+ virtual void registerWithCacheManager(void);
private:
static Vector<StoreFileSystem*> &GetFileSystems();
static Vector<StoreFileSystem*> *_FileSystems;
+ static void RegisterAllFsWithCacheManager(void);
};
// TODO: Kill this typedef!
void dump() const
{
- fwrite(data, length, 1, stderr);
- fwrite("\n", 1, 1, stderr);
+ if(fwrite(data, length, 1, stderr)) {}
+ if(fwrite("\n", 1, 1, stderr)) {}
}
struct
virtual ~StoreSearch() {}
/* not ready yet
- void asList(void (*) (List<StoreEntryPointer), void *cbdata);
+ void asList(void (*) (CbDataList<StoreEntryPointer), void *cbdata);
*/
/* callback the client when a new StoreEntry is available
* or an error occurs
return lhs - rhs;
}
-void
-StringRegistry::registerWithCacheManager(CacheManager & manager)
+StringRegistry::StringRegistry()
{
- manager.registerAction("strings",
+#if DEBUGSTRINGS
+ CacheManager::GetInstance()->registerAction("strings",
"Strings in use in squid", Stat, 0, 1);
+#endif
}
void
*/
#include "assert.h"
+#include <cstring>
String::String() : size_(0), len_(0), buf_ (NULL)
{
SQUIDCEXTERN LPCRITICAL_SECTION dbg_mutex;
void WIN32_ExceptionHandlerCleanup(void);
static int s_iInitCount = 0;
-#endif
+static HANDLE NotifyAddrChange_thread = INVALID_HANDLE_VALUE;
+#endif /* _SQUID_MSWIN_ */
static int Squid_Aborting = 0;
-static HANDLE NotifyAddrChange_thread = INVALID_HANDLE_VALUE;
#undef NotifyAddrChange
typedef DWORD(WINAPI * PFNotifyAddrChange) (OUT PHANDLE, IN LPOVERLAPPED);
WIN32_Exit();
}
+#ifdef _SQUID_MSWIN_
void
WIN32_IpAddrChangeMonitorExit()
{
DWORD status = ERROR_SUCCESS;
- if (NotifyAddrChange_thread == INVALID_HANDLE_VALUE) {
+ if (NotifyAddrChange_thread != INVALID_HANDLE_VALUE) {
TerminateThread(NotifyAddrChange_thread, status);
CloseHandle(NotifyAddrChange_thread);
}
}
+#endif
void
WIN32_Exit()
DWORD status = ERROR_SUCCESS;
DWORD threadID = 0, ThrdParam = 0;
- if (WIN32_run_mode == _WIN_SQUID_RUN_MODE_SERVICE) {
+ if ((WIN32_run_mode == _WIN_SQUID_RUN_MODE_SERVICE) && (Config.onoff.WIN32_IpAddrChangeMonitor)) {
NotifyAddrChange_thread = CreateThread(NULL, 0, WIN32_IpAddrChangeMonitor,
&ThrdParam, 0, &threadID);
if (NotifyAddrChange_thread == NULL) {
}
return status;
}
-#endif
+#endif /* _SQUID_MSWIN_ */
int WIN32_Subsystem_Init(int * argc, char *** argv)
{
fdwAccess); /* specify access */
if (schService == NULL) {
- fprintf(stderr, "%s: ERROR: Could not open Service %s\n", appname,
+ fprintf(stderr, "%s: ERROR: Could not open Service %s\n", APP_SHORTNAME,
WIN32_Service_name);
exit(1);
} else {
fdwControl, /* control value to send */
&ssStatus)) { /* address of status info */
fprintf(stderr, "%s: ERROR: Could not Control Service %s\n",
- appname, WIN32_Service_name);
+ APP_SHORTNAME, WIN32_Service_name);
exit(1);
} else {
/* Print the service status. */
static OBJH fvdbDumpForw;
static FREE fvdbFreeEntry;
static void fvdbClear(void);
-static void fvdbRegisterWithCacheManager(CacheManager & manager);
+static void fvdbRegisterWithCacheManager();
#endif
static int LogfileStatus = LOG_DISABLE;
/*LFT_REQUEST_QUERY, * // * this is not needed. see strip_query_terms */
LFT_REQUEST_VERSION,
- /*LFT_REQUEST_SIZE_TOTAL, */
+ LFT_REQUEST_SIZE_TOTAL,
/*LFT_REQUEST_SIZE_LINE, */
/*LFT_REQUEST_SIZE_HEADERS, */
/*LFT_REQUEST_SIZE_BODY, */
/*LFT_REPLY_SIZE_BODY_NO_TE, */
LFT_TAG,
+ LFT_IO_SIZE_TOTAL,
LFT_EXT_LOG,
LFT_PERCENT /* special string cases for escaped chars */
{">v", LFT_REQUEST_VERSION},
{"rv", LFT_REQUEST_VERSION},
- /*{ ">st", LFT_REQUEST_SIZE_TOTAL }, */
+ { ">st", LFT_REQUEST_SIZE_TOTAL },
/*{ ">sl", LFT_REQUEST_SIZE_LINE }, * / / * the request line "GET ... " */
/*{ ">sh", LFT_REQUEST_SIZE_HEADERS }, */
/*{ ">sb", LFT_REQUEST_SIZE_BODY }, */
/*{ "<sB", LFT_REPLY_SIZE_BODY_NO_TE }, */
{"et", LFT_TAG},
+ {"st", LFT_IO_SIZE_TOTAL},
{"ea", LFT_EXT_LOG},
{"%", LFT_PERCENT},
case LFT_REQUEST_VERSION:
snprintf(tmp, sizeof(tmp), "%d.%d", (int) al->http.version.major, (int) al->http.version.minor);
-
out = tmp;
+ break;
+ case LFT_REQUEST_SIZE_TOTAL:
+ outint = al->cache.requestSize;
+ dooff = 1;
break;
- /*case LFT_REQUEST_SIZE_TOTAL: */
/*case LFT_REQUEST_SIZE_LINE: */
/*case LFT_REQUEST_SIZE_HEADERS: */
/*case LFT_REQUEST_SIZE_BODY: */
/*case LFT_REQUEST_SIZE_BODY_NO_TE: */
case LFT_REPLY_SIZE_TOTAL:
- outoff = al->cache.size;
-
+ outoff = al->cache.replySize;
dooff = 1;
-
break;
case LFT_REPLY_HIGHOFFSET:
break;
+ case LFT_IO_SIZE_TOTAL:
+ outint = al->cache.requestSize + al->cache.replySize;
+ doint = 1;
+ break;
+
case LFT_EXT_LOG:
if (al->request)
out = al->request->extacl_log.buf();
client,
log_tags[al->cache.code],
al->http.code,
- al->cache.size,
+ al->cache.replySize,
al->_private.method_str,
al->url,
user ? user : dash_str,
client,
log_tags[al->cache.code],
al->http.code,
- al->cache.size,
+ al->cache.replySize,
al->_private.method_str,
al->url,
user ? user : dash_str,
al->url,
al->http.version.major, al->http.version.minor,
al->http.code,
- al->cache.size,
+ al->cache.replySize,
log_tags[al->cache.code],
hier_strings[al->hier.code]);
xstrncpy(hl->host, cache_peer, SQUIDHOSTNAMELEN);
}
+static void
+accessLogRegisterWithCacheManager(void)
+{
+#if FORW_VIA_DB
+ fvdbRegisterWithCacheManager();
+#endif
+}
+
void
accessLogInit(void)
{
customlog *log;
+
+ accessLogRegisterWithCacheManager();
+
assert(sizeof(log_tags) == (LOG_TYPE_MAX + 1) * sizeof(char *));
for (log = Config.Log.accesslogs; log; log = log->next) {
#endif
}
-void
-accessLogRegisterWithCacheManager(CacheManager & manager)
-{
-#if FORW_VIA_DB
-
- fvdbRegisterWithCacheManager(manager);
-
-#endif
-}
-
const char *
accessLogTime(time_t t)
{
}
static void
-fvdbRegisterWithCacheManager(CacheManager & manager)
+fvdbRegisterWithCacheManager(void)
{
- manager.registerAction("via_headers", "Via Request Headers", fvdbDumpVia, 0, 1);
- manager.registerAction("forw_headers", "X-Forwarded-For Request Headers",
+ CacheManager *manager=CacheManager::GetInstance();
+ manager->registerAction("via_headers", "Via Request Headers", fvdbDumpVia, 0, 1);
+ manager->registerAction("forw_headers", "X-Forwarded-For Request Headers",
fvdbDumpForw, 0, 1);
}
{
debugs(93, 8, "AccessCheckCallbackWrapper: answer=" << answer);
AccessCheck *ac = (AccessCheck*)data;
- ac->noteAnswer(answer);
+
+ /** \todo AYJ 2008-06-12: If answer == ACCESS_REQ_PROXY_AUTH
+ * we should be kicking off an authentication before continuing
+ * with this request. see bug 2400 for details.
+ */
+ ac->noteAnswer(answer==ACCESS_ALLOWED);
}
void
check_PROGRAMS = testHeaders
## test .h correctness
-testHeaders: *.h
+testHeaders: $(top_srcdir)/src/adaptation/*.h
$(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "." || exit 1
## No such file...
/* explicit instantiation required for some systems */
/// \cond AUTODOCS-IGNORE
-template cbdata_type List<int>::CBDATA_List;
+template cbdata_type CbDataList<int>::CBDATA_CbDataList;
/// \endcond
/**
*/
struct as_info
{
- List<int> *as_number;
+ CbDataList<int> *as_number;
time_t expires; /* NOTUSED */
};
/* PUBLIC */
int
-asnMatchIp(List<int> *data, IPAddress &addr)
+asnMatchIp(CbDataList<int> *data, IPAddress &addr)
{
struct squid_radix_node *rn;
as_info *e;
m_ADDR m_addr;
- List<int> *a = NULL;
- List<int> *b = NULL;
+ CbDataList<int> *a = NULL;
+ CbDataList<int> *b = NULL;
debugs(53, 3, "asnMatchIp: Called for " << addr );
void
ACLASN::prepareForUse()
{
- for (List<int> *i = data; i; i = i->
+ for (CbDataList<int> *i = data; i; i = i->
next)
asnCacheStart(i->element);
}
+static void
+asnRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->registerAction("asndb", "AS Number Database", asnStats, 0, 1);
+}
+
/* initialize the radix tree structure */
SQUIDCEXTERN int squid_max_keylen; /* yuck.. this is in lib/radix.c */
squid_rn_init();
squid_rn_inithead(&AS_tree_head, 8);
-}
-void
-asnRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("asndb", "AS Number Database", asnStats, 0, 1);
+ asnRegisterWithCacheManager();
}
void
rtentry_t *e;
struct squid_radix_node *rn;
- List<int> **Tail = NULL;
- List<int> *q = NULL;
+ CbDataList<int> **Tail = NULL;
+ CbDataList<int> *q = NULL;
as_info *asinfo = NULL;
IPAddress mask;
debugs(53, 3, "asnAddNet: Warning: Found a network with multiple AS numbers!");
for (Tail = &asinfo->as_number; *Tail; Tail = &(*Tail)->next);
- q = new List<int> (as_number);
+ q = new CbDataList<int> (as_number);
*(Tail) = q;
e->e_info = asinfo;
}
} else {
- q = new List<int> (as_number);
+ q = new CbDataList<int> (as_number);
asinfo = (as_info *)xmalloc(sizeof(as_info));
asinfo->as_number = q;
rn = squid_rn_addroute(&e->e_addr, &e->e_mask, AS_tree_head, e->e_nodes);
static void
destroyRadixNodeInfo(as_info * e_info)
{
- List<int> *prev = NULL;
- List<int> *data = e_info->as_number;
+ CbDataList<int> *prev = NULL;
+ CbDataList<int> *data = e_info->as_number;
while (data) {
prev = data;
{
StoreEntry *sentry = (StoreEntry *)_sentry;
rtentry_t *e = (rtentry_t *) rn;
- List<int> *q;
+ CbDataList<int> *q;
as_info *asinfo;
char buf[MAX_IPSTRLEN];
IPAddress addr;
{
wordlist *W = NULL;
char buf[32];
- List<int> *ldata = data;
+ CbDataList<int> *ldata = data;
while (ldata != NULL) {
snprintf(buf, sizeof(buf), "%d", ldata->element);
void
ACLASN::parse()
{
- List<int> **curlist = &data;
- List<int> **Tail;
- List<int> *q = NULL;
+ CbDataList<int> **curlist = &data;
+ CbDataList<int> **Tail;
+ CbDataList<int> *q = NULL;
char *t = NULL;
for (Tail = curlist; *Tail; Tail = &((*Tail)->next));
while ((t = strtokFile())) {
- q = new List<int> (atoi(t));
+ q = new CbDataList<int> (atoi(t));
*(Tail) = q;
Tail = &q->next;
}
## Special Universal .h dependency test script
## aborts if error encountered
-testHeaders: basic/*.h digest/*.h ntlm/*.h negotiate/*.h
+testHeaders: $(top_srcdir)/src/auth/basic/*.h $(top_srcdir)/src/auth/digest/*.h $(top_srcdir)/src/auth/ntlm/*.h $(top_srcdir)/src/auth/negotiate/*.h
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "basic" || exit 1
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "digest" || exit 1
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "ntlm" || exit 1
parse_time_t(&credentialsTTL);
} else if (strcasecmp(param_str, "casesensitive") == 0) {
parse_onoff(&casesensitive);
+ } else if (strcasecmp(param_str, "utf8") == 0) {
+ parse_onoff(&utf8);
} else {
debugs(29, DBG_CRITICAL, HERE << "unrecognised basic auth scheme parameter '" << param_str << "'");
}
}
void
-AuthBasicConfig::registerWithCacheManager(CacheManager & manager)
+AuthBasicConfig::registerWithCacheManager(void)
{
- manager.registerAction("basicauthenticator",
+ CacheManager::GetInstance()->
+ registerAction("basicauthenticator",
"Basic User Authenticator Stats",
authenticateBasicStats, 0, 1);
}
r->handler = handler;
r->data = cbdataReference(data);
r->auth_user_request = auth_user_request;
- xstrncpy(user, rfc1738_escape(username()), sizeof(user));
- xstrncpy(pass, rfc1738_escape(passwd), sizeof(pass));
+ if (basicConfig.utf8) {
+ latin1_to_utf8(user, sizeof(user), username());
+ latin1_to_utf8(pass, sizeof(pass), passwd);
+ xstrncpy(user, rfc1738_escape(user), sizeof(user));
+ xstrncpy(pass, rfc1738_escape(pass), sizeof(pass));
+ } else {
+ xstrncpy(user, rfc1738_escape(username()), sizeof(user));
+ xstrncpy(pass, rfc1738_escape(passwd), sizeof(pass));
+ }
snprintf(buf, sizeof(buf), "%s %s\n", user, pass);
helperSubmit(basicauthenticators, buf, authenticateBasicHandleReply, r);
}
virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
virtual void init(AuthConfig *);
virtual void parse(AuthConfig *, int, char *);
- virtual void registerWithCacheManager(CacheManager & manager);
+ virtual void registerWithCacheManager(void);
virtual const char * type() const;
int authenticateChildren;
int authenticateConcurrency;
wordlist *authenticate;
time_t credentialsTTL;
int casesensitive;
+ int utf8;
};
#endif
}
void
-AuthDigestConfig::registerWithCacheManager(CacheManager & manager)
+AuthDigestConfig::registerWithCacheManager(void)
{
- manager.registerAction("digestauthenticator",
+ CacheManager::GetInstance()->
+ registerAction("digestauthenticator",
"Digest User Authenticator Stats",
authenticateDigestStats, 0, 1);
}
parse_onoff(&CheckNonceCount);
} else if (strcasecmp(param_str, "post_workaround") == 0) {
parse_onoff(&PostWorkaround);
+ } else if (strcasecmp(param_str, "utf8") == 0) {
+ parse_onoff(&utf8);
} else {
debugs(29, 0, "unrecognised digest auth scheme parameter '" << param_str << "'");
}
r->data = cbdataReference(data);
r->auth_user_request = this;
AUTHUSERREQUESTLOCK(r->auth_user_request, "r");
- snprintf(buf, 8192, "\"%s\":\"%s\"\n", digest_user->username(), realm);
+ if (digestConfig.utf8) {
+ char user[1024];
+ latin1_to_utf8(user, sizeof(user), digest_user->username());
+ snprintf(buf, 8192, "\"%s\":\"%s\"\n", user, realm);
+ } else {
+ snprintf(buf, 8192, "\"%s\":\"%s\"\n", digest_user->username(), realm);
+ }
helperSubmit(digestauthenticators, buf, authenticateDigestHandleReply, r);
}
virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
virtual void init(AuthConfig *);
virtual void parse(AuthConfig *, int, char *);
- virtual void registerWithCacheManager(CacheManager & manager);
+ virtual void registerWithCacheManager(void);
virtual const char * type() const;
int authenticateChildren;
char *digestAuthRealm;
int NonceStrictness;
int CheckNonceCount;
int PostWorkaround;
+ int utf8;
};
typedef class AuthDigestConfig auth_digest_config;
\ingroup AuthNegotiateAPI
*/
+/**
+ * Maximum length (buffer size) for token strings.
+ */
+// AYJ: must match re-definition in helpers/negotiate_auth/squid_kerb_auth/squid_kerb_auth.c
+#define MAX_AUTHTOKEN_LEN 32768
+
static void
authenticateNegotiateReleaseServer(AuthUserRequest * auth_user_request);
}
void
-AuthNegotiateConfig::registerWithCacheManager(CacheManager & manager)
+AuthNegotiateConfig::registerWithCacheManager(void)
{
- manager.registerAction("negotiateauthenticator",
+ CacheManager::GetInstance()->
+ registerAction("negotiateauthenticator",
"Negotiate User Authenticator Stats",
authenticateNegotiateStats, 0, 1);
}
AuthNegotiateUserRequest::module_start(RH * handler, void *data)
{
authenticateStateData *r = NULL;
- static char buf[8192];
+ static char buf[MAX_AUTHTOKEN_LEN];
negotiate_user_t *negotiate_user;
AuthUser *auth_user = user();
AUTHUSERREQUESTLOCK(r->auth_user_request, "r");
if (auth_state == AUTHENTICATE_STATE_INITIAL) {
- snprintf(buf, 8192, "YR %s\n", client_blob); //CHECKME: can ever client_blob be 0 here?
+ snprintf(buf, MAX_AUTHTOKEN_LEN, "YR %s\n", client_blob); //CHECKME: can ever client_blob be 0 here?
} else {
- snprintf(buf, 8192, "KK %s\n", client_blob);
+ snprintf(buf, MAX_AUTHTOKEN_LEN, "KK %s\n", client_blob);
}
waiting = 1;
virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
virtual void init(AuthConfig *);
virtual void parse(AuthConfig *, int, char *);
- virtual void registerWithCacheManager(CacheManager & manager);
+ virtual void registerWithCacheManager(void);
virtual const char * type() const;
int authenticateChildren;
int keep_alive;
}
void
-AuthNTLMConfig::registerWithCacheManager(CacheManager & manager)
+AuthNTLMConfig::registerWithCacheManager(void)
{
- manager.registerAction("ntlmauthenticator",
+ CacheManager::GetInstance()->
+ registerAction("ntlmauthenticator",
"NTLM User Authenticator Stats",
authenticateNTLMStats, 0, 1);
}
if (!keep_alive) {
/* drop the connection */
- rep->header.delByName("keep-alive");
request->flags.proxy_keepalive = 0;
}
} else {
case AUTHENTICATE_STATE_FAILED:
/* here it makes sense to drop the connection, as auth is
* tied to it, even if MAYBE the client could handle it - Kinkie */
- rep->header.delByName("keep-alive");
request->flags.proxy_keepalive = 0;
/* fall through */
virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
virtual void init(AuthConfig *);
virtual void parse(AuthConfig *, int, char *);
- virtual void registerWithCacheManager(CacheManager & manager);
+ virtual void registerWithCacheManager(void);
virtual const char * type() const;
int authenticateChildren;
int keep_alive;
return rv;
}
+static void
+authenticateRegisterWithCacheManager(authConfig * config)
+{
+ for (authConfig::iterator i = config->begin(); i != config->end(); ++i) {
+ AuthConfig *scheme = *i;
+ scheme->registerWithCacheManager();
+ }
+}
+
void
authenticateInit(authConfig * config)
{
AuthUser::cacheInit();
else
AuthUser::CachedACLsReset();
-}
-void
-authenticateRegisterWithCacheManager(authConfig * config, CacheManager & manager)
-{
- for (authConfig::iterator i = config->begin(); i != config->end(); ++i) {
- AuthConfig *scheme = *i;
- scheme->registerWithCacheManager(manager);
- }
+ authenticateRegisterWithCacheManager(&Config.authConfiguration);
}
void
/// \ingroup AuthAPI
extern void authenticateInit(authConfig *);
/// \ingroup AuthAPI
-extern void authenticateRegisterWithCacheManager(authConfig * config, CacheManager & manager);
-/// \ingroup AuthAPI
extern void authenticateShutdown(void);
/// \ingroup AuthAPI
extern int authenticateAuthUserInuse(AuthUser * auth_user);
}
int
-parseConfigFile(const char *file_name, CacheManager & manager)
+parseConfigFile(const char *file_name)
{
int err_count = 0;
+ CacheManager *manager=CacheManager::GetInstance();
configFreeMemory();
}
if (opt_send_signal == -1) {
- manager.registerAction("config",
+ manager->registerAction("config",
"Current Squid Configuration",
dump_config,
1, 1);
if (Config.onoff.httpd_suppress_version_string)
visible_appname_string = (char *)appname_string;
else
- visible_appname_string = (char *)full_appname_string;
+ visible_appname_string = (char const *)APP_FULLNAME;
#if USE_DNSSERVERS
requirePathnameExists("Icon Directory", Config.icons.directory);
- requirePathnameExists("Error Directory", Config.errorDirectory);
+ if(Config.errorDirectory)
+ requirePathnameExists("Error Directory", Config.errorDirectory);
#if HTTP_VIOLATIONS
} else if (!strcasecmp(token, "htcp-oldsquid")) {
p->options.htcp = 1;
p->options.htcp_oldsquid = 1;
+ } else if (!strcasecmp(token, "htcp-no-clr")) {
+ if (p->options.htcp_only_clr)
+ fatalf("parse_peer: can't set htcp-no-clr and htcp-only-clr simultaneously");
+ p->options.htcp = 1;
+ p->options.htcp_no_clr = 1;
+ } else if (!strcasecmp(token, "htcp-no-purge-clr")) {
+ p->options.htcp = 1;
+ p->options.htcp_no_purge_clr = 1;
+ } else if (!strcasecmp(token, "htcp-only-clr")) {
+ if (p->options.htcp_no_clr)
+ fatalf("parse_peer: can't set htcp-no-clr and htcp-only-clr simultaneously");
+ p->options.htcp = 1;
+ p->options.htcp_only_clr = 1;
+ } else if (!strcasecmp(token, "htcp-forward-clr")) {
+ p->options.htcp = 1;
+ p->options.htcp_forward_clr = 1;
#endif
} else if (!strcasecmp(token, "no-netdb-exchange")) {
p->options.no_netdb_exchange = 1;
-#if USE_CARP
} else if (!strcasecmp(token, "carp")) {
if (p->type != PEER_PARENT)
p->options.carp = 1;
-#endif
+ } else if (!strcasecmp(token, "userhash")) {
+ if (p->type != PEER_PARENT)
+ fatalf("parse_peer: non-parent userhash peer %s/%d\n", p->host, p->http_port);
+
+ p->options.userhash = 1;
+
+ } else if (!strcasecmp(token, "sourcehash")) {
+ if (p->type != PEER_PARENT)
+ fatalf("parse_peer: non-parent sourcehash peer %s/%d\n", p->host, p->http_port);
+
+ p->options.sourcehash = 1;
+
#if DELAY_POOLS
} else if (!strcasecmp(token, "no-delay")) {
*head = p;
- peerClearRR(p);
+ peerClearRRStart();
}
static void
wordlistAdd(list, token);
}
+#if 0 /* now unused */
static int
check_null_wordlist(wordlist * w)
{
return w == NULL;
}
+#endif
static int
check_null_acl_access(acl_access * a)
}
#endif
} else if (strcmp(token, "tproxy") == 0) {
+ if(s->intercepted || s->accel) {
+ debugs(3,DBG_CRITICAL, "http(s)_port: TPROXY option requires its own interception port. It cannot be shared.");
+ self_destruct();
+ }
s->spoof_client_ip = 1;
IPInterceptor.StartTransparency();
/* Log information regarding the port modes under transparency. */
} else {
self_destruct();
}
+
+ if( s->spoof_client_ip && (s->intercepted || s->accel) ) {
+ debugs(3,DBG_CRITICAL, "http(s)_port: TPROXY option requires its own interception port. It cannot be shared.");
+ self_destruct();
+ }
}
static http_port_list *
#include "fde.h"
#include "SquidTime.h"
#include "wordlist.h"
+#include "Debug.h"
/**
\defgroup CacheManagerInternal Cache Manager Internals
/// \ingroup CacheManagerInternal
#define MGR_PASSWD_SZ 128
-/// \ingroup CacheManagerInternal
-typedef struct
-{
- StoreEntry *entry;
- char *action;
- char *user_name;
- char *passwd;
-} cachemgrStateData;
-
-static CacheManagerAction *cachemgrFindAction(const char *action);
-static cachemgrStateData *cachemgrParseUrl(const char *url);
-static void cachemgrParseHeaders(cachemgrStateData * mgr, const HttpRequest * request);
-static int cachemgrCheckPassword(cachemgrStateData *);
-static void cachemgrStateFree(cachemgrStateData * mgr);
-static char *cachemgrPasswdGet(cachemgr_passwd *, const char *);
-static const char *cachemgrActionProtection(const CacheManagerAction * at);
-static OBJH cachemgrShutdown;
-static OBJH cachemgrReconfigure;
-static OBJH cachemgrMenu;
-static OBJH cachemgrOfflineToggle;
-
-/// \ingroup CacheManagerInternal
-CacheManagerAction *ActionTable = NULL;
+/**
+ \ingroup CacheManagerInternals
+ * Constructor. Its purpose is to register internal commands
+ */
CacheManager::CacheManager()
{
- registerAction("menu", "This Cachemanager Menu", cachemgrMenu, 0, 1);
- registerAction("shutdown",
- "Shut Down the Squid Process",
- cachemgrShutdown, 1, 1);
- registerAction("reconfigure",
- "Reconfigure the Squid Process",
- cachemgrReconfigure, 1, 1);
- registerAction("offline_toggle",
- "Toggle offline_mode setting",
- cachemgrOfflineToggle, 1, 1);
+ registerAction(new OfflineToggleAction);
+ registerAction(new ShutdownAction);
+ registerAction(new ReconfigureAction);
+ registerAction(new MenuAction(this));
}
+/**
+ \ingroup CacheManagerAPI
+ * Registers a C-style action, which is implemented as a pointer to a function
+ * taking as argument a pointer to a StoreEntry and returning void.
+ * Implemented via CacheManagerActionLegacy.
+ */
void
CacheManager::registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic)
{
- CacheManagerAction *a;
- CacheManagerAction **A;
+ debugs(16, 3, "CacheManager::registerAction: registering legacy " << action);
+ registerAction(new CacheManagerActionLegacy(action,desc,pw_req_flag,atomic,handler));
+}
+/**
+ \ingroup CacheManagerAPI
+ * Registers a C++-style action, via a poiner to a subclass of
+ * a CacheManagerAction object, whose run() method will be invoked when
+ * CacheManager identifies that the user has requested the action.
+ */
+void
+CacheManager::registerAction(CacheManagerAction *anAction)
+{
+ char *action = anAction->action;
if (findAction(action) != NULL) {
- debugs(16, 3, "CacheManager::registerAction: Duplicate '" << action << "'");
+ debugs(16, 2, "CacheManager::registerAction: Duplicate '" << action << "'. Skipping.");
return;
}
assert (strstr (" ", action) == NULL);
- a = (CacheManagerAction *)xcalloc(1, sizeof(CacheManagerAction));
- a->action = xstrdup(action);
- a->desc = xstrdup(desc);
- a->handler = handler;
- a->flags.pw_req = pw_req_flag;
- a->flags.atomic = atomic;
- for (A = &ActionTable; *A; A = &(*A)->next);
- *A = a;
+ ActionsList += anAction;
debugs(16, 3, "CacheManager::registerAction: registered " << action);
}
+
+/**
+ \ingroup CacheManagerInternal
+ * Locates an action in the actions registry ActionsList.
+\retval NULL if Action not found
+\retval CacheManagerAction* if the action was found
+ */
CacheManagerAction *
CacheManager::findAction(char const * action)
{
- return cachemgrFindAction(action);
-}
-
-/// \ingroup CacheManagerInternal
-static CacheManagerAction *
-cachemgrFindAction(const char *action)
-{
- CacheManagerAction *a;
+ CacheManagerActionList::iterator a;
- for (a = ActionTable; a != NULL; a = a->next) {
- if (0 == strcmp(a->action, action))
- return a;
+ debugs(16, 5, "CacheManager::findAction: looking for action " << action);
+ for ( a = ActionsList.begin(); a != ActionsList.end(); a++) {
+ if (0 == strcmp((*a)->action, action)) {
+ debugs(16, 6, " found");
+ return *a;
+ }
}
+ debugs(16, 6, "Action not found.");
return NULL;
}
-/// \ingroup CacheManagerInternal
-static cachemgrStateData *
-cachemgrParseUrl(const char *url)
+/**
+ \ingroup CacheManagerInternal
+ * define whether the URL is a cache-manager URL and parse the action
+ * requested by the user. Checks via CacheManager::ActionProtection() that the
+ * item is accessible by the user.
+ \retval CacheManager::cachemgrStateData state object for the following handling
+ \retval NULL if the action can't be found or can't be accessed by the user
+ */
+CacheManager::cachemgrStateData *
+CacheManager::ParseUrl(const char *url)
{
int t;
LOCAL_ARRAY(char, host, MAX_URL);
xstrncpy(request, "menu", MAX_URL);
#endif
- } else if ((a = cachemgrFindAction(request)) == NULL) {
- debugs(16, 1, "cachemgrParseUrl: action '" << request << "' not found");
+ } else if ((a = findAction(request)) == NULL) {
+ debugs(16, DBG_IMPORTANT, "CacheManager::ParseUrl: action '" << request << "' not found");
return NULL;
} else {
- prot = cachemgrActionProtection(a);
+ prot = ActionProtection(a);
if (!strcmp(prot, "disabled") || !strcmp(prot, "hidden")) {
- debugs(16, 1, "cachemgrParseUrl: action '" << request << "' is " << prot);
+ debugs(16, DBG_IMPORTANT, "CacheManager::ParseUrl: action '" << request << "' is " << prot);
return NULL;
}
}
}
/// \ingroup CacheManagerInternal
-static void
-cachemgrParseHeaders(cachemgrStateData * mgr, const HttpRequest * request)
+/*
+ \ingroup CacheManagerInternal
+ * Decodes the headers needed to perform user authentication and fills
+ * the details into the cachemgrStateData argument
+ */
+void
+CacheManager::ParseHeaders(cachemgrStateData * mgr, const HttpRequest * request)
{
const char *basic_cookie; /* base 64 _decoded_ user:passwd pair */
const char *passwd_del;
return;
if (!(passwd_del = strchr(basic_cookie, ':'))) {
- debugs(16, 1, "cachemgrParseHeaders: unknown basic_cookie format '" << basic_cookie << "'");
+ debugs(16, DBG_IMPORTANT, "CacheManager::ParseHeaders: unknown basic_cookie format '" << basic_cookie << "'");
return;
}
mgr->passwd = xstrdup(passwd_del + 1);
/* warning: this prints decoded password which maybe not what you want to do @?@ @?@ */
- debugs(16, 9, "cachemgrParseHeaders: got user: '" << mgr->user_name << "' passwd: '" << mgr->passwd << "'");
+ debugs(16, 9, "CacheManager::ParseHeaders: got user: '" << mgr->user_name << "' passwd: '" << mgr->passwd << "'");
}
/**
\retval 1 if mgr->password is "disable"
\retval !0 if mgr->password does not match configured password
*/
-static int
-cachemgrCheckPassword(cachemgrStateData * mgr)
+int
+CacheManager::CheckPassword(cachemgrStateData * mgr)
{
- char *pwd = cachemgrPasswdGet(Config.passwd_list, mgr->action);
- CacheManagerAction *a = cachemgrFindAction(mgr->action);
+ char *pwd = PasswdGet(Config.passwd_list, mgr->action);
+ CacheManagerAction *a = findAction(mgr->action);
+
+ debugs(16, 4, "CacheManager::CheckPassword for action " << mgr->action);
assert(a != NULL);
if (pwd == NULL)
}
/// \ingroup CacheManagerInternal
-static void
-cachemgrStateFree(cachemgrStateData * mgr)
+void
+CacheManager::StateFree(cachemgrStateData * mgr)
{
safe_free(mgr->action);
safe_free(mgr->user_name);
xfree(mgr);
}
-// API
+/**
+ \ingroup CacheManagerAPI
+ * Main entry point in the Cache Manager's activity. Gets called as part
+ * of the forward chain if the right URL is detected there. Initiates
+ * all needed internal work and renders the response.
+ */
void
-cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry)
+CacheManager::Start(int fd, HttpRequest * request, StoreEntry * entry)
{
cachemgrStateData *mgr = NULL;
ErrorState *err = NULL;
CacheManagerAction *a;
- debugs(16, 3, "objectcacheStart: '" << entry->url() << "'" );
+ debugs(16, 3, "CacheManager::Start: '" << entry->url() << "'" );
- if ((mgr = cachemgrParseUrl(entry->url())) == NULL) {
+ if ((mgr = ParseUrl(entry->url())) == NULL) {
err = errorCon(ERR_INVALID_URL, HTTP_NOT_FOUND, request);
err->url = xstrdup(entry->url());
errorAppendEntry(entry, err);
entry->lock();
entry->expires = squid_curtime;
- debugs(16, 5, "CACHEMGR: " << fd_table[fd].ipaddr << " requesting '" << mgr->action << "'");
+ debugs(16, 5, "CacheManager: " << fd_table[fd].ipaddr << " requesting '" << mgr->action << "'");
/* get additional info from request headers */
- cachemgrParseHeaders(mgr, request);
+ ParseHeaders(mgr, request);
/* Check password */
- if (cachemgrCheckPassword(mgr) != 0) {
+ if (CheckPassword(mgr) != 0) {
/* build error message */
ErrorState *err;
HttpReply *rep;
/* warn if user specified incorrect password */
if (mgr->passwd)
- debugs(16, 1, "CACHEMGR: " <<
+ debugs(16, DBG_IMPORTANT, "CacheManager: " <<
(mgr->user_name ? mgr->user_name : "<unknown>") << "@" <<
fd_table[fd].ipaddr << ": incorrect password for '" <<
mgr->action << "'" );
else
- debugs(16, 1, "CACHEMGR: " <<
+ debugs(16, DBG_IMPORTANT, "CacheManager: " <<
(mgr->user_name ? mgr->user_name : "<unknown>") << "@" <<
fd_table[fd].ipaddr << ": password needed for '" <<
mgr->action << "'" );
- rep = errorBuildReply(err);
+ rep = err->BuildHttpReply();
errorStateFree(err);
entry->complete();
- cachemgrStateFree(mgr);
+ StateFree(mgr);
return;
}
- debugs(16, 1, "CACHEMGR: " <<
+ debugs(16, DBG_IMPORTANT, "CacheManager: " <<
(mgr->user_name ? mgr->user_name : "<unknown>") << "@" <<
fd_table[fd].ipaddr << " requesting '" <<
mgr->action << "'" );
/* retrieve object requested */
- a = cachemgrFindAction(mgr->action);
+ a = findAction(mgr->action);
assert(a != NULL);
entry->buffer();
entry->replaceHttpReply(rep);
}
- a->handler(entry);
+ a->run(entry);
entry->flush();
if (a->flags.atomic)
entry->complete();
- cachemgrStateFree(mgr);
+ StateFree(mgr);
}
/// \ingroup CacheManagerInternal
-static void
-cachemgrShutdown(StoreEntry * entryunused)
+void CacheManager::ShutdownAction::run(StoreEntry *sentry)
{
- debugs(16, 0, "Shutdown by command.");
+ debugs(16, DBG_CRITICAL, "Shutdown by Cache Manager command.");
shut_down(0);
}
+/// \ingroup CacheManagerInternal
+CacheManager::ShutdownAction::ShutdownAction() : CacheManagerAction("shutdown","Shut Down the Squid Process", 1, 1) { }
/// \ingroup CacheManagerInternal
-static void
-cachemgrReconfigure(StoreEntry * sentry)
+void
+CacheManager::ReconfigureAction::run(StoreEntry * sentry)
{
- debug(16, 0) ("Reconfigure by command.\n");
+ debugs(16, DBG_IMPORTANT, "Reconfigure by Cache Manager command.");
storeAppendPrintf(sentry, "Reconfiguring Squid Process ....");
reconfigure(SIGHUP);
}
+/// \ingroup CacheManagerInternal
+CacheManager::ReconfigureAction::ReconfigureAction() : CacheManagerAction("reconfigure","Reconfigure Squid", 1, 1) { }
/// \ingroup CacheManagerInternal
-static void
-cachemgrOfflineToggle(StoreEntry * sentry)
+void
+CacheManager::OfflineToggleAction::run(StoreEntry * sentry)
{
Config.onoff.offline = !Config.onoff.offline;
- debugs(16, 0, "offline_mode now " << (Config.onoff.offline ? "ON" : "OFF") << ".");
+ debugs(16, DBG_IMPORTANT, "offline_mode now " << (Config.onoff.offline ? "ON" : "OFF") << " by Cache Manager request.");
storeAppendPrintf(sentry, "offline_mode is now %s\n",
Config.onoff.offline ? "ON" : "OFF");
}
-
/// \ingroup CacheManagerInternal
-static const char *
-cachemgrActionProtection(const CacheManagerAction * at)
+CacheManager::OfflineToggleAction::OfflineToggleAction() : CacheManagerAction ("offline_toggle", "Toggle offline_mode setting", 1, 1) { }
+
+/*
+ \ingroup CacheManagerInternal
+ * Renders the protection level text for an action.
+ * Also doubles as a check for the protection level.
+ */
+const char *
+CacheManager::ActionProtection(const CacheManagerAction * at)
{
char *pwd;
assert(at);
- pwd = cachemgrPasswdGet(Config.passwd_list, at->action);
+ pwd = PasswdGet(Config.passwd_list, at->action);
if (!pwd)
return at->flags.pw_req ? "hidden" : "public";
}
/// \ingroup CacheManagerInternal
-static void
-cachemgrMenu(StoreEntry * sentry)
+void
+CacheManager::MenuAction::run(StoreEntry * sentry)
{
- CacheManagerAction *a;
+ CacheManagerActionList::iterator a;
- for (a = ActionTable; a != NULL; a = a->next) {
+ debugs(16, 4, "CacheManager::MenuCommand invoked");
+ for (a = cmgr->ActionsList.begin(); a != cmgr->ActionsList.end(); ++a) {
+ debugs(16, 5, " showing action " << (*a)->action);
storeAppendPrintf(sentry, " %-22s\t%-32s\t%s\n",
- a->action, a->desc, cachemgrActionProtection(a));
+ (*a)->action, (*a)->desc, cmgr->ActionProtection(*a));
}
}
-
/// \ingroup CacheManagerInternal
-static char *
-cachemgrPasswdGet(cachemgr_passwd * a, const char *action)
+CacheManager::MenuAction::MenuAction(CacheManager *aMgr) : CacheManagerAction ("menu", "Cache Manager Menu", 1, 1), cmgr(aMgr) { }
+
+/*
+ \ingroup CacheManagerInternal
+ * gets from the global Config the password the user would need to supply
+ * for the action she queried
+ */
+char *
+CacheManager::PasswdGet(cachemgr_passwd * a, const char *action)
{
wordlist *w;
return NULL;
}
+
+CacheManager* CacheManager::instance=0;
+
+/**
+ \ingroup CacheManagerAPI
+ * Singleton accessor method.
+ */
+CacheManager*
+CacheManager::GetInstance() {
+ if (instance == 0) {
+ debugs(16, 6, "CacheManager::GetInstance: starting cachemanager up");
+ instance = new CacheManager;
+ }
+ return instance;
+}
+
+
+/// \ingroup CacheManagerInternal
+void CacheManagerActionLegacy::run(StoreEntry *sentry)
+{
+ handler(sentry);
+}
+/// \ingroup CacheManagerInternal
+CacheManagerAction::CacheManagerAction(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic)
+{
+ flags.pw_req = isPwReq;
+ flags.atomic = isAtomic;
+ action = xstrdup (anAction);
+ desc = xstrdup (aDesc);
+}
+/// \ingroup CacheManagerInternal
+CacheManagerAction::~CacheManagerAction()
+{
+ xfree(action);
+ xfree(desc);
+}
+
+/// \ingroup CacheManagerInternal
+CacheManagerActionLegacy::CacheManagerActionLegacy(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic, OBJH *aHandler) : CacheManagerAction(anAction, aDesc, isPwReq, isAtomic), handler(aHandler)
+{
+}
#include "CacheManager.h"
#include "Store.h"
-#if USE_CARP
-
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
static int n_carp_peers = 0;
return (*p1)->weight - (*p2)->weight;
}
+static void
+carpRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("carp", "CARP information", carpCachemgr, 0, 1);
+}
+
void
carpInit(void)
{
safe_free(carp_peers);
n_carp_peers = 0;
+
+ /* initialize cache manager before we have a chance to leave the execution path */
+ carpRegisterWithCacheManager();
+
/* find out which peers we have */
for (p = Config.peers; p; p = p->next) {
}
}
-void
-carpRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("carp", "CARP information", carpCachemgr, 0, 1);
-}
-
peer *
carpSelectParent(HttpRequest * request)
{
sumfetches ? (double) p->stats.fetches / sumfetches : -1.0);
}
}
-
-#endif
}
void
-cbdataRegisterWithCacheManager(CacheManager & manager)
+cbdataRegisterWithCacheManager(void)
{
- manager.registerAction("cbdata",
- "Callback Data Registry Contents",
- cbdataDump, 0, 1);
+ CacheManager *manager=CacheManager::GetInstance();
+ manager->registerAction("cbdata",
+ "Callback Data Registry Contents",
+ cbdataDump, 0, 1);
#if CBDATA_DEBUG
- manager.registerAction("cbdatahistory",
- "Detailed call history for all current cbdata contents",
- cbdataDumpHistory, 0, 1);
+ manager->registerAction("cbdatahistory",
+ "Detailed call history for all current cbdata contents",
+ cbdataDumpHistory, 0, 1);
#endif
}
} cbdata_type;
/// \ingroup CBDATAAPI
-extern void cbdataRegisterWithCacheManager(CacheManager & manager);
+extern void cbdataRegisterWithCacheManager(void);
#if CBDATA_DEBUG
extern void *cbdataInternalAllocDbg(cbdata_type type, const char *, int);
tristate
uri_whitespace
ushort
+wccp2_method
+wccp2_amethod
wccp2_service
wccp2_service_info
wordlist
%USER_CERTCHAIN SSL User certificate chain in PEM format
%USER_CERT_xx SSL User certificate subject attribute xx
%USER_CA_xx SSL User certificate issuer attribute xx
- %{Header} HTTP request header
- %{Hdr:member} HTTP request header list member
- %{Hdr:;member}
+
+ %>{Header} HTTP request header
+ %>{Hdr:member}
+ HTTP request header list member
+ %>{Hdr:;member}
HTTP request header list member using ; as
list separator. ; can be any non-alphanumeric
character.
+ %<{Header} HTTP reply header
+ %<{Hdr:member}
+ HTTP reply header list member
+ %<{Hdr:;member}
+ HTTP reply header list member using ; as
+ list separator. ; can be any non-alphanumeric
+ character.
+
In addition to the above, any string specified in the referencing
acl will also be included in the helper request line, after the
specified formats (see the "acl external" directive)
DOC_START
Defining an Access List
- acl aclname acltype string1 ...
- acl aclname acltype "file" ...
+ Every access list definition must begin with an aclname and acltype,
+ followed by either type-specific arguments or a quoted filename that
+ they are read from.
- when using "file", the file should contain one item per line
+ acl aclname acltype argument ...
+ acl aclname acltype "file" ...
- acltype is one of the types described below
+ When using "file", the file should contain one item per line.
By default, regular expressions are CASE-SENSITIVE. To make
them case-insensitive, use the -i option.
***** ACL TYPES AVAILABLE *****
- acl aclname src ip-address/netmask ... (clients IP address)
- acl aclname src addr1-addr2/netmask ... (range of addresses)
- acl aclname dst ip-address/netmask ... (URL host's IP address)
- acl aclname myip ip-address/netmask ... (local socket IP address)
+ acl aclname src ip-address/netmask ... # clients IP address
+ acl aclname src addr1-addr2/netmask ... # range of addresses
+ acl aclname dst ip-address/netmask ... # URL host's IP address
+ acl aclname myip ip-address/netmask ... # local socket IP address
acl aclname arp mac-address ... (xx:xx:xx:xx:xx:xx notation)
# The arp ACL requires the special configure option --enable-arp-acl.
# the same subnet. If the client is on a different subnet, then Squid cannot
# find out its MAC address.
- acl aclname srcdomain .foo.com ... # reverse lookup, from client IP
- acl aclname dstdomain .foo.com ... # Destination server from URL
- acl aclname srcdom_regex [-i] xxx ... # regex matching client name
- acl aclname dstdom_regex [-i] xxx ... # regex matching server
+ acl aclname srcdomain .foo.com ... # reverse lookup, from client IP
+ acl aclname dstdomain .foo.com ... # Destination server from URL
+ acl aclname srcdom_regex [-i] \.foo\.com ... # regex matching client name
+ acl aclname dstdom_regex [-i] \.foo\.com ... # regex matching server
# For dstdomain and dstdom_regex a reverse lookup is tried if a IP
# based URL is used and no match is found. The name "none" is used
# if the reverse lookup fails.
- acl aclname src_as number ...
- acl aclname dst_as number ...
+ acl aclname src_as number ...
+ acl aclname dst_as number ...
# Except for access control, AS numbers can be used for
# routing of requests to specific caches. Here's an
# example for routing all requests for AS#1241 and only
# cache_peer_access mycache.mydomain.net allow asexample
# cache_peer_access mycache_mydomain.net deny all
- acl aclname time [day-abbrevs] [h1:m1-h2:m2]
- day-abbrevs:
- S - Sunday
- M - Monday
- T - Tuesday
- W - Wednesday
- H - Thursday
- F - Friday
- A - Saturday
- h1:m1 must be less than h2:m2
-
- acl aclname url_regex [-i] ^http:// ... # regex matching on whole URL
+ acl aclname time [day-abbrevs] [h1:m1-h2:m2]
+ # day-abbrevs:
+ # S - Sunday
+ # M - Monday
+ # T - Tuesday
+ # W - Wednesday
+ # H - Thursday
+ # F - Friday
+ # A - Saturday
+ # h1:m1 must be less than h2:m2
+
+ acl aclname url_regex [-i] ^http:// ... # regex matching on whole URL
acl aclname urlpath_regex [-i] \.gif$ ... # regex matching on URL path
- acl aclname port 80 70 21 ...
- acl aclname port 0-1024 ... # ranges allowed
- acl aclname myport 3128 ... # (local socket TCP port)
+ acl aclname port 80 70 21 ...
+ acl aclname port 0-1024 ... # ranges allowed
+ acl aclname myport 3128 ... # (local socket TCP port)
acl aclname myportname 3128 ... # http(s)_port name
- acl aclname proto HTTP FTP ...
+ acl aclname proto HTTP FTP ...
- acl aclname method GET POST ...
+ acl aclname method GET POST ...
acl aclname http_status 200 301 500- 400-403 ... # status code in reply
- acl aclname browser [-i] regexp ...
+ acl aclname browser [-i] regexp ...
# pattern match on User-Agent header (see also req_header below)
- acl aclname referer_regex [-i] regexp ...
+ acl aclname referer_regex [-i] regexp ...
# pattern match on Referer header
# Referer is highly unreliable, so use with care
- acl aclname ident username ...
+ acl aclname ident username ...
acl aclname ident_regex [-i] pattern ...
# string match on ident output.
# use REQUIRED to accept any non-null ident.
# clients may appear to come from multiple addresses if they are
# going through proxy farms, so a limit of 1 may cause user problems.
- acl aclname req_mime_type [-i] mime-type1 ...
+ acl aclname req_mime_type [-i] mime-type ...
# regex match against the mime type of the request generated
# by the client. Can be used to detect file upload or some
# types HTTP tunneling requests.
# thought of as a superset of "browser", "referer" and "mime-type"
# ACLs.
- acl aclname rep_mime_type [-i] mime-type1 ...
+ acl aclname rep_mime_type [-i] mime-type ...
# regex match against the mime type of the reply received by
# squid. Can be used to detect file download or some
# types HTTP tunneling requests.
# thought of as a superset of "browser", "referer" and "mime-type"
# ACLs.
- acl acl_name external class_name [arguments...]
+ acl aclname external class_name [arguments...]
# external ACL lookup via a helper class defined by the
# external_acl_type directive.
NOCOMMENT_END
DOC_END
+NAME: follow_x_forwarded_for
+TYPE: acl_access
+IFDEF: FOLLOW_X_FORWARDED_FOR
+LOC: Config.accessList.followXFF
+DEFAULT: none
+DEFAULT_IF_NONE: deny all
+DOC_START
+ Allowing or Denying the X-Forwarded-For header to be followed to
+ find the original source of a request.
+
+ Requests may pass through a chain of several other proxies
+ before reaching us. The X-Forwarded-For header will contain a
+ comma-separated list of the IP addresses in the chain, with the
+ rightmost address being the most recent.
+
+ If a request reaches us from a source that is allowed by this
+ configuration item, then we consult the X-Forwarded-For header
+ to see where that host received the request from. If the
+ X-Forwarded-For header contains multiple addresses, and if
+ acl_uses_indirect_client is on, then we continue backtracking
+ until we reach an address for which we are not allowed to
+ follow the X-Forwarded-For header, or until we reach the first
+ address in the list. (If acl_uses_indirect_client is off, then
+ it's impossible to backtrack through more than one level of
+ X-Forwarded-For addresses.)
+
+ The end result of this process is an IP address that we will
+ refer to as the indirect client address. This address may
+ be treated as the client address for access control, delay
+ pools and logging, depending on the acl_uses_indirect_client,
+ delay_pool_uses_indirect_client and log_uses_indirect_client
+ options.
+
+ SECURITY CONSIDERATIONS:
+
+ Any host for which we follow the X-Forwarded-For header
+ can place incorrect information in the header, and Squid
+ will use the incorrect information as if it were the
+ source address of the request. This may enable remote
+ hosts to bypass any access control restrictions that are
+ based on the client's source addresses.
+
+ For example:
+
+ acl localhost src 127.0.0.1
+ acl my_other_proxy srcdomain .proxy.example.com
+ follow_x_forwarded_for allow localhost
+ follow_x_forwarded_for allow my_other_proxy
+DOC_END
+
+NAME: acl_uses_indirect_client
+COMMENT: on|off
+TYPE: onoff
+IFDEF: FOLLOW_X_FORWARDED_FOR
+DEFAULT: on
+LOC: Config.onoff.acl_uses_indirect_client
+DOC_START
+ Controls whether the indirect client address
+ (see follow_x_forwarded_for) is used instead of the
+ direct client address in acl matching.
+DOC_END
+
+NAME: delay_pool_uses_indirect_client
+COMMENT: on|off
+TYPE: onoff
+IFDEF: FOLLOW_X_FORWARDED_FOR && DELAY_POOLS
+DEFAULT: on
+LOC: Config.onoff.delay_pool_uses_indirect_client
+DOC_START
+ Controls whether the indirect client address
+ (see follow_x_forwarded_for) is used instead of the
+ direct client address in delay pools.
+DOC_END
+
+NAME: log_uses_indirect_client
+COMMENT: on|off
+TYPE: onoff
+IFDEF: FOLLOW_X_FORWARDED_FOR
+DEFAULT: on
+LOC: Config.onoff.log_uses_indirect_client
+DOC_START
+ Controls whether the indirect client address
+ (see follow_x_forwarded_for) is used instead of the
+ direct client address in the access log.
+DOC_END
+
NAME: http_access
TYPE: acl_access
LOC: Config.accessList.http
NOCOMMENT_START
#Allow ICP queries from local networks only
-icp_access allow localnet
-icp_access deny all
+#icp_access allow localnet
+#icp_access deny all
NOCOMMENT_END
DOC_END
NOCOMMENT_START
#Allow HTCP queries from local networks only
-htcp_access allow localnet
-htcp_access deny all
+#htcp_access allow localnet
+#htcp_access deny all
NOCOMMENT_END
DOC_END
NAME: miss_access
TYPE: acl_access
LOC: Config.accessList.miss
-DEFAULT: none
+DEFAULT: allow all
DOC_START
Use to force your neighbors to use you as a sibling instead of
a parent. For example:
By default, allow all clients who passed the http_access rules
to fetch MISSES from us.
-
-NOCOMMENT_START
-#Default setting:
-# miss_access allow all
-NOCOMMENT_END
DOC_END
NAME: ident_lookup_access
icp-port: Used for querying neighbor caches about
objects. To have a non-ICP neighbor
- specify '7' for the ICP port and make sure the
- neighbor machine has the UDP echo port
- enabled in its /etc/inetd.conf file.
+ specify '0' for the ICP port.
NOTE: Also requires icp_port option enabled to send/receive
requests via this method.
round-robin
weighted-round-robin
carp
+ userhash
+ sourcehash
multicast-responder
closest-only
no-digest
max-conn=n
htcp
htcp-oldsquid
+ htcp-no-clr
+ htcp-no-purge-clr
+ htcp-only-clr
+ htcp-forward-clr
originserver
name=xxx
forceddomain=name
distributed among the parents based on the CARP load
balancing hash function based on their weight.
+ use 'userhash' to load-balance amongst a set of parents
+ based on the client proxy_auth or ident username.
+
+ use 'sourcehash' to load-balance amongst a set of parents
+ based on the client source ip.
+
'multicast-responder' indicates the named peer
is a member of a multicast group. ICP queries will
not be sent directly to the peer, but ICP replies
You MUST also set htcp_access expicitly. The default of
deny all will prevent peer traffic.
+ use 'htcp-no-clr' to send HTCP to the neighbor but without
+ sending any CLR requests. This cannot be used with
+ htcp-only-clr.
+
+ use 'htcp-no-purge-clr' to send HTCP to the neighbor
+ including CLRs but only when they do not result from
+ PURGE requests.
+
+ use 'htcp-only-clr' to send HTCP to the neighbor but ONLY
+ CLR requests. This cannot be used with htcp-no-clr.
+
+ use 'htcp-forward-clr' to forward any HTCP CLR requests
+ this proxy receives to the peer.
+
'originserver' causes this parent peer to be contacted as
a origin server. Meant to be used in accelerator setups.
NAME: cache_mem
COMMENT: (bytes)
TYPE: b_size_t
-DEFAULT: 8 MB
+DEFAULT: 256 MB
LOC: Config.memMaxSize
DOC_START
NOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE.
NAME: maximum_object_size_in_memory
COMMENT: (bytes)
TYPE: b_size_t
-DEFAULT: 8 KB
+DEFAULT: 512 KB
LOC: Config.Store.maxInMemObjSize
DOC_START
Objects greater than this size will not be attempted to kept in
which can be changed with the --with-coss-membuf-size=N configure
option.
NOCOMMENT_START
-cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
+# cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
NOCOMMENT_END
DOC_END
et Tag returned by external acl
ea Log string returned by external acl
<st Reply size including HTTP headers
+ >st Request size including HTTP headers
+ st Request+Reply size including HTTP headers
<sH Reply high offset sent
<sS Upstream object size
% a literal % character
-logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
-logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
+ The default formats available (which do not need re-defining) are:
+
+logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
+logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
DOC_END
NAME: access_log cache_access_log
TYPE: access_log
LOC: Config.Log.accesslogs
-DEFAULT: none
+DEFAULT: @DEFAULT_ACCESS_LOG@ squid
DOC_START
These files log client request activities. Has a line every HTTP or
ICP request. The format is:
And priority could be any of:
err, warning, notice, info, debug.
-NOCOMMENT_START
-access_log @DEFAULT_ACCESS_LOG@ squid
-NOCOMMENT_END
+
+ Default:
+ access_log @DEFAULT_ACCESS_LOG@ squid
DOC_END
NAME: log_access
NAME: cache_store_log
TYPE: string
-DEFAULT: @DEFAULT_STORE_LOG@
+DEFAULT: none
LOC: Config.Log.store
DOC_START
Logs the activities of the storage manager. Shows which
objects are ejected from the cache, and which objects are
- saved and for how long. To disable, enter "none". There are
- not really utilities to analyze this data, so you can safely
+ saved and for how long. To disable, enter "none" or remove the line.
+ There are not really utilities to analyze this data, so you can safely
disable it.
+NOCOMMENT_START
+# cache_store_log @DEFAULT_STORE_LOG@
+NOCOMMENT_END
DOC_END
NAME: cache_swap_state cache_swap_log
DOC_START
The minimum caching time according to (Expires - Date)
Headers Squid honors if the object can't be revalidated
- defaults to 60 seconds. In reverse proxy enorinments it
+ defaults to 60 seconds. In reverse proxy environments it
might be desirable to honor shorter object lifetimes. It
is most likely better to make your server return a
meaningful Last-Modified header however. In ESI environments
NAME: request_header_max_size
COMMENT: (KB)
TYPE: b_size_t
-DEFAULT: 20 KB
+DEFAULT: 64 KB
LOC: Config.maxRequestHeaderSize
DOC_START
This specifies the maximum size for HTTP headers in a request.
NAME: reply_header_max_size
COMMENT: (KB)
TYPE: b_size_t
-DEFAULT: 20 KB
+DEFAULT: 64 KB
LOC: Config.maxReplyHeaderSize
DOC_START
This specifies the maximum size for HTTP headers in a reply.
LOC: Config.Wccp.router
DEFAULT: 0.0.0.0
IFDEF: USE_WCCP
-DOC_NONE
+DOC_START
+ Use this option to define your WCCP ``home'' router for
+ Squid.
+
+ wccp_router supports a single WCCP(v1) router
+
+ wccp2_router supports multiple WCCPv2 routers
+
+ only one of the two may be used at the same time and defines
+ which version of WCCP to use.
+DOC_END
+
NAME: wccp2_router
TYPE: IPAddress_list
LOC: Config.Wccp2.router
DOC_END
NAME: wccp2_forwarding_method
-TYPE: int
+TYPE: wccp2_method
LOC: Config.Wccp2.forwarding_method
-DEFAULT: 1
+DEFAULT: gre
IFDEF: USE_WCCPv2
DOC_START
WCCP2 allows the setting of forwarding methods between the
router/switch and the cache. Valid values are as follows:
- 1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
- 2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
+ gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
+ l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
Currently (as of IOS 12.4) cisco routers only support GRE.
Cisco switches only support the L2 redirect assignment method.
DOC_END
NAME: wccp2_return_method
-TYPE: int
+TYPE: wccp2_method
LOC: Config.Wccp2.return_method
-DEFAULT: 1
+DEFAULT: gre
IFDEF: USE_WCCPv2
DOC_START
WCCP2 allows the setting of return methods between the
router/switch and the cache for packets that the cache
decides not to handle. Valid values are as follows:
- 1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
- 2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
+ gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
+ l2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
Currently (as of IOS 12.4) cisco routers only support GRE.
Cisco switches only support the L2 redirect assignment.
DOC_END
NAME: wccp2_assignment_method
-TYPE: int
+TYPE: wccp2_amethod
LOC: Config.Wccp2.assignment_method
-DEFAULT: 1
+DEFAULT: hash
IFDEF: USE_WCCPv2
DOC_START
WCCP2 allows the setting of methods to assign the WCCP hash
Valid values are as follows:
- 1 - Hash assignment
- 2 - Mask assignment
+ hash - Hash assignment
+ mask - Mask assignment
As a general rule, cisco routers support the hash assignment method
and cisco switches support the mask assignment method.
wccp2_service dynamic 80 # a dynamic service type which will be
# fleshed out with subsequent options.
wccp2_service standard 0 password=foo
-
DOC_END
NAME: wccp2_service_info
The relevant WCCPv2 flags:
+ src_ip_hash, dst_ip_hash
- + source_port_hash, dest_port_hash
+ + source_port_hash, dst_port_hash
+ src_ip_alt_hash, dst_ip_alt_hash
+ src_port_alt_hash, dst_port_alt_hash
+ ports_source
DEFAULT: 0.0.0.0
IFDEF: USE_WCCP
DOC_NONE
+
NAME: wccp2_address
TYPE: address
LOC: Config.Wccp2.address
DEFAULT: 0.0.0.0
IFDEF: SQUID_SNMP
DOC_NONE
+
NAME: snmp_outgoing_address
TYPE: address
LOC: Config.Addrs.snmp_outgoing
DEFAULT: 255.255.255.255
IFDEF: SQUID_SNMP
DOC_START
- Just like 'udp_incoming_address' above, but for the SNMP port.
+ Just like 'udp_incoming_address', but for the SNMP port.
snmp_incoming_address is used for the SNMP socket receiving
messages from SNMP agents.
and from neighbor caches. The standard UDP port for ICP is 3130.
Default is disabled (0).
NOCOMMENT_START
-icp_port @DEFAULT_ICP_PORT@
+#icp_port @DEFAULT_ICP_PORT@
NOCOMMENT_END
DOC_END
NAME: error_directory
TYPE: string
LOC: Config.errorDirectory
-DEFAULT: @DEFAULT_ERROR_DIR@
+DEFAULT: none
DOC_START
If you wish to create your own versions of the default
- (English) error files, either to customize them to suit your
- language or company copy the template English files to another
- directory and point this tag at them.
+ error files to customize them to suit your company copy
+ the error/template files to another directory and point
+ this tag at them.
+
+ WARNING: This option will disable multi-language support
+ on error pages if used.
The squid developers are interested in making squid available in
a wide variety of languages. If you are making translations for a
- langauge that Squid does not currently provide please consider
+ language that Squid does not currently provide please consider
contributing your translation back to the project.
+ http://wiki.squid-cache.org/Translations
+
+ The squid developers working on translations are happy to supply drop-in
+ translated error files in exchange for any new language contributions.
+DOC_END
+
+NAME: error_default_language
+IFDEF: USE_ERR_LOCALES
+TYPE: string
+LOC: Config.errorDefaultLanguage
+DEFAULT: none
+DOC_START
+ Set the default language which squid will send error pages in
+ if no existing translation matches the clients language
+ preferences.
+
+ If unset (default) generic English will be used.
+
+ The squid developers are interested in making squid available in
+ a wide variety of languages. If you are interested in making
+ translations for any language see the squid wiki for details.
+ http://wiki.squid-cache.org/Translations
DOC_END
NAME: err_html_text
DOC_START
Usage: deny_info err_page_name acl
or deny_info http://... acl
- Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
+ or deny_info TCP_RESET acl
This can be used to return a ERR_ page for requests which
do not pass the 'http_access' rules. Squid remembers the last
- When none of the http_access lines matches. It's then the last
acl processed on the last http_access line.
- You may use ERR_ pages that come with Squid or create your own pages
- and put them into the configured errors/ directory.
+ NP: If providing your own custom error pages with error_directory
+ you may also specify them by your custom file name:
+ Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
Alternatively you can specify an error URL. The browsers will
get redirected (302) to the specified URL. %s in the redirection
requests, except those in your local domain use something like:
acl local-servers dstdomain .foo.net
- acl all src 0.0.0.0/0.0.0.0
never_direct deny local-servers
never_direct allow all
definitions.
DOC_END
-NAME: dns_testnames
-TYPE: wordlist
-LOC: Config.dns_testname_list
-DEFAULT: none
-DEFAULT_IF_NONE: netscape.com internic.net nlanr.net microsoft.com
-DOC_START
- The DNS tests exit as soon as the first site is successfully looked up
-
- This test can be disabled with the -D command line option.
-DOC_END
-
NAME: append_domain
TYPE: string
LOC: Config.appendDomain
offline_toggle *
pconn
peer_select
+ reconfigure *
redirector
refresh
server_list
rounded to 1000.
DOC_END
+NAME: windows_ipaddrchangemonitor
+COMMENT: on|off
+TYPE: onoff
+DEFAULT: on
+LOC: Config.onoff.WIN32_IpAddrChangeMonitor
+DOC_START
+ On Windows Squid by default will monitor IP address changes and will
+ reconfigure itself after any detected event. This is very useful for
+ proxies connected to internet with dial-up interfaces.
+ In some cases (a Proxy server acting as VPN gateway is one) it could be
+ desiderable to disable this behaviour setting this to 'off'.
+ Note: after changing this, Squid service must be restarted.
+DOC_END
+
EOF
#define MAX_LINE 1024 /* longest configuration line */
#define _PATH_PARSER "cf_parser.h"
-#define _PATH_SQUID_CONF "squid.conf.default"
+#define _PATH_SQUID_CONF "squid.conf.documented"
#define _PATH_CF_DEPEND "cf.data.depend"
enum State {
return c;
}
+static void
+clientdbRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("client_list", "Cache Client List", clientdbDump, 0, 1);
+}
+
void
clientdbInit(void)
{
+ clientdbRegisterWithCacheManager();
+
if (client_table)
return;
client_table = hash_create((HASHCMP *) strcmp, CLIENT_DB_HASH_SIZE, hash_string);
-}
-void
-clientdbRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("client_list",
- "Cache Client List",
- clientdbDump,
- 0, 1);
}
void
-
clientdbUpdate(const IPAddress &addr, log_type ltype, protocol_t p, size_t size)
{
char key[MAX_IPSTRLEN];
#include "HttpHdrContRange.h"
#include "HttpReply.h"
#include "HttpRequest.h"
+#include "ident.h"
#include "MemObject.h"
#include "fde.h"
#include "client_side_request.h"
aLogEntry->http.method = request->method;
aLogEntry->http.version = request->http_ver;
aLogEntry->hier = request->hier;
-
+ aLogEntry->cache.requestSize += request->content_length;
aLogEntry->cache.extuser = request->extacl_user.buf();
if (request->auth_user_request) {
if(getConn() != NULL) al.cache.caddr = getConn()->log_addr;
- al.cache.size = out.size;
+ al.cache.requestSize = req_sz;
+
+ al.cache.replySize = out.size;
al.cache.highOffset = out.offset;
void ConnStateData::connStateClosed(const CommCloseCbParams &io)
{
assert (fd == io.fd);
- close();
+ deleteThis("ConnStateData::connStateClosed");
}
+// cleans up before destructor is called
void
-ConnStateData::close()
+ConnStateData::swanSong()
{
- debugs(33, 3, "ConnStateData::close: FD " << fd);
- deleteThis("ConnStateData::close");
+ debugs(33, 2, "ConnStateData::swanSong: FD " << fd);
fd = -1;
flags.readMoreRequests = false;
clientdbEstablished(peer, -1); /* decrement */
freeAllContexts();
if (auth_user_request != NULL) {
- debugs(33, 4, "ConnStateData::close: freeing auth_user_request '" << auth_user_request << "' (this is '" << this << "')");
+ debugs(33, 4, "ConnStateData::swanSong: freeing auth_user_request '" << auth_user_request << "' (this is '" << this << "')");
auth_user_request->onConnectionClose(this);
}
+
+ BodyProducer::swanSong();
+ flags.swanSang = true;
}
bool
ConnStateData::isOpen() const
{
- return cbdataReferenceValid(this);
+ return cbdataReferenceValid(this) && // XXX: checking "this" in a method
+ fd >= 0 &&
+ !fd_table[fd].closing();
}
ConnStateData::~ConnStateData()
debugs(33, 3, "ConnStateData::~ConnStateData: FD " << fd);
if (isOpen())
- close();
+ debugs(33, 1, "BUG: ConnStateData did not close FD " << fd);
+
+ if (!flags.swanSang)
+ debugs(33, 1, "BUG: ConnStateData was not destroyed properly; FD " << fd);
AUTHUSERREQUESTUNLOCK(auth_user_request, "~conn");
{
assert(this);
const char *key;
- String b (full_appname_string);
- b.append (":",1);
+ String b(APP_FULLNAME);
+ b.append(":",1);
key = storeEntry()->getMD5Text();
b.append(key, strlen(key));
return b;
comm_close(fd());
}
+/** Called to initiate (and possibly complete) closing of the context.
+ * The underlying socket may be already closed */
void
ClientSocketContext::initiateClose(const char *reason)
{
return;
case STREAM_UNPLANNED_COMPLETE:
- /* fallthrough */
+ initiateClose("STREAM_UNPLANNED_COMPLETE");
+ return;
case STREAM_FAILED:
- initiateClose("STREAM_UNPLANNED_COMPLETE|STREAM_FAILED");
+ initiateClose("STREAM_FAILED");
return;
default:
char *host;
char ntoabuf[MAX_IPSTRLEN];
- http->flags.intercepted = 1;
-
if (*url != '/')
return; /* already in good shape */
#endif
/* Rewrite the URL in transparent or accelerator mode */
+ /* NP: there are several cases to traverse here:
+ * - standard mode (forward proxy)
+ * - transparent mode (TPROXY)
+ * - transparent mode with failures
+ * - intercept mode (NAT)
+ * - intercept mode with failures
+ * - accelerator mode (reverse proxy)
+ * - internal URL
+ * - mixed combos of the above with internal URL
+ */
if (conn->transparent()) {
+ /* intercept or transparent mode, properly working with no failures */
+ http->flags.intercepted = conn->port->intercepted;
+ http->flags.spoof_client_ip = conn->port->spoof_client_ip;
+ prepareTransparentURL(conn, http, url, req_hdr);
+
+ } else if (conn->port->intercepted || conn->port->spoof_client_ip) {
+ /* transparent or intercept mode with failures */
prepareTransparentURL(conn, http, url, req_hdr);
+
} else if (conn->port->accel || conn->switchedToHttps()) {
+ /* accelerator mode */
prepareAcceleratedURL(conn, http, url, req_hdr);
+
} else if (internalCheck(url)) {
+ /* internal URL mode */
/* prepend our name & port */
http->uri = xstrdup(internalLocalUri(NULL, url));
http->flags.accel = 1;
- } else if (conn->port->intercepted) {
- // Fallback on transparent interception if enabled, useful for "self" requests
- prepareTransparentURL(conn, http, url, req_hdr);
}
if (!http->uri) {
request->flags.internal = http->flags.internal;
setLogUri (http, urlCanonicalClean(request));
request->client_addr = conn->peer;
+#if FOLLOW_X_FORWARDED_FOR
+ request->indirect_client_addr = conn->peer;
+#endif /* FOLLOW_X_FORWARDED_FOR */
request->my_addr = conn->me;
request->http_ver = http_ver;
connNoteUseOfBuffer(conn, http->req_sz);
notedUseOfBuffer = true;
- conn->handleRequestBodyData();
-
- if (!request->body_pipe->exhausted())
- conn->readSomeData();
+ conn->handleRequestBodyData(); // may comm_close and stop producing
/* Is it too large? */
goto finish;
}
- context->mayUseConnection(true);
+ if (!request->body_pipe->productionEnded())
+ conn->readSomeData();
+
+ context->mayUseConnection(!request->body_pipe->productionEnded());
}
http->calloutContext = new ClientRequestContext(http);
* The above check with connFinishedWithConn() only
* succeeds _if_ the buffer is empty which it won't
* be if we have an incomplete request.
+ * XXX: This duplicates ClientSocketContext::keepaliveNextRequest
*/
if (getConcurrentRequestCount() == 0 && commIsHalfClosed(fd)) {
debugs(33, 5, "clientReadRequest: FD " << fd << ": half-closed connection, no completed request parsed, connection closing.");
result->port = cbdataReference(port);
if(port->intercepted || port->spoof_client_ip) {
- IPAddress dst;
+ IPAddress client, dst;
- if (IPInterceptor.NatLookup(fd, me, peer, dst) == 0) {
- result->me = dst; /* XXX This should be moved to another field */
+ if (IPInterceptor.NatLookup(fd, me, peer, client, dst) == 0) {
+ result->me = client;
+ result->peer = dst;
result->transparent(true);
}
}
ClientSocketContext::Pointer getCurrentContext() const;
void addContextToQueue(ClientSocketContext * context);
int getConcurrentRequestCount() const;
- void close();
bool isOpen() const;
int fd;
struct
{
bool readMoreRequests;
+ bool swanSang; // XXX: temporary flag to check proper cleanup
} flags;
http_port_list *port;
// AsyncJob API
virtual bool doneAll() const { return BodyProducer::doneAll() && false;}
+ virtual void swanSong();
#if USE_SSL
bool switchToHttps();
#include "ESI.h"
#endif
#include "MemObject.h"
-#if USE_ZPH_QOS
#include "fde.h"
-#endif
#include "ACLChecklist.h"
#include "ACL.h"
#if DELAY_POOLS
StoreEntry::getPublicByRequestMethod(this, http->request, METHOD_GET);
}
+// Purges all entries with a given url
+// TODO: move to SideAgent parent, when we have one
/*
* We probably cannot purge Vary-affected responses because their MD5
* keys depend on vary headers.
*/
+void
+purgeEntriesByUrl(HttpRequest * req, const char *url)
+{
+#if USE_HTCP
+ bool get_or_head_sent = false;
+#endif
+
+ for (HttpRequestMethod m(METHOD_NONE); m != METHOD_ENUM_END; ++m) {
+ if (m.isCacheble()) {
+ if (StoreEntry *entry = storeGetPublic(url, m)) {
+ debugs(88, 5, "purging " << RequestMethodStr(m) << ' ' << url);
+#if USE_HTCP
+ neighborsHtcpClear(entry, url, req, m, HTCP_CLR_INVALIDATION);
+ if (m == METHOD_GET || m == METHOD_HEAD) {
+ get_or_head_sent = true;
+ }
+#endif
+ entry->release();
+ }
+ }
+ }
+
+#if USE_HTCP
+ if (!get_or_head_sent) {
+ neighborsHtcpClear(NULL, url, req, HttpRequestMethod(METHOD_GET), HTCP_CLR_INVALIDATION);
+ }
+#endif
+}
+
void
clientReplyContext::purgeAllCached()
{
const char *url = urlCanonical(http->request);
-
- for (HttpRequestMethod m(METHOD_NONE); m != METHOD_ENUM_END; ++m) {
- if (m.isCacheble()) {
- if (StoreEntry *entry = storeGetPublic(url, m)) {
- debugs(88, 5, "purging " << RequestMethodStr(m) << ' ' << url);
- entry->release();
- }
- }
- }
+ purgeEntriesByUrl(http->request, url);
}
void
if (!newEntry->isNull()) {
/* Release the cached URI */
debugs(88, 4, "clientPurgeRequest: GET '" << newEntry->url() << "'" );
+#if USE_HTCP
+ neighborsHtcpClear(newEntry, NULL, http->request, HttpRequestMethod(METHOD_GET), HTCP_CLR_PURGE);
+#endif
newEntry->release();
purgeStatus = HTTP_OK;
}
{
if (newEntry && !newEntry->isNull()) {
debugs(88, 4, "clientPurgeRequest: HEAD '" << newEntry->url() << "'" );
+#if USE_HTCP
+ neighborsHtcpClear(newEntry, NULL, http->request, HttpRequestMethod(METHOD_HEAD), HTCP_CLR_PURGE);
+#endif
newEntry->release();
purgeStatus = HTTP_OK;
}
if (entry) {
debugs(88, 4, "clientPurgeRequest: Vary GET '" << entry->url() << "'" );
+#if USE_HTCP
+ neighborsHtcpClear(entry, NULL, http->request, HttpRequestMethod(METHOD_GET), HTCP_CLR_PURGE);
+#endif
entry->release();
purgeStatus = HTTP_OK;
}
if (entry) {
debugs(88, 4, "clientPurgeRequest: Vary HEAD '" << entry->url() << "'" );
+#if USE_HTCP
+ neighborsHtcpClear(entry, NULL, http->request, HttpRequestMethod(METHOD_HEAD), HTCP_CLR_PURGE);
+#endif
entry->release();
purgeStatus = HTTP_OK;
}
hdr->delById(HDR_ETAG);
#endif
- // TODO: Should ESIInclude.cc that calls removeConnectionHeaderEntries
- // also delete HDR_PROXY_CONNECTION and HDR_KEEP_ALIVE like we do below?
-
- // XXX: Should HDR_PROXY_CONNECTION by studied instead of HDR_CONNECTION?
- // httpHeaderHasConnDir does that but we do not. Is this is a bug?
- hdr->delById(HDR_PROXY_CONNECTION);
- /* here: Keep-Alive is a field-name, not a connection directive! */
- hdr->delById(HDR_KEEP_ALIVE);
- /* remove Set-Cookie if a hit */
-
if (is_hit)
hdr->delById(HDR_SET_COOKIE);
+ // if there is not configured a peer proxy with login=PASS option enabled
+ // remove the Proxy-Authenticate header
+ if ( !(request->peer_login && strcmp(request->peer_login,"PASS") ==0))
+ reply->header.delById(HDR_PROXY_AUTHENTICATE);
+
reply->header.removeHopByHopEntries();
// if (request->range)
}
/* Filter unproxyable authentication types */
+
if (http->logType != LOG_TCP_DENIED &&
- (hdr->has(HDR_WWW_AUTHENTICATE) || hdr->has(HDR_PROXY_AUTHENTICATE))) {
+ (hdr->has(HDR_WWW_AUTHENTICATE) || hdr->has(HDR_PROXY_AUTHENTICATE))) {
HttpHeaderPos pos = HttpHeaderInitPos;
HttpHeaderEntry *e;
}
/* Handle authentication headers */
- if (request->auth_user_request)
+ if(http->logType == LOG_TCP_DENIED &&
+ ( reply->sline.status == HTTP_PROXY_AUTHENTICATION_REQUIRED ||
+ reply->sline.status == HTTP_UNAUTHORIZED)
+ ){
+ /* Add authentication header */
+ /*! \todo alter errorstate to be accel on|off aware. The 0 on the next line
+ * depends on authenticate behaviour: all schemes to date send no extra
+ * data on 407/401 responses, and do not check the accel state on 401/407
+ * responses
+ */
+ authenticateFixHeader(reply, request->auth_user_request, request, 0, 1);
+ }
+ else if (request->auth_user_request)
authenticateFixHeader(reply, request->auth_user_request, request,
http->flags.accel, 0);
/* guarantee nothing has been sent yet! */
assert(http->out.size == 0);
assert(http->out.offset == 0);
-#if USE_ZPH_QOS
- if (Config.zph_tos_local ||
- Config.zph_tos_peer ||
- Config.onoff.zph_preserve_miss_tos && Config.zph_preserve_miss_tos_mask)
- {
- int need_change = 0;
- int hit = 0;
- int tos = 0;
- int tos_old = 0;
- int tos_len = sizeof(tos_old);
- int res;
-
- if (Config.zph_tos_local)
- {
- /* local hit */
- hit = 1;
- tos = Config.zph_tos_local;
- }
- else if (Config.zph_tos_peer &&
- (http->request->hier.code==SIBLING_HIT ||
- Config.onoff.zph_tos_parent&&http->request->hier.code==PARENT_HIT))
- {
- /* sibling or parent hit */
- hit = 1;
- tos = Config.zph_tos_peer;
- }
-
- if (http->request->flags.proxy_keepalive)
- {
- res = getsockopt(http->getConn()->fd, IPPROTO_IP, IP_TOS, &tos_old, (socklen_t*)&tos_len);
- if (res < 0)
- {
- debugs(33, 1, "ZPH: error in getsockopt(IP_TOS) on keepalived FD "<< http->getConn()->fd << " " << xstrerror());
- }
- else if (hit && tos_old != tos)
- {
- /* HIT: 1-st request, or previous was MISS,
- * or local/parent hit change.
- */
- need_change = 1;
- }
- }
- else if (hit)
- {
- /* no keepalive */
- need_change = 1;
- }
- if (need_change) {
- comm_set_tos(http->getConn()->fd,tos);
- }
- }
-#endif /* USE_ZPH_QOS */
+#if USE_ZPH_QOS
+ if (Config.zph_tos_local)
+ {
+ debugs(33, 2, "ZPH Local hit, TOS="<<Config.zph_tos_local);
+ comm_set_tos(http->getConn()->fd,Config.zph_tos_local);
+ }
+#endif /* USE_ZPH_QOS */
tempBuffer.offset = reqofs;
tempBuffer.length = getNextNode()->readBuffer.length;
tempBuffer.data = getNextNode()->readBuffer.data;
ConnStateData * conn = http->getConn();
int fd = conn != NULL ? conn->fd : -1;
+ if (fd >= 0 && fd_table[fd].closing()) { // too late, our conn is closing
+ // TODO: should we also quit when fd is negative?
+ debugs(33,3, HERE << "not sending more data to a closing FD " << fd);
+ return;
+ }
char *buf = next()->readBuffer.data;
body_buf = buf;
}
-#if USE_ZPH_QOS
- if (reqofs==0 && !logTypeIsATcpHit(http->logType) &&
- Config.onoff.zph_preserve_miss_tos &&
- Config.zph_preserve_miss_tos_mask)
+#if USE_ZPH_QOS
+ if (reqofs==0 && !logTypeIsATcpHit(http->logType))
{
- int tos = fd_table[fd].upstreamTOS & Config.zph_preserve_miss_tos_mask;
- comm_set_tos(fd,tos);
+ assert(fd >= 0); // the beginning of this method implies fd may be -1
+ int tos = 0;
+ if (Config.zph_tos_peer &&
+ (http->request->hier.code==SIBLING_HIT ||
+ (Config.onoff.zph_tos_parent && http->request->hier.code==PARENT_HIT) ) )
+ {
+ tos = Config.zph_tos_peer;
+ debugs(33, 2, "ZPH: Peer hit with hier.code="<<http->request->hier.code<<", TOS="<<tos);
+ }
+ else if (Config.onoff.zph_preserve_miss_tos && Config.zph_preserve_miss_tos_mask) {
+ tos = fd_table[fd].upstreamTOS & Config.zph_preserve_miss_tos_mask;
+ debugs(33, 2, "ZPH: Preserving TOS on miss, TOS="<<tos);
+ }
+ comm_set_tos(fd,tos);
}
#endif
#include "ClientRequestContext.h"
#include "SquidTime.h"
#include "wordlist.h"
+#include "inet_pton.h"
#if USE_ADAPTATION
#include "adaptation/AccessCheck.h"
static const char *const crlf = "\r\n";
+#if FOLLOW_X_FORWARDED_FOR
+static void
+clientFollowXForwardedForCheck(int answer, void *data);
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
CBDATA_CLASS_INIT(ClientRequestContext);
void *
request->client_addr.SetNoAddr();
+#if FOLLOW_X_FORWARDED_FOR
+ request->indirect_client_addr.SetNoAddr();
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
request->my_addr.SetNoAddr(); /* undefined for internal requests */
request->my_addr.SetPort(0);
return false;
}
+#if FOLLOW_X_FORWARDED_FOR
+/**
+ * clientFollowXForwardedForCheck() checks the indirect_client_addr
+ * against the followXFF ACL, or cleans up and passes control to
+ * clientAccessCheck().
+ */
+
+static void
+clientFollowXForwardedForCheck(int answer, void *data)
+{
+ ClientRequestContext *calloutContext = (ClientRequestContext *) data;
+ ClientHttpRequest *http = NULL;
+ HttpRequest *request = NULL;
+
+ if (!calloutContext->httpStateIsValid())
+ return;
+
+ http = calloutContext->http;
+ request = http->request;
+ /*
+ * answer should be be ACCESS_ALLOWED or ACCESS_DENIED if we are
+ * called as a result of ACL checks, or -1 if we are called when
+ * there's nothing left to do.
+ */
+ if (answer == ACCESS_ALLOWED &&
+ request->x_forwarded_for_iterator.size () != 0)
+ {
+ /*
+ * The IP address currently in request->indirect_client_addr
+ * is trusted to use X-Forwarded-For. Remove the last
+ * comma-delimited element from x_forwarded_for_iterator and use
+ * it to to replace indirect_client_addr, then repeat the cycle.
+ */
+ const char *p;
+ const char *asciiaddr;
+ int l;
+ struct in_addr addr;
+ p = request->x_forwarded_for_iterator.buf();
+ l = request->x_forwarded_for_iterator.size();
+
+ /*
+ * XXX x_forwarded_for_iterator should really be a list of
+ * IP addresses, but it's a String instead. We have to
+ * walk backwards through the String, biting off the last
+ * comma-delimited part each time. As long as the data is in
+ * a String, we should probably implement and use a variant of
+ * strListGetItem() that walks backwards instead of forwards
+ * through a comma-separated list. But we don't even do that;
+ * we just do the work in-line here.
+ */
+ /* skip trailing space and commas */
+ while (l > 0 && (p[l-1] == ',' || xisspace(p[l-1])))
+ l--;
+ request->x_forwarded_for_iterator.cut(l);
+ /* look for start of last item in list */
+ while (l > 0 && ! (p[l-1] == ',' || xisspace(p[l-1])))
+ l--;
+ asciiaddr = p+l;
+ if (xinet_pton(AF_INET, asciiaddr, &addr) != 0)
+ {
+ request->indirect_client_addr = addr;
+ request->x_forwarded_for_iterator.cut(l);
+ if (! Config.onoff.acl_uses_indirect_client)
+ {
+ /*
+ * If acl_uses_indirect_client is off, then it's impossible
+ * to follow more than one level of X-Forwarded-For.
+ */
+ request->x_forwarded_for_iterator.clean();
+ }
+ calloutContext->acl_checklist =
+ clientAclChecklistCreate(Config.accessList.followXFF, http);
+ calloutContext->acl_checklist->
+ nonBlockingCheck(clientFollowXForwardedForCheck, data);
+ return;
+ }
+ } /*if (answer == ACCESS_ALLOWED &&
+ request->x_forwarded_for_iterator.size () != 0)*/
+
+ /* clean up, and pass control to clientAccessCheck */
+ if (Config.onoff.log_uses_indirect_client)
+ {
+ /*
+ * Ensure that the access log shows the indirect client
+ * instead of the direct client.
+ */
+ ConnStateData *conn = http->getConn();
+ conn->log_addr = request->indirect_client_addr;
+ }
+ request->x_forwarded_for_iterator.clean();
+ request->flags.done_follow_x_forwarded_for = 1;
+
+ /* If follow XFF is denied, we reset the indirect_client_addr
+ to the direct client. Thats the one we are configured to check for */
+ if (answer == ACCESS_DENIED) {
+ request->indirect_client_addr = request->client_addr;
+ }
+ /* on a failure, leave it as undefined state ?? */
+ else if (answer != ACCESS_ALLOWED) {
+ debugs(28, DBG_CRITICAL, "Follow X-Forwarded-For encountered an error. Ignoring address: " << request->indirect_client_addr );
+ request->indirect_client_addr = request->client_addr;
+ }
+
+ /* process actual access ACL as normal. */
+ calloutContext->clientAccessCheck();
+}
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
/* This is the entry point for external users of the client_side routines */
void
ClientRequestContext::clientAccessCheck()
{
- acl_checklist =
- clientAclChecklistCreate(Config.accessList.http, http);
+#if FOLLOW_X_FORWARDED_FOR
+ if (!http->request->flags.done_follow_x_forwarded_for &&
+ Config.accessList.followXFF &&
+ http->request->header.has(HDR_X_FORWARDED_FOR))
+ {
+ http->request->x_forwarded_for_iterator =
+ http->request->header.getList(HDR_X_FORWARDED_FOR);
+ clientFollowXForwardedForCheck(ACCESS_ALLOWED, this);
+ return;
+ }
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
+ acl_checklist = clientAclChecklistCreate(Config.accessList.http, http);
acl_checklist->nonBlockingCheck(clientAccessCheckDoneWrapper, this);
}
new_request->http_ver = old_request->http_ver;
new_request->header.append(&old_request->header);
new_request->client_addr = old_request->client_addr;
+#if FOLLOW_X_FORWARDED_FOR
+ new_request->indirect_client_addr = old_request->indirect_client_addr;
+#endif /* FOLLOW_X_FORWARDED_FOR */
new_request->my_addr = old_request->my_addr;
new_request->flags = old_request->flags;
new_request->flags.redirected = 1;
{
unsigned int accel:1;
unsigned int intercepted:1;
+ unsigned int spoof_client_ip:1;
unsigned int internal:1;
unsigned int done_copying:1;
unsigned int purging:1;
#include "CommCalls.h"
#include "IPAddress.h"
#include "IPInterception.h"
+#include "DescriptorSet.h"
#if defined(_SQUID_CYGWIN_)
#include <sys/ioctl.h>
IOCB_WRITE
} iocb_type;
+static void commStopHalfClosedMonitor(int fd);
+static IOCB commHalfClosedReader;
+
+
struct comm_io_callback_t {
iocb_type type;
int fd;
assert(ccb->active());
ccb->xerrno = 0;
-// delete ccb->callback;
- ccb->callback = NULL;
ccb->callback = NULL;
}
/* STATIC */
+static DescriptorSet *TheHalfClosed = NULL; /// the set of half-closed FDs
+static bool WillCheckHalfClosed = false; /// true if check is scheduled
+static EVH commHalfClosedCheck;
+static void commPlanHalfClosedCheck();
+
static comm_err_t commBind(int s, struct addrinfo &);
static void commSetReuseAddr(int);
static void commSetNoLinger(int);
void
comm_read(int fd, char *buf, int size, AsyncCall::Pointer &callback)
{
- /* Make sure we're not reading anything and we're not closing */
- assert(isOpen(fd));
- assert(!fd_table[fd].flags.closing);
+ debugs(5, 5, "comm_read, queueing read for FD " << fd << "; asynCall " << callback);
- debugs(5, 4, "comm_read, queueing read for FD " << fd);
+ /* Make sure we are open and not closing */
+ assert(isOpen(fd));
+ assert(!fd_table[fd].closing());
+ comm_io_callback_t *ccb = COMMIO_FD_READCB(fd);
+
+ // Make sure we are either not reading or just passively monitoring.
+ // Active/passive conflicts are OK and simply cancel passive monitoring.
+ if (ccb->active()) {
+ // if the assertion below fails, we have an active comm_read conflict
+ assert(fd_table[fd].halfClosedReader != NULL);
+ commStopHalfClosedMonitor(fd);
+ assert(!ccb->active());
+ }
/* Queue the read */
- /* XXX ugly */
- commio_set_callback(fd, IOCB_READ, COMMIO_FD_READCB(fd),
- callback, (char *)buf, NULL, size);
- commSetSelect(fd, COMM_SELECT_READ, commHandleRead, COMMIO_FD_READCB(fd), 0);
+ commio_set_callback(fd, IOCB_READ, ccb, callback, (char *)buf, NULL, size);
+ commSetSelect(fd, COMM_SELECT_READ, commHandleRead, ccb, 0);
}
/**
return;
}
+ call->cancel("old comm_read_cancel");
+
typedef CommIoCbParams Params;
const Params ¶ms = GetCommParams<Params>(cb->callback);
}
AsyncCall::Pointer call = cb->callback;
- assert(call != NULL); // XXX: should never fails (active() checks for callback==NULL)
+ assert(call != NULL); // XXX: should never fail (active() checks for callback==NULL)
/* Ok, we can be reasonably sure we won't lose any data here! */
assert(call == callback);
#endif
-#if IPV6_SPECIAL_V4MAPPED && defined(_SQUID_MSWIN_)
+#if IPV6_SPECIAL_V4MAPPED
/* Windows Vista supports Dual-Sockets. BUT defaults them to V6ONLY. Turn it OFF. */
+ /* Other OS may have this administratively disabled for general use. Same deal. */
if( addr.IsIPv6() )
comm_set_v6only(new_socket, 0);
* the original socket
*/
+ /* MUST be done before binding or face OS Error: "(99) Cannot assign requested address"... */
+ if( F->flags.transparent ) {
+ comm_set_transparent(fd);
+ }
+
AI = NULL;
F->local_addr.GetAddrInfo(AI);
if (commBind(fd, *AI) != COMM_OK) {
- debugs(5, 0, HERE << "bind: " << xstrerror());
+ debugs(5, DBG_CRITICAL, "WARNING: Reset of FD " << fd << " for " << F->local_addr << " failed to bind: " << xstrerror());
F->local_addr.FreeAddrInfo(AI);
return 0;
}
}
+/* Squid seems to be working fine without this code. With this code,
+ * we leak memory on many connect requests because of EINPROGRESS.
+ * If you find that this code is needed, please file a bug report. */
+#if 0
#ifdef _SQUID_LINUX_
/* 2007-11-27:
* Linux Debian replaces our allocated AI pointer with garbage when
if(errno != 0) {
AI = NULL;
}
+#endif
#endif
address.FreeAddrInfo(AI);
commSetNonBlocking(sock);
- if(fd_table[fd].flags.transparent == 1) {
- /* AYJ: do we actually need to set this again on every accept? */
- //comm_set_transparent(sock);
- F->flags.transparent = 1;
- }
+ /* IFF the socket is (tproxy) transparent, pass the flag down to allow spoofing */
+ F->flags.transparent = fd_table[fd].flags.transparent;
PROF_stop(comm_accept);
return sock;
}
}
+void
+comm_close_start(int fd, void *data)
+{
+#if USE_SSL
+ fde *F = &fd_table[fd];
+ if (F->ssl)
+ ssl_shutdown_method(fd);
+
+#endif
+
+}
+
+
void
comm_close_complete(int fd, void *data)
{
close(fd);
- if (AbortChecker::Instance().isMonitoring(fd))
- AbortChecker::Instance().stopMonitoring(fd);
-
fdc_table[fd] = AcceptFD(fd);
statCounter.syscalls.sock.closes++;
void
_comm_close(int fd, char const *file, int line)
{
- fde *F = NULL;
-
- debugs(5, 5, "comm_close: FD " << fd);
+ debugs(5, 3, "comm_close: start closing FD " << fd);
assert(fd >= 0);
assert(fd < Squid_MaxFD);
- F = &fd_table[fd];
+
+ fde *F = &fd_table[fd];
fdd_table[fd].close_file = file;
fdd_table[fd].close_line = line;
- if (F->flags.closing)
+ if (F->closing())
return;
if (shutting_down && (!F->flags.open || F->type == FD_FILE))
return;
- assert(F->flags.open);
-
/* The following fails because ipc.c is doing calls to pipe() to create sockets! */
assert(isOpen(fd));
PROF_start(comm_close);
- F->flags.closing = 1;
+ F->flags.close_request = 1;
-#if USE_SSL
-
- if (F->ssl)
- ssl_shutdown_method(fd);
-
-#endif
+ AsyncCall::Pointer startCall=commCbCall(5,4, "comm_close_start",
+ CommCloseCbPtrFun(comm_close_start, NULL));
+ typedef CommCloseCbParams Params;
+ Params &startParams = GetCommParams<Params>(startCall);
+ startParams.fd = fd;
+ ScheduleCallHere(startCall);
+ // a half-closed fd may lack a reader, so we stop monitoring explicitly
+ if (commHasHalfClosedMonitor(fd))
+ commStopHalfClosedMonitor(fd);
commSetTimeout(fd, -1, NULL, NULL);
- /* new-style read/write handler stuff */
+ // notify read/write handlers
if (commio_has_callback(fd, IOCB_WRITE, COMMIO_FD_WRITECB(fd))) {
commio_finish_callback(fd, COMMIO_FD_WRITECB(fd), COMM_ERR_CLOSING, errno);
}
commio_finish_callback(fd, COMMIO_FD_READCB(fd), COMM_ERR_CLOSING, errno);
}
- /* Do callbacks for read/accept routines, if any */
+ // notify accept handlers
fdc_table[fd].notify(-1, COMM_ERR_CLOSING, 0, ConnectionDetail());
commCallCloseHandlers(fd);
comm_empty_os_read_buffers(fd);
- AsyncCall::Pointer call=commCbCall(5,4, "comm_close_complete",
+ AsyncCall::Pointer completeCall=commCbCall(5,4, "comm_close_complete",
CommCloseCbPtrFun(comm_close_complete, NULL));
- typedef CommCloseCbParams Params;
- Params ¶ms = GetCommParams<Params>(call);
- params.fd = fd;
- ScheduleCallHere(call);
+ Params &completeParams = GetCommParams<Params>(completeCall);
+ completeParams.fd = fd;
+ // must use async call to wait for all callbacks
+ // scheduled before comm_close() to finish
+ ScheduleCallHere(completeCall);
PROF_stop(comm_close);
}
if (timeout && interval) {
int count = (timeout + interval - 1) / interval;
if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &count, sizeof(on)) < 0)
- debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+ debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
}
#endif
#ifdef TCP_KEEPIDLE
if (idle) {
if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &idle, sizeof(on)) < 0)
- debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+ debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
}
#endif
#ifdef TCP_KEEPINTVL
if (interval) {
if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &interval, sizeof(on)) < 0)
- debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+ debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
}
#endif
if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (char *) &on, sizeof(on)) < 0)
- debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+ debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
}
void
RESERVED_FD = XMIN(100, Squid_MaxFD / 4);
conn_close_pool = memPoolCreate("close_handler", sizeof(close_handler));
+
+ TheHalfClosed = new DescriptorSet;
}
void
comm_exit(void) {
+ delete TheHalfClosed;
+ TheHalfClosed = NULL;
+
safe_free(fd_table);
safe_free(fdd_table);
if (fdc_table) {
void
comm_write(int fd, const char *buf, int size, AsyncCall::Pointer &callback, FREE * free_func)
{
- assert(!fd_table[fd].flags.closing);
-
- debugs(5, 5, "comm_write: FD " << fd << ": sz " << size << ": asynCall " << callback << ".");
+ debugs(5, 5, "comm_write: FD " << fd << ": sz " << size << ": asynCall " << callback);
- if (commio_has_callback(fd, IOCB_WRITE, COMMIO_FD_WRITECB(fd))) {
- /* This means that the write has been scheduled, but has not
- * triggered yet
- */
- fatalf ("comm_write: fd %d: pending callback!\n", fd);
- }
+ /* Make sure we are open, not closing, and not writing */
+ assert(isOpen(fd));
+ assert(!fd_table[fd].closing());
+ comm_io_callback_t *ccb = COMMIO_FD_WRITECB(fd);
+ assert(!ccb->active());
- commio_set_callback(fd, IOCB_WRITE, COMMIO_FD_WRITECB(fd),
- callback, (char *)buf, free_func, size);
- commSetSelect(fd, COMM_SELECT_WRITE, commHandleWrite, COMMIO_FD_WRITECB(fd), 0);
+ /* Queue the write */
+ commio_set_callback(fd, IOCB_WRITE, ccb, callback,
+ (char *)buf, free_func, size);
+ commSetSelect(fd, COMM_SELECT_WRITE, commHandleWrite, ccb, 0);
}
#ifdef SO_ACCEPTFILTER
struct accept_filter_arg afa;
bzero(&afa, sizeof(afa));
- debug(5, 0) ("Installing accept filter '%s' on FD %d\n",
- Config.accept_filter, sock);
+ debugs(5, DBG_CRITICAL, "Installing accept filter '" << Config.accept_filter << "' on FD " << sock);
xstrncpy(afa.af_name, Config.accept_filter, sizeof(afa.af_name));
x = setsockopt(sock, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
if (x < 0)
return sock;
}
-// AcceptFD::callback() wrapper
void
comm_accept(int fd, IOACB *handler, void *handler_data) {
debugs(5, 5, "comm_accept: FD " << fd << " handler: " << (void*)handler);
if (newfd == COMM_NOMESSAGE) {
/* register interest again */
- debugs(5, 5, "AcceptFD::acceptOne eof: FD " << fd <<
+ debugs(5, 5, HERE << "try later: FD " << fd <<
" handler: " << *theCallback);
commSetSelect(fd, COMM_SELECT_READ, comm_accept_try, NULL, 0);
return false;
void CommIO::Initialise() {
/* Initialize done pipe signal */
int DonePipe[2];
- pipe(DonePipe);
+ if(pipe(DonePipe)) {}
DoneFD = DonePipe[1];
DoneReadFD = DonePipe[0];
fd_open(DoneReadFD, FD_PIPE, "async-io completetion event: main");
comm_accept (temp.acceptFD, temp.theFunction, temp.theData);
}
+/// Start waiting for a possibly half-closed connection to close
+// by scheduling a read callback to a monitoring handler that
+// will close the connection on read errors.
void
-commMarkHalfClosed(int fd) {
- assert (isOpen(fd));
- AbortChecker::Instance().monitor(fd);
-}
-
-int commIsHalfClosed(int fd) {
- assert (isOpen(fd));
-
- return AbortChecker::Instance().isMonitoring(fd);
-}
-
-void
-commCheckHalfClosed(void *data) {
- AbortChecker::Instance().doIOLoop();
- eventAdd("commCheckHalfClosed", commCheckHalfClosed, NULL, 1.0, false);
+commStartHalfClosedMonitor(int fd) {
+ debugs(5, 5, HERE << "adding FD " << fd << " to " << *TheHalfClosed);
+ assert(isOpen(fd));
+ assert(!commHasHalfClosedMonitor(fd));
+ (void)TheHalfClosed->add(fd); // could also assert the result
+ commPlanHalfClosedCheck(); // may schedule check if we added the first FD
}
-AbortChecker &AbortChecker::Instance() {return Instance_;}
-
-AbortChecker AbortChecker::Instance_;
-
+static
void
-AbortChecker::AbortCheckReader(int fd, char *, size_t size, comm_err_t flag, int xerrno, void *data) {
- assert (size == 0);
- /* sketch:
- * if the read is ok and 0, the conn is still open.
- * if the read is a fail, close the conn
- */
-
- if (flag != COMM_OK && flag != COMM_ERR_CLOSING) {
- debugs(5, 3, "AbortChecker::AbortCheckReader: FD " << fd << " aborted");
- comm_close(fd);
+commPlanHalfClosedCheck()
+{
+ if (!WillCheckHalfClosed && !TheHalfClosed->empty()) {
+ eventAdd("commHalfClosedCheck", &commHalfClosedCheck, NULL, 1.0, 1);
+ WillCheckHalfClosed = true;
}
}
+/// iterates over all descriptors that may need half-closed tests and
+/// calls comm_read for those that do; re-schedules the check if needed
+static
void
-AbortChecker::monitor(int fd) {
- assert (!contains(fd));
-
- add
- (fd);
-
- debugs(5, 3, "AbortChecker::monitor: monitoring half closed FD " << fd << " for aborts");
-}
-
-void
-AbortChecker::stopMonitoring (int fd) {
- assert (contains (fd));
-
- remove
- (fd);
-
- debugs(5, 3, "AbortChecker::stopMonitoring: stopped monitoring half closed FD " << fd << " for aborts");
-}
-
-#include "splay.h"
-void
-AbortChecker::doIOLoop() {
- fds->walk(RemoveCheck, this);
- fds->walk(AddCheck, this);
-}
-
-void
-AbortChecker::AddCheck (int const &fd, void *data) {
- AbortChecker *me = (AbortChecker *)data;
- me->addCheck(fd);
-}
-
-void
-AbortChecker::RemoveCheck (int const &fd, void *data) {
- AbortChecker *me = (AbortChecker *)data;
- me->removeCheck(fd);
-}
-
+commHalfClosedCheck(void *) {
+ debugs(5, 5, HERE << "checking " << *TheHalfClosed);
+
+ typedef DescriptorSet::const_iterator DSCI;
+ const DSCI end = TheHalfClosed->end();
+ for (DSCI i = TheHalfClosed->begin(); i != end; ++i) {
+ const int fd = *i;
+ if (!fd_table[fd].halfClosedReader) { // not reading already
+ AsyncCall::Pointer call = commCbCall(5,4, "commHalfClosedReader",
+ CommIoCbPtrFun(&commHalfClosedReader, NULL));
+ comm_read(fd, NULL, 0, call);
+ fd_table[fd].halfClosedReader = call;
+ }
+ }
-int
-AbortChecker::IntCompare (int const &lhs, int const &rhs) {
- return lhs - rhs;
+ WillCheckHalfClosed = false; // as far as we know
+ commPlanHalfClosedCheck(); // may need to check again
}
+/// checks whether we are waiting for possibly half-closed connection to close
+// We are monitoring if the read handler for the fd is the monitoring handler.
bool
-AbortChecker::isMonitoring(int fd) const {
- return contains(fd);
+commHasHalfClosedMonitor(int fd) {
+ return TheHalfClosed->has(fd);
}
-bool
-AbortChecker::contains (int const fd) const {
- fds = fds->splay(fd, IntCompare);
+/// stop waiting for possibly half-closed connection to close
+static void
+commStopHalfClosedMonitor(int const fd) {
+ debugs(5, 5, HERE << "removing FD " << fd << " from " << *TheHalfClosed);
- if (splayLastResult != 0)
- return false;
+ // cancel the read if one was scheduled
+ AsyncCall::Pointer reader = fd_table[fd].halfClosedReader;
+ if (reader != NULL)
+ comm_read_cancel(fd, reader);
+ fd_table[fd].halfClosedReader = NULL;
- return true;
+ TheHalfClosed->del(fd);
}
-void
-
-AbortChecker::remove
- (int const fd) {
+/// I/O handler for the possibly half-closed connection monitoring code
+static void
+commHalfClosedReader(int fd, char *, size_t size, comm_err_t flag, int, void *) {
+ // there cannot be more data coming in on half-closed connections
+ assert(size == 0);
+ assert(commHasHalfClosedMonitor(fd)); // or we would have canceled the read
- fds = fds->remove
- (fd, IntCompare);
-}
+ fd_table[fd].halfClosedReader = NULL; // done reading, for now
-void
+ // nothing to do if fd is being closed
+ if (flag == COMM_ERR_CLOSING)
+ return;
-AbortChecker::add
- (int const fd) {
- fds = fds->insert (fd, IntCompare);
-}
+ // if read failed, close the connection
+ if (flag != COMM_OK) {
+ debugs(5, 3, "commHalfClosedReader: closing FD " << fd);
+ comm_close(fd);
+ return;
+ }
-void
-AbortChecker::addCheck (int const fd) {
- /* assert comm_is_open (fd); */
- comm_read(fd, NULL, 0, AbortCheckReader, NULL);
+ // continue waiting for close or error
+ commPlanHalfClosedCheck(); // make sure this fd will be checked again
}
-void
-AbortChecker::removeCheck (int const fd) {
- /*
- comm_read_cancel(fd, AbortCheckReader, NULL);
- */
-}
CommRead::CommRead() : fd(-1), buf(NULL), len(0), callback(NULL) {}
/* explicit instantiation required for some systems */
/// \cond AUTODOCS-IGNORE
-template cbdata_type List<DeferredRead>::CBDATA_List;
+template cbdata_type CbDataList<DeferredRead>::CBDATA_CbDataList;
/// \endcond
void
DeferredReadManager::delayRead(DeferredRead const &aRead) {
debugs(5, 3, "Adding deferred read on FD " << aRead.theRead.fd);
- List<DeferredRead> *temp = deferredReads.push_back(aRead);
+ CbDataList<DeferredRead> *temp = deferredReads.push_back(aRead);
comm_add_close_handler (aRead.theRead.fd, CloseHandler, temp);
}
if (!cbdataReferenceValid (thecbdata))
return;
- List<DeferredRead> *temp = (List<DeferredRead> *)thecbdata;
+ CbDataList<DeferredRead> *temp = (CbDataList<DeferredRead> *)thecbdata;
temp->element.markCancelled();
}
DeferredRead
-DeferredReadManager::popHead(ListContainer<DeferredRead> &deferredReads) {
+DeferredReadManager::popHead(CbDataListContainer<DeferredRead> &deferredReads) {
assert (!deferredReads.empty());
if (!deferredReads.head->element.cancelled)
void
DeferredReadManager::kickReads(int const count) {
- /* if we had List::size() we could consolidate this and flushReads */
+ /* if we had CbDataList::size() we could consolidate this and flushReads */
if (count < 1) {
flushReads();
void
DeferredReadManager::flushReads() {
- ListContainer<DeferredRead> reads;
+ CbDataListContainer<DeferredRead> reads;
reads = deferredReads;
- deferredReads = ListContainer<DeferredRead>();
+ deferredReads = CbDataListContainer<DeferredRead>();
while (!reads.empty()) {
DeferredRead aRead = popHead(reads);
extern int comm_udp_recvfrom(int fd, void *buf, size_t len, int flags, IPAddress &from);
extern int comm_udp_recv(int fd, void *buf, size_t len, int flags);
extern ssize_t comm_udp_send(int s, const void *buf, size_t len, int flags);
-extern void commMarkHalfClosed(int);
-extern int commIsHalfClosed(int);
-extern void commCheckHalfClosed(void *);
extern bool comm_has_incomplete_write(int);
+/** The read channel has closed and the caller does not expect more data
+ * but needs to detect connection aborts. The current detection method uses
+ * 0-length reads: We read until the error occurs or the writer closes
+ * the connection. If there is a read error, we close the connection.
+ */
+extern void commStartHalfClosedMonitor(int fd);
+extern bool commHasHalfClosedMonitor(int fd);
+// XXX: remove these wrappers which minimize client_side.cc changes in a commit
+inline void commMarkHalfClosed(int fd) { commStartHalfClosedMonitor(fd); }
+inline bool commIsHalfClosed(int fd) { return commHasHalfClosedMonitor(fd); }
+
/* Not sure where these should live yet */
class Acceptor
Vector<Acceptor> deferred;
};
-/* App layer doesn't want any more data from the socket, as the read channel is
- * closed, but we need to detect aborts, so this lets us do so.
- */
-
-class AbortChecker
-{
-
-public:
- static AbortChecker &Instance();
- /* the current method of checking, is via a 0 length read every second.
- * if nothing is returned by the next IO loop, we let it be.
- * If an error occurs, we close the conn.
- * Note that some tcp environments may allow direct polling for the socket status
- * and this could be adjusted to use that method for the test. (in which case
- * the singleton should be refactored to have the tcp engine register the
- * instance with it).
- */
- static IOCB AbortCheckReader;
-
- bool isMonitoring(int fd) const;
- void monitor (int);
- void stopMonitoring (int);
- void doIOLoop();
-
-private:
- static AbortChecker Instance_;
- static void AddCheck (int const &, void *);
- static int IntCompare (int const &, int const &);
- static void RemoveCheck (int const &, void *);
- AbortChecker() : fds (NULL), checking (false), lastCheck (0){}
-
- mutable SplayNode<int> *fds;
- bool checking;
- time_t lastCheck;
- bool contains (int const) const;
-
- void remove
- (int const);
-
- void add
- (int const);
-
- void addCheck (int const);
-
- void removeCheck (int const);
-};
-
/* A comm engine that calls comm_select */
class CommSelectEngine : public AsyncEngine
static struct epoll_event *pevents;
+static void commEPollRegisterWithCacheManager(void);
/* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
if (kdpfd < 0) {
fatalf("comm_select_init: epoll_create(): %s\n",xstrerror());
}
+
+ commEPollRegisterWithCacheManager();
}
static const char* epolltype_atoi(int x)
static void commIncomingStats(StoreEntry * sentry);
-void
-commEPollRegisterWithCacheManager(CacheManager& manager)
+static void
+commEPollRegisterWithCacheManager(void)
{
- manager.registerAction("comm_epoll_incoming",
- "comm_incoming() stats",
- commIncomingStats, 0, 1);
+ CacheManager::GetInstance()->
+ registerAction("comm_epoll_incoming",
+ "comm_incoming() stats",
+ commIncomingStats, 0, 1);
}
static void
#ifndef SQUID_COMM_EPOLL_H
#define SQUID_COMM_EPOLL_H
-/* forward decls */
-
-class CacheManager;
-
-extern void commEPollRegisterWithCacheManager(CacheManager & manager);
-
#endif /* SQUID_COMM_EPOLL_H */
static int kqoff; /* offset into the buffer */
static int max_poll_time = 1000;
+static void commKQueueRegisterWithCacheManager(void);
/* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
/* Private functions */
kqlst = (struct kevent *)xmalloc(sizeof(*kqlst) * kqmax);
zero_timespec.tv_sec = 0;
zero_timespec.tv_nsec = 0;
+
+ commKQueueRegisterWithCacheManager();
}
/*
max_poll_time = 10;
}
-void
-commKQueueRegisterWithCacheManager(CacheManager & manager)
+static void
+commKQueueRegisterWithCacheManager(void)
{
}
#ifndef SQUID_COMM_KQUEUE_H
#define SQUID_COMM_KQUEUE_H
-/* forward decls */
-
-class CacheManager;
-
-extern void commKQueueRegisterWithCacheManager(CacheManager & manager);
-
#endif /* SQUID_COMM_KQUEUE_H */
statHistCount(&statCounter.comm_dns_incoming, nevents);
}
-void
-comm_select_init(void)
-{}
-void
-commPollRegisterWithCacheManager(CacheManager & manager)
+static void
+commPollRegisterWithCacheManager(void)
{
- manager.registerAction("comm_poll_incoming",
- "comm_incoming() stats",
- commIncomingStats, 0, 1);
+ CacheManager::GetInstance()->
+ registerAction("comm_poll_incoming",
+ "comm_incoming() stats",
+ commIncomingStats, 0, 1);
}
+void
+comm_select_init(void)
+{
+ commPollRegisterWithCacheManager();
+}
static void
commIncomingStats(StoreEntry * sentry)
#ifndef SQUID_COMM_POLL_H
#define SQUID_COMM_POLL_H
-/* forward decls */
-
-class CacheManager;
-
-extern void commPollRegisterWithCacheManager(CacheManager & manager);
#endif /* SQUID_COMM_POLL_H */
statHistCount(&statCounter.comm_dns_incoming, nevents);
}
+static void
+commSelectRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("comm_select_incoming",
+ "comm_incoming() stats",
+ commIncomingStats, 0, 1);
+}
+
void
comm_select_init(void)
{
FD_ZERO(&global_readfds);
FD_ZERO(&global_writefds);
nreadfds = nwritefds = 0;
-}
-void
-commSelectRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("comm_select_incoming",
- "comm_incoming() stats",
- commIncomingStats, 0, 1);
+ commSelectRegisterWithCacheManager();
}
/*
#ifndef SQUID_COMM_SELECT_H
#define SQUID_COMM_SELECT_H
-/* forward decls */
-
-class CacheManager;
-
-extern void commSelectRegisterWithCacheManager(CacheManager & manager);
#endif /* SQUID_COMM_SELECT_H */
statHistCount(&statCounter.comm_dns_incoming, nevents);
}
+static void
+commSelectRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("comm_select_incoming",
+ "comm_incoming() stats",
+ commIncomingStats, 0, 1);
+}
+
void
comm_select_init(void)
{
FD_ZERO(&global_readfds);
FD_ZERO(&global_writefds);
nreadfds = nwritefds = 0;
-}
-void
-commSelectRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("comm_select_incoming",
- "comm_incoming() stats",
- commIncomingStats, 0, 1);
+ commSelectRegisterWithCacheManager();
}
/*
#if HAVE_SYSLOG && defined(LOG_LOCAL4)
if (opt_syslog_enable)
- openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, syslog_facility);
+ openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, syslog_facility);
#endif /* HAVE_SYSLOG */
*/
#define N_COUNT_HOUR_HIST (86400 * 3) / (60 * COUNT_INTERVAL)
-/* were to look for errors if config path fails */
-#ifndef DEFAULT_SQUID_ERROR_DIR
-#define DEFAULT_SQUID_ERROR_DIR "/usr/local/squid/etc/errors"
-#endif
-
/* handy to determine the #elements in a static array */
#define countof(arr) (sizeof(arr)/sizeof(*arr))
unsigned short DelayPools::pools_ (0);
void
-DelayPools::Init()
+DelayPools::RegisterWithCacheManager(void)
{
- LastUpdate = getCurrentTime();
+ CacheManager::GetInstance()->
+ registerAction("delay", "Delay Pool Levels", Stats, 0, 1);
}
void
-DelayPools::RegisterWithCacheManager(CacheManager & manager)
+DelayPools::Init()
{
- manager.registerAction("delay", "Delay Pool Levels", Stats, 0, 1);
+ LastUpdate = getCurrentTime();
+ RegisterWithCacheManager();
}
+
void
DelayPools::InitDelayData()
{
*/
assert(F->write_handler == NULL);
- F->flags.closing = 1;
-
#if CALL_FSYNC_BEFORE_CLOSE
fsync(fd);
helperStats(sentry, dnsservers);
}
+static void
+dnsRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance->
+ registerAction("dns", "Dnsserver Statistics", dnsStats, 0, 1);
+}
+
void
dnsInit(void)
{
wordlist *w;
+ dnsRegisterWithCacheManager();
+
if (!Config.Program.dnsserver)
return;
helperOpenServers(dnsservers);
}
-void
-dnsRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("dns",
- "Dnsserver Statistics",
- dnsStats, 0, 1);
-}
-
void
dnsShutdown(void)
{
t = (char *) xmalloc(Size);
RegQueryValueEx(hndKey, "Domain", NULL, &Type, (LPBYTE) t,
&Size);
- debugs(78, 1, "Adding domain " << token << " from Registry");
+ debugs(78, 1, "Adding domain " << t << " from Registry");
idnsAddPathComponent(t);
xfree(t);
}
RegCloseKey(hndKey);
}
- if (npc == 0 && ((const char *) t = getMyHostname())) {
+ if (npc == 0 && (t = (char *) getMyHostname())) {
t = strchr(t, '.');
if (t)
idnsAddPathComponent(t + 1);
if (Result == ERROR_SUCCESS && Size) {
t = (char *) xmalloc(Size);
- RegQueryValueEx(hndKey, "DhcpNameServer", NULL, &Type, t,
+ RegQueryValueEx(hndKey, "DhcpNameServer", NULL, &Type, (LPBYTE) t,
&Size);
token = strtok(t, ", ");
if (Result == ERROR_SUCCESS && Size) {
t = (char *) xmalloc(Size);
- RegQueryValueEx(hndKey, "NameServer", NULL, &Type, t, &Size);
+ RegQueryValueEx(hndKey, "NameServer", NULL, &Type, (LPBYTE) t, &Size);
token = strtok(t, ", ");
while (token) {
if (Result == ERROR_SUCCESS && Size) {
t = (char *) xmalloc(Size);
RegQueryValueEx(hndKey2, "DhcpNameServer", NULL,
- &Type, t, &Size);
+ &Type, (LPBYTE) t, &Size);
token = strtok(t, ", ");
while (token) {
if (Result == ERROR_SUCCESS && Size) {
t = (char *) xmalloc(Size);
RegQueryValueEx(hndKey2, "NameServer", NULL, &Type,
- t, &Size);
+ (LPBYTE) t, &Size);
token = strtok(t, ", ");
while (token) {
if (Result == ERROR_SUCCESS && Size) {
t = (char *) xmalloc(Size);
- RegQueryValueEx(hndKey, "NameServer", NULL, &Type, t, &Size);
+ RegQueryValueEx(hndKey, "NameServer", NULL, &Type, (LPBYTE) t, &Size);
token = strtok(t, ", ");
while (token) {
/* ====================================================================== */
+static void
+idnsRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("idns", "Internal DNS Statistics", idnsStats, 0, 1);
+}
+
void
idnsInit(void)
{
idns_lookup_hash = hash_create((HASHCMP *) strcmp, 103, hash_string);
init++;
}
-}
-void
-idnsRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("idns", "Internal DNS Statistics", idnsStats, 0, 1);
+ idnsRegisterWithCacheManager();
}
void
for (;;) {
memset(request, '\0', REQ_SZ);
- if (fgets(request, REQ_SZ, stdin) == NULL)
- exit(1);
+ if (fgets(request, REQ_SZ, stdin) == NULL) {
+#ifdef _SQUID_MSWIN_
+ WSACleanup();
+#endif
+ exit(1);
+ }
t = strrchr(request, '\n');
CD_PARENT_HIT,
CD_SIBLING_HIT,
#endif
-#if USE_CARP
CARP,
-#endif
ANY_OLD_PARENT,
+ USERHASH_PARENT,
+ SOURCEHASH_PARENT,
HIER_MAX
} hier_code;
DISABLE_PMTU_TRANSPARENT
};
+#if USE_HTCP
+/*
+ * This should be in htcp.h but because neighborsHtcpClear is defined in
+ * protos.h it has to be here.
+ */
+typedef enum {
+ HTCP_CLR_PURGE,
+ HTCP_CLR_INVALIDATION,
+} htcp_clr_reason;
+#endif
+
#endif /* SQUID_ENUMS_H */
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
*
*/
+#include "config.h"
#include "errorpage.h"
#include "AuthUserRequest.h"
*/
+#ifndef DEFAULT_SQUID_ERROR_DIR
+/** Where to look for errors if config path fails.
+ \note Please use ./configure --datadir=/path instead of patching
+ */
+#define DEFAULT_SQUID_ERROR_DIR DEFAULT_SQUID_DATA_DIR"/errors"
+#endif
+
/// \ingroup ErrorPageInternal
CBDATA_CLASS_INIT(ErrorState);
{
ERR_SQUID_SIGNATURE,
- "\n<BR clear=\"all\">\n"
- "<HR noshade size=\"1px\">\n"
- "<ADDRESS>\n"
+ "\n<br>\n"
+ "<hr>\n"
+ "<div id=\"footer\">\n"
"Generated %T by %h (%s)\n"
- "</ADDRESS>\n"
- "</BODY></HTML>\n"
+ "</div>\n"
+ "</body></html>\n"
},
{
TCP_RESET,
/// \ingroup ErrorPageInternal
static int error_page_count = 0;
-static char *errorTryLoadText(const char *page_name, const char *dir);
+static char *errorTryLoadText(const char *page_name, const char *dir, bool silent = false);
static char *errorLoadText(const char *page_name);
static const char *errorFindHardText(err_type type);
static ErrorDynamicPageInfo *errorDynamicPageInfoCreate(int id, const char *page_name);
static void errorDynamicPageInfoDestroy(ErrorDynamicPageInfo * info);
-static MemBuf *errorBuildContent(ErrorState * err);
-static int errorDump(ErrorState * err, MemBuf * mb);
-static const char *errorConvert(char token, ErrorState * err);
static IOCB errorSendComplete;
for (i = ERR_NONE, ++i; i < error_page_count; ++i) {
safe_free(error_text[i]);
- /* hard-coded ? */
- if ((text = errorFindHardText(i)))
+ if ((text = errorFindHardText(i))) {
+ /**\par
+ * Index any hard-coded error text into defaults.
+ */
error_text[i] = xstrdup(text);
- else if (i < ERR_MAX) {
- /* precompiled ? */
+
+ } else if (i < ERR_MAX) {
+ /**\par
+ * Index precompiled fixed template files from one of two sources:
+ * (a) default language translation directory (error_default_language)
+ * (b) admin specified custom directory (error_directory)
+ */
error_text[i] = errorLoadText(err_type_str[i]);
+
} else {
- /* dynamic */
+ /** \par
+ * Index any unknown file names used by deny_info.
+ */
ErrorDynamicPageInfo *info = ErrorDynamicPages.items[i - ERR_MAX];
assert(info && info->id == i && info->page_name);
if (strchr(info->page_name, ':') == NULL) {
- /* Not on redirected errors... */
+ /** But only if they are not redirection URL. */
error_text[i] = errorLoadText(info->page_name);
}
}
return NULL;
}
-
-/// \ingroup ErrorPageInternal
+/**
+ * \ingroup ErrorPageInternal
+ *
+ * Load into the in-memory error text Index a file probably available at:
+ * (a) admin specified custom directory (error_directory)
+ * (b) default language translation directory (error_default_language)
+ * (c) English sub-directory where errors should ALWAYS exist
+ */
static char *
errorLoadText(const char *page_name)
{
- /* test configured location */
- char *text = errorTryLoadText(page_name, Config.errorDirectory);
- /* test default location if failed */
+ char *text = NULL;
+
+ /** test error_directory configured location */
+ if(Config.errorDirectory)
+ text = errorTryLoadText(page_name, Config.errorDirectory);
+
+#if USE_ERR_LOCALES
+ /** test error_default_language location */
+ if(!text && Config.errorDefaultLanguage) {
+ char dir[256];
+ snprintf(dir,256,"%s/%s", DEFAULT_SQUID_ERROR_DIR, Config.errorDefaultLanguage);
+ text = errorTryLoadText(page_name, dir);
+ if(!text) {
+ debugs(1, DBG_CRITICAL, "Unable to load default error language files. Reset to backups.");
+ }
+ }
+#endif
- if (!text && strcmp(Config.errorDirectory, DEFAULT_SQUID_ERROR_DIR))
- text = errorTryLoadText(page_name, DEFAULT_SQUID_ERROR_DIR);
+ /* test default location if failed (templates == English translation base templates) */
+ if (!text) {
+ text = errorTryLoadText(page_name, DEFAULT_SQUID_ERROR_DIR"/templates");
+ }
/* giving up if failed */
if (!text)
/// \ingroup ErrorPageInternal
static char *
-errorTryLoadText(const char *page_name, const char *dir)
+errorTryLoadText(const char *page_name, const char *dir, bool silent)
{
int fd;
char path[MAXPATHLEN];
fd = file_open(path, O_RDONLY | O_TEXT);
if (fd < 0) {
- debugs(4, 0, "errorTryLoadText: '" << path << "': " << xstrerror());
+ /* with dynamic locale negotiation we may see some failures before a success. */
+ if(!silent)
+ debugs(4, DBG_CRITICAL, HERE << "'" << path << "': " << xstrerror());
return NULL;
}
}
if (len < 0) {
- debugs(4, 0, "errorTryLoadText: failed to fully read: '" << path << "': " << xstrerror());
+ debugs(4, DBG_CRITICAL, HERE << "failed to fully read: '" << path << "': " << xstrerror());
}
file_close(fd);
errorDynamicPageInfoDestroy(ErrorDynamicPageInfo * info)
{
assert(info);
- xfree(info->page_name);
+ safe_free(info->page_name);
delete info;
}
{
ErrorState *err = new ErrorState;
err->page_id = type; /* has to be reset manually if needed */
+ err->err_language = NULL;
err->type = type;
err->httpStatus = status;
void
errorAppendEntry(StoreEntry * entry, ErrorState * err)
{
- HttpReply *rep;
assert(entry->mem_obj != NULL);
assert (entry->isEmpty());
debugs(4, 4, "Creating an error page for entry " << entry <<
entry->lock();
entry->buffer();
- rep = errorBuildReply(err);
- /* Add authentication header */
- /*! \todo alter errorstate to be accel on|off aware. The 0 on the next line
- * depends on authenticate behaviour: all schemes to date send no extra
- * data on 407/401 responses, and do not check the accel state on 401/407
- * responses
- */
- authenticateFixHeader(rep, err->auth_user_request, err->request, 0, 1);
- entry->replaceHttpReply(rep);
+ entry->replaceHttpReply( err->BuildHttpReply() );
EBIT_CLR(entry->flags, ENTRY_FWD_HDR_WAIT);
entry->flush();
entry->complete();
/* moved in front of errorBuildBuf @?@ */
err->flags.flag_cbdata = 1;
- rep = errorBuildReply(err);
+ rep = err->BuildHttpReply();
comm_write_mbuf(fd, rep->pack(), errorSendComplete, err);
safe_free(err->ftp.reply);
AUTHUSERREQUESTUNLOCK(err->auth_user_request, "errstate");
safe_free(err->err_msg);
+#if USE_ERR_LOCALES
+ if(err->err_language != Config.errorDefaultLanguage)
+#endif
+ safe_free(err->err_language);
cbdataFree(err);
}
-/// \ingroup ErrorPageInternal
-static int
-errorDump(ErrorState * err, MemBuf * mb)
+int
+ErrorState::Dump(MemBuf * mb)
{
- HttpRequest *r = err->request;
MemBuf str;
const char *p = NULL; /* takes priority over mb if set */
char ntoabuf[MAX_IPSTRLEN];
str.reset();
/* email subject line */
- str.Printf("CacheErrorInfo - %s", errorPageName(err->type));
+ str.Printf("CacheErrorInfo - %s", errorPageName(type));
mb->Printf("?subject=%s", rfc1738_escape_part(str.buf));
str.reset();
/* email body */
str.Printf("CacheHost: %s\r\n", getMyHostname());
/* - Err Msgs */
- str.Printf("ErrPage: %s\r\n", errorPageName(err->type));
+ str.Printf("ErrPage: %s\r\n", errorPageName(type));
- if (err->xerrno) {
- str.Printf("Err: (%d) %s\r\n", err->xerrno, strerror(err->xerrno));
+ if (xerrno) {
+ str.Printf("Err: (%d) %s\r\n", xerrno, strerror(xerrno));
} else {
str.Printf("Err: [none]\r\n");
}
- if (err->auth_user_request->denyMessage())
- str.Printf("Auth ErrMsg: %s\r\n", err->auth_user_request->denyMessage());
+ if (auth_user_request->denyMessage())
+ str.Printf("Auth ErrMsg: %s\r\n", auth_user_request->denyMessage());
- if (err->dnsserver_msg) {
- str.Printf("DNS Server ErrMsg: %s\r\n", err->dnsserver_msg);
+ if (dnsserver_msg) {
+ str.Printf("DNS Server ErrMsg: %s\r\n", dnsserver_msg);
}
/* - TimeStamp */
str.Printf("TimeStamp: %s\r\n\r\n", mkrfc1123(squid_curtime));
/* - IP stuff */
- str.Printf("ClientIP: %s\r\n", err->src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
+ str.Printf("ClientIP: %s\r\n", src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
- if (r && r->hier.host) {
- str.Printf("ServerIP: %s\r\n", r->hier.host);
+ if (request && request->hier.host) {
+ str.Printf("ServerIP: %s\r\n", request->hier.host);
}
str.Printf("\r\n");
/* - HTTP stuff */
str.Printf("HTTP Request:\r\n");
- if (NULL != r) {
+ if (NULL != request) {
Packer p;
str.Printf("%s %s HTTP/%d.%d\n",
- RequestMethodStr(r->method),
- r->urlpath.size() ? r->urlpath.buf() : "/",
- r->http_ver.major, r->http_ver.minor);
+ RequestMethodStr(request->method),
+ request->urlpath.size() ? request->urlpath.buf() : "/",
+ request->http_ver.major, request->http_ver.minor);
packerToMemInit(&p, &str);
- r->header.packInto(&p);
+ request->header.packInto(&p);
packerClean(&p);
- } else if (err->request_hdrs) {
- p = err->request_hdrs;
+ } else if (request_hdrs) {
+ p = request_hdrs;
} else {
p = "[none]";
}
str.Printf("\r\n");
/* - FTP stuff */
- if (err->ftp.request) {
- str.Printf("FTP Request: %s\r\n", err->ftp.request);
- str.Printf("FTP Reply: %s\r\n", err->ftp.reply);
+ if (ftp.request) {
+ str.Printf("FTP Request: %s\r\n", ftp.request);
+ str.Printf("FTP Reply: %s\r\n", ftp.reply);
str.Printf("FTP Msg: ");
- wordlistCat(err->ftp.server_msg, &str);
+ wordlistCat(ftp.server_msg, &str);
str.Printf("\r\n");
}
/// \ingroup ErrorPageInternal
#define CVT_BUF_SZ 512
-/// \ingroup ErrorPageInternal
-static const char *
-errorConvert(char token, ErrorState * err)
+const char *
+ErrorState::Convert(char token)
{
- HttpRequest *r = err->request;
static MemBuf mb;
const char *p = NULL; /* takes priority over mb if set */
int do_quote = 1;
case 'a':
- if (r && r->auth_user_request)
- p = r->auth_user_request->username();
+ if (request && request->auth_user_request)
+ p = request->auth_user_request->username();
if (!p)
p = "-";
break;
case 'B':
- p = r ? ftpUrlWith2f(r) : "[no URL]";
+ p = request ? ftpUrlWith2f(request) : "[no URL]";
break;
case 'c':
- p = errorPageName(err->type);
+ p = errorPageName(type);
break;
case 'e':
- mb.Printf("%d", err->xerrno);
+ mb.Printf("%d", xerrno);
break;
case 'E':
- if (err->xerrno)
- mb.Printf("(%d) %s", err->xerrno, strerror(err->xerrno));
+ if (xerrno)
+ mb.Printf("(%d) %s", xerrno, strerror(xerrno));
else
mb.Printf("[No Error]");
case 'f':
/* FTP REQUEST LINE */
- if (err->ftp.request)
- p = err->ftp.request;
+ if (ftp.request)
+ p = ftp.request;
else
p = "nothing";
case 'F':
/* FTP REPLY LINE */
- if (err->ftp.request)
- p = err->ftp.reply;
+ if (ftp.request)
+ p = ftp.reply;
else
p = "nothing";
case 'g':
/* FTP SERVER MESSAGE */
- wordlistCat(err->ftp.server_msg, &mb);
+ wordlistCat(ftp.server_msg, &mb);
break;
break;
case 'H':
- if (r) {
- if (r->hier.host)
- p = r->hier.host;
+ if (request) {
+ if (request->hier.host)
+ p = request->hier.host;
else
- p = r->GetHost();
+ p = request->GetHost();
} else
p = "[unknown host]";
break;
case 'i':
- mb.Printf("%s", err->src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
+ mb.Printf("%s", src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
break;
case 'I':
- if (r && r->hier.host) {
- mb.Printf("%s", r->hier.host);
+ if (request && request->hier.host) {
+ mb.Printf("%s", request->hier.host);
} else
p = "[unknown]";
break;
case 'm':
- p = err->auth_user_request->denyMessage("[not available]");
+ p = auth_user_request->denyMessage("[not available]");
break;
case 'M':
- p = r ? RequestMethodStr(r->method) : "[unknown method]";
+ p = request ? RequestMethodStr(request->method) : "[unknown method]";
break;
break;
case 'p':
- if (r) {
- mb.Printf("%d", (int) r->port);
+ if (request) {
+ mb.Printf("%d", (int) request->port);
} else {
p = "[unknown port]";
}
break;
case 'P':
- p = r ? ProtocolStr[r->protocol] : "[unknown protocol]";
+ p = request ? ProtocolStr[request->protocol] : "[unknown protocol]";
break;
case 'R':
- if (NULL != r) {
+ if (NULL != request) {
Packer p;
mb.Printf("%s %s HTTP/%d.%d\n",
- RequestMethodStr(r->method),
- r->urlpath.size() ? r->urlpath.buf() : "/",
- r->http_ver.major, r->http_ver.minor);
+ RequestMethodStr(request->method),
+ request->urlpath.size() ? request->urlpath.buf() : "/",
+ request->http_ver.major, request->http_ver.minor);
packerToMemInit(&p, &mb);
- r->header.packInto(&p);
+ request->header.packInto(&p);
packerClean(&p);
- } else if (err->request_hdrs) {
- p = err->request_hdrs;
+ } else if (request_hdrs) {
+ p = request_hdrs;
} else {
p = "[no request]";
}
case 'S':
/* signature may contain %-escapes, recursion */
- if (err->page_id != ERR_SQUID_SIGNATURE) {
- const int saved_id = err->page_id;
- err->page_id = ERR_SQUID_SIGNATURE;
- MemBuf *sign_mb = errorBuildContent(err);
+ if (page_id != ERR_SQUID_SIGNATURE) {
+ const int saved_id = page_id;
+ page_id = ERR_SQUID_SIGNATURE;
+ MemBuf *sign_mb = BuildContent();
mb.Printf("%s", sign_mb->content());
sign_mb->clean();
delete sign_mb;
- err->page_id = saved_id;
+ page_id = saved_id;
do_quote = 0;
} else {
/* wow, somebody put %S into ERR_SIGNATURE, stop recursion */
break;
case 'U':
- p = r ? urlCanonicalClean(r) : err->url ? err->url : "[no URL]";
+ p = request ? urlCanonicalClean(request) : url ? url : "[no URL]";
break;
case 'u':
- p = r ? urlCanonical(r) : err->url ? err->url : "[no URL]";
+ p = request ? urlCanonical(request) : url ? url : "[no URL]";
break;
case 'w':
case 'W':
if (Config.adminEmail && Config.onoff.emailErrData)
- errorDump(err, &mb);
+ Dump(&mb);
break;
case 'z':
- if (err->dnsserver_msg)
- p = err->dnsserver_msg;
+ if (dnsserver_msg)
+ p = dnsserver_msg;
else
p = "[unknown]";
break;
case 'Z':
- if (err->err_msg)
- p = err->err_msg;
+ if (err_msg)
+ p = err_msg;
else
p = "[unknown]";
}
HttpReply *
-errorBuildReply(ErrorState * err)
+ErrorState::BuildHttpReply()
{
HttpReply *rep = new HttpReply;
- const char *name = errorPageName(err->page_id);
+ const char *name = errorPageName(page_id);
/* no LMT for error pages; error pages expire immediately */
HttpVersion version(1, 0);
/* Redirection */
rep->setHeaders(version, HTTP_MOVED_TEMPORARILY, NULL, "text/html", 0, 0, squid_curtime);
- if (err->request) {
- char *quoted_url = rfc1738_escape_part(urlCanonical(err->request));
+ if (request) {
+ char *quoted_url = rfc1738_escape_part(urlCanonical(request));
httpHeaderPutStrf(&rep->header, HDR_LOCATION, name, quoted_url);
}
- httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%d %s", err->httpStatus, "Access Denied");
+ httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%d %s", httpStatus, "Access Denied");
} else {
- MemBuf *content = errorBuildContent(err);
- rep->setHeaders(version, err->httpStatus, NULL, "text/html", content->contentSize(), 0, squid_curtime);
+ MemBuf *content = BuildContent();
+ rep->setHeaders(version, httpStatus, NULL, "text/html", content->contentSize(), 0, squid_curtime);
/*
* include some information for downstream caches. Implicit
* replaceable content. This isn't quite sufficient. xerrno is not
* might want to know. Someone _will_ want to know OTOH, the first
* X-CACHE-MISS entry should tell us who.
*/
- httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%s %d",
- name, err->xerrno);
+ httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%s %d", name, xerrno);
+
+#if USE_ERR_LOCALES
+ /*
+ * If error page auto-negotiate is enabled in any way, send the Vary.
+ * RFC 2616 section 13.6 and 14.44 says MAY and SHOULD do this.
+ * We have even better reasons though:
+ * see http://wiki.squid-cache.org/KnowledgeBase/VaryNotCaching
+ */
+ if(!Config.errorDirectory) {
+ /* We 'negotiated' this ONLY from the Accept-Language. */
+ httpHeaderDelById(&rep->header, HDR_VARY);
+ httpHeaderPutStrf(&rep->header, HDR_VARY, "Accept-Language");
+ }
+
+ /* add the Content-Language header according to RFC section 14.12 */
+ if(err_language) {
+ httpHeaderPutStrf(&rep->header, HDR_CONTENT_LANGUAGE, "%s", err_language);
+ }
+ else
+#endif /* USE_ERROR_LOCALES */
+ {
+ /* default templates are in English */
+ /* language is known unless error_directory override used */
+ if(!Config.errorDirectory)
+ httpHeaderPutStrf(&rep->header, HDR_CONTENT_LANGUAGE, "en");
+ }
+
httpBodySet(&rep->body, content);
/* do not memBufClean() or delete the content, it was absorbed by httpBody */
}
return rep;
}
-/// \ingroup ErrorPageInternal
-static MemBuf *
-errorBuildContent(ErrorState * err)
+MemBuf *
+ErrorState::BuildContent()
{
MemBuf *content = new MemBuf;
- const char *m;
+ const char *m = NULL;
const char *p;
const char *t;
- assert(err != NULL);
- assert(err->page_id > ERR_NONE && err->page_id < error_page_count);
- content->init();
- m = error_text[err->page_id];
+
+ assert(page_id > ERR_NONE && page_id < error_page_count);
+
+#if USE_ERR_LOCALES
+ String hdr;
+ char dir[256];
+ int l = 0;
+
+ /** error_directory option in squid.conf overrides translations.
+ * Otherwise locate the Accept-Language header
+ */
+ if(!Config.errorDirectory && request->header.getList(HDR_ACCEPT_LANGUAGE, &hdr) ) {
+
+ const char *buf = hdr.buf(); // raw header string for parsing
+ int pos = 0; // current parsing position in header string
+ char *reset = NULL; // where to reset the p pointer for each new tag file
+ char *dt = NULL;
+
+ /* prep the directory path string to prevent snprintf ... */
+ l = strlen(DEFAULT_SQUID_ERROR_DIR);
+ memcpy(dir, DEFAULT_SQUID_ERROR_DIR, l);
+ dir[ l++ ] = '/';
+ reset = dt = dir + l;
+
+ debugs(4, 6, HERE << "Testing Header: '" << hdr << "'");
+
+ while( pos < hdr.size() ) {
+
+/*
+ * Header value format:
+ * - sequence of whitespace delimited tags
+ * - each tag may suffix with ';'.* which we can ignore.
+ * - IFF a tag contains only two characters we can wildcard ANY translations matching: <it> '-'? .*
+ * with preference given to an exact match.
+ */
+ while(pos < hdr.size() && buf[pos] != ';' && buf[pos] != ',' && !xisspace(buf[pos]) && dt < (dir+256) ) {
+ *dt++ = xtolower(buf[pos++]);
+ }
+ *dt++ = '\0'; // nul-terminated the filename content string before system use.
+
+ debugs(4, 9, HERE << "STATE: dt='" << dt << "', reset='" << reset << "', reset[1]='" << reset[1] << "', pos=" << pos << ", buf='" << &buf[pos] << "'");
+
+ /* if we found anything we might use, try it. */
+ if(*reset != '\0') {
+
+ debugs(4, 6, HERE << "Found language '" << reset << "', testing for available template in: '" << dir << "'");
+ m = errorTryLoadText( err_type_str[page_id], dir, false);
+
+ if(m) {
+ /* store the language we found for the Content-Language reply header */
+ err_language = xstrdup(reset);
+ break;
+ }
+
+#if HAVE_GLOB
+ if( (dt - reset) == 2) {
+ /* TODO glob the error directory for sub-dirs matching: <tag> '-*' */
+ /* use first result. */
+ debugs(4,2, HERE << "wildcard fallback errors not coded yet.");
+ }
+#endif
+ }
+
+ dt = reset; // reset for next tag testing. we replace the failed name instead of cloning.
+
+ // IFF we terminated the tag on ';' we need to skip the 'q=' bit to the next ',' or end.
+ while(pos < hdr.size() && buf[pos] != ',') pos++;
+ if(buf[pos] == ',') pos++;
+ }
+ }
+#endif /* USE_ERR_LOCALES */
+
+ /** \par
+ * If client-specific error templates are not enabled or available.
+ * fall back to the old style squid.conf settings.
+ */
+ if(!m) {
+ m = error_text[page_id];
+#if USE_ERR_LOCALES
+ if(!Config.errorDirectory)
+ err_language = Config.errorDefaultLanguage;
+#endif
+ debugs(4, 2, HERE << "No existing error page language negotiated for " << errorPageName(page_id) << ". Using default error file.");
+ }
+
assert(m);
+ content->init();
while ((p = strchr(m, '%'))) {
content->append(m, p - m); /* copy */
- t = errorConvert(*++p, err); /* convert */
+ t = Convert(*++p); /* convert */
content->Printf("%s", t); /* copy */
- m = p + 1; /* advance */
+ m = p + 1; /* advance */
}
if (*m)
*/
class AuthUserRequest;
+class HttpReply;
+class MemBuf;
/// \ingroup ErrorPageAPI
class ErrorState
{
+public:
+ /**
+ * Allocates and initializes an error response
+ */
+ HttpReply *BuildHttpReply(void);
+
+private:
+ /**
+ * Locates error page template to be used for this error
+ * and constructs the HTML page content from it.
+ */
+ MemBuf *BuildContent(void);
+
+ /**
+ * Convert an error template into an error page.
+ */
+ const char *Convert(char token);
+
+ /**
+ * CacheManager / Debug dump of the ErrorState object.
+ * Writes output into the given MemBuf.
+ \retval 0 successful completion.
+ */
+ int Dump(MemBuf * mb);
public:
err_type type;
int page_id;
+ char *err_language;
http_status httpStatus;
AuthUserRequest *auth_user_request;
HttpRequest *request;
/// \ingroup ErrorPageAPI
SQUIDCEXTERN void errorClean(void);
-/**
- \ingroup ErrorPageInternal
- * Allocates and initializes an error response
- */
-SQUIDCEXTERN HttpReply *errorBuildReply(ErrorState * err);
-
/**
\ingroup ErrorPageAPI
*
}
void
-eventInit(CacheManager &manager)
+eventInit(void)
{
- manager.registerAction("events", "Event Queue", eventDump, 0, 1);
+ CacheManager::GetInstance()->
+ registerAction("events", "Event Queue", eventDump, 0, 1);
}
static void
extern void eventAdd(const char *name, EVH * func, void *arg, double when, int, bool cbdata=true);
SQUIDCEXTERN void eventAddIsh(const char *name, EVH * func, void *arg, double delta_ish, int);
SQUIDCEXTERN void eventDelete(EVH * func, void *arg);
-SQUIDCEXTERN void eventInit(CacheManager &);
+SQUIDCEXTERN void eventInit(void);
SQUIDCEXTERN void eventFreeMemory(void);
SQUIDCEXTERN int eventFind(EVH *, void *);
#endif
#include "client_side.h"
#include "HttpRequest.h"
+#include "HttpReply.h"
#include "authenticate.h"
#include "helper.h"
#include "MemBuf.h"
struct _external_acl_format
{
- enum {
+ enum format_type {
EXT_ACL_UNKNOWN,
EXT_ACL_LOGIN,
#if USE_IDENT
EXT_ACL_PORT,
EXT_ACL_PATH,
EXT_ACL_METHOD,
- EXT_ACL_HEADER,
- EXT_ACL_HEADER_MEMBER,
- EXT_ACL_HEADER_ID,
- EXT_ACL_HEADER_ID_MEMBER,
+
+ EXT_ACL_HEADER_REQUEST,
+ EXT_ACL_HEADER_REQUEST_MEMBER,
+ EXT_ACL_HEADER_REQUEST_ID,
+ EXT_ACL_HEADER_REQUEST_ID_MEMBER,
+
+ EXT_ACL_HEADER_REPLY,
+ EXT_ACL_HEADER_REPLY_MEMBER,
+ EXT_ACL_HEADER_REPLY_ID,
+ EXT_ACL_HEADER_REPLY_ID_MEMBER,
+
#if USE_SSL
EXT_ACL_USER_CERT,
EXT_ACL_CA_CERT,
hashFreeMemory(p->cache);
}
+/**
+ * Parse the External ACL format %<{.*} and %>{.*} token(s) to pass a specific
+ * request or reply header to external helper.
+ *
+ \param header - the token being parsed (without the identifying prefix)
+ \param type - format enum identifier for this element, pulled from identifying prefix
+ \param format - structure to contain all the info about this format element.
+ */
+void
+parse_header_token(external_acl_format *format, char *header, const _external_acl_format::format_type type)
+{
+ /* header format */
+ char *member, *end;
+
+ /** Cut away the closing brace */
+ end = strchr(header, '}');
+ if (end && strlen(end) == 1)
+ *end = '\0';
+ else
+ self_destruct();
+
+ member = strchr(header, ':');
+
+ if (member) {
+ /* Split in header and member */
+ *member++ = '\0';
+
+ if (!xisalnum(*member))
+ format->separator = *member++;
+ else
+ format->separator = ',';
+
+ format->member = xstrdup(member);
+
+ if(type == _external_acl_format::EXT_ACL_HEADER_REQUEST)
+ format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER;
+ else
+ format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER;
+ } else {
+ format->type = type;
+ }
+
+ format->header = xstrdup(header);
+ format->header_id = httpHeaderIdByNameDef(header, strlen(header));
+
+ if (format->header_id != -1) {
+ if (member) {
+ if(type == _external_acl_format::EXT_ACL_HEADER_REQUEST)
+ format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_ID_MEMBER;
+ else
+ format->type = _external_acl_format::EXT_ACL_HEADER_REPLY_ID_MEMBER;
+ } else {
+ if(type == _external_acl_format::EXT_ACL_HEADER_REQUEST)
+ format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_ID;
+ else
+ format->type = _external_acl_format::EXT_ACL_HEADER_REPLY_ID;
+ }
+ }
+}
+
void
parse_externalAclHelper(external_acl ** list)
{
format = cbdataAlloc(external_acl_format);
if (strncmp(token, "%{", 2) == 0) {
- /* header format */
- char *header, *member, *end;
- header = token + 2;
- end = strchr(header, '}');
- /* cut away the closing brace */
-
- if (end && strlen(end) == 1)
- *end = '\0';
- else
- self_destruct();
-
- member = strchr(header, ':');
-
- if (member) {
- /* Split in header and member */
- *member++ = '\0';
-
- if (!xisalnum(*member))
- format->separator = *member++;
- else
- format->separator = ',';
-
- format->member = xstrdup(member);
-
- format->type = _external_acl_format::EXT_ACL_HEADER_MEMBER;
- } else {
- format->type = _external_acl_format::EXT_ACL_HEADER;
- }
+ // deprecated. but assume the old configs all referred to request headers.
+ debugs(82, DBG_IMPORTANT, "WARNING: external_acl_type format %{...} is being replaced by %>{...} for : " << token);
+ parse_header_token(format, (token+2), _external_acl_format::EXT_ACL_HEADER_REQUEST);
+ }
- format->header = xstrdup(header);
- format->header_id = httpHeaderIdByNameDef(header, strlen(header));
+ if (strncmp(token, "%>{", 3) == 0) {
+ parse_header_token(format, (token+3), _external_acl_format::EXT_ACL_HEADER_REQUEST);
+ }
+ if (strncmp(token, "%<{", 3) == 0) {
+ parse_header_token(format, (token+3), _external_acl_format::EXT_ACL_HEADER_REPLY);
- if (format->header_id != -1) {
- if (member)
- format->type = _external_acl_format::EXT_ACL_HEADER_ID_MEMBER;
- else
- format->type = _external_acl_format::EXT_ACL_HEADER_ID;
- }
} else if (strcmp(token, "%LOGIN") == 0) {
format->type = _external_acl_format::EXT_ACL_LOGIN;
a->require_auth = true;
for (format = node->format; format; format = format->next) {
switch (format->type) {
- case _external_acl_format::EXT_ACL_HEADER:
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST:
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID:
+ storeAppendPrintf(sentry, " %%>{%s}", format->header);
+ break;
- case _external_acl_format::EXT_ACL_HEADER_ID:
- storeAppendPrintf(sentry, " %%{%s}", format->header);
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER:
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID_MEMBER:
+ storeAppendPrintf(sentry, " %%>{%s:%s}", format->header, format->member);
break;
- case _external_acl_format::EXT_ACL_HEADER_MEMBER:
+ case _external_acl_format::EXT_ACL_HEADER_REPLY:
+ case _external_acl_format::EXT_ACL_HEADER_REPLY_ID:
+ storeAppendPrintf(sentry, " %%<{%s}", format->header);
+ break;
- case _external_acl_format::EXT_ACL_HEADER_ID_MEMBER:
- storeAppendPrintf(sentry, " %%{%s:%s}", format->header, format->member);
+ case _external_acl_format::EXT_ACL_HEADER_REPLY_MEMBER:
+ case _external_acl_format::EXT_ACL_HEADER_REPLY_ID_MEMBER:
+ storeAppendPrintf(sentry, " %%<{%s:%s}", format->header, format->member);
break;
#define DUMP_EXT_ACL_TYPE(a) \
case _external_acl_format::EXT_ACL_##a: \
DUMP_EXT_ACL_TYPE(EXT_USER);
- case _external_acl_format::EXT_ACL_UNKNOWN:
-
- case _external_acl_format::EXT_ACL_END:
+ default:
fatal("unknown external_acl format error");
break;
}
key = makeExternalAclKey(ch, acl);
if (acl->def->require_auth)
- ch->auth_user_request = NULL;
+ AUTHUSERREQUESTUNLOCK(ch->auth_user_request, "ACLChecklist via aclMatchExternal");
if (!key) {
/* Not sufficient data to process */
wordlist *arg;
external_acl_format *format;
HttpRequest *request = ch->request;
+ HttpReply *reply = ch->reply;
mb.reset();
for (format = acl_data->def->format; format; format = format->next) {
str = RequestMethodStr(request->method);
break;
- case _external_acl_format::EXT_ACL_HEADER:
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST:
sb = request->header.getByName(format->header);
str = sb.buf();
break;
- case _external_acl_format::EXT_ACL_HEADER_ID:
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID:
sb = request->header.getStrOrList(format->header_id);
str = sb.buf();
break;
- case _external_acl_format::EXT_ACL_HEADER_MEMBER:
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER:
sb = request->header.getByNameListMember(format->header, format->member, format->separator);
str = sb.buf();
break;
- case _external_acl_format::EXT_ACL_HEADER_ID_MEMBER:
+ case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID_MEMBER:
sb = request->header.getListMember(format->header_id, format->member, format->separator);
str = sb.buf();
break;
+
+ case _external_acl_format::EXT_ACL_HEADER_REPLY:
+ if(reply) {
+ sb = reply->header.getByName(format->header);
+ str = sb.buf();
+ }
+ break;
+
+ case _external_acl_format::EXT_ACL_HEADER_REPLY_ID:
+ if(reply) {
+ sb = reply->header.getStrOrList(format->header_id);
+ str = sb.buf();
+ }
+ break;
+
+ case _external_acl_format::EXT_ACL_HEADER_REPLY_MEMBER:
+ if(reply) {
+ sb = reply->header.getByNameListMember(format->header, format->member, format->separator);
+ str = sb.buf();
+ }
+ break;
+
+ case _external_acl_format::EXT_ACL_HEADER_REPLY_ID_MEMBER:
+ if(reply) {
+ sb = reply->header.getListMember(format->header_id, format->member, format->separator);
+ str = sb.buf();
+ }
+ break;
#if USE_SSL
case _external_acl_format::EXT_ACL_USER_CERT_RAW:
}
}
+static void
+externalAclRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("external_acl",
+ "External ACL stats",
+ externalAclStats, 0, 1);
+}
+
void
externalAclInit(void)
{
firstTimeInit = 0;
CBDATA_INIT_TYPE_FREECB(externalAclState, free_externalAclState);
}
-}
-void
-externalAclRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("external_acl",
- "External ACL stats",
- externalAclStats, 0, 1);
+ externalAclRegisterWithCacheManager();
}
void
F->flags.open = 0;
fdUpdateBiggest(fd, 0);
Number_FD--;
- F->clear();
- F->timeout = 0;
+ *F = fde();
}
#ifdef _SQUID_MSWIN_
debugs(51, 1, "Open FD "<< std::left<< std::setw(10) <<
(F->bytes_read && F->bytes_written ? "READ/WRITE" :
F->bytes_read ? "READING" : F->bytes_written ? "WRITING" :
- null_string) <<
+ "UNSTARTED") <<
" "<< std::right << std::setw(4) << i << " " << F->desc);
}
}
public:
fde() { clear(); };
- /** Clear the fde class properly back to NULL equivalent. */
- inline void clear() {
- memset(this, 0, sizeof(fde));
- local_addr.SetEmpty(); // IPAddress likes to be setup nicely.
- }
+
+ /// True if comm_close for this fd has been called
+ bool closing() { return flags.close_request; }
/* NOTE: memset is used on fdes today. 20030715 RBC */
static void DumpStats (StoreEntry *);
struct
{
unsigned int open:1;
- unsigned int close_request:1;
+ unsigned int close_request:1; // file_ or comm_close has been called
unsigned int write_daemon:1;
- unsigned int closing:1;
unsigned int socket_eof:1;
unsigned int nolinger:1;
unsigned int nonblocking:1;
time_t timeout;
void *lifetime_data;
AsyncCall::Pointer closeHandler;
+ AsyncCall::Pointer halfClosedReader; /// read handler for half-closed fds
CommWriteStateData *wstate; /* State data for comm_write */
READ_HANDLER *read_method;
WRITE_HANDLER *write_method;
unsigned char upstreamTOS; /* see FwdState::dispatch() */
#endif
+private:
+ /** Clear the fde class back to NULL equivalent. */
+ inline void clear() {
+ timeoutHandler = NULL;
+ closeHandler = NULL;
+ halfClosedReader = NULL;
+ // XXX: the following memset may corrupt or leak new or changed members
+ memset(this, 0, sizeof(fde));
+ local_addr.SetEmpty(); // IPAddress likes to be setup nicely.
+ }
+
};
#endif /* SQUID_FDE_H */
debugs(17, 3, HERE << "FwdState destructor done");
}
-/*
+/**
* This is the entry point for client-side to start forwarding
* a transaction. It is a static method that may or may not
* allocate a FwdState.
return;
case PROTO_CACHEOBJ:
- cachemgrStart(client_fd, request, entry);
+ CacheManager::GetInstance()->Start(client_fd, request, entry);
return;
case PROTO_URN:
void
FwdState::fail(ErrorState * errorState)
{
- debugs(17, 3, "fwdFail: " << err_type_str[errorState->type] << " \"" << httpStatusString(errorState->httpStatus) << "\"\n\t" << entry->url() );
+ debugs(17, 3, HERE << err_type_str[errorState->type] << " \"" << httpStatusString(errorState->httpStatus) << "\"\n\t" << entry->url() );
if (err)
errorStateFree(err);
errorState->request = HTTPMSGLOCK(request);
}
-/*
+/**
* Frees fwdState without closing FD or generating an abort
*/
void
FwdState::unregister(int fd)
{
- debugs(17, 3, "fwdUnregister: " << entry->url() );
+ debugs(17, 3, HERE << entry->url() );
assert(fd == server_fd);
assert(fd > -1);
comm_remove_close_handler(fd, fwdServerClosedWrapper, this);
server_fd = -1;
}
-/*
+/**
* server-side modules call fwdComplete() when they are done
* downloading an object. Then, we either 1) re-forward the
* request somewhere else if needed, or 2) call storeComplete()
{
StoreEntry *e = entry;
assert(entry->store_status == STORE_PENDING);
- debugs(17, 3, "fwdComplete: " << e->url() << "\n\tstatus " << entry->getReply()->sline.status );
+ debugs(17, 3, HERE << e->url() << "\n\tstatus " << entry->getReply()->sline.status );
#if URL_CHECKSUM_DEBUG
entry->mem_obj->checkUrlChecksum();
ErrorState *anErr = errorCon(ERR_DNS_FAIL, HTTP_SERVICE_UNAVAILABLE, request);
- anErr->dnsserver_msg = xstrdup(dns_error_message);
+ anErr->dnsserver_msg = xstrdup(dns_error_message_safe());
fail(anErr);
logfile = logfileOpen(Config.Log.forward, 0, 1);
#endif
+
+ RegisterWithCacheManager();
}
void
-FwdState::RegisterWithCacheManager(CacheManager & manager)
+FwdState::RegisterWithCacheManager(void)
{
- manager.registerAction("forward",
- "Request Forwarding Statistics",
- fwdStats, 0, 1);
+ CacheManager::GetInstance()->
+ registerAction("forward", "Request Forwarding Statistics", fwdStats, 0, 1);
}
void
FwdServer *fs = servers;
assert(fs);
- // some callers use one condition, some use the other; are they the same?
- assert((fs->code == HIER_DIRECT) == !fs->_peer);
-
const char *nextHop = NULL;
- if (fs->_peer) {
- // went to peer, log peer domain name
- nextHop = fs->_peer->host;
+ if (fs->_peer) {
+ // went to peer, log peer host name
+ nextHop = fs->_peer->name;
} else {
// went DIRECT, must honor log_ip_on_direct
nextHop = fd_table[server_fd].ipaddr;
if (!Config.onoff.log_ip_on_direct || !nextHop[0])
nextHop = request->GetHost(); // domain name
- }
+ }
assert(nextHop);
hierarchyNote(&request->hier, fs->code, nextHop);
/* forward decls */
-class CacheManager;
class ErrorState;
#include "comm.h"
typedef RefCount<FwdState> Pointer;
~FwdState();
static void initModule();
- static void RegisterWithCacheManager(CacheManager & manager);
static void fwdStart(int fd, StoreEntry *, HttpRequest *);
void startComplete(FwdServer *);
void updateHierarchyInfo();
void completed();
void retryOrBail();
+ static void RegisterWithCacheManager(void);
#if WIP_FWD_LOG
#endif
}
+/// \ingroup FQDNCacheInternal
+static void
+fqdncacheRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("fqdncache", "FQDN Cache Stats and Contents",
+ fqdnStats, 0, 1);
+
+}
+
/**
\ingroup FQDNCacheAPI
*
{
int n;
+ fqdncacheRegisterWithCacheManager();
+
if (fqdn_table)
return;
sizeof(fqdncache_entry), 0);
}
-/// \ingroup FQDNCacheAPI
-void
-fqdncacheRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("fqdncache",
- "FQDN Cache Stats and Contents",
- fqdnStats, 0, 1);
-
-}
-
/**
\ingroup FQDNCacheAPI
*
}
#endif /*SQUID_SNMP */
+
+/// XXX: a hack to work around the missing DNS error info
+// see http://www.squid-cache.org/bugs/show_bug.cgi?id=2459
+const char *
+dns_error_message_safe()
+{
+ if (dns_error_message)
+ return dns_error_message;
+ debugs(35,DBG_IMPORTANT, "Internal error: lost DNS error info");
+ return "lost DNS error";
+}
## Special Universal .h dependency test script
## aborts if error encountered
-testHeaders: ufs/*.h coss/*.h
+testHeaders: $(top_srcdir)/src/fs/ufs/*.h $(top_srcdir)/src/fs/coss/*.h
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "ufs" || exit 1
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "coss" || exit 1
## diskd/ has no .h files
StoreFScoss::StoreFScoss()
{
FsAdd(*this);
+ registerWithCacheManager();
}
char const *
}
void
-StoreFScoss::registerWithCacheManager(CacheManager & manager)
+StoreFScoss::registerWithCacheManager()
{
- manager.registerAction("coss", "COSS Stats", Stats, 0, 1);
+ CacheManager::GetInstance()->registerAction("coss", "COSS Stats", Stats, 0, 1);
}
void
virtual char const *type() const;
virtual SwapDir *createSwapDir();
virtual void done();
- virtual void registerWithCacheManager(CacheManager & manager);
+ virtual void registerWithCacheManager(void);
virtual void setup();
/* Not implemented */
StoreFScoss (StoreFScoss const &);
/// \ingroup ServerProtocolFTPInternal
typedef void (FTPSM) (FtpStateData *);
+/// common code for FTP control and data channels
+// does not own the channel descriptor, which is managed by FtpStateData
+class FtpChannel {
+public:
+ FtpChannel(): fd(-1) {}
+
+ /// called after the socket is opened, sets up close handler
+ void opened(int aFd, const AsyncCall::Pointer &aCloser);
+
+ void close(); /// clears the close handler and calls comm_close
+ void clear(); /// just resets fd and close handler
+
+ int fd; /// channel descriptor; \todo: remove because the closer has it
+
+private:
+ AsyncCall::Pointer closer; /// Comm close handler callback
+};
+
/// \ingroup ServerProtocolFTPInternal
class FtpStateData : public ServerStateData
{
char *old_filepath;
char typecode;
- struct
+ // \todo: optimize ctrl and data structs member order, to minimize size
+ /// FTP control channel info; the channel is opened once per transaction
+ struct CtrlChannel: public FtpChannel
{
- int fd;
char *buf;
size_t size;
size_t offset;
int replycode;
} ctrl;
- struct
+ /// FTP data channel info; the channel may be opened/closed a few times
+ struct DataChannel: public FtpChannel
{
- int fd;
MemBuf *readBuf;
char *host;
u_short port;
struct _ftp_flags flags;
private:
- AsyncCall::Pointer closeHandler;
CBDATA_CLASS(FtpStateData);
public:
static CNCB ftpPasvCallback;
static PF ftpDataWrite;
void ftpTimeout(const CommTimeoutCbParams &io);
- void ftpSocketClosed(const CommCloseCbParams &io);
+ void ctrlClosed(const CommCloseCbParams &io);
+ void dataClosed(const CommCloseCbParams &io);
void ftpReadControlReply(const CommIoCbParams &io);
void ftpWriteCommandCallback(const CommIoCbParams &io);
void ftpAcceptDataConnection(const CommAcceptCbParams &io);
virtual bool doneWithServer() const;
virtual bool haveControlChannel(const char *caller_name) const;
+ AsyncCall::Pointer dataCloser(); /// creates a Comm close callback
private:
// BodyConsumer for HTTP: consume request body.
ftpReadMkdir /* SENT_MKDIR */
};
+/// handler called by Comm when FTP control channel is closed unexpectedly
+void
+FtpStateData::ctrlClosed(const CommCloseCbParams &io)
+{
+ ctrl.clear();
+ deleteThis("FtpStateData::ctrlClosed");
+}
+
+/// handler called by Comm when FTP data channel is closed unexpectedly
void
-FtpStateData::ftpSocketClosed(const CommCloseCbParams &io)
+FtpStateData::dataClosed(const CommCloseCbParams &io)
{
- ctrl.fd = -1;
- deleteThis("FtpStateData::ftpSocketClosed");
+ data.clear();
+ failed(ERR_FTP_FAILURE, 0);
+ /* failed closes ctrl.fd and frees ftpState */
+
+ /* NP: failure recovery may be possible when its only a data.fd failure.
+ * is the ctrl.fd is still fine, we can send ABOR down it and retry.
+ * Just need to watch out for wider Squid states like shutting down or reconfigure.
+ */
}
FtpStateData::FtpStateData(FwdState *theFwdState) : AsyncJob("FtpStateData"), ServerStateData(theFwdState)
debugs(9, 3, HERE << "'" << url << "'" );
statCounter.server.all.requests++;
statCounter.server.ftp.requests++;
- ctrl.fd = theFwdState->server_fd;
- data.fd = -1;
theSize = -1;
mdtm = -1;
flags.rest_supported = 1;
typedef CommCbMemFunT<FtpStateData, CommCloseCbParams> Dialer;
- closeHandler = asyncCall(9, 5, "FtpStateData::ftpSocketClosed",
- Dialer(this,&FtpStateData::ftpSocketClosed));
- comm_add_close_handler(ctrl.fd, closeHandler);
+ AsyncCall::Pointer closer = asyncCall(9, 5, "FtpStateData::ctrlClosed",
+ Dialer(this, &FtpStateData::ctrlClosed));
+ ctrl.opened(theFwdState->server_fd, closer);
if (request->method == METHOD_PUT)
flags.put = 1;
reply_hdr = NULL;
}
- if (data.fd > -1) {
- int fd = data.fd;
- data.fd = -1;
- comm_close(fd);
+ data.close();
+
+ if (ctrl.fd >= 0) {
+ debugs(9, DBG_IMPORTANT, HERE << "Internal bug: FtpStateData left " <<
+ "control FD " << ctrl.fd << " open");
}
if (ctrl.buf) {
debugs(9, 3,HERE);
/* Connection closed; transfer done. */
- if (data.fd > -1) {
- /**
- * Close data socket so it does not occupy resources while
- * we wait.
- */
- comm_close(data.fd);
- data.fd = -1;
- }
+
+ /// Close data channel, if any, to conserve resources while we wait.
+ data.close();
/* expect the "transfer complete" message on the control socket */
/*
return;
}
- /** \par
- * Closes any old FTP-Data connection which may exist. */
- if (ftpState->data.fd >= 0) {
- comm_close(ftpState->data.fd);
- ftpState->data.fd = -1;
- }
+ /// Closes any old FTP-Data connection which may exist. */
+ ftpState->data.close();
/** \par
* Checks for previous EPSV/PASV failures on this server/session.
return;
}
- /*
- * No comm_add_close_handler() here. If we have both ctrl and
- * data FD's call ftpSocketClosed() upon close, then we have
- * to delete the close handler which did NOT get called
- * to prevent ftpSocketClosed() getting called twice.
- * Instead we'll always call comm_close() on the ctrl FD.
- *
- * XXX this should not actually matter if the ftpState is cbdata
- * managed correctly and comm close handlers are cbdata fenced
- */
- ftpState->data.fd = fd;
+ ftpState->data.opened(fd, ftpState->dataCloser());
/** \par
* Send EPSV (ALL,2,1) or PASV on the control channel.
struct addrinfo *AI = NULL;
int on = 1;
int x = 0;
- /*
- * Tear down any old data connection if any. We are about to
- * establish a new one.
- */
- if (ftpState->data.fd > 0) {
- comm_close(ftpState->data.fd);
- ftpState->data.fd = -1;
- }
+ /// Close old data channel, if any. We may open a new one below.
+ ftpState->data.close();
/*
* Set up a listen socket on the same local address as the
return -1;
}
- ftpState->data.fd = fd;
+ ftpState->data.opened(fd, ftpState->dataCloser());
ftpState->data.port = comm_local_port(fd);
ftpState->data.host = NULL;
return fd;
/**\par
* Replace the Listen socket with the accepted data socket */
- comm_close(data.fd);
-
- data.fd = io.nfd;
+ data.close();
+ data.opened(io.nfd, dataCloser());
data.port = io.details.peer.GetPort();
io.details.peer.NtoA(data.host,SQUIDHOSTNAMELEN);
void
FtpStateData::haveParsedReplyHeaders()
{
+ ServerStateData::haveParsedReplyHeaders();
+
StoreEntry *e = entry;
e->timestampsSet();
FtpStateData::ftpAuthRequired(HttpRequest * request, const char *realm)
{
ErrorState *err = errorCon(ERR_CACHE_ACCESS_DENIED, HTTP_UNAUTHORIZED, request);
- HttpReply *newrep = errorBuildReply(err);
+ HttpReply *newrep = err->BuildHttpReply();
errorStateFree(err);
/* add Authenticate header */
newrep->header.putAuth("Basic", realm);
FtpStateData::doneSendingRequestBody()
{
debugs(9,3, HERE);
- ftpWriteTransferDone(this);
+ dataComplete();
+/* NP: RFC 959 3.3. DATA CONNECTION MANAGEMENT
+ * if transfer type is 'stream' call dataComplete()
+ * otherwise leave open. (reschedule control channel read?)
+ */
}
/**
if (ctrl.fd > -1) {
fwd->unregister(ctrl.fd);
- comm_remove_close_handler(ctrl.fd, closeHandler);
- closeHandler = NULL;
- comm_close(ctrl.fd);
- ctrl.fd = -1;
+ ctrl.close();
}
- if (data.fd > -1) {
- comm_close(data.fd);
- data.fd = -1;
- }
+ data.close();
}
/**
comm_close(ctrl.fd);
return;
}
-
+
fwd->handleUnregisteredServerEnd();
deleteThis("FtpStateData::abortTransaction");
}
+
+/// creates a data channel Comm close callback
+AsyncCall::Pointer
+FtpStateData::dataCloser()
+{
+ typedef CommCbMemFunT<FtpStateData, CommCloseCbParams> Dialer;
+ return asyncCall(9, 5, "FtpStateData::dataClosed",
+ Dialer(this, &FtpStateData::dataClosed));
+}
+
+/// configures the channel with a descriptor and registers a close handler
+void
+FtpChannel::opened(int aFd, const AsyncCall::Pointer &aCloser)
+{
+ assert(fd < 0);
+ assert(closer == NULL);
+
+ assert(aFd >= 0);
+ assert(aCloser != NULL);
+
+ fd = aFd;
+ closer = aCloser;
+ comm_add_close_handler(fd, closer);
+}
+
+/// planned close: removes the close handler and calls comm_close
+void
+FtpChannel::close()
+{
+ if (fd >= 0) {
+ comm_remove_close_handler(fd, closer);
+ closer = NULL;
+ comm_close(fd); // we do not expect to be called back
+ fd = -1;
+ }
+}
+
+/// just resets fd and close handler
+void
+FtpChannel::clear()
+{
+ fd = -1;
+ closer = NULL;
+}
extern char config_input_line[BUFSIZ];
extern const char *DefaultConfigFile; /* DEFAULT_CONFIG_FILE */
extern const char *cfg_filename; /* NULL */
- extern const char *const appname; /* "squid" */
+//MOVED:version.h:APP_SHORTNAME extern const char *const appname; /* "squid" */
extern const char *const dash_str; /* "-" */
extern const char *const null_string; /* "" */
extern const char *const version_string; /* VERSION */
- extern const char *const full_appname_string; /* PACKAGE "/" VERSION */
+//MOVED:versions.h:APP_FULLNAME extern const char *const full_appname_string; /* PACKAGE "/" VERSION */
extern const char *const appname_string; /* PACKAGE */
- extern char * visible_appname_string;
extern const char *const w_space; /* " \t\n\r" */
+ extern char const * visible_appname_string; /* NULL */
extern const char *fdTypeStr[];
extern const char *hier_strings[];
extern const char *memStatusStr[];
extern int neighbors_do_private_keys; /* 1 */
extern int opt_catch_signals; /* 1 */
extern int opt_debug_stderr; /* -1 */
- extern int opt_dns_tests; /* 1 */
extern int opt_foreground_rebuild; /* 0 */
extern char *opt_forwarded_for; /* NULL */
extern int opt_reload_hit_only; /* 0 */
int rr;
int f1;
int response;
+ int reason;
u_int32_t msg_id;
htcpSpecifier S;
htcpDetail D;
static void htcpFreeSpecifier(htcpSpecifier * s);
static void htcpFreeDetail(htcpDetail * s);
-static void htcpHandle(char *buf, int sz, IPAddress &from);
-
-static void htcpHandleData(char *buf, int sz, IPAddress &from);
+static void htcpHandleMsg(char *buf, int sz, IPAddress &from);
static void htcpHandleMon(htcpDataHeader *, char *buf, int sz, IPAddress &from);
return 0;
}
+static ssize_t
+htcpBuildClrOpData(char *buf, size_t buflen, htcpStuff * stuff)
+{
+ u_short reason;
+
+ switch (stuff->rr) {
+ case RR_REQUEST:
+ debugs(31, 3, "htcpBuildClrOpData: RR_REQUEST");
+ reason = htons((u_short)stuff->reason);
+ xmemcpy(buf, &reason, 2);
+ return htcpBuildSpecifier(buf + 2, buflen - 2, stuff) + 2;
+ case RR_RESPONSE:
+ break;
+ default:
+ fatal_dump("htcpBuildClrOpData: bad RR value");
+ }
+
+ return 0;
+}
+
static ssize_t
htcpBuildOpData(char *buf, size_t buflen, htcpStuff * stuff)
{
break;
case HTCP_CLR:
- /* nothing to be done */
+ off = htcpBuildClrOpData(buf + off, buflen, stuff);
break;
default:
len);
if (x < 0)
- debugs(31, 1, "htcpSend: FD " << htcpOutSocket << " sendto: " << xstrerror());
+ debugs(31, 3, "htcpSend: FD " << htcpOutSocket << " sendto: " << xstrerror());
else
statCounter.htcp.pkts_sent++;
}
buf += 2;
if (l > sz) {
- debugs(31, 1, "htcpUnpackSpecifier: failed to unpack METHOD");
+ debugs(31, 3, "htcpUnpackSpecifier: failed to unpack METHOD");
htcpFreeSpecifier(s);
return NULL;
}
sz -= 2;
if (l > sz) {
- debugs(31, 1, "htcpUnpackSpecifier: failed to unpack URI");
+ debugs(31, 3, "htcpUnpackSpecifier: failed to unpack URI");
htcpFreeSpecifier(s);
return NULL;
}
sz -= 2;
if (l > sz) {
- debugs(31, 1, "htcpUnpackSpecifier: failed to unpack VERSION");
+ debugs(31, 3, "htcpUnpackSpecifier: failed to unpack VERSION");
htcpFreeSpecifier(s);
return NULL;
}
sz -= 2;
if (l > sz) {
- debugs(31, 1, "htcpUnpackSpecifier: failed to unpack REQ-HDRS");
+ debugs(31, 3, "htcpUnpackSpecifier: failed to unpack REQ-HDRS");
htcpFreeSpecifier(s);
return NULL;
}
buf += 2;
if (l > sz) {
- debugs(31, 1, "htcpUnpackDetail: failed to unpack RESP_HDRS");
+ debugs(31, 3, "htcpUnpackDetail: failed to unpack RESP_HDRS");
htcpFreeDetail(d);
return NULL;
}
sz -= 2;
if (l > sz) {
- debugs(31, 1, "htcpUnpackDetail: failed to unpack ENTITY_HDRS");
+ debugs(31, 3, "htcpUnpackDetail: failed to unpack ENTITY_HDRS");
htcpFreeDetail(d);
return NULL;
}
sz -= 2;
if (l > sz) {
- debugs(31, 1, "htcpUnpackDetail: failed to unpack CACHE_HDRS");
+ debugs(31, 3, "htcpUnpackDetail: failed to unpack CACHE_HDRS");
htcpFreeDetail(d);
return NULL;
}
if (!pktlen)
{
- debugs(31, 1, "htcpTstReply: htcpBuildPacket() failed");
+ debugs(31, 3, "htcpTstReply: htcpBuildPacket() failed");
return;
}
if (pktlen == 0)
{
- debugs(31, 1, "htcpClrReply: htcpBuildPacket() failed");
+ debugs(31, 3, "htcpClrReply: htcpBuildPacket() failed");
return;
}
if (!key)
{
- debugs(31, 1, "htcpHandleTstResponse: No query key for response id '" << hdr->msg_id << "' from '" << from << "'");
+ debugs(31, 3, "htcpHandleTstResponse: No query key for response id '" << hdr->msg_id << "' from '" << from << "'");
return;
}
if ( *peer != from || peer->GetPort() != from.GetPort() )
{
- debugs(31, 1, "htcpHandleTstResponse: Unexpected response source " << from );
+ debugs(31, 3, "htcpHandleTstResponse: Unexpected response source " << from );
return;
}
d = htcpUnpackDetail(buf, sz);
if (d == NULL) {
- debugs(31, 1, "htcpHandleTstResponse: bad DETAIL");
+ debugs(31, 3, "htcpHandleTstResponse: bad DETAIL");
return;
}
htcpFreeSpecifier(s);
}
+/*
+ * Forward a CLR request to all peers who have requested that CLRs be
+ * forwarded to them.
+ */
static void
+htcpForwardClr(char *buf, int sz)
+{
+ peer *p;
+
+ for (p = Config.peers; p; p = p->next) {
+ if (!p->options.htcp) {
+ continue;
+ }
+ if (!p->options.htcp_forward_clr) {
+ continue;
+ }
+
+ htcpSend(buf, sz, p->in_addr);
+ }
+}
-htcpHandleData(char *buf, int sz, IPAddress &from)
+/*
+ * Do the first pass of handling an HTCP message. This used to be two
+ * separate functions, htcpHandle and htcpHandleData. They were merged to
+ * allow for forwarding HTCP packets easily to other peers if desired.
+ *
+ * This function now works out what type of message we have received and then
+ * hands it off to other functions to break apart message-specific data.
+ */
+static void
+htcpHandleMsg(char *buf, int sz, IPAddress &from)
{
+ htcpHeader htcpHdr;
htcpDataHeader hdr;
+ char *hbuf;
+ int hsz;
+ assert (sz >= 0);
- if ((size_t)sz < sizeof(htcpDataHeader))
+ if ((size_t)sz < sizeof(htcpHeader))
{
- debugs(31, 1, "htcpHandleData: msg size less than htcpDataHeader size");
+ debugs(31, 3, "htcpHandle: msg size less than htcpHeader size");
return;
}
- if (!old_squid_format)
+ htcpHexdump("htcpHandle", buf, sz);
+ xmemcpy(&htcpHdr, buf, sizeof(htcpHeader));
+ htcpHdr.length = ntohs(htcpHdr.length);
+
+ if (htcpHdr.minor == 0)
+ old_squid_format = 1;
+ else
+ old_squid_format = 0;
+
+ debugs(31, 3, "htcpHandle: htcpHdr.length = " << htcpHdr.length);
+ debugs(31, 3, "htcpHandle: htcpHdr.major = " << htcpHdr.major);
+ debugs(31, 3, "htcpHandle: htcpHdr.minor = " << htcpHdr.minor);
+
+ if (sz != htcpHdr.length)
{
- xmemcpy(&hdr, buf, sizeof(hdr));
- } else
+ debugs(31, 3, "htcpHandle: sz/" << sz << " != htcpHdr.length/" <<
+ htcpHdr.length << " from " << from );
+
+ return;
+ }
+
+ if (htcpHdr.major != 0)
+ {
+ debugs(31, 3, "htcpHandle: Unknown major version " << htcpHdr.major << " from " << from );
+
+ return;
+ }
+
+ hbuf = buf + sizeof(htcpHeader);
+ hsz = sz - sizeof(htcpHeader);
+
+ if ((size_t)hsz < sizeof(htcpDataHeader))
{
+ debugs(31, 3, "htcpHandleData: msg size less than htcpDataHeader size");
+ return;
+ }
+
+ if (!old_squid_format)
+ {
+ xmemcpy(&hdr, hbuf, sizeof(hdr));
+ } else {
htcpDataHeaderSquid hdrSquid;
- xmemcpy(&hdrSquid, buf, sizeof(hdrSquid));
+ xmemcpy(&hdrSquid, hbuf, sizeof(hdrSquid));
hdr.length = hdrSquid.length;
hdr.opcode = hdrSquid.opcode;
hdr.response = hdrSquid.response;
hdr.length = ntohs(hdr.length);
hdr.msg_id = ntohl(hdr.msg_id);
- debugs(31, 3, "htcpHandleData: sz = " << sz);
+ debugs(31, 3, "htcpHandleData: hsz = " << hsz);
debugs(31, 3, "htcpHandleData: length = " << hdr.length);
- if (hdr.opcode >= HTCP_END)
- {
- debugs(31, 1, "htcpHandleData: client " << from << ", opcode " << hdr.opcode << " out of range");
+ if (hdr.opcode >= HTCP_END) {
+ debugs(31, 3, "htcpHandleData: client " << from << ", opcode " << hdr.opcode << " out of range");
return;
}
debugs(31, 3, "htcpHandleData: RR = " << hdr.RR);
debugs(31, 3, "htcpHandleData: msg_id = " << hdr.msg_id);
- if (sz < hdr.length)
- {
- debugs(31, 1, "htcpHandleData: sz < hdr.length");
+ if (hsz < hdr.length) {
+ debugs(31, 3, "htcpHandleData: sz < hdr.length");
return;
}
* set sz = hdr.length so we ignore any AUTH fields following
* the DATA.
*/
- sz = (int) hdr.length;
+ hsz = (int) hdr.length;
+ hbuf += sizeof(htcpDataHeader);
+ hsz -= sizeof(htcpDataHeader);
+ debugs(31, 3, "htcpHandleData: hsz = " << hsz);
- buf += sizeof(htcpDataHeader);
-
- sz -= sizeof(htcpDataHeader);
-
- debugs(31, 3, "htcpHandleData: sz = " << sz);
-
- htcpHexdump("htcpHandleData", buf, sz);
-
- switch (hdr.opcode)
- {
+ htcpHexdump("htcpHandleData", hbuf, hsz);
+ switch (hdr.opcode) {
case HTCP_NOP:
- htcpHandleNop(&hdr, buf, sz, from);
+ htcpHandleNop(&hdr, hbuf, hsz, from);
break;
-
case HTCP_TST:
- htcpHandleTst(&hdr, buf, sz, from);
+ htcpHandleTst(&hdr, hbuf, hsz, from);
break;
-
case HTCP_MON:
- htcpHandleMon(&hdr, buf, sz, from);
+ htcpHandleMon(&hdr, hbuf, hsz, from);
break;
-
case HTCP_SET:
- htcpHandleSet(&hdr, buf, sz, from);
+ htcpHandleSet(&hdr, hbuf, hsz, from);
break;
-
case HTCP_CLR:
- htcpHandleClr(&hdr, buf, sz, from);
+ htcpHandleClr(&hdr, hbuf, hsz, from);
+ htcpForwardClr(buf, sz);
break;
-
default:
- return;
- }
-}
-
-static void
-
-htcpHandle(char *buf, int sz, IPAddress &from)
-{
- htcpHeader htcpHdr;
- assert (sz >= 0);
-
- if ((size_t)sz < sizeof(htcpHeader))
- {
- debugs(31, 1, "htcpHandle: msg size less than htcpHeader size");
- return;
- }
-
- htcpHexdump("htcpHandle", buf, sz);
- xmemcpy(&htcpHdr, buf, sizeof(htcpHeader));
- htcpHdr.length = ntohs(htcpHdr.length);
-
- if (htcpHdr.minor == 0)
- old_squid_format = 1;
- else
- old_squid_format = 0;
-
- debugs(31, 3, "htcpHandle: htcpHdr.length = " << htcpHdr.length);
- debugs(31, 3, "htcpHandle: htcpHdr.major = " << htcpHdr.major);
- debugs(31, 3, "htcpHandle: htcpHdr.minor = " << htcpHdr.minor);
-
- if (sz != htcpHdr.length)
- {
- debugs(31, 1, "htcpHandle: sz/" << sz << " != htcpHdr.length/" <<
- htcpHdr.length << " from " << from );
-
- return;
- }
-
- if (htcpHdr.major != 0)
- {
- debugs(31, 1, "htcpHandle: Unknown major version " << htcpHdr.major << " from " << from );
-
- return;
+ break;
}
-
- buf += sizeof(htcpHeader);
- sz -= sizeof(htcpHeader);
- htcpHandleData(buf, sz, from);
}
static void
if (len)
statCounter.htcp.pkts_recv++;
- htcpHandle(buf, len, from);
+ htcpHandleMsg(buf, len, from);
commSetSelect(fd, COMM_SELECT_READ, htcpRecv, NULL, 0);
}
void
htcpInit(void)
{
- IPAddress sendOn;
-
if (Config.Port.htcp <= 0) {
debugs(31, 1, "HTCP Disabled.");
return;
}
- sendOn = Config.Addrs.udp_outgoing;
- sendOn.SetPort(Config.Port.htcp);
+
+ IPAddress incomingAddr = Config.Addrs.udp_incoming;
+ incomingAddr.SetPort(Config.Port.htcp);
enter_suid();
htcpInSocket = comm_open(SOCK_DGRAM,
IPPROTO_UDP,
- sendOn,
+ incomingAddr,
COMM_NONBLOCKING,
"HTCP Socket");
leave_suid();
debugs(31, 1, "Accepting HTCP messages on port " << Config.Port.htcp << ", FD " << htcpInSocket << ".");
if (!Config.Addrs.udp_outgoing.IsNoAddr()) {
+ IPAddress outgoingAddr = Config.Addrs.udp_outgoing;
+ outgoingAddr.SetPort(Config.Port.htcp);
+
enter_suid();
htcpOutSocket = comm_open(SOCK_DGRAM,
IPPROTO_UDP,
- sendOn,
+ outgoingAddr,
COMM_NONBLOCKING,
"Outgoing HTCP Socket");
leave_suid();
return;
old_squid_format = p->options.htcp_oldsquid;
-
memset(&flags, '\0', sizeof(flags));
-
snprintf(vbuf, sizeof(vbuf), "%d/%d",
req->http_ver.major, req->http_ver.minor);
-
stuff.op = HTCP_TST;
-
stuff.rr = RR_REQUEST;
-
stuff.f1 = 1;
-
stuff.response = 0;
-
stuff.msg_id = ++msg_id_counter;
-
stuff.S.method = (char *) RequestMethodStr(req->method);
-
stuff.S.uri = (char *) e->url();
-
stuff.S.version = vbuf;
-
HttpStateData::httpBuildRequestHeader(req, req, e, &hdr, flags);
-
mb.init();
-
packerToMemInit(&pa, &mb);
-
hdr.packInto(&pa);
-
hdr.clean();
-
packerClean(&pa);
-
stuff.S.req_hdrs = mb.buf;
-
pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff);
-
mb.clean();
-
if (!pktlen) {
- debugs(31, 1, "htcpQuery: htcpBuildPacket() failed");
+ debugs(31, 3, "htcpQuery: htcpBuildPacket() failed");
return;
}
-
+
htcpSend(pkt, (int) pktlen, p->in_addr);
queried_id[stuff.msg_id % N_QUERIED_KEYS] = stuff.msg_id;
debugs(31, 3, "htcpQuery: key (" << save_key << ") " << storeKeyText(save_key));
}
+/*
+ * Send an HTCP CLR message for a specified item to a given peer.
+ */
+void
+htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, peer * p, htcp_clr_reason reason)
+{
+ static char pkt[8192];
+ ssize_t pktlen;
+ char vbuf[32];
+ htcpStuff stuff;
+ HttpHeader hdr(hoRequest);
+ Packer pa;
+ MemBuf mb;
+ http_state_flags flags;
+
+ if (htcpInSocket < 0)
+ return;
+
+ old_squid_format = p->options.htcp_oldsquid;
+ memset(&flags, '\0', sizeof(flags));
+ snprintf(vbuf, sizeof(vbuf), "%d/%d",
+ req->http_ver.major, req->http_ver.minor);
+ stuff.op = HTCP_CLR;
+ stuff.rr = RR_REQUEST;
+ stuff.f1 = 0;
+ stuff.response = 0;
+ stuff.msg_id = ++msg_id_counter;
+ switch (reason) {
+ case HTCP_CLR_INVALIDATION:
+ stuff.reason = 1;
+ break;
+ default:
+ stuff.reason = 0;
+ break;
+ }
+ stuff.S.method = (char *) RequestMethodStr(req->method);
+ if (e == NULL || e->mem_obj == NULL) {
+ if (uri == NULL) {
+ return;
+ }
+ stuff.S.uri = xstrdup(uri);
+ } else {
+ stuff.S.uri = (char *) e->url();
+ }
+ stuff.S.version = vbuf;
+ if (reason != HTCP_CLR_INVALIDATION) {
+ HttpStateData::httpBuildRequestHeader(req, req, e, &hdr, flags);
+ mb.init();
+ packerToMemInit(&pa, &mb);
+ hdr.packInto(&pa);
+ hdr.clean();
+ packerClean(&pa);
+ stuff.S.req_hdrs = mb.buf;
+ } else {
+ stuff.S.req_hdrs = NULL;
+ }
+ pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff);
+ if (reason != HTCP_CLR_INVALIDATION) {
+ mb.clean();
+ }
+ if (e == NULL) {
+ xfree(stuff.S.uri);
+ }
+ if (!pktlen) {
+ debugs(31, 3, "htcpClear: htcpBuildPacket() failed");
+ return;
+ }
+
+ htcpSend(pkt, (int) pktlen, p->in_addr);
+}
+
/*
* htcpSocketShutdown only closes the 'in' socket if it is
* different than the 'out' socket.
/// \ingroup ServerProtocolHTCP
SQUIDCEXTERN void htcpQuery(StoreEntry * e, HttpRequest * req, peer * p);
+/// \ingroup ServerProtocolHTCP
+SQUIDCEXTERN void htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, peer * p, htcp_clr_reason reason);
+
/// \ingroup ServerProtocolHTCP
SQUIDCEXTERN void htcpSocketShutdown(void);
HttpHeader * hdr_out, int we_do_ranges, http_state_flags);
HttpStateData::HttpStateData(FwdState *theFwdState) : AsyncJob("HttpStateData"), ServerStateData(theFwdState),
- header_bytes_read(0), reply_bytes_read(0), httpChunkDecoder(NULL)
+ lastChunk(0), header_bytes_read(0), reply_bytes_read(0), httpChunkDecoder(NULL)
{
debugs(11,5,HERE << "HttpStateData " << this << " created");
ignoreCacheControl = false;
if (pe != NULL) {
assert(e != pe);
+#if USE_HTCP
+ neighborsHtcpClear(e, NULL, e->mem_obj->request, e->mem_obj->method, HTCP_CLR_INVALIDATION);
+#endif
pe->release();
}
if (pe != NULL) {
assert(e != pe);
+#if USE_HTCP
+ neighborsHtcpClear(e, NULL, e->mem_obj->request, HttpRequestMethod(METHOD_HEAD), HTCP_CLR_INVALIDATION);
+#endif
pe->release();
}
-
- if (forbidden)
- return;
-
- /// \todo AYJ: given the coment below + new behaviour of accepting METHOD_UNKNOWN, should we invert this test
- /// removing the object unless the method is nown to be safely kept?
- switch (e->mem_obj->method.id()) {
-
- case METHOD_PUT:
-
- case METHOD_DELETE:
-
- case METHOD_PROPPATCH:
-
- case METHOD_MKCOL:
-
- case METHOD_MOVE:
-
- case METHOD_BMOVE:
-
- case METHOD_BDELETE:
- /** \par
- * Remove any cached GET object if it is believed that the
- * object may have changed as a result of other methods
- */
-
- if (e->mem_obj->request)
- pe = storeGetPublicByRequestMethod(e->mem_obj->request, METHOD_GET);
- else
- pe = storeGetPublic(e->mem_obj->url, METHOD_GET);
-
- if (pe != NULL) {
- assert(e != pe);
- pe->release();
- }
-
- break;
-
- default:
- /* Keep GCC happy. The methods above are all mutating HTTP methods
- */
- break;
- }
}
void
void
HttpStateData::haveParsedReplyHeaders()
{
+ ServerStateData::haveParsedReplyHeaders();
+
Ctx ctx = ctx_enter(entry->mem_obj->url);
HttpReply *rep = finalReply();
if (!flags.headers_parsed)
return INCOMPLETE_MSG;
+ if (eof) // already reached EOF
+ return COMPLETE_NONPERSISTENT_MSG;
+
/* In chunked responce we do not know the content length but we are absolutelly
* sure about the end of response, so we are calling the statusIfComplete to
* decide if we can be persistant
*/
- if (eof && flags.chunked)
+ if (lastChunk && flags.chunked)
return statusIfComplete();
- if (eof) // already reached EOF
- return COMPLETE_NONPERSISTENT_MSG;
-
const int64_t clen = vrep->bodySize(request->method);
debugs(11, 5, "persistentConnStatus: clen=" << clen);
data=decodedData.content();
addVirginReplyBody(data, len);
if (done) {
- eof = 1;
- flags.do_next_read = 0;
+ lastChunk = 1;
+ flags.do_next_read = 0;
}
SQUID_EXIT_THROWING_CODE(status);
return status;
peer *_peer; /* peer request made to */
int eof; /* reached end-of-object? */
+ int lastChunk; /* reached last chunk of a chunk-encoded reply */
HttpRequest *orig_request;
int fd;
http_state_flags flags;
al.cache.caddr = caddr;
- al.cache.size = len;
+ al.cache.replySize = len;
al.cache.code = logcode;
-
/*
* $Id: ident.cc,v 1.78 2007/12/14 23:11:47 amosjeffries Exp $
*
*/
#include "squid.h"
+#include "ident.h"
#include "comm.h"
#include "MemBuf.h"
--- /dev/null
+/*
+ * $Id$
+ */
+#ifndef SQUID_IDENT_H
+#define SQUID_IDENT_H
+
+/*
+ \defgroup IdentAPI Ident Lookup API
+ \ingroup SquidComponents
+ *
+ */
+
+#include "config.h"
+
+#if USE_IDENT
+
+#include "cbdata.h"
+
+class IPAddress;
+
+/// \ingroup IdentAPI
+SQUIDCEXTERN void identStart(IPAddress &me, IPAddress &my_peer, IDCB * callback, void *cbdata);
+
+/// \ingroup IdentAPI
+SQUIDCEXTERN void identInit(void);
+
+#endif /* USE_IDENT */
+#endif /* SQUID_IDENT_H */
#endif
static IPH ipcacheHandleCnameRecurse;
static int ipcacheExpiredEntry(ipcache_entry *);
-static int ipcache_testname(void);
#if USE_DNSSERVERS
static int ipcacheParse(ipcache_entry *, const char *buf);
#else
extern int _dns_ttl_;
#endif
-/// \ingroup IPCacheInternal
-static int
-ipcache_testname(void)
-{
- wordlist *w = NULL;
- debugs(14, 1, "Performing DNS Tests...");
-
- if ((w = Config.dns_testname_list) == NULL)
- return 1;
-
- for (; w; w = w->next) {
- if (gethostbyname(w->key) != NULL)
- return 1;
- }
-
- return 0;
-}
-
/**
\ingroup IPCacheInternal
*
\param handler Pointer to the function to be called when the reply
* from the IP cache (or the DNS if the IP cache misses)
\param handlerData Information that is passed to the handler and does not affect the IP cache.
+ *
+ * XXX: on hits and some errors, the handler is called immediately instead
+ * of scheduling an async call. This reentrant behavior means that the
+ * user job must be extra careful after calling ipcache_nbgethostbyname,
+ * especially if the handler destroys the job. Moreover, the job has
+ * no way of knowing whether the reentrant call happened. commConnectStart
+ * protects the job by scheduling an async call, but some user code calls
+ * ipcache_nbgethostbyname directly.
*/
void
ipcache_nbgethostbyname(const char *name, IPH * handler, void *handlerData)
#endif
}
+/// \ingroup IPCacheInternal
+static void
+ipcacheRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("ipcache",
+ "IP Cache Stats and Contents",
+ stat_ipcache_get, 0, 1);
+}
+
+
/**
\ingroup IPCacheAPI
*
ipcache_init(void)
{
int n;
- debugs(14, 3, "Initializing IP Cache...");
+ debugs(14, DBG_IMPORTANT, "Initializing IP Cache...");
memset(&IpcacheStats, '\0', sizeof(IpcacheStats));
memset(&lru_list, '\0', sizeof(lru_list));
- /* test naming lookup */
-
- if (!opt_dns_tests) {
- debugs(14, 4, "ipcache_init: Skipping DNS name lookup tests.");
- } else if (!ipcache_testname()) {
- fatal("ipcache_init: DNS name lookup tests failed.");
- } else {
- debugs(14, 1, "Successful DNS name lookup tests...");
- }
-
memset(&static_addrs, '\0', sizeof(ipcache_addrs));
static_addrs.in_addrs = (IPAddress *)xcalloc(1, sizeof(IPAddress));
n = hashPrime(ipcache_high / 4);
ip_table = hash_create((HASHCMP *) strcmp, n, hash4);
memDataInit(MEM_IPCACHE_ENTRY, "ipcache_entry", sizeof(ipcache_entry), 0);
-}
-/// \ingroup IPCacheAPI
-void
-ipcacheRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("ipcache",
- "IP Cache Stats and Contents",
- stat_ipcache_get, 0, 1);
+ ipcacheRegisterWithCacheManager();
}
/**
#include "squid.h"
#include "AccessLogEntry.h"
#include "authenticate.h"
-#include "CacheManager.h"
#include "ConfigParser.h"
#include "errorpage.h"
#include "event.h"
#include "ExternalACL.h"
#include "Store.h"
#include "ICP.h"
+#include "ident.h"
#include "HttpReply.h"
#include "pconn.h"
#include "Mem.h"
static volatile int shutdown_status = 0;
static void mainRotate(void);
-static void mainReconfigure(void);
+static void mainReconfigureStart(void);
+static void mainReconfigureFinish(void*);
static void mainInitialize(void);
static void usage(void);
static void mainParseOptions(int argc, char *argv[]);
static void sendSignal(void);
static void serverConnectionsOpen(void);
+static void serverConnectionsClose(void);
static void watch_child(char **);
static void setEffectiveUser(void);
#if MEM_GEN_TRACE
static void mainSetCwd(void);
static int checkRunningPid(void);
-static CacheManager manager;
-
#ifndef _SQUID_MSWIN_
static const char *squid_start_script = "squid_start";
#endif
PROF_start(SignalEngine_checkEvents);
if (do_reconfigure) {
- mainReconfigure();
+ mainReconfigureStart();
do_reconfigure = 0;
} else if (do_rotate) {
mainRotate();
{
fprintf(stderr,
#if USE_WIN32_SERVICE
- "Usage: %s [-cdhirvzCDFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal] [-n name] [-O CommandLine]\n"
+ "Usage: %s [-cdhirvzCFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal] [-n name] [-O CommandLine]\n"
#else
- "Usage: %s [-cdhvzCDFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal]\n"
+ "Usage: %s [-cdhvzCFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal]\n"
#endif
" -a port Specify HTTP port number (default: %d).\n"
" -d level Write debugging to stderr also.\n"
" -v Print version.\n"
" -z Create swap directories\n"
" -C Do not catch fatal signals.\n"
- " -D Disable initial DNS tests.\n"
+ " -D OBSOLETE. Scheduled for removal.\n"
" -F Don't serve any requests until store is rebuilt.\n"
" -N No daemon mode.\n"
#if USE_WIN32_SERVICE
" -V Virtual host httpd-accelerator.\n"
" -X Force full debugging.\n"
" -Y Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.\n",
- appname, CACHE_HTTP_PORT, DefaultConfigFile, CACHE_ICP_PORT);
+ APP_SHORTNAME, CACHE_HTTP_PORT, DefaultConfigFile, CACHE_ICP_PORT);
exit(1);
}
case 'D':
/** \par D
- * Unset/disable global option for optional DNS tests. opt_dns_tests */
- opt_dns_tests = 0;
+ * OBSOLETE: WAS: override to prevent optional startup DNS tests. */
+ debugs(1,DBG_CRITICAL, "WARNING: -D command-line option is obsolete.");
break;
case 'F':
asnInit();
ACL::Initialize();
peerSelectInit();
-#if USE_CARP
carpInit();
-#endif
+ peerUserHashInit();
+ peerSourceHashInit();
}
-void
+static void
serverConnectionsClose(void)
{
assert(shutting_down || reconfiguring);
}
static void
-mainReconfigure(void)
+mainReconfigureStart(void)
{
debugs(1, 1, "Reconfiguring Squid Cache (version " << version_string << ")...");
reconfiguring = 1;
- /* Already called serverConnectionsClose and ipcacheShutdownServers() */
+
+ // Initiate asynchronous closing sequence
serverConnectionsClose();
icpConnectionClose();
#if USE_HTCP
accessLogClose();
useragentLogClose();
refererCloseLog();
+
+ eventAdd("mainReconfigureFinish", &mainReconfigureFinish, NULL, 0, 1,
+ false);
+}
+
+static void
+mainReconfigureFinish(void *) {
+ debugs(1, 3, "finishing reconfiguring");
+
errorClean();
enter_suid(); /* root to read config file */
- parseConfigFile(ConfigFile, manager);
+ parseConfigFile(ConfigFile);
setUmask(Config.umask);
Mem::Report();
setEffectiveUser();
serverConnectionsOpen();
neighbors_init();
- neighborsRegisterWithCacheManager(manager);
storeDirOpenSwapLogs();
FwdState::initModule();
/* register the modules in the cache manager menus */
- accessLogRegisterWithCacheManager(manager);
- asnRegisterWithCacheManager(manager);
- authenticateRegisterWithCacheManager(&Config.authConfiguration, manager);
-#if USE_CARP
- carpRegisterWithCacheManager(manager);
-#endif
-
- cbdataRegisterWithCacheManager(manager);
+ cbdataRegisterWithCacheManager();
/* These use separate calls so that the comm loops can eventually
* coexist.
*/
-#ifdef USE_EPOLL
-
- commEPollRegisterWithCacheManager(manager);
-#endif
-#ifdef USE_KQUEUE
-
- commKQueueRegisterWithCacheManager(manager);
-#endif
-#ifdef USE_POLL
- commPollRegisterWithCacheManager(manager);
-#endif
-#if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
-
- commSelectRegisterWithCacheManager(manager);
-#endif
-
- clientdbRegisterWithCacheManager(manager);
-#if DELAY_POOLS
-
- DelayPools::RegisterWithCacheManager(manager);
-#endif
-
- DiskIOModule::RegisterAllModulesWithCacheManager(manager);
-#if USE_DNSSERVERS
-
- dnsRegisterWithCacheManager(manager);
-#endif
-
- eventInit(manager);
- externalAclRegisterWithCacheManager(manager);
- fqdncacheRegisterWithCacheManager(manager);
- FwdState::RegisterWithCacheManager(manager);
- httpHeaderRegisterWithCacheManager(manager);
-#if !USE_DNSSERVERS
-
- idnsRegisterWithCacheManager(manager);
-#endif
-
- ipcacheRegisterWithCacheManager(manager);
- Mem::RegisterWithCacheManager(manager);
- netdbRegisterWitHCacheManager(manager);
- PconnModule::GetInstance()->registerWithCacheManager(manager);
- redirectRegisterWithCacheManager(manager);
- refreshRegisterWithCacheManager(manager);
- statRegisterWithCacheManager(manager);
- storeDigestRegisterWithCacheManager(manager);
- StoreFileSystem::RegisterAllFsWithCacheManager(manager);
- storeRegisterWithCacheManager(manager);
- storeLogRegisterWithCacheManager(manager);
-#if DEBUGSTRINGS
-
- StringRegistry::Instance().registerWithCacheManager(manager);
-#endif
-
-#if USE_XPROF_STATS
-
- xprofRegisterWithCacheManager(manager);
-#endif
+ eventInit();
+ // TODO: pconn is a good candidate for new-style registration
+ // PconnModule::GetInstance()->registerWithCacheManager();
+ // moved to PconnModule::PconnModule()
}
#if USE_WCCP
neighbors_init();
- neighborsRegisterWithCacheManager(manager);
+ // neighborsRegisterWithCacheManager(); //moved to neighbors_init()
if (Config.chroot_dir)
no_suid();
#endif
eventAdd("memPoolCleanIdlePools", Mem::CleanIdlePools, NULL, 15.0, 1);
-
- eventAdd("commCheckHalfClosed", commCheckHalfClosed, NULL, 1.0, false);
}
configured_once = 1;
/* we may want the parsing process to set this up in the future */
Store::Root(new StoreController);
- parse_err = parseConfigFile(ConfigFile, manager);
+ parse_err = parseConfigFile(ConfigFile);
Mem::Report();
} else
#ifdef _SQUID_MSWIN_
{
- fprintf(stderr, "%s: ERROR: Could not send ", appname);
+ fprintf(stderr, "%s: ERROR: Could not send ", APP_SHORTNAME);
fprintf(stderr, "signal to Squid Service:\n");
fprintf(stderr, "missing -n command line switch.\n");
exit(1);
if (kill(pid, opt_send_signal) &&
/* ignore permissions if just running check */
!(opt_send_signal == 0 && errno == EPERM)) {
- fprintf(stderr, "%s: ERROR: Could not send ", appname);
+ fprintf(stderr, "%s: ERROR: Could not send ", APP_SHORTNAME);
fprintf(stderr, "signal %d to process %d: %s\n",
opt_send_signal, (int) pid, xstrerror());
exit(1);
}
} else {
- fprintf(stderr, "%s: ERROR: No running copy\n", appname);
+ fprintf(stderr, "%s: ERROR: No running copy\n", APP_SHORTNAME);
exit(1);
}
if (*(argv[0]) == '(')
return;
- openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
+ openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
if ((pid = fork()) < 0)
syslog(LOG_ALERT, "fork failed: %s", xstrerror());
if ((pid = fork()) == 0) {
/* child */
- openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
+ openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
prog = xstrdup(argv[0]);
argv[0] = xstrdup("(squid)");
execvp(prog, argv);
}
/* parent */
- openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
+ openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
syslog(LOG_NOTICE, "Squid Parent: child process %d started", pid);
static void
SquidShutdown()
{
+ /* XXX: This function is called after the main loop has quit, which
+ * means that no AsyncCalls would be called, including close handlers.
+ * TODO: We need to close/shut/free everything that needs calls before
+ * exiting the loop.
+ */
+
#if USE_WIN32_SERVICE
WIN32_svcstatusupdate(SERVICE_STOP_PENDING, 10000);
#endif
if (StrPools[i].pool->objectSize() != StrPoolsAttrs[i].obj_size)
debugs(13, 1, "Notice: " << StrPoolsAttrs[i].name << " is " << StrPools[i].pool->objectSize() << " bytes instead of requested " << StrPoolsAttrs[i].obj_size << " bytes");
}
+
+ RegisterWithCacheManager();
}
void
}
void
-Mem::RegisterWithCacheManager(CacheManager & manager)
+Mem::RegisterWithCacheManager(void)
{
- manager.registerAction("mem",
- "Memory Utilization",
+ CacheManager::GetInstance()->registerAction("mem", "Memory Utilization",
Mem::Stats, 0, 1);
}
if (!peerHTTPOkay(p, request))
continue;
- if (p->weight == 1) {
- if (q && q->rr_count < p->rr_count)
- continue;
- } else if (p->weight == 0 || (q && q->rr_count < (p->rr_count / p->weight))) {
+ if (p->weight == 0)
continue;
+
+ if (q) {
+ if (p->weight == q->weight) {
+ if (q->rr_count < p->rr_count)
+ continue;
+ } else if ( (double) q->rr_count / q->weight < (double) p->rr_count / p->weight) {
+ continue;
+ }
}
q = p;
if (q)
q->rr_count++;
- debugs(15, 3, "getRoundRobinParent: returning " << (q ? q->host : "NULL"));
+ debugs(15, 3, HERE << "returning " << (q ? q->host : "NULL"));
return q;
}
return q;
}
-/* This gets called every 5 minutes to clear the round-robin counter. */
+/**
+ * This gets called every 5 minutes to clear the round-robin counter.
+ * The exact timing is an arbitrary default, set on estimate timing of a
+ * large number of requests in a high-performance environment during the
+ * period. The larger the number of requests between cycled resets the
+ * more balanced the operations.
+ *
+ \param data unused.
+ \todo Make the reset timing a selectable parameter in squid.conf
+ */
+static void
+peerClearRRLoop(void *data)
+{
+ peerClearRR();
+ eventAdd("peerClearRR", peerClearRRLoop, data, 5 * 60.0, 0);
+}
+
+/**
+ * This gets called on startup and restart to kick off the peer round-robin
+ * maintenance event. It ensures that no matter how many times its called
+ * no more than one event is scheduled.
+ */
void
-peerClearRR(void *data)
+peerClearRRStart(void)
{
- peer *p = (peer *)data;
- p->rr_count -= p->rr_lastcount;
+ static int event_added = 0;
+ if (!event_added) {
+ peerClearRRLoop(NULL);
+ }
+}
- if (p->rr_count < 0)
+/**
+ * Called whenever the round-robin counters need to be reset to a sane state.
+ * So far those times are:
+ \item On startup and reconfigure - to set the counters to sane initial settings.
+ \item When a peer has revived from dead, to prevent the revived peer being
+ * flooded with requests which it has 'missed' during the down period.
+ */
+void
+peerClearRR()
+{
+ peer *p = NULL;
+ for (p = Config.peers; p; p = p->next) {
p->rr_count = 0;
+ }
+}
- p->rr_lastcount = p->rr_count;
+/**
+ * Perform all actions when a peer is detected revived.
+ */
+void
+peerAlive(peer *p)
+{
+ if (p->stats.logged_state == PEER_DEAD && p->tcp_up) {
+ debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
+ p->stats.logged_state = PEER_ALIVE;
+ peerClearRR();
+ }
- eventAdd("peerClearRR", peerClearRR, p, 5 * 60.0, 0);
+ p->stats.last_reply = squid_curtime;
+ p->stats.probe_start = 0;
}
peer *
first_ping = Config.peers;
}
+static void
+neighborsRegisterWithCacheManager()
+{
+ CacheManager *manager = CacheManager::GetInstance();
+ manager->registerAction("server_list",
+ "Peer Cache Statistics",
+ neighborDumpPeers, 0, 1);
+
+ if (theInIcpConnection >= 0) {
+ manager->registerAction("non_peers",
+ "List of Unknown sites sending ICP messages",
+ neighborDumpNonPeers, 0, 1);
+ }
+}
+
void
neighbors_init(void)
{
peer *next = NULL;
int fd = theInIcpConnection;
+ neighborsRegisterWithCacheManager();
+
/* setup addrinfo for use */
nul.InitAddrInfo(AI);
nul.FreeAddrInfo(AI);
}
-void
-neighborsRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("server_list",
- "Peer Cache Statistics",
- neighborDumpPeers, 0, 1);
-
- if (theInIcpConnection >= 0) {
- manager.registerAction("non_peers",
- "List of Unknown sites sending ICP messages",
- neighborDumpNonPeers, 0, 1);
- }
-
- /* XXX FIXME: unregister if we were registered. Something like:
- * else {
- * CacheManagerAction * action = manager.findAction("non_peers");
- * if (action != NULL)
- * manager.unregisterAction(action);
- * }
- */
-}
-
int
neighborsUdpPing(HttpRequest * request,
StoreEntry * entry,
debugs(15, 3, "neighborsUdpPing: reqnum = " << reqnum);
#if USE_HTCP
-
- if (p->options.htcp) {
+ if (p->options.htcp && !p->options.htcp_only_clr) {
debugs(15, 3, "neighborsUdpPing: sending HTCP query");
htcpQuery(entry, request, p);
} else
static void
neighborAlive(peer * p, const MemObject * mem, const icp_common_t * header)
{
- if (p->stats.logged_state == PEER_DEAD && p->tcp_up) {
- debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
- p->stats.logged_state = PEER_ALIVE;
- }
-
- p->stats.last_reply = squid_curtime;
- p->stats.probe_start = 0;
+ peerAlive(p);
p->stats.pings_acked++;
if ((icp_opcode) header->opcode <= ICP_END)
static void
neighborAliveHtcp(peer * p, const MemObject * mem, const htcpReplyData * htcp)
{
- if (p->stats.logged_state == PEER_DEAD && p->tcp_up) {
- debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
- p->stats.logged_state = PEER_ALIVE;
- }
-
- p->stats.last_reply = squid_curtime;
- p->stats.probe_start = 0;
+ peerAlive(p);
p->stats.pings_acked++;
p->htcp.counts[htcp->hit ? 1 : 0]++;
p->htcp.version = htcp->version;
{
if (!p->tcp_up) {
debugs(15, 2, "TCP connection to " << p->host << "/" << p->http_port << " succeded");
- debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
- p->stats.logged_state = PEER_ALIVE;
+ p->tcp_up = PEER_TCP_MAGIC_COUNT; // NP: so peerAlive(p) works properly.
+ peerAlive(p);
if (!p->n_addresses)
ipcache_nbgethostbyname(p->host, peerDNSConfigure, p);
}
+ else
+ p->tcp_up = PEER_TCP_MAGIC_COUNT;
+}
- p->tcp_up = PEER_TCP_MAGIC_COUNT;
+/// called by Comm when test_fd is closed while connect is in progress
+static void
+peerProbeClosed(int fd, void *data)
+{
+ peer *p = (peer*)data;
+ p->test_fd = -1;
+ // it is a failure because we failed to connect
+ peerConnectFailedSilent(p);
}
static void
peerProbeConnectTimeout(int fd, void *data)
{
peer * p = (peer *)data;
+ comm_remove_close_handler(fd, &peerProbeClosed, p);
comm_close(fd);
p->test_fd = -1;
peerConnectFailedSilent(p);
if (fd < 0)
return ret;
+ comm_add_close_handler(fd, &peerProbeClosed, p);
commSetTimeout(fd, ctimeout, peerProbeConnectTimeout, p);
p->test_fd = fd;
peerConnectFailedSilent(p);
}
+ comm_remove_close_handler(fd, &peerProbeClosed, p);
comm_close(fd);
p->test_fd = -1;
return;
if (p->options.roundrobin)
storeAppendPrintf(sentry, " round-robin");
+ if (p->options.carp)
+ storeAppendPrintf(sentry, " carp");
+
+ if (p->options.userhash)
+ storeAppendPrintf(sentry, " userhash");
+
+ if (p->options.userhash)
+ storeAppendPrintf(sentry, " sourcehash");
+
if (p->options.weighted_roundrobin)
storeAppendPrintf(sentry, " weighted-round-robin");
storeAppendPrintf(sentry, " closest-only");
#if USE_HTCP
-
if (p->options.htcp)
storeAppendPrintf(sentry, " htcp");
-
+ if (p->options.htcp_oldsquid)
+ storeAppendPrintf(sentry, " htcp-oldsquid");
+ if (p->options.htcp_no_clr)
+ storeAppendPrintf(sentry, " htcp-no-clr");
+ if (p->options.htcp_no_purge_clr)
+ storeAppendPrintf(sentry, " htcp-no-purge-clr");
+ if (p->options.htcp_only_clr)
+ storeAppendPrintf(sentry, " htcp-only-clr");
#endif
if (p->options.no_netdb_exchange)
#if USE_HTCP
void
-
neighborsHtcpReply(const cache_key * key, htcpReplyData * htcp, const IPAddress &from)
{
StoreEntry *e = Store::Root().get(key);
mem->ping_reply_callback(p, ntype, PROTO_HTCP, htcp, mem->ircb_data);
}
+/*
+ * Send HTCP CLR messages to all peers configured to receive them.
+ */
+void
+neighborsHtcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, htcp_clr_reason reason)
+{
+ peer *p;
+ char buf[128];
+
+ for (p = Config.peers; p; p = p->next) {
+ if (!p->options.htcp) {
+ continue;
+ }
+ if (p->options.htcp_no_clr) {
+ continue;
+ }
+ if (p->options.htcp_no_purge_clr && reason == HTCP_CLR_PURGE) {
+ continue;
+ }
+ debugs(15, 3, "neighborsHtcpClear: sending CLR to " << p->in_addr.ToURL(buf, 128));
+ htcpClear(e, uri, req, method, p, reason);
+ }
+}
+
#endif
cbdataFree(ex);
}
+static void
+netdbRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("netdb", "Network Measurement Database", netdbDump, 0, 1);
+}
+
#endif /* USE_ICMP */
+
/* PUBLIC FUNCTIONS */
void
#if USE_ICMP
int n;
+ netdbRegisterWithCacheManager();
+
if (addr_table)
return;
#endif
}
-void
-netdbRegisterWitHCacheManager(CacheManager & manager)
-{
-#if USE_ICMP
- manager.registerAction("netdb",
- "Network Measurement Database",
- netdbDump, 0, 1);
-
-#endif
-}
-
void
netdbPingSite(const char *hostname)
{
pools = (PconnPool **) xcalloc(MAX_NUM_PCONN_POOLS, sizeof(*pools));
pconn_fds_pool = memPoolCreate("pconn_fds", PCONN_FDS_SZ * sizeof(int));
debugs(48, 0, "persistent connection module initialized");
+ registerWithCacheManager();
}
PconnModule *
}
void
-PconnModule::registerWithCacheManager(CacheManager & manager)
+PconnModule::registerWithCacheManager(void)
{
- manager.registerAction("pconn",
- "Persistent Connection Utilization Histograms",
- DumpWrapper, 0, 1);
+ CacheManager::GetInstance()->
+ registerAction("pconn",
+ "Persistent Connection Utilization Histograms",
+ DumpWrapper, 0, 1);
}
void
\todo CLEANUP: Break multiple classes out of the generic pconn.h header
*/
-class CacheManager;
class PconnPool;
/* for CBDATA_CLASS2() macros */
};
-class CacheManager;
class StoreEntry;
class PconnPool;
static void DumpWrapper(StoreEntry *e);
PconnModule();
- void registerWithCacheManager(CacheManager & manager);
+ void registerWithCacheManager(void);
void add(PconnPool *);
"CD_PARENT_HIT",
"CD_SIBLING_HIT",
#endif
-#if USE_CARP
"CARP",
-#endif
"ANY_PARENT",
+ "USERHASH",
+ "SOURCEHASH",
"INVALID CODE"
};
if ((p = getDefaultParent(request))) {
code = DEFAULT_PARENT;
-#if USE_CARP
-
+ } else if ((p = peerUserHashSelectParent(request))) {
+ code = USERHASH_PARENT;
+ } else if ((p = peerSourceHashSelectParent(request))) {
+ code = SOURCEHASH_PARENT;
} else if ((p = carpSelectParent(request))) {
code = CARP;
-#endif
-
} else if ((p = getRoundRobinParent(request))) {
code = ROUNDROBIN_PARENT;
} else if ((p = getWeightedRoundRobinParent(request))) {
--- /dev/null
+
+/*
+ * $Id: carp.cc,v 1.27 2008/01/14 12:13:49 hno Exp $
+ *
+ * DEBUG: section 39 Peer source hash based selection
+ * AUTHOR: Henrik Nordstrom
+ * BASED ON: carp.cc
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+#include "CacheManager.h"
+#include "Store.h"
+#include "HttpRequest.h"
+
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
+
+static int n_sourcehash_peers = 0;
+static peer **sourcehash_peers = NULL;
+static OBJH peerSourceHashCachemgr;
+static void peerSourceHashRegisterWithCacheManager(void);
+
+static int
+peerSortWeight(const void *a, const void *b)
+{
+ const peer *const *p1 = (const peer *const *)a;
+ const peer *const *p2 = (const peer *const *)b;
+ return (*p1)->weight - (*p2)->weight;
+}
+
+void
+peerSourceHashInit(void)
+{
+ int W = 0;
+ int K;
+ int k;
+ double P_last, X_last, Xn;
+ peer *p;
+ peer **P;
+ char *t;
+ /* Clean up */
+
+ for (k = 0; k < n_sourcehash_peers; k++) {
+ cbdataReferenceDone(sourcehash_peers[k]);
+ }
+
+ safe_free(sourcehash_peers);
+ n_sourcehash_peers = 0;
+ /* find out which peers we have */
+
+ for (p = Config.peers; p; p = p->next) {
+ if (!p->options.sourcehash)
+ continue;
+
+ assert(p->type == PEER_PARENT);
+
+ if (p->weight == 0)
+ continue;
+
+ n_sourcehash_peers++;
+
+ W += p->weight;
+ }
+
+ peerSourceHashRegisterWithCacheManager();
+
+ if (n_sourcehash_peers == 0)
+ return;
+
+ sourcehash_peers = (peer **)xcalloc(n_sourcehash_peers, sizeof(*sourcehash_peers));
+
+ /* Build a list of the found peers and calculate hashes and load factors */
+ for (P = sourcehash_peers, p = Config.peers; p; p = p->next) {
+ if (!p->options.sourcehash)
+ continue;
+
+ if (p->weight == 0)
+ continue;
+
+ /* calculate this peers hash */
+ p->sourcehash.hash = 0;
+
+ for (t = p->name; *t != 0; t++)
+ p->sourcehash.hash += ROTATE_LEFT(p->sourcehash.hash, 19) + (unsigned int) *t;
+
+ p->sourcehash.hash += p->sourcehash.hash * 0x62531965;
+
+ p->sourcehash.hash = ROTATE_LEFT(p->sourcehash.hash, 21);
+
+ /* and load factor */
+ p->sourcehash.load_factor = ((double) p->weight) / (double) W;
+
+ if (floor(p->sourcehash.load_factor * 1000.0) == 0.0)
+ p->sourcehash.load_factor = 0.0;
+
+ /* add it to our list of peers */
+ *P++ = cbdataReference(p);
+ }
+
+ /* Sort our list on weight */
+ qsort(sourcehash_peers, n_sourcehash_peers, sizeof(*sourcehash_peers), peerSortWeight);
+
+ /* Calculate the load factor multipliers X_k
+ *
+ * X_1 = pow ((K*p_1), (1/K))
+ * X_k = ([K-k+1] * [P_k - P_{k-1}])/(X_1 * X_2 * ... * X_{k-1})
+ * X_k += pow ((X_{k-1}, {K-k+1})
+ * X_k = pow (X_k, {1/(K-k+1)})
+ * simplified to have X_1 part of the loop
+ */
+ K = n_sourcehash_peers;
+
+ P_last = 0.0; /* Empty P_0 */
+
+ Xn = 1.0; /* Empty starting point of X_1 * X_2 * ... * X_{x-1} */
+
+ X_last = 0.0; /* Empty X_0, nullifies the first pow statement */
+
+ for (k = 1; k <= K; k++) {
+ double Kk1 = (double) (K - k + 1);
+ p = sourcehash_peers[k - 1];
+ p->sourcehash.load_multiplier = (Kk1 * (p->sourcehash.load_factor - P_last)) / Xn;
+ p->sourcehash.load_multiplier += pow(X_last, Kk1);
+ p->sourcehash.load_multiplier = pow(p->sourcehash.load_multiplier, 1.0 / Kk1);
+ Xn *= p->sourcehash.load_multiplier;
+ X_last = p->sourcehash.load_multiplier;
+ P_last = p->sourcehash.load_factor;
+ }
+}
+
+static void
+peerSourceHashRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("sourcehash", "peer sourcehash information",
+ peerSourceHashCachemgr, 0, 1);
+}
+
+peer *
+peerSourceHashSelectParent(HttpRequest * request)
+{
+ int k;
+ const char *c;
+ peer *p = NULL;
+ peer *tp;
+ unsigned int user_hash = 0;
+ unsigned int combined_hash;
+ double score;
+ double high_score = 0;
+ const char *key = NULL;
+ char ntoabuf[MAX_IPSTRLEN];
+
+ if (n_sourcehash_peers == 0)
+ return NULL;
+
+ key = request->client_addr.NtoA(ntoabuf, sizeof(ntoabuf));
+
+ /* calculate hash key */
+ debugs(39, 2, "peerSourceHashSelectParent: Calculating hash for " << key);
+
+ for (c = key; *c != 0; c++)
+ user_hash += ROTATE_LEFT(user_hash, 19) + *c;
+
+ /* select peer */
+ for (k = 0; k < n_sourcehash_peers; k++) {
+ tp = sourcehash_peers[k];
+ combined_hash = (user_hash ^ tp->sourcehash.hash);
+ combined_hash += combined_hash * 0x62531965;
+ combined_hash = ROTATE_LEFT(combined_hash, 21);
+ score = combined_hash * tp->sourcehash.load_multiplier;
+ debugs(39, 3, "peerSourceHashSelectParent: " << tp->name << " combined_hash " << combined_hash <<
+ " score " << std::setprecision(0) << score);
+
+ if ((score > high_score) && peerHTTPOkay(tp, request)) {
+ p = tp;
+ high_score = score;
+ }
+ }
+
+ if (p)
+ debugs(39, 2, "peerSourceHashSelectParent: selected " << p->name);
+
+ return p;
+}
+
+static void
+peerSourceHashCachemgr(StoreEntry * sentry)
+{
+ peer *p;
+ int sumfetches = 0;
+ storeAppendPrintf(sentry, "%24s %10s %10s %10s %10s\n",
+ "Hostname",
+ "Hash",
+ "Multiplier",
+ "Factor",
+ "Actual");
+
+ for (p = Config.peers; p; p = p->next)
+ sumfetches += p->stats.fetches;
+
+ for (p = Config.peers; p; p = p->next) {
+ storeAppendPrintf(sentry, "%24s %10x %10f %10f %10f\n",
+ p->name, p->sourcehash.hash,
+ p->sourcehash.load_multiplier,
+ p->sourcehash.load_factor,
+ sumfetches ? (double) p->stats.fetches / sumfetches : -1.0);
+ }
+}
--- /dev/null
+
+/*
+ * $Id: carp.cc,v 1.27 2008/01/14 12:13:49 hno Exp $
+ *
+ * DEBUG: section 39 Peer user hash based selection
+ * AUTHOR: Henrik Nordstrom
+ * BASED ON: carp.cc
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+#include "CacheManager.h"
+#include "Store.h"
+#include "HttpRequest.h"
+#include "AuthUserRequest.h"
+
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
+
+static int n_userhash_peers = 0;
+static peer **userhash_peers = NULL;
+static OBJH peerUserHashCachemgr;
+static void peerUserHashRegisterWithCacheManager(void);
+
+static int
+peerSortWeight(const void *a, const void *b)
+{
+ const peer *const *p1 = (const peer *const *)a;
+ const peer *const *p2 = (const peer *const *)b;
+ return (*p1)->weight - (*p2)->weight;
+}
+
+void
+peerUserHashInit(void)
+{
+ int W = 0;
+ int K;
+ int k;
+ double P_last, X_last, Xn;
+ peer *p;
+ peer **P;
+ char *t;
+ /* Clean up */
+
+ for (k = 0; k < n_userhash_peers; k++) {
+ cbdataReferenceDone(userhash_peers[k]);
+ }
+
+ safe_free(userhash_peers);
+ n_userhash_peers = 0;
+ /* find out which peers we have */
+
+
+ peerUserHashRegisterWithCacheManager();
+
+ for (p = Config.peers; p; p = p->next) {
+ if (!p->options.userhash)
+ continue;
+
+ assert(p->type == PEER_PARENT);
+
+ if (p->weight == 0)
+ continue;
+
+ n_userhash_peers++;
+
+ W += p->weight;
+ }
+
+ if (n_userhash_peers == 0)
+ return;
+
+ userhash_peers = (peer **)xcalloc(n_userhash_peers, sizeof(*userhash_peers));
+
+ /* Build a list of the found peers and calculate hashes and load factors */
+ for (P = userhash_peers, p = Config.peers; p; p = p->next) {
+ if (!p->options.userhash)
+ continue;
+
+ if (p->weight == 0)
+ continue;
+
+ /* calculate this peers hash */
+ p->userhash.hash = 0;
+
+ for (t = p->name; *t != 0; t++)
+ p->userhash.hash += ROTATE_LEFT(p->userhash.hash, 19) + (unsigned int) *t;
+
+ p->userhash.hash += p->userhash.hash * 0x62531965;
+
+ p->userhash.hash = ROTATE_LEFT(p->userhash.hash, 21);
+
+ /* and load factor */
+ p->userhash.load_factor = ((double) p->weight) / (double) W;
+
+ if (floor(p->userhash.load_factor * 1000.0) == 0.0)
+ p->userhash.load_factor = 0.0;
+
+ /* add it to our list of peers */
+ *P++ = cbdataReference(p);
+ }
+
+ /* Sort our list on weight */
+ qsort(userhash_peers, n_userhash_peers, sizeof(*userhash_peers), peerSortWeight);
+
+ /* Calculate the load factor multipliers X_k
+ *
+ * X_1 = pow ((K*p_1), (1/K))
+ * X_k = ([K-k+1] * [P_k - P_{k-1}])/(X_1 * X_2 * ... * X_{k-1})
+ * X_k += pow ((X_{k-1}, {K-k+1})
+ * X_k = pow (X_k, {1/(K-k+1)})
+ * simplified to have X_1 part of the loop
+ */
+ K = n_userhash_peers;
+
+ P_last = 0.0; /* Empty P_0 */
+
+ Xn = 1.0; /* Empty starting point of X_1 * X_2 * ... * X_{x-1} */
+
+ X_last = 0.0; /* Empty X_0, nullifies the first pow statement */
+
+ for (k = 1; k <= K; k++) {
+ double Kk1 = (double) (K - k + 1);
+ p = userhash_peers[k - 1];
+ p->userhash.load_multiplier = (Kk1 * (p->userhash.load_factor - P_last)) / Xn;
+ p->userhash.load_multiplier += pow(X_last, Kk1);
+ p->userhash.load_multiplier = pow(p->userhash.load_multiplier, 1.0 / Kk1);
+ Xn *= p->userhash.load_multiplier;
+ X_last = p->userhash.load_multiplier;
+ P_last = p->userhash.load_factor;
+ }
+}
+
+static void
+peerUserHashRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("userhash", "peer userhash information", peerUserHashCachemgr,
+ 0, 1);
+}
+
+peer *
+peerUserHashSelectParent(HttpRequest * request)
+{
+ int k;
+ const char *c;
+ peer *p = NULL;
+ peer *tp;
+ unsigned int user_hash = 0;
+ unsigned int combined_hash;
+ double score;
+ double high_score = 0;
+ const char *key = NULL;
+
+ if (n_userhash_peers == 0)
+ return NULL;
+
+ if (request->auth_user_request)
+ key = request->auth_user_request->username();
+
+ if (!key)
+ return NULL;
+
+ /* calculate hash key */
+ debugs(39, 2, "peerUserHashSelectParent: Calculating hash for " << key);
+
+ for (c = key; *c != 0; c++)
+ user_hash += ROTATE_LEFT(user_hash, 19) + *c;
+
+ /* select peer */
+ for (k = 0; k < n_userhash_peers; k++) {
+ tp = userhash_peers[k];
+ combined_hash = (user_hash ^ tp->userhash.hash);
+ combined_hash += combined_hash * 0x62531965;
+ combined_hash = ROTATE_LEFT(combined_hash, 21);
+ score = combined_hash * tp->userhash.load_multiplier;
+ debugs(39, 3, "peerUserHashSelectParent: " << tp->name << " combined_hash " << combined_hash <<
+ " score " << std::setprecision(0) << score);
+
+ if ((score > high_score) && peerHTTPOkay(tp, request)) {
+ p = tp;
+ high_score = score;
+ }
+ }
+
+ if (p)
+ debugs(39, 2, "peerUserHashSelectParent: selected " << p->name);
+
+ return p;
+}
+
+static void
+peerUserHashCachemgr(StoreEntry * sentry)
+{
+ peer *p;
+ int sumfetches = 0;
+ storeAppendPrintf(sentry, "%24s %10s %10s %10s %10s\n",
+ "Hostname",
+ "Hash",
+ "Multiplier",
+ "Factor",
+ "Actual");
+
+ for (p = Config.peers; p; p = p->next)
+ sumfetches += p->stats.fetches;
+
+ for (p = Config.peers; p; p = p->next) {
+ storeAppendPrintf(sentry, "%24s %10x %10f %10f %10f\n",
+ p->name, p->userhash.hash,
+ p->userhash.load_multiplier,
+ p->userhash.load_factor,
+ sumfetches ? (double) p->stats.fetches / sumfetches : -1.0);
+ }
+}
#ifdef _SQUID_MSWIN_
+#if HAVE_WINSOCK2_H
#include <winsock2.h>
+#endif
#include <process.h>
#include "fde.h"
/* some parameters stil need this */
#include "wordlist.h"
-class CacheManager;
class HttpRequestMethod;
/* client_side.c - FD related client side routines */
SQUIDCEXTERN void clientdbInit(void);
-extern void clientdbRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void clientdbUpdate(const IPAddress &, log_type, protocol_t, size_t);
SQUIDCEXTERN void dnsShutdown(void);
SQUIDCEXTERN void dnsInit(void);
-extern void dnsRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void dnsSubmit(const char *lookup, HLPCB * callback, void *data);
+/// XXX: a temporary hack to work around the missing DNS error info
+const char *dns_error_message_safe();
/* dns_internal.c */
SQUIDCEXTERN void idnsInit(void);
SQUIDCEXTERN void idnsShutdown(void);
-extern void idnsRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void idnsALookup(const char *, IDNSCB *, void *);
SQUIDCEXTERN void idnsPTRLookup(const IPAddress &, IDNSCB *, void *);
SQUIDCEXTERN const char *fqdncache_gethostbyaddr(IPAddress &, int flags);
SQUIDCEXTERN void fqdncache_init(void);
-extern void fqdncacheRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void fqdnStats(StoreEntry *);
SQUIDCEXTERN void fqdncacheReleaseInvalid(const char *);
SQUIDCEXTERN void ipcacheInvalidate(const char *);
SQUIDCEXTERN void ipcacheInvalidateNegative(const char *);
SQUIDCEXTERN void ipcache_init(void);
-extern void ipcacheRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void stat_ipcache_get(StoreEntry *);
SQUIDCEXTERN void ipcacheCycleAddr(const char *name, ipcache_addrs *);
SQUIDCEXTERN void neighborsUdpAck(const cache_key *, icp_common_t *, const IPAddress &);
SQUIDCEXTERN void neighborAdd(const char *, const char *, int, int, int, int, int);
SQUIDCEXTERN void neighbors_init(void);
-extern void neighborsRegisterWithCacheManager(CacheManager & manager);
+#if USE_HTCP
+SQUIDCEXTERN void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
+#endif
SQUIDCEXTERN peer *peerFindByName(const char *);
SQUIDCEXTERN peer *peerFindByNameAndPort(const char *, unsigned short);
SQUIDCEXTERN peer *getDefaultParent(HttpRequest * request);
SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
-SQUIDCEXTERN void peerClearRR(void *);
+SQUIDCEXTERN void peerClearRRStart(void);
+SQUIDCEXTERN void peerClearRR(void);
SQUIDCEXTERN peer *getAnyParent(HttpRequest * request);
SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
SQUIDCEXTERN peer *whichPeer(const IPAddress &from);
SQUIDCEXTERN void netdbInit(void);
-extern void netdbRegisterWitHCacheManager(CacheManager & manager);
SQUIDCEXTERN void netdbHandlePingReply(const IPAddress &from, int hops, int rtt);
SQUIDCEXTERN void netdbPingSite(const char *hostname);
SQUIDCEXTERN void urnStart(HttpRequest *, StoreEntry *);
SQUIDCEXTERN void redirectInit(void);
-extern void redirectRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void redirectShutdown(void);
extern void refreshAddToList(const char *, int, time_t, int, time_t);
extern int refreshCheckDigest(const StoreEntry *, time_t delta);
extern time_t getMaxAge(const char *url);
extern void refreshInit(void);
-extern void refreshRegisterWithCacheManager(CacheManager & manager);
extern const refresh_t *refreshLimits(const char *url);
-extern void serverConnectionsClose(void);
extern void shut_down(int);
extern void rotate_logs(int);
extern void reconfigure(int);
extern void start_announce(void *unused);
extern void waisStart(FwdState *);
-/* ident.c */
-#if USE_IDENT
-
-SQUIDCEXTERN void identStart(IPAddress &me, IPAddress &my_peer,
- IDCB * callback, void *cbdata);
-SQUIDCEXTERN void identInit(void);
-#endif
-
SQUIDCEXTERN void statInit(void);
-extern void statRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void statFreeMemory(void);
SQUIDCEXTERN double median_svc_get(int, int);
SQUIDCEXTERN void pconnHistCount(int, int);
SQUIDCEXTERN void storeLogRotate(void);
SQUIDCEXTERN void storeLogClose(void);
SQUIDCEXTERN void storeLogOpen(void);
-SQUIDCEXTERN void storeLogRegisterWithCacheManager(CacheManager &);
/*
* store_digest.c
*/
SQUIDCEXTERN void storeDigestInit(void);
-extern void storeDigestRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN void storeDigestNoteStoreReady(void);
SQUIDCEXTERN void storeDigestScheduleRebuild(void);
SQUIDCEXTERN void storeDigestDel(const StoreEntry * entry);
*/
SQUIDCEXTERN store_client *storeClientListAdd(StoreEntry * e, void *data);
SQUIDCEXTERN int storeClientCopyPending(store_client *, StoreEntry * e, void *data);
-SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data);
+SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data)
+;
SQUIDCEXTERN int storePendingNClients(const StoreEntry * e);
SQUIDCEXTERN int storeClientIsThisAClient(store_client * sc, void *someClient);
SQUIDCEXTERN void urlInitialize(void);
SQUIDCEXTERN HttpRequest *urlParse(const HttpRequestMethod&, char *, HttpRequest *request = NULL);
SQUIDCEXTERN const char *urlCanonical(HttpRequest *);
+SQUIDCEXTERN bool urlIsRelative(const char *);
+SQUIDCEXTERN char *urlMakeAbsolute(const HttpRequest *, const char *);
SQUIDCEXTERN char *urlRInternal(const char *host, u_short port, const char *dir, const char *name);
SQUIDCEXTERN char *urlInternal(const char *dir, const char *name);
SQUIDCEXTERN int matchDomainName(const char *host, const char *domain);
SQUIDCEXTERN const char *internalHostname(void);
SQUIDCEXTERN int internalHostnameIs(const char *);
-#if USE_CARP
SQUIDCEXTERN void carpInit(void);
-extern void carpRegisterWithCacheManager(CacheManager & manager);
SQUIDCEXTERN peer *carpSelectParent(HttpRequest *);
-#endif
+SQUIDCEXTERN void peerUserHashInit(void);
+SQUIDCEXTERN peer * peerUserHashSelectParent(HttpRequest * request);
+
+SQUIDCEXTERN void peerSourceHashInit(void);
+SQUIDCEXTERN peer * peerSourceHashSelectParent(HttpRequest * request);
#if USE_LEAKFINDER
SQUIDCEXTERN void leakInit(void);
SQUIDCEXTERN char *strtokFile(void);
#if USE_WCCPv2
-SQUIDCEXTERN void parse_wccp2_service(void *v);
-SQUIDCEXTERN void free_wccp2_service(void *v);
+SQUIDCEXTERN void parse_wccp2_method(int *v);
+SQUIDCEXTERN void free_wccp2_method(int *v);
+SQUIDCEXTERN void dump_wccp2_method(StoreEntry * e, const char *label, int v);
+SQUIDCEXTERN void parse_wccp2_amethod(int *v);
+SQUIDCEXTERN void free_wccp2_amethod(int *v);
+SQUIDCEXTERN void dump_wccp2_amethod(StoreEntry * e, const char *label, int v);
+SQUIDCEXTERN void parse_wccp2_service(void *v);
+SQUIDCEXTERN void free_wccp2_service(void *v);
SQUIDCEXTERN void dump_wccp2_service(StoreEntry * e, const char *label, void *v);
SQUIDCEXTERN int check_null_wccp2_service(void *v);
helperSubmit(redirectors, buf, redirectHandleReply, r);
}
+static void
+redirectRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("redirector", "URL Redirector Stats", redirectStats, 0, 1);
+}
+
void
redirectInit(void)
{
static int init = 0;
+ redirectRegisterWithCacheManager();
+
if (!Config.Program.redirect)
return;
}
}
-void
-redirectRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("redirector",
- "URL Redirector Stats",
- redirectStats, 0, 1);
-}
-
void
redirectShutdown(void)
{
refreshCountsStats(sentry, &refreshCounts[i]);
}
+static void
+refreshRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("refresh", "Refresh Algorithm Statistics", refreshStats, 0, 1);
+}
+
void
refreshInit(void)
{
DefaultRefresh.min = REFRESH_DEFAULT_MIN;
DefaultRefresh.pct = REFRESH_DEFAULT_PCT;
DefaultRefresh.max = REFRESH_DEFAULT_MAX;
-}
-void
-refreshRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("refresh",
- "Refresh Algorithm Statistics",
- refreshStats,
- 0,
- 1);
+ refreshRegisterWithCacheManager();
}
## Special Universal .h dependency test script
## aborts if error encountered
-testHeaders: heap/*.h
+testHeaders: $(top_srcdir)/src/repl/heap/*.h
$(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "heap" || exit 1
## ./ has no .h files.
## ./lru/ has no .h files.
}
}
- S.SetPort(port);
S = ia->in_addrs[0];
+ S.SetPort(port);
assert(theOutIcpConnection > 0);
x = comm_udp_sendto(theOutIcpConnection, S, sndbuf, strlen(sndbuf) + 1);
case CONF_VERSION:
Answer = snmp_var_new(Var->name, Var->name_length);
Answer->type = ASN_OCTET_STR;
- Answer->val_len = strlen(appname);
- Answer->val.string = (u_char *) xstrdup(appname);
+ Answer->val_len = strlen(APP_SHORTNAME);
+ Answer->val.string = (u_char *) xstrdup(APP_SHORTNAME);
break;
case CONF_VERSION_ID:
/*
* Filedescriptor limits in the different select loops
+ *
+ * NP: FreeBSD 7 defines FD_SETSIZE as unsigned but Squid needs
+ * it to be signed to compare it with signed values.
+ * Linux and others including FreeBSD <7, define it as signed.
+ * If this causes any issues please contact squid-dev@squid-cache.org
*/
#if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
/* Limited by design */
-# define SQUID_MAXFD_LIMIT FD_SETSIZE
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
#elif defined(USE_POLL)
/* Limited due to delay pools */
-# define SQUID_MAXFD_LIMIT FD_SETSIZE
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
#elif defined(USE_KQUEUE) || defined(USE_EPOLL)
# define SQUID_FDSET_NOUSE 1
#else
#define SA_RESETHAND SA_ONESHOT
#endif
-#if LEACK_CHECK_MODE
+#if LEAK_CHECK_MODE
#define LOCAL_ARRAY(type,name,size) \
static type *local_##name=NULL; \
type *name = local_##name ? local_##name : \
#include "protos.h"
#include "globals.h"
+/* Exclude CPPUnit tests from the below restriction. */
+/* BSD implementation uses these still */
+#if !defined(SQUID_UNIT_TEST)
/*
* Squid source files should not call these functions directly.
* Use xmalloc, xfree, xcalloc, snprintf, and xstrdup instead.
#endif
template <class V>
void free(V x) { fatal("Do not use ::free()"); }
-
#ifndef calloc
#define calloc +
#endif
#ifndef strdup
#define strdup +
#endif
+#endif /* !SQUID_UNIT_TEST */
/*
* Hey dummy, don't be tempted to move this to lib/config.h.in
storeAppendPrintf(sentry, "Current Time:\t%s\n",
mkrfc1123(current_time.tv_sec));
- storeAppendPrintf(sentry, "Connection information for %s:\n",
- appname);
+ storeAppendPrintf(sentry, "Connection information for %s:\n",APP_SHORTNAME);
storeAppendPrintf(sentry, "\tNumber of clients accessing cache:\t%u\n",
statCounter.client_http.clients);
storeAppendPrintf(sentry, "\tSelect loop called: %d times, %0.3f ms avg\n",
statCounter.select_loops, 1000.0 * runtime / statCounter.select_loops);
- storeAppendPrintf(sentry, "Cache information for %s:\n",
- appname);
+ storeAppendPrintf(sentry, "Cache information for %s:\n",APP_SHORTNAME);
storeAppendPrintf(sentry, "\tHits as %% of all requests:\t5min: %3.1f%%, 60min: %3.1f%%\n",
statRequestHitRatio(5),
cputime = rusage_cputime(&rusage);
- storeAppendPrintf(sentry, "Resource usage for %s:\n", appname);
+ storeAppendPrintf(sentry, "Resource usage for %s:\n", APP_SHORTNAME);
storeAppendPrintf(sentry, "\tUP Time:\t%.3f seconds\n", runtime);
ms = mstats();
- storeAppendPrintf(sentry, "Memory usage for %s via mstats():\n",
- appname);
+ storeAppendPrintf(sentry, "Memory usage for %s via mstats():\n",APP_SHORTNAME);
storeAppendPrintf(sentry, "\tTotal space in arena: %6d KB\n",
ms.bytes_total >> 10);
mp = mallinfo();
- storeAppendPrintf(sentry, "Memory usage for %s via mallinfo():\n",
- appname);
+ storeAppendPrintf(sentry, "Memory usage for %s via mallinfo():\n",APP_SHORTNAME);
storeAppendPrintf(sentry, "\tTotal space in arena: %6ld KB\n",
(long)mp.arena >> 10);
mp_stats.TheMeter->gb_freed.count);
}
- storeAppendPrintf(sentry, "File descriptor usage for %s:\n", appname);
+ storeAppendPrintf(sentry, "File descriptor usage for %s:\n", APP_SHORTNAME);
storeAppendPrintf(sentry, "\tMaximum number of file descriptors: %4d\n",
Squid_MaxFD);
storeAppendPrintf(sentry, "\tLargest file desc currently in use: %4d\n",
storeAppendPrintf(sentry, "cpu_usage = %f%%\n", dpercent(ct, dt));
}
+static void
+statRegisterWithCacheManager(void)
+{
+ CacheManager *manager = CacheManager::GetInstance();
+ manager->registerAction("info", "General Runtime Information",
+ info_get, 0, 1);
+ manager->registerAction("service_times", "Service Times (Percentiles)",
+ service_times, 0, 1);
+ manager->registerAction("filedescriptors", "Process Filedescriptor Allocation",
+ fde::DumpStats, 0, 1);
+ manager->registerAction("objects", "All Cache Objects", stat_objects_get, 0, 0);
+ manager->registerAction("vm_objects", "In-Memory and In-Transit Objects",
+ stat_vmobjects_get, 0, 0);
+ manager->registerAction("io", "Server-side network read() size histograms",
+ stat_io_get, 0, 1);
+ manager->registerAction("counters", "Traffic and Resource Counters",
+ statCountersDump, 0, 1);
+ manager->registerAction("peer_select", "Peer Selection Algorithms",
+ statPeerSelect, 0, 1);
+ manager->registerAction("digest_stats", "Cache Digest and ICP blob",
+ statDigestBlob, 0, 1);
+ manager->registerAction("5min", "5 Minute Average of Counters",
+ statAvg5min, 0, 1);
+ manager->registerAction("60min", "60 Minute Average of Counters",
+ statAvg60min, 0, 1);
+ manager->registerAction("utilization", "Cache Utilization",
+ statUtilization, 0, 1);
+ manager->registerAction("histograms", "Full Histogram Counts",
+ statCountersHistograms, 0, 1);
+ manager->registerAction("active_requests",
+ "Client-side Active Requests",
+ statClientRequests, 0, 1);
+#if DEBUG_OPENFD
+ manager->registerAction("openfd_objects", "Objects with Swapout files open",
+ statOpenfdObj, 0, 0);
+#endif
+#if STAT_GRAPHS
+ manager->registerAction("graph_variables", "Display cache metrics graphically",
+ statGraphDump, 0, 1);
+#endif
+}
+
void
statInit(void)
ClientActiveRequests.head = NULL;
ClientActiveRequests.tail = NULL;
-}
-
-void
-statRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("info",
- "General Runtime Information",
- info_get, 0, 1);
-
- manager.registerAction("service_times",
- "Service Times (Percentiles)",
- service_times, 0, 1);
-
- manager.registerAction("filedescriptors",
- "Process Filedescriptor Allocation",
- fde::DumpStats, 0, 1);
-
- manager.registerAction("objects",
- "All Cache Objects",
- stat_objects_get, 0, 0);
- manager.registerAction("vm_objects",
- "In-Memory and In-Transit Objects",
- stat_vmobjects_get, 0, 0);
-
-#if DEBUG_OPENFD
-
- manager.registerAction("openfd_objects",
- "Objects with Swapout files open",
- statOpenfdObj, 0, 0);
-
-#endif
-
- manager.registerAction("io",
- "Server-side network read() size histograms",
- stat_io_get, 0, 1);
-
- manager.registerAction("counters",
- "Traffic and Resource Counters",
- statCountersDump, 0, 1);
-
- manager.registerAction("peer_select",
- "Peer Selection Algorithms",
- statPeerSelect, 0, 1);
-
- manager.registerAction("digest_stats",
- "Cache Digest and ICP blob",
- statDigestBlob, 0, 1);
-
- manager.registerAction("5min",
- "5 Minute Average of Counters",
- statAvg5min, 0, 1);
-
- manager.registerAction("60min",
- "60 Minute Average of Counters",
- statAvg60min, 0, 1);
-
- manager.registerAction("utilization",
- "Cache Utilization",
- statUtilization, 0, 1);
-
-#if STAT_GRAPHS
-
- manager.registerAction("graph_variables",
- "Display cache metrics graphically",
- statGraphDump, 0, 1);
-
-#endif
-
- manager.registerAction("histograms",
- "Full Histogram Counts",
- statCountersHistograms, 0, 1);
-
- manager.registerAction("active_requests",
- "Client-side Active Requests",
- statClientRequests, 0, 1);
+ statRegisterWithCacheManager();
}
static void
#if DELAY_POOLS
- storeAppendPrintf(s, "delay_pool %d\n", DelayId::DelayClient(http) >> 16);
+ storeAppendPrintf(s, "delay_pool %d\n", DelayId::DelayClient(http).pool());
#endif
return 0;
}
+static void
+storeRegisterWithCacheManager(void)
+{
+ CacheManager *manager=CacheManager::GetInstance();
+ manager->registerAction("storedir", "Store Directory Stats", Store::Stats, 0, 1);
+ manager->registerAction("store_io", "Store IO Interface Stats", storeIOStats, 0, 1);
+ manager->registerAction("store_check_cachable_stats", "storeCheckCachable() Stats",
+ storeCheckCachableStats, 0, 1);
+}
+
void
storeInit(void)
{
eventAdd("storeLateRelease", storeLateRelease, NULL, 1.0, 1);
Store::Root().init();
storeRebuildStart();
-}
-void
-storeRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("storedir",
- "Store Directory Stats",
- Store::Stats, 0, 1);
- manager.registerAction("store_check_cachable_stats",
- "storeCheckCachable() Stats",
- storeCheckCachableStats, 0, 1);
- manager.registerAction("store_io",
- "Store IO Interface Stats",
- storeIOStats, 0, 1);
+ storeRegisterWithCacheManager();
}
void
#endif /* USE_CACHE_DIGESTS */
+static void
+storeDigestRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("store_digest", "Store Digest", storeDigestReport, 0, 1);
+}
+
/*
* PUBLIC FUNCTIONS
*/
void
storeDigestInit(void)
{
+ storeDigestRegisterWithCacheManager();
+
#if USE_CACHE_DIGESTS
const int cap = storeDigestCalcCap();
#endif
}
-void
-storeDigestRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("store_digest", "Store Digest",
- storeDigestReport, 0, 1);
-}
-
/* called when store_rebuild completes */
void
storeDigestNoteStoreReady(void)
storelog = NULL;
}
+static void
+storeLogRegisterWithCacheManager(void)
+{
+ CacheManager::GetInstance()->
+ registerAction("store_log_tags", "Histogram of store.log tags",
+ storeLogTagsHist, 0, 1);
+}
+
void
storeLogOpen(void)
{
- if (strcmp(Config.Log.store, "none") == 0) {
+ storeLogRegisterWithCacheManager();
+
+ if (Config.Log.store == NULL || strcmp(Config.Log.store, "none") == 0) {
debugs(20, 1, "Store logging disabled");
return;
}
storelog = logfileOpen(Config.Log.store, 0, 1);
}
-void
-storeLogRegisterWithCacheManager(CacheManager & manager)
-{
- manager.registerAction("store_log_tags",
- "Histogram of store.log tags",
- storeLogTagsHist, 0, 1);
-}
-
void
storeLogTagsHist(StoreEntry *e)
{
size_t udpMaxHitObjsz;
wordlist *hierarchy_stoplist;
wordlist *mcast_group_list;
- wordlist *dns_testname_list;
wordlist *dns_nameservers;
peer *peers;
int npeers;
int ie_refresh;
int vary_ignore_expire;
int pipeline_prefetch;
-#if USE_SQUID_ESI
+#if USE_SQUID_ESI
int surrogate_is_remote;
#endif
int global_internal_static;
int dns_require_A;
int debug_override_X;
-#if USE_ZPH_QOS
+
+#if FOLLOW_X_FORWARDED_FOR
+ int acl_uses_indirect_client;
+ int delay_pool_uses_indirect_client;
+ int log_uses_indirect_client;
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
+#if USE_ZPH_QOS
int zph_tos_parent;
int zph_preserve_miss_tos;
-#endif
+#endif
+ int WIN32_IpAddrChangeMonitor;
} onoff;
class ACL *aclList;
#if USE_SSL
acl_access *ssl_bump;
#endif
+#if FOLLOW_X_FORWARDED_FOR
+ acl_access *followXFF;
+#endif /* FOLLOW_X_FORWARDED_FOR */
} accessList;
acl_deny_info_list *denyInfoList;
int use_short_names;
} icons;
char *errorDirectory;
+#if USE_ERR_LOCALES
+ char *errorDefaultLanguage;
+#endif
struct
{
#if USE_HTCP
unsigned int htcp:1;
unsigned int htcp_oldsquid:1;
+ unsigned int htcp_no_clr:1;
+ unsigned int htcp_no_purge_clr:1;
+ unsigned int htcp_only_clr:1;
+ unsigned int htcp_forward_clr:1;
#endif
unsigned int no_netdb_exchange:1;
#if DELAY_POOLS
unsigned int no_delay:1;
#endif
unsigned int allow_miss:1;
-#if USE_CARP
unsigned int carp:1;
-#endif
+ unsigned int userhash:1;
+ unsigned int sourcehash:1;
unsigned int originserver:1;
} options;
IPAddress addresses[10];
int n_addresses;
int rr_count;
- int rr_lastcount;
peer *next;
int test_fd;
-#if USE_CARP
struct
{
double load_multiplier;
double load_factor; /* normalized weight value */
} carp;
-#endif
+
+ struct
+ {
+ unsigned int hash;
+ double load_multiplier;
+ double load_factor; /* normalized weight value */
+ } userhash;
+
+ struct
+ {
+ unsigned int hash;
+ double load_multiplier;
+ double load_factor; /* normalized weight value */
+ } sourcehash;
char *login; /* Proxy authorization */
time_t connect_timeout;
#if HTTP_VIOLATIONS
nocache_hack = 0;
#endif
+#if FOLLOW_X_FORWARDED_FOR
+ done_follow_x_forwarded_for = 0;
+#endif /* FOLLOW_X_FORWARDED_FOR */
}
unsigned int range:1;
// that are safe for a related (e.g., ICAP-adapted) request to inherit
request_flags cloneAdaptationImmune() const;
+#if FOLLOW_X_FORWARDED_FOR
+ unsigned int done_follow_x_forwarded_for;
+#endif /* FOLLOW_X_FORWARDED_FOR */
private:
unsigned int reset_tcp:1;
--- /dev/null
+/*
+ * AUTHOR: Francesco Chemolli
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "CacheManager.h"
+#include "squid.h"
+
+static CacheManager *cm=0;
+
+CacheManager::CacheManager()
+{
+}
+
+void
+CacheManager::registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic)
+{
+ return;
+}
+
+void
+CacheManager::registerAction(CacheManagerAction *anAction)
+{
+ return;
+}
+
+CacheManagerAction *
+CacheManager::findAction(char const * action)
+{
+ return 0;
+}
+
+void
+CacheManager::Start(int fd, HttpRequest * request, StoreEntry * entry)
+{
+ return;
+}
+
+CacheManager*
+CacheManager::GetInstance(void)
+{
+ if (!cm)
+ cm=new CacheManager();
+ return cm;
+}
+
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include <stdexcept>
-#include "config.h"
+#define SQUID_UNIT_TEST 1
#include "squid.h"
#include "testAuth.h"
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include <stdexcept>
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include <cppunit/TestAssert.h>
#include "Mem.h"
#include "testCacheManager.h"
#include "CacheManager.h"
+#include "Store.h"
CPPUNIT_TEST_SUITE_REGISTRATION( testCacheManager );
void
testCacheManager::testCreate()
{
- CacheManager();
+ CacheManager::GetInstance(); //it's a singleton..
}
/* an action to register */
static void
dummy_action(StoreEntry * sentry)
-{}
+{
+ sentry->flags=1;
+}
/*
* registering an action makes it findable.
void
testCacheManager::testRegister()
{
- CacheManager manager;
- manager.registerAction("sample", "my sample", &dummy_action, false, false);
- CacheManagerAction *anAction = manager.findAction("sample");
- CPPUNIT_ASSERT_EQUAL(String("sample"), String(anAction->action));
- CPPUNIT_ASSERT_EQUAL(String("my sample"), String(anAction->desc));
- CPPUNIT_ASSERT_EQUAL(&dummy_action, anAction->handler);
+ CacheManager *manager=CacheManager::GetInstance();
+
+ manager->registerAction("sample", "my sample", &dummy_action, false, false);
+ CacheManagerAction *anAction = manager->findAction("sample");
+
CPPUNIT_ASSERT_EQUAL(0, (int)anAction->flags.pw_req);
CPPUNIT_ASSERT_EQUAL(0, (int)anAction->flags.atomic);
+ CPPUNIT_ASSERT_EQUAL(String("sample"), String(anAction->action));
+
+ StoreEntry *sentry=new StoreEntry();
+ sentry->flags=0x25; //arbitrary test value
+ anAction->run(sentry);
+ CPPUNIT_ASSERT_EQUAL(1,(int)sentry->flags);
}
/* garh garh */
storeReplAdd("lru", createRemovalPolicy_lru);
- visible_appname_string = xstrdup(PACKAGE "/" VERSION);
+ visible_appname_string = xstrdup(APP_FULLNAME);
Mem::Init();
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include <stdexcept>
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include <sstream>
#include <cppunit/TestAssert.h>
-
+#define SQUID_UNIT_TEST 1
#define SQUID_HELPER 1
+
#include "squid.h"
#include <cppunit/TestAssert.h>
/* garh garh */
storeReplAdd("lru", createRemovalPolicy_lru);
- visible_appname_string = xstrdup(PACKAGE "/" VERSION);
+ visible_appname_string = xstrdup(APP_FULLNAME);
Mem::Init();
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include "testStore.h"
#include "Store.h"
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include "testStoreController.h"
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include "Mem.h"
#include "testStore.h"
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include "testStoreHashIndex.h"
+#define SQUID_UNIT_TEST 1
+
#include "squid.h"
#include <sstream>
#include <cppunit/TestAssert.h>
char *filename;
- if ((filename = tempnam(NULL, appname)) == NULL)
+ if ((filename = tempnam(NULL, APP_SHORTNAME)) == NULL)
return;
if ((fp = fopen(filename, "w")) == NULL)
if (Config.EmailFrom)
fprintf(fp, "From: %s\n", Config.EmailFrom);
else
- fprintf(fp, "From: %s@%s\n", appname, uniqueHostname());
+ fprintf(fp, "From: %s@%s\n", APP_SHORTNAME, uniqueHostname());
fprintf(fp, "To: %s\n", Config.adminEmail);
snprintf(command, 256, "%s %s < %s", Config.EmailProgram, Config.adminEmail, filename);
- system(command); /* XXX should avoid system(3) */
+ if(system(command)) {} /* XXX should avoid system(3) */
unlink(filename);
}
mp = mallinfo();
- fprintf(debug_log, "Memory usage for %s via mallinfo():\n", appname);
+ fprintf(debug_log, "Memory usage for "APP_SHORTNAME" via mallinfo():\n");
fprintf(debug_log, "\ttotal space in arena: %6ld KB\n",
(long)mp.arena >> 10);
if(xgetaddrinfo(host, NULL, NULL, &AI) == 0) {
/* DNS lookup successful */
/* use the official name from DNS lookup */
- debugs(50, 6, "getMyHostname: '" << host << "' resolved into '" << AI->ai_canonname << "'");
- xstrncpy(host, AI->ai_canonname, SQUIDHOSTNAMELEN);
+ debugs(50, 6, "getMyHostname: '" << host << "' has rDNS.");
present = 1;
/* AYJ: do we want to flag AI_ALL and cache the result anywhere. ie as our local host IPs? */
}
if(AI) xfreeaddrinfo(AI);
- debugs(50, 1, "WARNING: getaddrinfo('" << host << "') failed: " << xstrerror());
+ debugs(50, 1, "WARNING: '" << host << "' rDNS test failed: " << xstrerror());
}
}
int i;
if (f == NULL || !strcmp(Config.pidFilename, "none")) {
- fprintf(stderr, "%s: ERROR: No pid file name defined\n", appname);
+ fprintf(stderr, APP_SHORTNAME ": ERROR: No pid file name defined\n");
exit(1);
}
fclose(pid_fp);
} else {
if (errno != ENOENT) {
- fprintf(stderr, "%s: ERROR: Could not read pid file\n", appname);
+ fprintf(stderr, APP_SHORTNAME ": ERROR: Could not read pid file\n");
fprintf(stderr, "\t%s: %s\n", f, xstrerror());
exit(1);
}
debugs(26, 4, "tunnelConnect: Unknown host: " << tunnelState->host);
err = errorCon(ERR_DNS_FAIL, HTTP_NOT_FOUND, request);
*tunnelState->status_ptr = HTTP_NOT_FOUND;
- err->dnsserver_msg = xstrdup(dns_error_message);
+ err->dnsserver_msg = xstrdup(dns_error_message_safe());
err->callback = tunnelErrorComplete;
err->callback_data = tunnelState;
errorSend(tunnelState->client.fd(), err);
/* reject duplicate or leading dots */
if (strstr(host, "..") || *host == '.') {
- debug(23, 1) ("urlParse: Illegal hostname '%s'\n", host);
+ debugs(23, 1, "urlParse: Illegal hostname '" << host << "'");
return NULL;
}
return buf;
}
+/*
+ * Test if a URL is relative.
+ *
+ * RFC 2396, Section 5 (Page 17) implies that in a relative URL, a '/' will
+ * appear before a ':'.
+ */
+bool
+urlIsRelative(const char *url)
+{
+ const char *p;
+
+ if (url == NULL) {
+ return (false);
+ }
+ if (*url == '\0') {
+ return (false);
+ }
+
+ for (p = url; *p != '\0' && *p != ':' && *p != '/'; p++);
+
+ if (*p == ':') {
+ return (false);
+ }
+ return (true);
+}
+
+/*
+ * Convert a relative URL to an absolute URL using the context of a given
+ * request.
+ *
+ * It is assumed that you have already ensured that the URL is relative.
+ *
+ * If NULL is returned it is an indication that the method in use in the
+ * request does not distinguish between relative and absolute and you should
+ * use the url unchanged.
+ *
+ * If non-NULL is returned, it is up to the caller to free the resulting
+ * memory using safe_free().
+ */
+char *
+urlMakeAbsolute(const HttpRequest * req, const char *relUrl)
+{
+
+ if (req->method.id() == METHOD_CONNECT) {
+ return (NULL);
+ }
+
+ char *urlbuf = (char *)xmalloc(MAX_URL * sizeof(char));
+
+ if (req->protocol == PROTO_URN) {
+ snprintf(urlbuf, MAX_URL, "urn:%s", req->urlpath.buf());
+ return (urlbuf);
+ }
+
+ size_t urllen;
+
+ if (req->port != urlDefaultPort(req->protocol)) {
+ urllen = snprintf(urlbuf, MAX_URL, "%s://%s%s%s:%d",
+ ProtocolStr[req->protocol],
+ req->login,
+ *req->login ? "@" : null_string,
+ req->GetHost(),
+ req->port
+ );
+ } else {
+ urllen = snprintf(urlbuf, MAX_URL, "%s://%s%s%s",
+ ProtocolStr[req->protocol],
+ req->login,
+ *req->login ? "@" : null_string,
+ req->GetHost()
+ );
+ }
+
+ if (relUrl[0] == '/') {
+ strncpy(&urlbuf[urllen], relUrl, MAX_URL - urllen - 1);
+ } else {
+ const char *path = req->urlpath.buf();
+ const char *last_slash = strrchr(path, '/');
+
+ if (last_slash == NULL) {
+ urlbuf[urllen++] = '/';
+ strncpy(&urlbuf[urllen], relUrl, MAX_URL - urllen - 1);
+ } else {
+ last_slash++;
+ size_t pathlen = last_slash - path;
+ if (pathlen > MAX_URL - urllen - 1) {
+ pathlen = MAX_URL - urllen - 1;
+ }
+ strncpy(&urlbuf[urllen], path, pathlen);
+ urllen += pathlen;
+ if (urllen + 1 < MAX_URL) {
+ strncpy(&urlbuf[urllen], relUrl, MAX_URL - urllen - 1);
+ }
+ }
+ }
+
+ return (urlbuf);
+}
+
/*
* matchDomainName() compares a hostname with a domainname according
* to the following rules:
"<ADDRESS>\n"
"Generated by %s@%s\n"
"</ADDRESS>\n",
- full_appname_string, getMyHostname());
+ APP_FULLNAME, getMyHostname());
rep = new HttpReply;
rep->setHeaders(version, HTTP_MOVED_TEMPORARILY, NULL,
"text/html", mb->contentSize(), 0, squid_curtime);
#include "IPAddress.h"
#if USE_WCCPv2
+#if HAVE_NETDB_H
#include <netdb.h>
+#endif
#define WCCP_PORT 2048
#define WCCP_RESPONSE_SIZE 12448
#define WCCP2_CAPABILITY_ASSIGNMENT_METHOD 0x02
#define WCCP2_CAPABILITY_RETURN_METHOD 0x03
-#define WCCP2_FORWARDING_METHOD_GRE 0x00000001
-#define WCCP2_FORWARDING_METHOD_L2 0x00000002
+#define WCCP2_METHOD_GRE 0x00000001
+#define WCCP2_METHOD_L2 0x00000002
+
+#define WCCP2_FORWARDING_METHOD_GRE WCCP2_METHOD_GRE
+#define WCCP2_FORWARDING_METHOD_L2 WCCP2_METHOD_L2
-#define WCCP2_ASSIGNMENT_METHOD_HASH 0x00000001
-#define WCCP2_ASSIGNMENT_METHOD_MASK 0x00000002
+#define WCCP2_ASSIGNMENT_METHOD_HASH 0x00000001
+#define WCCP2_ASSIGNMENT_METHOD_MASK 0x00000002
-#define WCCP2_PACKET_RETURN_METHOD_GRE 0x00000001
-#define WCCP2_PACKET_RETURN_METHOD_L2 0x00000002
+#define WCCP2_PACKET_RETURN_METHOD_GRE WCCP2_METHOD_GRE
+#define WCCP2_PACKET_RETURN_METHOD_L2 WCCP2_METHOD_L2
#define WCCP2_HASH_ASSIGNMENT 0x00
#define WCCP2_MASK_ASSIGNMENT 0x01
* Configuration option parsing code
*/
+/**
+ * Parse wccp2_return_method and wccp2_forwarding_method options
+ * they can be '1' aka 'gre' or '2' aka 'l2'
+ * repesenting the integer numeric of the same.
+ */
+void
+parse_wccp2_method(int *method)
+{
+ char *t;
+
+ /* Snarf the method */
+ if ((t = strtok(NULL, w_space)) == NULL) {
+ debugs(80, DBG_CRITICAL, "wccp2_*_method: missing setting.");
+ self_destruct();
+ }
+
+ /* update configuration if its valid */
+ if (strcmp(t, "gre") == 0 || strcmp(t, "1") == 0) {
+ *method = WCCP2_METHOD_GRE;
+ } else if (strcmp(t, "l2") == 0 || strcmp(t, "2") == 0) {
+ *method = WCCP2_METHOD_L2;
+ } else {
+ debugs(80, DBG_CRITICAL, "wccp2_*_method: unknown setting, got " << t );
+ self_destruct();
+ }
+}
+
+void
+dump_wccp2_method(StoreEntry * e, const char *label, int v)
+{
+ switch(v)
+ {
+ case WCCP2_METHOD_GRE:
+ storeAppendPrintf(e, "%s gre\n", label);
+ break;
+ case WCCP2_METHOD_L2:
+ storeAppendPrintf(e, "%s l2\n", label);
+ break;
+ default:
+ debugs(80, DBG_CRITICAL, "FATAL: WCCPv2 configured method (" << v << ") is not valid.");
+ self_destruct();
+ }
+}
+
+void
+free_wccp2_method(int *v)
+{ }
+
+/**
+ * Parse wccp2_assignment_method option
+ * they can be '1' aka 'hash' or '2' aka 'mask'
+ * repesenting the integer numeric of the same.
+ */
+void
+parse_wccp2_amethod(int *method)
+{
+ char *t;
+
+ /* Snarf the method */
+ if ((t = strtok(NULL, w_space)) == NULL) {
+ debugs(80, DBG_CRITICAL, "wccp2_assignment_method: missing setting.");
+ self_destruct();
+ }
+
+ /* update configuration if its valid */
+ if (strcmp(t, "hash") == 0 || strcmp(t, "1") == 0) {
+ *method = WCCP2_ASSIGNMENT_METHOD_HASH;
+ } else if (strcmp(t, "mask") == 0 || strcmp(t, "2") == 0) {
+ *method = WCCP2_ASSIGNMENT_METHOD_MASK;
+ } else {
+ debugs(80, DBG_CRITICAL, "wccp2_assignment_method: unknown setting, got " << t );
+ self_destruct();
+ }
+}
+
+void
+dump_wccp2_amethod(StoreEntry * e, const char *label, int v)
+{
+ switch(v)
+ {
+ case WCCP2_ASSIGNMENT_METHOD_HASH:
+ storeAppendPrintf(e, "%s hash\n", label);
+ break;
+ case WCCP2_ASSIGNMENT_METHOD_MASK:
+ storeAppendPrintf(e, "%s mask\n", label);
+ break;
+ default:
+ debugs(80, DBG_CRITICAL, "FATAL: WCCPv2 configured " << label << " (" << v << ") is not valid.");
+ self_destruct();
+ }
+}
+
+void
+free_wccp2_amethod(int *v)
+{ }
+
/*
* Format:
*
FILETIME ftCreate, ftExit, ftKernel, ftUser;
if (GetProcessTimes(hProcess, &ftCreate, &ftExit, &ftKernel, &ftUser)) {
- int64_t tUser64 = (*(int64_t *)&ftUser / 10);
- int64_t tKernel64 = (*(int64_t *)&ftKernel / 10);
+ int64_t *ptUser = (int64_t *)&ftUser;
+ int64_t tUser64 = *ptUser / 10;
+ int64_t *ptKernel = (int64_t *)&ftKernel;
+ int64_t tKernel64 = *ptKernel / 10;
usage->ru_utime.tv_sec =(long)(tUser64 / 1000000);
usage->ru_stime.tv_sec =(long)(tKernel64 / 1000000);
usage->ru_utime.tv_usec =(long)(tUser64 % 1000000);
--- /dev/null
+#!/bin/sh
+#
+# Run specific build tests for a given OS environment.
+#
+
+tmp="${1}"
+if test -e ./test-suite/buildtests/os-${tmp}.opts ; then
+ echo "TESTING: ${tmp}"
+ ./test-suite/buildtest.sh ./test-suite/buildtests/os-${tmp}
+fi
+
+#
+# Run specific tests for each combination of configure-time
+# Options.
+#
+# These layers are constructed from detailed knowledge of
+# component dependencies.
+#
+
+for f in `ls -1 ./test-suite/buildtests/layer*.opts` ; do
+ arg=`echo "${f}" | sed s/\\.opts//`
+ echo "TESTING: ${arg}"
+ ./test-suite/buildtest.sh "${arg}" ||
+ ( grep -E "^ERROR" buildtest_*.log && exit 1 )
+done
}
int
-main (int argc, char *argv)
+main (int argc, char **argv)
{
MemPoolTest aTest;
aTest.run();
#include "Stack.h"
int
-main (int argc, char *argv)
+main(int argc, char **argv)
{
Stack<int> aStack;
assert (aStack.size() == 0);
ChildVirtual::~ChildVirtual(){}
int
-main (int argc, char *argv)
+main(int argc, char **argv)
{
assert (BaseVirtual::Calls.news() == 0);
assert (BaseVirtual::Calls.deletes() == 0);
--- /dev/null
+#!/bin/sh
+#
+# Configure and run a test build against any given set of configure options
+# or compile-time flags.
+#
+# Should be run from the source package root directory with paths relative to there.
+#
+
+dist="${1}"
+
+# Figure out where to log the test output
+log=`echo "${dist}" | sed s/..test-suite.buildtests.//g `
+
+# ... and send everything there...
+{
+
+if test -e ${dist%%.opts}.opts ; then
+ echo "BUILD: ${dist%%.opts}.opts"
+ . ./${dist%%.opts}.opts
+else
+ echo "BUILD: DEFAULT"
+ OPTS=""
+ FLAGS=""
+fi
+
+#
+# empty all the existing code, reconfigure and builds test code
+
+make -k distclean || echo "distclean done. errors are unwanted but okay here."
+
+#
+# above command currently encounters dependancy problems on cleanup.
+#
+rm -f -r src/fs/aufs/.deps src/fs/diskd/.deps &&
+ ./bootstrap.sh &&
+ ./configure --silent ${OPTS} 2>&1 &&
+ make check 2>&1 &&
+ make 2>&1
+
+} 2>&1 > ./buildtest_${log}.log
+
+# do not build any of the install's ...
--- /dev/null
+#
+# Default configuration options.
+# - Nothing special configured. Just whatever is found by "./configure"
+#
+OPTS=""
--- /dev/null
+#
+# Minimal configuration options.
+# - Everthing that can be disabled is
+# - Everyhing that can be done without is
+#
+# The options for this level can be easily generated semi-automatically from configure.in by:
+# grep -E "^AC_ARG_ENABLE" ./configure.in | grep -o -E "[0-9a-z\-]+[,]" | grep -o -E "[^,]+" >disable.opts
+# followed by insertion of ' --disable-' and '\' strings
+#
+# grep -E "^AC_ARG_WITH" ./configure.in | grep -o -E "[0-9a-z\-]+[,]" | grep -o -E "[^,]+" >without.opts
+# followed by insertion of ' --without-' and ' \' strings
+#
+# sometimes it's just too automatic.. Following options should be just stripped
+#
+# --without-default-user \
+# --without-aufs-threads \
+# --without-coss-membuf-size \
+# --without-filedescriptors \
+# --without-cppunit-basedir \
+# --without-build-environment \
+#
+#
+OPTS=" \
+ --disable-loadable-modules \
+ --disable-gnuregex \
+ --disable-optimizations \
+ --disable-inline \
+ --disable-debug-cbdata \
+ --disable-xmalloc-statistics \
+ --disable-async-io \
+ --disable-storeio \
+ --disable-disk-io \
+ --disable-removal-policies \
+ --disable-icmp \
+ --disable-delay-pools \
+ --disable-esi \
+ --disable-icap-client \
+ --disable-ecap \
+ --disable-useragent-log \
+ --disable-referer-log \
+ --disable-wccp \
+ --disable-wccpv2 \
+ --disable-kill-parent-hack \
+ --disable-snmp \
+ --disable-cachemgr-hostname \
+ --disable-arp-acl \
+ --disable-htcp \
+ --disable-ssl \
+ --disable-forw-via-db \
+ --disable-cache-digests \
+ --disable-poll \
+ --disable-select \
+ --disable-kqueue \
+ --disable-epoll \
+ --disable-http-violations \
+ --disable-ipfw-transparent \
+ --disable-ipf-transparent \
+ --disable-pf-transparent \
+ --disable-linux-netfilter \
+ --disable-linux-tproxy \
+ --disable-leakfinder \
+ --disable-follow-x-forwarded-for \
+ --disable-ident-lookups \
+ --disable-internal-dns \
+ --disable-default-hostsfile \
+ --disable-auth \
+ --disable-basic-auth-helpers \
+ --disable-ntlm-auth-helpers \
+ --disable-negotiate-auth-helpers \
+ --disable-digest-auth-helpers \
+ --disable-ntlm-fail-open \
+ --disable-external-acl-helpers \
+ --disable-mempools \
+ --disable-win32-service \
+ --disable-unlinkd \
+ --disable-stacktraces \
+ --disable-cpu-profiling \
+ --disable-vary \
+ --disable-ipv6 \
+ --disable-zph-qos \
+ --disable-auto-locale \
+ \
+ --without-pthreads \
+ --without-aio \
+ --without-dl \
+ --without-openssl \
+ --without-large-files \
+ --without-valgrind-debug \
+ --without-ipv6-split-stack \
+ --without-ipv4-mapped \
+ --without-localhost-ipv6 \
+ --without-dns-cname \
+ --without-po2html \
+ "
--- /dev/null
+#!/bin/sh
+#
+# Configure options currently used by Debian Packaged Release
+#
+# This is to test any release build against what the package maintainers are seeing
+#
+OPTS=" \
+ --build=i486-linux-gnu \
+ --prefix=/usr \
+ --includedir="\${prefix}/include" \
+ --mandir="\${prefix}/share/man" \
+ --infodir="\${prefix}/share/info" \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir="\${prefix}/lib/squid3" \
+ --disable-maintainer-mode \
+ --disable-dependency-tracking \
+ --srcdir=. \
+ --datadir=/usr/share/squid3 \
+ --sysconfdir=/etc/squid3 \
+ --mandir=/usr/share/man \
+ --with-cppunit-basedir=/usr \
+ --enable-inline \
+ --enable-async-io=8 \
+ --enable-storeio="ufs,aufs,coss,diskd,null" \
+ --enable-removal-policies="lru,heap" \
+ --enable-poll \
+ --enable-delay-pools \
+ --enable-cache-digests \
+ --enable-snmp \
+ --enable-htcp \
+ --enable-select \
+ --enable-carp \
+ --with-large-files \
+ --enable-underscores \
+ --enable-icap-client \
+ --enable-auth="basic,digest,ntlm" \
+ --enable-basic-auth-helpers="LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,getpwnam,multi-domain-NTLM" \
+ --enable-ntlm-auth-helpers="SMB" \
+ --enable-digest-auth-helpers="ldap,password" \
+ --enable-external-acl-helpers="ip_user,ldap_group,session,unix_group,wbinfo_group" \
+ --with-filedescriptors=65536 \
+ --with-default-user=proxy \
+ --enable-epoll \
+ --enable-linux-netfilter \
+"
+
+# Debian for some reason builds using explicit 'cc' instead of 'gcc' or automatic
+export build_alias="i486-linux-gnu"
+export CC="cc"
+export CFLAGS="-g -O2 -g -Wall -O2"
+export LDFLAGS=""
+export CPPFLAGS=""
+export CXX="g++"
+export CXXFLAGS="-g -O2 -g -Wall -O2"
+export FFLAGS="-g -O2"
--- /dev/null
+#!/bin/sh
+#
+# Configure options currently used by Ubuntu Packaged Release
+#
+# This is to test any release build against what the package maintainers are seeing
+#
+OPTS=" \
+ --build=i486-linux-gnu \
+ --prefix=/usr \
+ --includedir="\${prefix}/include" \
+ --mandir="\${prefix}/share/man" \
+ --infodir="\${prefix}/share/info" \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir="\${prefix}/lib/squid3" \
+ --disable-maintainer-mode \
+ --disable-dependency-tracking \
+ --srcdir=. \
+ --datadir=/usr/share/squid3 \
+ --sysconfdir=/etc/squid3 \
+ --mandir=/usr/share/man \
+ --with-cppunit-basedir=/usr \
+ --enable-inline \
+ --enable-async-io=8 \
+ --enable-storeio="ufs,aufs,coss,diskd,null" \
+ --enable-removal-policies="lru,heap" \
+ --enable-poll \
+ --enable-delay-pools \
+ --enable-cache-digests \
+ --enable-snmp \
+ --enable-htcp \
+ --enable-select \
+ --enable-carp \
+ --with-large-files \
+ --enable-underscores \
+ --enable-icap-client \
+ --enable-auth="basic,digest,ntlm" \
+ --enable-basic-auth-helpers="LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,getpwnam,multi-domain-NTLM" \
+ --enable-ntlm-auth-helpers="SMB" \
+ --enable-digest-auth-helpers="ldap,password" \
+ --enable-external-acl-helpers="ip_user,ldap_group,session,unix_group,wbinfo_group" \
+ --with-filedescriptors=65536 \
+ --with-default-user=proxy \
+ --enable-epoll \
+ --enable-linux-netfilter \
+"
+
+# Ubuntu for some reason built using 'cc' instead of gcc
+export CC="/usr/bin/cc"
+export CXX="g++"
+export CFLAGS="-g -O2 -g -Wall -O2"
+export CXXFLAGS="-g -O2 -g -Wall -O2"
+export CPPFLAGS=""
+export LDFLAGS="-Wl,-Bsymbolic-functions"
}
int
-main (int argc, char *argv)
+main(int argc, char **argv)
{
Debug::Levels[1] = 8;
debugs (1,1,"test" << "string");
}
int
-main (int argc, char *argv)
+main(int argc, char **argv)
{
assert (mem_node::InUseCount() == 0);
testLowAndHigh();
}
int
-main (int argc, char *argv)
+main(int argc, char **argv)
{
mem_node *aNode = new mem_node(0);
assert (aNode);
}
int
-main (int argc, char *argv)
+main(int argc, char **argv)
{
CheckHasExplicitWorks();
CheckSyntheticWorks();
libexec_PROGRAMS = \
cachemgr$(CGIEXT)
+DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf
+
squidclient_SOURCES = squidclient.cc
cachemgr__CGIEXT__SOURCES = cachemgr.cc
cachemgr__CGIEXT__CXXFLAGS = -DDEFAULT_CACHEMGR_CONFIG=\"$(DEFAULT_CACHEMGR_CONFIG)\" $(AM_CXXFLAGS)
EXTRA_DIST = \
cachemgr.conf
-DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf
-
$(OBJS): $(top_srcdir)/include/version.h ../include/autoconf.h
install-data-local:
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
#define DEFAULT_CACHEMGR_CONFIG "/etc/squid/cachemgr.conf"
#endif
-typedef struct
-{
+typedef struct {
char *server;
char *hostname;
int port;
/*
* Debugging macros (info goes to error_log on your web server)
- * Note: do not run cache manager with non zero debugging level
+ * Note: do not run cache manager with non zero debugging level
* if you do not debug, it may write a lot of [sensitive]
* information to your error log.
*/
printf("<HTML><HEAD><TITLE>Cache Manager Error</TITLE>\n");
printf("<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE></HEAD>\n");
printf("<BODY><H1>Cache Manager Error</H1>\n");
- printf("<P>\n%s</P>\n", msg);
+ printf("<P>\n%s</P>\n", html_quote(msg));
print_trailer();
}
if (!strchr(buf, '\t') || *buf == '\t') {
/* nope, just text */
snprintf(html, sizeof(html), "%s%s",
- table_line_num ? "</table>\n<pre>" : "", buf);
+ table_line_num ? "</table>\n<pre>" : "", html_quote(buf));
table_line_num = 0;
return html;
}
l += snprintf(html + l, sizeof(html) - l, "<%s colspan=\"%d\" align=\"%s\">%s</%s>",
ttag, column_span,
is_header ? "center" : is_number(cell) ? "right" : "left",
- cell, ttag);
+ html_quote(cell), ttag);
}
xfree(buf_copy);
return html;
}
+static const char *
+munge_action_line(const char *_buf, cachemgr_request * req)
+{
+ static char html[2 * 1024];
+ char *buf = xstrdup(_buf);
+ char *x = buf;
+ const char *action, *description;
+ char *p;
+
+ if ((p = strchr(x, '\n')))
+ *p = '\0';
+ action = xstrtok(&x, '\t');
+ description = xstrtok(&x, '\t');
+ if (!description)
+ description = action;
+ if (!action)
+ return "";
+ snprintf(html, sizeof(html), " <a href=\"%s\">%s</a>", menu_url(req, action), description);
+ return html;
+}
+
static int
read_reply(int s, cachemgr_request * req)
{
#endif
/* interpretation states */
enum {
- isStatusLine, isHeaders, isBodyStart, isBody, isForward, isEof, isForwardEof, isSuccess, isError
+ isStatusLine, isHeaders, isActions, isBodyStart, isBody, isForward, isEof, isForwardEof, isSuccess, isError
} istate = isStatusLine;
int parse_menu = 0;
const char *action = req->action;
printf("<PRE>\n");
}
+ istate = isActions;
+ /* yes, fall through, we do not want to loose the first line */
+
+ case isActions:
+ if (strncmp(buf, "action:", 7) == 0) {
+ fputs(" ", stdout);
+ fputs(munge_action_line(buf + 7, req), stdout);
+ break;
+ }
+ if (parse_menu) {
+ printf("<UL>\n");
+ } else {
+ printf("<HR noshade size=\"1px\">\n");
+ printf("<PRE>\n");
+ }
+
istate = isBody;
/* yes, fall through, we do not want to loose the first line */
* 401 to .cgi because web server filters out all auth info. Thus we
* disable authentication headers for now.
*/
- if (!strncasecmp(buf, "WWW-Authenticate:", 17) || !strncasecmp(buf, "Proxy-Authenticate:", 19))
-
- ; /* skip */
+ if (!strncasecmp(buf, "WWW-Authenticate:", 17) || !strncasecmp(buf, "Proxy-Authenticate:", 19)); /* skip */
else
fputs(buf, stdout);
}
int
-main(int argc, char *argv[])
-{
+main(int argc, char *argv[]) {
char *s;
cachemgr_request *req;
}
static char *
-read_post_request(void)
-{
+read_post_request(void) {
char *s;
char *buf;
int len;
}
static char *
-read_get_request(void)
-{
+read_get_request(void) {
char *s;
if ((s = getenv("QUERY_STRING")) == NULL)
}
static cachemgr_request *
-read_request(void)
-{
+read_request(void) {
char *buf;
cachemgr_request *req;
/* Routines to support authentication */
/*
- * Encodes auth info into a "public" form.
+ * Encodes auth info into a "public" form.
* Currently no powerful encryption is used.
*/
static void
-make_pub_auth(cachemgr_request * req)
-{
+make_pub_auth(cachemgr_request * req) {
static char buf[1024];
safe_free(req->pub_auth);
debug(3) fprintf(stderr, "cmgr: encoding for pub...\n");
}
static void
-decode_pub_auth(cachemgr_request * req)
-{
+decode_pub_auth(cachemgr_request * req) {
char *buf;
const char *host_name;
const char *time_str;
}
static void
-reset_auth(cachemgr_request * req)
-{
+reset_auth(cachemgr_request * req) {
safe_free(req->passwd);
safe_free(req->pub_auth);
}
static const char *
-make_auth_header(const cachemgr_request * req)
-{
+make_auth_header(const cachemgr_request * req) {
static char buf[1024];
size_t stringLength = 0;
const char *str64;
}
static int
-check_target_acl(const char *hostname, int port)
-{
+check_target_acl(const char *hostname, int port) {
char config_line[BUFSIZ];
FILE *fp = NULL;
int ret = 0;
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
#include "IPAddress.h"
#ifndef BUFSIZ
-#define BUFSIZ 8192
+#define BUFSIZ 8192
+#endif
+#ifndef MESSAGELEN
+#define MESSAGELEN 65536
+#endif
+#ifndef HEADERLEN
+#define HEADERLEN 65536
#endif
typedef void SIGHDLR(int sig);
int total_bytes = 0;
int io_timeout = 120;
+#ifdef _SQUID_MSWIN_
+void
+Win32SockCleanup(void)
+{
+ WSACleanup();
+ return;
+}
+#endif /* ifdef _SQUID_MSWIN_ */
+
static void
usage(const char *progname)
{
fprintf(stderr,
- "Version: %s\n"
- "Usage: %s [-arsv] [-i IMS] [-h remote host] [-l local host] [-p port] [-m method] [-t count] [-I ping-interval] [-H 'strings'] [-T timeout] url\n"
- "Options:\n"
- " -P file PUT request.\n"
- " -a Do NOT include Accept: header.\n"
- " -r Force cache to reload URL.\n"
- " -s Silent. Do not print data to stdout.\n"
- " -v Verbose. Print outgoing message to stderr.\n"
- " -i IMS If-Modified-Since time (in Epoch seconds).\n"
- " -h host Retrieve URL from cache on hostname. Default is localhost.\n"
- " -l host Specify a local IP address to bind to. Default is none.\n"
- " -p port Port number of cache. Default is %d.\n"
- " -m method Request method, default is GET.\n"
- " -t count Trace count cache-hops\n"
- " -g count Ping mode, \"count\" iterations (0 to loop until interrupted).\n"
- " -I interval Ping interval in seconds (default 1 second).\n"
- " -H 'string' Extra headers to send. Use '\\n' for new lines.\n"
- " -T timeout Timeout value (seconds) for read/write operations.\n"
- " -u user Proxy authentication username\n"
- " -w password Proxy authentication password\n"
- " -U user WWW authentication username\n"
- " -W password WWW authentication password\n",
- VERSION, progname, CACHE_HTTP_PORT);
+ "Version: %s\n"
+ "Usage: %s [-arsv] [-i IMS] [-h remote host] [-l local host] [-p port] [-m method] [-t count] [-I ping-interval] [-H 'strings'] [-T timeout] url\n"
+ "Options:\n"
+ " -P file PUT request.\n"
+ " -a Do NOT include Accept: header.\n"
+ " -r Force cache to reload URL.\n"
+ " -s Silent. Do not print data to stdout.\n"
+ " -v Verbose. Print outgoing message to stderr.\n"
+ " -i IMS If-Modified-Since time (in Epoch seconds).\n"
+ " -h host Retrieve URL from cache on hostname. Default is localhost.\n"
+ " -l host Specify a local IP address to bind to. Default is none.\n"
+ " -p port Port number of cache. Default is %d.\n"
+ " -m method Request method, default is GET.\n"
+ " -t count Trace count cache-hops\n"
+ " -g count Ping mode, \"count\" iterations (0 to loop until interrupted).\n"
+ " -I interval Ping interval in seconds (default 1 second).\n"
+ " -H 'string' Extra headers to send. Use '\\n' for new lines.\n"
+ " -T timeout Timeout value (seconds) for read/write operations.\n"
+ " -u user Proxy authentication username\n"
+ " -w password Proxy authentication password\n"
+ " -U user WWW authentication username\n"
+ " -W password WWW authentication password\n",
+ VERSION, progname, CACHE_HTTP_PORT);
exit(1);
}
int opt_verbose = 0;
const char *hostname, *localhost;
IPAddress iaddr;
- char url[BUFSIZ], msg[49152], buf[BUFSIZ];
- char extra_hdrs[32768];
+ char url[BUFSIZ], msg[MESSAGELEN], buf[BUFSIZ];
+ char extra_hdrs[HEADERLEN];
const char *method = "GET";
extern char *optarg;
time_t ims = 0;
ping_int = 1 * 1000;
if (argc < 2) {
- usage(argv[0]); /* need URL */
+ usage(argv[0]); /* need URL */
} else if (argc >= 2) {
- strncpy(url, argv[argc - 1], BUFSIZ);
- url[BUFSIZ - 1] = '\0';
+ strncpy(url, argv[argc - 1], BUFSIZ);
+ url[BUFSIZ - 1] = '\0';
- if (url[0] == '-')
- usage(argv[0]);
+ if (url[0] == '-')
+ usage(argv[0]);
- while ((c = getopt(argc, argv, "ah:l:P:i:km:p:rsvt:g:p:I:H:T:u:U:w:W:?")) != -1)
- switch (c) {
+ while ((c = getopt(argc, argv, "ah:l:P:i:km:p:rsvt:g:p:I:H:T:u:U:w:W:?")) != -1)
+ switch (c) {
- case 'a':
- opt_noaccept = 1;
- break;
+ case 'a':
+ opt_noaccept = 1;
+ break;
- case 'h': /* remote host */
+ case 'h': /* remote host */
- if (optarg != NULL)
- hostname = optarg;
+ if (optarg != NULL)
+ hostname = optarg;
- break;
+ break;
- case 'l': /* local host */
- if (optarg != NULL)
- localhost = optarg;
+ case 'l': /* local host */
+ if (optarg != NULL)
+ localhost = optarg;
- break;
+ break;
- case 's': /* silent */
- to_stdout = 0;
+ case 's': /* silent */
+ to_stdout = 0;
- break;
+ break;
- case 'k': /* backward compat */
- keep_alive = 1;
+ case 'k': /* backward compat */
+ keep_alive = 1;
- break;
+ break;
- case 'r': /* reload */
- reload = 1;
+ case 'r': /* reload */
+ reload = 1;
- break;
+ break;
- case 'p': /* port number */
- sscanf(optarg, "%d", &port);
+ case 'p': /* port number */
+ sscanf(optarg, "%d", &port);
- if (port < 1)
- port = CACHE_HTTP_PORT; /* default */
+ if (port < 1)
+ port = CACHE_HTTP_PORT; /* default */
- break;
+ break;
- case 'P':
- put_file = xstrdup(optarg);
+ case 'P':
+ put_file = xstrdup(optarg);
- break;
+ break;
- case 'i': /* IMS */
- ims = (time_t) atoi(optarg);
+ case 'i': /* IMS */
+ ims = (time_t) atoi(optarg);
- break;
+ break;
- case 'm':
- method = xstrdup(optarg);
+ case 'm':
+ method = xstrdup(optarg);
- break;
+ break;
- case 't':
- method = xstrdup("TRACE");
+ case 't':
+ method = xstrdup("TRACE");
- max_forwards = atoi(optarg);
+ max_forwards = atoi(optarg);
- break;
+ break;
- case 'g':
- ping = 1;
+ case 'g':
+ ping = 1;
- pcount = atoi(optarg);
+ pcount = atoi(optarg);
- to_stdout = 0;
+ to_stdout = 0;
- break;
+ break;
- case 'I':
- if ((ping_int = atoi(optarg) * 1000) <= 0)
- usage(argv[0]);
+ case 'I':
+ if ((ping_int = atoi(optarg) * 1000) <= 0)
+ usage(argv[0]);
- break;
+ break;
- case 'H':
- if (strlen(optarg)) {
- char *t;
- strncpy(extra_hdrs, optarg, sizeof(extra_hdrs));
+ case 'H':
+ if (strlen(optarg)) {
+ char *t;
+ strncpy(extra_hdrs, optarg, sizeof(extra_hdrs));
- while ((t = strstr(extra_hdrs, "\\n")))
- *t = '\r', *(t + 1) = '\n';
- }
- break;
+ while ((t = strstr(extra_hdrs, "\\n")))
+ *t = '\r', *(t + 1) = '\n';
+ }
+ break;
- case 'T':
- io_timeout = atoi(optarg);
- break;
+ case 'T':
+ io_timeout = atoi(optarg);
+ break;
- case 'u':
- proxy_user = optarg;
- break;
+ case 'u':
+ proxy_user = optarg;
+ break;
- case 'w':
- proxy_password = optarg;
- break;
+ case 'w':
+ proxy_password = optarg;
+ break;
- case 'U':
- www_user = optarg;
- break;
+ case 'U':
+ www_user = optarg;
+ break;
- case 'W':
- www_password = optarg;
- break;
+ case 'W':
+ www_password = optarg;
+ break;
- case 'v':
- /* undocumented: may increase verb-level by giving more -v's */
- opt_verbose++;
- break;
+ case 'v':
+ /* undocumented: may increase verb-level by giving more -v's */
+ opt_verbose++;
+ break;
- case '?': /* usage */
+ case '?': /* usage */
- default:
- usage(argv[0]);
- break;
- }
+ default:
+ usage(argv[0]);
+ break;
+ }
}
#ifdef _SQUID_MSWIN_
{
- WSADATA wsaData;
- WSAStartup(2, &wsaData);
+ WSADATA wsaData;
+ WSAStartup(2, &wsaData);
+ atexit(Win32SockCleanup);
}
#endif
/* Build the HTTP request */
if (strncmp(url, "mgr:", 4) == 0) {
- char *t = xstrdup(url + 4);
- snprintf(url, BUFSIZ, "cache_object://%s/%s", hostname, t);
- xfree(t);
+ char *t = xstrdup(url + 4);
+ snprintf(url, BUFSIZ, "cache_object://%s/%s", hostname, t);
+ xfree(t);
}
if (put_file) {
- put_fd = open(put_file, O_RDONLY);
- set_our_signal();
-
- if (put_fd < 0) {
- fprintf(stderr, "%s: can't open file (%s)\n", argv[0],
- xstrerror());
- exit(-1);
- }
+ put_fd = open(put_file, O_RDONLY);
+ set_our_signal();
+
+ if (put_fd < 0) {
+ fprintf(stderr, "%s: can't open file (%s)\n", argv[0],
+ xstrerror());
+ exit(-1);
+ }
#ifdef _SQUID_WIN32_
- setmode(put_fd, O_BINARY);
+ setmode(put_fd, O_BINARY);
#endif
- fstat(put_fd, &sb);
+ fstat(put_fd, &sb);
}
snprintf(msg, BUFSIZ, "%s %s HTTP/1.0\r\n", method, url);
if (reload) {
- snprintf(buf, BUFSIZ, "Pragma: no-cache\r\n");
- strcat(msg, buf);
+ snprintf(buf, BUFSIZ, "Pragma: no-cache\r\n");
+ strcat(msg, buf);
}
if (put_fd > 0) {
- snprintf(buf, BUFSIZ, "Content-length: %d\r\n", (int) sb.st_size);
- strcat(msg, buf);
+ snprintf(buf, BUFSIZ, "Content-length: %d\r\n", (int) sb.st_size);
+ strcat(msg, buf);
}
if (opt_noaccept == 0) {
- snprintf(buf, BUFSIZ, "Accept: */*\r\n");
- strcat(msg, buf);
+ snprintf(buf, BUFSIZ, "Accept: */*\r\n");
+ strcat(msg, buf);
}
if (ims) {
- snprintf(buf, BUFSIZ, "If-Modified-Since: %s\r\n", mkrfc1123(ims));
- strcat(msg, buf);
+ snprintf(buf, BUFSIZ, "If-Modified-Since: %s\r\n", mkrfc1123(ims));
+ strcat(msg, buf);
}
if (max_forwards > -1) {
- snprintf(buf, BUFSIZ, "Max-Forwards: %d\r\n", max_forwards);
- strcat(msg, buf);
+ snprintf(buf, BUFSIZ, "Max-Forwards: %d\r\n", max_forwards);
+ strcat(msg, buf);
}
if (proxy_user) {
- char *user = proxy_user;
- char *password = proxy_password;
+ char *user = proxy_user;
+ char *password = proxy_password;
#if HAVE_GETPASS
- if (!password)
- password = getpass("Proxy password: ");
+ if (!password)
+ password = getpass("Proxy password: ");
#endif
- if (!password) {
- fprintf(stderr, "ERROR: Proxy password missing\n");
- exit(1);
- }
- snprintf(buf, BUFSIZ, "%s:%s", user, password);
- snprintf(buf, BUFSIZ, "Proxy-Authorization: Basic %s\r\n", base64_encode(buf));
- strcat(msg, buf);
+ if (!password) {
+ fprintf(stderr, "ERROR: Proxy password missing\n");
+ exit(1);
+ }
+ snprintf(buf, BUFSIZ, "%s:%s", user, password);
+ snprintf(buf, BUFSIZ, "Proxy-Authorization: Basic %s\r\n", base64_encode(buf));
+ strcat(msg, buf);
}
if (www_user) {
- char *user = www_user;
- char *password = www_password;
+ char *user = www_user;
+ char *password = www_password;
#if HAVE_GETPASS
- if (!password)
- password = getpass("WWW password: ");
+ if (!password)
+ password = getpass("WWW password: ");
#endif
- if (!password) {
- fprintf(stderr, "ERROR: WWW password missing\n");
- exit(1);
- }
- snprintf(buf, BUFSIZ, "%s:%s", user, password);
- snprintf(buf, BUFSIZ, "Authorization: Basic %s\r\n", base64_encode(buf));
- strcat(msg, buf);
+ if (!password) {
+ fprintf(stderr, "ERROR: WWW password missing\n");
+ exit(1);
+ }
+ snprintf(buf, BUFSIZ, "%s:%s", user, password);
+ snprintf(buf, BUFSIZ, "Authorization: Basic %s\r\n", base64_encode(buf));
+ strcat(msg, buf);
}
if (keep_alive) {
- if (port != 80)
- snprintf(buf, BUFSIZ, "Proxy-Connection: keep-alive\r\n");
- else
- snprintf(buf, BUFSIZ, "Connection: keep-alive\r\n");
+ if (port != 80)
+ snprintf(buf, BUFSIZ, "Proxy-Connection: keep-alive\r\n");
+ else
+ snprintf(buf, BUFSIZ, "Connection: keep-alive\r\n");
- strcat(msg, buf);
+ strcat(msg, buf);
}
strcat(msg, extra_hdrs);
snprintf(buf, BUFSIZ, "\r\n");
strcat(msg, buf);
if (opt_verbose)
- fprintf(stderr, "headers: '%s'\n", msg);
+ fprintf(stderr, "headers: '%s'\n", msg);
if (ping) {
#if HAVE_SIGACTION
- struct sigaction sa, osa;
+ struct sigaction sa, osa;
- if (sigaction(SIGINT, NULL, &osa) == 0 && osa.sa_handler == SIG_DFL) {
- sa.sa_handler = catchSignal;
- sa.sa_flags = 0;
- sigemptyset(&sa.sa_mask);
- (void) sigaction(SIGINT, &sa, NULL);
- }
+ if (sigaction(SIGINT, NULL, &osa) == 0 && osa.sa_handler == SIG_DFL) {
+ sa.sa_handler = catchSignal;
+ sa.sa_flags = 0;
+ sigemptyset(&sa.sa_mask);
+ (void) sigaction(SIGINT, &sa, NULL);
+ }
#else
- void (*osig) (int);
+ void (*osig) (int);
- if ((osig = signal(SIGINT, catchSignal)) != SIG_DFL)
- (void) signal(SIGINT, osig);
+ if ((osig = signal(SIGINT, catchSignal)) != SIG_DFL)
+ (void) signal(SIGINT, osig);
#endif
loops = ping ? pcount : 1;
for (i = 0; loops == 0 || i < loops; i++) {
- int fsize = 0;
+ int fsize = 0;
struct addrinfo *AI = NULL;
- /* Connect to the server */
+ /* Connect to the server */
- if(localhost) {
- if( !iaddr.GetHostByName(localhost) ) {
+ if (localhost) {
+ if ( !iaddr.GetHostByName(localhost) ) {
fprintf(stderr, "client: ERROR: Cannot resolve %s: Host unknown.\n", localhost);
exit(1);
}
- }
- else {
+ } else {
/* Process the remote host name to locate the Protocol required
in case we are being asked to link to another version of squid */
- if( !iaddr.GetHostByName(hostname) ) {
+ if ( !iaddr.GetHostByName(hostname) ) {
fprintf(stderr, "client: ERROR: Cannot resolve %s: Host unknown.\n", hostname);
exit(1);
}
}
iaddr.SetEmpty();
- if( !iaddr.GetHostByName(hostname) ) {
+ if ( !iaddr.GetHostByName(hostname) ) {
fprintf(stderr, "client: ERROR: Cannot resolve %s: Host unknown.\n", hostname);
exit(1);
}
exit(1);
}
- /* Send the HTTP request */
- bytesWritten = mywrite(conn, msg, strlen(msg));
+ /* Send the HTTP request */
+ bytesWritten = mywrite(conn, msg, strlen(msg));
- if (bytesWritten < 0) {
- perror("client: ERROR: write");
- exit(1);
- } else if ((unsigned) bytesWritten != strlen(msg)) {
- fprintf(stderr, "client: ERROR: Cannot send request?: %s\n", msg);
- exit(1);
- }
+ if (bytesWritten < 0) {
+ perror("client: ERROR: write");
+ exit(1);
+ } else if ((unsigned) bytesWritten != strlen(msg)) {
+ fprintf(stderr, "client: ERROR: Cannot send request?: %s\n", msg);
+ exit(1);
+ }
- if (put_file) {
- int x;
- lseek(put_fd, 0, SEEK_SET);
+ if (put_file) {
+ int x;
+ lseek(put_fd, 0, SEEK_SET);
#ifdef _SQUID_MSWIN_
- while ((x = read(put_fd, buf, sizeof(buf))) > 0) {
+ while ((x = read(put_fd, buf, sizeof(buf))) > 0) {
#else
- while ((x = myread(put_fd, buf, sizeof(buf))) > 0) {
+ while ((x = myread(put_fd, buf, sizeof(buf))) > 0) {
#endif
- x = mywrite(conn, buf, x);
+ x = mywrite(conn, buf, x);
- total_bytes += x;
+ total_bytes += x;
- if (x <= 0)
- break;
- }
+ if (x <= 0)
+ break;
+ }
- if (x != 0)
- fprintf(stderr, "client: ERROR: Cannot send file.\n");
- }
- /* Read the data */
+ if (x != 0)
+ fprintf(stderr, "client: ERROR: Cannot send file.\n");
+ }
+ /* Read the data */
#ifdef _SQUID_MSWIN_
- setmode(1, O_BINARY);
+ setmode(1, O_BINARY);
#endif
- while ((len = myread(conn, buf, sizeof(buf))) > 0) {
- fsize += len;
+ while ((len = myread(conn, buf, sizeof(buf))) > 0) {
+ fsize += len;
- if (to_stdout)
- fwrite(buf, len, 1, stdout);
- }
+ if (to_stdout)
+ fwrite(buf, len, 1, stdout);
+ }
#ifdef _SQUID_MSWIN_
- setmode(1, O_TEXT);
+ setmode(1, O_TEXT);
#endif
- (void) close(conn); /* done with socket */
+ (void) close(conn); /* done with socket */
- if (interrupted)
- break;
+ if (interrupted)
+ break;
- if (ping) {
+ if (ping) {
- struct tm *tmp;
- time_t t2s;
- long elapsed_msec;
+ struct tm *tmp;
+ time_t t2s;
+ long elapsed_msec;
- (void) Now(&tv2);
- elapsed_msec = tvSubMsec(tv1, tv2);
- t2s = tv2.tv_sec;
- tmp = localtime(&t2s);
- fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n",
- tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
- tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1,
- elapsed_msec / 1000, elapsed_msec % 1000,
- elapsed_msec ? (double) fsize / elapsed_msec : -1.0);
+ (void) Now(&tv2);
+ elapsed_msec = tvSubMsec(tv1, tv2);
+ t2s = tv2.tv_sec;
+ tmp = localtime(&t2s);
+ fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n",
+ tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1,
+ elapsed_msec / 1000, elapsed_msec % 1000,
+ elapsed_msec ? (double) fsize / elapsed_msec : -1.0);
- if (i == 0 || elapsed_msec < ping_min)
- ping_min = elapsed_msec;
+ if (i == 0 || elapsed_msec < ping_min)
+ ping_min = elapsed_msec;
- if (i == 0 || elapsed_msec > ping_max)
- ping_max = elapsed_msec;
+ if (i == 0 || elapsed_msec > ping_max)
+ ping_max = elapsed_msec;
- ping_sum += elapsed_msec;
+ ping_sum += elapsed_msec;
- /* Delay until next "ping_int" boundary */
- if ((loops == 0 || i + 1 < loops) && elapsed_msec < ping_int) {
+ /* Delay until next "ping_int" boundary */
+ if ((loops == 0 || i + 1 < loops) && elapsed_msec < ping_int) {
- struct timeval tvs;
- long msec_left = ping_int - elapsed_msec;
+ struct timeval tvs;
+ long msec_left = ping_int - elapsed_msec;
- tvs.tv_sec = msec_left / 1000;
- tvs.tv_usec = (msec_left % 1000) * 1000;
- select(0, NULL, NULL, NULL, &tvs);
- }
- }
+ tvs.tv_sec = msec_left / 1000;
+ tvs.tv_usec = (msec_left % 1000) * 1000;
+ select(0, NULL, NULL, NULL, &tvs);
+ }
+ }
}
if (ping && i) {
- ping_mean = ping_sum / i;
- fprintf(stderr, "%d requests, round-trip (secs) min/avg/max = "
- "%ld.%03ld/%ld.%03ld/%ld.%03ld\n", i,
- ping_min / 1000, ping_min % 1000, ping_mean / 1000, ping_mean % 1000,
- ping_max / 1000, ping_max % 1000);
+ ping_mean = ping_sum / i;
+ fprintf(stderr, "%d requests, round-trip (secs) min/avg/max = "
+ "%ld.%03ld/%ld.%03ld/%ld.%03ld\n", i,
+ ping_min / 1000, ping_min % 1000, ping_mean / 1000, ping_mean % 1000,
+ ping_max / 1000, ping_max % 1000);
}
exit(0);
/*NOTREACHED */
}
static int
-client_comm_bind(int sock, const IPAddress &addr)
-{
+client_comm_bind(int sock, const IPAddress &addr) {
int res;
}
static int
-client_comm_connect(int sock, const IPAddress &addr, struct timeval *tvp)
-{
+client_comm_connect(int sock, const IPAddress &addr, struct timeval *tvp) {
int res;
static struct addrinfo *AI = NULL;
}
static int
-Now(struct timeval *tp)
-{
+Now(struct timeval *tp) {
#if GETTIMEOFDAY_NO_TZP
return gettimeofday(tp);
#else
} /* ARGSUSED */
static void
-catchSignal(int sig)
-{
+catchSignal(int sig) {
interrupted = 1;
fprintf(stderr, "Interrupted.\n");
}
static void
-pipe_handler(int sig)
-{
+pipe_handler(int sig) {
fprintf(stderr, "SIGPIPE received.\n");
}
static void
-set_our_signal(void)
-{
+set_our_signal(void) {
#if HAVE_SIGACTION
struct sigaction sa;
sigemptyset(&sa.sa_mask);
if (sigaction(SIGPIPE, &sa, NULL) < 0) {
- fprintf(stderr, "Cannot set PIPE signal.\n");
- exit(-1);
+ fprintf(stderr, "Cannot set PIPE signal.\n");
+ exit(-1);
}
#else
signal(SIGPIPE, pipe_handler);
}
static ssize_t
-myread(int fd, void *buf, size_t len)
-{
+myread(int fd, void *buf, size_t len) {
#ifndef _SQUID_MSWIN_
alarm(io_timeout);
return read(fd, buf, len);
}
static ssize_t
-mywrite(int fd, void *buf, size_t len)
-{
+mywrite(int fd, void *buf, size_t len) {
#ifndef _SQUID_MSWIN_
alarm(io_timeout);
return write(fd, buf, len);