Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Сервер сканирования на ubuntu server с web интерфейсом  (Прочитано 8606 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн yarvobler

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Добрый день. Хочу поделиться опытом установки скансервера на базе Ubuntu Server

Сервер сканирования позволяет сканировать с любого компьютера в сети без установки специального ПО. Все функции сканирования возлагаются на один компьютер с серверным ПО на базе Linux. Установка драйверов на компьютеры пользователей не требуется. С переходом от одной версии windows к другой для пользователей ничего не меняется.
За основу был взят проект PHiLLIP KliEWER
он был раньше здесь http://scannerserver.online02.com
Но сейчас проект прекратил свое развитие и сайта нет.
Код проекта сильно изменен, ибо оригинал был сильно заброшен где-то посередине.
Архив оригинала найдете по ссылке http://yarvobler.narod.ru/scanserver/original/scan_1.1.9.tar

Отличия от оригинала
1) Самое главное предоставляется выбор сканировать c автоподачи стопку бумаги или один лист со стекла. При этом со стекла сканируется в формат JPG. С автоподачи в многостраничный PDF.
2) Любое изображение JPG со стекла нажатием одной кнопки переводится в PDF
3) Ссылка на страницу конфигурации- там где меняется цветовая тема и редактируется конфигурация сканеров скрыта от пользователей. Чтоб в корпоративной среде любопытный пользователь случайно не нарушил работоспособность системы.
4) Все форматы кроме jpg и pdf не используются при сканировании.


Рассмотрим установку такового на Ubuntu 14.04 Server.
Нам понадобятся web server apache2, утилиты сканирования sane, утилиты для обработки изображений netpbm и imagemagick.
Кроме того, если мы работаем с техникой HP, потребуется набор утилит и драйверов Hewlett-Packard - hplip, samba — сервер для доступа к истории сканирования через проводник windows, ssh сервер для удаленного управления.
samba и ssh ставится еще при установке сервера, остальное устанавливается командой
sudo apt-get install sane-utils netpbm apache2 imagemagick
sudo apt-get install php libapache2-mod-php
Установщик hplip можно скачать (самую последнюю версию) с официального сайта
http://hplipopensource.com/hplip-web/gethplip.html
или
sudo apt-get install hplip
(Тиражируя проект  на платформе ubuntu 16.04 понял что ставить hplip лучше вторым способом, ибо крайний hplip конфликтует с версией python- но это косяки компании HP )


Установив все пакеты и утилиты приступим к настройке сканеров.
Устройства Hewlett-Packard ставятся командой

sudo hp-setup -i ip_адрес_сканера

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

sudo scanimage -L

Переходим к настройке и установке сервера.
в конфигурационный файл apache, который находится здесь
/etc/apache2/apache2.conf
добавить строку (разрешить исполнение скриптов)
AddHandler cgi-script .cgi

выполним команду (подключение модуля исполнения cgi для apache2)
sudo a2enmod cgi

Теперь настройка сайта
/etc/apache2/sites-enabled/000-default
пример настройки находится здесь

http://yarvobler.narod.ru/scanserver/000-default.conf

главное разрешить исполнение cgi
       <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews ExecCGI
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

Перезагрузим apache2

sudo service apache2 restart


Сам код сервера разворачивается в /var/www
он берется отсюда
http://yarvobler.narod.ru/scanserver/scanserver.tgz


cd /var/www
sudo wget http://yarvobler.narod.ru/scanserver/scanserver.tgz
sudo tar xvfz scanserver.tgz


