From 7804046877f31f93a387f331cf5bff4bbd72a415 Mon Sep 17 00:00:00 2001 From: Marcello Coutinho Date: Wed, 14 Dec 2011 02:37:31 -0200 Subject: varnish - change varnish-dev to varnish3 with streaming support --- config/varnish3/varnish.inc | 757 +++++++++++++++++++++++++++++++ config/varnish3/varnish.widget.php | 126 +++++ config/varnish3/varnish_backends.xml | 286 ++++++++++++ config/varnish3/varnish_custom_vcl.xml | 142 ++++++ config/varnish3/varnish_lb_directors.xml | 258 +++++++++++ config/varnish3/varnish_settings.xml | 290 ++++++++++++ config/varnish3/varnish_sync.xml | 120 +++++ config/varnish3/varnish_view_config.php | 89 ++++ config/varnish3/varnishstat.php | 111 +++++ 9 files changed, 2179 insertions(+) create mode 100644 config/varnish3/varnish.inc create mode 100755 config/varnish3/varnish.widget.php create mode 100644 config/varnish3/varnish_backends.xml create mode 100644 config/varnish3/varnish_custom_vcl.xml create mode 100644 config/varnish3/varnish_lb_directors.xml create mode 100644 config/varnish3/varnish_settings.xml create mode 100644 config/varnish3/varnish_sync.xml create mode 100644 config/varnish3/varnish_view_config.php create mode 100644 config/varnish3/varnishstat.php (limited to 'config/varnish3') diff --git a/config/varnish3/varnish.inc b/config/varnish3/varnish.inc new file mode 100644 index 00000000..91d09413 --- /dev/null +++ b/config/varnish3/varnish.inc @@ -0,0 +1,757 @@ + + Copyright (C) 2011 Marcello Coutinho + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. + */ +/* ========================================================================== */ + +function varnish_settings_post_validate($post, $input_errors) { + if($post['storagesize'] && !is_numeric($post['storagesize'])) + $input_errors[] = "A valid number is required for the field 'Storage size'"; + if($post['listeningport'] && !is_numeric($post['listeningport'])) + $input_errors[] = "A valid number is required for the field 'Listening port'"; + if($post['minworkers'] && !is_numeric($post['minworkers'])) + $input_errors[] = "A valid number is required for the field 'Minimum worker threads'"; + if($post['maxworkers'] && !is_numeric($post['maxworkers'])) + $input_errors[] = "A valid number is required for the field 'Maximum worker threads'"; + if($post['timeoutworkers'] && !is_numeric($post['timeoutworkers'])) + $input_errors[] = "A valid number is required for the field 'Worker thread timeout'"; + if($post['managment']){ + $mgm= explode(":",$post['managment']); + if(!is_ipaddr($mgm[0]) || !is_numeric($mgm[1])) + $input_errors[] = "A valid ip:port is required for the field 'managment'"; + } + if($post['grace'] && ! preg_match("/^\d+(h|m|s)$/",$post['grace'])) + $input_errors[] = "A valid number with a time reference is required for the field 'Fetch grace'"; + if($post['saint'] && ! preg_match("/^\d+(h|m|s)$/",$post['saint'])) + $input_errors[] = "A valid number with a time reference is required for the field 'Saint mode'"; + +} + +function varnish_lb_directors_post_validate($post, $input_errors) { + if (preg_match("/[^a-zA-Z0-9]/", $post['directorname'])) + $input_errors[] = "The directorname name must only contain the characters a-Z or 0-9"; + if(stristr($post['directorurl'], 'http')) + $input_errors[] = "You do not need to include the http:// string in the director URL"; + if($post['grace'] && ! preg_match("/^\d+(h|m|s)$/",$post['grace'])) + $input_errors[] = "A valid number with a time reference is required for the field 'Req grace'"; +} + +function varnish_backends_post_validate($post, $input_errors) { + if (!$post['backendname'] || preg_match("/[^a-zA-Z0-9]/", $post['backendname'])) + $input_errors[] = "The backend name must only contain the characters a-Z or 0-9"; + if(!is_ipaddr($post['ipaddress'])) + $input_errors[] = "A valid IP address is required for the field 'IPAddress'"; + if($post['first_byte_timeout'] && !is_numeric($post['first_byte_timeout'])) + $input_errors[] = "A valid number is required for the field 'first byte timeout'"; + if($post['connect_timeout'] && !is_numeric($post['connect_timeout'])) + $input_errors[] = "A valid number is required for the field 'connect timeout'"; + if($post['probe_interval'] && !is_numeric($post['probe_interval'])) + $input_errors[] = "A valid number is required for the field 'probe interval'"; + if($post['probe_interval'] && !is_numeric($post['probe_interval'])) + $input_errors[] = "A valid number is required for the field 'probe interval'"; + if($post['probe_timeout'] && !is_numeric($post['probe_timeout'])) + $input_errors[] = "A valid number is required for the field 'probe timeout'"; + if($post['probe_window'] && !is_numeric($post['probe_window'])) + $input_errors[] = "A valid number is required for the field 'probe window'"; + if($post['probe_threshold'] && !is_numeric($post['probe_threshold'])) + $input_errors[] = "A valid number is required for the field 'probe threshold'"; + $x=0; + while ($post['maptype'.$x] != ""){ + if($post['grace'.$x] && ! preg_match("/^\d+(h|m|s)$/",$post['grace'.$x])){ + $input_errors[] = "A valid number with a time reference is required for the field 'grace' in map ".($x +1); + } + $x++; + +} + +} + +function varnish_install() { + create_varnish_rcd_file(); +} + +function varnish_deinstall() { + create_varnish_rcd_file(); +} + +function text_area_decode($text){ + return preg_replace('/\r\n/', "\n",base64_decode($text)); +} +function varnish_start() { + global $g, $config; + if ($config['installedpackages']['varnishsettings']['config'][0]['enablevarnish']){ + exec("chmod +x /usr/local/etc/rc.d/varnish.sh"); + mwexec("/usr/local/etc/rc.d/varnish.sh");} + else{ + exec("chmod -x /usr/local/etc/rc.d/varnish.sh"); + mwexec("/usr/bin/killall varnishd");} +} + +/* Build the URL mappings logic VCL config txt */ +function varnish_get_url_mappings_txt() { + global $g, $config, $urlmappings,$backends_in_use; + $catch_all= "unset"; + $isfirst = true; + if($config['installedpackages']['varnishlbdirectors']['config'] != "") { + foreach($config['installedpackages']['varnishlbdirectors']['config'] as $url) { + #check options + $directo_grace_time=""; + if ($url['customapping']) + $directo_grace_time.=text_area_decode($url['customapping'])."\n\t\t"; + if($url['grace']) + $directo_grace_time.=($url['grace']=="0s"?"return(pass);":"set req.grace=".$url['grace'].";"); + $fieldtype = ($url['fieldtype']?$url['fieldtype']:"=="); + $req=($url['directorurl2']?"url":"http.host"); + $director_prefix=($url['directorurl'] && $url['directorurl2']?"^http://":""); + #check url + if ( $url['directorurl'] || $url['directorurl2'] || $catch_all == "unset" ){ + if ( $url['directorurl']== "" && $url['directorurl2']== "" ){ + #director with no host or url, so director for catch all traffic not specified in config + $lasturlmappings = "\telse\t{\n\t\tset req.backend = ".$url['directorname'].";\n\t\t}\n"; + $catch_all = "set"; + $isfirst = false; + } + else{ + if(!$isfirst) + $urlmappings .= "\telse "; + $urlmappings .= "if (req.$req $fieldtype ".'"'.$url['directorurl'].$url['directorurl2'].'") {'."\n"; + #check failover + $urlbackend = "\t\t\tset req.backend = ".$url['directorname'].";"; + if ($url['failover'] && $url['failover'] != $url['directorname']){ + $tabs=($url['grace']?"\n\t\t\t":""); + $urlfailover = "\t\t\tset req.backend = ".$url['failover'].";"; + $urlmappings .= "\t\tif (req.restarts == 0) {\n".$urlbackend.$tabs.$directo_grace_time.$tabs."}"; + $urlmappings .= "\n\t\telse\t{\n".$urlfailover.$tabs.$directo_grace_time.$tabs."}\n\t\t}\n"; + $isfirst = false; + } + else{ + $tabs=($url['grace']?"\n\t\t":""); + $urlmappings .= $urlbackend.$tabs.$directo_grace_time."\n\t\t}\n"; + $isfirst = false; + } + } + } + } + } + if($config['installedpackages']['varnishbackends']['config']) + foreach($config['installedpackages']['varnishbackends']['config'] as $urlmapping) { + if($urlmapping['row']) + foreach($urlmapping['row'] as $url) { + $directo_grace_time=""; + if($url['grace']) + $directo_grace_time=($url['grace']=="0s"?"\n\t\t return(pass);":"\n\t\tset req.grace=".$url['grace'].";"); + $req=($url['maptype']?$url['maptype']:"http.host"); + $fieldtype=($url['fieldtype']?$url['fieldtype']:"=="); + if ($url['urlmapping'] != "" || $catch_all == 'unset'){ + if($url['urlmapping'] == ""){ + $catch_all = "set"; + $lasturlmappings = "\telse\t{\n\t\tset req.backend = ".$urlmapping['backendname']."BACKEND;\n\t\t}\n"; + } + else{ + if(!$isfirst) + $urlmappings .= "\telse "; + $urlmappings .= <</dev/null +killall varnishd 2>/dev/null +sleep 1 +sysctl kern.ipc.nmbclusters=65536 +sysctl kern.ipc.somaxconn=16384 +sysctl kern.maxfiles=131072 +sysctl kern.maxfilesperproc=104856 +sysctl kern.threads.max_threads_per_proc=4096 +/usr/bin/env \ +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ +/usr/local/bin/php -q -d auto_prepend_file=config.inc < +ENDOFF + +/usr/local/sbin/varnishd \ + {$listeningport} \ + -f /var/etc/default.vcl \ + {$storage_type} \ + -w {$minworkers},{$maxworkers},{$timeoutworkers} \ + {$advancedstartup} + +EOF; + + fwrite($fd, $rc_file); + fclose($fd); + exec("chmod a+rx /usr/local/etc/rc.d/varnish.sh"); +} + +function get_backend_config_txt() { + global $config, $g, $backends_in_use; + $backends=""; + if($config['installedpackages']['varnishbackends']['config'] != "") { + foreach($config['installedpackages']['varnishbackends']['config'] as $backend) { + if($backend['connect_timeout']) + $connect_timeout = $backend['connect_timeout'] . "s"; + else + $connect_timeout = "25s"; + if($backend['port']) + $connect_port = $backend['port']; + else + $connect_port = "80"; + if($backend['first_byte_timeout']) + $first_byte_timeout = $backend['first_byte_timeout'] . "s"; + else + $first_byte_timeout = "300s"; + if($backend['probe_url']) + if (preg_match("@^(http)://([a-zA-Z0-9.-]*)/(.*)$@",$backend['probe_url'],$matches)){ + $probe_url=".request =\n"; + $probe_url.="\t\t\t".'"GET /'.$matches[3].' HTTP/1.1"'."\n"; + $probe_url.="\t\t\t".'"Accept: text/*"'."\n"; + $probe_url.="\t\t\t".'"User-Agent: Varnish"'."\n"; + $probe_url.="\t\t\t".'"Host: '.$matches[2].'"'."\n"; + $probe_url.="\t\t\t".'"Connection: Close";'; + } + else{ + $probe_url = '.url = "'.$backend['probe_url'].'";'; + } + else + $probe_url ='.url = "/";'; + if($backend['probe_interval']) + $probe_interval = $backend['probe_interval'] . "s"; + else + $probe_interval = "1s"; + if($backend['probe_timeout']) + $probe_timeout = $backend['probe_timeout'] . "s"; + else + $probe_timeout = "1s"; + if($backend['probe_window']) + $probe_window = $backend['probe_window']; + else + $probe_window = "5"; + if($backend['probe_threshold']) + $probe_threshold = $backend['probe_threshold']; + else + $probe_threshold = "5"; + if (isset($probe_threshold)){ + #last parameter set ,so write conf if backend is in use + if ($backends_in_use[$backend['backendname']] != ""){ + $backends .= << + +"} + obj.status + " " + obj.response + {" + + +

Error "} + obj.status + " " + obj.response + {"

+

"} + obj.response + {"

+

Guru Meditation:

+

XID: "} + req.xid + {"

+
+

Varnish cache server

+ +138 +EOF; + +/* Grab configuration txt blocks */ +/* Please keep this sequence to determine witch backends are in use */ +$backends_in_use=array(); +$lb_config= get_lb_directors_config_txt(); +$urlmappings = varnish_get_url_mappings_txt(); +$backends = get_backend_config_txt() . $lb_config ; +#$backends .= get_lb_directors_config_txt(); + + +/* Start to build varnish default.vcl configurationf file */ +$varnish_config_file = << + +{$errorvcl}"}; + return(deliver); + +} + +{$backends} +{$vcl_hash} +sub vcl_recv { + {$vcl_recv_early} + {$vcl_recv_set_basic} + {$urlmappings} + {$vcl_recv_late} + #respect client wish to refresh the page + if (req.http.Pragma ~ "no-cache") + { + return(pass); + } + + {$vcl_recv_action_basic} + return(lookup); +} + +sub vcl_pipe { + {$vcl_pipe_early} + # If we don't set the Connection: close header, any following + # requests from the client will also be piped through and + # left untouched by varnish. We don't want that. + set req.http.connection = "close"; + # Note: no "pipe" action here - we'll fall back to the default + # pipe method so that when any changes are made there, we + # still inherit them. + {$vcl_pipe_late} +} +sub vcl_hit { + return (deliver); +} + +sub vcl_miss { + return (fetch); +} + +sub vcl_fetch { + {$vcl_fetch_stream}{$vcl_fetch_early} + {$vcl_fetch_action} + # Varnish respects the wishes of the backend application. + if (beresp.http.Pragma ~ "no-cache" || beresp.http.Cache-Control ~ "(no-cache|no-store|private)") { + return(hit_for_pass); + } + ## If the request to the backend returns a code other than 200, restart the loop + ## If the number of restarts reaches the value of the parameter max_restarts, + ## the request will be error'ed. max_restarts defaults to 4. This prevents + ## an eternal loop in the event that, e.g., the object does not exist at all. + if (beresp.status != 200 && beresp.status != 403 && beresp.status != 404 && + beresp.status != 303 && beresp.status != 302 && beresp.status != 301 && beresp.status != 401 ) { + {$vcl_saint_mode}return(restart); + } + + + {$vcl_fetch_late} + {$vcl_grace_time}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); +} + +sub vcl_init { + return (ok); +} + +sub vcl_fini { + return (ok); +} + +EOF; + + $fd = fopen("/var/etc/default.vcl", "w"); + fwrite($fd, $varnish_config_file); + fclose($fd); + + varnish_sync_on_changes(); +} + +/* Uses XMLRPC to synchronize the changes to a remote node */ +function varnish_sync_on_changes() { + global $config, $g; + log_error("[varnish] varnish_xmlrpc_sync.php is starting."); + $synconchanges = $config['installedpackages']['varnishsync']['config'][0]['synconchanges']; + if(!$synconchanges) + return; + foreach ($config['installedpackages']['varnishsync']['config'] as $rs ){ + foreach($rs['row'] as $sh){ + $sync_to_ip = $sh['ipaddress']; + $password = $sh['password']; + if($password && $sync_to_ip) + varnish_do_xmlrpc_sync($sync_to_ip, $password); + } + } + log_error("[varnish] varnish_xmlrpc_sync.php is ending."); +} +/* Do the actual XMLRPC sync */ +function varnish_do_xmlrpc_sync($sync_to_ip, $password) { + global $config, $g; + + if(!$password) + return; + + if(!$sync_to_ip) + return; + + $xmlrpc_sync_neighbor = $sync_to_ip; + if($config['system']['webgui']['protocol'] != "") { + $synchronizetoip = $config['system']['webgui']['protocol']; + $synchronizetoip .= "://"; + } + $port = $config['system']['webgui']['port']; + /* if port is empty lets rely on the protocol selection */ + if($port == "") { + if($config['system']['webgui']['protocol'] == "http") + $port = "80"; + else + $port = "443"; + } + $synchronizetoip .= $sync_to_ip; + + /* xml will hold the sections to sync */ + $xml = array(); + $xml['varnishcustomvcl'] = $config['installedpackages']['varnishcustomvcl']; + $xml['varnishbackends'] = $config['installedpackages']['varnishbackends']; + $xml['varnishlbdirectors'] = $config['installedpackages']['varnishlbdirectors']; + $xml['varnishsettings'] = $config['installedpackages']['varnishsettings']; + + /* assemble xmlrpc payload */ + $params = array( + XML_RPC_encode($password), + XML_RPC_encode($xml) + ); + + /* set a few variables needed for sync code borrowed from filter.inc */ + $url = $synchronizetoip; + log_error("Beginning Varnish XMLRPC sync to {$url}:{$port}."); + $method = 'pfsense.merge_installedpackages_section_xmlrpc'; + $msg = new XML_RPC_Message($method, $params); + $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); + $cli->setCredentials('admin', $password); + if($g['debug']) + $cli->setDebug(1); + /* send our XMLRPC message and timeout after 250 seconds */ + $resp = $cli->send($msg, "250"); + if(!$resp) { + $error = "A communications error occurred while attempting varnish XMLRPC sync with {$url}:{$port}."; + log_error($error); + file_notice("sync_settings", $error, "varnish Settings Sync", ""); + } elseif($resp->faultCode()) { + $cli->setDebug(1); + $resp = $cli->send($msg, "250"); + $error = "An error code was received while attempting varnish XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); + log_error($error); + file_notice("sync_settings", $error, "varnish Settings Sync", ""); + } else { + log_error("varnish XMLRPC sync successfully completed with {$url}:{$port}."); + } + + /* tell varnish to reload our settings on the destionation sync host. */ + $method = 'pfsense.exec_php'; + $execcmd = "require_once('/usr/local/pkg/varnish.inc');\n"; + $execcmd .= "sync_package_varnish();\nvarnish_start();"; + /* assemble xmlrpc payload */ + $params = array( + XML_RPC_encode($password), + XML_RPC_encode($execcmd) + ); + + log_error("varnish XMLRPC reload data {$url}:{$port}."); + $msg = new XML_RPC_Message($method, $params); + $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); + $cli->setCredentials('admin', $password); + $resp = $cli->send($msg, "250"); + if(!$resp) { + $error = "A communications error occurred while attempting varnish XMLRPC sync with {$url}:{$port} (pfsense.exec_php)."; + log_error($error); + file_notice("sync_settings", $error, "varnish Settings Sync", ""); + } elseif($resp->faultCode()) { + $cli->setDebug(1); + $resp = $cli->send($msg, "250"); + $error = "An error code was received while attempting varnish XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); + log_error($error); + file_notice("sync_settings", $error, "varnish Settings Sync", ""); + } else { + log_error("varnish XMLRPC reload data success with {$url}:{$port} (pfsense.exec_php)."); + } + +} + +?> diff --git a/config/varnish3/varnish.widget.php b/config/varnish3/varnish.widget.php new file mode 100755 index 00000000..f2b68aec --- /dev/null +++ b/config/varnish3/varnish.widget.php @@ -0,0 +1,126 @@ +"; + echo" "; +} +function close_table(){ + echo" "; + echo""; + echo "
"; +} + +$pfb_table=array(); +$img['Sick']=""; +$img['Healthy']=""; + + +#var_dump($pfb_table); +#exit; +?>
"; + print "Cache hits"; + print "Cache hits pass"; + print "Cache Missed"; + + $backends=exec("varnishadm -T " . escapeshellarg($mgm) . " stats",$debug); + foreach ($debug as $line){ + if (preg_match("/(\d+)\s+Cache\s+(hits.for|hits|misses)/",$line,$matches)) + $cache[preg_replace("/\s+/","",$matches[2])]=$matches[1]; + if (preg_match("/(\d+)\s+Client\s+(\w+)/",$line,$matches)) + $client[$matches[2]]=$matches[1]; + } + print "".$cache['hits'] .""; + print "".$cache['hitsfor'] .""; + print "".$cache['misses'].""; + close_table(); + + open_table(); + print "Conn. Accepted"; + print "Req. received"; + print "Uptime"; + print "".$client['connections'] .""; + print "".$client['requests'] .""; + print "".$client['uptime'].""; + close_table(); + + open_table(); + print "Backend"; + print "LB applied"; + print "Status"; + if (is_array($config['installedpackages']['varnishlbdirectors']['config'])) + foreach($config['installedpackages']['varnishlbdirectors']['config'] as $lb){ + foreach ($lb['row'] as $lb_backend){ + ${$lb_backend['backendname']}++; + } + } + $backends=exec("varnishadm -T " . escapeshellarg($mgm) . " debug.health",$debug); + foreach ($debug as $line){ + if (preg_match("/Backend (.*) is (\w+)/",$line,$matches)){ + $backend=preg_replace("/BACKEND$/","",$matches[1]); + print "". $backend .""; + print "". ${$backend} .""; + print "".$img[$matches[2]].""; + } + } + } +else{ + print "Varnish Managment interface not set in config."; +} +echo" "; +echo"
"; + +?> + diff --git a/config/varnish3/varnish_backends.xml b/config/varnish3/varnish_backends.xml new file mode 100644 index 00000000..d9597dd3 --- /dev/null +++ b/config/varnish3/varnish_backends.xml @@ -0,0 +1,286 @@ + + + + + + + Copyright (C) 2011 Marcello Coutinho + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. + */ +/* ========================================================================== */ + ]]> + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + varnishbackends + 0.0.5 + Varnish: Backends + /usr/local/pkg/varnish.inc + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish_lb_directors.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish_settings.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish_custom_vcl.xml + + + /usr/local/www/widgets/widgets + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish.widget.php + + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish.inc + + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish_sync.xml + + + /usr/local/www/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish_view_config.php + + + /usr/local/www/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnishstat.php + + + Varnish + Varnish +
Services
+ varnish_backends.xml +
+ + varnish + varnish.sh + varnishd + Varnish HTTP accelerator + + + + Backends + /pkg.php?xml=varnish_backends.xml + + + + Settings + /pkg_edit.php?xml=varnish_settings.xml&id=0 + + + Custom VCL + /pkg_edit.php?xml=varnish_custom_vcl.xml&id=0 + + + LB Directors + /pkg.php?xml=varnish_lb_directors.xml + + + XMLRPC Sync + /pkg_edit.php?xml=varnish_sync.xml&id=0 + + + View Configuration + /varnish_view_config.php + + + VarnishSTAT + /varnishstat.php + + + + + IPAddress + ipaddress + + + Name + backendname + + + + + BackendSettings + BackendSettings + listtopic + Backend settings + + + Backend name + backendname + Enter the name of this backend web server. + input + ^[a-z0-9.|-]+$ + + + IPAddress + ipaddress + Enter the IP Address of the backend web server. + input + + + Port + port + Enter the TCP/IP port of the webserver. + input + ^[0-9]+$ + + + PerformanceMetrics + PerformanceMetrics + listtopic + Performance metrics + + + First byte timeout + first_byte_timeout + time to wait for the first byte from the backend and .between_bytes_timeout for time to wait between each received byte. + input + + + Connect timeout + connect_timeout + The time to wait for a backend connection. + input + + + ProbeInfo + ProbeInfo + listtopic + Probe settings + + + Probe URL + probe_url + Enter the URL that varnish will use to ensure that this backend is healthy.
It can be a url like "/", "/teste.htm" or a request "http://www.mysite.com/index.htm"]]>
+ input + 40 +
+ + Probe Interval + probe_interval + Enter the frequency in seconds that varnish will check the probe url.]]> + input + + + Probe Timeout + probe_timeout + Enter the frequency in seconds that varnish will wait for a backend probe response.]]> + input + + + Probe Window + probe_window + Enter the value of how many of the latest polls that should be examined.]]> + input + + + Probe Threshold + probe_threshold + Enter the value of how many of those must have succeeded for us to consider the backend healthy.]]> + input + + + Mappings + Mappings + listtopic + Backend Mappings + + + Leave empty if you plan to include this server in Load Balance (LB Directors)

