mastercraft/aapanel-php-sdk

aaPanel API 的 PHP SDK

v1.0.0-alpha-1 2024-06-05 07:40 UTC

This package is auto-updated.

Last update: 2024-09-22 11:19:25 UTC


README

这是一个用于与 aaPanel API 交互的 PHP SDK。此 SDK 提供方便的方法来管理您的 aaPanel 服务器,包括系统状态、网站管理、备份管理、域名管理、伪静态规则和日志。

目录

安装

您可以通过 Composer 安装 SDK。运行以下命令

composer require mastercraft/aapanel-php-sdk

使用方法

初始化客户端

要开始使用,您需要使用 aaPanel 的基本 URL 和 API 密钥初始化 AaPanelClient。建议您通过环境变量设置 AAPANEL_URL 和 AAPANEL_API_KEY 的值。

examples/demo.php

require __DIR__ . '/../vendor/autoload.php';

use Mastercraft\AapanelPhpSdk\AaPanelClient;
use Mastercraft\AapanelPhpSdk\Services\System;
use Dotenv\Dotenv;

$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->safeLoad();

$baseUri = $_ENV['AAPANEL_URL'];
$apiKey = $_ENV['AAPANEL_API_KEY'];

$client = new AaPanelClient($baseUri, $apiKey);

// Example usage
$system = new System($client);
$systemInfo = $system->getSystemTotal();
print_r($systemInfo);

系统服务

System 服务允许您检索系统状态信息。

use Mastercraft\AapanelPhpSdk\Services\System;

$system = new System($client);

// Get system info
$systemInfo = $system->getSystemTotal();
print_r($systemInfo);

// Get disk information
$diskInfo = $system->getDiskInfo();
print_r($diskInfo);

// Get real-time network status
$networkStatus = $system->getNetwork();
print_r($networkStatus);

// Check for updates
$updateStatus = $system->checkUpdate();
print_r($updateStatus);

// Get Auto Restart Rph
$webname = "www.abc.com";
$rphStatus = $system->getAutoRestartRph($webname);
print_r($rphStatus);

// Auto Restart Rph
$rphStatus = $system->autoRestartRph($webname);
print_r($rphStatus);

网站服务

Website 服务允许您管理 aaPanel 服务器上的网站。

use Mastercraft\AapanelPhpSdk\Services\Website;

$website = new Website($client);

// Get list of sites
$sites = $website->getSites();
print_r($sites);

// Create a new site
$newSite = $website->createSite([
    'webname' => '{"domain":"example.com","domainlist":[],"count":0}',
    'path' => '/www/wwwroot/example.com',
    'type_id' => 0,
    'type' => 'PHP',
    'version' => '72',
    'port' => 80,
    'ps' => 'test site',
    'ftp' => true,
    'ftp_username' => 'example_com',
    'ftp_password' => 'password',
    'sql' => true,
    'codeing' => 'utf8',
    'datauser' => 'example_com',
    'datapassword' => 'password'
]);
print_r($newSite);

// Delete a site
$siteId = 66;
$deletedSite = $website->deleteSite($siteId, 'example.com');
print_r($deletedSite);

备份服务

Backup 服务允许您管理网站备份。

use Mastercraft\AapanelPhpSdk\Services\Backup;

$backup = new Backup($client);

// List backups for a site
$backups = $backup->listBackups($siteId);
print_r($backups);

// Create a new backup
$newBackup = $backup->createBackup($siteId);
print_r($newBackup);

// Delete a backup
$backupId = 121;
$deletedBackup = $backup->deleteBackup($backupId);
print_r($deletedBackup);

域名服务

Domain 服务允许您管理网站的域名。

use Mastercraft\AapanelPhpSdk\Services\Domain;

$domain = new Domain($client);

// List domains for a site
$domains = $domain->listDomains($siteId);
print_r($domains);

// List domains for a site
$domains = $domain->getSiteDomains($siteId);
print_r($domains);

// Add a new domain to a site
$newDomain = $domain->addDomain($siteId, ['webname' => 'example.com', 'domain' => 'new.example.com']);
print_r($newDomain);

// Delete a domain from a site
$deletedDomain = $domain->deleteDomain($siteId, ['webname' => 'example.com', 'domain' => 'new.example.com', 'port' => 80]);
print_r($deletedDomain);

Ssl 服务

Ssl 服务允许您使用 Let's Encrypt 和其他可用提供商管理 SSL 证书。

use Mastercraft\AapanelPhpSdk\Services\Ssl;

$ssl = new Ssl($client);

// Retrieve ssl information
$sslInfo = $ssl->getSslData();
print_r($sslInfo);

// Retrieve ssl certificates
$sslCerts = $ssl->getSslCertificates();
print_r($sslCerts);

// Retrieve Let's Encrypt Account Info
$letsEncrypt = $ssl->getLetsEncryptInfo();
print_r($letsEncrypt);

// Retrieve Registered Panel User (SSL Account) Info
$registeredSslUser = $ssl->getRegisteredUserInfo();
print_r($registeredSslUser);

// Disable current ssl
$sslStatus = $ssl->disableSsl($webname);
print_r($sslStatus);

