ÿØÿà JFIF ÿÛ „ ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /usr/lib/cyrus-imapd/ |
#!/usr/bin/perl # script to downgrade from cyrus imapd 1.6.2+ to earlier. # do NOT run this script while imapd's are running # # Copyright (c) 1994-2008 Carnegie Mellon University. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # 3. The name "Carnegie Mellon University" must not be used to # endorse or promote products derived from this software without # prior written permission. For permission or any legal # details, please contact # Carnegie Mellon University # Center for Technology Transfer and Enterprise Creation # 4615 Forbes Avenue # Suite 302 # Pittsburgh, PA 15213 # (412) 268-7393, fax: (412) 268-7395 # innovation@andrew.cmu.edu # # 4. Redistributions of any form whatsoever must retain the following # acknowledgment: # "This product includes software developed by Computing Services # at Carnegie Mellon University (http://www.cmu.edu/computing/)." # # CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO # THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE # FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # $Id: undohash,v 1.11 2010/01/06 17:02:02 murch Exp $ require 5; $| = 1; sub read_conf { my $file = shift; open CONF, $file or die "can't open $file"; while (<CONF>) { if (/^#/) { next; } if (/\@include:\s+(.*)$/) { push @configs, $1; } if (/^configdirectory:\s+(.*)$/) { $confdir = $1; } if (/^(?:meta)?partition-.*:\s+(.*)$/) { if (grep /$1/, @parts) { next; } push @parts, $1; } if (/^hashimapspool:\s*(1|t|yes|on)/) { $hashispool = 1; print "i will also hash partitions.\n"; } } close CONF; } $imapdconf = shift || "/etc/imapd.conf"; $hashispool = 0; push @configs, $imapdconf; while ($conf = shift @configs) { read_conf($conf); } print "downgrading configuration directory $confdir..."; chdir $confdir or die "couldn't change to $confdir"; # *** user subdirectory; holds subscription files print "user "; chdir "user" or die "couldn't change to user subdir"; foreach $i ("a".."z") { opendir SUB, $i; while ($s = readdir SUB) { if ($s =~ /^\./s) { next; } rename("$i/$s", "$s") or die "couldn't move $s back!"; } closedir SUB; rmdir "$i" or die "couldn't remove $i"; } chdir ".."; # *** quota subdirectory; holds quota files for each quotaroot print "quota "; chdir "quota" or die "couldn't change to quota subdir"; # first, create directories we know can't conflict with existing files foreach $i ("a".."z") { rename ($i, ".$i") or die "couldn't rename $i to .$i"; opendir SUB, ".$i"; while ($s = readdir SUB) { if ($s =~ /^\./s) { next; } rename(".$i/$s", $s) or die "couldn't move $s back!"; } closedir SUB; rmdir ".$i" or die "couldn't remove .$i"; } chdir ".."; print "done\n"; # *** now for each data partition while ($hashispool && ($part = shift @parts)) { print "downgrading data partition $part..."; chdir $part or die "couldn't chdir to $part"; foreach $i ("a".."z") { rename ("$i", ".$i") or die "couldn't rename $i to .$i"; } # process each subdir foreach $i ("a".."z") { print "$i "; opendir SUB, ".$i"; while ($s = readdir SUB) { if ($s =~ /^\./s) { next; } mkdir $s, 0755; # ignore errors as it might already exist opendir MV, ".$i/$s"; while ($t = readdir MV) { if ($t =~ /^\./s) { next; } rename (".$i/$s/$t", "$s/$t") or die "couldn't rename .$i/$s/$t to $s/$t"; } closedir MV; } closedir SUB; rmdir ".$i"; } print "done\n"; }