Commit:    25bd6ae8dd0d4798ca20ccf94794d41c3d87f0f9
Author:    Christoph M. Becker <[email protected]>         Thu, 27 Feb 2020 
11:38:08 +0100
Parents:   a630bada1e8612cc42306f97c80396c96acb22e1
Branches:  server-migration

Link:       
http://git.php.net/?p=web/rmtools.git;a=commitdiff;h=25bd6ae8dd0d4798ca20ccf94794d41c3d87f0f9

Log:
Upload to two FTP servers

We are planning to migrate windows.php.net to a new server.  During the
migration period, we want the uploads to go to both the current and the
new machine.  We accomplish that by having an additional credentials
file (credentials_ftps2.php), and running the upload routines twice.

Changed paths:
  M  include/Tools.php

diff --git a/include/Tools.php b/include/Tools.php
index 7084b01..12b9f9d 100644
--- a/include/Tools.php
+++ b/include/Tools.php
@@ -127,25 +127,26 @@ function upload_file($src, $target)
 
 function upload_file_curl($src, $target) // SAZ - Like upload_file(), but 
using curl
 {
-       include __DIR__ . '/../data/config/credentials_ftps.php';
-       $ftp_user = $user_snaps;
-       $ftp_password = $password;
-
-       $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}/${target}";
-       $fp = fopen($src, "rb");
-
-       $ch = curl_init();
-       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
-       curl_setopt($ch, CURLOPT_URL, $remoteurl);
-       curl_setopt($ch, CURLOPT_UPLOAD, 1);
-       curl_setopt($ch, CURLOPT_INFILE, $fp);
-       curl_setopt($ch, CURLOPT_USERPWD, $ftp_user . ':' . $ftp_password);
-       if (curl_exec($ch) === false)  {
-               echo "Error, upload_file_curl(): " . curl_error($ch) . "\n";
-               return false;
+       foreach (['credentials_ftps', 'credentials_ftps2'] as 
$credentials_ftps) {
+               include __DIR__ . "/../data/config/$credentials_ftps.php";
+               $ftp_user = $user_snaps;
+               $ftp_password = $password;
+
+               $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}/${target}";
+               $fp = fopen($src, "rb");
+
+               $ch = curl_init();
+               curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+               curl_setopt($ch, CURLOPT_URL, $remoteurl);
+               curl_setopt($ch, CURLOPT_UPLOAD, 1);
+               curl_setopt($ch, CURLOPT_INFILE, $fp);
+               curl_setopt($ch, CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
+               if (curl_exec($ch) === false)  {
+                       echo "Error, upload_file_curl(): " . curl_error($ch) . 
"\n";
+                       return false;
+               }
+               fclose($fp);
        }
-       fclose($fp);
-
        return true;
 }
 
