aboutsummaryrefslogtreecommitdiffstats
path: root/old/transfugdrake
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2007-07-31 14:15:56 +0000
committerOlivier Blin <oblin@mandriva.com>2007-07-31 14:15:56 +0000
commit63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6 (patch)
treebe83e212f417f736dc8c3d0a01bd1292e5770752 /old/transfugdrake
parentd95b10faf7f846d1fcdce63e267a28ab076dcb06 (diff)
downloadtransfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar.gz
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar.bz2
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar.xz
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.zip
move old transfugdrake in old/
Diffstat (limited to 'old/transfugdrake')
-rwxr-xr-xold/transfugdrake336
1 files changed, 336 insertions, 0 deletions
diff --git a/old/transfugdrake b/old/transfugdrake
new file mode 100755
index 0000000..8e51a22
--- /dev/null
+++ b/old/transfugdrake
@@ -0,0 +1,336 @@
+#! /usr/bin/perl
+# $Id$
+
+#
+# Yves Duret (yduret at mandrakesoft.com)
+# Christian Belisle (cbelisle at mandrakesoft.com)
+#
+# Copyright 2001 MandrakeSoft
+#
+# This software may be freely redistributed under the terms of the GNU
+# public license.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+use lib q(/usr/lib/libDrakX);
+
+## Includes
+use common;
+use interactive;
+use standalone;
+use fsedit qw(:read_partitions);
+use detect_devices;
+use transfugdrake;
+
+# TODO TODO TODO
+# Add a variable and a detection for Windows version
+
+## Variables
+my $version = 0.3; # Version number
+my $debug = 1; # Debug flag
+my $windowsxp = 0; # Flag to know if we have win xp
+my $laststep = "";
+
+# Array used to locate the documents.
+my @documents_folders =
+('My Documents', # 95,98 - English
+ 'Documents and Settings'); # XP - French & English
+
+# Ignored users in the document folder (XP)
+my @ignored_document_folders =
+('LocalService',
+ 'NetworkService',
+ 'Owner',
+ '.',
+ '..');
+
+# Address book location
+my $address_book_location = "Application Data/Microsoft/Address Book";
+
+# If it's started during install, die.
+$::isInstall and die "Not supported during install.\n";
+
+$::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/;
+
+# Application initialization
+my $in = interactive::vnew(su);
+
+local $_ = join '', @ARGV;
+
+/-h/ and die "usage: transfug [--version]\n";
+/-version/ and die 'transfugdrake '.$version."\n";
+$::isEmbedded or $::isWizard = 1;
+$::Wizard_pix_up = "wiz_drakgw.png";
+$::Wizard_title = N("Transfugdrake");
+$::direct = /-direct/;
+
+#- **********************************
+#- * 0th step: verify if we are already set up
+begin:
+
+$::Wizard_no_previous = 1;
+
+#- **********************************
+#- * 0th step: Welcome page
+step_0:
+if($debug) { print "- Starting Transfugdrake\n"; }
+
+#my %linux_config = transfugdrake::get_linux_config();
+
+$::direct or $in->ask_okcancel(N("Transfugdrake"),
+N("Welcome to Transfugdrake! I will help you to ease the step windows-linux
+by migrating your documents, mails and address books"), 1) or quit_global($in, 0);
+
+#- **********************************
+#- * 1st step: Windows configuration
+step_1:
+if($debug) { print "- Getting Windows Configuration\n"; }
+my ($win_partition, $win_fstype, $win_mountpoint) = transfugdrake::get_windows_config($in);
+$laststep = "step_1";
+
+#- **********************************
+#- * 2nd step: Windows User Chooser
+step_2:
+my $notvalid = 0;
+my $addbook = "";
+my $addbook_folder_win95 = "$windows_config->{mountpoint}/WINDOWS/Application Data/Microsoft/Address Book";
+
+if($debug) { print "- Windows User Chooser page\n"; }
+
+if($debug) { print "-- Looking where is the document folder $win_mountpoint\n"; }
+my $document_location = get_documents_folder(@documents_folders, $win_mountpoint);
+
+if($document_location eq "") {
+ $in->ask_warn(N("Can't find documents folder!"),
+ N("Can't find the folder where the documents are located. Exiting..."));
+ quit_global($in, 0);
+}
+
+if($debug) { print "-- Looking which Windows version we have\n"; }
+
+# Initialize the users array
+@users = ();
+
+if($document_location eq $win_mountpoint.'/'.$documents_folders[0]) {
+ # For 95-98, go see in the address books folder to get the users
+ if($debug) { print "--- Windows 95/98 found\n"; }
+ opendir YREP, $addbook_folder_win95 or die "unable to open dir: $!\n";
+ my @addbook_files = grep /.*dbx$/, readdir YREP;
+ closedir YREP;
+ foreach my $addbook (@addbook_files) {
+ $addbook =~ s/.wab//g;
+ foreach my $tmp_ignored (@users) {
+ if($addbook eq $tmp_ignored) { $notvalid = 1; }
+ }
+ if($notvalid != 1) { push(@users, $addbook); }
+ $notvalid = 0;
+ }
+}
+elsif($document_location eq $win_mountpoint.'/'.$documents_folders[1]) {
+ # For XP, go see in the documents folder to get the directory listing
+ if($debug) { print "--- Windows XP found\n"; }
+ $in->ask_warn(N("No mail migration available"),
+ N("Warning: Windows XP detected. No mail migration available yet for your Windows version."));
+ $windowsxp = 1;
+ opendir YREP, $document_location or die "unable to opendir: $!\n";
+ my @tmp_user_array = readdir YREP;
+ closedir YREP;
+ foreach my $tmp_user (@tmp_user_array) {
+ foreach my $tmp_ignored (@ignored_document_folders) {
+ if ($tmp_user eq $tmp_ignored) { $notvalid = 1; }
+ }
+ if($notvalid != 1) { push(@users, $tmp_user); }
+ $notvalid = 0;
+ }
+}
+
+if($users[0] eq "") {
+ $in->ask_warn(N("No user found!"),
+ N("Can't find any user on your Windows partition. Will copy all documents from Windows"));
+}
+else {
+ $::Wizard_no_previous = 0;
+ my $chosen_user = $in->ask_from_list(N("Transfugdrake"),
+ N("You have the following users in Windows. Which one do you want to use for migration?"),
+ [ @users ], $users[0]) or goto step_0;
+}
+
+$laststep = "step_2";
+
+#- **********************************
+#- * 3rd step: Task Chooser
+step_3:
+my @tasks = ('Copy files and folders from your Windows partition');
+
+if($debug) { print "- Task Chooser\n"; }
+
+$document_location .= '/'.$chosen_user;
+#if(-f $win_mountpoint."/WINDOWS".$address_book_location.$chosen_user.".wab" ||
+# -f $document_location.'/'.$address_book_location.'/'.$chosen_user.".wab") {
+ # push(@tasks, "Migrate address book from Windows (not implemented yet)");
+ #}
+
+# This is the Windows XP mailbox checkup. Will be active as soon as transfug_oe support OE 6.
+#if(-d $document_location."/Local Settings/Application Data/Identities") {
+ # opendir YREP, $document_location."/Local Settings/Application Data/Identities" or die "unable to opendir: $!\n";
+ # my @identity = readdir YREP;
+ # closedir YREP;
+ # if(-f $document_location."/Local Settings/Application Data/Identities/".$identity[2]."/Microsoft/Outlook Express/Inbox.dbx") {
+ # push(@tasks, "Migrate your mail messages from Windows (Outlook Express 4 & 5 ONLY)");
+ # }
+ #}
+if(-d $win_mountpoint."/WINDOWS/Application Data/Identities") {
+ opendir YREP, $win_mountpoint."/WINDOWS/Application Data/Identities" or die "unable to opendir: $!\n";
+ my @identity = readdir YREP;
+ closedir YREP;
+ if(-f $win_mountpoint."/WINDOWS/Application Data/Identities/".$identity[2]."/Microsoft/Outlook Express/Inbox.dbx") {
+ push(@tasks, "Migrate your mail messages from Windows (Outlook Express 4.5 & 5 ONLY)");
+ }
+}
+
+my $chosen_task = $in->ask_from_list(N("Transfugdrake"),
+N("Welcome to TransfugDrake! You are now able to ease\n the step Windows-Linux with many migrations. Please choose what you\n want to do:"), [ @tasks ], $tasks[0]) or quit_global($in, 0);
+
+if($chosen_task eq "Copy files and folders from your Windows partition") { goto step_4; }
+#if($chosen_task eq "Migrate address book from Windows (not implemented yet)") { goto step_7; }
+if($chosen_task eq "Migrate your mail messages from Windows (Outlook Express 4.5 & 5 ONLY)") { goto step_6; }
+$laststep = "step_3";
+
+#- **********************************
+#- * 4th step: Copy Windows Files
+step_4:
+if($debug) { print "- Ready to copy all the documents, waiting for user response\n"; }
+
+copy_documents($document_location, $ENV{HOME});
+$laststep = "step_4";
+
+#- ******************************
+#- * 5th step: redo if needed
+step_5:
+
+if($in->ask_yesorno(N("Transfugdrake"),
+N("Do you want to copy other files from another folder?"), 1)) {
+ goto step_2;
+}
+$laststep = "step_5";
+
+#- *******************************
+#- * 4th step: mail from windows
+step_6:
+
+if ($windowsxp) { goto step_8; }
+$::direct or $in->ask_okcancel(N("Transfug"),
+N("We will bring back your Outlook Mailboxes to a standard unix mbox\n
+NB: This feature works only with Outlook Express 4.5 and 5"), 1) or goto step_7;
+
+mkdir "$ENV{HOME}/Mail" unless (-e "$ENV{HOME}/Mail");
+
+$oe5onwin98="$win/WINDOWS/Application Data/Identities";
+opendir YREP, $oe5onwin98;
+my @tmp_identitity = readdir YREP;
+closedir YREP;
+$oe5onwin98 .= '/'.$tmp_identity[2]."/Microsoft/Outlook Express";
+
+if (-e $oe5onwin98) {
+ print "OE detected\n";
+ opendir YREP, $oe5onwin98 or die "unable to open dir: $!";
+ @files = grep /.*dbx$/, readdir YREP;
+ closedir YREP;
+ foreach $i (@files) {
+ `transfug_oe \"$oe5onwin98/$i\" \"$ENV{HOME}/Mail/$i\"`;
+ }
+}
+$laststep = "step_6";
+
+#- *******************************
+#- * 6th step: address book from windows
+# In XP, address book is located in /Document and Settings/user/Appli Data/Microsoft/Address Book/
+#step_7:
+
+#$::direct or $in->ask_okcancel(N("Transfugdrake"),
+#N("Here will come the address book migration page."), 1) or quit_global($in, 0);
+
+#- *******************************
+#- * 8th step: finish
+step_8:
+$::Wizard_no_previous = 0;
+$::direct or $in->ask_okcancel(N("Transfugdrake"),
+N("The migration of all of your Windows data is finished."), 1) or goto $laststep;
+
+#- *******************************
+#- FUNCTIONS
+#- *******************************
+sub detect_partition {
+ # Return array
+ my @win;
+
+ # TODO TODO TODO TODO TODO TODO TODO TODO
+ # - Print partition type beside the partition
+ # - Mount the partition the user want.
+ # - Detect partition as user, and ask root passwd only when needed
+
+ # Get folder listing in /mnt
+ my @mnt_dir_folder = split("\n", `ls /mnt/`);
+
+ # Look in the array if we have a windows partition
+ my $folders_count = 1;
+ while(@mnt_dir_folder[$folders_count] ne "") {
+ push(@win,"/mnt/".@mnt_dir_folder[$folders_count]);
+ $found = 1;
+ if($debug) { print "-- Found windows partition at /mnt/@mnt_dir_folder[$folders_count]\n"; }
+ $folders_count++;
+ }
+
+ # If nothing is found, print an error and exit.
+ if(!$found) {
+ print "- No windows partitions\n";
+ $in->ask_warn(N("Can't find windows!"),
+ N("Sorry, I can't find windows. Maybe it's not installed, or your windows partition is not mounted on Mandrake."));
+ quit_global($in);
+ }
+ else {
+ return @win;
+ }
+}
+
+sub get_documents_folder {
+ my @doc_folders = @_;
+ my $mountpoint = "";
+
+ # Last entry in @doc_folders is moved to $mountpoint.
+ $mountpoint = pop(@doc_folders);
+ $mountpoint .= '/';
+
+ # Make a whole checkup to see where My Documents is located.
+ foreach my $test_doc (@doc_folders) {
+ if(-d $mountpoint.$test_doc) {
+ if(debug) { print "-- $mountpoint$test_doc found\n"; }
+ if($test_doc eq $doc_folders[2]) { $xp = 1; }
+ return $mountpoint.$test_doc;
+ }
+ }
+}
+
+sub copy_documents {
+ my $source = $_[0];
+ my $dest = $_[1];
+
+ mkdir("$dest/win_backup");
+ $dest .= "/win_backup";
+
+ $::Wizard_no_previous = 1;
+ if(!($in->ask_yesorno(N("Transfugdrake"),
+ N("Do you want to copy all the content of\n \"$source\" to\n \"$dest\"?"), 1))) {
+ goto step_5;
+ }
+ $wait_configuring = $in->wait_message(N("Copying files..."),
+ N("Copying all files from $source to $dest. This may take several minutes."));
+
+ $source =~ s/\ /\\ /g;
+ system("cp -R $source $dest");
+ undef $wait_configuring;
+}
+
+1;