Skip to content

ProfiCloS/vestacp-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Nov 7, 2019
c6a3375 · Nov 7, 2019

History

34 Commits
Feb 23, 2019
Feb 23, 2019
Feb 6, 2019
Feb 5, 2019
Feb 5, 2019
Feb 23, 2019
Nov 7, 2019
Nov 7, 2019

Repository files navigation

GitHub version Build Status codecov

VestaCP PHP API

How to use

  1. Installation

    $ composer require proficlos/vestacp-api
  2. Create Client

    a) Easy way

    use ProfiCloS\VestaCP\Client;
    
    // easy way to create Client
    $client = Client::simpleFactory('https://someHost', 'someUser', 'somePass');

    b) For some reasons (more hosts, etc) you may need create objects alone

    use ProfiCloS\VestaCP\Client;
    use ProfiCloS\VestaCP\Authorization\Credentials;
    use ProfiCloS\VestaCP\Authorization\Host;
    
    $credentials = new Credentials('someUser', 'somePassword');
    $host = new Host('https://someHost', $credentials);
    $client = new Client($host);
  3. Usage

    // verify login
    $client->testAuthorization(); // bool

    You can simply send one of prepared commands (or you can write own command - must implements \ProfiCloS\VestaCP\Command\ICommand )

    $command = new SomeCommand(); 
    $response = $client->send( $command );
    
    echo $response->getResponseText();

    Or you can use prepared modules

    a) user module

    $userModule = $client->getModuleUser();
    
    $userModule->list(); // returns all users with data
    $userModule->detail('admin'); // returns selected user with data
    $userModule->changePassword('admin', 'otherPa$$word');
    $userModule->add('other_user', 'pa$$word', 'some@email.com');
    $userModule->delete('other_user');
    // ... etc

    b) web module

    $webModule = $client->getModuleWeb('admin'); // web module needs user
    
    $webModule->listDomains();
    $webModule->addDomain('domain.com');
    $webModule->addDomainLetsEncrypt('domain.com', 'www.domain.com'); // needs longer timeout
    $webModule->deleteDomainLetsEncrypt('domain.com');
    $webModule->addDomainFtp('domain.com', 'test', 'pa$$word');
    $webModule->changeDomainFtpPassword('domain.com', 'admin_test', 'otherPa$$word');
    $webModule->changeDomainFtpPath('domain.com', 'admin_test', 'path/other');
    $webModule->deleteDomainFtp('domain.com', 'admin_test');
    $webModule->deleteDomain('domain.com');
    // ... etc

    c) mail module

    $mailModule = $client->getModuleMail('admin'); // mail module needs user
    
    $mailModule->listDomains(); // returns mail domains from selected user
    $mailModule->addDomain('domain.com'); // add domain
    $mailModule->listAccounts('domain.com'); // returns accounts from selected user and domain
    $mailModule->listDomainDkim('domain.com'); 
    $mailModule->listDomainDkimDns('domain.com');
    $mailModule->addAccount('domain.com', 'info', 'pa$$word'); // add info@domain.com account
    $mailModule->changeAccountPassword('domain.com', 'info', 'otherPa$$word'); // change info@domain.com password
    $mailModule->deleteAccount('domain.com', 'info');
    $mailModule->deleteDomain('domain.com');
    // ... etc

    d) db module

    // modules
    $dbModule = $client->getModuleDb(); 
    
    // todo
    // ... etc

    e) cron module

    $cronModule = $client->getModuleCron(); 
    
    // todo
    // ... etc

    f) backup module

    $backupModule = $client->getModuleBackup(); 
    
    // todo
    // ... etc

Buy us a coffee <3

Buy me a Coffee

Donate us <3

ETH: 0x7D771A56735500f76af15F589155BDC91613D4aB
UBIQ: 0xAC08C7B9F06EFb42a603d7222c359e0fF54e0a13