========
vmod_std
========

-----------------------
Varnish Standard Module
-----------------------

:Author: Per Buer
:Date:   2011-05-19
:Version: 1.0
:Manual section: 3


SYNOPSIS
========

import std

DESCRIPTION
===========

The Varnish standard module contains useful, generic function that
don't quite fit in the VCL core, but are still considered very useful
to a broad audience.

FUNCTIONS
=========

toupper
-------

Prototype
	toupper(STRING s)
Return value
	String
Description
	Converts the string *s* to upper case.
Example
	set beresp.http.x-scream = std.toupper("yes!");

tolower
-------
Prototype
	tolower(STRING s)
Return value
	String
Description
	Converts the string *s* to lower case.
Example
	set beresp.http.x-nice = std.tolower("VerY");

set_ip_tos
----------
Prototype
	set_ip_tos(INT i)
Return value
	Void
Description
	Sets the Type-of-Service flag for the current session. Please
	note that the TOS flag is not removed by the end of the
	request so probably want to set it on every request should you
	utilize it.
Example
	| if (req.url ~ ^/slow/) {
	|    std.set_up_tos(0x0);
	| }

random
------
Prototype
	random(REAL a, REAL b)
Return value
	Real
Description
	Returns a random REAL number between *a* and *b*.
Example
	set beresp.http.x-random-number = std.random(1, 100);

log
---
Prototype
	log(STRING string)
Return value
	Void
Description
	Logs *string* to the shared memory log.
Example
	std.log("Something fishy is going on with the vhost " + req.host);

syslog
------
Prototype
	syslog(INT priority, STRING string)
Return value
	Void
Description
	Logs *string* to syslog marked with *priority*.
Example
	std.syslog( LOG_USER|LOG_ALERT, "There is serious troble");

fileread
--------
Prototype
	fileread(STRING filename)
Return value
	String
Description
	Reads a file and returns a string with the content. Please
	note that it is not recommended to send variables to this
	function the caching in the function doesn't take this into
	account. Also, files are not re-read.
Example
	set beresp.http.x-served-by = std.fileread("/etc/hostname");

duration
--------
Prototype
	duration(STRING s, DURATION fallback)
Return value
	Duration
Description
	Converts the string *s* to seconds. *s* can be quantified with
	the usual s (seconds), m (minutes), h (hours), d (days) and w
	(weeks) units. If *s* fails to parse, *fallback* will be used.
Example
	set beresp.ttl = std.duration("1w", 3600s);

integer
--------
Prototype
	integer(STRING s, INT fallback)
Return value
	Int
Description
	Converts the string *s* to an integer.  If *s* fails to parse,
	*fallback* will be used
Example
	if (std.integer(beresp.http.x-foo, 0) > 5) { ... }

collect
-------
Prototype
	collect(HEADER header)
Return value
	Void
Description
	Collapses the header, joining the headers into one.
Example
	std.collect(req.http.cookie);
	This will collapse several Cookie: headers into one, long
	cookie header.

	
SEE ALSO
========

* vcl(7)
* varnishd(1)

HISTORY
=======

The Varnish standard module was released along with Varnish Cache 3.0.
This manual page was written by Per Buer with help from Martin Blix
Grydeland.

COPYRIGHT
=========

This document is licensed under the same licence as Varnish
itself. See LICENCE for details.

* Copyright (c) 2011 Varnish Software
