File modules/cms/generator/target/SFtpTarget.class.php

Last commit: Wed Nov 18 21:01:59 2020 +0100	Jan Dankert	Renaming of target classes for naming convention reasons.
1 <?php 2 // OpenRat Content Management System 3 // Copyright (C) 2002-2012 Jan Dankert, cms@jandankert.de 4 // 5 // This program is free software; you can redistribute it and/or 6 // modify it under the terms of the GNU General Public License 7 // as published by the Free Software Foundation; either version 2 8 // of the License, or (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with this program; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 namespace cms\generator\target; 19 20 use logger\Logger; 21 use util\exception\PublisherException; 22 use util\exception\UIException; 23 24 25 /** 26 * A Secure-FTP (*not* FTPS!) target. 27 */ 28 class SFtpTarget extends ScpTarget 29 { 30 /** 31 * @var resource 32 */ 33 protected $sftpConnection; 34 35 36 // Aufbauen der Verbindung 37 public function open() 38 { 39 $this->createConnection(); 40 41 $this->sftpConnection = @ssh2_sftp($this->sshConnection); 42 43 if (! $this->sftpConnection) 44 throw new PublisherException("Could not initialize SFTP subsystem."); 45 46 } 47 48 49 /** 50 * Kopieren einer Datei vom lokalen System auf den SFTP-Server. 51 * 52 * @param String Quelle 53 * @param String Ziel 54 * @param int time) 55 */ 56 public function put($source, $dest, $lastChangeDate) 57 { 58 $dest = $this->url->path . '/' . $dest; 59 60 $sftp = $this->sftpConnection; 61 62 ssh2_sftp_mkdir ( $sftp, dirname($dest),0755, true); 63 64 $stream = @fopen("ssh2.sftp://$sftp$dest", 'w'); 65 66 if (! $stream) 67 throw new PublisherException("Could not create SFTP-Stream on file: $dest"); 68 69 $data_to_send = @file_get_contents($source); 70 71 if ($data_to_send === false) 72 throw new PublisherException("Could not open local file: $source"); 73 74 if (@fwrite($stream, $data_to_send) === false) 75 throw new PublisherException("Could not send data from file: $source."); 76 77 @fclose($stream); 78 } 79 80 81 /** 82 * Schliessen der FTP-Verbindung.<br> 83 * Sollte unbedingt aufgerufen werden, damit keine unn�tigen Sockets aufbleiben. 84 */ 85 public function close() 86 { 87 parent::close(); 88 } 89 90 91 public static function isAvailable() 92 { 93 return parent::isAvailable() && function_exists('ssh2_sftp'); 94 } 95 } 96
Download modules/cms/generator/target/SFtpTarget.class.php
History Wed, 18 Nov 2020 21:01:59 +0100 Jan Dankert Renaming of target classes for naming convention reasons.