1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| <?php
class SFTPConnection {
private $connection;
private $sftp;
public function __construct($host, $port=22) {
$this->connection = @ssh2_connect($host, $port);
if (! $this->connection) {
throw new Exception("Could not connect to $host on port $port.");
} //else echo "Connexion OK.<br />";
}
public function login($username, $password) {
if (! @ssh2_auth_password($this->connection, $username, $password))
throw new Exception("Could not authenticate with username $username and password $password.");
$this->sftp = @ssh2_sftp($this->connection);
if (! $this->sftp) {
throw new Exception("Could not initialize SFTP subsystem.");
} //else echo "Authentification OK.<br />";
}
public function uploadFile($local_file, $remote_file) {
$sftp = $this->sftp;
$stream = @fopen("ssh2.sftp://$sftp$remote_file", 'wb');
if (! $stream) {
throw new Exception("Could not open file: $remote_file");
} //else echo "Ouverture fichier OK.<br />";
$data_to_send = @file_get_contents($local_file);
if ($data_to_send === false)
throw new Exception("Could not open local file: $local_file.");
if (@fwrite($stream, $data_to_send) === false)
throw new Exception("Could not send data from file: $local_file.");
@fclose($stream); // */
}
function scanFilesystem($remote_file) {
$sftp = $this->sftp;
$dir = "ssh2.sftp://$sftp$remote_file";
$tempArray = array();
$handle = opendir($dir);
// List all the files
while (false !== ($file = readdir($handle))) {
if (substr("$file", 0, 1) != ".") {
if(is_dir($file)){
// $tempArray[$file] = $this->scanFilesystem("$dir/$file");
} else {
$tempArray[]=$file;
}
}
}
closedir($handle);
return $tempArray;
}
public function receiveFile($remote_file, $local_file) {
$sftp = $this->sftp;
$stream = @fopen("ssh2.sftp://$sftp$remote_file", 'r');
if (! $stream)
throw new Exception("Could not open file: $remote_file");
$contents = fread($stream, filesize("ssh2.sftp://$sftp$remote_file"));
file_put_contents ($local_file, $contents);
@fclose($stream);
}
public function deleteFile($remote_file){
$sftp = $this->sftp;
unlink("ssh2.sftp://$sftp$remote_file");
}
}
/*echo "Tentative de connexion SCP.<br /><br />";
function my_ssh_disconnect($reason, $message, $language) {
printf("Server disconnected with reason code [%d] and message: %s\n", $reason, $message);
}
//Notification à l'utilisateur si le serveur termine la connexion
$methods = array('kex'=>'diffie-hellman-group1-sha1',
'client_to_server'=>array('crypt'=>'3des-cbc', 'comp'=>'none'),
'server_to_client'=>array('crypt'=>'aes256-cbc,aes192-cbc,aes128-cbc', 'comp'=>'none'));
$callbacks = array('disconnect'=>'my_ssh_disconnect');
echo "Lancement de la connexion.<br /><br />";
$conn_id = ssh2_connect($serveur, 22); // , $methods, $callbacks
echo "Connexion lancée ($conn_id).<br /><br />";
$fingerprint = ssh2_fingerprint($conn_id, SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);
echo "Empreinte retournée ($fingerprint).<br /><br />";
if ($conn_id) {
echo "Connexion ouverte ($conn_id).<br /><br />";
if (ssh2_auth_password($conn_id, $login, $passe)) { // Identification avec un nom d'utilisateur et un mot de passe
echo "Utilisateur connecté.<br /><br />";
ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);
if (ssh2_scp_send($conn_id, $file, "/Receive/".$file, 0644)) { // Tente de charger le fichier $file
echo "Chargement avec succès du fichier $file\n";
} else
echo "Il y a eu un problème lors du chargement du fichier $file<br /><br />";
} else
echo "Connexion impossible en tant que '".$login."'<br /><br />";
} else
echo "Impossible de se connecter au serveur.<br /><br />"; // */
/*echo "Tentative de connexion FTP.<br /><br />";
$conn_id = ftp_connect($serveur, 22); // Mise en place d'une connexion basique "sftp://83.167.36.240"
echo "Connexion lancée ($conn_id).<br /><br />";
if ($conn_id) {
echo "Connexion ouverte ($conn_id).<br /><br />";
if (ftp_login($conn_id, $login, $passe)) { // Identification avec un nom d'utilisateur et un mot de passe
echo "Utilisateur connecté.<br /><br />";
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) { // Tente de charger le fichier $file
echo "Chargement avec succès du fichier $file\n";
} else
echo "Il y a eu un problème lors du chargement du fichier $file<br /><br />";
} else
echo "Connexion impossible en tant que '".$login."'<br /><br />";
} else
echo "Impossible de se connecter au serveur.<br /><br />"; // */
?> |
Partager