sinr rr/php-diia-sdk

该包已被 废弃 且不再维护。未建议替代包。

PHP Diia SDK

dev-master 2021-08-11 14:50 UTC

This package is auto-updated.

Last update: 2023-07-11 19:27:44 UTC


README

Total Downloads Latest Stable Version License

介绍

Diia SDK 为与 id.gov.ua API 交互和管理分支及产品提供了简洁的接口。

文档

安装

要在项目中安装 SDK,您需要通过 composer 引入该包

composer require sinnrrr/php-diia-sdk

基本用法

您可以创建 SDK 的一个实例,如下所示

$diia = new Sinnrrr\Diia\Diia(TOKEN_HERE);

使用 Diia 实例,您可以执行多个操作以及检索 Diia API 提供的不同资源

$branches = $diia->branches();

这将为您提供一个访问到的分支数组,其中每个分支都由 Sinnrrr\Diia\Resources\Branch 的一个实例表示,该实例具有多个公共属性,如 $name$email$region$scopes 等。

您还可以使用以下方式检索单个分支

$branch = $diia->branch(BRANCH_ID_HERE);

对于此 SDK 支持的多个操作,您可能需要传递一些参数,例如在创建新服务器时

$server = $diia->createServer([
    "provider"=> ServerProviders::DIGITAL_OCEAN,
    "credential_id"=> 1,
    "name"=> "test-via-api",
    "type"=> ServerTypes::APP,
    "size"=> "01",
    "database"=> "test123",
    "database_type" => InstallableServices::POSTGRES,
    "php_version"=> InstallableServices::PHP_71,
    "region"=> "ams2"
]);

这些参数将用于发送到 Forge 服务器的 POST 请求中,您可以在 Forge 的官方 API 文档 中找到有关每个操作所需参数的更多信息。

请注意,例如此请求将仅启动服务器创建过程,您的服务器可能需要几分钟才能完成配置,您需要检查服务器的 $isReady 属性以确定其是否已准备好。

但是,某些 SDK 方法会在 Forge 端等待操作完成,我们通过定期联系 Forge 服务器并检查我们的操作是否完成来实现这一点,例如

$diia->createSite(SERVER_ID, [SITE_PARAMETERS]);

此方法将每 5 秒 ping 一次 Forge 服务器,并检查新创建的站点的状态是否为 installed,仅在状态如此时才返回,如果等待超过 30 秒,将抛出 Laravel\Forge\Exceptions\TimeoutException

您可以通过将 $wait 参数设置为 false 来轻松停止这种行为

$diia->createSite(SERVER_ID, [SITE_PARAMETERS], false);

您还可以设置所需的超时值

$diia->setTimeout(120)->createSite(SERVER_ID, [SITE_PARAMETERS]);

认证用户

$diia->user();

管理服务器

$diia->servers();
$diia->server($serverId);
$diia->createServer(array $data);
$diia->updateServer($serverId, array $data);
$diia->deleteServer($serverId);
$diia->rebootServer($serverId);

// Server access
$diia->revokeAccessToServer($serverId);
$diia->reconnectToServer($serverId);
$diia->reactivateToServer($serverId);

Server 实例上,您还可以调用

$server->update(array $data);
$server->delete();
$server->reboot();
$server->revokeAccess();
$server->reconnect();
$server->reactivate();
$server->rebootMysql();
$server->stopMysql();
$server->rebootPostgres();
$server->stopPostgres();
$server->rebootNginx();
$server->stopNginx();
$server->installBlackfire(array $data);
$server->removeBlackfire();
$server->installPapertrail(array $data);
$server->removePapertrail();
$server->enableOPCache();
$server->disableOPCache();
$server->phpVersions();
$server->installPHP($version);
$server->updatePHP($version);

服务器 SSH 密钥

$diia->keys($serverId);
$diia->sshKey($serverId, $keyId);
$diia->createSSHKey($serverId, array $data, $wait = true);
$diia->deleteSSHKey($serverId, $keyId);

SSHKey 实例上,您还可以调用

$sshKey->delete();

服务器计划任务

$diia->jobs($serverId);
$diia->job($serverId, $jobId);
$diia->createJob($serverId, array $data, $wait = true);
$diia->deleteJob($serverId, $jobId);

Job 实例上,您还可以调用

$job->delete();

服务器事件

$diia->events();
$diia->events($serverId);

服务管理

