Re: 3.1 steps forward

2008-02-14 Thread Adrian Chadd
On Thu, Feb 14, 2008, Amos Jeffries wrote:
 
 I'm just checking 3.1 progress maps now that the current big patches are in.
 
 Adrian: http://wiki.squid-cache.org/Features/LogDaemon
 
Can we add a timeline on this now please?
 If it requires a push THN will provide a little funding to get it for our
 use in 3.1.

Its done. Its in a branch in sourceforge somewhere.




Adrian

-- 
- Xenion - http://www.xenion.com.au/ - VPS Hosting - Commercial Squid Support -
- $25/pm entry-level VPSes w/ capped bandwidth charges available in WA -


Re: 3.1 steps forward

2008-02-14 Thread Amos Jeffries

Adrian Chadd wrote:

On Thu, Feb 14, 2008, Amos Jeffries wrote:

I'm just checking 3.1 progress maps now that the current big patches are in.

Adrian: http://wiki.squid-cache.org/Features/LogDaemon

   Can we add a timeline on this now please?
If it requires a push THN will provide a little funding to get it for our
use in 3.1.


Its done. Its in a branch in sourceforge somewhere.



Sorry if I was obtuse. I meant that you are the expert on this one. Are 
you able to re-locate that mysterious branch and estimate when you will 
have time to sync and push it to HEAD?


 Thanks

Amos
--
Please use Squid 2.6STABLE17+ or 3.0STABLE1+
There are serious security advisories out on all earlier releases.


Re: 3.1 steps forward

2008-02-14 Thread Adrian Chadd
On Fri, Feb 15, 2008, Amos Jeffries wrote:

 Sorry if I was obtuse. I meant that you are the expert on this one. Are 
 you able to re-locate that mysterious branch and estimate when you will 
 have time to sync and push it to HEAD?

squid3_logdaemon

have you fixed the AddrInfo leak? :)




Adrian



Re: squid3 future directory structure

2008-02-14 Thread Alex Rousskov
On Thu, 2008-02-14 at 11:45 +1300, Amos Jeffries wrote:
http://wiki.squid-cache.org/Features/SourceLayout

 Added ICMP to your list of components. It's a clear-cut one now.

Thank you. Can you lead this activity? We need somebody who will drive
the discussion and oversee actual changes...

 1) Should we use squid/src/squid/ root for most sources to include header
 files as squid/group/file.h? This may be required for installed headers
 and 3rd party code using those headers.
 
 I'm undecided on this one. Lack of info to base the decision on. It will
 really depend on the descision of whether or not to publish the headers
 for external use.
 I am inclined towards the publishing, but not towards the squid/src/squid
 hack we need to do.

Yeah. I posted a separate message on eCAP that has an alternative to
exposing Squid headers and libraries. Perhaps that would work better.

 2) Where to put OS-compatabilities wrappers that are currently located in
 squid/lib and squid/include?
 
 I like them where they are. It's the extras that have been added there
 (guilty!) and the mixed styles of compatibility coding that are confusing
 things.

I do not like the generic says-nothing names lib and include. I also
do not like that the two directories pollute the top-level directory.
Can we, perhaps, agree on something like

squid/compat/include
squid/compat/lib

 I'm sorry Duane, but the use you seem to like of adding Squid_ brings to
 mind more of 'completely re-written for squid, with different behaviour or
 usage' function.

The problem with xFoo is that other libraries we link with might have
their own xFoo. 

A C++ solution for this is namespaces, I guess, but it would require
more work to implement that approach in a clean way.

 3) Where to put 3rd party libraries that are currently located in
 squid/lib and squid/include?
 
 ./src/dependancies/ ??
 ./dependancies/ ??
 
 Definately split from the compat files though.

How about 

squid/import/

It is more specific, shorter, and easier to spell :-).

 6) Should directory names use just_small, CamelCase, or CAPS letters?
 
 I Think CamelCase like we do for files and classes, with acroynms being
 upper case is working. When we can make the converted and re-used legacy
 files from lower-only to CamelCase it will sit better than now.

