diff options
author | Mark Wells <mark@freeside.biz> | 2012-03-03 14:42:40 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2012-03-03 14:42:40 -0800 |
commit | 55a734433fe1625cecca50f85c6da3cecf7c8618 (patch) | |
tree | 656fd3e6cd6fff8996e96c5872d4714eac6aa363 /FS/FS/svc_hardware.pm | |
parent | 712864e9372891cc3773d01e546103c23c10ff03 (diff) |
option to validate MAC address in svc_hardware, #16266
Diffstat (limited to 'FS/FS/svc_hardware.pm')
-rw-r--r-- | FS/FS/svc_hardware.pm | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/FS/FS/svc_hardware.pm b/FS/FS/svc_hardware.pm index 4970b3e92..b4eb8ccfa 100644 --- a/FS/FS/svc_hardware.pm +++ b/FS/FS/svc_hardware.pm @@ -154,19 +154,25 @@ and replace methods. sub check { my $self = shift; + my $conf = FS::Conf->new; my $x = $self->setfixed; return $x unless ref $x; my $hw_addr = $self->getfield('hw_addr'); $hw_addr = join('', split(/\W/, $hw_addr)); + if ( $conf->exists('svc_hardware-check_mac_addr') ) { + $hw_addr = uc($hw_addr); + $hw_addr =~ /^[0-9A-F]{12}$/ + or return "Illegal (MAC address) ".$self->getfield('hw_addr'); + } $self->setfield('hw_addr', $hw_addr); my $error = $self->ut_numbern('svcnum') || $self->ut_foreign_key('typenum', 'hardware_type', 'typenum') || $self->ut_ip46n('ip_addr') - || $self->ut_hexn('hw_addr') + || $self->ut_alphan('hw_addr') || $self->ut_alphan('serial') || $self->ut_alphan('smartcard') || $self->ut_foreign_keyn('statusnum', 'hardware_status', 'statusnum') |