VCL compiler changes
Poul-Henning Kamp
phk at phk.freebsd.dk
Sat Mar 24 23:29:30 CET 2007
Those of you subscribed to the subversion commitlogs will have noticed
that I am working on the VCL compiler right now.
The two most recent changes is that multiple definitions of the
vcl methods are concatenated so that
sub vcl_pipe {
foo;
}
sub vcl_pipe {
bar;
}
is the same as
sub vcl_pipe {
foo;
bar;
}
Together with the other change, that adds
include "somefile" ;
to the syntax, this should allow us to implement a sort of VCL
library which can easily be shared.
For instance, a vcl file implementing the squid purge functionality
could look like:
sub vcl_recv {
if (req.request == "PURGE") {
lookup;
}
}
sub vcl_hit {
if (req.request == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache.";
}
}
Wanting to apply an acl to the PURGE functionality, it could be
called from a VCL program as such:
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ acl_purge) {
error 405 "Not allowed.";
}
}
}
include "squid_purge.vcl";
If we come up with a set of such generally useful VCL snippets,
we could decide to add the "library" to the binary so tha tone
could just write:
include "@squid_purge"
and have The Right Thing Happen.
As always: feedback and input most welcome!
Poul-Henning
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
More information about the varnish-misc
mailing list