#!/usr/bin/perl -w
# This Script (linuxmuster-client-tor-browser-bundle) was created by Rüdiger Beck
# It is released under the GPL Version 3
# For Bugs send mail to (jeffbeck-at-web.de)

use strict;
use Getopt::Long;
use File::Basename;
use Log::Log4perl qw(:easy);
use English;
use File::Path qw(remove_tree);

my $home=$ENV{'HOME'};
my $UID_name=getpwuid($UID);
my $EUID_name=getpwuid($EUID);
my $version="10.0.13";
my $tbb_lang="de";

# path to settings
my $settings="Einstellungen/tor-browser-bundle";
my $settings_abs=$home."/".$settings;

# configure logging
my $log="/tmp/linuxmuster-client-tor-browser-bundle.log.".$UID_name;
Log::Log4perl->easy_init({ 
                level   => $INFO,
                file    => ">>$log" } );    


my $config_dir="/etc/linuxmuster-client/tor-browser-bundle";
my $help=0;
my $info=0;


# Parsen der Optionen
my $testopt=GetOptions(
           "help|h" => \$help,
           "info|i" => \$info,
          );

# Prüfen, ob Optionen erkannt wurden, sonst Abbruch
&check_options($testopt);



if ($help==1){
   print('

This script installs the tor browser-bundle for a user

Options
  -h  / --help  
   show this help

');
   print "\n";
   exit;
}


#if (not -d $config_dir){
#    print "\nERROR: Configuration directory\n",
#          "    $config_dir\n",
#          " does not exist!\n\n";
#    exit;
#}


my $downloads="/var/lib/linuxmuster-client-tor-browser-bundle/downloads/de";

my $target_dir="/tmp/".$UID_name."-linuxmuster-client-tor-browser-bundle";
my $tbb_file="";


my $uname = `uname -m`;
chomp($uname);

if ($uname eq "x86_64"){
    $tbb_file=$downloads."/tor-browser-linux64-".$version."_".$tbb_lang.".tar.xz";
} elsif ($uname eq "i686"){
    $tbb_file=$downloads."/tor-browser-linux32-".$version."_".$tbb_lang.".tar.xz";
} else {
    print "\nCould not detect architecture of the kernel from $uname.\n\n";
    exit;
}


# Clean up if necessary
if (-d $target_dir){
    print "Deleting $target_dir\n";
    remove_tree("$target_dir");
}


# Installing
print "Unpacking\n  $tbb_file\n  to $target_dir\n";
system("mkdir -p $target_dir");
my $command="tar xJvf $tbb_file -C $target_dir";
print "$command\n";
system("$command");

# Restore settings
# bookmarks
my $bookmarks_saved=$settings_abs."/places.sqlite";
my $bookmarks_current=$target_dir."/tor-browser_".$tbb_lang."/Browser/TorBrowser/Data/Browser/profile.default/places.sqlite";
if (-e $bookmarks_saved){
    # restore Bookmarks
    print "Restoring bookamrks from:\n";
    print "    $bookmarks_saved\n";
    print "to\n";
    print "    $bookmarks_current\n";
    system("cp $bookmarks_saved $bookmarks_current\n");
}


# Starting
my $binary_dir=$target_dir."/tor-browser_de";
my $binary="./start-tor-browser.desktop";
system("cd $binary_dir; $binary");

# after clean shutdown
print "Shutdown complete\n";




############################################################
# subs
############################################################
sub  check_options{
   my ($parse_ergebnis) = @_;
   if (not $parse_ergebnis==1){
      my @list = split(/\//,$0);
      my $scriptname = pop @list;
      print "\nYou have made a mistake, when specifying options.\n"; 
      print "See error message above. \n\n";
      print "... $scriptname is terminating.\n\n";
      exit;
   } else {
      #print "All options  were recognized.\n";
   }

}

