+elsif ($qossettings{'ACTION'} eq $Lang::tr{'template'} )
+{
+ if (($qossettings{'OUT_SPD'} > 0) && ($qossettings{'INC_SPD'} > 0)) {
+ my @UP;
+ #print "UP<br />";
+ for(my $i = 1; $i <= 10; $i++) {
+ $UP[$i] = int($qossettings{'OUT_SPD'} / $i );
+ #print $i."=".$UP[$i]." ";
+ }
+ my @DOWN;
+ #print "<br /><br />Down<br />";
+ for(my $i = 1; $i <= 20; $i++) {
+ $DOWN[$i] = int($qossettings{'INC_SPD'} / $i);
+ #print $i."=".$DOWN[$i]." ";
+ }
+ open( FILE, "> $classfile" ) or die "Unable to write $classfile";
+ print FILE <<END
+imq0;200;1;$DOWN[10];$DOWN[1];;;8;VoIP;
+imq0;203;4;$DOWN[20];$DOWN[1];;;0;VPN;
+imq0;204;5;$DOWN[20];$DOWN[1];;;8;Webtraffic;
+imq0;210;6;1;$DOWN[1];;;0;Default;
+imq0;220;7;1;$DOWN[1];;;1;P2P;
+$qossettings{'RED_DEV'};101;1;$UP[2];$UP[1];;;8;ACKs;
+$qossettings{'RED_DEV'};102;2;$UP[3];$UP[1];;;8;VoIP;
+$qossettings{'RED_DEV'};104;5;$UP[10];$UP[1];;;8;Webtraffic;
+$qossettings{'RED_DEV'};110;6;1;$UP[1];;;0;Default;
+$qossettings{'RED_DEV'};120;7;1;$UP[1];;;1;P2P;
+$qossettings{'RED_DEV'};103;4;$UP[2];$UP[1];;;2;VPN;
+END
+;
+ close FILE;
+ open( FILE, "> $level7file" ) or die "Unable to write $level7file";
+ print FILE <<END
+102;$qossettings{'RED_DEV'};dns;;;
+102;$qossettings{'RED_DEV'};rtp;;;
+102;$qossettings{'RED_DEV'};skypetoskype;;;
+103;$qossettings{'RED_DEV'};ssh;;;
+103;$qossettings{'RED_DEV'};rdp;;;
+104;$qossettings{'RED_DEV'};http;;;
+104;$qossettings{'RED_DEV'};ssl;;;
+104;$qossettings{'RED_DEV'};pop3;;;
+120;$qossettings{'RED_DEV'};applejuice;;;
+120;$qossettings{'RED_DEV'};bittorrent;;;
+200;imq0;rtp;;;
+200;imq0;skypetoskype;;;
+203;imq0;ssh;;;
+203;imq0;rdp;;;
+204;imq0;http;;;
+204;imq0;pop3;;;
+204;imq0;ssl;;;
+220;imq0;applejuice;;;
+220;imq0;bittorrent;;;
+END
+;
+ close FILE;
+ open( FILE, "> $portfile" ) or die "Unable to write $portfile";
+ print FILE <<END
+101;$qossettings{'RED_DEV'};icmp;;;;;
+102;$qossettings{'RED_DEV'};tcp;;;;53;
+102;$qossettings{'RED_DEV'};udp;;;;53;
+103;$qossettings{'RED_DEV'};esp;;;;;
+103;$qossettings{'RED_DEV'};tcp;;1194;;;
+103;$qossettings{'RED_DEV'};udp;;1194;;;
+103;$qossettings{'RED_DEV'};tcp;;;;1194;
+103;$qossettings{'RED_DEV'};udp;;;;1194;
+103;$qossettings{'RED_DEV'};udp;;4500;;4500;
+103;$qossettings{'RED_DEV'};udp;;500;;500;
+104;$qossettings{'RED_DEV'};tcp;;;;80;
+200;imq0;icmp;;;;;
+203;imq0;esp;;;;;
+203;imq0;tcp;;;;1194;
+203;imq0;udp;;;;1194;
+203;imq0;tcp;;1194;;;
+203;imq0;udp;;1194;;;
+203;imq0;udp;;4500;;4500;
+203;imq0;udp;;500;;500;
+204;imq0;tcp;;80;;;
+END
+;
+ close FILE;
+ if ($qossettings{'DEF_INC_SPD'} eq '') {
+ $qossettings{'DEF_INC_SPD'} = int($qossettings{'INC_SPD'} * 0.9);
+ }
+ if ($qossettings{'DEF_OUT_SPD'} eq '') {
+ $qossettings{'DEF_OUT_SPD'} = int($qossettings{'OUT_SPD'} * 0.9);
+ }
+ $qossettings{'DEFCLASS_INC'} = "210";
+ $qossettings{'DEFCLASS_OUT'} = "110";
+ $qossettings{'ACK'} ="101";
+ $qossettings{'ENABLED'} = 'on';
+ &General::writehash("${General::swroot}/qos/settings", \%qossettings);
+ system("/usr/local/bin/qosctrl generate >/dev/null 2>&1");
+ system("/usr/bin/touch /var/ipfire/qos/enable");
+ system("/usr/local/bin/qosctrl start >/dev/null 2>&1");
+ system("logger -t ipfire 'QoS started'");
+ } else {
+ $message = $Lang::tr{'qos enter bandwidths'};
+ }
+}
+elsif ($qossettings{'ACTION'} eq $Lang::tr{'status'} )