本github actions方法已于2022-07-15完全被封,请去仓库看文档
freenom自动续期
Fork luolongfei大佬的freenom库,再添加以下workflow:
“点击展开完整代码”
# 1、Fork 本仓库 # 2、在你 Fork 的本仓库下的 Settings > Secrets 画面追加以下几个 secret 变量: # FREENOM_USERNAME、FREENOM_PASSWORD、MULTIPLE_ACCOUNTS、MAIL_USERNAME、MAIL_PASSWORD、TO、MAIL_ENABLE、TELEGRAM_CHAT_ID、 # TELEGRAM_BOT_TOKEN、TELEGRAM_BOT_ENABLE、NOTICE_FREQ # (注:此处列出了所有可用变量,你只用追加你需要用到的变量,变量的具体含义请参考本项目的 .env 文件中的说明,一般情况下,.env 文件中的某些 # 项存在默认值,如果默认值满足你的需求则可不追加到 Secrets,它们会保持默认) # # 下面定时任务中的时间是世界时间,每天 10:00(本示例已改为2:00) 执行,由于创建虚拟环境会消耗时间,故任务会延迟 30 秒左右执行 # # @Author of yml configuration file: RouRouX <https://github.com/RouRouX> & mybsdc <mybsdc@gmail.com> # ###### end 说明 ###### name: Run it on action on: push: branches: - main schedule: - cron: 00 02 * * * workflow_dispatch: jobs: run-it: runs-on: ubuntu-18.04 name: Run it on action steps: - name: Checkout master uses: actions/checkout@v2 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '7.2' - name: Setting run: | echo 'Renew freenom domain name automatically.' echo '@Author of yml configuration file: RouRouX <https://github.com/RouRouX> & mybsdc <mybsdc@gmail.com>' echo '@Url: https://github.com/luolongfei/freenom' cp .env.example .env if [[ ('${{ secrets.FREENOM_USERNAME }}' == '' || '${{ secrets.FREENOM_PASSWORD }}' == '') && '${{ secrets.MULTIPLE_ACCOUNTS }}' == '' ]]; then echo '你在 Github 的当前项目的 Settings > Secrets 画面没有设置任何与账户信息相关的 secret 值,无法正常运行,请添加新的 secret 值,设置 FREENOM_USERNAME 与 FREENOM_PASSWORD,或者设置 MULTIPLE_ACCOUNTS,以及 .env 文件中其它必要项,各项的具体含义与格式参考本项目 .env 文件中的说明。'; fi if [ '${{ secrets.FREENOM_USERNAME }}' != '' ]; then sed -i "s/^FREENOM_USERNAME=.*$/FREENOM_USERNAME='${{ secrets.FREENOM_USERNAME }}'/" .env; fi if [ '${{ secrets.FREENOM_PASSWORD }}' != '' ]; then sed -i "s/^FREENOM_PASSWORD=.*$/FREENOM_PASSWORD='${{ secrets.FREENOM_PASSWORD }}'/" .env; fi if [ '${{ secrets.MULTIPLE_ACCOUNTS }}' != '' ]; then sed -i "s/^MULTIPLE_ACCOUNTS=.*$/MULTIPLE_ACCOUNTS='${{ secrets.MULTIPLE_ACCOUNTS }}'/" .env; fi if [ '${{ secrets.MAIL_USERNAME }}' != '' ]; then sed -i "s/^MAIL_USERNAME=.*$/MAIL_USERNAME='${{ secrets.MAIL_USERNAME }}'/" .env; fi if [ '${{ secrets.MAIL_PASSWORD }}' != '' ]; then sed -i "s/^MAIL_PASSWORD=.*$/MAIL_PASSWORD='${{ secrets.MAIL_PASSWORD }}'/" .env; fi if [ '${{ secrets.TO }}' != '' ]; then sed -i "s/^TO=.*$/TO='${{ secrets.TO }}'/" .env; fi if [ '${{ secrets.MAIL_ENABLE }}' != '' ]; then sed -i "s/^MAIL_ENABLE=.*$/MAIL_ENABLE='${{ secrets.MAIL_ENABLE }}'/" .env; fi if [ '${{ secrets.TELEGRAM_CHAT_ID }}' != '' ]; then sed -i "s/^TELEGRAM_CHAT_ID=.*$/TELEGRAM_CHAT_ID='${{ secrets.TELEGRAM_CHAT_ID }}'/" .env; fi if [ '${{ secrets.TELEGRAM_BOT_TOKEN }}' != '' ]; then sed -i "s/^TELEGRAM_BOT_TOKEN=.*$/TELEGRAM_BOT_TOKEN='${{ secrets.TELEGRAM_BOT_TOKEN }}'/" .env; fi if [ '${{ secrets.TELEGRAM_BOT_ENABLE }}' != '' ]; then sed -i "s/^TELEGRAM_BOT_ENABLE=.*$/TELEGRAM_BOT_ENABLE='${{ secrets.TELEGRAM_BOT_ENABLE }}'/" .env; fi if [ '${{ secrets.NOTICE_FREQ }}' != '' ]; then sed -i "s/^NOTICE_FREQ=.*$/NOTICE_FREQ='${{ secrets.NOTICE_FREQ }}'/" .env; fi sed -i "s/^ON_GITHUB_ACTIONS=.*$/ON_GITHUB_ACTIONS=true/" .env - name: Run run: | php run # 以下为保活所需step - name: curl id: enable_workflow env: REST_TOKEN: ${{ secrets.REST_TOKEN }} API_ADDRESS: ${{ secrets.API_ADDRESS }} run: | echo "Enable Workflow Start..." curl -X PUT -H "Authorization: token $REST_TOKEN" "$API_ADDRESS" echo "Finished"
在你 Fork 的本仓库下的
Settings
->Secrets
页面追加以下几个secret
秘密环境变量变量名 含义 默认值 是否必须 备注 FREENOM_USERNAME freenom 账户 - 是 只支持邮箱账户,不支持也不打算支持第三方社交账户登录 FREENOM_PASSWORD freenom 密码 - 是 某些特殊字符可能需要转义,在 Github actions
环境,请在除字母数字以外的字符前加上“\”,否则可能无法正确读取密码,此举是防止某些字符在shell
命令行被解析,举个例子,比如我密码是fei.,:!~@#$%^&*?233-_abcd^$$
,那么写到秘密变量时就应写为fei\.\,\:\!\~\@\#\$\%\^\&\*\?233\-\_abcd\^\$\$
。而在普通VPS
环境,则只用在密码中的“#”或单双引号前加“\”,请参考.env.example
文件内的注释,应该没人会设置那么变态的密码吧MULTIPLE_ACCOUNTS 多账户支持 - 否 多个账户和密码的格式必须是“ <账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3>
”,如果设置了多账户,上面的FREENOM_USERNAME
和FREENOM_PASSWORD
可不设置MAIL_USERNAME 机器人邮箱账户 - 是 支持 Gmail
、QQ邮箱
以及163邮箱
,尽可能使用163邮箱
或者QQ邮箱
,而非之前推荐的Gmail
。因为谷歌的安全机制,每次在新设备登录Gmail
都会先被限制,需要手动解除限制才行,而Github Actions
每次创建的虚拟环境都会分配一个新的设备IP
,相当于每次都是从新设备登录Gmail
,而我们不可能每次都去手动为Gmail
解除登录限制,所以这种机制会导致无法发出通知邮件。具体的配置方法参考「 配置发信邮箱 」MAIL_PASSWORD 机器人邮箱密码 - 是 Gmail
填密码,QQ邮箱
或163邮箱
填授权码TO 接收通知的邮箱 - 是 你自己最常用的邮箱,推荐使用 QQ邮箱
,用来接收机器人邮箱发出的域名相关邮件MAIL_ENABLE 是否启用邮件推送功能 true 否 true
:启用false
:不启用
默认启用,如果设为false
,不启用邮件推送功能,则上面的MAIL_USERNAME
、MAIL_PASSWORD
、TO
变量变为非必须,可不设置TELEGRAM_CHAT_ID 你的 chat_id
- 否 通过发送 /start
给@userinfobot
可以获取自己的id
TELEGRAM_BOT_TOKEN 你的 Telegram bot
的token
- 否 TELEGRAM_BOT_ENABLE 是否启用 Telegram Bot
推送功能false 否 true
:启用false
:不启用
默认不启用,如果设为true
,则必须设置上面的TELEGRAM_CHAT_ID
和TELEGRAM_BOT_TOKEN
变量NOTICE_FREQ 通知频率 1 否 0
:仅当有续期操作的时候1
:每次执行REST_TOKEN 如后文所示 - 否 保活所需 API_ADDRESS 如后文所示 - 否 保活所需
(注:你只用关注上面表格中的必须项,非必须项可不设置,将保持默认值。更多相关变量的含义、格式以及默认值,请参考本项目的.env.example
文件内的注释)
- 启用 Actions ,完成。
保活
创建 sercets :
变量名 值 备注 REST_TOKEN 个人访问令牌(Personal access tokens) 个人资料照片->设置->Developer settings API_ADDRESS https://api.github.com/repos/{owner}/{target-repo}/actions/workflows/enable_workflow/enable
修改{owner}/{target-repo} 运行 github action。
相互唤醒,再次在目标 repo 的工作流程中执行上述步骤,并添加所需 step(已在代码中注释)。