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

2017-09-29 23:56:38 +08:00
 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
4816 次点击
所在节点    PHP
19 条回复
bazingaterry
2017-09-30 02:11:06 +08:00
杀鸡用原子弹?
ioREQcom
2017-09-30 02:38:03 +08:00
最烦这种一看了 laravel 就上来分享,以为自己很牛逼的人了,看我怎么一行 shell 代码搞定,专治吹牛逼的
http://icms.factj.com/article.php?id=2352
ioREQcom
2017-09-30 02:42:58 +08:00
还有这个写的也不错
http://www.anrip.com/post/872
airycanon
2017-09-30 08:41:22 +08:00
楼上说出了我的心声。
cappuccinos
2017-09-30 08:44:59 +08:00
不错。
ihciah
2017-09-30 09:22:25 +08:00
借楼打广告: https://github.com/ihciah/simple-ddns
(如果并发不算大&&不打算用第三方服务...
simaguo
2017-09-30 12:11:05 +08:00
DDNS 是什么,用来解决什么具体问题?小白不懂求轻拍
baoguok
2017-09-30 21:15:14 +08:00
@ioREQcom #2 就服你。

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

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

https://www.v2ex.com/t/394739

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

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

© 2021 V2EX