DDNS.php 1.6 KB

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