package FS::svc_acct;
use strict;
-use vars qw( @ISA $DEBUG $me $noexport_hack $conf
+use vars qw( @ISA $DEBUG $me $conf
$dir_prefix @shells $usernamemin
$usernamemax $passwordmin $passwordmax
$username_ampersand $username_letter $username_letterfirst
$username_uppercase
$welcome_template $welcome_from $welcome_subject $welcome_mimetype
$smtpmachine
- $radius_password
+ $radius_password $radius_ip
$dirhash
@saltset @pw_set );
use Carp;
$welcome_mimetype = $conf->config('welcome_email-mimetype') || 'text/plain';
} else {
$welcome_template = '';
+ $welcome_from = '';
+ $welcome_subject = '';
+ $welcome_mimetype = '';
}
$smtpmachine = $conf->config('smtpmachine');
$radius_password = $conf->config('radius-password') || 'Password';
+ $radius_ip = $conf->config('radius-ip') || 'Framed-IP-Address';
};
@saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
(TODOC: L<FS::queue> and L<freeside-queued>)
-(TODOC: new exports! $noexport_hack)
+(TODOC: new exports!)
=cut
# qsearch('export_svc', { 'exportnum' => $part_export->exportnum });
#}
- my $nodomain = $exports->{$part_export->exporttype}{'nodomain'};
+ #my $nodomain = $exports->{$part_export->exporttype}{'nodomain'};
+ #silly kludge to avoid uninitialized value errors
+ my $nodomain = exists( $exports->{$part_export->exporttype}{'nodomain'} )
+ ? $exports->{$part_export->exporttype}{'nodomain'}
+ : '';
if ( $nodomain =~ /^Y/i ) {
$conflict_user_svcpart{$_} = $part_export->exportnum
foreach @svcparts;
'svcnum' => $self->svcnum,
'job' => 'FS::svc_acct::send_email'
};
- warn "attempting to queue email to $to";
my $error = $wqueue->insert(
'to' => $to,
'from' => $welcome_from,
);
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return "queuing welcome email: $error";
+ return "error queuing welcome email: $error";
}
foreach my $jobnum ( @jobnums ) {
my $error = $wqueue->depend_insert($jobnum);
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return "queuing welcome email job dependancy: $error";
+ return "error queuing welcome email job dependancy: $error";
}
}
The corresponding FS::cust_svc record will be deleted as well.
-(TODOC: new exports! $noexport_hack)
+(TODOC: new exports!)
=cut
Called by the suspend method of FS::cust_pkg (see L<FS::cust_pkg>).
+Calls any export-specific suspend hooks.
+
=cut
sub suspend {
Called by the unsuspend method of FS::cust_pkg (see L<FS::cust_pkg>).
+Calls any export-specific unsuspend hooks.
+
=cut
sub unsuspend {
}
my $error = $self->ut_numbern('svcnum')
- || $self->ut_number('domsvc')
+ #|| $self->ut_number('domsvc')
+ || $self->ut_foreign_key('domsvc', 'svc_domain', 'svcnum' )
|| $self->ut_textn('sec_phrase')
;
return $error if $error;
$recref->{quota} = $1;
unless ( $part_svc->part_svc_column('slipip')->columnflag eq 'F' ) {
- unless ( $recref->{slipip} eq '0e0' ) {
+ if ( $recref->{slipip} eq '' ) {
+ $recref->{slipip} = '';
+ } elsif ( $recref->{slipip} eq '0e0' ) {
+ $recref->{slipip} = '0e0';
+ } else {
$recref->{slipip} =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/
or return "Illegal slipip: ". $self->slipip;
$recref->{slipip} = $1;
- } else {
- $recref->{slipip} = '0e0';
}
}
( $FS::raddb::attrib{lc($attrib)}, $self->getfield($column) );
} grep { /^radius_/ && $self->getfield($_) } fields( $self->table );
if ( $self->slipip && $self->slipip ne '0e0' ) {
- $reply{'Framed-IP-Address'} = $self->slipip;
+ $reply{$radius_ip} = $self->slipip;
}
%reply;
}
Returns the FS::cust_svc record for this account (see L<FS::cust_svc>).
+=cut
+
sub cust_svc {
my $self = shift;
qsearchs( 'cust_svc', { 'svcnum' => $self->svcnum } );
=item send_email
+This is the FS::svc_acct job-queue-able version. It still uses
+FS::Misc::send_email under-the-hood.
+
=cut
sub send_email {
my %opt = @_;
- use Date::Format;
- use Mail::Internet 1.44;
- use Mail::Header;
+ eval "use FS::Misc qw(send_email)";
+ die $@ if $@;
$opt{mimetype} ||= 'text/plain';
$opt{mimetype} .= '; charset="iso-8859-1"' unless $opt{mimetype} =~ /charset/;
- $ENV{MAILADDRESS} = $opt{from};
- my $header = new Mail::Header ( [
- "From: $opt{from}",
- "To: $opt{to}",
- "Sender: $opt{from}",
- "Reply-To: $opt{from}",
- "Date: ". time2str("%a, %d %b %Y %X %z", time),
- "Subject: $opt{subject}",
- "Content-Type: $opt{mimetype}",
- ] );
- my $message = new Mail::Internet (
- 'Header' => $header,
- 'Body' => [ map "$_\n", split("\n", $opt{body}) ],
+ my $error = send_email(
+ 'from' => $opt{from},
+ 'to' => $opt{to},
+ 'subject' => $opt{subject},
+ 'content-type' => $opt{mimetype},
+ 'body' => [ map "$_\n", split("\n", $opt{body}) ],
);
- $!=0;
- $message->smtpsend( Host => $smtpmachine )
- or $message->smtpsend( Host => $smtpmachine, Debug => 1 )
- or die "can't send email to $opt{to} via $smtpmachine with SMTP: $!";
+ die $error if $error;
}
=item check_and_rebuild_fuzzyfiles