#!/usr/bin/perl use strict; use Data::Dumper; # ----- Setting start ----- # my $mt_dir = '/path/to/mt/'; my $from = 'cron@haza.sakura.ne.jp'; my $to = 'seiichiro@hazama.nu'; my $sendmail_path = "/path/to/sendmail"; # ------ Setting end ------ # # ----- Added library. unshift @INC, $mt_dir . 'lib'; unshift @INC, $mt_dir . 'extlib'; # ----- Make random number. my $new_cm_script = 'mt-comment-'.&create_random_string().'.cgi'; my $new_tb_script = 'mt-tb-'.&create_random_string().'.cgi'; # ----- Path to config file. my $cfg_file = $mt_dir . 'mt-config.cgi'; # ----- Rewrite script name. my @cfg; my $old_cm_script; my $old_tb_script; open(IN,"< $cfg_file") or die "Can't open ".$cfg_file." : $!"; flock(IN, 1) or die "Can't flock : $!"; while () { if ($_ =~ /(^CommentScript )(.*)\n/) { push @cfg, $1.$new_cm_script."\n"; $old_cm_script = $2; } elsif ($_ =~ /(^TrackbackScript )(.*)\n/) { push @cfg, $1.$new_tb_script."\n"; $old_tb_script = $2; } else { push @cfg, $_; } } close(IN); open(OUT, "+< $cfg_file"); flock(OUT, 2); seek(OUT, 0, 0); for my $str (@cfg) { print OUT $str; } truncate(OUT, tell(OUT)); close(OUT); # ----- Rename Script. rename($mt_dir.$old_cm_script, $mt_dir.$new_cm_script); rename($mt_dir.$old_tb_script, $mt_dir.$new_tb_script); # ----- Get MT object. require MT; my $mt = MT->new( Config => $cfg_file, Directory => $mt_dir ); # ----- Mail String. my $mstr; $mstr .= ' * Old comment script name: '.$old_cm_script."\n"; $mstr .= ' * New comment script name: '.$new_cm_script."\n"; $mstr .= ' * Old trackback script name: '.$old_tb_script."\n"; $mstr .= ' * New trackback script name: '.$new_tb_script."\n"; $mstr .= "\n"; # ----- Get weblog. require MT::Blog; my @blogs = MT::Blog->load( undef, {unique => 1} ); # sort. @blogs = sort {$a->id <=> $b->id} @blogs; for my $blog (@blogs) { # Rebuild welog. $mstr .= ' * Rebuild start blogID "'.$blog->id.'".'."\n"; $mt->rebuild( BlogID => $blog->id ) or $mstr .= ' * Rebuild error! blogID "'.$blog->id.'".'."\n".$mt->errstr; $mstr .= ' * Rebuild end blogID "'.$blog->id.'".'."\n\n"; } # ----- Send mail. my $subject = '[info] The rename script was running.'; open(SENDMAIL, "|$sendmail_path -t"); print SENDMAIL <