blob: 47863a9d56d5b4005879f1ee57e0255c4b67e800 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#!/usr/bin/perl -w
use strict;
#use File::Path;
use File::Rsync;
use Net::SSH qw(ssh);
use FS::UID qw(adminsuidsetup datasrc);
use FS::Record qw(qsearch qsearchs);
use FS::part_export;
use FS::cust_svc;
use FS::svc_www;
my $user = shift or die &usage;
adminsuidsetup $user;
#needs the export number in there somewhere too...?
my $spooldir = "/usr/local/etc/freeside/export.". datasrc. "/apache";
mkdir $spooldir, 0700 unless -d $spooldir;
my @exports = qsearch('part_export', { 'exporttype' => 'apache' } );
my $rsync = File::Rsync->new({
rsh => 'ssh',
# dry_run => 1,
});
foreach my $export ( @exports ) {
my $machine = $export->machine;
my $file = "$spooldir/$machine.conf";
open(HTTPD_CONF,">$file") or die "can't open $file: $!";
my $template = $export->option('template');
my @svc_www = $export->svc_x;
foreach my $svc_www ( @svc_www ) {
use vars qw($zone $username);
$zone = $svc_www->domain_record->zone;
$username = $svc_www->svc_acct->username;
print HTTPD_CONF eval(qq("$template")). "\n\n";
}
my $user = $export->option('user');
my $httpd_conf = $export->option('httpd_conf');
$rsync->exec( {
src => $file,
dest => "$user\@$machine:$httpd_conf",
} ) or die "rsync to $machine failed: ". join(" / ", $rsync->err);
# warn $rsync->out;
my $restart = $export->option('restart') || 'apachectl graceful';
ssh("root\@$machine", $restart);
}
close HTTPD_CONF;
# -----
sub usage {
die "Usage:\n apache.export user\n";
}
|