DDNS.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Components;
  3. use App\Components\DDNS\Aliyun;
  4. use App\Components\DDNS\CloudFlare;
  5. use App\Components\DDNS\DNSPod;
  6. use App\Components\DDNS\Namesilo;
  7. use Log;
  8. /**
  9. * Class DDNS 域名解析
  10. *
  11. * @package App\Components
  12. */
  13. class DDNS
  14. {
  15. /**
  16. * 删除解析记录
  17. *
  18. * @param string $domain 域名
  19. * @param string|null $type
  20. * @return false|int
  21. */
  22. public static function destroy($domain, $type = null)
  23. {
  24. return self::dnsProvider($domain)->destroy($type);
  25. }
  26. private static function dnsProvider($domain)
  27. {
  28. switch (sysConfig('ddns_mode')) {
  29. case 'aliyun':
  30. return new Aliyun($domain);
  31. case 'namesilo':
  32. return new Namesilo($domain);
  33. case 'dnspod':
  34. return new DNSPod($domain);
  35. case 'cloudflare':
  36. return new CloudFlare($domain);
  37. default:
  38. Log::error("未知渠道:".sysConfig('ddns_mode'));
  39. return false;
  40. }
  41. }
  42. /**
  43. * 修改解析记录
  44. *
  45. * @param string $domain 域名
  46. * @param string $ip ip地址
  47. * @param string $type 记录类型,默认为 A
  48. * @return void
  49. */
  50. public static function update($domain, $ip, $type = 'A')
  51. {
  52. return self::dnsProvider($domain)->update($ip, $type);
  53. }
  54. /**
  55. * 添加解析记录
  56. *
  57. * @param string $domain 域名
  58. * @param string $ip ip地址
  59. * @param string $type 记录类型,默认为 A
  60. * @return void
  61. */
  62. public static function store($domain, $ip, $type = 'A')
  63. {
  64. return self::dnsProvider($domain)->store($ip, $type);
  65. }
  66. }