#!/usr/bin/perl -w

# (C) 2011-09-19 Carsten Groß <squeezebox-feedback@siski.de>

# Skript um das "dyn-dns" auto-update der Fritz!Box als dynamischen 
# Firewall-konfigurator zu nutzen. Hierdurch kann die Firewall einfach 
# so angepasst, daß nur die dynamische IP Adresse des DSL Zugangs 
# freigeschaltet ist
# 
# Die Fritz!Box schickt einfach einen leeren request mit Basic-authentisierung 
# Aus dem Environment kann man sich die request-ip und den usernamen
# herauslesen. Dieser wird gespeichert um die Firewall zu konfigurieren. 

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $data_storage = "/var/run/squeezebox-firewall/ip-addr.conf"; 

open(FH, ">" .  $data_storage . "_tmp") || die "Cannot open configuration file for write: $!\n"; 

my $remote_addr = $ENV{'REMOTE_ADDR'}; 
my $remote_user = $ENV{'REMOTE_USER'}; 
my $local_addr = $ENV{'SERVER_ADDR'}; 

print FH "[config]\n";
print FH "remote-ip=" . $remote_addr . "\n";
print FH "remote-user=" . $remote_user . "\n";
print FH "local-ip=" . $local_addr . "\n"; 
close(FH); 

# Das brauchen wir, damit die Datei nie leer ist
rename $data_storage . "_tmp", $data_storage; 

print "Content-type: text/plain\n";
print "Content-Length: 0\n\n"; 
exit(0);