После этого запускается сервер сканирования http://server_ip_address
Пользователь для получения сканированного изображения должен
1) Выбрать сканер из выпадающего списка сканеров.
2) Выбрать источник сканирования: планшет с одним листом или автоподатчик с пачкой листов.
3) определить качество сканирования или пропустив этот этап сразу нажать кнопку Scan Image.
4) Полученные результаты сохранить на свой компьютер. Одностраничный документ в pdf или jpg. Многостраничный с автоподатчика в pdf (один лист с автоподатчика все равно будет считаться многостраничным документом)
Конфигурация сервера расположена в каталоге /var/www/config
Сама страница конфигурации закрыта от случайного доступа пользователю, но мы можем ее вызвать по секретной ссылке http://server_ip_address/index.cgi?page=config
Все доступные серверу сканеры для доступности пользователю должны быть прописаны в конфигурационный файл
/var/www/config/scanners.conf
Он представляет собой набор строк вида
ID=номер по порядку INUSE=0 DEVICE=Системное_имя NAME=Произвольное имя понятное пользователя
Например
ID=01 INUSE=0 DEVICE=hpaio:/net/HP_LaserJet_M2727nf_MFP?ip=10.5.7.20 NAME=K207 (ИТ) HP2727

Если сканеров больше 9 то начинать нумерацию ID 01,02… 99 обязательно c нуля первые 9. Для 9 сканеров и меньше можно обойтись без нулей в номере ID.
Системное имя можно узнать командой
scanimage -L

Система установлена и работает с более десятка сканеров в корпоративной среде одного из предприятий. На предприятии используется только сканирующие устройства производителя Hewlett-Packard. С устройствами других производителей система не тестировалась. Но это не значит ваш сканер не будет работать, судя по архивам форума умершего сайта проекта, люди цепляли разные сканеры Canon, Mustec, Epson и не только по ip, но и по USB.  Если он доступен через sane utils, то теоретически все будет работать.

P.S. В ходе эксплуатации системы возникла потребность ограничить доступ к сканированным документам специфических отделов предприятия.
Один из вариантов решения проблемы.
Если документы забираются сотрудниками предприятия только по web через браузер, то в раздел на сервере /var/www/
надо поместить файл с именем .htaccess и со следующим содержанием

#allow to view scans from scanner with id=01 only client with ip=10.5.9.115
<Files ~ "(01.jpg)$">
Order Deny,Allow
Deny from all
Allow from 10.5.9.115
</Files>
<Files ~ "(01.jpg.pdf)$">
Order Deny,Allow
Deny from all
Allow from 10.5.9.115
</Files>

Вам надо только прописать вместо 01 соответствующий ID из /var/www/config/scanners.conf и ip адрес или адреса клиентов, которые будут видеть документ с данного сканера. Остальные не смогут увидеть даже миниатюры в истории.

Разумеется в файле конфигурации сайта /etc/apache2/sites-enabled/000-default надо разрешить исполнение .htaccess
Все строки типа AllowOverride None заменить на AllowOverride All.

Тогда доступ к папке где хранятся сканы по samba не рассматривается или решается по вашему усмотрению.


PS. В 2020 году возникла потребность вернуться к теме и установить сервер сканирования на ubuntu 20.04
Как и ожидал сразу ничего не завелось но по порядку

1) отличия в установке hplip
sudo apt install hplip  - дает просто набор команд без поддержки устройств - в топку
устанавливал скачивая с сайта hp
 wget https://nchc.dl.sourceforge.net/project/hplip/hplip/3.20.5/hplip-3.20.5.run
 chmod -R 755 hplip-3.20.5.run

не торопитесь запускать, в системе должен стоять и быть активным cups иначе вас ждет ругань про неудовлетворенные зависимости. Да если cups стоит но незапущен- сообщение тоже установите зависимости вручную.

sudo apt install cups
sudo systemctl start cups
sudo systemctl enable cups

а вот теперь можно ставить hplip
./hplip-3.20.5.run

остальные зависимости пакетов он доставит сам.

2) Нифига не сканирует код перенесенный с прежнего сервера

поставил код сохранения выполняемых команд в debug.txt
вот как изменился рабочий файл index.cgi в ubuntu 20.04

wget http://yarvobler.narod.ru/scanserver/index.cgi.tar.gz

поставлены метки сохраняющие вывод команд в debug.txt
их можно закоментить все, что заканчиваются на >> debug.txt # info for debug
Выяснил что sane utils изменили формат и строка
scanimage -d $DEVICE --resolution $QUALITY $SIZE -l 0 -t 0 -x 215 -y 296 --mode $MODE $BATCH --format=ppm > /tmp/scan_file$SCANNER.ppm
ругается на формат ppm (не поддерживается)- сменил на pnm

