summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrhimport8
-rw-r--r--rhimport.pm30
2 files changed, 24 insertions, 14 deletions
diff --git a/rhimport b/rhimport
index 64694f4..8b2b3f0 100755
--- a/rhimport
+++ b/rhimport
@@ -267,12 +267,12 @@ sub start_import_gui()
$log = rhimport::clear_carts($dbh, $group, $to_cart, $gui_progress_cb);
}
my $import_log;
- ($ret, $import_log) = rhimport::import_playlist($file, $dropbox, $gui_progress_cb, $gui_error_cb);
+ ($ret, $import_log) = rhimport::import_playlist($file, $dropbox, $user, $gui_progress_cb, $gui_error_cb);
$log .= $import_log;
} else {
$log = rhimport::clear_carts($dbh, $group, $to_cart, $gui_progress_cb);
my $import_log;
- ($ret, $import_log) = rhimport::import_single($file, $dropbox, $gui_progress_cb, $gui_error_cb);
+ ($ret, $import_log) = rhimport::import_single($file, $dropbox, $user, $gui_progress_cb, $gui_error_cb);
$log .= $import_log;
}
@@ -443,12 +443,12 @@ if($POOL) {
}
my $import_log;
- ($ret, $import_log) = rhimport::import_playlist($FILE, $DROPBOX, 0, $cl_error_cb);
+ ($ret, $import_log) = rhimport::import_playlist($FILE, $DROPBOX, $user, 0, $cl_error_cb);
$log .= $import_log;
} else {
$log = rhimport::clear_carts($dbh, $group, $to_cart);
my $import_log;
- ($ret, $import_log) = rhimport::import_single($FILE, $DROPBOX, 0);
+ ($ret, $import_log) = rhimport::import_single($FILE, $DROPBOX, $user, 0, $cl_error_cb);
$log .= $import_log;
}
diff --git a/rhimport.pm b/rhimport.pm
index 948d675..b9a430a 100644
--- a/rhimport.pm
+++ b/rhimport.pm
@@ -150,7 +150,7 @@ sub clear_carts
sub import_playlist
{
- my ($playlist, $dropbox, $progress_cb, $error_cb) = @_;
+ my ($playlist, $dropbox, $user, $progress_cb, $error_cb) = @_;
print "Starting import from playlist $playlist to $dropbox";
my @entries;
@@ -168,11 +168,12 @@ sub import_playlist
my $cnt = 0;
my $ret = 0;
my $log = "";
+ prepare_import($user);
for my $entry ( @entries ) {
$progress_cb->($cnt, $num_entries, $entry) if($progress_cb);
my $out;
- ($ret, $out) = import_file($entry, $dropbox, $error_cb);
+ ($ret, $out) = import_file($entry, $dropbox, $user, $error_cb);
$log .= "\n--- $entry ---\n$out\n" if $out;
last if($ret == 0);
@@ -190,10 +191,11 @@ sub import_playlist
sub import_single
{
- my ($file, $dropbox, $progress_cb, $error_cb) = @_;
+ my ($file, $dropbox, $user, $progress_cb, $error_cb) = @_;
print "Starting import from file $file to $dropbox\n";
$progress_cb->(0, 1, $file) if($progress_cb);
- my ($ret, $out) = import_file($file, $dropbox, $error_cb);
+ prepare_import($user);
+ my ($ret, $out) = import_file($file, $dropbox, $user, $error_cb);
if($ret) {
$progress_cb->(1, 1, "Import abgeschlossen!") if($progress_cb);
} else {
@@ -204,8 +206,8 @@ sub import_single
sub scp_put_file
{
- my ($file) = @_;
- my @cmd = ( 'scp', '-prqB', '-i', $ssh_key_file, $file, "$ssh_user\@$ssh_host:$ssh_dir/" );
+ my ($file, $user, $host, $path) = @_;
+ my @cmd = ( 'scp', '-prqB', '-i', $ssh_key_file, $file, "$user\@$host:$path/" );
my ($reader, $writer, $error ) = ( new IO::Handle, new IO::Handle, new IO::Handle );
$writer->autoflush(1);
local $SIG{CHLD} = 'DEFAULT';
@@ -236,15 +238,23 @@ sub ssh_exec_command
return ($out, $errstr);
}
+sub prepare_import
+{
+ my ($user) = @_;
+
+ ### create user directory
+ ssh_exec_command("umask 002; mkdir -p \"$ssh_dir/$user\"");
+}
+
sub import_file
{
- my ($file, $dropbox, $error_cb) = @_;
+ my ($file, $dropbox, $user, $error_cb) = @_;
print " - importing $file to $dropbox .. ";
$| = 1;
- ### copy file to master server and
- my $err = scp_put_file($file);
+ ### copy file to master server
+ my $err = scp_put_file($file, $ssh_user, $ssh_host, "$ssh_dir/$user");
if($err ne "") {
print "Transfer Error\n";
if($error_cb) {
@@ -256,7 +266,7 @@ sub import_file
### remotely call rdimport
my ($volume, $directories, $remote_file) = File::Spec->splitpath($file);
- $remote_file = "$ssh_dir/$remote_file";
+ $remote_file = "$ssh_dir/$user/$remote_file";
my ($out ,$error) = ssh_exec_command("$rdimport_wrapper --path \"$dropbox\" --file \"$remote_file\"");
if($error ne "") {
print "Import Error\n";