| Server IP : 104.21.25.180 / Your IP : 104.23.197.123 Web Server : Apache/2.4.37 System : Linux almalinux.duckdns.org 4.18.0-553.111.1.el8_10.x86_64 #1 SMP Sun Mar 8 20:06:07 EDT 2026 x86_64 User : ricodeal ( 1046) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/libexec/usermin/updown/ |
Upload File : |
#!/usr/bin/perl
# download.pl
# Start downloading some file, and update the .down file with its progress
$no_acl_check++;
require './updown-lib.pl';
$down = &get_download($ARGV[0]);
$down || die "Download ID $ARGV[0] does not exist!";
&can_write_file($down->{'dir'}) || die "Cannot download files to $down->{'dir'}";
# Do the download, updating the config file with progress
$down->{'pid'} = $$;
&save_download($down);
$error = &do_download($down, \&download_callback, \@paths);
$down->{'complete'} = 1;
$down->{'error'} = $error if ($error);
&save_download($down);
sub download_callback
{
if ($_[0] == 1) {
# Started ok
delete($down->{'size'});
delete($down->{'got'});
delete($down->{'finished'});
$lastupdate = 0;
$lastpercent = 0;
}
elsif ($_[0] == 2) {
# Got size
$down->{'size'} = $_[1];
}
elsif ($_[0] == 3) {
# Got some data. Only update the status file every 10 seconds or when
# a percent of data is received
$down->{'got'} = $_[1];
if ($down->{'size'}) {
$percent = int($down->{'got'}*100/$down->{'size'});
$now = time();
return if ($percent <= $lastpercent &&
$now < $lastupdate + 10);
$lastupdate = $now;
$lastpercent = $percent;
}
}
elsif ($_[0] == 4) {
# All done
$down->{'finished'} = 1;
$down->{'total'} += $down->{'got'};
}
elsif ($_[0] == 5) {
# Redirecting to new URL
}
&switch_uid_back();
&save_download($down);
&switch_uid_to($down->{'uid'}, $down->{'gid'});
}