From 86adfd018a884acd556e179eab863e2855af82f6 Mon Sep 17 00:00:00 2001 From: net909 Date: Fri, 11 Oct 2024 20:03:41 +0800 Subject: [PATCH] update --- app/controller/Domain.php | 10 ++++---- app/lib/DnsHelper.php | 8 +++++++ app/lib/DnsInterface.php | 4 ++-- app/lib/OptimizeService.php | 4 ++-- app/lib/dns/aliyun.php | 4 ++-- app/lib/dns/baidu.php | 24 ++++++++++--------- app/lib/dns/cloudflare.php | 40 ++++++++++++++++++++++++++++++-- app/lib/dns/dnsla.php | 6 +++-- app/lib/dns/dnspod.php | 8 +++---- app/lib/dns/huawei.php | 16 ++++++++----- app/lib/dns/huoshan.php | 16 ++++++++----- app/lib/dns/west.php | 4 ++-- app/view/domain/record.html | 38 ++++++++++++++++++++++++------ app/view/optimizeip/opipset.html | 4 ++-- config/app.php | 2 +- 15 files changed, 135 insertions(+), 53 deletions(-) diff --git a/app/controller/Domain.php b/app/controller/Domain.php index f163078..1f1dd6b 100644 --- a/app/controller/Domain.php +++ b/app/controller/Domain.php @@ -407,6 +407,7 @@ class Domain extends BaseController $value = input('post.value', null, 'trim'); $line = input('post.line', null, 'trim'); $ttl = input('post.ttl/d', 600); + $weight = input('post.weight/d', 0); $mx = input('post.mx/d', 1); $remark = input('post.remark', null, 'trim'); @@ -415,7 +416,7 @@ class Domain extends BaseController } $dns = DnsHelper::getModel($drow['aid'], $drow['name'], $drow['thirdid']); - $recordid = $dns->addDomainRecord($name, $type, $value, $line, $ttl, $mx, $remark); + $recordid = $dns->addDomainRecord($name, $type, $value, $line, $ttl, $mx, $weight, $remark); if($recordid){ $this->add_log($drow['name'], '添加解析', $type.'记录 '.$name.' '.$value.' (线路:'.$line.' TTL:'.$ttl.')'); return json(['code'=>0, 'msg'=>'添加解析记录成功!']); @@ -438,6 +439,7 @@ class Domain extends BaseController $value = input('post.value', null, 'trim'); $line = input('post.line', null, 'trim'); $ttl = input('post.ttl/d', 600); + $weight = input('post.weight/d', 0); $mx = input('post.mx/d', 1); $remark = input('post.remark', null, 'trim'); @@ -446,7 +448,7 @@ class Domain extends BaseController } $dns = DnsHelper::getModel($drow['aid'], $drow['name'], $drow['thirdid']); - $recordid = $dns->updateDomainRecord($recordid, $name, $type, $value, $line, $ttl, $mx, $remark); + $recordid = $dns->updateDomainRecord($recordid, $name, $type, $value, $line, $ttl, $mx, $weight, $remark); if($recordid){ $this->add_log($drow['name'], '修改解析', $type.'记录 '.$name.' '.$value.' (线路:'.$line.' TTL:'.$ttl.')'); return json(['code'=>0, 'msg'=>'修改解析记录成功!']); @@ -608,7 +610,7 @@ class Domain extends BaseController $success = 0; $fail = 0; foreach($recordinfo as $record){ - $recordid = $dns->updateDomainRecord($record['recordid'], $record['name'], $type, $value, $record['line'], $record['ttl'], $record['mx'], $record['remark']); + $recordid = $dns->updateDomainRecord($record['recordid'], $record['name'], $type, $value, $record['line'], $record['ttl'], $record['mx'], $record['weight'], $record['remark']); if($recordid){ $this->add_log($drow['name'], '修改解析', $type.'记录 '.$record['name'].' '.$value.' (线路:'.$record['line'].' TTL:'.$record['ttl'].')'); $success++; @@ -629,7 +631,7 @@ class Domain extends BaseController $success = 0; $fail = 0; foreach($recordinfo as $record){ - $recordid = $dns->updateDomainRecord($record['recordid'], $record['name'], $record['type'], $record['value'], $line, $record['ttl'], $record['mx'], $record['remark']); + $recordid = $dns->updateDomainRecord($record['recordid'], $record['name'], $record['type'], $record['value'], $line, $record['ttl'], $record['mx'], $record['weight'], $record['remark']); if($recordid){ $this->add_log($drow['name'], '修改解析', $record['type'].'记录 '.$record['name'].' '.$record['value'].' (线路:'.$line.' TTL:'.$record['ttl'].')'); $success++; diff --git a/app/lib/DnsHelper.php b/app/lib/DnsHelper.php index f7f47ab..8bcf329 100644 --- a/app/lib/DnsHelper.php +++ b/app/lib/DnsHelper.php @@ -16,6 +16,7 @@ class DnsHelper 'status' => true, //是否支持启用暂停 'redirect' => true, //是否支持域名转发 'log' => true, //是否支持查看日志 + 'weight' => false, //是否支持权重 ], 'dnspod' => [ 'name' => '腾讯云', @@ -27,6 +28,7 @@ class DnsHelper 'status' => true, 'redirect' => true, 'log' => true, + 'weight' => true, ], 'huawei' => [ 'name' => '华为云', @@ -38,6 +40,7 @@ class DnsHelper 'status' => true, 'redirect' => false, 'log' => false, + 'weight' => true, ], 'baidu' => [ 'name' => '百度云', @@ -49,6 +52,7 @@ class DnsHelper 'status' => false, 'redirect' => false, 'log' => false, + 'weight' => false, ], 'west' => [ 'name' => '西部数码', @@ -60,6 +64,7 @@ class DnsHelper 'status' => true, 'redirect' => false, 'log' => false, + 'weight' => false, ], 'huoshan' => [ 'name' => '火山引擎', @@ -71,6 +76,7 @@ class DnsHelper 'status' => true, 'redirect' => false, 'log' => false, + 'weight' => true, ], 'dnsla' => [ 'name' => 'DNSLA', @@ -82,6 +88,7 @@ class DnsHelper 'status' => true, 'redirect' => true, 'log' => false, + 'weight' => true, ], 'cloudflare' => [ 'name' => 'Cloudflare', @@ -93,6 +100,7 @@ class DnsHelper 'status' => false, 'redirect' => false, 'log' => false, + 'weight' => false, ], ]; diff --git a/app/lib/DnsInterface.php b/app/lib/DnsInterface.php index 4e64771..166030c 100644 --- a/app/lib/DnsInterface.php +++ b/app/lib/DnsInterface.php @@ -16,9 +16,9 @@ interface DnsInterface function getDomainRecordInfo($RecordId); - function addDomainRecord($Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = 1, $Remark = null); + function addDomainRecord($Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = 1, $Weight = null, $Remark = null); - function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = 1, $Remark = null); + function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = 1, $Weight = null, $Remark = null); function updateDomainRecordRemark($RecordId, $Remark); diff --git a/app/lib/OptimizeService.php b/app/lib/OptimizeService.php index fb792f2..45c3799 100644 --- a/app/lib/OptimizeService.php +++ b/app/lib/OptimizeService.php @@ -28,7 +28,7 @@ class OptimizeService }elseif($api == 1){ $url = 'https://api.hostmonit.com/get_license?license='.$key; }else{ - $url = 'https://www.182682.xyz/api/cf2dns/get_license?license='.$key; + $url = 'https://www.wetest.vip/api/cf2dns/get_license?license='.$key; } $response = get_curl($url); $arr = json_decode($response, true); @@ -48,7 +48,7 @@ class OptimizeService }elseif($api == 1){ $url = 'https://api.hostmonit.com/get_optimization_ip'; }else{ - $url = 'https://www.182682.xyz/api/cf2dns/'; + $url = 'https://www.wetest.vip/api/cf2dns/'; if($cdn_type == 1){ $url .= 'get_cloudflare_ip'; }elseif($cdn_type == 2){ diff --git a/app/lib/dns/aliyun.php b/app/lib/dns/aliyun.php index 5cb9d77..6660353 100644 --- a/app/lib/dns/aliyun.php +++ b/app/lib/dns/aliyun.php @@ -135,7 +135,7 @@ class aliyun implements DnsInterface { } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = null, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = null, $Weight = null, $Remark = null){ $param = ['Action' => 'AddDomainRecord', 'DomainName' => $this->domain, 'RR' => $Name, 'Type' => $Type, 'Value' => $Value, 'Line' => $this->convertLineCode($Line), 'TTL' => intval($TTL)]; if($MX){ $param['Priority'] = intval($MX); @@ -148,7 +148,7 @@ class aliyun implements DnsInterface { } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = null, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = 'default', $TTL = 600, $MX = null, $Weight = null, $Remark = null){ $param = ['Action' => 'UpdateDomainRecord', 'RecordId' => $RecordId, 'RR' => $Name, 'Type' => $Type, 'Value' => $Value, 'Line' => $this->convertLineCode($Line), 'TTL' => intval($TTL)]; if($MX){ $param['Priority'] = intval($MX); diff --git a/app/lib/dns/baidu.php b/app/lib/dns/baidu.php index 4c1b3a8..12796df 100644 --- a/app/lib/dns/baidu.php +++ b/app/lib/dns/baidu.php @@ -85,38 +85,40 @@ class baidu implements DnsInterface { //获取解析记录详细信息 public function getDomainRecordInfo($RecordId){ - $data = $this->send_reuqest('GET', '/v2.1/zones/'.$this->domainid.'/recordsets/'.$RecordId); - if($data){ + $query = ['id' => $RecordId]; + $data = $this->send_reuqest('GET', '/v1/dns/zone/'.$this->domain.'/record', $query); + if($data && !empty($data['records'])){ + $data = $data['records'][0]; return [ 'RecordId' => $data['id'], 'Domain' => rtrim($data['zone_name'], '.'), 'Name' => str_replace('.'.$data['zone_name'], '', $data['name']), 'Type' => $data['type'], - 'Value' => $data['records'], + 'Value' => $data['value'], 'Line' => $data['line'], 'TTL' => $data['ttl'], - 'MX' => $data['weight'], - 'Status' => $data['status'] == 'ACTIVE' ? '1' : '0', - 'Weight' => $data['weight'], + 'MX' => $data['priority'], + 'Status' => $data['status'] == 'running' ? '1' : '0', + 'Weight' => null, 'Remark' => $data['description'], - 'UpdateTime' => $data['updated_at'], + 'UpdateTime' => null, ]; } return false; } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $params = ['rr' => $Name, 'type' => $this->convertType($Type), 'value' => $Value, 'line'=>$Line, 'ttl' => intval($TTL), 'description' => $Remark]; - if($Type == 'MX')$param['priority'] = intval($MX); + if($Type == 'MX')$params['priority'] = intval($MX); $query = ['clientToken' => getSid()]; return $this->send_reuqest('POST', '/v1/dns/zone/'.$this->domain.'/record', $query, $params); } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $params = ['rr' => $Name, 'type' => $this->convertType($Type), 'value' => $Value, 'line'=>$Line, 'ttl' => intval($TTL), 'description' => $Remark]; - if($Type == 'MX')$param['priority'] = intval($MX); + if($Type == 'MX')$params['priority'] = intval($MX); $query = ['clientToken' => getSid()]; return $this->send_reuqest('PUT', '/v1/dns/zone/'.$this->domain.'/record/'.$RecordId, $query, $params); } diff --git a/app/lib/dns/cloudflare.php b/app/lib/dns/cloudflare.php index 20cdd7a..002b201 100644 --- a/app/lib/dns/cloudflare.php +++ b/app/lib/dns/cloudflare.php @@ -112,17 +112,25 @@ class cloudflare implements DnsInterface { } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $Weight = null, $MX = 1, $Remark = null){ $param = ['name' => $Name, 'type' => $this->convertType($Type), 'content' => $Value, 'proxied' => $Line=='1', 'ttl' => intval($TTL), 'comment' => $Remark]; if($Type == 'MX')$param['priority'] = intval($MX); + if($Type == 'CAA' || $Type == 'SRV'){ + unset($param['content']); + $param['data'] = $this->convertValue($Value, $Type); + } $data = $this->send_reuqest('POST', '/zones/'.$this->domainid.'/dns_records', $param); return is_array($data) ? $data['result']['id'] : false; } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $Weight = null, $MX = 1, $Remark = null){ $param = ['name' => $Name, 'type' => $this->convertType($Type), 'content' => $Value, 'proxied' => $Line=='1', 'ttl' => intval($TTL), 'comment' => $Remark]; if($Type == 'MX')$param['priority'] = intval($MX); + if($Type == 'CAA' || $Type == 'SRV'){ + unset($param['content']); + $param['data'] = $this->convertValue($Value, $Type); + } $data = $this->send_reuqest('PATCH', '/zones/'.$this->domainid.'/dns_records/'.$RecordId, $param); return is_array($data); } @@ -175,6 +183,34 @@ class cloudflare implements DnsInterface { return $type; } + private function convertValue($value, $type){ + if($type == 'SRV'){ + $arr = explode(' ', $value); + if(count($arr) > 3){ + $data = [ + 'priority' => intval($arr[0]), + 'weight' => intval($arr[1]), + 'port' => intval($arr[2]), + 'target' => $arr[3], + ]; + }else{ + $data = [ + 'weight' => intval($arr[0]), + 'port' => intval($arr[1]), + 'target' => $arr[2], + ]; + } + }elseif($type == 'CAA'){ + $arr = explode(' ', $value); + $data = [ + 'flags' => intval($arr[0]), + 'tag' => $arr[1], + 'value' => trim($arr[2], '"'), + ]; + } + return $data; + } + private function send_reuqest($method, $path, $params = null){ $url = $this->baseUrl . $path; diff --git a/app/lib/dns/dnsla.php b/app/lib/dns/dnsla.php index c8d13da..9652b8c 100644 --- a/app/lib/dns/dnsla.php +++ b/app/lib/dns/dnsla.php @@ -102,21 +102,23 @@ class dnsla implements DnsInterface { } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $param = ['domainId' => $this->domainid, 'type' => $this->convertType($Type), 'host' => $Name, 'data' => $Value, 'ttl' => intval($TTL), 'lineId' => $Line]; if($Type == 'MX')$param['preference'] = intval($MX); if($Type == 'REDIRECT_URL'){$param['type'] = 256;$param['dominant'] = true;} elseif($Type == 'FORWARD_URL'){$param['type'] = 256;$param['dominant'] = false;} + if($Weight > 0) $param['weight'] = $Weight; $data = $this->execute('POST', '/api/record', $param); return is_array($data) ? $data['id'] : false; } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $param = ['id' => $RecordId, 'type' => $this->convertType($Type), 'host' => $Name, 'data' => $Value, 'ttl' => intval($TTL), 'lineId' => $Line]; if($Type == 'MX')$param['preference'] = intval($MX); if($Type == 'REDIRECT_URL'){$param['type'] = 256;$param['dominant'] = true;} elseif($Type == 'FORWARD_URL'){$param['type'] = 256;$param['dominant'] = false;} + if($Weight > 0) $param['weight'] = $Weight; $data = $this->execute('PUT', '/api/record', $param); return $data!==false; } diff --git a/app/lib/dns/dnspod.php b/app/lib/dns/dnspod.php index fad8228..f3b1fe1 100644 --- a/app/lib/dns/dnspod.php +++ b/app/lib/dns/dnspod.php @@ -128,18 +128,18 @@ class dnspod implements DnsInterface { } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $action = 'CreateRecord'; - $param = ['Domain' => $this->domain, 'SubDomain' => $Name, 'RecordType' => $this->convertType($Type), 'Value' => $Value, 'RecordLine'=>$Line, 'RecordLineId' => $this->convertLineCode($Line), 'TTL' => intval($TTL)]; + $param = ['Domain' => $this->domain, 'SubDomain' => $Name, 'RecordType' => $this->convertType($Type), 'Value' => $Value, 'RecordLine'=>$Line, 'RecordLineId' => $this->convertLineCode($Line), 'TTL' => intval($TTL), 'Weight' => $Weight]; if($Type == 'MX')$param['MX'] = intval($MX); $data = $this->send_reuqest($action, $param); return is_array($data) ? $data['RecordId'] : false; } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $action = 'ModifyRecord'; - $param = ['Domain' => $this->domain, 'RecordId' => intval($RecordId), 'SubDomain' => $Name, 'RecordType' => $this->convertType($Type), 'Value' => $Value, 'RecordLine'=>$Line, 'RecordLineId' => $this->convertLineCode($Line), 'TTL' => intval($TTL)]; + $param = ['Domain' => $this->domain, 'RecordId' => intval($RecordId), 'SubDomain' => $Name, 'RecordType' => $this->convertType($Type), 'Value' => $Value, 'RecordLine'=>$Line, 'RecordLineId' => $this->convertLineCode($Line), 'TTL' => intval($TTL), 'Weight' => $Weight]; if($Type == 'MX')$param['MX'] = intval($MX); $data = $this->send_reuqest($action, $param); return is_array($data); diff --git a/app/lib/dns/huawei.php b/app/lib/dns/huawei.php index 1a24268..c17d770 100644 --- a/app/lib/dns/huawei.php +++ b/app/lib/dns/huawei.php @@ -66,6 +66,7 @@ class huawei implements DnsInterface { $list = []; foreach($data['recordsets'] as $row){ if($row['name'] == $row['zone_name']) $row['name'] = '@'; + if($row['type'] == 'MX') list($row['mx'], $row['records']) = explode(' ', $row['records'][0]); $list[] = [ 'RecordId' => $row['id'], 'Domain' => rtrim($row['zone_name'], '.'), @@ -74,7 +75,7 @@ class huawei implements DnsInterface { 'Value' => $row['records'], 'Line' => $row['line'], 'TTL' => $row['ttl'], - 'MX' => $row['weight'], + 'MX' => isset($row['mx']) ? $row['mx'] : null, 'Status' => $row['status'] == 'ACTIVE' ? '1' : '0', 'Weight' => $row['weight'], 'Remark' => $row['description'], @@ -96,6 +97,7 @@ class huawei implements DnsInterface { $data = $this->send_reuqest('GET', '/v2.1/zones/'.$this->domainid.'/recordsets/'.$RecordId); if($data){ if($data['name'] == $data['zone_name']) $data['name'] = '@'; + if($data['type'] == 'MX') list($data['mx'], $data['records']) = explode(' ', $data['records'][0]); return [ 'RecordId' => $data['id'], 'Domain' => rtrim($data['zone_name'], '.'), @@ -104,7 +106,7 @@ class huawei implements DnsInterface { 'Value' => $data['records'], 'Line' => $data['line'], 'TTL' => $data['ttl'], - 'MX' => $data['weight'], + 'MX' => isset($data['mx']) ? $data['mx'] : null, 'Status' => $data['status'] == 'ACTIVE' ? '1' : '0', 'Weight' => $data['weight'], 'Remark' => $data['description'], @@ -115,23 +117,25 @@ class huawei implements DnsInterface { } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $Name = $this->getHost($Name); if($Type == 'TXT' && substr($Value, 0, 1) != '"') $Value = '"'.$Value.'"'; $records = explode(',', $Value); $params = ['name' => $Name, 'type' => $this->convertType($Type), 'records' => $records, 'line'=>$Line, 'ttl' => intval($TTL), 'description' => $Remark]; - if($Type == 'MX')$param['weight'] = intval($MX); + if($Type == 'MX') $params['records'][0] = intval($MX) . ' ' . $Value; + if($Weight > 0) $params['weight'] = intval($Weight); $data = $this->send_reuqest('POST', '/v2.1/zones/'.$this->domainid.'/recordsets', null, $params); return is_array($data) ? $data['id'] : false; } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $Name = $this->getHost($Name); if($Type == 'TXT' && substr($Value, 0, 1) != '"') $Value = '"'.$Value.'"'; $records = explode(',', $Value); $params = ['name' => $Name, 'type' => $this->convertType($Type), 'records' => $records, 'line'=>$Line, 'ttl' => intval($TTL), 'description' => $Remark]; - if($Type == 'MX')$param['weight'] = intval($MX); + if($Type == 'MX') $params['records'][0] = intval($MX) . ' ' . $Value; + if($Weight > 0) $params['weight'] = intval($Weight); $data = $this->send_reuqest('PUT', '/v2.1/zones/'.$this->domainid.'/recordsets/'.$RecordId, null, $params); return is_array($data); } diff --git a/app/lib/dns/huoshan.php b/app/lib/dns/huoshan.php index 5288a5b..4f594fa 100644 --- a/app/lib/dns/huoshan.php +++ b/app/lib/dns/huoshan.php @@ -73,6 +73,7 @@ class huoshan implements DnsInterface { if($data){ $list = []; foreach($data['Records'] as $row){ + if($row['Type'] == 'MX') list($row['MX'], $row['Value']) = explode(' ', $row['Value']); $list[] = [ 'RecordId' => $row['RecordID'], 'Domain' => $this->domain, @@ -81,7 +82,7 @@ class huoshan implements DnsInterface { 'Value' => $row['Value'], 'Line' => $row['Line'], 'TTL' => $row['TTL'], - 'MX' => $row['Weight'], + 'MX' => isset($row['MX']) ? $row['MX'] : null, 'Status' => $row['Enable'] ? '1' : '0', 'Weight' => $row['Weight'], 'Remark' => $row['Remark'], @@ -103,6 +104,7 @@ class huoshan implements DnsInterface { $data = $this->send_reuqest('GET', 'QueryRecord', ['RecordID' => $RecordId]); if($data){ if($data['name'] == $data['zone_name']) $data['name'] = '@'; + if($data['Type'] == 'MX') list($data['MX'], $data['Value']) = explode(' ', $data['Value']); return [ 'RecordId' => $data['RecordID'], 'Domain' => $this->domain, @@ -111,7 +113,7 @@ class huoshan implements DnsInterface { 'Value' => $data['Value'], 'Line' => $data['Line'], 'TTL' => $data['TTL'], - 'MX' => $data['Weight'], + 'MX' => isset($data['MX']) ? $data['MX'] : null, 'Status' => $data['Enable'] ? '1' : '0', 'Weight' => $data['Weight'], 'Remark' => $data['Remark'], @@ -122,17 +124,19 @@ class huoshan implements DnsInterface { } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $params = ['ZID' => intval($this->domainid), 'Host' => $Name, 'Type' => $this->convertType($Type), 'Value' => $Value, 'Line'=>$Line, 'TTL' => intval($TTL), 'Remark' => $Remark]; - if($Type == 'MX')$param['Weight'] = intval($MX); + if($Type == 'MX') $params['Value'] = intval($MX) . ' ' . $Value; + if($Weight > 0) $params['Weight'] = $Weight; $data = $this->send_reuqest('POST', 'CreateRecord', $params); return is_array($data) ? $data['RecordID'] : false; } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $params = ['RecordID' => $RecordId, 'Host' => $Name, 'Type' => $this->convertType($Type), 'Value' => $Value, 'Line'=>$Line, 'TTL' => intval($TTL), 'Remark' => $Remark]; - if($Type == 'MX')$param['Weight'] = intval($MX); + if($Type == 'MX') $params['Value'] = intval($MX) . ' ' . $Value; + if($Weight > 0) $params['Weight'] = $Weight; $data = $this->send_reuqest('POST', 'UpdateRecord', $params); return is_array($data); } diff --git a/app/lib/dns/west.php b/app/lib/dns/west.php index cb6aaac..54994e7 100644 --- a/app/lib/dns/west.php +++ b/app/lib/dns/west.php @@ -91,14 +91,14 @@ class west implements DnsInterface { } //添加解析记录 - public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function addDomainRecord($Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $param = ['act' => 'adddnsrecord', 'domain' => $this->domain, 'host' => $Name, 'type' => $this->convertType($Type), 'value' => $Value, 'level' => $MX, 'ttl' => intval($TTL), 'line' => $Line]; $data = $this->execute('/domain/', $param); return is_array($data) ? $data['id'] : false; } //修改解析记录 - public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Remark = null){ + public function updateDomainRecord($RecordId, $Name, $Type, $Value, $Line = '0', $TTL = 600, $MX = 1, $Weight = null, $Remark = null){ $param = ['act' => 'moddnsrecord', 'domain' => $this->domain, 'id' => $RecordId, 'type' => $this->convertType($Type), 'value' => $Value, 'level' => $MX, 'ttl' => intval($TTL), 'line' => $Line]; $data = $this->execute('/domain/', $param); return is_array($data); diff --git a/app/view/domain/record.html b/app/view/domain/record.html index 03735a8..4afdf6e 100644 --- a/app/view/domain/record.html +++ b/app/view/domain/record.html @@ -63,6 +63,12 @@ td{overflow: hidden;text-overflow: ellipsis;white-space: nowrap;max-width:360px; + {if $dnsconfig.weight}{/if} {if $dnsconfig.remark == 2}
@@ -231,6 +237,7 @@ var recordLine = {$recordLine|json_encode|raw}; var dnsconfig = {$dnsconfig|json_encode|raw}; var defaultLine = recordLine[0].id; var sidePagination = dnsconfig.type == 'baidu' ? 'client' : 'server'; +var showWeight = dnsconfig.weight; $(document).ready(function(){ updateToolbar(); let defaultPageSize = getCookie('record_pagesize') ? getCookie('record_pagesize') : 15; @@ -283,6 +290,11 @@ $(document).ready(function(){ field: 'TTL', title: 'TTL' }, + { + field: 'Weight', + visible: showWeight, + title: '权重' + }, { field: 'Remark', visible: dnsconfig.remark > 0, @@ -333,13 +345,23 @@ $(document).ready(function(){ }, }); - $("select[name=type]").change(function(){ + var typeChange = function(){ if($(this).val() == 'MX'){ $("#mx_type").show(); }else{ $("#mx_type").hide(); } - }); + if(showWeight){ + if($(this).val() == 'A' || $(this).val() == 'CNAME' || $(this).val() == 'AAAA'){ + $("#weight").show(); + }else{ + $("#weight").hide(); + } + } + }; + + $("#form-store select[name=type]").change(typeChange); + $("#form-store2 select[name=type]").change(typeChange); $("#form-store").bootstrapValidator(); $("#form-store2").bootstrapValidator(); @@ -387,10 +409,11 @@ function addframe(){ $("#form-store input[name=recordid]").val(''); $("#form-store input[name=name]").val(''); $("#form-store select[name=type]").val('A'); - $("select[name=type]").change(); + $("#form-store select[name=type]").change(); initLine(); $("#form-store input[name=value]").val(''); $("#form-store input[name=ttl]").val('600'); + $("#form-store input[name=weight]").val(''); $("#form-store input[name=remark]").val(''); $("#form-store").data("bootstrapValidator").resetForm(); } @@ -402,7 +425,7 @@ function editframe(recordid){ $("#form-store input[name=recordid]").val(recordid); $("#form-store input[name=name]").val(row.Name); $("#form-store select[name=type]").val(row.Type); - $("select[name=type]").change(); + $("#form-store select[name=type]").change(); initLine(); if($('#form-store select[name=line] option[value="'+row.Line+'"]').length > 0){ $("#form-store select[name=line]").val(row.Line); @@ -413,6 +436,7 @@ function editframe(recordid){ $("#form-store input[name=value]").val(row.Value); $("#form-store input[name=mx]").val(row.MX); $("#form-store input[name=ttl]").val(row.TTL); + $("#form-store input[name=weight]").val(row.Weight); $("#form-store input[name=remark]").val(row.Remark); $("#form-store").data("bootstrapValidator").resetForm(); } @@ -533,14 +557,14 @@ function operation(action){ if(action == 'edit'){ var records = []; $.each(rows, function(index, item){ - records.push({recordid:item.RecordId, name:item.Name, line:item.Line, mx:item.MX, ttl:item.TTL, remark:item.Remark}); + records.push({recordid:item.RecordId, name:item.Name, line:item.Line, mx:item.MX, ttl:item.TTL, weight:item.Weight, remark:item.Remark}); }) batch_edit(records) return; }else if(action == 'editline'){ var records = []; $.each(rows, function(index, item){ - records.push({recordid:item.RecordId, name:item.Name, type:item.Type, value:item.Value, mx:item.MX, ttl:item.TTL, remark:item.Remark}); + records.push({recordid:item.RecordId, name:item.Name, type:item.Type, value:item.Value, mx:item.MX, ttl:item.TTL, weight:item.Weight, remark:item.Remark}); }) batch_edit_line(records) return; @@ -589,7 +613,7 @@ function batch_edit(records){ $("#form-store2 input[name=recordid]").val(row.RecordId); $("#form-store2 input[name=name]").val(row.Name); $("#form-store2 select[name=type]").val(row.Type); - $("select[name=type]").change(); + $("#form-store2 select[name=type]").change(); $("#form-store2 input[name=value]").val(row.Value); $("#form-store2").data("bootstrapValidator").resetForm(); } diff --git a/app/view/optimizeip/opipset.html b/app/view/optimizeip/opipset.html index d8fdda3..6b40d91 100644 --- a/app/view/optimizeip/opipset.html +++ b/app/view/optimizeip/opipset.html @@ -13,7 +13,7 @@

使用说明

-

  • 数据接口:182682.xyz 数据接口支持CloudFlare、CloudFront、Gcore;HostMonit 只支持CloudFlare;345673.xyz 只支持CloudFlare。
  • +

  • 数据接口:wetest.vip 数据接口支持CloudFlare、CloudFront、Gcore;HostMonit 只支持CloudFlare。
  • 接口密钥:默认o1zrmHAF为免费KEY可永久免费使用。
  • 计划任务:将以下命令添加到计划任务,周期设置为15分钟以上
  • cd {:app()->getRootPath()} && php think opiptask

    @@ -27,7 +27,7 @@
    -
    +
    diff --git a/config/app.php b/config/app.php index bf468f6..546c79c 100644 --- a/config/app.php +++ b/config/app.php @@ -31,7 +31,7 @@ return [ 'show_error_msg' => true, 'exception_tmpl' => \think\facade\App::getAppPath() . 'view/exception.tpl', - 'version' => '1015', + 'version' => '1017', 'dbversion' => '1011' ];