что такое файловый менеджер сайта

Файловые менеджеры на PHP

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

Представляю список всех мне известных файловых менеджеров которые можно использовать при веб разработке. Естественно что данные менеджеры состоят из мускулистого PHP и ядреного JavaScript.

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайтаelFinder — Достаточно известный и популярный в веб среде веб менеджер файлов который написан на PHP и JavaScript который представляет огромный перечень возможностей в разработке веб решений.

Видео обзор:

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайтаsjFilemanager — достаточно не плохой файловый менеджер AJAX + PHP. Стоит отметить его технические детали а так же разработчиков словянских кровей. Файл менеджер можно встроить как в обычный редактор так и в TinyMCE. Все фишки данного менеджера осуществлены благодаря AJAX!

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайтаPydio.com — Предста безопасный общий доступ к файлам для бизнеса в веб режиме. Реализует всестороннюю синхронизацию для коллектива работающего над бизнес проектом. Имеет открытый исходный код может быть развернут на личном (или удаленном) хостинге или в частном облаке. Если вам необходима установка pydio на linux следуйте данной инструкции.

Видео презентация:

PHP файловые менеджеры на GITHUB

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

simogeo — Filemanager — Файловый менеджер с открытым исходным кодом выпущен под лицензией MIT, является альтернативой elfinder или CKFinder менеджерам.

Источник

Web файловый менеджер Sprut.IO в OpenSource

В Бегете мы долго и успешно занимаемся виртуальным хостингом, используем много OpenSource-решений, и теперь настало время поделиться с сообществом нашей разработкой: файловым менеджером Sprut.IO, который мы разрабатывали для наших пользователей и который используется у нас в панели управления. Приглашаем всех желающих присоединиться к его разработке. О том, как он разрабатывался и почему нас не устроили существующие аналоги, какие костыли технологии мы использовали и кому он может пригодиться, расскажем в этой статье.

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

Зачем изобретать свой файловый менеджер

В 2010 году мы использовали NetFTP, который вполне сносно решал задачи открыть/загрузить/подправить несколько файлов.
Однако, пользователям иногда хотелось научиться переносить сайты между хостингами или у нас между аккаунтами, но сайт был большой, а интернет у пользователей не самый хороший. В итоге, или мы делали это сами (что явно было быстрее), или объясняли, что такое SSH, MC, SCP и прочие страшные вещи.

Тогда у нас и появилась идея сделать WEB двух-панельный файловый менеджер, который работает на стороне сервера и может копировать между разными источниками на скорости сервера, а также, в котором будут: поиск по файлам и директориям, анализ занятого места (аналог ncdu), простая загрузка файлов, ну и много всего интересного. В общем, все то, что облегчило бы жизнь нашим пользователям и нам.

В мае 2013 мы выложили его в продакшн на нашем хостинге. В некоторых моментах получилось даже лучше, чем мы хотели изначально — для загрузки файлов и доступа к локальной файловой системе написали Java апплет, позволяющий выбрать файлы и все сразу скопировать на хостинг или наоборот с хостинга (куда копировать не так важно, он умел работать и с удаленным FTP и с домашней директорией пользователя, но, к сожалению, скоро браузеры не будут его поддерживать).

Прочитав на Хабре про аналог, мы решили выложить в OpenSource наш продукт, который получился, как нам кажется, отличным работающим и может принести пользу. На отделение его от нашей инфраструктуры и приведение к подобающему виду ушло еще девять месяцев. Перед новым 2016 годом мы выпустили Sprut.IO.

Как он работает

Делали для себя и использовали самые, по нашему мнению, новые, стильные, молодежные инструменты и технологии. Часто использовали то, что было уже для чего-то сделано.
Есть некоторая разница в реализации Sprut.IO и версии для нашего хостинга, обусловленная взаимодействием с нашей панелью. Для себя мы используем: полноценные очереди, MySQL, дополнительный сервер авторизации, который отвечает и за выбора конечного сервера, на котором располагается клиент, транспорт между нашими серверами по внутренней сети и так далее.

Sprut.IO состоит из нескольких логических компонентов:
1) web-морда,
2) nginx+tornado, принимающие все обращения из web,
3) конечные агенты, которые могут быть размещены как на одном, так и на многих серверах.

