修改 admin 界面,ip 太宽了
monitor 不再使用,配置判题服务器的代码移入 judge_dispatcher 里面
添加前端后台判题服务器管理页面一些校验的功能
去掉判题服务器监控的前端和后端
修复比赛 first ac 显示错误的问题
修复两步验证中的错误
tfa 显示 url
增加 qrcode 依赖
完成两步验证的逻辑
fix error package name and add pip mirrorwq
废弃 huey,多数据库连接的时候存在 connection 无法释放的问题,回到 celery
修复 huey 队列不会释放数据库连接的问题,是用法不对
增加关闭两步验证的 api
增加两步验证基础代码
完善 sso 登录部分
规范配置文件写法;数据库用户名也在环境变量中取
个人博客链接前面也增加图标
修改判题机器的配置文件
删除不再使用的配置文件
Squash from a1fff74 to 12f96c6 by virusdefender
This commit is contained in:
131
template/src/admin/judges/judges.html
Normal file
131
template/src/admin/judges/judges.html
Normal file
@@ -0,0 +1,131 @@
|
||||
<div ms-controller="judges" class="col-md-9">
|
||||
<h1>判题服务器管理</h1>
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<th>编号</th>
|
||||
<th>名字</th>
|
||||
<th>最大实例数量</th>
|
||||
<th>负载</th>
|
||||
<th>创建时间</th>
|
||||
<th>状态</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr ms-repeat="judgesList">
|
||||
<td>{{ el.id }}</td>
|
||||
<td>{{ el.name }}</td>
|
||||
<td>{{ el.max_instance_number }}</td>
|
||||
<td>{{ el.workload }}</td>
|
||||
<td>{{ el.create_time|date("yyyy-MM-dd HH:mm:ss")}}</td>
|
||||
<td ms-text="el.status?'启用':'停用'"></td>
|
||||
<td>
|
||||
<button class="btn-sm btn-info" ms-click="editJudges(el)">编辑</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="form-group">
|
||||
<label>仅显示启用 <input ms-duplex-checked="showEnableOnly" type="checkbox"/></label>
|
||||
</div>
|
||||
<div class="right">
|
||||
<ms:pager $id="judgesPager" config="pager"></ms:pager>
|
||||
</div>
|
||||
|
||||
<div ms-visible="isEditing">
|
||||
<h3>编辑判题服务器</h3>
|
||||
|
||||
<form id="edit-judges-form">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>名字</label>
|
||||
<input name="title" type="text" class="form-control" placeholder="名字" maxlength="30" ms-duplex="name" required data-error="请填写合法的服务器名称">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>口令</label>
|
||||
<input name="title" type="text" class="form-control" ms-duplex="token" placeholder="口令" maxlength="30" required data-error="请填写合法的口令">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label>IP</label>
|
||||
<input name="ip" type="text" class="form-control" ms-duplex="ipAddress" placeholder="IP" required data-error="请填写合法的IP地址">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label>端口</label>
|
||||
<input name="port" type="number" class="form-control" ms-duplex="port" placeholder="端口" required data-error="请填写合法的端口号">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label>最大实例数量</label>
|
||||
<input type="number" class="form-control" placeholder="最大实例数量" ms-duplex="max_instance_number" required data-error="请填写合法的最大实例数量">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>启用 <input ms-duplex-checked="status" type="checkbox"/></label>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<button class="btn btn-success">保存修改</button>
|
||||
|
||||
<a ms-click="cancelEdit()" class="btn btn-danger">取消</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<h3>添加判题服务器</h3>
|
||||
|
||||
<form id="judges-form">
|
||||
<div class="form-group">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>名字</label>
|
||||
<input name="title" type="text" class="form-control" id="name" placeholder="名字" maxlength="30" required data-error="请填写合法的服务器名称">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>口令</label>
|
||||
<input name="title" type="text" class="form-control" id="token" placeholder="口令" maxlength="30" required data-error="请填写合法的口令">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label>IP</label>
|
||||
<input name="ip" type="text" class="form-control" id="ipAddress" placeholder="IP" required data-error="请填写合法的IP地址">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label>端口</label>
|
||||
<input name="port" type="number" class="form-control" id="port" placeholder="端口" required data-error="请填写合法的端口号">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label>最大实例数量</label>
|
||||
<input type="number" class="form-control" placeholder="最大实例数量" id="max_instance_number" required data-error="请填写合法的最大实例数量">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">添加</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script src="/static/js/app/admin/judges/judges.js"></script>
|
||||
@@ -10,6 +10,7 @@
|
||||
<li class="list-group-header">通用设置</li>
|
||||
<li class="list-group-item"><a href="/account/settings/">个人信息</a></li>
|
||||
<li class="list-group-item active"><a href="/account/settings/avatar/">更换头像</a></li>
|
||||
<li class="list-group-item"><a href="/two_factor_auth/">两步验证</a></li>
|
||||
<li class="list-group-item"><a href="/change_password/">修改密码</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<li class="list-group-header">通用设置</li>
|
||||
<li class="list-group-item"><a href="/account/settings/">个人信息</a></li>
|
||||
<li class="list-group-item"><a href="/account/settings/avatar/">更换头像</a></li>
|
||||
<li class="list-group-item"><a href="/two_factor_auth/">两步验证</a></li>
|
||||
<li class="list-group-item active"><a href="/change_password/">修改密码</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -11,22 +11,21 @@
|
||||
<div class="form-group">
|
||||
<label for="username">用户名</label>
|
||||
<input type="text" class="form-control input-lg" id="username" name="username" maxlength="30"
|
||||
data-error="请填写用户名" placeholder="用户名" autofocus required>
|
||||
data-error="请填写用户名" placeholder="用户名" autofocus required autocomplete="off">
|
||||
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">密码</label>
|
||||
<input type="password" class="form-control input-lg" id="password" name="password" maxlength="30"
|
||||
data-error="请填写密码" placeholder="密码" required>
|
||||
data-error="请填写密码" placeholder="密码" required autocomplete="off">
|
||||
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group" id="captcha-area">
|
||||
<label for="captcha">验证码</label> <img src="/captcha/" id="captcha-img"><small>
|
||||
<p></p></small>
|
||||
<input type="text" class="form-control input-lg" id="captcha" name="captcha"
|
||||
placeholder="验证码" maxlength="4" data-error="请填写验证码" required>
|
||||
<div class="form-group" id="tfa-area">
|
||||
<label for="captcha">两步验证</label>
|
||||
<input type="text" class="form-control input-lg" id="tfa-code" name="tfa-code"
|
||||
placeholder="两步验证验证码" maxlength="6" data-error="请填写两步验证验证码" required autocomplete="off">
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<li class="list-group-header">通用设置</li>
|
||||
<li class="list-group-item active"><a href="/account/settings/">个人信息</a></li>
|
||||
<li class="list-group-item"><a href="/account/settings/avatar/">更换头像</a></li>
|
||||
<li class="list-group-item"><a href="/two_factor_auth/">两步验证</a></li>
|
||||
<li class="list-group-item"><a href="/change_password/">修改密码</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
41
template/src/oj/account/two_factor_auth.html
Normal file
41
template/src/oj/account/two_factor_auth.html
Normal file
@@ -0,0 +1,41 @@
|
||||
{% extends "oj_base.html" %}
|
||||
{% block title %}
|
||||
两步验证
|
||||
{% endblock %}
|
||||
{% block body %}
|
||||
<div class="container main">
|
||||
|
||||
<div class="col-lg-2">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-header">通用设置</li>
|
||||
<li class="list-group-item"><a href="/account/settings/">个人信息</a></li>
|
||||
<li class="list-group-item"><a href="/account/settings/avatar/">更换头像</a></li>
|
||||
<li class="list-group-item active"><a href="/two_factor_auth/">两步验证</a></li>
|
||||
<li class="list-group-item"><a href="/change_password/">修改密码</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8">
|
||||
{% if not request.user.two_factor_auth %}
|
||||
<h3>扫描二维码开启两步验证</h3>
|
||||
<img src="/api/two_factor_auth/" id="tfa-qrcode">
|
||||
|
||||
<div class="form-inline">
|
||||
<div class="form-group">
|
||||
<label for="tfa_code">验证码</label>
|
||||
<input type="text" maxlength="6" class="form-control" id="tfa_code"
|
||||
placeholder="输入 app 上显示的验证码">
|
||||
</div>
|
||||
<button type="button" class="btn btn-primary" id="tfa_submit">确定</button>
|
||||
</div>
|
||||
|
||||
{% else %}
|
||||
<div class="alert alert-success" role="alert">两步验证已经开启</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block js_block %}
|
||||
<script src="/static/js/app/oj/account/twoFactorAuth.js"></script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user