Skip to content
forked from a76yyyy/qd

基于 binux/qiandao和AragonSnow/qiandao 进行修改,添加完善功能,将生产环境切换至python3.8

License

Notifications You must be signed in to change notification settings

veip007/qiandao

 
 

Repository files navigation

qiandao for Python3

以下为原镜像说明 :

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

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"

  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://用户名:密码@链接/数据库名 a76yyyy/qiandao

  3. 其余可参考 Wiki : Docker部署签到站教程

  4. DockerHub : 介绍

Web部署

1. Version: python3.8

pip3 install -r requirements.txt

2. 可选 redis, Mysql

mysql < qiandao.sql

3. 启动

python ./run.py

数据不随项目分发,去 https://qiandao.today/tpls/public 查看你需要的模板,点击下载。 在你自己的主页中 「我的模板+」 点击 + 上传。模板需要发布才会在「公开模板」中展示,你需要管理员权限在「我的发布请求」中审批通过。

4. 设置管理员

python ./chrole.py your@email.address admin

5. qiandao.py-CMD操作

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

config.py-配置变量

变量名 是否必须 默认值 说明
BIND 0.0.0.0 监听地址
PORT 8923 监听端口
ENABLE_HTTPS False 发送的邮件链接启用HTTPS,非程序使用HTTPS,需要HTTPS需要使用反向代理
DB_TYPE sqlite3 需要使用MySQL时设置为'mysql'
JAWSDB_MARIA_URL '' 需要使用MySQL时设置为 mysql://用户名:密码@链接/数据库名
REDISCLOUD_URL '' 不懂
REDIS_DB_INDEX 1 不懂
DOMAIN qiandao.today 指定域名,建议修改,不然邮件重置密码之类的功能无效
MAIL_SMTP "" 邮箱SMTP服务器
MAIL_PORT "" 邮箱SMTP服务器端口
MAIL_USER "" 邮箱用户名
MAIL_PASSWORD "" 邮箱密码
MAIL_DOMAIN mail.qiandao.today 邮箱域名,没啥用,使用的DOMAIN
AES_KEY binux AES加密密钥,强烈建议修改
COOKIE_SECRET binux cookie加密密钥,强烈建议修改

优先用mailgun方式发送邮件,如果要用smtp方式发送邮件,请填写mail_smtp, mail_user, mail_password

mail_smtp = ""     # 邮件smtp 地址
mail_user = ""    # 邮件账户
mail_passowrd = ""   # 邮件密码
mail_domain = "mail.qiandao.today"
mailgun_key = ""

旧版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()

更新日志

2021.08.07 更新

  1. 更新Wiki
  2. 修复网页编码导致的Body解析bug

2021.07.31 更新

  1. 修复旧版数据库导致的编码bug
  2. 添加部分说明
  3. 优化docker配置
  4. 允许headers中文编码
  5. 修复不间断空格导致的编解码bug
  6. 修复delay延时功能
  7. 增加log的详细错误显示

2021.07.29 更新

  1. 修复异常抛出时泄露源码路径的bug
  2. 修复原sql的groups字段bug
  3. 优化DockerFile及配置文件

2021.07.28 更新

  1. 适配python版本至python3.8

2021.06.28 更新

  1. 修改Dockfile,采用密钥更新

2021.06.26 更新

  1. 公共仓库添加评论功能,跳转到github,国内打不开的问题自行解决
  2. 公共仓库添加强制更新按钮
  3. 修复mysql创建数据库错误
  4. 修复about页面打开500错误

2021.06.21 更新

  1. 重写公共模板仓库的订阅方法,允许添加第三方库(具体规范参考)
  2. 模板使用缓存的方式,默认是每隔一天重新读取,可以手动刷新缓存
  3. 新增多任务禁用/启用/删除/定时/分组
  4. 任务和模板分组栏修改颜色
  5. 修复注册用户时没有创建md5密码的bug

2021.04.13 更新

  1. 添加代理功能,目前暂时不可用(By billypon)

2021.02.20 更新

  1. 完善MD5
  2. 修复部分站点500的问题
  3. 公共模板添加清缓存功能

