Просмотр файла file.php

Размер файла: 16.1Kb
  1. <?php
  2. include 'system/func.php';
  3. include 'system/ftp_connect.php';
  4. switch(@$act){
  5. default:
  6. $d=dir_url('/'.boff(prov($_GET['d'])));
  7. $title='Меню файла "'.basename($d).'"';
  8. include 'system/head.php';
  9. title($title);
  10. if(empty($d)){
  11. header('Location: /ftp.php');
  12. }else{
  13. ftp_pasv($serv,true);
  14. $res = ftp_size($serv,$d);
  15. if ($res == '-1') {
  16. header('Location: /ftp.php');
  17. }else{
  18. $path=pathinfo(ftprename($d));
  19. $rf=mb_strtolower($path['extension'],'UTF-8');
  20. echo '<div class="menu"><b>&bull;</b> <a href="/file.php?act=loadfile&amp;d='.bon($d).'">Скачать файл</a><br/>';
  21. if ($rf == 'zip'){
  22. echo '<b>&bull;</b> <a href="/unzip.php?d='.bon($d).'">Распаковать архив</a><br/><b>&bull;</b> <a href="/zip.php?arh='.bon($d).'">Просмотр архива</a><br/>';
  23. }
  24. if ($rf != 'jpg' && $rf != 'jpeg' && $rf != 'jpe' && $rf != 'png' && $rf != 'gif' && $rf != 'bmp' && $rf != 'dll' && $rf != 'wav' && $rf != 'mid' && $rf != 'midi' && $rf != 'mp3' && $rf != 'mmf' && $rf != 'psd' && $rf != 'doc' && $rf != 'pdf' && $rf != 'zip' && $rf != 'rar' && $rf != 'jar' && $rf != '3gp' && $rf != 'avi' && $rf != 'mp4' && $rf != 'tgz' && $rf != 'gz' && $rf != 'bz' && $rf != 'gz2' && $rf != 'bz2' && $rf != 'tbz' && $rf != 'tbz2' && $rf != 'tgz2' && $rf != 'tar' && $rf != '7z' && $rf != 'ico') {
  25. echo'<b>&bull;</b> <a href="/notepad.php?d='.bon($d).'">Обычный редактор</a><br/><b>&bull;</b> <a href="/edit.php?d='.bon($d).'">Редактировать в блокноте</a><br/><b>&bull;</b> <a href="/file.php?act=inzip&amp;d='.bon($d).'">Запаковать файл</a><br/>';
  26. }
  27. echo '<b>&bull;</b> <a href="/file.php?act=iconv&amp;d='.bon($d).'">Кодировка файла</a><br/><b>&bull;</b> <a href="/file.php?act=copy&amp;d='.bon($d).'">Копировать файл</a><br/><b>&bull;</b> <a href="/file.php?act=rename&amp;d='.bon($d).'">Переименовать</a><br/>';
  28. echo '<b>&bull;</b> <a href="/file.php?act=perenos&amp;d='.bon($d).'">Переместить</a><br/><b>&bull;</b> <a href="/file.php?act=del&amp;d='.bon($d).'">Удалить файл</a><br/><b>&bull;</b> <a href="/file.php?act=clear&amp;d='.bon($d).'">Очистить файл</a><br/>
  29. <b>&bull;</b> <a href="/file.php?act=chmod&amp;d='.bon($d).'">Права доступа</a><br/>
  30. <b>&bull;</b> <a href="/file.php?act=view&amp;d='.bon($d).'">Просмотр кода</a><br/><b>&bull;</b> <a href="/file.php?act=info&amp;d='.bon($d).'">Свойства</a></div>';
  31. echo '<div class="menu">&laquo; <a href="/ftp.php?d='.bon(verh2($d)).'">Назад</a></div>';
  32. }
  33. }
  34. ftp_close($serv);
  35. break;
  36. case 'loadfile':
  37. $d=boff(prov($_GET['d']));
  38. if (empty($d)){
  39. header('Location: /ftp.php');
  40. }else{
  41. $res=ftp_size($serv, $d);
  42. if ($res == '-1'){
  43. header('Location: /ftp.php');
  44. }else{
  45. if (ftp_get($serv, 'tmp/'.$savedir.'/'.basename($d), $d, FTP_BINARY)){
  46. header('Content-Type: mime/type');
  47. header('Content-Length: '.$res);
  48. header('Content-Disposition: attachment; filename='.basename($d));
  49. echo file_get_contents('tmp/'.$savedir.'/'.basename($d));
  50. unlink('tmp/'.$savedir.'/'.basename($d));
  51. exit();
  52. }else{
  53. header('Location: /file.php?d='.bon($d));
  54. }
  55. }
  56. }
  57. ftp_close($serv);
  58. break;
  59. case 'iconv':
  60. $d=dir_url('/'.boff(prov($_GET['d'])));
  61. $title='Кодировка файла "'.basename($d).'"';
  62. include 'system/head.php';
  63. title($title);
  64. if(empty($d)){
  65. header('Location: /ftp.php');
  66. }else{
  67. ftp_pasv($serv,true);
  68. $res = ftp_size($serv,$d);
  69. if ($res == '-1'){
  70. header('Location: /ftp.php');
  71. }else{
  72. if (isset($_POST['ok'])){
  73. $v=prov($_POST['v']);
  74. $iz=prov($_POST['iz']);
  75. $type=intval($_POST['type']);
  76. if (empty($v) || empty($iz)){
  77. $err='Не выбрана кодировка';
  78. }
  79. elseif (empty($type) || $type != '1' && $type != '2'){
  80. $err='Не выбран тип перекодировки';
  81. }
  82. elseif ($iz == $v){
  83. $err='Не возможно перекодировать из <b>'.$iz.'</b> в <b>'.$v.'</b>';
  84. }
  85. if (!empty($err)){
  86. err($err);
  87. }else{
  88. if (ftp_get($serv, 'tmp/'.$savedir.'/recode.txt', $d, FTP_BINARY)) {
  89. $file=file_get_contents('tmp/'.$savedir.'/recode.txt');
  90. $file=iconv($iz,$v,$file);
  91. file_put_contents('tmp/'.$savedir.'/recode.txt', $file);
  92. if (ftp_put($serv, $d.''.($type == '2'?'.ftp':''), 'tmp/'.$savedir.'/recode.txt', FTP_BINARY)) {
  93. echo '<div class="menu">Кодировка файла успешно изменена</div>';
  94. unlink('tmp/'.$savedir.'/recode.txt');
  95. } else {
  96. err('Не удалось перекодировать файл');
  97. }
  98. } else {
  99. err('Не удалось зугрузить файл на сервер');
  100. }
  101. }
  102. }
  103. echo '<div class="menu"><form method="post">Кодировка оригинала:<br/>
  104. <select name="iz"><option value="utf-8" selected="selected">utf-8</option><option value="windows-1251">windows-1251</option><option value="koi8-r">koi8-r</option><option value="cp866">cp866</option><option value="cp1251">cp1251</option><option value="iso-8859-1">iso-8859-1</option></select>
  105. <br/>Новая кодировка:<br/><select name="v"><option value="utf-8" selected="selected">utf-8</option><option value="windows-1251">windows-1251</option><option value="koi8-r">koi8-r</option><option value="cp866">cp866</option><option value="cp1251">cp1251</option><option value="iso-8859-1">iso-8859-1</option></select>
  106. <br/>Тип перекодировки:<br/><input type="radio" name="type" value="1" checked="checked"> Перезаписать файл<br/><input type="radio" name="type" value="2"> Сохранить в новый файл<b>.ftp</b><br/><input class="btn btn-default" type="submit" name="ok" value="Перекодировать"></form></div>';
  107. }
  108. }
  109. ftp_close($serv);
  110. break;
  111. case 'view':
  112. $d=dir_url('/'.boff(prov($_GET['d'])));
  113. $title='Код файла "'.basename($d).'"';
  114. include 'system/head.php';
  115. title($title);
  116. if(empty($d)){
  117. header('Location: /ftp.php');
  118. }else{
  119. ftp_pasv($serv,true);
  120. $res = ftp_size($serv,$d);
  121. if ($res == '-1'){
  122. header('Location: /ftp.php');
  123. }else{
  124. if (ftp_get($serv, 'tmp/'.$savedir.'/'.basename($d), $d, FTP_BINARY)) {
  125. $file=file_get_contents('tmp/'.$savedir.'/'.basename($d));
  126. if (empty($file)){
  127. err('Файл пуст');
  128. }else{
  129. $code=highlight_string($file, true);
  130. $code=preg_replace('#<code>(.*)</code>#sU','\1',$code);
  131. echo '<div class="menu">'.$code.'</div>';
  132. }
  133. unlink('tmp/'.$savedir.'/'.basename($d));
  134. } else {
  135. err('Не удалось зугрузить файл на сервер');
  136. }
  137. }
  138. }
  139. ftp_close($serv);
  140. break;
  141. case 'chmod':
  142. $d=dir_url('/'.boff(prov($_GET['d'])));
  143. $title='Права доступа файла "'.basename($d).'"';
  144. include 'system/head.php';
  145. title($title);
  146. if(empty($d)){
  147. header('Location: /ftp.php');
  148. }else{
  149. ftp_pasv($serv,true);
  150. $res = ftp_size($serv,$d);
  151. if ($res == '-1'){
  152. header('Location: /ftp.php');
  153. }else{
  154. if (isset($_POST['ok'])){
  155. $chmod=intval($_POST['chmod']);
  156. if (empty($chmod)){
  157. $err='Не введены права доступа';
  158. }
  159. elseif (!preg_match('#^[0-9]{3}+$#sU',$chmod) || !is_numeric($chmod) || strlen($chmod) != 3){
  160. $err='Права доступа введены не верно';
  161. }
  162. if (!empty($err)){
  163. err($err);
  164. }else{
  165. if (ftp_site($serv, 'CHMOD 0'.$chmod.' '.$d)){
  166. echo '<div class="menu">Права доступа успешно изменены</div>';
  167. } else {
  168. err('Не удалось изменить права доступа');
  169. }
  170. }
  171. }
  172. echo '<div class="menu"><form method="post">Права доступа (chmod):<br/><input type="text" name="chmod" value="'.chminf($serv, $d).'"><br/><input class="btn btn-default" type="submit" name="ok" value="Изменить"></form></div>';
  173. }
  174. }
  175. ftp_close($serv);
  176. break;
  177. case 'del':
  178. $d=dir_url('/'.boff(prov($_GET['d'])));
  179. $title='Удаление файла "'.basename($d).'"';
  180. include 'system/head.php';
  181. title($title);
  182. if(empty($d)){
  183. header('Location: /ftp.php');
  184. }else{
  185. ftp_pasv($serv,true);
  186. $res = ftp_size($serv,$d);
  187. if ($res == '-1'){
  188. header('Location: /ftp.php');
  189. }else{
  190. if (isset($_GET['ok'])){
  191. if (ftp_delete($serv,$d)){
  192. header('Location: /ftp.php?d='.bon(verh2($d)));
  193. } else {
  194. err('Не удалось удалить файл');
  195. }
  196. }else{
  197. echo '<div class="menu">Вы действительно хотите удалить данный файл?<br/><center><a href="/file.php?act=del&amp;ok&amp;d='.bon($d).'">Да</a> | <a href="/file.php?d='.bon($d).'">Нет</a></center></div>';
  198. }
  199. }
  200. }
  201. ftp_close($serv);
  202. break;
  203. case 'clear':
  204. $d=dir_url('/'.boff(prov($_GET['d'])));
  205. $title='Очистка файла "'.basename($d).'"';
  206. include 'system/head.php';
  207. title($title);
  208. if(empty($d)){
  209. header('Location: /ftp.php');
  210. }else{
  211. ftp_pasv($serv,true);
  212. $res = ftp_size($serv,$d);
  213. if ($res == '-1'){
  214. header('Location: /ftp.php');
  215. }else{
  216. if (isset($_GET['ok'])){
  217. $fi=ftprename($d);
  218. file_put_contents('tmp/'.$savedir.'/'.$fi,'',0664);
  219. if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
  220. echo '<div class="menu">Файл успешно очищен</div>';
  221. unlink('tmp/'.$savedir.'/'.$fi);
  222. } else {
  223. err('Не удалось очистить файл');
  224. }
  225. }else{
  226. echo '<div class="menu">Вы действительно хотите очистить данный файл?<br/><center><a href="/file.php?act=clear&amp;ok&amp;d='.bon($d).'">Да</a> | <a href="/file.php?d='.bon($d).'">Нет</a></center></div>';
  227. }
  228. }
  229. }
  230. ftp_close($serv);
  231. break;
  232. case 'rename':
  233. $d=dir_url('/'.boff(prov($_GET['d'])));
  234. $title='Переименование файла "'.basename($d).'"';
  235. include 'system/head.php';
  236. title($title);
  237. if(empty($d)){
  238. header('Location: /ftp.php');
  239. }else{
  240. ftp_pasv($serv,true);
  241. $res = ftp_size($serv,$d);
  242. if ($res == '-1'){
  243. header('Location: /ftp.php');
  244. }else{
  245. if (isset($_POST['ok'])){
  246. $name=prov($_POST['name']);
  247. if (empty($name)){
  248. $err='Не введено название файла';
  249. }
  250. elseif (!preg_match('#^[A-z0-9_\-\.]+$#sU',$name)){
  251. $err='Обнаружены запрещённые символы. Разрешено: A-z0-9_-.';
  252. }
  253. if (!empty($err)){
  254. err($err);
  255. }else{
  256. $newdir=dir_url('/'.ftprename2($d).'/'.$name);
  257. if (ftp_rename($serv,$d,$newdir)) {
  258. header('Location: /ftp.php?d='.bon(verh2($d)));
  259. } else {
  260. err('Не удалось переименовать файл');
  261. }
  262. }
  263. }
  264. echo '<div class="menu"><form method="post">Название файла (A-z0-9_-.):<br/><input type="text" name="name" value="'.ftprename($d).'"><br/><input class="btn btn-default" type="submit" name="ok" value="Переименовать"></form></div>';
  265. }
  266. }
  267. ftp_close($serv);
  268. break;
  269. case 'perenos':
  270. $d=dir_url('/'.boff(prov($_GET['d'])));
  271. $title='Перемещение файла "'.basename($d).'"';
  272. include 'system/head.php';
  273. title($title);
  274. if (empty($d)){
  275. header('Location: /ftp.php');
  276. }else{
  277. ftp_pasv($serv,true);
  278. $res = ftp_size($serv,$d);
  279. if ($res == '-1'){
  280. header('Location: /ftp.php');
  281. }else{
  282. if (isset($_POST['ok'])){
  283. $put=prov($_POST['put']);
  284. if (!empty($put)){
  285. $put=dir_url('/'.$put.'/');
  286. $verh=dir_url('/'.verh2($d).'/');
  287. }
  288. if (empty($put)){
  289. $err='Не введён путь перемещения файла';
  290. }
  291. elseif (!preg_match('#^[A-z0-9_\-\/\.]+$#sU',$put)){
  292. $err='Обнаружены запрещённые символы. Разрешено: A-z0-9_-/.';
  293. }
  294. elseif ($put == $verh){
  295. $err='Данный файл и так находится в этой директории';
  296. }
  297. if (!empty($err)){
  298. err($err);
  299. }else{
  300. $newdir=dir_url('/'.$put.'/'.basename($d));
  301. if (ftp_rename($serv,$d,$newdir)) {
  302. header('Location: /ftp.php?d='.bon($put));
  303. } else {
  304. err('Не удалось переместить файл');
  305. }
  306. }
  307. }
  308. $value=dir_url('/'.verh2(verh2($d)).'/');
  309. echo '<div class="menu"><form method="post">Путь перемещения (A-z0-9_-/.):<br/><input type="text" name="put" value="'.$value.'"><br/><input class="btn btn-default" type="submit" name="ok" value="Переместить"></form></div>';
  310. }
  311. }
  312. ftp_close($serv);
  313. break;
  314. case 'copy':
  315. $d=dir_url('/'.boff(prov($_GET['d'])));
  316. $title='Копирование файла "'.basename($d).'"';
  317. include 'system/head.php';
  318. title($title);
  319. if(empty($d)){
  320. header('Location: /ftp.php');
  321. }else{
  322. ftp_pasv($serv,true);
  323. $res = ftp_size($serv,$d);
  324. if ($res == '-1'){
  325. header('Location: /ftp.php');
  326. }else{
  327. if (isset($_POST['ok'])){
  328. $put=prov($_POST['put']);
  329. if (!empty($put)){
  330. $put=dir_url('/'.$put.'/');
  331. $verh=dir_url('/'.verh2($d).'/');
  332. }
  333. if (empty($put)){
  334. $err='Не введён путь копирования';
  335. }
  336. elseif (!preg_match('#^[A-z0-9_\-\/\.]+$#sU',$put)){
  337. $err='Обнаружены запрещённые символы. Разрешено: A-z0-9_-/.';
  338. }
  339. elseif ($put == $verh){
  340. $err='Данный файл уже есть в этой директории';
  341. }
  342. if (!empty($err)){
  343. err($err);
  344. }else{
  345. $newdir=dir_url('/'.$put.'/'.basename($d));
  346. if (ftp_get($serv, 'tmp/'.$savedir.'/'.basename($d), $d, FTP_BINARY)) {
  347. if (ftp_put($serv, $newdir, 'tmp/'.$savedir.'/'.basename($d), FTP_BINARY)) {
  348. unlink('tmp/'.$savedir.'/'.basename($d));
  349. header('Location: /ftp.php?d='.bon($put));
  350. } else {
  351. err('Не удалось скопировать файл');
  352. }
  353. } else {
  354. err('Не удалось зугрузить файл на сервер');
  355. }
  356. }
  357. }
  358. $value=dir_url('/'.verh2(verh2($d)).'/');
  359. echo '<div class="menu"><form method="post">Путь копирования (A-z0-9_-/.):<br/><input type="text" name="put" value="'.$value.'"><br/><input class="btn btn-default" type="submit" name="ok" value="Копировать"></form></div>';
  360. }
  361. }
  362. ftp_close($serv);
  363. break;
  364. case 'inzip':
  365. $d=dir_url('/'.boff(prov($_GET['d'])));
  366. $title='Архивирование файла "'.basename($d).'"';
  367. include 'system/head.php';
  368. title($title);
  369. if(empty($d)){
  370. header('Location: /ftp.php');
  371. }else{
  372. ftp_pasv($serv,true);
  373. $res = ftp_size($serv,$d);
  374. if ($res == '-1'){
  375. header('Location: /ftp.php');
  376. }else{
  377. if (isset($_POST['ok'])){
  378. $name=prov($_POST['name']);
  379. if (empty($name)){
  380. $err='Не введено название архива';
  381. }
  382. elseif (!preg_match('#^[A-z0-9_\-\.]+$#sU',$name)){
  383. $err='Обнаружены запрещенные символы. Разрешено: A-z0-9_-.';
  384. }
  385. if (!empty($err)){
  386. err($err);
  387. }else{
  388. mkdir('tmp/'.$savedir.'/archive',0777);
  389. if (ftp_get($serv, 'tmp/'.$savedir.'/archive/'.basename($d), $d, FTP_BINARY)){
  390. include 'system/pclzip.php';
  391. $zip=new PclZip('tmp/'.$savedir.'/'.$name.'.zip');
  392. if ($zip->create('tmp/'.$savedir.'/archive/'.basename($d), PCLZIP_OPT_REMOVE_ALL_PATH) != false){
  393. ftp_put($serv, dir_url('/'.verh2($d).'/'.$name.'.zip'), 'tmp/'.$savedir.'/'.$name.'.zip',FTP_BINARY);
  394. unlink('tmp/'.$savedir.'/'.$name.'.zip');
  395. deldir('tmp/'.$savedir.'/archive');
  396. unlink('tmp/'.$savedir.'/'.basename($d));
  397. header('Location: /ftp.php?d='.bon(verh2($d)));
  398. }else{
  399. err('Ошибка создания архива');
  400. }
  401. }else{
  402. err('Ошибка загрузки файла на сервер');
  403. }
  404. }
  405. }
  406. $value=pathinfo($d);
  407. if ($value['basename'] != '.htaccess'){
  408. $value=str_replace('.'.$value['extension'],'',$value['basename']);
  409. }else{
  410. $value='htaccess';
  411. }
  412. echo '<div class="menu"><form method="post">Название архива (A-z0-9_-.):<br/><input type="text" name="name" value="'.$value.'">.zip<br/><input class="btn btn-default" type="submit" name="ok" value="Архивировать"></form></div>';
  413. }
  414. }
  415. ftp_close($serv);
  416. break;
  417. case 'info':
  418. $d=dir_url('/'.boff(prov($_GET['d'])));
  419. $title='Информация о файле "'.basename($d).'"';
  420. include 'system/head.php';
  421. title($title);
  422. if (empty($d)){
  423. header('Location: /ftp.php');
  424. }else{
  425. $res=ftp_size($serv, $d);
  426. if ($res == '-1'){
  427. header('Location: /ftp.php');
  428. }else{
  429. echo '<div class="menu">Название: '.basename($d).'<br/>Размер: '.sizer($res).'<br/>Права доступа: '.chminf($serv, $d).''.(dirinf($serv, $d, 'user') !=false?'<br/>Владелец: '.dirinf($serv, $d, 'user'):'').''.(dirinf($serv, $d, 'group') != false?'<br/>Группа: '.dirinf($serv, $d, 'group'):'').''.(dirinf($serv, $d, 'date') != false?'<br/>Дата создания: '.dirinf($serv, $d, 'date'):'').'</div>';
  430. }
  431. }
  432. ftp_close($serv);
  433. break;
  434. }
  435. if ($act){
  436. echo '<div class="menu">&laquo; <a href="/file.php?d='.prov($_GET['d']).'">Назад</a></div>';
  437. }
  438. include 'system/foot.php';
  439. ?>