PHPackages                             smart-dato/isp-config - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. smart-dato/isp-config

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

smart-dato/isp-config
=====================

ISPConfig SDK for Laravel

v0.0.2(2mo ago)06↓86.4%[2 PRs](https://github.com/smart-dato/isp-config/pulls)MITPHPPHP ^8.4CI passing

Since Mar 31Pushed 2mo agoCompare

[ Source](https://github.com/smart-dato/isp-config)[ Packagist](https://packagist.org/packages/smart-dato/isp-config)[ Docs](https://github.com/smart-dato/isp-config)[ GitHub Sponsors](https://github.com/SmartDato)[ RSS](/packages/smart-dato-isp-config/feed)WikiDiscussions main Synced 4w ago

READMEChangelogDependencies (26)Versions (7)Used By (0)

ISPConfig SDK for Laravel
=========================

[](#ispconfig-sdk-for-laravel)

[![Latest Version on Packagist](https://camo.githubusercontent.com/501be15cb948b986af44eae8261c3d60c02cacf22013364f13eef47a42e66d40/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f736d6172742d6461746f2f6973702d636f6e6669672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/smart-dato/isp-config)[![GitHub Tests Action Status](https://camo.githubusercontent.com/385fc81bebe68696cb9f677950c6439e35f5ff6fb75a6edf923768658d8ebd33/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f736d6172742d6461746f2f6973702d636f6e6669672f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/smart-dato/isp-config/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/7d85e9c094710269f900c009b0981de22d1ba2e9f2592d7e75a8216c28ae373b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f736d6172742d6461746f2f6973702d636f6e6669672f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/smart-dato/isp-config/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/f8fbefc6cee9afec5b5e850c3afe046ee40e3926af759b7c3b6cda022c9a2703/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f736d6172742d6461746f2f6973702d636f6e6669672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/smart-dato/isp-config)

A Laravel SDK for the [ISPConfig](https://www.ispconfig.org/) SOAP API. Provides a fluent, resource-oriented interface to manage clients, websites, mail, DNS, databases, and more.

Requirements
------------

[](#requirements)

- PHP 8.4+
- Laravel 11, 12, or 13
- PHP SOAP extension (`ext-soap`)

Installation
------------

[](#installation)

```
composer require smart-dato/isp-config
```

Publish the config file:

```
php artisan vendor:publish --tag="isp-config-config"
```

Add your ISPConfig credentials to `.env`:

```
ISPCONFIG_HOST=your-server.example.com
ISPCONFIG_PORT=8080
ISPCONFIG_USERNAME=your-remote-user
ISPCONFIG_PASSWORD=your-password
ISPCONFIG_VERIFY_SSL=true
ISPCONFIG_TIMEOUT=30
```

> **Note:** The remote user must be created in ISPConfig under **System &gt; Remote Users** with the appropriate permission checkboxes enabled.

Usage
-----

[](#usage)

### Via Facade

[](#via-facade)

```
use SmartDato\IspConfig\Facades\IspConfig;

// Clients
$clients = IspConfig::client()->getAll();
$client = IspConfig::client()->get(1);
$id = IspConfig::client()->add(0, [
    'company_name' => 'Acme Corp',
    'contact_name' => 'John Doe',
    'username' => 'acme',
    'password' => 'secret',
    // ...
]);

// Websites
$siteId = IspConfig::sites()->webDomain()->add(1, [
    'server_id' => 1,
    'domain' => 'example.com',
    'php' => 'php-fpm',
    'active' => 'y',
    // ...
]);

// Mail
$mailUserId = IspConfig::mail()->user()->add(1, [
    'server_id' => 1,
    'email' => 'joe@example.com',
    'password' => 'secret',
    // ...
]);

// DNS
$recordId = IspConfig::dns()->a()->add(1, [
    'server_id' => 1,
    'zone' => 5,
    'name' => 'www',
    'data' => '93.184.216.34',
    'ttl' => '3600',
    'active' => 'y',
]);

// Databases
$dbId = IspConfig::database()->add(1, [
    'server_id' => 1,
    'type' => 'mysql',
    'database_name' => 'mydb',
    'database_user_id' => 1,
    'active' => 'y',
]);
```

### Via Dependency Injection

[](#via-dependency-injection)

```
use SmartDato\IspConfig\IspConfig;

final class ServerController
{
    public function __construct(
        private readonly IspConfig $ispConfig,
    ) {}

    public function index(): array
    {
        return $this->ispConfig->server()->getAll();
    }
}
```

### Ad-hoc Connections

[](#ad-hoc-connections)

Create a standalone client without relying on config — useful for multi-server setups or dynamic credentials:

```
use SmartDato\IspConfig\IspConfig;

$isp = IspConfig::make([
    'host' => '192.168.1.100',
    'port' => 8080,
    'username' => 'admin',
    'password' => 'secret',
    'verify_ssl' => false,
    'timeout' => 60,
]);

$clients = $isp->client()->getAll();
```

### Available Resources

[](#available-resources)

AccessorSub-resourcesAPI prefix`client()`—`client_*``server()`—`server_*``sites()``webDomain()`, `subdomain()`, `aliasDomain()`, `vhostSubdomain()`, `vhostAliasDomain()`, `folder()`, `folderUser()``sites_web_*``mail()``domain()`, `user()`, `alias()`, `forward()`, `aliasDomain()`, `filter()`, `userFilter()`, `catchall()`, `fetchmail()`, `transport()`, `relayRecipient()`, `policy()`, `blacklist()`, `whitelist()`, `spamfilterUser()`, `spamfilterBlacklist()`, `spamfilterWhitelist()``mail_*``dns()``zone()`, `a()`, `aaaa()`, `cname()`, `mx()`, `ns()`, `txt()`, `srv()`, `ptr()`, `alias()`, `hinfo()`, `rp()``dns_*``database()``user()``sites_database_*``ftp()`—`sites_ftp_user_*``shell()`—`sites_shell_user_*``cron()`—`sites_cron_*`Most resources provide `add()`, `get()`, `update()`, and `delete()` methods. Parameter array keys mirror the ISPConfig database column names — refer to the [ISPConfig API documentation](https://timmehosting.de/ispconfig-api-schnittstelle-zur-automatisierung) for available fields.

### Session Management

[](#session-management)

Sessions are managed automatically:

- **Auto-login** — authenticates lazily on the first API call
- **Auto-logout** — logs out when the Laravel request terminates
- **Session re-auth** — detects expired sessions and re-authenticates transparently

### Raw API Calls

[](#raw-api-calls)

For methods not yet wrapped in a resource class:

```
$result = IspConfig::call('some_api_method', $arg1, $arg2);

// List all available API methods
$methods = IspConfig::getFunctionList();
```

Testing
-------

[](#testing)

The package provides a `FakeConnector` for testing, following Laravel's `Http::fake()` pattern:

```
use SmartDato\IspConfig\Facades\IspConfig;

$fake = IspConfig::fake();

// Stub responses
$fake->stub('client_get', ['id' => 1, 'company_name' => 'Acme']);
$fake->stub('mail_user_add', 15);

// Call your application code
$client = IspConfig::client()->get(1);
$mailUserId = IspConfig::mail()->user()->add(1, ['email' => 'joe@test.com']);

// Assert calls were made
$fake->assertCalled('client_get');
$fake->assertCalled('mail_user_add', fn (array $params) => $params[2]['email'] === 'joe@test.com');
$fake->assertNotCalled('client_delete');
$fake->assertCallCount('client_get', 1);
```

Run the package test suite:

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [SmartDato](https://github.com/smart-dato)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance86

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~20 days

Total

2

Last Release

71d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c3006db55caec62526937fa2d941da32fc5e69e2ca86a52e87c8046da5958d82?d=identicon)[smart-dato](/maintainers/smart-dato)

---

Top Contributors

[![michael-tscholl](https://avatars.githubusercontent.com/u/178569346?v=4)](https://github.com/michael-tscholl "michael-tscholl (1 commits)")[![tschigo](https://avatars.githubusercontent.com/u/344100?v=4)](https://github.com/tschigo "tschigo (1 commits)")

---

Tags

laravelSmartDatoisp-config

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/smart-dato-isp-config/health.svg)

```
[![Health](https://phpackages.com/badges/smart-dato-isp-config/health.svg)](https://phpackages.com/packages/smart-dato-isp-config)
```

###  Alternatives

[spatie/laravel-data

Create unified resources and data transfer objects

1.8k33.0M885](/packages/spatie-laravel-data)[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.3M43](/packages/spatie-laravel-pdf)[codewithdennis/filament-select-tree

The multi-level select field enables you to make single selections from a predefined list of options that are organized into multiple levels or depths.

328482.0k27](/packages/codewithdennis-filament-select-tree)[nativephp/desktop

NativePHP for Desktop

39633.6k8](/packages/nativephp-desktop)[worksome/exchange

Check Exchange Rates for any currency in Laravel.

124581.3k](/packages/worksome-exchange)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3913.7k](/packages/rawilk-profile-filament-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
