smeserver-qos/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/qos.pm

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;