| Server IP : 80.74.154.100 / Your IP : 216.73.217.0 Web Server : Apache System : Linux marissa.metanet.ch 4.18.0-553.141.2.lve.el7h.x86_64 #1 SMP Wed Jul 8 17:20:31 UTC 2026 x86_64 User : onlineadmin ( 10487) PHP Version : 8.5.7 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/httpd/vhosts/comeonline.ch/.drush/ |
Upload File : |
<?php
/**
* @file
* Example "Sync via HTTP" sql-sync command alter.
*
* Sync_via_http allows you to sql-sync your database using HTTP
* (e.g. wget or curl) instead of rsync. This is helpful for
* exporting your database to colaborators without shell access
* to the production or staging server.
*
* For example:
*
* @code
* $aliases['staging'] = array (
* 'root' => '/srv/www/drupal',
* 'uri' => 'staging.site.com',
* 'source-command-specific' => array(
* 'sql-sync' => array(
* 'http-sync' => 'https://staging.site.com/protected-directory/site-database-dump.sql',
* 'http-sync-user' => 'wwwadmin',
* 'http-sync-password' => 'secretsecret',
* ),
* ),
* );
* @endcode
*
* To use this feature, copy the 'source-command-specific'
* item from the example alias above, place it in your staging
* site aliases, and custom the access credentials as
* necessary. You must also copy the sync_via_http.drush.inc
* file to a location where Drush will find it, such as
* $HOME/.drush. See `drush topic docs-commands` for more
* information.
*
* IMPORTANT NOTE: This example does not cause the sql dump
* to be performed; it is presumed that the dump file already
* exists at the provided URL. For a full solution, a web page
* that initiated an sql-dump (or perhaps a local sql-sync followed
* by an sql-sanitize and then an sql-dump) would be necessary.
*/
/**
* Implements hook_drush_help_alter().
*
* When a hook extends a command with additional options, it must
* implement help alter and declare the option(s). Doing so will add
* the option to the help text for the modified command, and will also
* allow the new option to be specified on the command line. Without
* this, Drush will fail with an error when a user attempts to use
* the option.
*/
function sync_via_http_drush_help_alter(&$command) {
if ($command['command'] == 'sql-sync') {
$command['options']['http-sync'] = "Copy the database via http instead of rsync. Value is the url that the existing database dump can be found at.";
$command['sub-options']['http-sync']['http-sync-user'] = "Username for the protected directory containing the sql dump.";
$command['sub-options']['http-sync']['http-sync-password'] = "Password for the same directory.";
}
}
/**
* Implements drush_hook_pre_COMMAND().
*
* During the pre hook, determine if the http-sync option has been
* specified. If it has been, then disable the normal ssh + rsync
* dump-and-transfer that sql-sync usually does, and transfer the
* database dump via an http download.
*/
function drush_sync_via_http_pre_sql_sync($source = NULL, $destination = NULL) {
$sql_dump_download_url = drush_get_option('http-sync');
if (!empty($sql_dump_download_url)) {
$user = drush_get_option('http-sync-user', FALSE);
$password = drush_get_option('http-sync-password', FALSE);
$source_dump_file = _drush_sync_via_http_download_file($sql_dump_download_url, $user, $password);
if ($source_dump_file === FALSE) {
return drush_set_error('DRUSH_CANNOT_DOWNLOAD', dt("The URL !url could not be downloaded.", array('!url' => $sql_dump_download_url)));
}
drush_set_option('target-dump', $source_dump_file);
drush_set_option('no-dump', TRUE);
drush_set_option('no-sync', TRUE);
}
}
/**
* Downloads a files.
*
* Optionaly uses user authentication, using either wget or curl, as available.
*/
function _drush_sync_via_http_download_file($url, $user = FALSE, $password = FALSE, $destination = FALSE, $overwrite = TRUE) {
static $use_wget;
if ($use_wget === NULL) {
$use_wget = drush_shell_exec('which wget');
}
$destination_tmp = drush_tempnam('download_file');
if ($use_wget) {
if ($user && $password) {
drush_shell_exec("wget -q --timeout=30 --user=%s --password=%s -O %s %s", $user, $password, $destination_tmp, $url);
}
else {
drush_shell_exec("wget -q --timeout=30 -O %s %s", $destination_tmp, $url);
}
}
else {
if ($user && $password) {
drush_shell_exec("curl -s -L --connect-timeout 30 --user %s:%s -o %s %s", $user, $password, $destination_tmp, $url);
}
else {
drush_shell_exec("curl -s -L --connect-timeout 30 -o %s %s", $destination_tmp, $url);
}
}
if (!drush_get_context('DRUSH_SIMULATE')) {
if (!drush_file_not_empty($destination_tmp) && $file = @file_get_contents($url)) {
@file_put_contents($destination_tmp, $file);
}
if (!drush_file_not_empty($destination_tmp)) {
// Download failed.
return FALSE;
}
}
if ($destination) {
drush_move_dir($destination_tmp, $destination, $overwrite);
return $destination;
}
return $destination_tmp;
}