From b67aa7e32eddd8d67d53ef534a4803f1162f2cca Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Sat, 9 Nov 2013 12:04:10 -0800 Subject: [PATCH] add sip_passwordmin/max, RT#25239 --- FS/FS/Conf.pm | 15 +++++++++++++++ FS/FS/svc_phone.pm | 18 +++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index f042710df..fed5fb23e 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1616,6 +1616,21 @@ and customer address. Include units.', }, { + 'key' => 'sip_passwordmin', + 'section' => 'telephony', + 'description' => 'Minimum SIP password length (default 6)', + 'type' => 'text', + }, + + { + 'key' => 'sip_passwordmax', + 'section' => 'telephony', + 'description' => 'Maximum SIP password length (default 8) (don\'t set this over 12 if you need to import or export crypt() passwords)', + 'type' => 'text', + }, + + + { 'key' => 'password-noampersand', 'section' => 'password', 'description' => 'Disallow ampersands in passwords', diff --git a/FS/FS/svc_phone.pm b/FS/FS/svc_phone.pm index 097310b0b..79cd6fa3b 100644 --- a/FS/FS/svc_phone.pm +++ b/FS/FS/svc_phone.pm @@ -2,9 +2,12 @@ package FS::svc_phone; use strict; use base qw( FS::svc_Domain_Mixin FS::location_Mixin FS::svc_Common ); -use vars qw( $DEBUG $me @pw_set $conf $phone_name_max ); +use vars qw( $DEBUG $me @pw_set $conf $phone_name_max + $passwordmin $passwordmax + ); use Data::Dumper; use Scalar::Util qw( blessed ); +use List::Util qw( min ); use FS::Conf; use FS::Record qw( qsearch qsearchs dbh ); use FS::Msgcat qw(gettext); @@ -25,6 +28,8 @@ $DEBUG = 0; $FS::UID::callback{'FS::svc_acct'} = sub { $conf = new FS::Conf; $phone_name_max = $conf->config('svc_phone-phone_name-max_length'); + $passwordmin = $conf->config('sip_passwordmin') || 0; + $passwordmax = $conf->config('sip_passwordmax') || 80; }; =head1 NAME @@ -512,10 +517,17 @@ sub check { } } - unless ( length($self->sip_password) ) { # option for this? + if ( length($self->sip_password) ) { + + return "SIP password must be longer than $passwordmin characters" + if length($self->sip_password) < $passwordmin; + return "SIP password must be shorter than $passwordmax characters" + if length($self->sip_password) > $passwordmax; + + } else { # option for this? $self->sip_password( - join('', map $pw_set[ int(rand $#pw_set) ], (0..16) ) + join('', map $pw_set[ int(rand $#pw_set) ], (1..min($passwordmax,16)) ) ); } -- 2.11.0