podvps / qiandao-1

基于 binux/qiandao 进行修改,添加完善功能

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

QianDao for Python3

签到 —— 一个自动签到框架 base on an HAR editor

HomePage Github Gitee license Build Image last commit commit activity docker version docker pulls docker stars docker image size repo size python version

操作说明

HAR editor 使用指南

操作前请一定要记得备份数据库

请勿同时运行新旧版签到框架, 或将不同运行中容器的数据库映射为同一文件, 更新后请重启容器或清空浏览器缓存

Docker容器部署方式

  1. Docker地址 : https://hub.docker.com/r/a76yyyy/qiandao

  2. Docker部署命令

    docker run -d --name qiandao -p 8923:80 -v $(pwd)/qiandao/config:/usr/src/app/config a76yyyy/qiandao
  • 默认Redis已随容器启动: (该命令与上一条命令等效)

    docker run -d --name qiandao -p 8923:80 -v $(pwd)/qiandao/config:/usr/src/app/config a76yyyy/qiandao sh -c "redis-server --daemonize yes && python /usr/src/app/run.py"
  • 容器内部无法连通外网时尝试该命令:

    docker run -d --name qiandao --env PORT=8923 --net=host -v $(pwd)/qiandao/config:/usr/src/app/config a76yyyy/qiandao

    请注意使用该命令创建容器后,请将模板里 http://localhost/ 形式的请求手动改成 http://localhost:8923/ 后才能正常完成相关API请求

  1. 数据库备份指令 :

    docker cp 容器名:/usr/src/app/config/database.db .
  • 数据库恢复指令 :

    docker cp database.db 容器名:/usr/src/app/config/
  1. Docker 配置邮箱(强制使用SSL)

    docker run -d --name qiandao -p 8923:80 -v $(pwd)/qiandao/config:/usr/src/app/config --env MAIL_SMTP=STMP服务器 --env MAIL_PORT=邮箱服务器端口 --env MAIL_USER=用户名 --env MAIL_PASSWORD=密码  --env DOMAIN=域名 a76yyyy/qiandao
  2. Docker 使用MySQL

    docker run -d --name qiandao -p 8923:80 -v $(pwd)/qiandao/config:/usr/src/app/config --ENV DB_TYPE=mysql --ENV JAWSDB_MARIA_URL=mysql://用户名:密码@hostname:port/数据库名 a76yyyy/qiandao
  3. 其余可参考 Wiki : Docker部署签到站教程

  4. DockerHub : 介绍

  5. Docker已预装Curl环境, 默认安装pycurl模组

Web源码部署方式

  1. Version : python3.8

    # 请先cd到框架源码根目录
    pip3 install -r requirements.txt
  2. 可选 redis, Mysql

    mysql < qiandao.sql
  3. 修改相关设置

    # 请先在框架根目录下新建local_config.py, 在linux环境下可执行以下命令
    cp config.py local_config.py
    # 修改local_config.py文件的内容不受通过git更新源码的影响
  4. 启动

    python ./run.py

    数据不随项目分发, 去 https://github.com/qiandao-today/templates 查看你需要的模板, 点击下载。

    在你自己的主页中 「我的模板 +」 点击 + 上传模板。

    模板需要发布才会在「公开模板」中展示, 你需要管理员权限在「我的发布请求」中审批通过。

  5. 设置管理员

    python ./chrole.py your@email.address admin
  6. qiandao.py-CMD操作

    python ./qiandao.py tpl.har [--key=value]* [env.json]

config.py-配置环境变量