use 0s grace time to force no cache.]]>
+ MapURLs + rowhelper + + + Map + maptype + Select the field type that you would like to use in matching the URL. + select + + + + + + + Match + fieldtype + select + + + + + + + expression + urlmapping + input + 30 + + + grace]]> + grace + input + 5 + + +
+
+ + varnish_install(); + + + + + sync_package_varnish(); + create_varnish_rcd_file(); + varnish_start(); + + + sync_package_varnish(); + create_varnish_rcd_file(); + varnish_start(); + + + varnish_backends_post_validate($_POST, &$input_errors); + +
\ No newline at end of file diff --git a/config/varnish3/varnish_custom_vcl.xml b/config/varnish3/varnish_custom_vcl.xml new file mode 100644 index 00000000..ba6d4a51 --- /dev/null +++ b/config/varnish3/varnish_custom_vcl.xml @@ -0,0 +1,142 @@ + + + + + + + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. + */ +/* ========================================================================== */ + ]]> + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + varnishcustomvcl + 0.0.2 + Varnish custom VCL + pkg_edit.php?xml=varnish_settings.xml&id=0 + /usr/local/pkg/varnish.inc + + + Backends + /pkg.php?xml=varnish_backends.xml + + + Settings + /pkg_edit.php?xml=varnish_settings.xml&id=0 + + + Custom VCL + /pkg_edit.php?xml=varnish_custom_vcl.xml&id=0 + + + + LB Directors + /pkg.php?xml=varnish_lb_directors.xml + + + XMLRPC Sync + /pkg_edit.php?xml=varnish_sync.xml&id=0 + + + View Configuration + /varnish_view_config.php + + + VarnishSTAT + /varnishstat.php + + + + + vcl_recv_early + vcl_recv_early + Paste your custom vcl_recv]]> code here. This code will be included at the beginning of the vcl_recv function. + textarea + 50 + 10 + base64 + + + vcl_recv_late + vcl_recv_late + Paste your custom vcl_recv]]> code here. This code will be included at the end of the vcl_recv function. + textarea + 50 + 10 + base64 + + + vcl_fetch_early + vcl_fetch_early + Paste your custom vcl_fetch]]> code here. This code will be included at the beginning of the vcl_fetch function. + textarea + 50 + 10 + base64 + + + vcl_fetch_late + vcl_fetch_late + Paste your custom vcl_fetch]]> code here. This code will be included at the end of the vcl_fetch function. + textarea + 50 + 10 + base64 + + + vcl_pipe_early + vcl_fetch_early + Paste your custom vcl_pipe]]> code here. This code will be included at the beginning of the vcl_pipe function. + textarea + 50 + 10 + base64 + + + vcl_pipe_late + vcl_fetch_late + Paste your custom vcl_pipe]]> code here. This code will be included at the end of the vcl_pipe function. + textarea + 50 + 10 + base64 + + + + + + sync_package_varnish(); + create_varnish_rcd_file(); + varnish_start(); + + \ No newline at end of file diff --git a/config/varnish3/varnish_lb_directors.xml b/config/varnish3/varnish_lb_directors.xml new file mode 100644 index 00000000..994320f3 --- /dev/null +++ b/config/varnish3/varnish_lb_directors.xml @@ -0,0 +1,258 @@ + + + + + + + Copyright (C) 2011 Marcello Coutinho + + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. + */ +/* ========================================================================== */ + ]]> + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + varnishlbdirectors + 0.0.6 + Varnish: Backends + /usr/local/pkg/varnish.inc + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish_settings.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish_custom_vcl.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.com/packages/config/varnish64/varnish.inc + + + Varnish + +
Services
+ varnish_lb_directors.xml +
+ + + Backends + /pkg.php?xml=varnish_backends.xml + + + Settings + /pkg_edit.php?xml=varnish_settings.xml&id=0 + + + Custom VCL + /pkg_edit.php?xml=varnish_custom_vcl.xml&id=0 + + + LB Directors + /pkg.php?xml=varnish_lb_directors.xml + + + + XMLRPC Sync + /pkg_edit.php?xml=varnish_sync.xml&id=0 + + + View Configuration + /varnish_view_config.php + + + VarnishSTAT + /varnishstat.php + + + + + Director name + directorname + + + HOST + directorurl + + + URL + directorurl2 + + + + Type + directortype + + + Grace + grace + + + Failover + failover + + + + + DirectorSettings + Director Settings + listtopic + Director settings + + + Director name + directorname + input + 40 + + + Match type + fieldtype + Select the field type that you would like to use in matching the HOST/URL. + select + + + + + + + Host + directorurl + Hint www.mysite.com + input + 40 + + + URL + directorurl2 + Hint /images + input + 40 + + + Req Grace + grace + How many time varnish will keep cached objects for this director. HINT 60s, 30m, 1h
Use 0s grace time to force no cache.]]>
+ input + 5 +
+ + Additions options + customapping + Paste your custom varnish code for this host/url. + textarea + 70 + 3 + base64 + + + Backendlist + Backendlist + listtopic + Backend Settings + + + Algorithms + directortype + Choose how varnish will balance clientes.]]> + select + + + + + + + + + Backend + Backend + rowhelper + + + Backend + backendname + Enter the URL that will be mapped to this lb_directors. + + backendname + backendname + select_source + + + Weight + weight + Enter the weight of this backend. + input + + + + + FailoverSettings + FailoverSettings + listtopic + Failover Settings + + + Failover Director + failover + Select a Director for failover or choose same director to do not configure it. + + directorname + directorname + select_source + +
+ + + + sync_package_varnish(); + create_varnish_rcd_file(); + varnish_start(); + + + sync_package_varnish(); + create_varnish_rcd_file(); + varnish_start(); + + + varnish_lb_directors_post_validate($_POST, &$input_errors); + +
\ No newline at end of file diff --git a/config/varnish3/varnish_settings.xml b/config/varnish3/varnish_settings.xml new file mode 100644 index 00000000..38c68a03 --- /dev/null +++ b/config/varnish3/varnish_settings.xml @@ -0,0 +1,290 @@ + + + + + + + Copyright (C) 2011 Marcello Coutinho + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. + */ +/* ========================================================================== */ + ]]> + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + varnishsettings + 0.0.6 + Varnish Settings + pkg_edit.php?xml=varnish_settings.xml&id=0 + /usr/local/pkg/varnish.inc + + + Backends + /pkg.php?xml=varnish_backends.xml + + + Settings + /pkg_edit.php?xml=varnish_settings.xml&id=0 + + + + Custom VCL + /pkg_edit.php?xml=varnish_custom_vcl.xml&id=0 + + + LB Directors + /pkg.php?xml=varnish_lb_directors.xml + + + XMLRPC Sync + /pkg_edit.php?xml=varnish_sync.xml&id=0 + + + View Configuration + /varnish_view_config.php + + + VarnishSTAT + /varnishstat.php + + + + + Listening + Listening + listtopic + Daemon options + + + Enable Varnish + enablevarnish + checkbox + + + Listening port + listeningport +
Before listening on port 80, you must check 'Disable webConfigurator redirect rule' in system advanced options.]]>
+ input +
+ + Managment interface + managment + Enter the Ip address and port for managment interface. HINT 127.0.0.1:81 + input + + + Advanced startup options + advancedstartup + Enter advanced startup options to include in rc.d file + textarea + 70 + 2 + base64 + + + StorageTypeLT + StorageTypeLT + listtopic + Storage type + + + Storage type + storagetype + Select which storage type you would like to use. + select + + + + + + + Cache storage size in megabytes + storagesize + Enter the size of the varnish cache in megabytes. HINT: 1024 == 1 Gigabyte + input + + + + WorkerThreadLT + WorkerThreadLT + listtopic + Worker thread configuration + + + Minimum worker threads + minworkers + Enter the minimum number of varnish worker threads. + input + + + Maximum worker threads + maxworkers + Enter the maximum number of varnish worker threads. + input + + + Worker thread timeout + timeoutworkers + Enter the timeout time for the worker threads. + input + + + BasicVCLLT + BasicVCLLT + listtopic + General VCL Settings + + + Client identity method + clientbalance + + select + + + + + + + + Don't cache posts + postcache + Don't cache posts + checkbox + + + streaming support + streaming + Enable streaming support + checkbox + + + Session Cache + sessioncache + Never Don't cache anything with JSESSION,PHPSESSID set.
+ Per User This causes a lookup for a given object to include the Cookie.

