.../Provision/Service/remote/import/hostmaster.php | 23 ++++++++- hosting_remote_import.service.inc | 55 ++++++++++++++++++++++ 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/drush/Provision/Service/remote/import/hostmaster.php b/drush/Provision/Service/remote/import/hostmaster.php index 90cc017..1dc7828 100644 --- a/drush/Provision/Service/remote/import/hostmaster.php +++ b/drush/Provision/Service/remote/import/hostmaster.php @@ -46,6 +46,14 @@ class Provision_Service_remote_import_hostmaster extends Provision_Service_remot $this->server->setProperty('remote_import_field', 'default'); } + /** + * Initialize this class, including option handling. + */ + function init_server() { + parent::init_server(); + $this->server->setProperty('remote_user', ''); + } + function list_sites() { $sites = array(); @@ -121,7 +129,14 @@ class Provision_Service_remote_import_hostmaster extends Provision_Service_remot 'root' => NULL, 'uri' => NULL, ); - return drush_invoke_process(array('remote-host' => $this->server->remote_host, 'remote-user' => $this->server->script_user), $command, $data, array(), array('method' => 'POST', 'integrate' => TRUE)); + $config = array('remote-host' => $this->server->remote_host); + if (!empty($this->server->remote_user)) { + $config['remote-user'] = $this->server->remote_user; + } + else { + $config['remote-user'] = $this->server->server->script_user; + } + return drush_invoke_process($config, $command, $data, array(), array('method' => 'POST', 'integrate' => TRUE)); } function fetch_site($site) { @@ -142,7 +157,11 @@ class Provision_Service_remote_import_hostmaster extends Provision_Service_remot $options = array( 'omit-dir-times' => TRUE, ); - if (drush_core_call_rsync(escapeshellarg($this->server->script_user . '@' . $this->server->remote_host . ':/') . $path, $dest, $options, TRUE, FALSE)) { + $user = $this->server->script_user; + if (!empty($this->server->remote_user)) { + $user = $this->server->remote_user; + } + if (drush_core_call_rsync(escapeshellarg($user . '@' . $this->server->remote_host . ':/') . $path, $dest, $options, TRUE, FALSE)) { drush_log(dt('@path has been fetched from remote server @remote_host.', array( '@path' => $path, '@remote_host' => $this->server->remote_host)) diff --git a/hosting_remote_import.service.inc b/hosting_remote_import.service.inc index 88bbb87..2a4fcf6 100644 --- a/hosting_remote_import.service.inc +++ b/hosting_remote_import.service.inc @@ -25,6 +25,61 @@ class hostingService_remote_import_hostmaster extends hostingService_remote_impo * this service needs to have a port specified for it. */ public $has_port = FALSE; + + /** + * The name displayed to users when creating or editing a server. + */ + public $name = 'Remote hostmaster'; + + + function load() { + parent::load(); + $this->remote_user = variable_get('hosting_user_remote_server_' . $this->server->nid, ''); + } + + function insert() { + parent::insert(); + variable_set('hosting_user_remote_server_' . $this->server->nid, $this->remote_user); + } + + function update() { + parent::update(); + variable_set('hosting_user_remote_server_' . $this->server->nid, $this->remote_user); + } + + function delete() { + parent::delete(); + variable_del('hosting_user_remote_server_' . $this->server->nid); + } + + public function form(&$form) { + parent::form($form); + $form['remote_user'] = array( + '#type' => 'textfield', + '#title' => 'Remote user', + '#description' => t('The remote ssh user.'), + '#default_value' => (isset($this->remote_user)) ? $this->remote_user : '', + '#size' => 20, + '#maxlength' => 255 + ); + } + + function view(&$render) { + parent::view($render); + $render['remote_user'] = array( + '#type' => 'item', + '#title' => t('Remote user'), + '#markup' => filter_xss($this->remote_user), + ); + } + + + public function context_options($task_type, $ref_type, &$task) { + parent::context_options($task_type, $ref_type, $task); + $task->context_options['remote_user'] = variable_get('hosting_user_remote_server_' . $this->server->nid, ''); + drush_log("context_options " . print_r($task,1)); + } + }