[Dovecot] Update imapsync - thanks to @hunter-nl
This commit is contained in:
		@@ -12,68 +12,76 @@ RUN apt-get update && apt-get -y --no-install-recommends install \
 | 
			
		||||
  build-essential \
 | 
			
		||||
  ca-certificates \
 | 
			
		||||
  cpanminus \
 | 
			
		||||
  cron \
 | 
			
		||||
  curl \
 | 
			
		||||
  default-libmysqlclient-dev \
 | 
			
		||||
  dnsutils \
 | 
			
		||||
  gettext \
 | 
			
		||||
  jq \
 | 
			
		||||
  libjson-webtoken-perl \
 | 
			
		||||
  libcgi-pm-perl \
 | 
			
		||||
  libcrypt-openssl-rsa-perl \
 | 
			
		||||
  libdata-uniqid-perl \
 | 
			
		||||
  libhtml-parser-perl \
 | 
			
		||||
  libmail-imapclient-perl \
 | 
			
		||||
  libparse-recdescent-perl \
 | 
			
		||||
  libsys-meminfo-perl \
 | 
			
		||||
  libtest-mockobject-perl \
 | 
			
		||||
  libwww-perl \
 | 
			
		||||
  libauthen-ntlm-perl \
 | 
			
		||||
  libbz2-dev \
 | 
			
		||||
  libcgi-pm-perl \
 | 
			
		||||
  libcrypt-openssl-rsa-perl \
 | 
			
		||||
  libcrypt-ssleay-perl \
 | 
			
		||||
  libcurl4-openssl-dev \
 | 
			
		||||
  libdata-uniqid-perl \
 | 
			
		||||
  libdbd-mysql-perl \
 | 
			
		||||
  libdbi-perl \
 | 
			
		||||
  libdigest-hmac-perl \
 | 
			
		||||
  libdist-checkconflicts-perl \
 | 
			
		||||
  libexpat1-dev \
 | 
			
		||||
  libfile-copy-recursive-perl \
 | 
			
		||||
  libfile-tail-perl \
 | 
			
		||||
  libhtml-parser-perl \
 | 
			
		||||
  libio-compress-perl \
 | 
			
		||||
  libio-socket-inet6-perl \
 | 
			
		||||
  libio-socket-ssl-perl \
 | 
			
		||||
  libio-tee-perl \
 | 
			
		||||
  libipc-run-perl \
 | 
			
		||||
  libjson-webtoken-perl \
 | 
			
		||||
  libldap2-dev \
 | 
			
		||||
  liblockfile-simple-perl \
 | 
			
		||||
  liblz-dev \
 | 
			
		||||
  liblz4-dev \
 | 
			
		||||
  liblzma-dev \
 | 
			
		||||
  libmail-imapclient-perl \
 | 
			
		||||
  libmodule-implementation-perl \
 | 
			
		||||
  libmodule-scandeps-perl \
 | 
			
		||||
  libnet-ssleay-perl \
 | 
			
		||||
  libpackage-stash-perl \
 | 
			
		||||
  libpackage-stash-xs-perl \
 | 
			
		||||
  libpam-dev \
 | 
			
		||||
  libpar-packer-perl \
 | 
			
		||||
  libparse-recdescent-perl \
 | 
			
		||||
  libproc-processtable-perl \
 | 
			
		||||
  libreadonly-perl \
 | 
			
		||||
  libregexp-common-perl \
 | 
			
		||||
  libssl-dev \
 | 
			
		||||
  libsys-meminfo-perl \
 | 
			
		||||
  libterm-readkey-perl \
 | 
			
		||||
  libtest-deep-perl \
 | 
			
		||||
  libtest-fatal-perl \
 | 
			
		||||
  libtest-mock-guard-perl \
 | 
			
		||||
  libtest-mockobject-perl \
 | 
			
		||||
  libtest-nowarnings-perl \
 | 
			
		||||
  libtest-pod-perl \
 | 
			
		||||
  libtest-requires-perl \
 | 
			
		||||
  libtest-simple-perl \
 | 
			
		||||
  libtest-warn-perl \
 | 
			
		||||
  libtry-tiny-perl \
 | 
			
		||||
  libunicode-string-perl \
 | 
			
		||||
  libproc-processtable-perl \
 | 
			
		||||
  libtest-nowarnings-perl \
 | 
			
		||||
  libtest-deep-perl \
 | 
			
		||||
  libtest-warn-perl \
 | 
			
		||||
  libregexp-common-perl \
 | 
			
		||||
  liburi-perl \
 | 
			
		||||
  libwww-perl \
 | 
			
		||||
  lzma-dev \
 | 
			
		||||
  make \
 | 
			
		||||
  mysql-client \
 | 
			
		||||
  procps \
 | 
			
		||||
  python-html2text \
 | 
			
		||||
  python-jinja2 \
 | 
			
		||||
  python-mysql.connector \
 | 
			
		||||
  python-redis \
 | 
			
		||||
  make \
 | 
			
		||||
  mysql-client \
 | 
			
		||||
  procps \
 | 
			
		||||
  supervisor \
 | 
			
		||||
  cron \
 | 
			
		||||
  redis-server \
 | 
			
		||||
  supervisor \
 | 
			
		||||
  syslog-ng \
 | 
			
		||||
  syslog-ng-core \
 | 
			
		||||
  syslog-ng-mod-redis \
 | 
			
		||||