+ Note: no-cache no-store private header directives are respected by default.]]>
+ select + + + + +
+ + Cache static content + staticache + + Always Cache all static content. When cookies are present, varnish will unset it from object before caching.
+ Never Do not cache static content.
+ When possible Cache only static content and per user objects when session cache is set to it.
]]>
+ select + + + + + +
+ + Fix gzip compression + fixgzip + Ignore compression for images files and unknow compression algorithm + checkbox + + + Be RFC2616 compliant + rfc2616 + Ignore request different form GET HEAD PUT POST TRACE OPTIONS DELETE + checkbox + + + Foward client IP + xforward + Select how to forward clients real IP. + select + + + + + + + + + Fetch Grace + grace + How many time varnish will keep cached objects. HINT 60s, 30m, 1h]]> + input + 5 + + + ErrorVCLLT + ErrorVCLLT + listtopic + Error Settings + + + Retries + restarts + How many times restart loop until Error messages.]]> + select + + + + + + + + + + Saintmode + saint + How many time varnish will send cached objects from a down backend to client. HINT 60s, 30m, 1h]]> + input + 5 + + + Custom Html error message + htmlerror + Paste your custom html error page code here. + textarea + 70 + 10 + base64 + +
+ + sync_package_varnish(); + create_varnish_rcd_file(); + varnish_start(); + + + varnish_settings_post_validate($_POST, &$input_errors); + +
\ No newline at end of file diff --git a/config/varnish3/varnish_sync.xml b/config/varnish3/varnish_sync.xml new file mode 100644 index 00000000..02434389 --- /dev/null +++ b/config/varnish3/varnish_sync.xml @@ -0,0 +1,120 @@ + + + + + + + Copyright (C) 2011 Marcello Coutinho + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. + */ +/* ========================================================================== */ + ]]> + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + varnishsync + 1.1 + Varnish: Manual Sync + /usr/local/pkg/varnish.inc + + + Backends + /pkg.php?xml=varnish_backends.xml + + + Settings + /pkg_edit.php?xml=varnish_settings.xml&id=0 + + + Custom VCL + /pkg_edit.php?xml=varnish_custom_vcl.xml&id=0 + + + LB Directors + /pkg.php?xml=varnish_lb_directors.xml + + + XMLRPC Sync + /pkg_edit.php?xml=varnish_sync.xml&id=0 + + + + View Configuration + /varnish_view_config.php + + + VarnishSTAT + /varnishstat.php + + + installedpackages->package->varnish + + + listtopic + temp + Enable Varnish configuration sync + + + Automatically sync Varnish configuration changes + synconchanges + pfSense will automatically sync changes to the hosts defined below. + checkbox + + + Remote Server + none + rowhelper + + + IP Address + ipaddress + IP Address of remote server + input + 20 + + + Password + password + Password for remote server. + password + 20 + + + + + + varnish_sync_on_changes(); + + + unset($_POST['temp']); + + \ No newline at end of file diff --git a/config/varnish3/varnish_view_config.php b/config/varnish3/varnish_view_config.php new file mode 100644 index 00000000..2e449b51 --- /dev/null +++ b/config/varnish3/varnish_view_config.php @@ -0,0 +1,89 @@ + + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. +*/ + +require("guiconfig.inc"); + +$pfSversion = str_replace("\n", "", file_get_contents("/etc/version")); +if(strstr($pfSversion, "1.2")) + $one_two = true; + +$pgtitle = "Varnish: View Configuration"; +include("head.inc"); + +?> + + + + +

+ + + + +
+ +
+ + + + + +
+ +
+
+ + + + +
+ +
+
+
+
+
+ + + diff --git a/config/varnish3/varnishstat.php b/config/varnish3/varnishstat.php new file mode 100644 index 00000000..6374525a --- /dev/null +++ b/config/varnish3/varnishstat.php @@ -0,0 +1,111 @@ + + 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. + + THIS SOFTWARE IS PROVIDED ``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 + AUTHOR 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. +*/ + +require("guiconfig.inc"); + +if($_REQUEST['getactivity']) { + $varnishstatlogs = `varnishstat -1`; + echo "

VarnishSTAT Server logs as of " . date("D M j G:i:s T Y") . "

"; + echo $varnishstatlogs; + exit; +} + +$pfSversion = str_replace("\n", "", file_get_contents("/etc/version")); +if(strstr($pfSversion, "1.2")) + $one_two = true; + +$pgtitle = "Varnish: VarnishSTAT"; +include("head.inc"); + +?> + + + + + + +

+ + + + +
+ + + + + +
+ +
+
+ + + + +
+
+
+
One moment please, loading VarnishSTAT...
+
+
+
+
+
+ + + + -- cgit v1.2.3