dedipanel/phpseclib-wrapper-bundle

PHPSeclib Wrapper with connections manager, logging, os-specific helpers, ...

1.0.0 2014-12-26 21:40 UTC

README

Build Status Scrutinizer Quality Score

This bundle contains useful methods (connection management, easy key storing, verification on installed packets ...) on top of PHPSeclib library (pure php ssh/sftp client).

You can easily connect to ssh/sftp servers and do some basic operations (upload, download, mkdir, touch, chmod, ...). You can also access directly the phpseclib API. The wrapper provide logging functionnality.

Install

composer require phpseclib/phpseclib 2.0.*@dev
composer require dedipanel/phpseclib-wrapper-bundle ~1.0

How to use

Server

You can use Server objects provided by the Bundle or you can implement your own Serer class on top of Dedipanel\PHPSeclibWrapperBundle\Server\ServerInterface.

$server = new Dedipanel\PHPSeclibWrapperBundle\Server\Server;
$server
    ->setHostname('localhost')
    ->setPort(22)
    ->setUser('test')
    ->setPassword('test)
;

### Connection Manager

The bundle provide a connection manager, allowing to use the same connection at different points :

$logger  = new Psr\Log\NullLogger(); // logger used to log ssh/sftp interactions.
$manager = $this->container->get('dedipanel.connection_manager');

$connection   = $manager->getConnectionFromServer($server);
$connectionId = $manager->getConnectionId($connection);

Generate private/public key

The bundle provide easy way to generate public/private key (see KeyHelper) and to store it (see FileKeyStore). By default, these keys are stored and retrieved to/from files, but you can implements you own KeyStore strategy.

$keyHelper    = $this->container->get('dedipanel.key_helper');
$privateKeyId = uniqid(true); 
$publicKey    = $keyHelper->createKey($privateKeyId);

You can also use the KeyHelper for directly uploading the public key to the server. You will need to provide a Connection instance for that :

$keyHelper->createKey($privateKeyId, $connection);

Logging