Laravel DDNS package,可代替花生壳之类的软件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
seekerliu
V2EX    PHP

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

  •  
  •   seekerliu 2017-09-29 23:56:38 +08:00 5248 次点击
    这是一个创建于 2984 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自制了一个 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 命令。

    • config/app.php 中添加此行:
     'providers' => [ //... Seekerliu\DynamicDns\ServiceProvider::class, ], 
    • 将下面的内容放到你的 .env 文件中:
    DDNS_DNSPOD_ID= DDNS_DNSPOD_TOKEN= DDNS_DOMAIN= DDNS_SUB_DOMAIN= DDNS_DNSPOD_UA="Laravel DDNS Client/0.0.1 ([email protected])" DDNS_DNSPOD_URI=https://dnsapi.cn/ DDNS_GET_IP_URI=https://seekerliu.com/getip.php DDNS_ENABLE_LOG=true 
    • 配置 .env 文件:
    # 你的 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 ([email protected])" # 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 
    第 1 条附言    2017-10-01 14:26:50 +08:00
    怪我表达不清晰~ 这个是为 Laravel 准备的一个 package,对于那些开启了 schedule 的项目,只需一句 composer require ... 就能实现 DDNS 的功能,一个节约时间的小工具啦~
    19 条回复    2017-10-02 01:26:39 +08:00
    bazingaterry
        1
    bazingaterry  
       2017-09-30 02:11:06 +08:00 via iPhone
    杀鸡用原子弹?
    ioREQcom
        2
    ioREQcom  
       2017-09-30 02:38:03 +08:00
    最烦这种一看了 laravel 就上来分享,以为自己很牛逼的人了,看我怎么一行 shell 代码搞定,专治吹牛逼的
    http://icms.factj.com/article.php?id=2352
    ioREQcom
        3
    ioREQcom  
       2017-09-30 02:42:58 +08:00   1
    还有这个写的也不错
    http://www.anrip.com/post/872
    airycanon
        4
    airycanon  
       2017-09-30 08:41:22 +08:00
    楼上说出了我的心声。
    cappuccinos
        5
    cappuccinos  
       2017-09-30 08:44:59 +08:00 via iPhone
    不错。
    ihciah
        6
    ihciah  
       2017-09-30 09:22:25 +08:00
    借楼打广告: https://github.com/ihciah/simple-ddns
    (如果并发不算大&&不打算用第三方服务...
    simaguo
        7
    simaguo  
       2017-09-30 12:11:05 +08:00
    DDNS 是什么,用来解决什么具体问题?小白不懂求轻拍
    baoguok
        8
    baoguok  
       2017-09-30 21:15:14 +08:00
    @ioREQcom #2 就服你。

    看到 laravel 就想吐
    seekerliu
        9
    seekerliu  
    OP
       2017-10-01 14:09:01 +08:00
    @bazingaterry 也不算原子弹了~ 以前做过一个 composer 的 package,这次改装成 Laravel 专用的一个。对于我这种用 Laravel 做的项目,需要 DDNS 的时候,只需一个命令 composer require ... 就解决了问题,不用再配置别的了
    seekerliu
        10
    seekerliu  
    OP
       2017-10-01 14:12:50 +08:00
    @ioREQcom 小弟不才,对 sh 研究不深,学习了 ~
    seekerliu
        11
    seekerliu  
    OP
       2017-10-01 14:15:04 +08:00
    @simaguo 就是动态域名解析,比如家里的宽带 IP 经常变化,那么可以用一些软件监测自家 IP 的变化,如果变了,就把新 IP 解析到指定的域名上。
    seekerliu
        12
    seekerliu  
    OP
       2017-10-01 14:16:04 +08:00
    @bazingaterry 所以,不是说做 DDNS 需要用到 Laravel,而是给 Laravel 应用提供的一个 DDNS 工具。
    bazingaterry
        13
    bazingaterry  
       2017-10-01 14:20:04 +08:00 via iPhone
    @seekerliu 原来如此,是我误会了,见谅。
    seekerliu
        14
    seekerliu  
    OP
       2017-10-01 14:22:05 +08:00
    @ioREQcom 不知道你有没有真正用过 DNSPod,请求 API 的时候,DNSPod 要求使用指定格式的 UA。你的代码里可没有,代码用不了。
    seekerliu
        15
    seekerliu  
    OP
       2017-10-01 14:24:28 +08:00
    @ioREQcom 另外 DNSPod 的更新域名 IP 这个 API 是有请求次数限制的,不做缓存,一会儿就 500 了。所以我的 package 里加了解析列表缓存,只有自己 IP 有变动的时候才去更新。curl 谁不会用。
    seekerliu
        16
    seekerliu  
    OP
       2017-10-01 14:25:18 +08:00
    @bazingaterry 怪我怪我~ 正文没写清楚。
    seekerliu
        17
    seekerliu  
    OP
       2017-10-01 14:28:11 +08:00
    @ihciah 赞~
    seekerliu
        18
    seekerliu  
    OP
       2017-10-01 14:50:22 +08:00
    @cappuccinos 谢谢~
    rekey
        19
    rekey  
       2017-10-02 01:26:39 +08:00
    宽带通这种没有公网 ip 的解决一发???
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1072 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 17:36 PVG 01:36 LAX 09:36 JFK 12:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86