/wget-gui-light

Web (ajax + php) gui for wget

Primary LanguageJavaScript

Wget GUI Light

Web-интерфейс для wget - программы загрузки файлов по сети. Построен на Ajax+css3 с клиентской стороны, и php с серверной. Требования к системе, на которой разворачивается данное решение:

  • *nix (по крайней мере писалось именно под эту платформу; для запуска под иной - требуются рабочие порты wget, ps и kill);
  • php5.x (скорее всего работать будет и на php4.x, по под руками нет готовой системы для тестирования);
  • Браузер с поддержкой javascript (очень желательно - с поддержкой css3).

Скриншот интерфейса: screenshot

Особенности серверной части:

Как уже было сказано выше - в роли серверной части выступает скрипт, написанный на php. Он выполняет следующие задачи:

  • Получение информации о запущенных задачах;
  • Отмена запущенных задач;
  • Добавление новых задач;
  • Возвращение результатов в JSON формате (отвечает на на POST, так и GET запросы).

Для своей работы ему требуются ps, wget и kill соответственно. Для получения значения состояния закачки (на сколько процентов завершена) используется следующий принцип:

  • Задачи wget запускаются с флагами --background и --progress=bar:force;
  • Вывод лога загрузки производится в файл, установленный в параметре --output-file=FILE;
  • При запросе состояния задач с помощью ps -ax получаем путь к файлу, установленный в --output-file=FILE;
  • Читаем крайнюю строку этого файла, получая из него искомое значение.

Неприятная особенность - лог файлы после завершения закачки автоматически не удаляются, и делать на данный момент это приходится ручками (добавив в crontab что то похожее на rm -f /tmp/wget*.log.tmp).

Данную возможность можно отключить, закомментировав строку define('tmp_path', '/tmp');

Путь до директории, в которую будет происходить сохранение всех загружаемых файлов устанавливается в строке define('download_path', BASEPATH.'/downloads');.

Доступно удобное указание путей до ps, wget и kill. Для этого достаточно убрать комментарий вначале строки и указать свой путь, например: define('wget', '/usr/bin/wget');.

Возможна установка ограничения на скорость закачки из секции настроек. За это отвечает строка define('wget_download_limit', '1024');.

Для определения в списке задачи запущенной через GUI от любой другой используется определенный флаг, уникальный для GUI. Он установлен в строке define('wget_secret_flag', '--max-redirect=4321'); и его менять без необходимости не надо.

Скрипт отвечает как на POST, так и GET запросы. Разницы между ними нет.

screenshot

Особенности клиентской части:

Не используются новые html5 теги, но используются css3 для оформления прогресc-бара загрузок. Дизайн выполнен в минималистичном стиле без изображений (исключением является favicon). При отсутствии задач в центре страницы располагается поле для добавления адреса закачки, если задачи имеются - это поле смещается вверх страницы, и ниже располагаются задачи.

Все запросы - асинхронные (без перезагрузки страницы). Дизайн страницы - адаптивный:

screenshot

Изменение состояния отображается также в заголовке вкладки (окна):

screenshot screenshot

В нижней части документа располагается javascript-закладка ("Download this"), переместив которую в панель закладок браузера можно одним кликом добавлять новые задачи (при клике будет добавлена активная вкладка; если открыта вкладка с видеофайлом и будет нажата эта "закладка" на панели закладок - будет добавлена задача на скачивание этого видеофайла):

screenshot

Весь javascript код документа расположен в файле core.js. В верхней его части располагаются основные настройки:

  • updateStatusInterval - интервал обновления данных на открытой вкладке (будьте аккуратны с этим параметром на слабых серверах);
  • DebugMode - режим отладки, выводится отладочная информация в console.log;
  • prc - путь до php скрипта серверной части.

Описывать функциональные момента смысла особого не вижу, но скажу - функции разделены на логические группы, скрипт не минифицирован, комментарии имеют место быть. Самое интересное на мой взгляд - это функция синхронизации данных, но рядом с ней и так написан комментарий (единственный на Русском).

Установка:

  • Скачать или склонировать крайнюю версию репозитория;
  • Распаковать в директорию, доступную "извне";
  • Изменить путь define('download_path', BASEPATH.'/downloads'); в rpc.php;
  • Открыть в браузере, проверить работоспособность. В случае возникновения ошибок - задайте вопрос.

История изменений

  • 0.0.3 - Релиз на гитхабе

Лицензия:

Copyright (c) 2014 Samoylov Nikolay

Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

3rd party: