aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/console/command/config/increment.php
diff options
context:
space:
mode:
authorOliver Schramm <oliver.schramm97@gmail.com>2016-08-21 13:13:49 +0200
committerOliver Schramm <oliver.schramm97@gmail.com>2016-08-21 13:14:54 +0200
commitcd2649273b89b86243205070a160ffb08d9118df (patch)
treefeec6fa739e92c5edf0293bf6c2edc266a516df8 /phpBB/phpbb/console/command/config/increment.php
parente4671c15213e9161eb60e9968f9c0463652bf09a (diff)
downloadforums-cd2649273b89b86243205070a160ffb08d9118df.tar
forums-cd2649273b89b86243205070a160ffb08d9118df.tar.gz
forums-cd2649273b89b86243205070a160ffb08d9118df.tar.bz2
forums-cd2649273b89b86243205070a160ffb08d9118df.tar.xz
forums-cd2649273b89b86243205070a160ffb08d9118df.zip
[ticket/14636] Inject into set_config methods
PHPBB3-13573 PHPBB3-14636
Diffstat (limited to 'phpBB/phpbb/console/command/config/increment.php')
0 files changed, 0 insertions, 0 deletions
' href='#n41'>41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
package ftp; # $Id$

use Net::FTP;

use network;
use log;

my %hosts;

1;

sub fromEnv() {
    #- now URLPREFIX is generated from what is given by mdk-stage1 which is only this 4 variables.
    $ENV{URLPREFIX} = "ftp://" . ($ENV{LOGIN} && ("$ENV{LOGIN}" . ($ENV{PASSWORD} && ":$ENV{PASSWORD}") . '@')) .
      "$ENV{HOST}/$ENV{PREFIX}";
    @ENV{qw(HOST PREFIX LOGIN PASSWORD)};
}

sub new {
    my ($host, $prefix, $login, $password) = @_;
    my @l = do { if ($hosts{"$host$prefix"}) {
	@{$hosts{"$host$prefix"}};
    } else {
	my %options = (Passive => 1, Timeout => 60, Port => 21);
	$options{Firewall} = $ENV{PROXY} if $ENV{PROXY};
	$options{Port} = $ENV{PROXYPORT} if $ENV{PROXYPORT};
	unless ($login) {
	    $login = 'anonymous';
	    $password = '-drakx@';
	}

	my $ftp;
	foreach (1..10) {
	    $ftp = Net::FTP->new(network::resolv($host), %options) or die;
	    $ftp && $ftp->login($login, $password) and last;

	    log::l("ftp login failed, sleeping before trying again");
	    sleep 5 * $_;
	}
	$ftp or die "unable to open ftp connection to $host";
	$ftp->binary;
	$ftp->cwd($prefix);

	my @l = ($ftp, \ (my $retr = undef));
	$hosts{"$host$prefix"} = \@l;
	@l;
    }};
    wantarray ? @l : $l[0];
}

sub getFile {
    my ($f, @para) = @_;
    $f eq 'XXX' and rewindGetFile(), return; #- special case to force closing connection.
    foreach (1..3) {
	my ($ftp, $retr) = new(@para ? @para : fromEnv);
	$$retr->close if $$retr;
	$$retr = $ftp->retr($f) and return $$retr;
	($ftp->code == 550) and log::l("FTP: 550 file unavailable"), return;
	rewindGetFile();
	log::l("ftp get failed, sleeping before trying again");
	sleep 1;
    }
}

#-sub closeFiles() {
#-    #- close any existing connections
#-    foreach (values %hosts) {
#-	  my $retr = $_->[1] if ref $_;
#-	  $$retr->close if $$retr;
#-	  undef $$retr;
#-    }
#-}

sub rewindGetFile() {
    #- close any existing connection.
    foreach (values %hosts) {
	my ($ftp, $retr) = @{$_ || []};
	$$retr->close if $$retr;
	$ftp->close() if $ftp;
    }

    #- make sure to reconnect to server.
    %hosts = ();
}