// MySQL
$diia->rebootMysql($serverId);
$diia->stopMysql($serverId);

// Postgres
$diia->rebootPostgres($serverId);
$diia->stopPostgres($serverId);

// Nginx
$diia->rebootNginx($serverId);
$diia->stopNginx($serverId);
$diia->siteNginxFile($serverId, $siteId);
$diia->updateSiteNginxFile($serverId, $siteId, $content);

// Blackfire
$diia->installBlackfire($serverId, array $data);
$diia->removeBlackfire($serverId);

// Papertrail
$diia->installPapertrail($serverId, array $data);
$diia->removePapertrail($serverId);

// OPCache
$diia->enableOPCache($serverId);
$diia->disableOPCache($serverId);

服务器守护进程

$diia->daemons($serverId);
$diia->daemon($serverId, $daemonId);
$diia->createDaemon($serverId, array $data, $wait = true);
$diia->restartDaemon($serverId, $daemonId, $wait = true);
$diia->deleteDaemon($serverId, $daemonId);

Daemon 实例上,您还可以调用

$daemon->restart($wait = true);
$daemon->delete();

服务器防火墙规则

$diia->firewallRules($serverId);
$diia->firewallRule($serverId, $ruleId);
$diia->createFirewallRule($serverId, array $data, $wait = true);
$diia->deleteFirewallRule($serverId, $ruleId);

FirewallRule 实例上,您还可以调用

$rule->delete();

站点管理

$diia->sites($serverId);
$diia->site($serverId, $siteId);
$diia->createSite($serverId, array $data, $wait = true);
$diia->updateSite($serverId, $siteId, array $data);
$diia->refreshSiteToken($serverId, $siteId);
$diia->deleteSite($serverId, $siteId);

// Add Site Aliases
$diia->addSiteAliases($serverId, $siteId, array $aliases);

// Environment File
$diia->siteEnvironmentFile($serverId, $siteId);
$diia->updateSiteEnvironmentFile($serverId, $siteId, $content);

// Site Repositories and Deployments
$diia->installGitRepositoryOnSite($serverId, $siteId, array $data, $wait = false);
$diia->updateSiteGitRepository($serverId, $siteId, array $data);
$diia->destroySiteGitRepository($serverId, $siteId, $wait = false);
$diia->siteDeploymentScript($serverId, $siteId);
$diia->updateSiteDeploymentScript($serverId, $siteId, $content);
$diia->enableQuickDeploy($serverId, $siteId);
$diia->disableQuickDeploy($serverId, $siteId);
$diia->deploySite($serverId, $siteId, $wait = false);
$diia->resetDeploymentState($serverId, $siteId);
$diia->siteDeploymentLog($serverId, $siteId);

// PHP Version
$diia->changeSitePHPVersion($serverId, $siteId, $version);

// Installing Wordpress
$diia->installWordPress($serverId, $siteId, array $data);
$diia->removeWordPress($serverId, $siteId);

// Installing phpMyAdmin
$diia->installPhpMyAdmin($serverId, $siteId, array $data);
$diia->removePhpMyAdmin($serverId, $siteId);

// Updating Node balancing Configuration
$diia->updateNodeBalancingConfiguration($serverId, $siteId, array $data);

Site 实例上,您还可以调用

$site->refreshToken();
$site->delete();
$site->installGitRepository(array $data, $wait = false);
$site->updateGitRepository(array $data);
$site->destroyGitRepository($wait = false);
$site->getDeploymentScript();
$site->updateDeploymentScript($content);
$site->enableQuickDeploy();
$site->disableQuickDeploy();
$site->deploySite($wait = false);
$site->resetDeploymentState();
$site->siteDeploymentLog();
$site->installWordPress($data);
$site->removeWordPress();
$site->installPhpMyAdmin($data);
$site->removePhpMyAdmin();
$site->changePHPVersion($version);

站点工作者

$diia->workers($serverId, $siteId);
$diia->worker($serverId, $siteId, $workerId);
$diia->createWorker($serverId, $siteId, array $data, $wait = true);
$diia->deleteWorker($serverId, $siteId, $workerId);
$diia->restartWorker($serverId, $siteId, $workerId, $wait = true);

Worker 实例上,您还可以调用

$worker->delete();
$worker->restart($wait = true);

安全规则