начало сканировать.

3) Формат PDF перестал предоставляться при сканировании с авто-податчика и конвертации из jpg
опять помог debug.txt
вставил  сохраненную в нем команду в строку терминала, ответ
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.

Забил строку в поиск оказалось надо разрешить теперь imagemagic конвертировать PDF

nano /etc/ImageMagick-6/policy.xml
в конце должно быть

<policy domain="coder" rights="read | write" pattern="PDF" />
</policymap>

Ура ! все снова работает, на новой платформе ubuntu 20.04








 

« Последнее редактирование: 20 Декабрь 2020, 14:37:39 от yarvobler »

Оффлайн regs2006

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Спасибо за отличное решение, единственная загвоздка с переводом в PDF
Нажимаю на кнопку "PDF" и выдает ошибку:

Цитировать
Not Found

The requested URL /$image.pdf was not found on this server.

Что может быть неправильно?

Кнопка "PDF" ведет на файл 2pdf.php
http://192.168.0.1/2pdf.php?image=scans/Scan_2018-02-12_14-29-19_01.jpg

Вот содержимое 2pdf.php

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<div align="center">
<?php
    $image 
=  $_GET["image"];
    echo 
shell_exec("convert $image -page a4  $image.pdf");
    echo 
"<a href = '$image.pdf'>У вас отключен JavaScript. Откройте pdf вручную</a>";
    echo(
"<script>location.href='$image.pdf'</script>");
?>

</div>.
</body>
</html>

Если просто в шелле запускаю из под рута

Цитировать
convert /var/www/html/scans/Scan_2018-02-12_14-29-19_01.jpg -page a4  /var/www/html/scans/Scan_2018-02-12_14-29-19_01.pdf

то PDF создается нормально
« Последнее редактирование: 12 Февраль 2018, 12:39:40 от regs2006 »

Оффлайн Marlboro105

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
У меня вот так отображается страница, что не так ???

Оффлайн EugeneK

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Спасибо за отличное решение, единственная загвоздка с переводом в PDF
Нажимаю на кнопку "PDF" и выдает ошибку:

Цитировать
Not Found

The requested URL /$image.pdf was not found on this server.

Что может быть неправильно?

Кнопка "PDF" ведет на файл 2pdf.php
http://192.168.0.1/2pdf.php?image=scans/Scan_2018-02-12_14-29-19_01.jpg

Вот содержимое 2pdf.php

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<div align="center">
<?php
    $image 
=  $_GET["image"];
    echo 
shell_exec("convert $image -page a4  $image.pdf");
    echo 
"<a href = '$image.pdf'>У вас отключен JavaScript. Откройте pdf вручную</a>";
    echo(
"<script>location.href='$image.pdf'</script>");
?>

</div>.
</body>
</html>

Если просто в шелле запускаю из под рута

Цитировать
convert /var/www/html/scans/Scan_2018-02-12_14-29-19_01.jpg -page a4  /var/www/html/scans/Scan_2018-02-12_14-29-19_01.pdf

то PDF создается нормально


Что выводит страница
<?php
phpinfo();
?>

Если не выводит страницу с инфо о php а выводит тупо текст кода, то какие вопросы тут могут быть? У Вас просто не установлен php
Другое дело, что в инструкции об этом почему то ни слова...

Пользователь добавил сообщение 11 Ноябрь 2020, 09:51:48:
У меня вот так отображается страница, что не так ???

У Вас не подтягиваются картинки. Картинки находятся в каталоге /inc/images там должно быть 8 файлов картинки
Код для вставки находится в каталоге /inc там должно быть 9 файлов конфигурации
Если всё на месте, копайте в сторону "не подгружаются картинки в html apache2" Возможно, есть настройки типа настроек безопасности для .cgi
« Последнее редактирование: 11 Ноябрь 2020, 09:53:17 от EugeneK »

 

Страница сгенерирована за 0.089 секунд. Запросов: 24.