use lazy_static::lazy_static;
use crate::syscall::RestrictedSyscall;
use crate::preset::preset::{
CompileOption, ExecuteCommand, ExecuteOption, LanguagePreset, UserType,
};
lazy_static! {
pub(crate) static ref JAVA_PRESET: LanguagePreset = LanguagePreset {
compile: CompileOption::new("java")
.command(
ExecuteCommand::new("javac", vec!["-encoding", "utf8", "-d", ".", "${source}",])
.default_time_limit(10 * 1000)
.default_memory_limit(1024 * 1024)
.default_user(UserType::Current)
.default_process(20)
.default_ptrace(vec![])
.default_chroot(true)
.append_read_mount("/proc", "/proc")
.append_read_mount("/dev", "/dev")
)
.command(
ExecuteCommand::new("bash", vec!["-c", "jar -cvf ${executable} *.class"])
.default_time_limit(10 * 1000)
.default_memory_limit(1024 * 1024)
.default_user(UserType::Current)
.default_process(20)
.default_ptrace(vec![])
.default_chroot(true)
.append_read_mount("/proc", "/proc")
.append_read_mount("/dev", "/dev")
),
execute: ExecuteOption::new().command(
ExecuteCommand::new("java", vec!["-Xmx512M", "-Xss64M", "-DONLINE_JUDGE=true", "-cp", "${executable}", "Main"])
.default_ptrace(vec![RestrictedSyscall::Net])
.default_process(20)
.append_read_mount("/proc", "/proc")
),
};
}