2021.02.20 更新

  1. 修复容忍错误推送的失效的BUG
  2. 主循环修改为0.5s,使定时运行更准确
  3. 修复/register没有注册按钮的BUG
  4. 密码验证修改为md5
  5. 更换默认微信推送图片

2021.01.22 更新

  1. 整合推送模块
  2. 添加定时cron支持
  3. ENABLE_HTTPS 使能时邮件链接为https

2021.01.17 更新

  1. 添加企业微信支持
  2. 支持在用户管理里修改密码

2021.01.16 更新

  1. 修复点击登陆失败后注册按钮消失的问题

2021.01.13 更新

  1. 开启邮箱验证前必须验证管理员邮箱

2021.01.08 更新

  1. 修复20210122注册按钮丢失的BUG
  2. 添加记事本访问接口
  3. 添加自定义推送示例
  4. sqlite3_db_task_converter放在web启动之前

2021.01.07 更新

  1. 底部添加本项目链接
  2. 禁止注册时隐藏注册按钮
  3. 显示注册推送的前值
  4. 添加记事本功能,用户可以将数据保存在本地
  5. 推送注册和推送设置按钮移动到工具箱
  6. 定时时间以任务起始时间为依据
  7. 新增自定义推送功能
  8. bark推送改为POST,可以推送日志

2020.12.24 更新

  1. 修复模板编辑中'{{变量}}'自动urlencode的问题

2020.12.23 更新

  1. 添加EMAIL发送开关

2020.12.22 更新

  1. 修复任务运行结束后'logDay'报错
  2. 邮箱变量设置为环境变量获取

2020.12.04 更新

  1. 修复任务运行结束后'logDay'报错

2020.11.20 更新

  1. 修复模板订阅时url太长报错的问题,模板按照修改时间来排序
  2. 支持网站设置仅保留一定天数的日志,日志清理时间在任务成功完成之后,默认365天
  3. 手动清除一定天数的日志
  4. 分组折叠/展开 支持记忆
  5. 修复模板编辑页面反选错误的bug

2020.11.05 更新

  1. 用户管理,备份,网站管理,密码不显示明文,不输入账号密码返回页面显示中文

2020.10.31 更新

  1. 允许普通用户备份/恢复
  2. 模板编辑页显示请求排序
  3. 模板编辑页可以同时删除多个请求
  4. 主页允许多项操作删除/分组,取消分组的勾选框,改为点击即可显示隐藏
  5. 公共仓库打开失败时使用本地仓库

2020.09.18 更新

  1. 允许备份/恢复 用户的所有任务和模板
  2. 修复模板编辑时,变量作为url会自动url转码的bug
  3. 模板编辑时允许拖拽请求
  4. 模板订阅添加错误显示,避免500

2020.09.14 更新(By liubei121212)

  1. 添加 unicode 函数
  2. 优化 api 页样式
  3. 在模板编辑页中测试时也可以复制错误信息了
  4. 优化日志页复制错误信息的实现方式
  5. 添加常用 api/过滤器
  6. 修复主页和推送设置中长用户名的显示
  7. 前值、edit 页面的错误信息增加复制按钮

2020.09.10 更新

  1. 鉴于github 污染严重,使用gitee代替作为订阅源,地址 : https://gitee.com/qiandao-today/templates
  2. 首页的检查模板更新取消,打开公共模板仓库会自动检查更新
  3. 修复邮箱验证,注册后未验证可以再次点击注册验证
  4. 修改任务时显示前值

本次更新有js脚本更新,请开启chrome 的 “disable cache”功能更新js脚本

2020.09.07 更新

  1. 在数据库管理中增加一键备份/恢复所有模板的功能

2020.09.01 更新

  1. 正则提取支持post方式
  2. 取消getcookie插件提示(By powersee)
  3. 管理员可以查看用户是否验证邮箱,可以设置不验证邮箱无法登陆
  4. 支持任务分组
  5. 推送带上任务备注

2020.07.19更新

  1. 修改按钮“推送通知开关”为“推送设置”
  2. 添加错误提醒容忍。在自动签到到一定次数错误后,才推送提醒。

2020.07.17更新

  1. 使报错显示中文,添加点击复制错误日志按钮(by liubei121212)
  2. 主页版本从alpha修改为20200717

2020.07.09更新

  1. 添加 管理员 备份数据库功能
  2. 添加任务日志清空功能
  3. 修复定时的随机延时取消失败的BUG
  4. 添加任务禁用功能
  5. 为了提高兼容性,请求不验证SSL

2020.6.22 更新

  1. 修复检查公共模板更新功能;
  2. 美化左侧三按钮(By 十六君)
  3. 修复插入RSA加密实际是字符串替换的BUG
  4. 修改请求为不验证SSL,提升兼容性

2020.6.14 更新

  1. 添加RSA加密/解密
  2. 用户管理页面添加用户最后登陆时间
  3. 字符串替换功能可以返回纯文本,避免有转义'\'的出现,需要替换参数r=text

2020.6.12 更新

  1. 定时日志BUG太多,修不过来,取消此功能
  2. 修复用户不存在时登录500错误

2020.6.11 更新

  1. 修复MySQL的支持,不需要手动更新Mysql数据库

2020.6.10 更新

  1. 添加管理员管理用户功能,可以将用户禁用/开启/删除
  2. 添加关闭/开启注册功能
  3. 修改主页的'检查更新'为'检查模板更新'

使用前需要进入容器,将对应已注册邮箱设置为管理员 :

docker exec -it 容器名 /bin/bash
python ./chrole.py 邮箱 admin

被禁用的账户将不能登录网站,所有任务将被禁用。 被删除的账户,会删除该用户的所有任务,模板和日志

如果使用mysql 在 20200604 请使用以下命令 :

ALTER TABLE `user` ADD `status`  VARBINARY(1024) NOT NULL DEFAULT 'Enable';
CREATE TABLE IF NOT EXISTS `site` (
          `id` INTEGER NOT NULL PRIMARY KEY,
          `regEn` INT UNSIGNED NOT NULL DEFAULT 1
        );
INSERT INTO `site` VALUES(1,1);

2020.6.6 更新

  1. 修复用户不存在依然能登陆的BUG(具体表现为 : 新用户新建模板保存时500错误,注册推送时提示NoneType)
  2. 完善注册推送的注册消息
  3. 修复自动完成不推送的bug
  4. 添加定时 “今日已签过” 选项,可以直接定时第二天
  5. 修复公共模板的HAR订阅功能

2020.6.5 更新

  1. 修复 sqlite3 数据库初始值错误的问题,仅影响新建数据库的用户

2020.6.4 更新

  1. 根据反馈,HAR编辑里插入链接修改默认地址为localhost
  2. 修复2020601版,插入请求后修改为localhost地址, 点击测试的500错误的问题
  3. 支持定时后 随机延时

本次更新会把之前的定时设置全部取消,介意请勿更新

如果使用mysql 在 20200601 请使用以下命令 :

ALTER TABLE  `task` ADD `newontime`  VARBINARY(256) NOT NULL DEFAULT '{\"sw\":false,\"time\":\"00:10:10\",\"randsw\":false,\"tz1\":0,\"tz2\":0 }'

延时的另一种用法,间隔定时运行 : 如果要实现每1周定时运行一次,设置最大最小值都是604800,即可

2020.6.1 更新

  1. 时间显示修改为具体时间,取消之前的 "1小时后"等模糊显示(By 戏如人生)
  2. 新建任务时可以选择分组
  3. Bark推送支持保存历史信息,需要升级APP。
  4. HAR编辑里添加添加插入unicode解码,url解码,正则表达式,字符串替换的功能

2020.5.31 更新

  1. 修复定时 ‘day out of month’ 的BUG
  2. 取消定时界面的今日运行选项,自动判断当前时间是今天还是第二天
  3. 集成了时间戳获取、unicode转换、url转换功能(By gxitm)
  4. 集成了正则表达式、字符串替换功能。

2020.5.30 更新

  1. 修改 任务失败时 推送的消息内容为 任务日志;
  2. 因浏览器支持不好,取消 2020.5.18更新的 ‘模板上传指定格式为.har’;
  3. 新增模板编辑 追加HAR 的功能;
  4. 新增模板请求删除功能。

