cfmgrv4 init...3

This commit is contained in:
최준흠 2024-10-17 19:34:57 +09:00
parent fffbfd54fa
commit 3f7c0171de

View File

@ -11,7 +11,7 @@ class Zone extends Cloudflare
{
private $_model = null;
private $_account_entity = null;
private $_setting_fields = ['development_mode' => 'off', 'ipv6' => 'off', 'security_level' => 'medium'];
private $_setting_fields = ['development_mode' => 'off', 'ipv6' => 'off', 'security_level' => 'medium', 'ssl' => 'off'];
public function __construct(AccountEntity $account_entity)
{
$this->_account_entity = $account_entity;
@ -70,29 +70,17 @@ class Zone extends Cloudflare
}
foreach ($cf->result as $result) {
if (in_array(needle: $result->id, haystack: array_keys($this->_setting_fields))) {
$formDatas[$result->id] = $result->value;
$formDatas[$result->id === 'ssl' ? 'ssl_mode' : $result->id] = $result->value;
}
}
// log_message("debug", var_export($cf, return: true));
return $formDatas;
}
private function getCFSettingSSL(string $uid, array $formDatas = []): array
{
$cf = $this->getMySocket()->get('zones/' . $uid . '/settings/ssl');
$cf = json_decode($cf->getBody());
if (!$cf->success) {
$message = "Zone:" . __FUNCTION__ . "에서 실패:\nresponse:" . var_export($cf, true);
log_message("error", $message);
throw new \Exception($message);
}
log_message("debug", var_export($cf->result, true));
$formDatas['ssl_mode'] = $cf->result->value;
// log_message("debug", var_export($cf, return: true));
// exit;
return $formDatas;
}
private function setCFSetting(string $uid, string $field, string $value): string
{
if ($field === 'ssl_mode') {
$field = 'ssl';
}
$datas = ['value' => $value];
$cf = $this->getMySocket()->patch('zones/' . $uid . '/settings/' . $field, $datas);
$cf = json_decode($cf->getBody());
@ -104,19 +92,6 @@ class Zone extends Cloudflare
//최종 결과값은 body->result->id='필드명',body->result->value='on/off'이런식으로 받음
return $cf->result->value;
}
private function setCFSettingSSL(string $uid, string $field, string $value): string
{
$datas = ['value' => $value];
$cf = $this->getMySocket()->patch('zones/' . $uid . '/settings/ssl', $datas);
$cf = json_decode($cf->getBody());
if (!$cf->success || $cf->result->id !== $field) {
$message = "Zone:" . __FUNCTION__ . "에서 실패:\nrequest:" . var_export($datas, true) . "\nresponse:" . var_export($cf, true);
log_message("error", $message);
throw new \Exception($message);
}
//최종 결과값은 body->result->id='필드명',body->result->value='on/off'이런식으로 받음
return $cf->result->value;
}
public function create(string $domain, bool $jump_start = false): ZoneEntity
{
//Socket용
@ -145,12 +120,8 @@ class Zone extends Cloudflare
{
// throw new \Exception("zone:modify" . var_export($formDatas, true));
foreach ($formDatas as $field => $value) {
if ($field === 'ssl_mode') {
$formDatas[$field] = $this->setCFSettingSSL($entity->getPK(), $field, $value);
} else {
//modify,toggle,batchjob 사용 셋팅 ipv6 , //development_mode , //security_level
$formDatas[$field] = $this->setCFSetting($entity->getPK(), $field, $value);
}
//modify,toggle,batchjob 사용 셋팅 ipv6 , //development_mode , //security_level
$formDatas[$field] = $this->setCFSetting($entity->getPK(), $field, $value);
}
//DB수정
return $this->getModel()->modify($entity, $formDatas);
@ -183,8 +154,6 @@ class Zone extends Cloudflare
// log_message("debug", var_export($formDatas, true));
$formDatas = $this->getCFSetting($formDatas[ZoneModel::PK], $formDatas);
// log_message("debug", var_export($formDatas, true));
$formDatas = $this->getCFSettingSSL($formDatas[ZoneModel::PK], $formDatas);
// log_message("debug", var_export($formDatas, true));
$entity = $this->getModel()->modify($entity, $formDatas);
// log_message("debug", $this->getModel()->getLastQuery());
return $entity;
@ -200,7 +169,6 @@ class Zone extends Cloudflare
foreach ($zone_results as $result) {
$formDatas = $this->getArrayByResult($result);
$formDatas = $this->getCFSetting($formDatas[ZoneModel::PK], $formDatas);
$formDatas = $this->getCFSettingSSL($formDatas[ZoneModel::PK], $formDatas);
$entitys[$formDatas[ZoneModel::PK]] = $this->getModel()->modify(new ZoneEntity(), $formDatas);
}
//부모키를 기준으로 CF에 존재하지 않는 데이터 삭제용