107 lines
2.2 KiB
Perl
107 lines
2.2 KiB
Perl
#!/usr/bin/perl -w
|
|
|
|
package esmith::FormMagick::Panel::qos;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use esmith::FormMagick;
|
|
use esmith::ConfigDB;
|
|
|
|
our @ISA = qw(esmith::FormMagick Exporter);
|
|
|
|
our @EXPORT = qw();
|
|
|
|
our $VERSION = sprintf '%d.%03d', q$Revision: 2.00 $ =~ /: (\d+).(\d+)/;
|
|
|
|
our $db = esmith::ConfigDB->open();
|
|
|
|
sub new
|
|
{
|
|
shift;
|
|
my $self = esmith::FormMagick->new();
|
|
$self->{calling_package} = (caller) [0];
|
|
bless $self;
|
|
return $self;
|
|
}
|
|
|
|
sub get_prop{
|
|
my ($self,$prop) = @_;
|
|
return $db->get_prop("qos", $prop);
|
|
}
|
|
|
|
sub get_list{
|
|
my ($self,$prop) = @_;
|
|
my $values = get_prop($self,$prop);
|
|
$values =~ s/[;,]/\n/g;
|
|
return $values;
|
|
}
|
|
|
|
sub print_section_bar{
|
|
my ($fm) = @_;
|
|
print " <tr>\n <td colspan='2'>\n";
|
|
print "<hr class=\"sectionbar\"/>\n";
|
|
return undef;
|
|
}
|
|
|
|
sub print_serveronly_msg{
|
|
my $self = shift;
|
|
my $mode = $db->get_value('SystemMode');
|
|
my $msg = '';
|
|
if ($mode eq 'serveronly'){
|
|
$msg = $self->localise('IN_SERVERONLY_MODE');
|
|
}
|
|
return $msg;
|
|
}
|
|
|
|
sub zero_or_positive{
|
|
my $self = shift;
|
|
my $val = shift || 0;
|
|
|
|
return 'OK' if($val =~ /^\d+$/ and $val >= 0);
|
|
return $self->localise('VALUE_ZERO_OR_POSITIVE');
|
|
}
|
|
|
|
sub port_range{
|
|
my $self = shift;
|
|
my $val = shift || 0;
|
|
my $RePort = qr/\d{1,4}|[0-6]\d{4}/;
|
|
my $RePortRange = qr/$RePort(-$RePort)?/;
|
|
if ($val =~ m/^$RePortRange(,$RePortRange)*$/) {
|
|
return 'OK';
|
|
}
|
|
else {
|
|
return $self->localise('INVALID_PORT_RANGE');
|
|
}
|
|
}
|
|
|
|
sub host_ip{
|
|
my $self = shift;
|
|
my $val = shift || '';
|
|
my $ReIpNum = qr{([01]?\d\d?|2[0-4]\d|25[0-5])};
|
|
my $ReIpAddr = qr{($ReIpNum\.$ReIpNum\.$ReIpNum\.$ReIpNum)};
|
|
if (($val =~ m/^$ReIpAddr(,$ReIpAddr)*$/) || ($val eq '')) {
|
|
return 'OK';
|
|
}
|
|
else {
|
|
return $self->localise('INVALID_HOST_IP');
|
|
}
|
|
}
|
|
|
|
sub change_settings {
|
|
my $fm = shift;
|
|
my $q = $fm->{'cgi'};
|
|
|
|
foreach (qw/status UDPPrio TCPPrio HostsPrio UpLink DownLink/){
|
|
$db->set_prop('qos', "$_", $q->param("$_") ||'');
|
|
}
|
|
|
|
unless (system ("/sbin/e-smith/signal-event qos-update") == 0 ){
|
|
$fm->error('ERROR');
|
|
}
|
|
|
|
$fm->success('SUCCESS');
|
|
}
|
|
|
|
1;
|