$diia->securityRules($serverId, $siteId);
$diia->securityRule($serverId, $siteId, $ruleId);
$diia->createSecurityRule($serverId, $siteId, array $data);
$diia->deleteSecurityRule($serverId, $siteId, $ruleId);

SecurityRule 实例上,您还可以调用

$securityRule->delete();

站点 Webhooks

$diia->webhooks($serverId, $siteId);
$diia->webhook($serverId, $siteId, $webhookId);
$diia->createWebhook($serverId, $siteId, array $data);
$diia->deleteWebhook($serverId, $siteId, $webhookId);

Webhook 实例上,您还可以调用

$webhook->delete();

站点命令

$diia->executeSiteCommand($serverId, $siteId, array $data);
$diia->listCommandHistory($serverId, $siteId);
$diia->getSiteCommand($serverId, $siteId, $commandId);

站点 SSL 证书

$diia->certificates($serverId, $siteId);
$diia->certificate($serverId, $siteId, $certificateId);
$diia->createCertificate($serverId, $siteId, array $data, $wait = true);
$diia->deleteCertificate($serverId, $siteId, $certificateId);
$diia->getCertificateSigningRequest($serverId, $siteId, $certificateId);
$diia->installCertificate($serverId, $siteId, $certificateId, array $data, $wait = true);
$diia->activateCertificate($serverId, $siteId, $certificateId, $wait = true);
$diia->obtainLetsEncryptCertificate($serverId, $siteId, $data, $wait = true);

Certificate 实例上,您还可以调用

$certificate->delete();
$certificate->getSigningRequest();
$certificate->install($wait = true);
$certificate->activate($wait = true);

Nginx 模板

$diia->nginxTemplates($serverId);
$diia->nginxDefaultTemplate($serverId);
$diia->nginxTemplate($serverId, $templateId);
$diia->createNginxTemplate($serverId, array $data);
$diia->updateNginxTemplate($serverId, $templateId, array $data);
$diia->deleteNginxTemplate($serverId, $templateId);

NginxTemplate 实例上,您还可以调用

$nginxTemplate->update(array $data);
$nginxTemplate->delete();

数据库管理

$diia->databases($serverId);
$diia->database($serverId, $databaseId);
$diia->createDatabase($serverId, array $data, $wait = true);
$diia->updateDatabase($serverId, $databaseId, array $data);
$diia->deleteDatabase($serverId, $databaseId);

// Users
$diia->databaseUsers($serverId);
$diia->databaseUser($serverId, $userId);
$diia->createDatabaseUser($serverId, array $data, $wait = true);
$diia->updateDatabaseUser($serverId, $userId, array $data);
$diia->deleteDatabaseUser($serverId, $userId);

Database 实例上,您还可以调用

$database->update(array $data);
$database->delete();

DatabaseUser 实例上,您还可以调用

$databaseUser->update(array $data);
$databaseUser->delete();

食谱管理

$diia->recipes();
$diia->recipe($recipeId);
$diia->createRecipe(array $data);
$diia->updateRecipe($recipeId, array $data);
$diia->deleteRecipe($recipeId);
$diia->runRecipe($recipeId, array $data);

Recipe 实例上,您还可以调用

$recipe->update(array $data);
$recipe->delete();
$recipe->run(array $data);

备份管理

$diia->backupConfigurations($serverId);
$diia->createBackupConfiguration($serverId, array $data);
$diia->updateBackupConfiguration($serverId, $backupConfigurationId, array $data);
$diia->backupConfiguration($serverId, $backupConfigurationId);
$diia->deleteBackupConfiguration($serverId, $backupConfigurationId);
$diia->restoreBackup($serverId, $backupConfigurationId, $backupId);
$diia->deleteBackup($serverId, $backupConfigurationId, $backupId);

BackupConfiguration 实例上,您还可以调用

$extendedConfig = $backupConfig->get(); // Load the databases also
$backupConfig->update(array $data);
$backupConfig->delete();
$backupConfig->restoreBackup($backupId);
$backupConfig->deleteBackup($backupId);

Backup 实例上,您还可以调用

$backupConfig->delete();
$backupConfig->restore();

贡献

感谢您考虑为 Forge SDK 贡献!您可以在此处阅读贡献指南。

行为准则

为了确保 Laravel 社区对所有成员都友好,请阅读并遵守行为准则

安全漏洞

请查看我们的安全策略,了解如何报告安全漏洞。

许可证

Laravel Forge SDK 是开源软件,根据MIT 许可证许可。