#!/usr/bin/perl ####################################### # File: kmail2eudora.cgi # By: Tim Coston # Date: 02 May 01 # Last Modified: 02 May 01 tlc # # # Coston Enterprises, Inc. # www.coston.net ######################################## $scriptname = "kmail2eudora.cgi"; $ver = "1.00"; ######################################## ########################################### # Change the below variables to suite your system ########################################### # Absolute Path to Eudora Directory $eudora_dir = "/home/tcoston/Eudora"; # Absolute Path to kMail Directory $kmail_dir = "/home/tcoston/Mail"; # Absolute Path to this CGI Directory $cgi_dir = "/home/tcoston/CEIPerl/CEIEvolution"; opendir(EVO, "$eudora_dir"); @eu_files = readdir(EVO); closedir(EVO); $eu_count = 0; foreach (@eu_files) { next if($_ eq "."||$_ eq ".."); $eu_count++; } #foreach opendir(KMA, "$kmail_dir"); @km_files = readdir(KMA); closedir(KMA); $km_count = 0; foreach (@km_files) { next if($_ eq "."||$_ eq ".."); $km_count++; } #foreach print qq~ CEIEvolution! kmail2eudora - Mail Conversion Path Data: kMail Dir: $kmail_dir File Count: $km_count Eudora Dir: $eudora_dir File Count: $eu_count CEIEvolution Dir: $cgi_dir Conversion in Progress....... ~; foreach $one (@km_files) { next if($one eq "." || $one eq ".." || $one =~ m#\.index$#); if(-f "$kmail_dir/$one") { $type = "mail file"; } elsif (-d "$kmail_dir/$one") { $type = "directory"; } else { $type = "unknown"; } print "$one -$type\n"; unless($one =~ m#^\.#) { if(-f "$kmail_dir/$one") { $newone = $one; if($newone eq "inbox") { $newone = "In"; add_map("$eudora_dir","$newone,$newone.mbx,S,Y"); } if($newone eq "trash") { $newone = "Trash"; add_map("$eudora_dir","$newone,$newone.mbx,S,N"); } if($newone eq "sent-mail") { $newone = "Out"; add_map("$eudora_dir","$newone,$newone.mbx,S,N"); } $new_file = "/$newone.mbx"; print " -New MBX: $new_file\n"; open(ONE, "$kmail_dir/$one"); @orig_mbox = ; close(ONE); open(ONE2, ">>$eudora_dir/$newone.mbx"); print ONE2 @orig_mbox; close(ONE2); $mbox_files++; add_map("$eudora_dir","$newone,$newone.mbx,M,N"); } #if } #unless if(-d "$kmail_dir/$one") { opendir(SUB, "$kmail_dir/$one"); @sub_fil = readdir(SUB); closedir(SUB); foreach $two(@sub_fil) { next if($two eq "." || $two eq ".."); if(-f "$kmail_dir/$one/$two") { next if($two =~ m#\.index$#); $newone = "$one"; $newone =~ s#\.directory$##; $newone =~ s#^\.##; print " - new file: /$newone.fol/$two.mbx\n"; open(TWO, "$kmail_dir/$one/$two"); @orig_mbox = ; close(TWO); unless(-d "$eudora_dir/$newone.fol") { mkdir("$eudora_dir/$newone.fol",0777); chmod(0777, "$eudora_dir/$newone.fol"); } open(TWO2, ">>$eudora_dir/$newone.fol/$two.mbx"); print TWO2 @orig_mbox; close(TWO2); $mbox_files++; add_map("$eudora_dir","$newone,$newone.fol,F,N"); add_map("$eudora_dir/$newone.fol","$two,$two.mbx,M,N"); } #if } #foreach } #if } #foreach print qq~ $mbox_files files converted ---------------------- Comversion Complete FREE TO DISTRIBUTE UNMODIFIED Coston Enteprises, Inc. www.coston.net ~; exit; ######################### # Header ######################### sub ph { unless($printed == 1) { print "Content-type:text/html\n\n"; print ""; $printed = 1; } } #sub ph ######################## # Utilities - Modify Map ######################## sub add_map { $my_dir = shift; $my_line = shift; ($my_name,$my_bname,$my_A,$my_B) = split(/\,/,$my_line,4); open(MAP,"$my_dir/descmap.pce"); @orig_map = ; close(MAP); $exists = 0; foreach $line (@orig_map) { chomp($line); ($name,$bname,$A,$B) = split(/\,/,$line,4); next if($name eq ""); if($name eq $my_name && $bname eq $my_bname) { $exists = 1; } } #foreach if($exists == 0) { open(MPP, ">>$my_dir/descmap.pce"); print MPP "$my_line\n"; close(MPP); } #if return; } #sub add_map