@@ -165,100 +166,102 @@ function update_snapshot_page()
 
 function upload_build_result_ftp_curl($src_dir, $target)
 {
-       include __DIR__ . '/../data/config/credentials_ftps.php';
+       foreach (['credentials_ftps', 'credentials_ftps2'] as 
$credentials_ftps) {
+               include __DIR__ . "/../data/config/$credentials_ftps.php";
 
-       $ftp = ftp_ssl_connect($ftp_server);
-       if (!$ftp) {
-               echo "Cannot connect to $ftp_server\n";
-               return false;
-       }
-       $login_result = ftp_login($ftp, $user_snaps, $password);
-       if (!$login_result) {
-               return false;
-       }
-       
-       $try = 0;
-       do {
-               $status = ftp_make_directory($ftp, $target. '/logs');
-               $try++;
-       } while ( $status === false && $try < 10 );
-       ftp_close($ftp);
+               $ftp = ftp_ssl_connect($ftp_server);
+               if (!$ftp) {
+                       echo "Cannot connect to $ftp_server\n";
+                       return false;
+               }
+               $login_result = ftp_login($ftp, $user_snaps, $password);
+               if (!$login_result) {
+                       return false;
+               }
+               
+               $try = 0;
+               do {
+                       $status = ftp_make_directory($ftp, $target. '/logs');
+                       $try++;
+               } while ( $status === false && $try < 10 );
+               ftp_close($ftp);
 
-       $curl = array();
+               $curl = array();
 
-       $ftp_path   = $target;
-       $ftp_user   = $user_snaps;
-       $ftp_password   = $password;
+               $ftp_path   = $target;
+               $ftp_user   = $user_snaps;
+               $ftp_password   = $password;
 
-       if ($ftp_path[0] != '/') {
-               $ftp_path = '/' . $ftp_path;
-       }
-       $mh = \curl_multi_init();
+               if ($ftp_path[0] != '/') {
+                       $ftp_path = '/' . $ftp_path;
+               }
+               $mh = \curl_multi_init();
 
-       $files = glob($src_dir . '/*.{zip,json}', GLOB_BRACE);
-       foreach ($files as $i => $local_file) {
+               $files = glob($src_dir . '/*.{zip,json}', GLOB_BRACE);
+               foreach ($files as $i => $local_file) {
 
-               $curl[$i] = $ch =  \curl_init();
-               $fp = fopen($local_file, "rb");
-               $local_file = basename($local_file);
+                       $curl[$i] = $ch =  \curl_init();
+                       $fp = fopen($local_file, "rb");
+                       $local_file = basename($local_file);
 
-               $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/${local_file}";
+                       $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/${local_file}";
 
-               \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
-               \curl_setopt($ch, CURLOPT_URL, $remoteurl);
-               \curl_setopt($ch, CURLOPT_UPLOAD, 1);
-               \curl_setopt($ch, CURLOPT_INFILE, $fp);
-               \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
+                       \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+                       \curl_setopt($ch, CURLOPT_URL, $remoteurl);
+                       \curl_setopt($ch, CURLOPT_UPLOAD, 1);
+                       \curl_setopt($ch, CURLOPT_INFILE, $fp);
+                       \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
 
-               \curl_multi_add_handle ($mh, $ch);
-       }
+                       \curl_multi_add_handle ($mh, $ch);
+               }
 
-       $files = glob($src_dir . '/logs/*.*');
-       $offset = $i + 1;
-       foreach ($files as $i => $local_file) {
+               $files = glob($src_dir . '/logs/*.*');
+               $offset = $i + 1;
+               foreach ($files as $i => $local_file) {
 
-               $ch = $curl[$offset + $i] = \curl_init();
-               $fp = fopen($local_file, "rb");
-               $local_file = basename($local_file);
+                       $ch = $curl[$offset + $i] = \curl_init();
+                       $fp = fopen($local_file, "rb");
+                       $local_file = basename($local_file);
 
-               $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/logs/${local_file}";
+                       $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/logs/${local_file}";
 
-               \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
-               \curl_setopt($ch, CURLOPT_URL, $remoteurl);
-               \curl_setopt($ch, CURLOPT_UPLOAD, 1);
-               \curl_setopt($ch, CURLOPT_INFILE, $fp);
-               \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
+                       \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+                       \curl_setopt($ch, CURLOPT_URL, $remoteurl);
+                       \curl_setopt($ch, CURLOPT_UPLOAD, 1);
+                       \curl_setopt($ch, CURLOPT_INFILE, $fp);
+                       \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
 
-               \curl_multi_add_handle ($mh, $ch);
-       }
+                       \curl_multi_add_handle ($mh, $ch);
+               }
 
-       $retry = 0;
-       do {
-               $err = 0;
+               $retry = 0;
                do {
-                       \curl_multi_exec($mh,$active);
-                       $info = curl_multi_info_read($mh);
-                       if ($info !== false) {
-                               curl_multi_remove_handle($mh, $info['handle']);
-                               if ($info['result'] != 0)  {
-                                       $err = 1;
-//                                     echo curl_getinfo($info['handle'], 
CURLINFO_EFFECTIVE_URL) . "\n";
-//                                     echo curl_error($info['handle']) . 
"\n\n";
-                                       curl_multi_add_handle($mh, 
$info['handle']);
+                       $err = 0;
+                       do {
+                               \curl_multi_exec($mh,$active);
+                               $info = curl_multi_info_read($mh);
+                               if ($info !== false) {
+                                       curl_multi_remove_handle($mh, 
$info['handle']);
+                                       if ($info['result'] != 0)  {
+                                               $err = 1;
+//                                             echo 
curl_getinfo($info['handle'], CURLINFO_EFFECTIVE_URL) . "\n";
+//                                             echo 
curl_error($info['handle']) . "\n\n";
+                                               curl_multi_add_handle($mh, 
$info['handle']);
+                                       }
                                }
+                       } while ($active);
+                       $retry++;
+               } while ($err != 0 && $retry < 10);
+
+               foreach ($curl as $ch) {
+                       \curl_multi_remove_handle($mh, $ch);
+                       if (\curl_errno($ch) != 0) {
+                               echo \curl_error($ch) . "\n";
                        }
-               } while ($active);
-               $retry++;
-       } while ($err != 0 && $retry < 10);
-
-       foreach ($curl as $ch) {
-               \curl_multi_remove_handle($mh, $ch);
-               if (\curl_errno($ch) != 0) {
-                       echo \curl_error($ch) . "\n";
+                       \curl_close($ch);
                }
-               \curl_close($ch);
+               //\curl_multi_close($mh);
        }
-       //\curl_multi_close($mh);
     return true;
 }
 
@@ -373,101 +376,103 @@ function xmail($from, $to, $subject, $text, array 
$attachment = array())
 
 function upload_pecl_pkg_ftp_curl($files, $logs, $target)
 {
-       include __DIR__ . '/../data/config/credentials_ftps.php';
+       foreach (['credentials_ftps', 'credentials_ftps2'] as 
$credentials_ftps) {
+               include __DIR__ . "/../data/config/$credentials_ftps.php";
 
-       $ftp = ftp_ssl_connect($ftp_server);
-       if (!$ftp) {
-               echo "Cannot connect to $ftp_server\n";
-               return false;
-       }
-       $login_result = ftp_login($ftp, $user_pecl, $password_pecl);
-       if (!$login_result) {
-               return false;
-       }
-       
-       $try = 0;
-       do {
-               $status = ftp_make_directory($ftp, $target . '/logs/');
-               $try++;
-       } while ( $status === false && $try < 10 );
-       ftp_close($ftp);
+               $ftp = ftp_ssl_connect($ftp_server);
+               if (!$ftp) {
+                       echo "Cannot connect to $ftp_server\n";
+                       return false;
+               }
+               $login_result = ftp_login($ftp, $user_pecl, $password_pecl);
+               if (!$login_result) {
+                       return false;
+               }
+               
+               $try = 0;
+               do {
+                       $status = ftp_make_directory($ftp, $target . '/logs/');
+                       $try++;
+               } while ( $status === false && $try < 10 );
+               ftp_close($ftp);
 
-       $curl = array();
+               $curl = array();
 
-       $ftp_path   = $target;
-       $ftp_user   = $user_pecl;
-       $ftp_password   = $password_pecl;
+               $ftp_path   = $target;
+               $ftp_user   = $user_pecl;
+               $ftp_password   = $password_pecl;
 
-       if ($ftp_path[0] != '/') {
-               $ftp_path = '/' . $ftp_path;
-       }
-       $mh = \curl_multi_init();
+               if ($ftp_path[0] != '/') {
+                       $ftp_path = '/' . $ftp_path;
+               }
+               $mh = \curl_multi_init();
 
-       $files = is_array($files) ? $files : array($files);
-       $offset = 0;
-       foreach ($files as $i => $local_file) {
+               $files = is_array($files) ? $files : array($files);
+               $offset = 0;
+               foreach ($files as $i => $local_file) {
 
-               $curl[$i] = $ch =  \curl_init();
-               $fp = fopen($local_file, "rb");
-               $local_file = basename($local_file);
+                       $curl[$i] = $ch =  \curl_init();
+                       $fp = fopen($local_file, "rb");
+                       $local_file = basename($local_file);
 
-               $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/${local_file}";
+                       $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/${local_file}";
 
-               \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
-               \curl_setopt($ch, CURLOPT_URL, $remoteurl);
-               \curl_setopt($ch, CURLOPT_UPLOAD, 1);
-               \curl_setopt($ch, CURLOPT_INFILE, $fp);
-               \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
+                       \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+                       \curl_setopt($ch, CURLOPT_URL, $remoteurl);
+                       \curl_setopt($ch, CURLOPT_UPLOAD, 1);
+                       \curl_setopt($ch, CURLOPT_INFILE, $fp);
+                       \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
 
-               \curl_multi_add_handle ($mh, $ch);
-               $offset++;
-       }
+                       \curl_multi_add_handle ($mh, $ch);
+                       $offset++;
+               }
 
-       $files = is_array($logs) ? $logs : array($logs);
-       foreach ($files as $i => $local_file) {
+               $files = is_array($logs) ? $logs : array($logs);
+               foreach ($files as $i => $local_file) {
 
-               $ch = $curl[$offset + $i] = \curl_init();
-               $fp = fopen($local_file, "rb");
-               $local_file = basename($local_file);
+                       $ch = $curl[$offset + $i] = \curl_init();
+                       $fp = fopen($local_file, "rb");
+                       $local_file = basename($local_file);
 
-               $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/logs/${local_file}";
+                       $remoteurl = "ftps://" . urlencode($ftp_user) . ":" . 
urlencode($ftp_password) . "@${ftp_server}${ftp_path}/logs/${local_file}";
 
-               \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
-               \curl_setopt($ch, CURLOPT_URL, $remoteurl);
-               \curl_setopt($ch, CURLOPT_UPLOAD, 1);
-               \curl_setopt($ch, CURLOPT_INFILE, $fp);
-               \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
+                       \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+                       \curl_setopt($ch, CURLOPT_URL, $remoteurl);
+                       \curl_setopt($ch, CURLOPT_UPLOAD, 1);
+                       \curl_setopt($ch, CURLOPT_INFILE, $fp);
+                       \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . 
$ftp_password);
 
-               \curl_multi_add_handle ($mh, $ch);
-       }
+                       \curl_multi_add_handle ($mh, $ch);
+               }
 
-       $retry = 0;
-       do {
-               $err = 0;
+               $retry = 0;
                do {
-                       \curl_multi_exec($mh,$active);
-                       $info = curl_multi_info_read($mh);
-                       if ($info !== false) {
-                               curl_multi_remove_handle($mh, $info['handle']);
-                               if ($info['result'] != 0)  {
-                                       $err = 1;
-//                                     echo curl_getinfo($info['handle'], 
CURLINFO_EFFECTIVE_URL) . "\n";
-//                                     echo curl_error($info['handle']) . 
"\n\n";
-                                       curl_multi_add_handle($mh, 
$info['handle']);
+                       $err = 0;
+                       do {
+                               \curl_multi_exec($mh,$active);
+                               $info = curl_multi_info_read($mh);
+                               if ($info !== false) {
+                                       curl_multi_remove_handle($mh, 
$info['handle']);
+                                       if ($info['result'] != 0)  {
+                                               $err = 1;
+//                                             echo 
curl_getinfo($info['handle'], CURLINFO_EFFECTIVE_URL) . "\n";
+//                                             echo 
curl_error($info['handle']) . "\n\n";
+                                               curl_multi_add_handle($mh, 
$info['handle']);
+                                       }
                                }
+                       } while ($active);
+                       $retry++;
+               } while ($err != 0 && $retry < 10);
+
+               foreach ($curl as $ch) {
+                       \curl_multi_remove_handle($mh, $ch);
+                       if (\curl_errno($ch) != 0) {
+                               echo \curl_error($ch) . "\n";
                        }
-               } while ($active);
-               $retry++;
-       } while ($err != 0 && $retry < 10);
-
-       foreach ($curl as $ch) {
-               \curl_multi_remove_handle($mh, $ch);
-               if (\curl_errno($ch) != 0) {
-                       echo \curl_error($ch) . "\n";
+                       \curl_close($ch);
                }
-               \curl_close($ch);
+               //\curl_multi_close($mh);
        }
-       //\curl_multi_close($mh);
     return true;
 }
-- 
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to