@@ -93,7 +101,6 @@ RUN apt-get update && apt-get -y --no-install-recommends install \
 | 
			
		||||
  && make clean \
 | 
			
		||||
  && cd .. \
 | 
			
		||||
  && rm -rf dovecot-2.3-pigeonhole-$PIGEONHOLE_VERSION \
 | 
			
		||||
  && cpanm Data::Uniqid Mail::IMAPClient String::Util \
 | 
			
		||||
  && groupadd -g 5000 vmail \
 | 
			
		||||
  && groupadd -g 401 dovecot \
 | 
			
		||||
  && groupadd -g 402 dovenull \
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -5,11 +5,11 @@ use LockFile::Simple qw(lock trylock unlock);
 | 
			
		||||
use Proc::ProcessTable;
 | 
			
		||||
use Data::Dumper qw(Dumper);
 | 
			
		||||
use IPC::Run 'run';
 | 
			
		||||
use String::Util 'trim';
 | 
			
		||||
use File::Temp;
 | 
			
		||||
use Try::Tiny;
 | 
			
		||||
use sigtrap 'handler' => \&sig_handler, qw(INT TERM KILL QUIT);
 | 
			
		||||
 | 
			
		||||
sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
 | 
			
		||||
my $t = Proc::ProcessTable->new;
 | 
			
		||||
my $imapsync_running = grep { $_->{cmndline} =~ /^\/usr\/bin\/perl \/usr\/local\/bin\/imapsync\s/ } @{$t->table};
 | 
			
		||||
if ($imapsync_running eq 1)
 | 
			
		||||
@@ -19,11 +19,20 @@ if ($imapsync_running eq 1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub qqw($) {
 | 
			
		||||
  my @values = split('(?=--)', $_[0]);
 | 
			
		||||
  my @params = ();
 | 
			
		||||
  my @values = split(/(?=--)/, $_[0]);
 | 
			
		||||
  foreach my $val (@values) {
 | 
			
		||||
    my @tmpparam = split(/ /, $val, 2);
 | 
			
		||||
    foreach my $tmpval (@tmpparam) {
 | 
			
		||||
        if ($tmpval ne '') {
 | 
			
		||||
          push @params, $tmpval;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  foreach my $val (@params) {
 | 
			
		||||
    $val=trim($val);
 | 
			
		||||
  }
 | 
			
		||||
  return @values
 | 
			
		||||
  return @params;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$run_dir="/tmp";
 | 
			
		||||
@@ -101,10 +110,6 @@ while ($row = $sth->fetchrow_arrayref()) {
 | 
			
		||||
  $timeout1            = @$row[19];
 | 
			
		||||
  $timeout2            = @$row[20];
 | 
			
		||||
 | 
			
		||||
  $is_running = $dbh->prepare("UPDATE imapsync SET is_running = 1 WHERE id = ?");
 | 
			
		||||
  $is_running->bind_param( 1, ${id} );
 | 
			
		||||
  $is_running->execute();
 | 
			
		||||
 | 
			
		||||
  if ($enc1 eq "TLS") { $enc1 = "--tls1"; } elsif ($enc1 eq "SSL") { $enc1 = "--ssl1"; } else { undef $enc1; }
 | 
			
		||||
 | 
			
		||||
  my $template = $run_dir . '/imapsync.XXXXXXX';
 | 
			
		||||
@@ -140,21 +145,31 @@ while ($row = $sth->fetchrow_arrayref()) {
 | 
			
		||||
  "--host2", "localhost",
 | 
			
		||||
  "--user2", $user2 . '*' . trim($master_user),
 | 
			
		||||
  "--passfile2", $passfile2->filename,
 | 
			
		||||
  '--no-modulesversion'];
 | 
			
		||||
  '--no-modulesversion',
 | 
			
		||||
  '--noreleasecheck'];
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    $is_running = $dbh->prepare("UPDATE imapsync SET is_running = 1 WHERE id = ?");
 | 
			
		||||
    $is_running->bind_param( 1, ${id} );
 | 
			
		||||
    $is_running->execute();
 | 
			
		||||
    
 | 
			
		||||
    run [@$generated_cmds, @$custom_params_ref], '&>', \my $stdout;
 | 
			
		||||
    $update = $dbh->prepare("UPDATE imapsync SET returned_text = ?, last_run = NOW(), is_running = 0 WHERE id = ?");
 | 
			
		||||
    
 | 
			
		||||
    $update = $dbh->prepare("UPDATE imapsync SET returned_text = ? WHERE id = ?");
 | 
			
		||||
    $update->bind_param( 1, ${stdout} );
 | 
			
		||||
    $update->bind_param( 2, ${id} );
 | 
			
		||||
    $update->execute();
 | 
			
		||||
  } catch {
 | 
			
		||||
    $update = $dbh->prepare("UPDATE imapsync SET returned_text = 'Could not start or finish imapsync', last_run = NOW(), is_running = 0 WHERE id = ?");
 | 
			
		||||
    $update = $dbh->prepare("UPDATE imapsync SET returned_text = 'Could not start or finish imapsync' WHERE id = ?");
 | 
			
		||||
    $update->bind_param( 1, ${id} );
 | 
			
		||||
    $update->execute();
 | 
			
		||||
  } finally {
 | 
			
		||||
    $update = $dbh->prepare("UPDATE imapsync SET last_run = NOW(), is_running = 0 WHERE id = ?");
 | 
			
		||||
    $update->bind_param( 1, ${id} );
 | 
			
		||||
    $update->execute();
 | 
			
		||||
    $lockmgr->unlock($lock_file);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$sth->finish();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user