You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Template/Plugin/DeviceConfig.pm

59 lines
1.1 KiB

package NGCP::Panel::Template::Plugin::DeviceConfig;
use warnings;
use strict;
use parent 'Template::Plugin';
use Crypt::RC4;
sub new {
my ($class, $context) = @_;
# set error via base ::error()
# return $class->error("foo") if($foo)
bless {
_CONTEXT => $context,
}, $class;
}
sub innovaphone_pwdgen {
my ($self, $user, $pass, $plain) = @_;
my $key = $user;
my $pad = 16 - (length $user) % 16;
$key .= "\0" x $pad;
$key .= $pass;
$pad = 16 - (length $pass) % 16;
$key .= "\0" x $pad;
my $rc4 = Crypt::RC4->new($key);
my $cipher = $rc4->RC4($plain);
my $hexcipher = unpack("H*", $cipher);
return $hexcipher;
}
sub getValue {
my $self = shift;
foreach my $v(@_) {
return $v if $v;
}
return;
}
sub getPref {
my $self = shift;
my ($pref_name, $default_val) = @_;
my $preferences = $self->{_CONTEXT}->stash->get('preferences');
if ($preferences) {
foreach my $level (qw/device profile model/) {
my $v = $preferences->{device}->{$level}->{$pref_name};
next unless $v;
return $v;
}
}
return $default_val // '';
}
1;