profile picture

Michael Stapelberg

Social Pizza-Bestellung war s… (2010)

published 2010-11-11, last modified 2018-03-23
Edit Icon

Social Pizza-Bestellung war schon lange eine Funktionalität, die wir auf dem Chaostreff haben wollten. Das bedeutet, dass jeder am eigenen Rechner sich seine Wunschpizza klicken kann und wir dann genau eine Bestellung abschicken. Aufgrund mangelnder Computerfähigkeiten der Jungs bei (bzw. hinter) Hallo Pizza (Bestellungen gehen per Fax ein und werden dann abgetippt!), kommt dieses Feature natürlich nicht.

Daher sind wir das mal selbst angegangen. Unsere Lösung besteht aus einem Proxy-Server auf unserem Router, der Requests an hallopizza.de weiterleitet und dabei das Cookie ersetzt. Wir haben dazu zwei vhosts: Einer mit hübschem DNS-Namen, der dann auf den anderen mit korrekter URL weiterleitet (damit man nicht auf der Eingangsseite landet).

<VirtualHost 172.22.37.2:80>
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        RewriteEngine on
        RewriteRule / http://172.22.37.1/bestellen/ [L]
</VirtualHost>

Der andere vhost ist dann Proxy-Server für hallopizza.de. Dabei gilt es zu beachten, dass Antworten von hallopizza.de üblicherweise komprimiert sind (gzip), d.h. via SetOutputFilter ausgepackt werden müssen. Anschließend ersetzen wir die URL http://hallopizza.de/ durch http://172.22.37.1/ und fügen ein Cookie hinzu (das holt man sich vorher von hallopizza.de, z.B. via wget):

<VirtualHost 172.22.37.1:80>
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        ProxyPass / http://hallopizza.de/
        ProxyPassReverse / http://hallopizza.de/

        AddOutputFilterByType SUBSTITUTE text/html
        Substitute "s|http://hallopizza.de|http://172.22.37.1/|in"

        SetOutputFilter INFLATE;substitute;DEFLATE
        RequestHeader set Cookie "hallopizza=blargh"
</VirtualHost>

Man sollte darauf achten, dass man nicht gleichzeitig im Warenkorb rumklickt, hallopizza.de verträgt das nicht so gut. Wenn man das aber nacheinander macht, funktioniert es einwandfrei.

I run a blog since 2005, spreading knowledge and experience for almost 20 years! :)

If you want to support my work, you can buy me a coffee.

Thank you for your support! ❤️