Any chance to convince you and others that HTTPReply is not as readable
as HttpReply?

If we start using namespaces for protocols, then this becomes a
non-issue because HTTP::Reply reads just fine. Perhaps this should be a
separate question. Should we start using namespaces for protocols and
other important groups? I think we should.

 That said, this may impact the /usr/local/include descision. I think there
 is some tradition of lower-case with underscores on most OS.

I am not sure that tradition applies to C++ stuff or modern code in
general.

Thank you,

Alex.




eCAP: expose Squid or link with eCAP lib?

2008-02-14 Thread Alex Rousskov
Hello,

The Squid eCAP branch already has limited support for loadable
modules. I have also written some eCAP-specific code, but I am not
satisfied with its design yet. This may be the last opportunity to
change things without rewriting a lot of code so I would love to get
your feedback and ideas.

An eCAP loadable module needs to plug into Squid message processing
pipeline, similar to how ICAP servers do that now, but without ICAP/TCP
overheads. I see two design choices for giving the module efficient
access to Squid:

1) Expose Squid internals: Publish/install Squid headers and
libraries to give direct access to Squid resources. This
approach will most likely require installing pretty much all
headers because the module may need to use many Squid services
(e.g., DNS lookups) and because of the dependencies between
Squid headers.

2) Link with an eCAP library: Implement a Squid-independent eCAP
library that Squid and modules will build with to get
connected to each other. This way, Squid does not have to
publish any of its headers (the library does). This approach may
simplify Squid header management and even allow integration with
other proxies, but it is more work because it is a stand-alone
library and because Squid would have to translate between
internal Squid types and eCAP library types. 

I like the straightforwardness of (1) but it is crude and messy.
I like the elegance of (2) but it is more work.
Currently, I favor (2) but I want to hear what others think.

Which path would you choose? 

Does anybody have better ideas on how to support eCAP modules that do
ICAP-like adaptations inside Squid?

Thank you,

Alex.




Squid Hardware

2008-02-14 Thread pokeman

well today my colleges are discuss about the caching their very long
conversation their is 2 participants I am behalf of squid  and others are
from BLUECOAT proxy sg hardware . well I am asking for squid developers
there is any solution on hardware based embedded with squid  today the
marketing are being more consider to buy hardware not appoint any employee
to maintain cache services what the compare with other vendors ..  we have a
client ready to buy solution but who is the fastest one ? 
-- 
View this message in context: 
http://www.nabble.com/Squid-Hardware-tp15489384p15489384.html
Sent from the Squid - Development mailing list archive at Nabble.com.



Re: eCAP: expose Squid or link with eCAP lib?

2008-02-14 Thread Alex Rousskov

On Fri, 2008-02-15 at 09:07 +1100, Robert Collins wrote:
 On Thu, 2008-02-14 at 09:09 -0700, Alex Rousskov wrote: 
  An eCAP loadable module needs to plug into Squid message processing
  pipeline, similar to how ICAP servers do that now, but without ICAP/TCP
  overheads. I see two design choices for giving the module efficient
  access to Squid:
  
  1) Expose Squid internals: Publish/install Squid headers and
  libraries to give direct access to Squid resources. This
  approach will most likely require installing pretty much all
  headers because the module may need to use many Squid services
  (e.g., DNS lookups) and because of the dependencies between
  Squid headers.
 
 I prefer this technically because it means that work done to make eCAP
 clean will naturally clean up squid too.

I agree that a more thorough cleanup would be required to install
headers. On the other hand, most of that cleanup effort is unrelated to
Squid code quality as such (see the squid/src/squid/ issue for an
example). The effort would be directed at satisfying external
requirements placed on installable libraries and not on Squid code
quality. In other words, this may add work that does not really benefit
Squid directly.

The amount and complexity of that extra work may even derail the
cleanup! With option (2), that should not happen.

  2) Link with an eCAP library: Implement a Squid-independent eCAP
  library that Squid and modules will build with to get
  connected to each other. This way, Squid does not have to
  publish any of its headers (the library does). This approach may
  simplify Squid header management and even allow integration with
  other proxies, but it is more work because it is a stand-alone
  library and because Squid would have to translate between
  internal Squid types and eCAP library types. 
 
 Its more work both at code and at runtime. The only thing it really
 allows that 1) doesn't is non-GPL eCAP modules.

