给CTFd加个机器人配置接口

admin 2022年4月9日07:39:09评论165 views字数 1629阅读5分25秒阅读模式

之前文章里 CTFd 机器人是用爬虫脚本跟 go-cqhttp 结合实现的,爬虫爬取 CTFd 的 api 中的新增解题记录,然后访问 go-cqhttp 的服务发送消息,有个问题是爬虫经常挂掉,不太稳定。


在 CTFdapiv1challenges.py 的 ChallengeAttempt 类中,有一处是根据 chalenges 插件返回的正确与否,选择是否向数据库写入 solves 的记录,在这里直接加一句访问机器人服务的请求就行了,类似这样,别忘了在上面 import 一下 requests

给CTFd加个机器人配置接口


但是每个人或者每次修改机器人服务地址以及自定义语句的时候都得修改源码重启服务不太优雅,可以在后台留一个配置页面,直接在后台设置相关的参数。这些东西可以在 config 数据表里面存放,用 get_config 函数取就行,config 这个表就是留了一些平台配置相关的信息

给CTFd加个机器人配置接口


机器人服务需要有以下几个参数:

机器人服务url,字段:boturl发送的消息,字段:bottext是否启用机器人,字段:bot


在 CTFdviews.py 里面找个位置,在平台初始化时创建这几个字段,这样以来数据库里面就有了 bot 相关的记录了,如果是已经初始化了,直接在数据库添加这三个字段就行了

给CTFd加个机器人配置接口


然后对后台前端代码进行修改,通过新增一个 bot.html 来新增一个配置页面,首先是 CTFdthemesadmintemplatesconfig.html 中需要增加一个选项

给CTFd加个机器人配置接口


下面也要对应 include 进来

给CTFd加个机器人配置接口


bot.html 放在 configs 文件夹下面,路径为:

CTFdthemesadmintemplatesconfigsbot.html

代码如下:

<div role="tabpanel" class="tab-pane config-section active" id="bots">  <form method="POST" autocomplete="off" class="w-100">    <div class="form-group">      <label for="bot-url">        机器人地址<br>        <small class="form-text text-muted">          地址中带好参数名只留消息内容供平台拼接        </small>        <small class="form-text text-muted">          例如:http://127.0.0.1:5700/send_group_msg?group_id=xxxxxx&message=        </small>      </label>      <input class="form-control" id='bot-url' name='boturl' type='text'>    </div>    <div class="form-group">      <label for="bot-text">        消息内容<br>        <small class="form-text text-muted">          格式:恭喜%s做出题目%s,默认第一个参数为用户名,第二个参数为题目名称        </small>      </label>      <input class="form-control" id='bot-text' name='bottext' type='text'>    </div>    <div class="form-group">      <label for="botof">        是否开启机器人      </label>      <div>        <select class="form-control custom-select" id="botof" name="bot">          <option value=0>            关闭          </option>          <option value=1>            开启          </option>        </select>      </div>    </div>    <button type="submit" class="btn btn-md btn-primary float-right">更新</button>  </form></div>


后台页面就可以对他们进行设置啦

给CTFd加个机器人配置接口


给CTFd加个机器人配置接口

原文始发于微信公众号(陈冠男的游戏人生):给CTFd加个机器人配置接口

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月9日07:39:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   给CTFd加个机器人配置接口http://cn-sec.com/archives/893645.html

发表评论

匿名网友 填写信息