Фактически, добавив отдельный слой с авторизацией и выбором сервера, можно сделать мультисерверный файловый менеджер (как в нашей реализации). Все элементы логически можно поделить на две части: Frontend (ExtJS, nginx, tornado) и Backend (MessagePack Server, Sqlite, Redis).

Схема взаимодействия представлена ниже:

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

Frontend

Web интерфейс — все достаточно просто, ExtJS и много-много кода. Код писали на CoffeeScript. В первых версиях использовали LocalStorage для кеширования, но в итоге отказались, так как количество багов превышало пользу. Nginx используется для отдачи статики, JS кода и файлов через X-Accel-Redirect (подробно ниже). Остальное он просто проксирует в Tornado, который, в свою очередь, является своеобразным роутером, перенаправляя запросы в нужный Backend. Tornado хорошо масштабируется и, надеемся, мы выпилили все блокировки, которые сами же и наделали.

Backend

Backend состоит из нескольких демонов, которые, как водится, умеют принимать запросы из Frontend. Демоны располагаются на каждом конечном сервере и работают с локальной файловой системой, загружают файлы по FTP, выполняют аутентификацию и авторизацию, работают с SQLite (настройки редактора, доступы к FTP серверам пользователя).

Запросы в Backend отправляются двух видов: синхронные, которые выполняются относительно быстро (например, листинг файлов, чтение файла), и запросы на выполнение каких-либо долгих задач (загрузка файла на удаленный сервер, удаление файлов/директорий и т.п.).

Синхронные запросы — обычный RPC. В качестве способа сериализации данных используется msgpack, который хорошо зарекомендовал себя в плане скорости сериализации/десериализации данных и поддержки среди других языков. Также рассматривали python-специфичный rfoo и гугловский protobuf, но первый не подошел из-за привязки к python (и к его версиям), а protobuf, с его генераторами кода, нам показался избыточным, т.к. число удаленных процедур не измеряется десятками и сотнями и необходимости в выносе API в отдельные proto-файлы не было.

Запросы на выполнение долгих операций мы решили реализовать максимально просто: между Frontend и Backend есть общий Redis, в котором хранится выполняемый таск, его статус и любые другие данные. Для запуска задачи используется обычный синхронный RPC-запрос. Flow получается такой:

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

Интересные кейсы, которые стоит упомянуть

Загрузка файлов с Frontend

Задача:
Загрузить файл на конечный сервер, при этом Frontend не имеет доступа к файловой системе конечного сервера.

Решение:
Для передачи файлов msgpack-server не подходил, основная причина была в том, что пакет не мог быть передан побайтово, а только целиком (его надо сначала полностью загрузить в память и только потом уже сериализовывать и передавать, при большом размере файла будет OOM), в итоге решено было использовать отдельного демона для этого.
Процесс операции получился следующий:
Мы получаем файл от nginx, пишем его в сокет нашего демона с заголовком, где указано временное расположение файла. И после того, как файл полностью передан, отправляем запрос в RPC на перемещение файла в конечное расположение (уже к пользователю). Для работы с сокетом используем пакет pysendfile, сам сервер самописный на базе стандартной питоновской библиотеки asyncore

Определение кодировки

Задача:
Открыть файл на редактирование с определением кодировки, записать с учетом исходной кодировки.

Проблемы:
Если у пользователя некорректно распознавалась кодировка, то при внесении изменений в файл c последующей записью мы можем получить UnicodeDecodeError и изменения не будут записаны.

Все «костыли», которые в итоге были внесены, являются итогом работы по тикетам с файлами, полученными от пользователей, все «проблемные» файлы мы также используем для тестирования после внесенний изменений в код.

Решение:
Исследовав интернет в поисках данного решения, нашли библиотеку chardet. Данная библиотека, в свою очередь, является портом библиотеки uchardet от Mozilla. Она, например, используется в известном редакторе https://notepad-plus-plus.org

Протестировав ее на реальных примерах, мы поняли, что в реальности она может ошибаться. Вместо CP-1251 может выдаваться, например, «MacCyrillic» или «ISO-8859-7», а вместо UTF-8 может быть «ISO-8859-2» или частный случай «ascii».

Кроме этого, некоторые файлы на хостинге были utf-8, но содержали странные символы, то ли от редакторов, которые не умеют корректно работать с UTF, то ли еще откуда, специально для таких случаев также пришлось добавлять «костыли».