Whether (1) requires GPL is debatable (and we should not debate that
legal question here).

(2) Is a cleaner solution from code quality point and module
management point of view because you are forced to carefully encapsulate
eCAP module capabilities; access to Squid internals is performed via
well-known channels. With (1), anything within Squid is up for grabs as
there are no API restrictions.

Thank you,

Alex.




Re: eCAP: expose Squid or link with eCAP lib?

2008-02-14 Thread Amos Jeffries
 Hello,

 The Squid eCAP branch already has limited support for loadable
 modules. I have also written some eCAP-specific code, but I am not
 satisfied with its design yet. This may be the last opportunity to
 change things without rewriting a lot of code so I would love to get
 your feedback and ideas.

 An eCAP loadable module needs to plug into Squid message processing
 pipeline, similar to how ICAP servers do that now, but without ICAP/TCP
 overheads. I see two design choices for giving the module efficient
 access to Squid:

 1) Expose Squid internals: Publish/install Squid headers and
 libraries to give direct access to Squid resources. This
 approach will most likely require installing pretty much all
 headers because the module may need to use many Squid services
 (e.g., DNS lookups) and because of the dependencies between
 Squid headers.

 2) Link with an eCAP library: Implement a Squid-independent eCAP
 library that Squid and modules will build with to get
 connected to each other. This way, Squid does not have to
 publish any of its headers (the library does). This approach may
 simplify Squid header management and even allow integration with
 other proxies, but it is more work because it is a stand-alone
 library and because Squid would have to translate between
 internal Squid types and eCAP library types.

 I like the straightforwardness of (1) but it is crude and messy.
 I like the elegance of (2) but it is more work.
 Currently, I favor (2) but I want to hear what others think.

 Which path would you choose?

I'd choose (3). Some of the basic types have clean headers already.
Is it possible to incrementally grow eCAP access to the internals of
squid? Starting with, ie just a buffer of page text, and work the API up?
 I mean, we publish the available cleaned squid .h for its use starting at
lowest levels needed to support eCAP and working the way up to full
control paths. So the eCAP library never defines its own seperate types
publicly, but uses the squid ones as they get cleaned up.

I imagine the basic first-signup users of eCAP will be wanting to perform
content-filters on pages as they arrive. That only needs a read-only
buffer of the page data and a hook to allow/deny the transaction.

Amos


 Does anybody have better ideas on how to support eCAP modules that do
 ICAP-like adaptations inside Squid?

 Thank you,

 Alex.







Re: squid3 future directory structure

2008-02-14 Thread Amos Jeffries
 On Thu, 2008-02-14 at 11:45 +1300, Amos Jeffries wrote:
http://wiki.squid-cache.org/Features/SourceLayout

 Added ICMP to your list of components. It's a clear-cut one now.

 Thank you. Can you lead this activity? We need somebody who will drive
 the discussion and oversee actual changes...

 1) Should we use squid/src/squid/ root for most sources to include
 header
 files as squid/group/file.h? This may be required for installed
 headers
 and 3rd party code using those headers.

 I'm undecided on this one. Lack of info to base the decision on. It will
 really depend on the descision of whether or not to publish the headers
 for external use.
 I am inclined towards the publishing, but not towards the
 squid/src/squid
 hack we need to do.

 Yeah. I posted a separate message on eCAP that has an alternative to
 exposing Squid headers and libraries. Perhaps that would work better.

 2) Where to put OS-compatabilities wrappers that are currently located
 in
 squid/lib and squid/include?

 I like them where they are. It's the extras that have been added there
 (guilty!) and the mixed styles of compatibility coding that are
 confusing
 things.

 I do not like the generic says-nothing names lib and include. I also
 do not like that the two directories pollute the top-level directory.
 Can we, perhaps, agree on something like

 squid/compat/include
 squid/compat/lib


