freenom域名自动续期。
Documentation: English version | 中文版
前言
众所周知,Freenom是地球上唯一一个提供免费顶级域名的商家,不过需要每年续期,每次续期最多一年。由于我申请了一堆域名,而且不是同一时段申请的, 所以每次续期都觉得折腾,于是就写了这个自动续期的脚本。
效果
无论是续期成败或者脚本执行出错,都会收到的程序发出的邮件。如果是续期成败相关的邮件,邮件会包括未续期域名的到期天数等内容。 邮件参考了微信发送的注销公众号的邮件样式。
事前准备
- 发信邮箱:为了方便理解又称机器人邮箱,用于发送通知邮件。目前支持
Gmail
、QQ邮箱
以及163邮箱
,程序会自动判断发信邮箱类型并使用合适的配置。推荐使用Gmail
。 - 收信邮箱:用于接收机器人发出的通知邮件。推荐使用
QQ邮箱
,QQ邮箱
唯一的好处只是收到邮件会在QQ
弹出消息。 - VPS:随便一台服务器都行,系统推荐
Centos7
,另外PHP版本需在php7.1
及以上。 - 没有了
配置发信邮箱
下面分别介绍
Gmail
、QQ邮箱
以及163邮箱
的设置,你只用看自己需要的部分。注意,QQ邮箱
与163邮箱
均使用账户加授权码的方式登录, 谷歌邮箱
使用账户加密码的方式登录,请知悉。另外还想吐槽一下,国产邮箱你得花一毛钱给邮箱提供方发一条短信才能拿到授权码。设置Gmail
1、在
设置>转发和POP/IMAP
中,勾选- 对所有邮件启用 POP
- 启用 IMAP
然后保存更改。
2、允许不够安全的应用
登录谷歌邮箱后,访问谷歌权限设置界面,启用允许不够安全的应用。
另外,若遇到提示
不允许访问账户
登录谷歌邮箱后,去gmail的这个界面点击允许。这种情况较为少见。
设置QQ邮箱
在
设置>账户>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
下,开启POP3/SMTP服务
此时坑爹的QQ邮箱会要求你用手机发送一条短信给腾讯,发送完了点一下
我已发送
然后你就能看到你的邮箱授权码了,使用邮箱账户加授权码即可登录,记下授权码
设置163邮箱
在
设置>POP3/SMTP/IMAP
下,开启POP3/SMTP服务
和IMAP/SMTP服务
并保存
现在点击侧边栏的
客户端授权密码
,并获取授权码,你看到画面可能和我不一样,因为我已经获取了授权码,所以只有重置授权码
按钮,这里自己根据网站提示申请获取授权码,网易和腾讯一样恶心,需要你用手机给它发一条短信才能拿到授权码Telegram bot
上面介绍了三种邮箱的设置方法,如果你不想使用邮件推送,也可以使用 Telegram bot,灵活配置。在
config.php
文件中,将telegram
下的 enable
的值改为true
,即可启用 Telegram bot,同样的,将mail
下的enable
的值改为false
即可关闭邮件推送方式。 Telegram bot 对应两个配置值,一个是chatID
,通过使用你的 Telegram 账户发送/start
给@userinfobot
即可以获取自己的id,另一个是 token
,你的 Telegram bot 令牌,你会创建 Telegram bot 就知道怎么获取,不多赘述。 如何创建一个 Telegram bot 请参考官方文档:点我了解
与通知相关的设置到此就完成了,下面可以愉快的配置本程序了 :)
配置脚本
所有操作均在Centos7系统下进行,其它Linux发行版大同小异
获取源码
$ mkdir -p /data/wwwroot/freenom
$ cd /data/wwwroot/freenom
# clone本仓库源码
$ git clone https://github.com/luolongfei/freenom
配置过程
# 复制配置文件模板
$ cp .env.example .env
# 编辑配置文件
$ vim .env
# .env文件里每个项目都有详细的说明,这里不再赘述,简言之,你需要把里面所有项都改成你自己的。需要注意的是多账户配置的格式:
# e.g. MULTIPLE_ACCOUNTS='<账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3>'
# 当然,若你只有单个账户,只配置FREENOM_USERNAME和FREENOM_PASSWORD就够了,单账户和多账户的配置会被合并在一起读取并去重。
# 编辑完成后,按“Esc”回到命令模式,输入“:wq”回车即保存并退出,不会用vim编辑器的问下谷歌大爷:)
添加计划任务
安装crontabs以及cronie
$ yum -y install cronie crontabs
# 验证crond是否安装及启动
$ yum list cronie && systemctl status crond
# 验证crontab是否安装
$ yum list crontabs $$ which crontab && crontab -l
打开任务表单,并编辑
$ crontab -e
# 任务内容如下
# 此任务的含义是在每天早上9点执行/data/wwwroot/freenom/路径下的run文件
# 注意:某些情况下,crontab可能找不到你的php路径,下面的命令执行后会在freenom_crontab.log文件输出错误信息,你应该指定php路径:把下面的php替换为/usr/local/php/bin/php(根据实际情况)
00 09 * * * cd /data/wwwroot/freenom/ && php run > freenom_crontab.log 2>&1
重启crond守护进程(每次编辑任务表单后都需此步,以使任务生效)
$ systemctl restart crond
若要检查
计划任务
是否正常,你可以将上面的任务执行时间设置在几分钟后,然后等到任务执行完成, 检查/data/wwwroot/freenom/
目录下的freenom_crontab.log
文件内容,是否有报错信息。常见的错误信息如下:- /bin/sh: php: command not found
- /bin/sh: /usr/local/php: Is a directory
解决方案:先执行# 确定php的位置,一般输出为“php: /usr/local/php /usr/local/php/bin/php”,选长的那个即:/usr/local/php/bin/php $ whereis php
现在我们知道php的路径是/usr/local/php/bin/php
(根据你自己系统的实际情况,可能不同),然后修改表单任务里的命令,把00 09 * * * cd /data/wwwroot/freenom/ && php run > freenom_crontab.log 2>&1
改为00 09 * * * cd /data/wwwroot/freenom/ && /usr/local/php/bin/php run > freenom_crontab.log 2>&1
更多参考:点这里
当然,如果你的
计划任务
能正确找到php路径
,没有错误,那你什么也不用做。
至此,所有的配置都已经完成,下面我们验证一下整个流程是否走通:)
验证
你可以先将
config.php
中的noticeFreq
的值改为1(即每次执行都发邮件通知),然后执行$ cd /data/wwwroot/freenom/ && php run
不出意外的话,你将收到一封关于域名情况的邮件。
信仰
2020年,这个世界会好吗?
from https://github.com/luolongfei/freenom认真是我们参与这个社会的方式,认真是我们改变这个社会的方式。 ——李志
No comments:
Post a Comment