Параллельный поиск текста в файлах с учетом кодировки файла

Задача:
Организовать поиск текста в файлах с возможностью использования в имени «shell-style wildcards», то есть, например, ‘pupkin@*.com’ ‘$* = 42;’ и т.д.

Проблемы:
Пользователь вводит слово «Контакты» — поиск показывает, что нет файлов с данным текстом, а в реальности они есть, но на хостинге у нас встречается множество кодировок даже в рамках одного проекта. Поэтому поиск также должен учитывать это.

Несколько раз столкнулись с тем, что пользователи по ошибке могли вводить любые строки и выполнять несколько операций поиска на большом количестве папок, в дальнейшем это приводило к возрастанию нагрузки на серверах.

Решение:
Многозадачность организовали достаточно стандартно, используя модуль multiprocessing и две очереди (список всех файлов, список найденных файлов с искомыми вхождениями). Один воркер строит список файлов, а остальные, работая параллельно, разбирают его и осуществляют непосредственно поиск.

Искомую строку можно представить в виде регулярного выражения, используя пакет fnmatch. Ссылка на итоговую реализацию поиска.

Для решения проблемы с кодировками приведен пример кода с комментариями, там используется уже знакомый нам пакет chardet.

В итоговой реализации добавлена возможность выставить время выполнения в секундах (таймаут) — по умолчанию выбран 1 час. В самих процессах воркеров понижен приоритет выполнения для снижения нагрузки на диск и на процессор.

Распаковка и создание файловых архивов

Задача:
Дать пользователям возможность создавать архивы (доступны zip, tar.gz, bz2, tar) и распаковывать их (gz, tar.gz, tar, rar, zip, 7z)

Проблемы:
Мы встретили множество проблем с «реальными» архивами, это и имена файлов в кодировке cp866 (DOS), и обратные слеши в именах файлов (windows). Некоторые библиотеки (стандартная ZipFile python3, python-libarchive) не работали с русскими именами внутри архива. Некоторые реализации библиотек, в частности SevenZip, RarFile не умеют распаковывать пустые папки и файлы (в архивах с CMS они встречаются постоянно). Также пользователи всегда хотят видеть процесс выполнения операции, а как это сделать если не позволяет библиотека (например просто делается вызов extractall())?

Решение:
Библиотеки ZipFile, а также libarchive-python пришлось исправлять и подключать как отдельные пакеты к проекту. Для libarchive-python пришлось сделать форк библиотеки и адаптировать ее под python 3.

Создание файлов и папок с нулевым размером (баг замечен в библиотеках SevenZip и RarFile) пришлось делать отдельным циклом в самом начале по заголовкам файлов в архиве. По всем багам разработчикам отписали, как найдем время то отправим pull request им, судя по всему, исправлять они это сами не собираются.

Отдельно сделана обработка gzip сжатых файлов (для дампов sql и проч.), тут обошлось без костылей с помощью стандартной библиотеки.

Прогресс операции отслеживается с помощью вотчера на системный вызов IN_CREATE, используя библиотеку pyinotify. Работает, конечно, не очень точно (не всегда вотчер срабатывает, когда большая вложенность файлов, поэтому добавлен магический коэффициент 1.5), но задачу отобразить хоть что-то похожее для пользователей выполняет. Неплохое решение, учитывая, что нет возможности отследить это, не переписывая все библиотеки для архивов.

Повышенные требования к безопасности

Задача:
Не дать пользователю возможности получить доступ к конечному серверу

Проблемы:
Все знают, что на хостинговом сервере одновременно могут находиться сотни сайтов и пользователей. В первых версиях нашего продукта воркеры могли выполнять некоторые операции с root-привилегиями, в некоторых случаях теоретически (наверное) можно было получить доступ к чужим файлам, папкам, прочитать лишнее или что-то сломать.

Конкретные примеры, к сожалению, привести не можем, баги были, но сервер в целом они не затрагивали, да и являлись больше нашими ошибками, нежели дырой в безопасности. В любом случае, в рамках инфраструктуры хостинга есть средства снижения нагрузки и мониторинга, а в версии для OpenSource мы решили серьезно улучшить безопасность.