I'd agree with that.

 I'm sorry Duane, but the use you seem to like of adding Squid_ brings
 to
 mind more of 'completely re-written for squid, with different behaviour
 or
 usage' function.

 The problem with xFoo is that other libraries we link with might have
 their own xFoo.

 A C++ solution for this is namespaces, I guess, but it would require
 more work to implement that approach in a clean way.

 3) Where to put 3rd party libraries that are currently located in
 squid/lib and squid/include?

 ./src/dependancies/ ??
 ./dependancies/ ??

 Definately split from the compat files though.

 How about

 squid/import/

 It is more specific, shorter, and easier to spell :-).

Yes, that works.


 6) Should directory names use just_small, CamelCase, or CAPS letters?

 I Think CamelCase like we do for files and classes, with acroynms being
 upper case is working. When we can make the converted and re-used legacy
 files from lower-only to CamelCase it will sit better than now.

 Any chance to convince you and others that HTTPReply is not as readable
 as HttpReply?

Some, but not a lot :-)
I'm constantly encountering syntax and typo errors because HTTP is not
always spelt upper-case in class names.


 If we start using namespaces for protocols, then this becomes a
 non-issue because HTTP::Reply reads just fine. Perhaps this should be a
 separate question. Should we start using namespaces for protocols and
 other important groups? I think we should.

Yes on both counts. its a big change, but big changes and goals are what
we are about these days. Working up to it slowly would be fine, with a
better definition of where and what before any code goes in, but I think
it should be one of the end-goals.


 That said, this may impact the /usr/local/include descision. I think
 there
 is some tradition of lower-case with underscores on most OS.

 I am not sure that tradition applies to C++ stuff or modern code in
 general.

Meybe yes, meybe no. I haven't seen enough C++ code in /usr/* to judge it
properly by.

Amos




Re: eCAP: expose Squid or link with eCAP lib?

2008-02-14 Thread Alex Rousskov

On Fri, 2008-02-15 at 12:15 +1300, Amos Jeffries wrote:
 I imagine the basic first-signup users of eCAP will be wanting to
 perform content-filters on pages as they arrive. That only needs a
 read-only buffer of the page data and a hook to allow/deny the
 transaction.

FWIW, some of the users waiting for eCAP have full-functioning Traffic
Spicer modules that do a lot more than allow/deny based on read-only
page buffers.

I agree that it is possible to gradually cleanup and publish polished
Squid headers, but the first publication would still require a major
cleanup to remove the current inter-header dependencies! And when you
are done with that cleanup, you might as well expose pretty much
everything :-).

To do gradual exposure without the major initial cleanup, you need that
eCAP library that provides its own clean types and hides Squid guts
from the modules. That's pretty much the same as option #2, as nobody is
going to start with a full-blown eCAP library anyway.

I think the core question here is whether it is a good idea to expose
[polished, cleaned, improved, etc.] Squid guts? Is it better to provide
a well-defined eCAP-focused interface instead? I think an eCAP interface
is a better idea even if we have polished guts. Besides other
speculative code quality reasons already discussed here, I add this
one:

Guts change. Squid3 guts will change a lot. eCAP modules should
not stop Squid from changing, and should not suffer too much
when Squid guts change.

I should have thought of that reason earlier, but that's why it helps to
discuss these things :-).

Thank you,

Alex.




Re: eCAP: expose Squid or link with eCAP lib?

