Add phpseclib sftp adapter

This commit is contained in:
Dmitri Perunov 2015-02-10 16:28:08 +06:00
parent c88039e80c
commit 5b1463cdc5
4 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,49 @@
<?php
namespace Knp\Bundle\GaufretteBundle\DependencyInjection\Factory;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
/**
* Phpseclib Sftp Adapter Factory
*/
class PhpseclibSftpAdapterFactory implements AdapterFactoryInterface
{
/**
* {@inheritDoc}
*/
function create(ContainerBuilder $container, $id, array $config)
{
$container
->setDefinition($id, new DefinitionDecorator('knp_gaufrette.adapter.phpseclib_sftp'))
->addArgument(new Reference($config['phpseclib_sftp_id']))
->addArgument($config['directory'])
->addArgument($config['create'])
;
}
/**
* {@inheritDoc}
*/
function getKey()
{
return 'phpseclib_sftp';
}
/**
* {@inheritDoc}
*/
function addConfiguration(NodeDefinition $builder)
{
$builder
->children()
->scalarNode('phpseclib_sftp_id')->isRequired()->end()
->scalarNode('directory')->defaultNull()->end()
->booleanNode('create')->defaultFalse()->end()
->end()
;
}
}

View File

@ -375,6 +375,47 @@ services:
arguments: [@acme_test.ssh.session]
```
## Phpseclib Sftp (phpseclib_sftp)
Adapter for phpseclib SFTP (SSH-FTP).
### Parameters
* `phpseclib_sftp_id` The id of the service that provides SFTP access.
* `directory` The remote directory *(default null)*.
* `create` Whether to create the directory if it does not exist *(default false)*.
### Example
``` yaml
# app/config/config.yml
knp_gaufrette:
adapters:
foo:
phpseclib_sftp:
phpseclib_sftp_id: acme_test.sftp
directory: /example/sftp
create: true
```
In your AcmeTestBundle, add following service definitions:
``` yaml
# src/Acme/TestBundle/Resources/config/services.yml
parameters:
acme_test.ssh.host: my_host_name
acme_test.ssh.username: user_name
acme_test.ssh.password: some_secret
services:
acme_test.sftp:
class: Net_SFTP
arguments: [%acme_test.ssh_host%]
calls:
- [login, [%acme_test.ssh.username%, %acme_test.ssh.password%]]
```
## Apc (apc)
Adapter for APC.

View File

@ -47,6 +47,9 @@
<service id="knp_gaufrette.adapter.factory.sftp" class="Knp\Bundle\GaufretteBundle\DependencyInjection\Factory\SftpAdapterFactory">
<tag name="gaufrette.adapter.factory" />
</service>
<service id="knp_gaufrette.adapter.factory.phpseclib_sftp" class="Knp\Bundle\GaufretteBundle\DependencyInjection\Factory\PhpseclibSftpAdapterFactory">
<tag name="gaufrette.adapter.factory" />
</service>
<service id="knp_gaufrette.adapter.factory.apc" class="Knp\Bundle\GaufretteBundle\DependencyInjection\Factory\ApcAdapterFactory">
<tag name="gaufrette.adapter.factory" />
</service>

View File

@ -40,6 +40,7 @@
</service>
<service id="knp_gaufrette.adapter.ftp" class="Gaufrette\Adapter\Ftp" abstract="true" public="false" />
<service id="knp_gaufrette.adapter.sftp" class="Gaufrette\Adapter\Sftp" abstract="true" public="false" />
<service id="knp_gaufrette.adapter.phpseclib_sftp" class="Gaufrette\Adapter\PhpseclibSftp" abstract="true" public="false" />
<service id="knp_gaufrette.adapter.apc" class="Gaufrette\Adapter\Apc" abstract="true" public="false">
<argument /><!-- prefix -->
<argument /><!-- ttl -->