X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fetc%2Fupgrade%2Fgenerate-rtaddressregexp.in;h=9a097e93ac3ec3c3352360ac6607175966b0b77e;hb=31399723786cf0510e15b88ff7b8eaec3c909def;hp=a0787ca1549a33138cc44b694e9f711d385789e1;hpb=fc6209f398899f0211cfcedeb81a3cd65e04a941;p=freeside.git diff --git a/rt/etc/upgrade/generate-rtaddressregexp.in b/rt/etc/upgrade/generate-rtaddressregexp.in index a0787ca15..9a097e93a 100644 --- a/rt/etc/upgrade/generate-rtaddressregexp.in +++ b/rt/etc/upgrade/generate-rtaddressregexp.in @@ -3,7 +3,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -46,18 +46,15 @@ # those contributions and any derivatives thereof. # # END BPS TAGGED BLOCK }}} +use 5.10.1; use strict; use warnings; use lib "@LOCAL_LIB_PATH@"; use lib "@RT_LIB_PATH@"; -use RT; -RT::LoadConfig(); -RT->Config->Set('LogToScreen' => 'debug'); -RT::Init(); - -$| = 1; +use RT::Interface::CLI qw(Init); +Init(); if (my $re = RT->Config->Get('RTAddressRegexp')) { print "No need to use this script, you already have RTAddressRegexp set to $re\n"; @@ -65,23 +62,45 @@ if (my $re = RT->Config->Get('RTAddressRegexp')) { } use RT::Queues; -my $queues = RT::Queues->new( $RT::SystemUser ); +my $queues = RT::Queues->new( RT->SystemUser ); $queues->UnLimit; -$queues->RowsPerPage(100); -my @addresses = (RT->Config->Get('CorrespondAddress'), RT->Config->Get('CommentAddress')); +my %merged; +merge(\%merged, RT->Config->Get('CorrespondAddress'), RT->Config->Get('CommentAddress')); while ( my $queue = $queues->Next ) { - push @addresses, $queue->CorrespondAddress, $queue->CommentAddress; + merge(\%merged, $queue->CorrespondAddress, $queue->CommentAddress); } -my %seen; -my $re = join '|', map "\Q$_\E", - grep defined && length && !$seen{ lc $_ }++, - @addresses; +my @domains; +for my $domain (sort keys %merged) { + my @addresses; + for my $base (sort keys %{$merged{$domain}}) { + my @subbits = keys(%{$merged{$domain}{$base}}); + if (@subbits > 1) { + push @addresses, "\Q$base\E(?:".join("|",@subbits).")"; + } else { + push @addresses, "\Q$base\E$subbits[0]"; + } + } + if (@addresses > 1) { + push @domains, "(?:".join("|", @addresses).")\Q\@$domain\E"; + } else { + push @domains, "$addresses[0]\Q\@$domain\E"; + } +} +my $re = join "|", @domains; print <{lc $3}{$1}{$2||''}++; + } +}