--- /dev/null
+backend holter {
+ # holter.debian.org
+ .host = "194.177.211.202";
+ .port = "80";
+}
+backend powell {
+ # powell.debian.org
+ .host = "87.106.64.223";
+ .port = "80";
+}
+
+sub vcl_recv {
+
+ # Add a unique header containing the client address
+ remove req.http.X-Forwarded-For;
+ set req.http.X-Forwarded-For = req.http.rlnclientipaddr;
+
+ ### restart logic, this will redefine the backends if vcl_restart has been triggered
+ if (req.restarts == 0) {
+ set req.backend = holter;
+ } else if (req.restarts == 1) {
+ set req.backend = powell;
+ } else if (req.restarts == 2) {
+ set req.backend = holter;
+ } else {
+ set req.backend = holter;
+ }
+
+
+ if (req.request == "GET" && req.url ~ "^/search?") {
+ return(pass);
+ }
+ if (req.request == "GET" && req.url ~ "^/(squeeze|wheezy|sid|experimental|stable|testing|unstable|rc-buggy|squeezy-backports|lenny-backports|Pics)/") {
+ return(lookup);
+ }
+}
+
+sub vcl_fetch {
+ if (beresp.status != 200 && beresp.status != 403 && beresp.status != 404 && beresp.status != 301 && beresp.status != 302) {
+ return(restart);
+ }
+
+ # if i cant connect to the backend, ill set the grace period to be 600 seconds to hold onto content
+ set beresp.ttl = 600s;
+ set beresp.grace = 600s;
+
+ if (beresp.status == 404) {
+ set beresp.ttl = 0s;
+ }
+
+ if (beresp.status >= 500) {
+ set beresp.ttl = 0s;
+ }
+
+ if (req.request == "GET" && req.url ~ "^/search?") {
+ set beresp.ttl = 0s;
+ }
+
+ if (req.request == "GET" && req.url ~ "^/(squeeze|wheezy|sid|experimental|stable|testing|unstable|rc-buggy|squeezy-backports|lenny-backports|Pics)/") {
+ set beresp.ttl = 3600s;
+ }
+
+
+ set beresp.http.X-Cacheable = "YES";
+ return(deliver);
+}
+
+
+sub vcl_deliver {
+
+ set resp.http.X-Served-By = server.hostname;
+ if (obj.hits > 0) {
+ set resp.http.X-Cache = "HIT";
+ set resp.http.X-Cache-Hits = obj.hits;
+ } else {
+ set resp.http.X-Cache = "MISS";
+ }
+
+ return(deliver);
+}