summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Conf.pm14
-rw-r--r--httemplate/edit/svc_www.cgi38
2 files changed, 34 insertions, 18 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 905c60d2b..3cddc20fe 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1206,6 +1206,20 @@ httemplate/docs/config.html
'type' => 'checkbox',
},
+ {
+ 'key' => 'svc_www-enable_subdomains',
+ 'section' => '',
+ 'description' => 'Enable selection of specific subdomains for virtual host creation.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'svc_www-usersvc_svcpart',
+ 'section' => '',
+ 'description' => 'Allowable service definition svcparts for virtual hosts, one per line.',
+ 'type' => 'textarea',
+ },
+
);
1;
diff --git a/httemplate/edit/svc_www.cgi b/httemplate/edit/svc_www.cgi
index ebc4b1148..fe7052292 100644
--- a/httemplate/edit/svc_www.cgi
+++ b/httemplate/edit/svc_www.cgi
@@ -56,9 +56,13 @@ my $action = $svc_www->svcnum ? 'Edit' : 'Add';
my( %svc_acct, %arec );
if ($pkgnum) {
- my($u_part_svc,@u_acct_svcparts);
- foreach $u_part_svc ( qsearch('part_svc',{'svcdb'=>'svc_acct'}) ) {
- push @u_acct_svcparts,$u_part_svc->getfield('svcpart');
+ my @u_acct_svcparts;
+ foreach my $svcpart (
+ map { $_->svcpart } qsearch( 'part_svc', { 'svcdb' => 'svc_acct' } )
+ ) {
+ next if $conf->exists('svc_www-usersvc_svcpart')
+ && grep { $svcpart == $_ } $conf->config('svc_www-usersvc_svcpart');
+ push @u_acct_svcparts, $svcpart;
}
my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
@@ -92,25 +96,23 @@ if ($pkgnum) {
my($i_cust_svc);
foreach $i_cust_svc ( qsearch('cust_svc',{'pkgnum'=>$cust_pkgnum,'svcpart'=>$acct_svcpart}) ) {
my($svc_domain)=qsearchs('svc_domain',{'svcnum'=>$i_cust_svc->getfield('svcnum')});
- my $domain_rec;
- foreach $domain_rec ( qsearch('domain_record',{
- 'svcnum' => $svc_domain->svcnum,
- 'rectype' => 'A' } ),
- qsearch('domain_record',{
- 'svcnum' => $svc_domain->svcnum,
- 'rectype' => 'CNAME'
- } ) ) {
- $arec{$domain_rec->recnum} =
- $domain_rec->reczone eq '@'
- ? $svc_domain->domain
- : $domain_rec->reczone. '.'. $svc_domain->domain;
+ if ( $conf->exists('svc_www-enable_subdomains') ) {
+ foreach my $domain_rec ( qsearch('domain_record',{
+ 'svcnum' => $svc_domain->svcnum,
+ 'rectype' => 'A' } ),
+ qsearch('domain_record',{
+ 'svcnum' => $svc_domain->svcnum,
+ 'rectype' => 'CNAME'
+ } ) ) {
+ $arec{$domain_rec->recnum} = $domain_rec->zone;
+ }
+ $arec{'www.'. $svc_domain->domain} = 'www.'. $svc_domain->domain
+ unless qsearchs('domain_record', { svcnum => $svc_domain->svcnum,
+ reczone => 'www', } );
}
$arec{'@.'. $svc_domain->domain} = $svc_domain->domain
unless qsearchs('domain_record', { svcnum => $svc_domain->svcnum,
reczone => '@', } );
- $arec{'www.'. $svc_domain->domain} = 'www.'. $svc_domain->domain
- unless qsearchs('domain_record', { svcnum => $svc_domain->svcnum,
- reczone => 'www', } );
}
}
}