变量名 是否必须 默认值 说明
BIND 0.0.0.0 监听地址
PORT 8923 监听端口
QIANDAO_DEBUG False 是否启用Debug模式
MULTI_PROCESS False 是否启用多进程模式,
Windows平台无效
AUTO_RELOAD False 是否启用自动热加载,
MULTI_PROCESS=True时无效
ENABLE_HTTPS False 发送的邮件链接启用HTTPS,
非程序使用HTTPS, 需要HTTPS需要使用反向代理
DOMAIN qiandao.today 指定访问域名,
<建议修改>, 否则邮件重置密码等功能无效
AES_KEY binux AES加密密钥, <强烈建议修改>
COOKIE_SECRET binux cookie加密密钥, <强烈建议修改>
COOKIE_DAY 5 Cookie在客户端保留天数
DB_TYPE sqlite3 需要使用MySQL时设置为'mysql'
JAWSDB_MARIA_URL '' 需要使用MySQL时,
设置为 mysql://用户名:密码@hostname:port/数据库名?auth_plugin=
REDISCLOUD_URL '' 需要使用Redis或RedisCloud时,
设置为 http://rediscloud:密码@hostname:port
REDIS_DB_INDEX 1 默认为1
PUSH_PIC_URL push_pic.png 默认为push_pic.png
PUSH_BATCH_SW True 是否允许开启定期推送签到任务日志, 默认为True
MAIL_SMTP "" 邮箱SMTP服务器
MAIL_PORT "" 邮箱SMTP服务器端口
MAIL_USER "" 邮箱用户名
MAIL_PASSWORD "" 邮箱密码
MAIL_DOMAIN mail.qiandao.today 邮箱域名,没啥用, 使用的DOMAIN
PROXIES "" 全局代理域名列表,用"
PROXY_DIRECT_MODE "" 全局代理黑名单模式,默认不启用
"url"为网址匹配模式;"regexp"为正则表达式匹配模式
PROXY_DIRECT "" 全局代理黑名单匹配规则
USE_PYCURL True 是否启用Pycurl模组
ALLOW_RETRY True 在Pycurl环境下部分请求可能导致Request错误时,
自动修改冲突设置并重发请求
DNS_SERVER "" 通过Curl使用指定DNS进行解析(仅支持Pycurl环境),
如 8.8.8.8
CURL_ENCODING True 是否允许使用Curl进行Encoding操作
CURL_CONTENT_LENGTH True 是否允许Curl使用Headers中自定义Content-Length请求
NOT_RETRY_CODE 详见配置... 详见配置...
EMPTY_RETRY True 详见配置...
USER0ISADMIN True 第一个注册用户为管理员,False关闭

详细信息请查阅config.py

旧版local_config.py迁移

Line Delete Modify
10 import urlparse from urllib.parse import urlparse
18 mysql_url = urlparse.urlparse(os.getenv('JAWSDB_MARIA_URL', '')) mysql_url = urlparse(os.getenv('JAWSDB_MARIA_URL', ''))
19 redis_url = urlparse.urlparse(os.getenv('REDISCLOUD_URL', '')) redis_url = urlparse(os.getenv('REDISCLOUD_URL', ''))
43 aes_key = hashlib.sha256(os.getenv('AES_KEY', 'binux').encode('utf-8')).digest() aes_key = hashlib.sha256(os.getenv('AES_KEY', 'binux')).digest()
44 cookie_secret = hashlib.sha256(os.getenv('COOKIE_SECRET', 'binux').encode('utf-8')).digest() cookie_secret = hashlib.sha256(os.getenv('COOKIE_SECRET', 'binux')).digest()

更新方法

  1. 源码部署更新

    sh ./update.sh && pip install -r requirements.txt # 先cd到源码所在目录, 执行命令后重启进程 
  2. Docker容器部署更新

    sh /usr/src/app/update.sh && pip install -r requirements.txt # 先进入容器后台, 执行命令后重启进程 
  3. 强制同步最新源码

    sh ./update.sh -f && pip install -r requirements.txt

更新日志

详见 CHANGELOG.md

鸣谢

Binux

Mark

PiDan

AragonSnow

AragonSnow/qiandao

戏如人生

buzhibujuelb

billypon

powersee

acooler15

a76yyyy

……

个人项目精力有限, 仅保证对Chrome浏览器的支持。如果测试了其他浏览器可以pull request。

许可

MIT 许可协议

About

基于 binux/qiandao 进行修改,添加完善功能

License:MIT License


Languages

Language:JavaScript 54.7%Language:Python 14.5%Language:HTML 10.2%Language:CSS 6.3%Language:Less 4.8%Language:SCSS 4.1%Language:CoffeeScript 2.5%Language:PHP 1.6%Language:TypeScript 0.5%Language:Shell 0.4%Language:Twig 0.2%Language:Dockerfile 0.1%Language:Makefile 0.0%