HUSTOJ搭建后为了方便作为Judger调用进行的一些修改操作
这里的操作主要包括:
- 找到初始的MySQL数据库用户名和密码;
 - 将 csrf 设置为固定值;
 - 取消掉同一用户相邻提交时间间隔需要10秒钟的限制。
 
内容如下:
- 系统:ubuntu18.04.2
 - hustoj下载地址:https://github.com/zhblue/hustoj
 
使用如下命令即可将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_NAME、OJ_PASSWORD、OJ_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);
	
// }
                    
                
                
            
        
浙公网安备 33010602011771号