Skip to content

xcpcio/domprinter

Repository files navigation

DOMPrinter

Test codecov Go Report Card GitHub go.mod Go version Github release platform License

Usage

Server

首先需要在 Database 里面创建一张表:建表语句 SQL,DB 你可以复用 DOMjudge 的那个 Database,也可以自己再建一个新的 Database

然后通过 Docker 启动 DOMPrinter 服务,可以参考以下脚本启动容器:

IMAGE="dup4/domprinter:0.0.26"

docker run \
    -d \
    --restart=always \
    --name="${your container name}" \
    -e TZ=Asia/Shanghai \
    -e MYSQL_HOSTNAME="${your db host name}" \
    -e MYSQL_PORT="${your db port}" \
    -e MYSQL_USERNAME="${your db username}" \
    -e MYSQL_PASSWORD="${your db password}" \
    -e MYSQL_SCHEMA="${your db database name}" \
    -e AUTH_USERNAME="${auth username, used for printer client}" \
    -e AUTH_PASSWORD="${auth password}" \
    -p 80:8888 \ # You can change the mapped ports as needed
    "${IMAGE}"

然后 DOMPrinter 的服务端就搞定了

Client

然后需要在能够控制打印机的机器上,安装并启动 printer_client

Handle Script

然后需要将 DOMjudge 和 DOMPrinter 串起来

alt text

你需要在上图所示的这个位置,填入一行命令

/on_print.sh [file] [original] [language] [username] [teamname] [teamid] [location] 2>&1

可以参考这一行命令,on_print.sh 的内容在这里,你需要把这个脚本复制到指定位置,比如按上面的命令,那就需要复制到 /on_print.sh 这个位置

友情提醒:不要在这一行命令中填入任何敏感信息,因为这个配置可以被一个公共的 API (/domjudge/api/v4/config)拿到,如果有选手(比如 2024 浙江省赛位于 2-B26 的某位选手)对 DOMjudge 特别熟悉,那么这场比赛可能就危险了

错误示范:

AUTH_USERNAME=domprinter AUTH_PASSWORD=domprinter DOMPRINTER_HOSTNAME=domprinter /on_print.sh [file] [original] [language] [username] [teamname] [teamid] [location] 2>&1

不要将 DOMPrinter Server 相关信息通过这种方式传入脚本,不然选手能够通过 DOMjudge API 拿到这些信息,并且可能能够直接连入 DOMPrinter Server 拿到别的队伍的打印代码

Sponsors

Logos from Sponsors

License

MIT License © 2020 - PRESENT XCPCIO