Laravel DDNS package,可代替花生壳之类的软件

2017 年 9 月 29 日
 seekerliu

自制了一个 Laravel 的 DDNS 工具, 利用 DNSPod 的 API 实现了 DDNS,可以用来代替花生壳之类的软件。

安装

composer require seekerliu/laravel-ddns:dev-master
$ crontab -e
//添加下列一行:
* * * * * /path-to-php/php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

MacOS 可以在 Terminal 中使用下面命令临时代替,Ctrl + C 可终止:

while true; do php artisan schedule:run; sleep 60; done

配置

Laravel 5.5 中有 Package Discover 功能,故无需进行第 1 步。如未起作用,可手动执行 php artisan package:discover 命令。

  'providers' => [
      //...
      
      Seekerliu\DynamicDns\ServiceProvider::class,
  ],
DDNS_DNSPOD_ID=
DDNS_DNSPOD_TOKEN=
DDNS_DOMAIN=
DDNS_SUB_DOMAIN=
DDNS_DNSPOD_UA="Laravel DDNS Client/0.0.1 (seekerliu@vip.qq.com)"
DDNS_DNSPOD_URI=https://dnsapi.cn/
DDNS_GET_IP_URI=https://seekerliu.com/getip.php
DDNS_ENABLE_LOG=true
# 你的 DNSPOD ID,必填
DDNS_DNSPOD_ID=
# 你的 DNSPOD TOKEN,必填
DDNS_DNSPOD_TOKEN=
# 你在 DNSPOD 解析的根域名,例如: seekerliu.com ,必填
DDNS_DOMAIN=
# 你在 DNSPOD 解析的二级域名,例如:blog,必填
DDNS_SUB_DOMAIN=
# 访问 DNSPOD API 需要的 UA,不用改
DDNS_DNSPOD_UA="Laravel DDNS Client/0.0.1 (seekerliu@vip.qq.com)"
# DNSPOD API URI,不用改
DDNS_DNSPOD_URI=https://dnsapi.cn/
# 获取 json 格式的公网 ip,可以换成自己的,源码在 getip.php 中
DDNS_GET_IP_URI=https://seekerliu.com/getip.php
# 是否开启日志
DDNS_ENABLE_LOG=true
5409 次点击
所在节点    PHP
19 条回复
bazingaterry
2017 年 9 月 30 日
杀鸡用原子弹?
ioREQcom
2017 年 9 月 30 日
最烦这种一看了 laravel 就上来分享,以为自己很牛逼的人了,看我怎么一行 shell 代码搞定,专治吹牛逼的
http://icms.factj.com/article.php?id=2352
ioREQcom
2017 年 9 月 30 日
还有这个写的也不错
http://www.anrip.com/post/872
airycanon
2017 年 9 月 30 日
楼上说出了我的心声。
cappuccinos
2017 年 9 月 30 日
不错。
ihciah
2017 年 9 月 30 日
借楼打广告: https://github.com/ihciah/simple-ddns
(如果并发不算大&&不打算用第三方服务...
simaguo
2017 年 9 月 30 日
DDNS 是什么,用来解决什么具体问题?小白不懂求轻拍
baoguok
2017 年 9 月 30 日
@ioREQcom #2 就服你。

看到 laravel 就想吐
seekerliu
2017 年 10 月 1 日
@bazingaterry 也不算原子弹了~ 以前做过一个 composer 的 package,这次改装成 Laravel 专用的一个。对于我这种用 Laravel 做的项目,需要 DDNS 的时候,只需一个命令 composer require ... 就解决了问题,不用再配置别的了
seekerliu
2017 年 10 月 1 日
@ioREQcom 小弟不才,对 sh 研究不深,学习了 ~
seekerliu
2017 年 10 月 1 日
@simaguo 就是动态域名解析,比如家里的宽带 IP 经常变化,那么可以用一些软件监测自家 IP 的变化,如果变了,就把新 IP 解析到指定的域名上。
seekerliu
2017 年 10 月 1 日
@bazingaterry 所以,不是说做 DDNS 需要用到 Laravel,而是给 Laravel 应用提供的一个 DDNS 工具。
bazingaterry
2017 年 10 月 1 日
@seekerliu 原来如此,是我误会了,见谅。
seekerliu
2017 年 10 月 1 日
@ioREQcom 不知道你有没有真正用过 DNSPod,请求 API 的时候,DNSPod 要求使用指定格式的 UA。你的代码里可没有,代码用不了。
seekerliu
2017 年 10 月 1 日
@ioREQcom 另外 DNSPod 的更新域名 IP 这个 API 是有请求次数限制的,不做缓存,一会儿就 500 了。所以我的 package 里加了解析列表缓存,只有自己 IP 有变动的时候才去更新。curl 谁不会用。
seekerliu
2017 年 10 月 1 日
@bazingaterry 怪我怪我~ 正文没写清楚。
seekerliu
2017 年 10 月 1 日
@ihciah 赞~
seekerliu
2017 年 10 月 1 日
@cappuccinos 谢谢~
rekey
2017 年 10 月 2 日
宽带通这种没有公网 ip 的解决一发???

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/394739

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX