Skip to content
This repository has been archived by the owner on Sep 21, 2019. It is now read-only.

frank-archive/JudgeServer

Repository files navigation

CTFd::JudgeServer

本项目是为MSSCTF修改的CTFd的附属项目 用于评测ACM题目
此分支(local_file)用于与CTFd一同启动。
由于master分支需要从CTFd将评测数据下载到JudgeServer,有点慢,所以干脆把CTFd的upload目录也映射到JudgeServer的container里头来,直接读取就行了。
注意docker-compose.yml的不同

说明

支持C++, Java, Python2/3 四种语言的评测
评测参数在worker.json中配置。
以C++为例,配置项分别为:

"cpp": { //语言名,即请求/judge时的"lang"参数
    "source_name": "Main.cpp", // 将代码写入此文件。主要用于规定后缀名
    "output_name": "Main", // 编译输出文件名(如果是解释型语言则可选)
    "compile": { // 编译选项
        "command": "/usr/bin/g++ {source_path} -o {output_path} -DONLINE_JUDGE -fno-asm -O2",
        /* 编译命令,目前能渲染进的变量有:
        source_path: 源码文件的绝对路径
        output_path: 输出文件的绝对路径
        output_dir: 输出文件所在目录的绝对路径
        */
        "max_cpu_time": 3000, // 编译时长/空间限制
        "max_real_time": 5000,
        "max_memory": 134217728
    },
    "execute": { // 执行选项
        "command": "{output_path}",
        /* 执行命令,目前能渲染进的变量有:
        source_path: 源码所在的绝对路径(解释型语言需要)
        output_path: 编译出的文件的绝对路径
        output_dir: 文件所在目录绝对路径
        max_memory: 空间限制
        */
        "weight": {
            // 此处可以设置六项限制的权重,如Java可以配置为:
            /*
            "max_cpu_time": 2,
            "max_real_time": 2,
            "max_memory": -1,
            "max_stack": -1
            */
            // -1表示没有限制
            // 注: Java的空间限制由java虚拟机的启动参数进行控制
        }
    }
}

部署

docker run -p {port}:5000 frankli0324/judge_server \
    --env JUDGE_BASEDIR=/opt/judger \
    --env JUDGE_TOKEN=your_token \
    --env DATABASE_URL=mysql+pymysql://username:password@$DB_URL/judge \
    -v {CTFd文件上传目录,默认是.data/CTFd/upload}:/opt/data

与魔改CTFd一同通过docker-compose启动:

services:
  ctfd:
    environment:
      - JUDGE_ADDR=judger
      - JUDGE_PORT=5000
    ...
  judger:
    image: frankli0324/judge_server
    restart: always
    environment:
      - JUDGE_BASEDIR=/opt/judger
      - JUDGE_TOKEN=your_token
      - DATABASE_URL=mysql+pymysql://username:password@db/judge
  volumes:
    - .data/CTFd/uploads:/opt/data # IMPORTANT!!
  db: 
    image: mariadb
    ...

dev

docker-compose up

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published