Viewing File: /usr/local/cpanel/whostmgr/docroot/cgi/ncssl/source/src/Service/Certificate/CertificateTransfer.php

<?php

namespace App\Service\Certificate;

use App\Entity\Certificate;
use App\Model\IssueData;
use App\Model\GetRenewRequestDTO;

class CertificateTransfer
{
    public const NC_USER_PARAMETER_NAME = 'ncUser';
    public const FILE_NAME_PARAMETER_NAME = 'fileName';
    public const FILE_CONTENT_PARAMETER_NAME = 'fileContent';

    private string $cPanelUser = '';
    private string $cPanelServer = '';
    private string $domainName = '';
    private string $certType = '';

    private mixed $certificateId = null;
    private string $fileName = '';
    private string $fileContent = '';
    private string $ncUser = '';

    private string $years;
    private string $vendor;
    private string $commonName;
    private string $adminEmail;

    private int $code = 0;
    private int $freeTotal = 0;

    private string $ncStatus = '';

    /**
     * CertificateTransfer constructor.
     * @param array $params
     */
    public function __construct(array $params = [])
    {
        $this->cPanelUser = trim($params['userName'] ?? '');
        $this->cPanelServer = trim($params['cPanelServer'] ?? gethostname());
        $this->setDomainName($params['domainName'] ?? '');
        $this->certificateId = $params['certificateId'] ?? null;
        $this->certType = trim($params['certificateType'] ?? Certificate::DEFAULT_CERTIFICATE_TYPE);

        $this->years = trim($params['years'] ?? Certificate::DEFAULT_YEARS);
        $this->vendor = trim($params['vendor'] ?? Certificate::DEFAULT_VENDOR);
        $this->commonName = trim($params['commonName'] ?? $this->domainName);
        $this->adminEmail = trim($params['adminEmail'] ?? '');

        $this->setFileName($params[static::FILE_NAME_PARAMETER_NAME] ?? '');
        $this->setFileContent($params[static::FILE_CONTENT_PARAMETER_NAME] ?? '');
        $this->setNCUser($params[static::NC_USER_PARAMETER_NAME] ?? '');
    }

    /**
     * @return string
     */
    public function getCPanelUser(): string
    {
        return $this->cPanelUser;
    }

    /**
     * @return string
     */
    public function getCPanelServer(): string
    {
        return $this->cPanelServer;
    }

    /**
     * @param string $domainName
     *
     * @return $this
     */
    public function setDomainName(string $domainName): self
    {
        $this->domainName = trim($domainName);

        return $this;
    }

    /**
     * @return string
     */
    public function getDomainName(): string
    {
        return $this->domainName;
    }

    /**
     * @return string
     */
    public function getCertType(): string
    {
        return $this->certType;
    }

    /**
     * @param string $name
     *
     * @return $this
     */
    public function setCPanelUser(string $name): self
    {
        $this->cPanelUser = trim($name);

        return $this;
    }

    /**
     * @param string $name
     *
     * @return $this
     */
    public function setNCUser(string $name = ''): self
    {
        $this->ncUser = trim($name);

        return $this;
    }

    /**
     * @return string
     */
    public function getNCUser(): string
    {
        return $this->ncUser;
    }

    /**
     * @param int $id
     *
     * @return $this
     */
    public function setCertificateId(int $id = 0): self
    {
        $this->certificateId = $id;

        return $this;
    }

    /**
     * @return int|null
     */
    public function getCertificateId(): ?int
    {
        return $this->certificateId;
    }

    /**
     * @param string $name
     *
     * @return $this
     */
    public function setFileName(string $name = ''): self
    {
        $this->fileName = trim($name);

        return $this;
    }

    /**
     * @return string
     */
    public function getFileName(): string
    {
        return $this->fileName;
    }

    /**
     * @param string $content
     *
     * @return $this
     */
    public function setFileContent(string $content = ''): self
    {
        $this->fileContent = $this->prepareFileContent($content);

        return $this;
    }

    /**
     * @return string
     */
    public function getFileContent(): string
    {
        return $this->fileContent;
    }

    /**
     * @return string
     */
    public function getYears(): string
    {
        return $this->years;
    }

    /**
     * @return string
     */
    public function getVendor(): string
    {
        return $this->vendor;
    }

    /**
     * @return string
     */
    public function getCommonName(): string
    {
        return $this->commonName;
    }

    /**
     * @return string
     */
    public function getAdminEmail(): string
    {
        return $this->adminEmail;
    }

    /**
     * @param int $code
     */
    public function setCurrentCode(int $code): void
    {
        $this->code = $code;
    }

    /**
     * @return int
     */
    public function getCurrentCode(): int
    {
        return $this->code;
    }

    /**
     * @param int $total
     */
    public function setFreeTotal(int $total): void
    {
        $this->freeTotal = $total;
    }

    /**
     * @return int
     */
    public function getFreeTotal(): int
    {
        return $this->freeTotal;
    }

    /**
     * @return string
     */
    public function getNCStatus(): string
    {
        return $this->ncStatus;
    }

    /**
     * @param string $status
     */
    public function setNCStatus(string $status = ''): void
    {
        $this->ncStatus = $status;
    }

    /**
     * @param IssueData $data
     * @return array
     */
    public static function prepareData(IssueData $data): array
    {
        return [
            'domainName' => $data->domain,
            'adminEmail' => $data->email,
            'certificateId' => $data->cert->nc_id,
            'certificateType' => $data->cert->type,
            'years' => $data->cert->years
        ];
    }

    /**
     * @param GetRenewRequestDTO $data
     *
     * @return array
     */
    public static function prepareActivateParams(GetRenewRequestDTO $data): array
    {
        return [
            'domainName' => $data->domain,
            'certificateId' => $data->certificateId,
            'certificateType' => $data->certificateType,
            'ncUser' => $data->NCUser,
        ];
    }

    /**
     * @param string $fileContent
     *
     * @return string
     */
    private function prepareFileContent(string $fileContent): string
    {
        return trim(ltrim($fileContent, 'b'), "'");
    }
}
Back to Directory File Manager