public DoWork ( |
||
idata | ||
Résultat |
static void TestEngineDirectly(string Program , Languages Lang) { Engine engine = new Engine(); InputData idata = new InputData() { Program = Program, Lang = Lang }; var odata = engine.DoWork(idata); ShowData(odata); }
static OutputData TestEngineDirectly(string Program, string Input, Languages Lang, string Args) { Engine engine = new Engine(); InputData idata = new InputData() { Program = Program, Input = Input, Lang = Lang, Compiler_args = Args }; return engine.DoWork(idata); }
public Result DoWork(string Program, string Input, Languages Language, string user, string pass, string compiler_args = "", bool bytes = false, bool programCompressed = false, bool inputCompressed = false) { if(user != GlobalUtils.TopSecret.ServiceUser || pass != GlobalUtils.TopSecret.ServicePass) { return new Result() { Errors = null, Warnings = null, Output = null, Stats = null, Exit_Status = null, Exit_Code = null, System_Error = "Not authorized." }; } if(programCompressed) Program = Decompress(Program); if(inputCompressed) Input = Decompress(Input); if(!string.IsNullOrEmpty(Program) && Program.ToLower().Contains("setsid")) { return new Result() { Errors = "setsid system call is not allowed." }; } Engine engine = new Engine(); InputData idata = new InputData() { Program = Program, Input = Input, Lang = Language, Compiler_args = compiler_args }; var odata = engine.DoWork(idata); Regex r = new Regex(Engine.RootPath + @"\d+/source"); if(Language == Languages.Javascript && !string.IsNullOrEmpty(odata.Output)) odata.Output = r.Replace(odata.Output, "source_file"); var res = new Result() { Errors = !string.IsNullOrEmpty(odata.Errors) ? r.Replace(odata.Errors, "source_file") : odata.Errors, Warnings = !string.IsNullOrEmpty(odata.Warnings) ? r.Replace(odata.Warnings, "source_file") : odata.Warnings, Output = odata.Output, Stats = odata.Stats, Exit_Status = odata.Exit_Status, Exit_Code = odata.ExitCode, System_Error = odata.System_Error, Files = odata.Files }; if(!string.IsNullOrEmpty(odata.Output) && odata.Output.Length > 1000) { res.Output = Compress(odata.Output); res.IsOutputCompressed = true; } if(bytes) { if(!string.IsNullOrEmpty(res.Errors)) { res.Errors_Bytes = System.Text.Encoding.Unicode.GetBytes(res.Errors); res.Errors = null; } if(!string.IsNullOrEmpty(res.Warnings)) { res.Warnings_Bytes = System.Text.Encoding.Unicode.GetBytes(res.Warnings); res.Warnings = null; } if(!string.IsNullOrEmpty(res.Output)) { res.Output_Bytes = System.Text.Encoding.Unicode.GetBytes(res.Output); res.Output = null; } } return res; }