Решение:
Все операции были вынесены, в так называемые, workers (createFile, extractArchive, findText) и т.д. Каждый worker, прежде чем начать работать, выполняет PAM аутентификацию, а также setuid пользователя.

При этом все воркеры работают каждый в отдельном процессе и различаются лишь обертками (ждем или не ждем ответа). Поэтому, даже если сам алгоритм выполнения той или иной операции может содержать уязвимость, будет изоляция на уровне прав системы.

Архитектура приложения также не позволяет получить прямой доступ к файловой системе, например, через web-сервер. Данное решение позволяет достаточно эффективно учитывать нагрузку и мониторить активность пользователей на сервере любыми сторонними средствами.

Установка

Мы пошли по пути наименьшего сопротивления и вместо ручной установки подготовили образы Docker. Установка по сути выполняется несколькими командами:

run.sh проверит наличие образов, в случае если их нет скачает, и запустит 5 контейнеров с компонентами системы. Для обновления образов необходимо выполнить

Остановка и удаление образов соответственно выполняются через параметры stop и rm. Dockerfile сборки есть в коде проекта, сборка занимает 10-20 минут.
Как поднять окружение для разработки в ближайшее время напишем на сайте и в wiki на github.

Помогите нам сделать Sprut.IO лучше

Очевидных возможностей для дальнейшего улучшения файлового менеджера достаточно много.

Как наиболее полезные для пользователей, нам видятся:

Если у вас есть дополнения, что может быть полезно пользователям, расскажите нам о них в комментариях или в списке рассылки sprutio-ru@groups.google.com.

Мы начнем их реализовывать, но не побоюсь этого сказать: своими силами на это уйдут годы если не десятилетия. Поэтому, если вы хотите научиться умеете программировать, знаете Python и ExtJS и хотите получить опыт разработки в открытом проекте — приглашаем вас присоединиться к разработке Sprut.IO. Тем более, что за каждую реализованную фичу мы будем выплачивать вознаграждение, так как нам не придется реализовывать ее самим.

Список TODO и статус выполнения задач можно увидеть на сайте проекта в разделе TODO.

Спасибо за внимание! Если будет интересно, то с радостью напишем еще больше деталий про организацию проекта и ответим на ваши вопросы в комментариях.

Источник

Веб файловые менеджеры

phpFileManager

Минималистичный интерфейс, зато всего один файл.

Из видимых недостатков не нашел разархивирования файлов.

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

HTTP Commander

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

AjaXplorer

Предварительный просмотр и проигрывание мультимедийных файлов непосредственно на сайте. Документы и изображения могут быть изменены прямо в Интернете.

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

Cloud Commander

Двухпанельный, работает в браузере, оснащён редактором (с подсветкой синтаксиса) и консолью, состоит из клиента и сервера, а написан на JavaScript/Node.js.

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

MooTools FileManager

Возможности:
Позволяет просматривать файлы и папки на сервере
Позволяет переименовывать, удалять, перемещать (Drag&Drop), копировать и скачивать файлы
Позволяет просматривать превью изображений, текстовых файлов, сжатых файлов или аудио.
Имеет привлекательный интерфейс пользователя.
Загрузка файлов через FancyUpload (интегрированная функция)
Возможность автоматического изменения размера больших изображения при загрузке

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

PAFM дает пользователю полный контроль над файлами.Редактирование исходного кода может быть сделано с помощью CodePress с подсветкой синтаксиса.

QuiXplorer

В многопользовательском режиме:

Имеются версии QuiXplorer на английском, голландском, немецком, испанском, французском и русском языках.

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

BytesFall Explorer

BytesFall является доступным через сеть диспетчером файлов, написанным на PHP и JavaScript.

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

NavPHP

что такое файловый менеджер сайта. Смотреть фото что такое файловый менеджер сайта. Смотреть картинку что такое файловый менеджер сайта. Картинка про что такое файловый менеджер сайта. Фото что такое файловый менеджер сайта

PHP navigator with its unique XP style navigation is written in PHP and AJAX. The main features include multiuser support, Gzip & Deflate webpage, built in HTML and code editor as well as Extract Zip. This web based file manager is completely free.

Key Features: File or Folder can be downloaded as Zip, Zip archive can be extracted to current folder, Key board shortcuts.

iDC File Manager