2020.5.26 更新

  1. 修复定时日志发送的最后一条日志的bug
  2. 修复定时日志出错影响程序运行的bug

2020.5.25 更新

  1. Bark, S酱, WXPusher 注册合并为一个按钮
  2. 任务推送支持注册后也能关闭
  3. 支持分任务开/关推送
  4. 新增每日日志功能,可以将每日定时前的最后一个日志推送到S酱和WXPusher
  5. 修复“↓”按钮定位不准的bug

如果使用mysql 在 5.22 请使用以下命令 :

ALTER TABLE `task` ADD `pushsw` VARBINARY(128) NOT NULL DEFAULT '{\"logen\":false,\"pushen\":true}';
ALTER TABLE `user` ADD `logtime` VARBINARY(128) NOT NULL DEFAULT '{\"en\":false,\"time\":\"20:00:00\",\"ts\":0,\"schanEn\":false,\"WXPEn\":false}';

2020.5.22 更新

  1. 分组增加折叠/展开功能
  2. 左侧增加新建模板按钮,“↑”回到顶部, “↓”表示跳转到模板页面
  3. 修复删除任务时日志不删除bug

2020.5.19 更新

  1. 添加手动检查模板更新的按钮。

如果使用mysql 在 5.18 请使用以下命令 :

ALTER TABLE `tpl` ADD `tplurl` VARCHAR(1024) NULL DEFAULT '' ;
ALTER TABLE `tpl` ADD `updateable` INT UNSIGNED NOT NULL DEFAULT 0;

2020.5.18 更新

  1. 定时的 "今日是否运行" 修改 为 "今日运行"

  2. 添加模板订阅功能,仓库地址在https://github.com/qiandao-today/templates

    主页打开公共模板按钮,点击订阅后自动导入模板,需要自己确认保存

  3. 模板上传指定格式为.har

2020.5.16 更新

  1. 添加任务分类功能

如果使用mysql 请使用以下命令 :

ALTER TABLE `task` ADD `_groups` VARBINARY(128) NOT NULL DEFAULT 'None' ;
  1. 定时功能显示之前的定时值

初始版本

基于quchaonet的蓝调主题签到增加了:

  1. 设置任务最低间隔时间及任务request最高100限制 (by 戏如人生)

http://cordimax.f3322.net:5558/381.html

  1. 增加了server酱、bark推送,WXPusher推送,并可以设置推送开关(by AragonSnow) 需要推送的 : 登录账号以后点击注册bark/s酱/WXPusher,测试推送没有问题以后,再点击提交

  2. 增加定时功能,在新建任务以后会出现定时按钮,设置每天的定时时间。
    不兼容旧版的数据库, 旧版数据库导入会自动转换,旧版将无法使用
    使用SQLite3的,默认路径改为config文件夹里面,方便挂载后备份
    使用Mysq的,请使用一下命令更新数据库:

ALTER TABLE `task` ADD `ontimeflg` INT UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `task` ADD `ontime` VARCHAR(256) NOT NULL DEFAULT '00:10:00';
ALTER TABLE `user` ADD `skey` VARBINARY(128) NOT NULL DEFAULT '' ;
ALTER TABLE `user` ADD `barkurl` VARBINARY(128) NOT NULL DEFAULT '' ;
ALTER TABLE `user` ADD `wxpusher` VARBINARY(128) NOT NULL DEFAULT '' ;
ALTER TABLE `user` ADD `noticeflg` INT UNSIGNED NOT NULL DEFAULT 1;

鸣谢

Mark https://www.quchao.net/

戏如人生 https://49594425.xyz/

AragonSnow https://hexo.aragon.wang/

buzhibujuelb

billypon

powersee

AragonSnow/qiandao

a76yyyy/qiandao

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

许可

MIT

About

基于 binux/qiandao和AragonSnow/qiandao 进行修改,添加完善功能,将生产环境切换至python3.8

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 38.9%
  • JavaScript 30.2%
  • HTML 23.3%
  • CoffeeScript 5.4%
  • CSS 1.1%
  • Less 0.8%
  • Other 0.3%