Provided by: varnish-modules_0.12.1-1build1_amd64
NAME
vmod_var - Variable support for Varnish VCL
SYNOPSIS
import var [from "path"] ; This VMOD implements basic variable support in VCL. It supports strings, integers and real numbers. There are methods to get and set each data type. Global variables have a lifespan that extends across requests and VCLs, for as long as the vmod is loaded. The remaining functions have PRIV_TASK lifespan and are local to a single request or backend request. Example: vcl 4.0; import var; backend default { .host = "192.0.2.11"; .port = "8080"; } sub vcl_recv { # Set and get some values. var.set("foo", "bar"); set req.http.x-foo = var.get("foo"); var.set_int("ten", 10); var.set_int("five", 5); set req.http.twenty = var.get_int("ten") + var.get_int("five") + 5; # VCL will use the first token to decide final data type. Headers are strings. # set req.http.X-lifetime = var.get_int("ten") + " seconds"; # Won't work. set req.http.X-lifetime = "" + var.get_int("ten") + " seconds"; # Works! var.set_duration("timedelta", 1m); # 60s set req.http.d1 = var.get_duration("timedelta"); var.set_ip("endpoint", client.ip); set req.http.x-client = var.get_ip("endpoint"); # Unset all non-global variables. var.clear(); # Demonstrate use of global variables as state flags. if (req.url ~ "/close$") { var.global_set("open", "no"); } else if (req.url ~ "/open$") { var.global_set("open", "yes"); } if (var.global_get("open") != "yes") { return (synth(200, "We are currently closed, sorry!")); } }
CONTENTS
• VOID set(PRIV_TASK, STRING, STRING) • STRING get(PRIV_TASK, STRING) • VOID global_set(STRING, STRING) • STRING global_get(STRING) • VOID set_int(PRIV_TASK, STRING, INT) • INT get_int(PRIV_TASK, STRING) • VOID set_string(PRIV_TASK, STRING, STRING) • STRING get_string(PRIV_TASK, STRING) • VOID set_real(PRIV_TASK, STRING, REAL) • REAL get_real(PRIV_TASK, STRING) • VOID set_duration(PRIV_TASK, STRING, DURATION) • DURATION get_duration(PRIV_TASK, STRING) • VOID set_ip(PRIV_TASK, STRING, IP) • IP get_ip(PRIV_TASK, STRING) • VOID clear(PRIV_TASK) set VOID set(PRIV_TASK, STRING key, STRING value) Set key to value. get STRING get(PRIV_TASK, STRING) Get key with data type STRING. If stored key is not a STRING an empty string is returned. global_set VOID global_set(STRING, STRING) global_get STRING global_get(STRING) set_int VOID set_int(PRIV_TASK, STRING key, INT value) Set key to value. get_int INT get_int(PRIV_TASK, STRING key) Get key with data type INT. If stored key is not an INT zero will be returned. set_string VOID set_string(PRIV_TASK, STRING key, STRING value) Identical to set(). get_string STRING get_string(PRIV_TASK, STRING key) Identical to get(). set_real VOID set_real(PRIV_TASK, STRING key, REAL value) Set key to value. get_real REAL get_real(PRIV_TASK, STRING key) Get key with data type REAL. If stored key is not a REAL zero will be returned. set_duration VOID set_duration(PRIV_TASK, STRING key, DURATION value) Set key to value. get_duration DURATION get_duration(PRIV_TASK, STRING key) Get key with data type DURATION. If stored key is not a DURATION zero will be returned. set_ip VOID set_ip(PRIV_TASK, STRING key, IP value) Set key to value. get_ip IP get_ip(PRIV_TASK, STRING key) Get key with data type IP. If stored key is not an IP null will be returned. clear VOID clear(PRIV_TASK) Clear all non-global variables. VMOD_VAR(3)