public function testSFTP() { $config = array('host' => $this->getState('host'), 'port' => $this->getState('port'), 'user' => $this->getState('user'), 'pass' => $this->getState('pass'), 'privkey' => $this->getState('privkey'), 'pubkey' => $this->getState('pubkey'), 'initdir' => $this->getState('initdir')); // Perform the FTP connection test $test = new AEArchiverDirectsftp(); $test->initialize('', $config); $errors = $test->getWarnings(); if (empty($errors) || $test->connect_ok) { $result = true; } else { $result = $errors; } return $result; }
public function testSFTP() { $config = array('host' => $this->getState('host'), 'port' => $this->getState('port'), 'user' => $this->getState('user'), 'pass' => $this->getState('pass'), 'privkey' => $this->getState('privkey'), 'pubkey' => $this->getState('pubkey'), 'initdir' => $this->getState('initdir')); // Check for bad settings if (substr($config['host'], 0, 7) == 'sftp://') { return JText::_('CONFIG_SFTPTEST_BADPREFIX'); } // Perform the FTP connection test $test = new AEArchiverDirectsftp(); $test->initialize('', $config); $errors = $test->getWarnings(); if (empty($errors) || $test->connect_ok) { $result = true; } else { $result = $errors; } return $result; }
/** * Apply the transfer settings to the profile. Returns true if the connection * and uploading a test file works properly, an error message otherwise * * @return bool|string */ public function applyTransferSettings() { // Get state variables $method = $this->getState('method'); $hostname = $this->getState('hostname'); $port = $this->getState('port'); $username = $this->getState('username'); $password = $this->getState('password'); $directory = $this->getState('directory'); $passive = $this->getState('passive'); $livesite = $this->getState('livesite'); // Fix the hostname, in case the user added a protocol (grr...) $protoPos = strpos($hostname,'://'); if($protoPos !== false) { $proto = substr($hostname, 0, $protoPos-1); $proto = strtolower($proto); switch($proto) { case 'ftp': $method = 'ftp'; break; case 'ftps': case 'ftpes': $method = 'ftps'; break; case 'sftp': $method = 'sftp'; break; } $hostname = substr($hostname, $protoPos+3); } // Assign default configuration variables $config = AEFactory::getConfiguration(); $config->set('akeeba.basic.backup_type','full'); $config->set('akeeba.advanced.proc_engine','none'); if( (substr($livesite, 0, 7) != 'http://') && (substr($livesite, 0, 8) != 'https://') ) { $livesite = 'http://'.$livesite; } $livesite = rtrim($livesite,"/\n\r "); $config->set('akeeba.stw.livesite', $livesite); // Apply the transfer settings switch($method) { case 'ftp': case 'ftps': $config->set('akeeba.advanced.archiver_engine', 'directftp'); $config->set('engine.archiver.directftp.host', $hostname); $config->set('engine.archiver.directftp.port', $port); $config->set('engine.archiver.directftp.user', $username); $config->set('engine.archiver.directftp.pass', $password); $config->set('engine.archiver.directftp.initial_directory', $directory); $config->set('engine.archiver.directftp.ftps', ($method == 'ftps' ? 1 : 0)); $config->set('engine.archiver.directftp.passive_mode', ($passive ? 1 : 0)); break; case 'sftp': $config->set('akeeba.advanced.archiver_engine', 'directsftp'); $config->set('engine.archiver.directsftp.host', $hostname); $config->set('engine.archiver.directsftp.port', $port); $config->set('engine.archiver.directsftp.user', $username); $config->set('engine.archiver.directsftp.pass', $password); $config->set('engine.archiver.directsftp.initial_directory', $directory); break; } AEPlatform::save_configuration(); // Connection test switch($method) { case 'ftp': case 'ftps': $config = array( 'host' => $config->get('engine.archiver.directftp.host'), 'port' => $config->get('engine.archiver.directftp.port'), 'user' => $config->get('engine.archiver.directftp.user'), 'pass' => $config->get('engine.archiver.directftp.pass'), 'initdir' => $config->get('engine.archiver.directftp.initial_directory'), 'usessl' => $config->get('engine.archiver.directftp.ftps'), 'passive' => $config->get('engine.archiver.directftp.passive_mode') ); $test = new AEArchiverDirectftp(); $test->initialize('', $config); $errors = $test->getError(); break; case 'sftp': $config = array( 'host' => $config->get('engine.archiver.directsftp.host'), 'port' => $config->get('engine.archiver.directsftp.port'), 'user' => $config->get('engine.archiver.directsftp.user'), 'pass' => $config->get('engine.archiver.directsftp.pass'), 'initdir' => $config->get('engine.archiver.directsftp.initial_directory') ); $test = new AEArchiverDirectsftp(); $test->initialize('', $config); $errors = $test->getError(); break; } // Check for connection errors if(empty($errors) || $test->connect_ok) { $result = true; } else { $result = JText::_('STW_LBL_CONNECTION_ERR_CONNECTION').' '.$errors; return $result; } // Test upload file $file = JPATH_ROOT.DS.'media'.DS.'com_akeeba'.DS.'icons'.DS.'ok_small.png'; $result = $test->addFileRenamed($file, 'akeeba_connection_test.png'); if(!$result) { $result = JText::_('STW_LBL_CONNECTION_ERR_UPLOAD').' '.$result; return $result; } return true; }