// Apply for ssl certificate
$certStatus = $ssl->applyForCertificate([
    'domains' => ['example.com', 'example2.com'],
    'id' => $siteId,
]);
print_r($certStatus);

// Enable new ssl certificate
$sslStatus = $ssl->enableSsl([
    'siteName' => $data['webName'],
    'key' => $data['key'],
    'csr' => $data['csr'],
]);
print_r($sslStatus);

伪静态服务

PseudoStatic 服务允许您管理伪静态规则。

use Mastercraft\AapanelPhpSdk\Services\PseudoStatic;

$pseudoStatic = new PseudoStatic($client);

// Get pseudo-static rewrite list
$rewriteList = $pseudoStatic->getRewriteList('example.com');
print_r($rewriteList);

// Get rewrite rule content
$rewriteRule = $pseudoStatic->getRewriteRule('/www/server/panel/vhost/rewrite/nginx/example.com.conf');
print_r($rewriteRule);

// Save rewrite rule content
$savedRewriteRule = $pseudoStatic->saveRewriteRule('/www/server/panel/vhost/rewrite/nginx/example.com.conf', 'new content');
print_r($savedRewriteRule);

日志服务

Log 服务允许您检索日志。

use Mastercraft\AapanelPhpSdk\Services\Log;

$log = new Log($client);

// Get logs
$logLimit = 10;
$logs = $log->getRealtimeLog($logPath);
print_r($logs);

“如何”指南

本节包含有关执行某些操作的说明和解释

如何获取所有现有网站的列表

使用 Website 服务,调用 getSites(); 方法。可以传递额外的参数($page$limit)进行过滤和分页 响应:

{
    "where",
    "page",
    "data": [
        {
            "id",
            "name",
            "path",
            "status",
            "domain",
            ...
        },
        ...
    ],
    "search_history",
    "net_flow_info"
}

如何将新域名或 URL 添加到现有网站

使用 Domain 服务,调用 addDomain($siteId, $domain); 方法。 参数:

  • $siteId: 是指向该新域名的网站的唯一标识符,为了获取 $siteId,请参考 如何获取所有现有网站的列表
  • $domain: 是包含我们想要指向的网站的 webname 的数组,而 domain 是我们正在添加的新 URL。 响应:
{
    "status",
    "msg"
}

如何为新域名或 URL 获取 SSL

此过程高度依赖于 SslDomainSystem 服务,您还可以参考 SSL 示例/演示脚本

  • 将新域名添加到网站,请参考 如何将新域名或 URL 添加到现有网站
  • 调用 系统类 方法获取自动重启 Rph 操作 >>> getAutoRestartRph($webname);
  • 调用 系统类 方法执行自动重启 Rph 操作 >>> autoRestartRph($webname);
  • 调用 Ssl 类 方法申请新域名的证书 >>> applyForCertificate([ 'domains' => ['example.com', 'example2.com'], // 需颁发 SSL 证书的域名列表 'id' => $siteId, ]);
注意:为了获取 $siteId,请查看[如何获取所有现有网站的列表](#How-to-retrieve-list-of-all-existing-websites) 的参考信息 - 调用[Ssl 类](#ssl-service)方法来设置/启用ssl证书 >>> `enableSsl([ 'siteName' => $data['webname'], 'key' => $data['key'], 'csr' => $data['csr'], ]);` 注意:启用Ssl的数据选项中的参数是从申请证书收到的响应中检索的

$data['key'] = $certStatus['private_key']; $data['csr'] = $certStatus['cert'] . ' ' . $certStatus['root'];

</small>
- Call the [Ssl Class](#ssl-service) method to `getSslData()` and `getSslCertificates()` to check records and confirm ssl certificate setup

## Running Tests

To run the tests, use the following command:

```bash
./vendor/bin/phpunit --bootstrap vendor/autoload.php tests

示例测试套件

tests/AaPanelClientTest.php

namespace Mastercraft\AapanelPhpSdk\Tests;

use Mastercraft\AapanelPhpSdk\AaPanelClient;
use Mastercraft\AapanelPhpSdk\Exception\APIException;
use PHPUnit\Framework\TestCase;
use Dotenv\Dotenv;

class AaPanelClientTest extends TestCase
{
    private $apiKey;
    private $baseUri;

    protected function setUp(): void
    {
        $dotenv = Dotenv::createImmutable(__DIR__.'/..');
        $dotenv->safeLoad();
        $this->apiKey = $_ENV['AAPANEL_API_KEY'];
        $this->baseUri = $_ENV['AAPANEL_URL'];
    }

    public function testPost()
    {
        $aaPanelClient = new AaPanelClient($this->baseUri, $this->apiKey);
        $response = $aaPanelClient->post('getSystemTotal');

        $this->assertEquals(['status' => 'success'], $response);
    }

    public function testPostInvalidEndpoint()
    {
        $this->expectException(APIException::class);
        
        $aaPanelClient = new AaPanelClient($this->baseUri, $this->apiKey);
        $aaPanelClient->post('invalidKey');
    }
}

贡献

欢迎贡献!请提交一个pull request或创建一个issue来讨论您的想法。

许可证

本项目采用MIT许可证。请参阅LICENSE文件以获取详细信息。