HUSTOJ搭建后为了方便作为Judger调用进行的一些修改操作

这里的操作主要包括:

  1. 找到初始的MySQL数据库用户名和密码;
  2. 将 csrf 设置为固定值;
  3. 取消掉同一用户相邻提交时间间隔需要10秒钟的限制。

内容如下:


使用如下命令即可将hustoj下载安装到本地:

wget https://github.com/zhblue/hustoj/raw/master/trunk/install/install-ubuntu18.04.sh
sudo bash install-ubuntu18.04.sh

这需要一段时间。
安装好之后首先以用户名 admin 密码 admin123 注册一个用户。
然后查看 /home/judge/etc/judge.conf 文件可以发现里面有一些数据:

...
OJ_USER_NAME=debian-sys-maint
OJ_PASSWORD=zRqrwJIMreGPLD4N
OJ_DB_NAME=jol
...

其中 OJ_USER_NAMEOJ_PASSWORDOJ_DB_NAME分别对应你MySQL数据库的用户名、密码和数据库。

对于每一个问题,比如编号为 1000 的问题,他的数据是存放在 /home/judge/data/1000/ 目录下的。

修改csrf.php

原始的 `` 文件是这样的:

<?php
  require_once("include/db_info.inc.php");
  require_once("include/my_func.inc.php");
  $token = getToken();
  if(!isset($_SESSION[$OJ_NAME.'_'.'csrf_keys'])){
	$_SESSION[$OJ_NAME.'_'.'csrf_keys']=array();
  }
  array_push($_SESSION[$OJ_NAME.'_'.'csrf_keys'],$token);
  while(count($_SESSION[$OJ_NAME.'_'.'csrf_keys'])>10) 
	array_shift($_SESSION[$OJ_NAME.'_'.'csrf_keys']);
  
?><input type="hidden" name="csrf" value="<?php echo $token?>" class="<?php echo in_array($token,$_SESSION[$OJ_NAME.'_'.'csrf_keys'])?>">

直接修改成:

<?php
?><input type="hidden" name="csrf" value="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" class="<?php echo in_array($token,$_SESSION[$OJ_NAME.'_'.'csrf_keys'])?>">

然后我们每次输csrf值都为 32个a 就可以了: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

默认开机不启动nginx,所以要在命令行输入如下命令启动nginx服务器:

sudo nginx

默认如果提交台频繁的话,会报错:“You should not submit more than twice in 10 seconds”
所以我们要去掉这个限制,解决办法是修改 src/web/submit.php 文件,将其中的代码段:

if (count($res)==1){
	
		$view_errors="You should not submit more than twice in 10 seconds.....<br>";
		require("template/".$OJ_TEMPLATE."/error.php");
		exit(0);
	
}

注释掉,即变成:

// if (count($res)==1){
	
// 		$view_errors="You should not submit more than twice in 10 seconds.....<br>";
// 		require("template/".$OJ_TEMPLATE."/error.php");
// 		exit(0);
	
// }
posted @ 2019-06-11 22:26  zifeiy  阅读(784)  评论(0编辑  收藏  举报