For Frontend related modifications, please refer to IdONTKnowCHEK/OnlineJudgeFE-NCHU
This platform is modified based on QingdaoU/OnlineJudge, with several new features added to the Backend for course requirements:
- Scripted the SSH configuration steps for containers in the DockerFile (to facilitate internal file modifications)
- Each assignment is ranked by execution time or memory usage, and grades are assigned based on ranking
- Assignments use Java with all import functions disabled by default, but can be selectively enabled as needed
- Modified the original Special Judge function to use JSON format for setting assignment deadlines, allowed imports, ranking methods, late submission allowances, and late submission deadlines
- Added
Expired
status to Judge results to mark late submissions
-
Clone this repo
git clone https://github.com/Rui0828/algo_oj_backend-NCHU-CSE.git
-
Configure environment parameters file
.env
export JUDGE_SERVER_TOKEN=TOKEN export BE_USERNAME=Backend-SSH-Username export BE_PASSWORD=Backend-SSH-Password
-
Start Docker Container
docker-compose -p {container-name} up -d
- The system automatically selects the best-performing version (time/memory) from each user's submissions for ranking
- If submitted code contains non-allowed import statements, the system will return
Compile Error
- Uses JSON format for configuration
"expire_time": "2025-3-28T14:00:00"
sets assignment deadline (default: no deadline)"allowed_imports": ["java.util.Scanner"]
sets allowed imports (default: all disabled)java.util.*
means all packages in java.util are allowed*
means all packages are allowed
"rank_type": "time"
sets ranking type, options aretime
ormemory
(default: time)"late_allowed": ["ta", "test"]
usernames allowed for late submissions"late_until":"2025-3-12T14:00:00"
extended deadline for late submissions (default: no extended deadline)
- Backend (Django): https://github.com/QingdaoU/OnlineJudge
- Frontend (Vue): https://github.com/QingdaoU/OnlineJudgeFE
- Judger Sandbox (Seccomp): https://github.com/QingdaoU/Judger
- JudgeServer (A wrapper for Judger): https://github.com/QingdaoU/JudgeServer