Skip to content

apt-cacher-ng_rewriter.py#6

Closed
krichter722 wants to merge 6686 commits intosquid-cache:masterfrom
krichter722:apt-cacher-ng_helper
Closed

apt-cacher-ng_rewriter.py#6
krichter722 wants to merge 6686 commits intosquid-cache:masterfrom
krichter722:apt-cacher-ng_helper

Conversation

@krichter722
Copy link

added apt-cacher-ng_rewriter.py, a configurable URL rewriter for apt-cacher-ng

rousskov and others added 30 commits September 21, 2015 12:17
Previously, unsigned -1 size was returned for those bodies.
Old adapters relying on that buggy behavior will now throw:

  !"attempt to use unknown libecap::BodySize size"

Such adapters should check libecap::BodySize::known() before
using the libecap::Body::bodySize() value.
When no ssl_bump rules match, Squid may throw a "a rule with the final
action must have matched" exception:

Must(finalAction == Ssl::bumpSplice || finalAction == Ssl::bumpBump ||
     finalAction == Ssl::bumpTerminate);

After the exception is thrown, Squid attempts to wind down the affected
transaction (as it should), but the code either quits with an unhandled
exception error or hits the !callback assertion, depending on whether
the async job processing was in place when the exception was hit (which
depends on whether non-blocking/slow ssl_bump ACLs were active).

The attached patch does three things:

1. Teaches Squid to guess the final ssl_bump action when no ssl_bump
rules match. The final guessed action is "bump" if the last non-final
action was "stare" and "splice" otherwise. I suspect that the older
Squid code attempted to do something like that, but that code may have
been lost when we taught Squid to ignore impossible ssl_bump actions.

2. Protects ssl_bump-checking code from quitting with an unhandled
exception error.

3. Converts the fatal !callback assertion into [hopefully less damaging]
transaction error, with a BUG message logged to cache.log.

More work may be needed to investigate other exceptions, especially
Must(!csd->serverBump() || csd->serverBump()->step <= Ssl::bumpStep2);

This is a Measurement Factory project
Certificate Revokation Lists have gone through several iterations
of logic redesign leading to duplicated code and non-optimal I/O.
Client contexts were loading CRL directly from disk into the
context on every new context creation. Whereas the server contexts
were loading into an OpenSSL STACK_OF structure and adding from
memory instead of disk. This later design is more performant.

* Move the pre-loaded CRL set to Security::PeerOptions and store
  in a std::list structure as LockingPointer which will deallocate
  as needed on shutdwown and reconfigure.
  This depends on trunk rev.14304

* Replace the client context disk I/O with the pre-loaded CRL list

* Add GnuTLS CRL list types. Though at this point GnuTLS does not
  pre-load the CRL files.
When oeprating with many listening ports workers can flood the UDS
queue buffers and run into a timeout waiting for the coordinator to
respond.

To prevent that we for a queue and wait for each port to get a
response before registering the next.
The patch for CVE-2015-5400 converts all non-200 peer responses
into 502 Bad Gateway responses when relaying a CONNECT to a peer.

This happens to break login=PASS and login=PASSTHRU behaviour
which relies on the 401 and 407 status being relayed transparently.

We need to relay the auth server responses as-is when login= is
set to PASS or PASSTHRU but then unconditionally close the
connections to prevent CVE-2015-5400 from occuring.
 From: Guido Serassio <guido.serassio@acmeconsulting.it>
 To: Amos Jeffries <squid3@treenet.co.nz>, Squid Foundation Board
 	<squid-board@lists.squid-cache.org>
 Subject: R: Squid copyrights
 Thread-Topic: Squid copyrights
 Thread-Index: AQHQ9+T6PCUWJkiqykyPO1tKufh0Lp5Odnyw
 Date: Sat, 26 Sep 2015 08:15:43 +0000
 Message-ID: <0B31416C912584429DC230430752D91C0C028E4B@SBS.acmeconsulting.loc>


 Hi Amos,

 For me the changes are OK.

 Please apply the changes on behalf of me.

 Regards

 Guido Serassio