The iDC file manager is a multiuser file sharing system which can be installed either on Linux or Windows web server. Every format of digital media such as documents, images, audio, video, publishing layout, presentations and PDF files can be saved, shared and managed. The application is driven by MySQL Database.

Key Feature: Hotlink Function with Social Network Support, Monitor User Activity with Built-In Log Viewer. It’s Available in 8 Languages.

FileMan

Relay

The Relay is released under GPL. It is AJAX enabled, also features improved UI and performance, which is ideal for large file sets. Files and directories uploaded into file stores from other means can also be easily handled.

Key Feature: Drag-and-drop files and folders, dynamic loading file structure.

phpXplorer

phpXplorer, as the name suggests is written in PHP. This is a free open source file management system. The file types, property sheets, views and themes are built on its own by modular design. The permission manager restricts the user access to multiple users in a detailed manner.

Key Feature: It has got dialogs for editing HTML, PHP, image, Apache, compressed and email files.

DesktopBrowser

This is a web application which uses SharpKit to maintain client-side code in C#. It is a simple free and open-source file browser project, maintained at Google Code. Local and network drives can be easily browsed. Requirements: NET 4 Framework, IIS Express.

OwnCloud

Getting your own data stored in an open source community had never been so easy and reliable using this file manager. By using this web based file manager you decide with whom to share which information and to what extent. The data can be accessed through web browsers, iOS, Android devices and your desktop and laptop. It supports MS Windows platform.

Key Feature: File sharing, User management, web based file upload and download using a Javascript based file browser.

Seafile

It’s an advanced free to use open source cloud storage through which you can access and store your own data and share it with groups and teams as and when you desire. It can be operated with just about any advanced mobile device, internet browser, desktop or laptop. It is supported by all popular platforms.

PhpFileManager

It is an advanced file management system and that converts information into a single file. Supported by Linux and Windows, you can access your data and share it with your team with just about any mobile or computer devices. You can copy, move, delete, remain and a host of other things with this advanced file manager.

Limpid Browser

It is an open source PHP and MySQL application though which you can store and share your information from just about any server and advanced mobile and computer devices. Supported by Windows and other well known operating system, the encryption ensures that your confidential data is protected by a security code.

Mollify

This is an easy to use file management system that can be operated upon and used with the help of any web server; it’s endowed with flexible privacy policy that ensures that the data can be accessed according to your terms and condition, with different types of permissions granted to different users.

Encode Explorer

It is a file browser written in PHP and it is free for anyone who wants to create and manage files in the cloud environment. The application is loaded with user friendly features through which you can manage all the related functions associated with file management. It can be accessed and operated on Android and other mobile applications, desktop and laptop.

PHPfileNavigator

It is a PHP application which enables you to manage files in a cloud environment and share it with your team or community. Supported by Linux, Windows and smartphone applications, the software is easy to install and use. The encryption ensures that the confidentiality of the information is maintained.

Ajax File Manager

It is a state-of-the-art web file management system that manages your file as effectively as any operating system does. Runs on Windows XP and other well known operating systems. The encryption policy ensures that the data can only be accessed by different systems with permissions issued to different users. It is loaded with a recycle bin feature and fast interaction is possible via AJAX.

KCFinder

It is a well equipped free file browser system and works with Apache 2 web server; it’s also compatible with other well known servers. It integrates PNG watermark support as well as HTML5 drag and drop features. Multiple files can be uploaded and accessed with any advanced mobile, desktop or laptop.

Net2ftp

Monsta

It is an open source file management system that puts FTP file sharing right in your browser. It includes PHP and Ajax source code and is scripted for all types of programmers. Supported by Linux and Windows operating system, you can manage your important documents effectively, it also features multi-language support.

It is a web based file manager written in PHP though which you can upload and download your files, copy and rename it with ease. Works on UNIX operating system. It does not require MySQL, but you can implement one if you require. It carries the GPL license and comprises of an advanced file finder.

Kinky File Explorer

It is a totally free cold fusion based file exploration system that helps you to share your files and information through a read-only directory. It helps you to impart relevant information to your group or community without offering the right for snooping. It integrates an Ajax file loading system.

Limbo Media

A very impressive open source file management software that comes with a beautiful user interface and user management with access control. The tool provides easy ways to manage different file types including images, videos and documents.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *