Namesilo.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace App\Components;
  3. use Exception;
  4. use Log;
  5. use LSS\XML2Array;
  6. class Namesilo
  7. {
  8. protected static $host;
  9. protected static $systemConfig;
  10. function __construct()
  11. {
  12. self::$host = 'https://www.namesilo.com/api/';
  13. self::$systemConfig = Helpers::systemConfig();
  14. }
  15. // 列出账号下所有域名
  16. public function listDomains()
  17. {
  18. return $this->send('listDomains');
  19. }
  20. // 列出指定域名的所有DNS记录
  21. public function dnsListRecords($domain)
  22. {
  23. $query = [
  24. 'domain' => $domain
  25. ];
  26. return $this->send('dnsListRecords', $query);
  27. }
  28. // 为指定域名添加DNS记录
  29. public function dnsAddRecord($domain, $host, $value, $type = 'A', $ttl = 7207)
  30. {
  31. $query = [
  32. 'domain' => $domain,
  33. 'rrtype' => $type,
  34. 'rrhost' => $host,
  35. 'rrvalue' => $value,
  36. 'rrttl' => $ttl
  37. ];
  38. return $this->send('dnsAddRecord', $query);
  39. }
  40. // 更新DNS记录
  41. public function dnsUpdateRecord($domain, $id, $host, $value, $ttl = 7207)
  42. {
  43. $query = [
  44. 'domain' => $domain,
  45. 'rrid' => $id,
  46. 'rrhost' => $host,
  47. 'rrvalue' => $value,
  48. 'rrttl' => $ttl
  49. ];
  50. return $this->send('dnsUpdateRecord', $query);
  51. }
  52. // 删除DNS记录
  53. public function dnsDeleteRecord($domain, $id)
  54. {
  55. $data = [
  56. 'domain' => $domain,
  57. 'rrid' => $id
  58. ];
  59. return $this->send('dnsDeleteRecord', $data);
  60. }
  61. // 发送请求
  62. private function send($operation, $data = [])
  63. {
  64. $params = [
  65. 'version' => 1,
  66. 'type' => 'xml',
  67. 'key' => self::$systemConfig['namesilo_key']
  68. ];
  69. $query = array_merge($params, $data);
  70. $content = '请求操作:['.$operation.'] --- 请求数据:['.http_build_query($query).']';
  71. try{
  72. $result = Curl::send(self::$host.$operation.'?'.http_build_query($query));
  73. $result = XML2Array::createArray($result);
  74. // 出错
  75. if(empty($result['namesilo']) || $result['namesilo']['reply']['code'] != 300 || $result['namesilo']['reply']['detail'] != 'success'){
  76. Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 0, $result['namesilo']['reply']['detail']);
  77. }else{
  78. Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 1, $result['namesilo']['reply']['detail']);
  79. }
  80. return $result['namesilo']['reply'];
  81. } catch(Exception $e){
  82. Log::error('CURL请求失败:'.$e->getMessage().' --- '.$e->getLine());
  83. Helpers::addEmailLog(self::$systemConfig['webmaster_email'], '[Namesilo API] - ['.$operation.']', $content, 0, $e->getMessage());
  84. return FALSE;
  85. }
  86. }
  87. }