Skip to content

Instantly share code, notes, and snippets.

Thijs Feryn ThijsFeryn

Block or report user

Report or block ThijsFeryn

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View edgestash-twig-extension.php
namespace App\EdgestashBundle;
use Symfony\Component\HttpFoundation\RequestStack;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;
class TwigExtension extends AbstractExtension
ThijsFeryn / edgestash-subscriber.php
Created Sep 2, 2019
edgestash negotiation in Symfony
View edgestash-subscriber.php
namespace App\EdgestashBundle\EventSubscriber;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class EdgestashSubscriber implements EventSubscriberInterface
ThijsFeryn / edgestash-synth-backend.vcl
Created Aug 5, 2019
edgestash through link headers & a synthesized JSON backend
View edgestash-synth-backend.vcl
vcl 4.1;
import cookieplus;
import edgestash;
import std;
import ykey;
import redis;
import synthbackend;
backend default {
.host = "origin";
View test-thijs2.vtc
varnishtest "Redis VMOD and strings containing NULL chars"
shell {
python - <<EOF
import base64
import redis
b64 = 'X3NmMl9hdHRyaWJ1dGVzfGE6Mjp7czo1OiJsaWtlZCI7YTowOnt9czoxNDoiX3NlY3VyaXR5X21haW4iO3M6OTAzOiJDOjc0OiJTeW1mb255XENvbXBvbmVudFxTZWN1cml0eVxDb3JlXEF1dGhlbnRpY2F0aW9uXFRva2VuXFVzZXJuYW1lUGFzc3dvcmRUb2tlbiI6ODE1OnthOjM6e2k6MDtOO2k6MTtzOjQ6Im1haW4iO2k6MjthOjQ6e2k6MDtPOjQxOiJTeW1mb255XENvbXBvbmVudFxTZWN1cml0eVxDb3JlXFVzZXJcVXNlciI6Nzp7czo1MToiAFN5bWZvbnlcQ29tcG9uZW50XFNlY3VyaXR5XENvcmVcVXNlclxVc2VyAHVzZXJuYW1lIjtzOjU6InRoaWpzIjtzOjUxOiIAU3ltZm9ueVxDb21wb25lbnRcU2VjdXJpdHlcQ29yZVxVc2VyXFVzZXIAcGFzc3dvcmQiO3M6NjA6IiQyeSQxMiQxaUVVNVJ0REZUQkptMGhocXpZR2NPamdSTFhXUGlPQjYzS2VFVVhNNXA5bFFLejlFeklUQyI7czo1MDoiAFN5bWZvbnlcQ29tcG9uZW50XFNlY3VyaXR5XENvcmVcVXNlclxVc2VyAGVuYWJsZWQiO2I6MTtzOjYwOiIAU3ltZm9ueVxDb21wb25lbnRcU2VjdXJpdHlcQ29yZVxVc2VyXFVzZXIAYWNjb3VudE5vbkV4cGlyZWQiO2I6MTtzOjY0OiIAU3ltZm9ueVxDb21wb25lbnRcU2VjdXJpdHlcQ29yZVxVc2VyXFVzZXIAY3JlZGVudGlhbHNOb25FeHBpcmVkIjtiOjE7czo1OToiAFN5bWZvbnlcQ29tcG9uZW50XFN
ThijsFeryn / varnishusage.go
Last active Jun 7, 2019
A Go script that retrieves the Varnish memory consumption and returns it via a RESTful API using GoJi
View varnishusage.go
package main
import (
ThijsFeryn /
Last active Feb 26, 2019
Thijs Feryn's bio

Thijs Feryn is a "technical evangelist" at Varnish Software, the company behind the Varnish Cache open source technology. His goal is to bring technology to the people and people to technology. He focuses on bridging the gap between code and infrastructure. Thijs is a published author at O'Reilly, he is also involved in many open source communities. He speaks, listens, writes, codes, teaches, blogs, vlogs, organizes and is above all very excited to speak at "your event name"

View start.php
public function start(Request $request, AuthenticationException $authException = null)
$jwtPayload = $this->getJwtPayload($request->cookies->get('token'));
if(isset($jwtPayload['sub'])) {
return new Response("Don't wanna to this, really. The actual protected page should show up instead");
return new RedirectResponse($this->router->generate('login'));
ThijsFeryn / wordpress.vcl
Created Jun 3, 2016
Typical Wordpress VCL for Varnish 4
View wordpress.vcl
vcl 4.0;
import std;
backend default {
.host = "";
.port = "8080";
.max_connections = 300;
.first_byte_timeout = 100s;
.connect_timeout = 10s;
View default.vcl
vcl 4.0;
import std;
backend default {
.host = "" ;
.port = "80";
acl purge {
ThijsFeryn / drupalcon_jwt_varnish.vcl
Created Sep 27, 2017
VCL file that describes my JWT implementation in Varnish for Drupal. Part of my DrupalCon Vienna 2017 presentation.
View drupalcon_jwt_varnish.vcl
vcl 4.0;
import std;
import var;
import cookie;
import digest;
acl internal {
You can’t perform that action at this time.