#push @FS::svc_acct::shells, qw(/bin/sync /sbin/shutdown /bin/halt /sbin/halt); #others?
$FS::svc_Common::noexport_hack = 1;
+$FS::svc_domain::whois_hack = 1;
###
die "No services with svcdb svc_domain!\n" unless %domain_part_svc;
-print "\n\n", &menu_svc, "\n", <<END;
+print "\n\n", &menu_domain_svc, "\n", <<END;
Enter part number for domains.
END
my $domain_svcpart = &getdomainpart;
my $db_user = &getvalue("\n\nEnter the database user:");
my $db_pass = &getvalue("\n\nEnter the database password:");
+sub menu_svc {
+ ( join "\n", map "$_: ".$part_svc{$_}->svc, sort keys %part_svc ). "\n";
+}
+sub menu_domain_svc {
+ ( join "\n", map "$_: ".$domain_part_svc{$_}->svc, sort keys %domain_part_svc ). "\n";
+}
sub getpart {
$^W=0; # Term::Query isn't -w-safe
my $return = query "Enter part number:", 'irk', [ keys %part_svc ];
$sth->execute or die $sth->errstr;
my $row;
-while ( $row = $sth->fetchrow_arrayref ) {
+while ( defined ( $row = $sth->fetchrow_arrayref ) ) {
my( $r_username, $realm ) = @$row;
my( $username, $domain );
- if ( $r_username =~ s/([^@]+)\@([^@]+)$// ) {
+ if ( $r_username =~ /^([^@]+)\@([^@]+)$/ ) {
$username = $1;
$domain = $2;
} else {
$username = $r_username;
$domain = $realm;
}
- my %svc_domain = ( 'svcpart' => $domain_svcpart,
- 'domain' => $domain, );
- my $svc_domain = qsearchs('svc_domain', \%svc_domain )
- || new FS::svc_domain \%svc_domain;
- unless ( $svc_domain->domsvc ) {
+ my $svc_domain = qsearchs('svc_domain', { 'domain' => $domain } )
+ || new FS::svc_domain {
+ 'domain' => $domain,
+ 'svcpart' => $domain_svcpart,
+ 'action' => 'N',
+ };
+ unless ( $svc_domain->svcnum ) {
my $error = $svc_domain->insert;
if ( $error ) {
die "can't insert domain $domain: $error\n";
$rc_sth->execute($r_username, $realm) or die $rc_sth->errstr;
foreach my $rc_row ( @{$rc_sth->fetchall_arrayref} ) {
- my($attribute, $value, $name, $groupname) = @$row;
- if ( $attribute =~ /^(Crypt-)?Password$/ ) {
+ my($attribute, $value, $name, $groupname) = @$rc_row;
+ if ( $attribute =~ /^((User|Crypt)-)?Password$/ ) {
$password = $value;
$finger = $name;
$group = $groupname;
}
}
- my $svc_acct = new FS::svc_acct (
+ my $svc_acct = new FS::svc_acct {
'svcpart' => $sqlradius_svcpart,
'username' => $username,
- 'domsvc' => $svc_domain->domsvc,
+ 'domsvc' => $svc_domain->svcnum,
'_password' => $password,
'finger' => $finger,
- );
+ };
- my($error);
- #$error = $svc_acct->insert;
- $error = $svc_acct->check;
+ my $error = $svc_acct->insert;
+ #my $error = $svc_acct->check;
if ( $error ) {
if ( $error =~ /duplicate/i ) {
- warn "$r_username: $error";
+ warn "$r_username / $realm: $error";
} else {
- die "$r_username: $error";
+ die "$r_username / $realm: $error";
}
}