... to latest file copy from
  http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

This resolves some terminology and FSF address changes since the GPLv2
document was earlier applied to Squid.
Update the response mime header parse to using the parseHeader()
method previously in HttpRequest.
chtsanti and others added 24 commits December 14, 2015 12:00
…or failure

When the Ssl::PeerConnector fails to establish an SSL connection FwdState does
not retry to connect to the next destination server ip address, but instead
returns an error.

This is a Measurement Factory project
Also, adds new config option tls-no-npn to fully disable NPN on selected
cache_peer or http(s)_port directives.

ICAPS services set TLS NPN to off by default to prevent NPN wrongly
advertising them as HTTPS connections. The semantic meaning of NPN is to
name the protocol which is being wrapped by TLS, in the case of ICAPS that
is ICAP/1.0 but Squid NPN callback is currently hard-coded to send 'http/1.1'
upon startup.

Controller condition for allocating MemStore is slightly different from
MemStore condition for allocating MemStore::map, resulting in MemStore
without a map. Until that discrepancy is fixed, be careful when
dereferencing MemStore::map.
CBDATA and RefCountable are not very compatible. With the recent I/O
callback shuffling there appears to no longer be any reason for this
class to be CBDATA.
…ad of keytab

... when using login=NEGOTIATE to authenticate via kerberos to a peer.

When specified, this option prevents Squid from crafting a kerberos
credentials cache from a keytab, but instead lets GSSAPI use an existing
credentials cache.
This patch adds the following formatting codes:
  %ssl::>negotiated_version  The TLS version of the client-to-Squid connection.
  %ssl::<negotiated_version  The TLS version of the Squid-to-server connection.
  %ssl::>received_hello_version The TLS version of the Hello message received
                                from TLS client
  %ssl::<received_hello_version The TLS version of the Hello message received
                                from TLS server.
  %ssl::>received_supported_version The maximum TLS version supported by the
                                    the TLS client.
  %ssl::<received_supported_version The maximum TLS version supported by the
                                    the TLS server.
  %ssl::>cipher   The negotiated cipher of the client-to-Squid connection.
  %ssl::<cipher   The negotiated cipher of the Squid-to-server connection.

These are useful for statistics collection, security reviews, and reviews
prior to adjusting the list of the allowed TLS protocols and ciphers.

This is a Measurement Factory project
There are several use cases where an annotation may contain a list of values
for a single key. Today it is only possible to match the full annotation value.

This patch investigates the -m flag which can be used to enable delimiter
separated substrings matching on annotations:
   acl aclname note [-m[=delimiters]] name value ...
The '-m' flag by default matches comma separated substrings. The optional
"delimiters" parameter is a list of non-alphanumeric characters, which can
be used as alternate delimiters.

E.g. if an external ACL sets an annotation like:
   "applications=http,facebook,facebook-chat"
the following ACLs can be used to block access to certain applications:

acl fb_chat      note -m applications facebook-chat
acl db_upload    note -m  applications dropbox-upload
http_access      deny fb_chat
http_access      deny db_upload

This is a Measurement Factory project
@yadij
Copy link
Contributor

yadij commented Jul 8, 2016

Unfortunately, the Squid Project is not using git (yet). Github activity is likely to be ignored or forgotten, and this repo is way out of date. The best way to get your changes accepted would be to follow the standard procedure outlined at http://wiki.squid-cache.org/MergeProcedure

Here are some high level issues you will need to be aware of and happy with before the merge audit is worth initiating:

  1. is the copyright. Squid is currently being published under GPLv2, so we cannot merge GPLv3 code into the regular tarball releases. To merge you will need to re-license as GPLv2+.

  2. is that I request authors of major components provide a reasonable stretch of user support via the squid-users mailng list after the merger. At least one release cycle (1-2 years) to be long enough to cover the initial growing pains and bug fixes that brand new components impose.

@rousskov
Copy link
Contributor

Closing without prejudice because the old stale repository was replaced with the official one and Github cannot track this PR across such a huge repository change. Please resubmit if needed, after addressing @yadij comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants