summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/part_export/forward_shellcommands.pm50
1 files changed, 36 insertions, 14 deletions
diff --git a/FS/FS/part_export/forward_shellcommands.pm b/FS/FS/part_export/forward_shellcommands.pm
index fd1b7efc2..cee24e452 100644
--- a/FS/FS/part_export/forward_shellcommands.pm
+++ b/FS/FS/part_export/forward_shellcommands.pm
@@ -45,8 +45,9 @@ Run remote commands via SSH, for forwards. You will need to
The following variables are available for interpolation (prefixed with
<code>new_</code> or <code>old_</code> for replace operations):
<UL>
- <LI><code>$username</code>
- <LI><code>$domain</code>
+ <LI><code>$username</code> - username of forward source
+ <LI><code>$domain</code> - domain of forward source
+ <LI><code>$source</code> - forward source ($username@$domain)
<LI><code>$destination</code> - forward destination
<LI>All other fields in <a href="../docs/schema.html#svc_forward">svc_forward</a> are also available.
</UL>
@@ -77,10 +78,17 @@ sub _export_command {
${$_} = $svc_forward->getfield($_) foreach $svc_forward->fields;
}
- my $svc_acct = $svc_forward->srcsvc_acct;
- $username = $svc_acct->username;
- $domain = $svc_acct->domain;
- if ($svc_forward->dstsvc_acct) {
+ if ( $svc_forward->srcsvc ) {
+ my $srcsvc_acct = $svc_forward->srcsvc_acct;
+ $username = $srcsvc_acct->username;
+ $domain = $srcsvc_acct->domain;
+ $source = $srcsvc_acct->email;
+ } else {
+ $source = $svc_forward->src;
+ ( $username, $domain ) = split(/\@/, $source);
+ }
+
+ if ($svc_forward->dstsvc) {
$destination = $svc_forward->dstsvc_acct->email;
} else {
$destination = $svc_forward->dst;
@@ -107,19 +115,33 @@ sub _export_replace {
${"new_$_"} = $new->getfield($_) foreach $new->fields;
}
- my $old_svc_acct = $old->srcsvc_acct;
- $old_username = $old_svc_acct->username;
- $old_domain = $old_svc_acct->domain;
- if ($old->dstsvc_acct) {
+ if ( $old->srcsvc ) {
+ my $srcsvc_acct = $old->srcsvc_acct;
+ $old_username = $srcsvc_acct->username;
+ $old_domain = $srcsvc_acct->domain;
+ $old_source = $srcsvc_acct->email;
+ } else {
+ $old_source = $old->src;
+ ( $old_username, $old_domain ) = split(/\@/, $old_source);
+ }
+
+ if ( $old->dstsvc ) {
$old_destination = $old->dstsvc_acct->email;
} else {
$old_destination = $old->dst;
}
- my $new_svc_acct = $new->srcsvc_acct;
- $new_username = $new_svc_acct->username;
- $new_domain = $new_svc_acct->domain;
- if ($new->dstsvc) {
+ if ( $new->srcsvc ) {
+ my $srcsvc_acct = $new->srcsvc_acct;
+ $new_username = $srcsvc_acct->username;
+ $new_domain = $srcsvc_acct->domain;
+ $new_source = $srcsvc_acct->email;
+ } else {
+ $new_source = $new->src;
+ ( $new_username, $new_domain ) = split(/\@/, $new_source);
+ }
+
+ if ( $new->dstsvc ) {
$new_destination = $new->dstsvc_acct->email;
} else {
$new_destination = $new->dst;