2008-02-14 Thread Amos Jeffries

 On Fri, 2008-02-15 at 12:15 +1300, Amos Jeffries wrote:
 I imagine the basic first-signup users of eCAP will be wanting to
 perform content-filters on pages as they arrive. That only needs a
 read-only buffer of the page data and a hook to allow/deny the
 transaction.

 FWIW, some of the users waiting for eCAP have full-functioning Traffic
 Spicer modules that do a lot more than allow/deny based on read-only
 page buffers.

 I agree that it is possible to gradually cleanup and publish polished
 Squid headers, but the first publication would still require a major
 cleanup to remove the current inter-header dependencies! And when you
 are done with that cleanup, you might as well expose pretty much
 everything :-).

 To do gradual exposure without the major initial cleanup, you need that
 eCAP library that provides its own clean types and hides Squid guts
 from the modules. That's pretty much the same as option #2, as nobody is
 going to start with a full-blown eCAP library anyway.

 I think the core question here is whether it is a good idea to expose
 [polished, cleaned, improved, etc.] Squid guts? Is it better to provide
 a well-defined eCAP-focused interface instead? I think an eCAP interface
 is a better idea even if we have polished guts. Besides other
 speculative code quality reasons already discussed here, I add this
 one:

 Guts change. Squid3 guts will change a lot. eCAP modules should
 not stop Squid from changing, and should not suffer too much
 when Squid guts change.

 I should have thought of that reason earlier, but that's why it helps to
 discuss these things :-).

True on both counts.

So what shall this interface look like?
I was imagining an interface that pulled/set some squid data structures
for client use. Even if it was gated through an API layer.

Amos



Re: Squid Hardware

2008-02-14 Thread Adrian Chadd
On Thu, Feb 14, 2008, pokeman wrote:

 well today my colleges are discuss about the caching their very long
 conversation their is 2 participants I am behalf of squid ??? and others are
 from BLUECOAT proxy sg hardware . well I am asking for squid developers
 there is any solution on hardware based embedded with squid  today the
 marketing are being more consider to buy hardware not appoint any employee
 to maintain cache services what the compare with other vendors ..  we have a
 client ready to buy solution but who is the fastest one ? 

There are plenty of Squid based appliances out there; there's a list of 
companies
using Squid linked off http://www.squid-cache.org/ .

I'm in the process of (slowly!) building a commercial proxy appliance based on 
Squid
and FreeBSD which will inherit all the bells and whistles that Squid will offer.
It'll include extras like Youtube/Windows Updates caching rules, some anti 
phishing
and anti spyware filtering, and whatever else clients are interested in paying 
for.

Send me a private email if you're interested.



Adrian



Re: eCAP: expose Squid or link with eCAP lib?

2008-02-14 Thread Adrian Chadd
On Fri, Feb 15, 2008, Amos Jeffries wrote:

 I'd choose (3). Some of the basic types have clean headers already.
 Is it possible to incrementally grow eCAP access to the internals of
 squid? Starting with, ie just a buffer of page text, and work the API up?
  I mean, we publish the available cleaned squid .h for its use starting at
 lowest levels needed to support eCAP and working the way up to full
 control paths. So the eCAP library never defines its own seperate types
 publicly, but uses the squid ones as they get cleaned up.
 
 I imagine the basic first-signup users of eCAP will be wanting to perform
 content-filters on pages as they arrive. That only needs a read-only
 buffer of the page data and a hook to allow/deny the transaction.

If you don't tidy up stuff early on then you end up introducing more 
dependencies
which will make restructuring more of a pain.




Adrian

-- 
- Xenion - http://www.xenion.com.au/ - VPS Hosting - Commercial Squid Support -
- $25/pm entry-level VPSes w/ capped bandwidth charges available in WA -


Re: squid3 future directory structure

2008-02-14 Thread Robert Collins

On Fri, 2008-02-15 at 12:24 +1300, Amos Jeffries wrote:
 
  6) Should directory names use just_small, CamelCase, or CAPS
 letters?
 
  I Think CamelCase like we do for files and classes, with acroynms
 being
  upper case is working. When we can make the converted and re-used
 legacy
  files from lower-only to CamelCase it will sit better than now.
 
  Any chance to convince you and others that HTTPReply is not as
 readable
  as HttpReply?
 
 Some, but not a lot :-)
 I'm constantly encountering syntax and typo errors because HTTP is not
 always spelt upper-case in class names.

I'd prefer lowercase always for directories.

filenames and CaSe are always headaches on windows :)

-Rob
-- 
GPG key available at: http://www.robertcollins.net/keys.txt.
 


signature.asc
Description: This is a digitally signed message part