projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert "RT# 39340 - fixed skin_info caching issue"
[freeside.git]
/
FS
/
FS
/
svc_acct.pm
diff --git
a/FS/FS/svc_acct.pm
b/FS/FS/svc_acct.pm
index
6bb67af
..
1118c0d
100644
(file)
--- a/
FS/FS/svc_acct.pm
+++ b/
FS/FS/svc_acct.pm
@@
-67,11
+67,11
@@
FS::UID->install_callback( sub {
@shells = $conf->config('shells');
$usernamemin = $conf->config('usernamemin') || 2;
$usernamemax = $conf->config('usernamemax');
@shells = $conf->config('shells');
$usernamemin = $conf->config('usernamemin') || 2;
$usernamemax = $conf->config('usernamemax');
- $passwordmin = $conf->config('passwordmin');
# || 6;
- #blank->
6
, keep 0
+ $passwordmin = $conf->config('passwordmin');
+ #blank->
8
, keep 0
$passwordmin = ( defined($passwordmin) && $passwordmin =~ /\d+/ )
? $passwordmin
$passwordmin = ( defined($passwordmin) && $passwordmin =~ /\d+/ )
? $passwordmin
- :
6
;
+ :
8
;
$passwordmax = $conf->config('passwordmax') || 12;
$username_letter = $conf->exists('username-letter');
$username_letterfirst = $conf->exists('username-letterfirst');
$passwordmax = $conf->config('passwordmax') || 12;
$username_letter = $conf->exists('username-letter');
$username_letterfirst = $conf->exists('username-letterfirst');
@@
-93,12
+93,11
@@
FS::UID->install_callback( sub {
$smtpmachine = $conf->config('smtpmachine');
$radius_password = $conf->config('radius-password') || 'Password';
$radius_ip = $conf->config('radius-ip') || 'Framed-IP-Address';
$smtpmachine = $conf->config('smtpmachine');
$radius_password = $conf->config('radius-password') || 'Password';
$radius_ip = $conf->config('radius-ip') || 'Framed-IP-Address';
- @pw_set =
( 'A'..'Z' ) if $conf->exists('password-generated-allcaps')
;
+ @pw_set =
FS::svc_acct->pw_set
;
}
);
@saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
}
);
@saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
-@pw_set = ( 'a'..'z', 'A'..'Z', '0'..'9', '(', ')', '#', '.', ',' );
sub _cache {
my $self = shift;
sub _cache {
my $self = shift;
@@
-317,6
+316,7
@@
sub table_info {
'domsvc' => {
label => 'Domain',
type => 'select',
'domsvc' => {
label => 'Domain',
type => 'select',
+ select_svc => 1,
select_table => 'svc_domain',
select_key => 'svcnum',
select_label => 'domain',
select_table => 'svc_domain',
select_key => 'svcnum',
select_label => 'domain',
@@
-329,6
+329,15
@@
sub table_info {
disable_select => 1, #UI wonky, pry works otherwise
},
'sectornum' => 'Tower sector',
disable_select => 1, #UI wonky, pry works otherwise
},
'sectornum' => 'Tower sector',
+ 'routernum' => 'Router/block',
+ 'blocknum' => {
+ 'label' => 'Address block',
+ 'type' => 'select',
+ 'select_table' => 'addr_block',
+ 'select_key' => 'blocknum',
+ 'select_label' => 'cidr',
+ 'disable_inventory' => 1,
+ },
'usergroup' => {
label => 'RADIUS groups',
type => 'select-radius_group.html',
'usergroup' => {
label => 'RADIUS groups',
type => 'select-radius_group.html',
@@
-341,7
+350,7
@@
sub table_info {
type => 'text',
disable_inventory => 1,
disable_select => 1,
type => 'text',
disable_inventory => 1,
disable_select => 1,
- disable_part_svc_column => 1,
+
#
disable_part_svc_column => 1,
},
'upbytes' => { label => 'Upload',
type => 'text',
},
'upbytes' => { label => 'Upload',
type => 'text',
@@
-750,18
+759,6
@@
sub insert {
}
}
}
}
- #welcome email
- my @welcome_exclude_svcparts = $conf->config('svc_acct_welcome_exclude');
- unless ( grep { $_ eq $self->svcpart } @welcome_exclude_svcparts ) {
- my $error = '';
- my $msgnum = $conf->config('welcome_msgnum', $agentnum);
- if ( $msgnum ) {
- my $msg_template = qsearchs('msg_template', { msgnum => $msgnum });
- $error = $msg_template->send('cust_main' => $cust_main,
- 'object' => $self);
- #should this do something on error?
- }
- }
} # if $cust_pkg
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
} # if $cust_pkg
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
@@
-847,7
+844,19
@@
sub delete {
}
}
}
}
- my $error = $self->SUPER::delete; # usergroup here
+ foreach my $svc_phone (
+ qsearch( 'svc_phone', { 'forward_svcnum' => $self->svcnum })
+ ) {
+ $svc_phone->set('forward_svcnum', '');
+ my $error = $svc_phone->replace;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+ }
+
+ my $error = $self->delete_password_history
+ || $self->SUPER::delete; # usergroup here
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;
@@
-1323,8
+1332,7
@@
sub check {
$recref->{_password} = $1;
} else {
return gettext('illegal_password'). " $passwordmin-$passwordmax ".
$recref->{_password} = $1;
} else {
return gettext('illegal_password'). " $passwordmin-$passwordmax ".
- FS::Msgcat::_gettext('illegal_password_characters').
- ": ". $recref->{_password};
+ FS::Msgcat::_gettext('illegal_password_characters');
}
if ( $password_noampersand ) {
}
if ( $password_noampersand ) {
@@
-1972,6
+1980,9
@@
sub _op_usage {
return '' unless $amount;
return '' unless $amount;
+ return ''
+ if $self->cust_svc->part_svc->part_svc_column($column)->columnflag eq 'F';
+
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
local $SIG{QUIT} = 'IGNORE';
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
local $SIG{QUIT} = 'IGNORE';
@@
-2307,8
+2318,8
@@
sub last_login_text {
Returns a paged search (L<FS::PagedSearch>) for Call Detail Records
associated with this service. For svc_acct, "associated with" means that
Returns a paged search (L<FS::PagedSearch>) for Call Detail Records
associated with this service. For svc_acct, "associated with" means that
-either the "src" or the "charged_party" field of the CDR matches
the
-
"username" field of the service
.
+either the "src" or the "charged_party" field of the CDR matches
either
+
the "username" field of the service or the username@domain label
.
=cut
=cut
@@
-2319,6
+2330,7
@@
sub psearch_cdrs {
my @where;
my $did = dbh->quote($self->username);
my @where;
my $did = dbh->quote($self->username);
+ my $diddomain = dbh->quote($self->label);
my $prefix = $options{'default_prefix'} || ''; #convergent.au '+61'
my $prefixdid = dbh->quote($prefix . $self->username);
my $prefix = $options{'default_prefix'} || ''; #convergent.au '+61'
my $prefixdid = dbh->quote($prefix . $self->username);
@@
-2334,12
+2346,16
@@
sub psearch_cdrs {
if (!$options{'disable_charged_party'}) {
push @orwhere,
"charged_party = $did",
if (!$options{'disable_charged_party'}) {
push @orwhere,
"charged_party = $did",
- "charged_party = $prefixdid";
+ "charged_party = $prefixdid",
+ "charged_party = $diddomain"
+ ;
}
if (!$options{'disable_src'}) {
push @orwhere,
"src = $did AND charged_party IS NULL",
}
if (!$options{'disable_src'}) {
push @orwhere,
"src = $did AND charged_party IS NULL",
- "src = $prefixdid AND charged_party IS NULL";
+ "src = $prefixdid AND charged_party IS NULL",
+ "src = $diddomain AND charged_party IS NULL"
+ ;
}
push @where, '(' . join(' OR ', @orwhere) . ')';
}
push @where, '(' . join(' OR ', @orwhere) . ')';
@@
-2538,6
+2554,11
@@
sub crypt_password {
);
} elsif ( $encryption eq 'md5' ) {
return unix_md5_crypt( $self->_password );
);
} elsif ( $encryption eq 'md5' ) {
return unix_md5_crypt( $self->_password );
+ } elsif ( $encryption eq 'sha512' ) {
+ return crypt(
+ $self->_password,
+ '$6$rounds=15420$'. join('', map $saltset[int(rand(64))], (1..16) )
+ );
} elsif ( $encryption eq 'sha1_base64' ) { #for acct_sql
my $pass = sha1_base64( $self->_password );
$pass .= '=' x (4 - length($pass) % 4); #properly padded base64
} elsif ( $encryption eq 'sha1_base64' ) { #for acct_sql
my $pass = sha1_base64( $self->_password );
$pass .= '=' x (4 - length($pass) % 4); #properly padded base64