#!/usr/bin/perl
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see . #
# #
###############################################################################
use strict;
# enable only the following on debugging purpose
#use warnings;
#use CGI::Carp 'fatalsToBrowser';
require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
my %upnpsettings = ();
my %netsettings = ();
my $message = "";
my $errormessage = "";
my %selected= () ;
my %servicenames =('UPnP Daemon' => 'upnpd',);
my %color = ();
my %mainsettings = ();
&General::readhash("${General::swroot}/main/settings", \%mainsettings);
&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
&Header::showhttpheaders();
############################################################################################################################
############################################### Setzen von Standartwerten ##################################################
$upnpsettings{'DEBUGMODE'} = '3';
$upnpsettings{'FORWARDRULES'} = 'yes';
$upnpsettings{'DOWNSTREAM'} = '1048576';
$upnpsettings{'UPSTREAM'} = '131072';
$upnpsettings{'DESCRIPTION'} = 'gatedesc.xml';
$upnpsettings{'XML'} = '/etc/linuxigd';
$upnpsettings{'ENABLED'} = 'off';
$upnpsettings{'friendlyName'} = 'IPFire Gateway';
### Values that have to be initialized
$upnpsettings{'ACTION'} = '';
&General::readhash("${General::swroot}/upnp/settings", \%upnpsettings);
&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
&Header::getcgihash(\%upnpsettings);
&Header::openpage('UPnP', 1, '');
&Header::openbigbox('100%', 'left', '', $errormessage);
############################################################################################################################
################################################### Speichern der Config ###################################################
if ($upnpsettings{'ACTION'} eq $Lang::tr{'save'})
{
$upnpsettings{'DOWNSTREAM'} = $upnpsettings{'DOWNSTREAM'} * 1024;
$upnpsettings{'UPSTREAM'} = $upnpsettings{'UPSTREAM'} * 1024;
&General::writehash("${General::swroot}/upnp/settings", \%upnpsettings);
open (FILE, ">${General::swroot}/upnp/upnpd.conf") or die "Can't save the upnp config: $!";
flock (FILE, 2);
print FILE <$errormessage\n";
print " \n";
&Header::closebox();
}
############################################################################################################################
############################################################################################################################
&Header::openbox('100%', 'center', 'UPnP');
print <
END
;
if ( $message ne "" ) {print "
$message
";}
my $lines = 0;
my $key = '';
foreach $key (sort keys %servicenames)
{
print "
$key\n";
my $shortname = $servicenames{$key};
my $status = &isrunning($shortname);
print "$status\n";
$lines++;
}
print <
Alle Dienste:
END
;
&Header::closebox();
&Header::openbox('100%', 'center', 'Aktuell geoeffnete Ports');
my @output = qx(iptables -t nat -n -L PORTFW);
my ($outputline, $extip, $extport, $int);
my @output2;
print "