настройка CUPS

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
kleine
рядовой
Сообщения: 21
Зарегистрирован: 2007-09-20 9:37:45

настройка CUPS

Непрочитанное сообщение kleine » 2007-11-15 1:13:52

Привет всем!
Имеется принт-сервер на базе CUPS (один принтер — HP LaserJet 1010)
Необходимо реализовать авторизацию (login:pass), а также печать страниц разделителей
между заданиями.

Принтер шарится как http://host/printer/HP
Однако добавление a.b.c.d в cupsd.conf:
<Location /printer/HP>
Allow a.b.c.d
</Location>

Приводит к тому что пользователь имеет право на печать
тестовых страниц. Как отключить test pages?

На страницах разделителях хотелось бы видеть:
время печати, login, ip, имя файла (или задания)

Возможно ли на page-separator печатать что-то из своего скрипта (с обращениями к sql например)

Подскажите куда копать

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

kleine
рядовой
Сообщения: 21
Зарегистрирован: 2007-09-20 9:37:45

Re: настройка CUPS

Непрочитанное сообщение kleine » 2007-11-18 1:47:47

Сам разобрался.
Возможности cups безграничны :)
Если кому интересно, пишите в личку.

Аватара пользователя
BlackCat
прапорщик
Сообщения: 468
Зарегистрирован: 2007-10-16 22:40:42

Re: настройка CUPS

Непрочитанное сообщение BlackCat » 2007-11-18 2:11:47

А можно в форум, я думаю многим будет интересна данная тема.

kleine
рядовой
Сообщения: 21
Зарегистрирован: 2007-09-20 9:37:45

Re: настройка CUPS

Непрочитанное сообщение kleine » 2007-11-18 6:29:50

BlackCat писал(а):А можно в форум, я думаю многим будет интересна данная тема.
Всё просто.

Постановка задачи:
  1. Реализовать авторизациию пользователей.
  2. Запретить печать test pages.
  3. Создать собственную страницу разделитель.
  4. ... и ещё что-нибуть интересное :)
Что было сделано:
  • Используя веб-сервер, идущий с cups, создан простенький сервис.
    Теперь веб-интерфейс (localhost:631) используется НЕ для администрирования, а для информ. поддержки!
    Все пользователи (с любого ip) могут заходить на главную страницу ( http://host:631)
    Главная страница изменена в корне. Теперь вместо "Intoduction to Cups", там расположена краткая информация о работе принт-сервера.
    На вкладке Help расположена информация об установке принтера, правила пользования и т.д.
    Зачем я это рассказываю?
    Требовалась информ. поддержка для принт-сервера.
    Мне показалось интересным использовать cups-web-server в таком ракурсе.
    Более того:
    • Не нужно устанавливать apache. Всё уже есть.
      Не нужно заниматься разработкой сайта. Дизайн уже есть.
      Cups-web-server использует интересную фишку для динамических страниц. Добавление новой страницы ОЧЕНЬ просто.
  • Только зарегистрированные пользователи имеют право на печать. Авторизация по ip (не хотел возится с паролями)
  • Запрещена печать test pages.
  • Создана пустая страница-разделитель. Изучен формат этих страниц.
    Я остановился на пустой странице разделителе. При малой печати бумага и тонер зря расходуются.
Предполагается, что cups установлен и настроен, принтер работает.
Администрирование ведётся либо через localhost:631, либо вручную, исправляя конфигурационные файлы cups.
Во втором случае возможностей больше.

Сначала об архитектуре cups (у меня 1.2.12)
  • конфиг. файлы: /etc/cups
    Там лежит несколько файлов. Нас интересует только один: cupsd.conf
  • основные файлы: /usr/share/cups
    • ./banners -- cтраницы разделители
    • ./html -- корень веб-сервера (index.html, cups.css, images и т.д.) То, что вы видете заходя на http://localhost:631.
    • ./html/help -- файлы справки, используемые веб-серевером для вкладки Help.
    • ./templates -- все остальные файлы веб-сервера. То, что вы видите заходя на вкладки главной страницы.
      Они имеют расширение .tmpl и используются очень хитро (читай далее)
    Всё остальное нас не интересует.
  • дополнительные файлы: /usr/libexec/cups
    • ./cgi-bin -- скрипты (вернее скомпиленные программы) для вкладок главной страницы (admin.cgi classes.cgi help.cgi jobs.cgi printers.cgi)
      Когда вы заходите через веб-интерфейс на какую-либо вкладку, вызывается соответствующий скрипт.
      Эти скрипты используют файлы .tmpl из ./templates
      Например: заходя на вкладку Jobs, будет вызван jobs.cgi, который воспользуется файлами jobs-header.tmpl, jobs.tmpl и т.д.
    Всё остальное нас не интересует.
  • logs: /var/log/cups
    • access_log -- лог по запросам к веб-серверу
    • page_log -- кто, где, когда, сколько распечатал
    • error_log -- no comments
Рассмотрим файл конфигурации cupsd.conf
Он достаточно прост.

Разрешить всем просмотр главной страницы:

Код: Выделить всё

<Location />
  Order allow,deny
  Allow All
</Location>
Разрешить избранным доступ к печати:

Код: Выделить всё

<Location /printers/HP>
Order Deny,Allow
Deny From All
AuthType None
Allow 10.1.0.6
Allow 10.1.0.7
</Location>
Запретим печать тестовых страниц ВСЕМ:

Код: Выделить всё

<Location /printers/HP?op=print-test-page>
Order Deny, Allow
AuthType None
Deny All
</Location>
На этом редактирование cupsd.conf завершено. Я мог где-то что-то напутать, но смысл, думаю, понятен.
И ещё. У меня возникла проблема. Root-user всё же смог печатать test pages.
Задачи 2 и 3 решены.

Теперь задача 1.
Изменяем файлы index.html, стили, favicon.ico как хотим.
Изменить скрипты из cgi-bin не удалось (ELF exec). Поэтому изменяем .tmpl файлы из директории templates
Как захотите!
Там очень просто!

На вкладке Help используется следующая фишка.
Cups (вернее help.cgi) просматривает директорию ./cups/html/help на имеющиеся файлы.
Если в файле есть строка:

Код: Выделить всё

<!-- SECTION: Getting Start -->
То файл добавится на вкладку "Getting Start" (а она, в свою очередь, находится на вкладке Help).
Так можно создавать древовидные структуры, не задумываясь о ссылках. (Я не занимаюсь web-design и могу ошибаться)
CUPS has traditionally provided a dynamic web interface
through dedicated CGI programs that are executed when users open
special directories on the CUPS server. Each CGI performs
administration, class, help, job, and printer functions as
directed by the user, but the actual programs that are run and
functions that are available are limited to those that were
originally designed into the scheduler.
Возможности расширяются:
Support is now available for CGI programs and specific
scripting languages, currently Java, Perl, PHP, and Python. The
interpreters for these languages are currently configured at
compile time. Future versions may expand the interface to allow
for generic support of scripting languages similar to the Apache
"AddHandler" directive, but with external programs instead of
modules.
Замечу, что cups использует свои переменные для общения с принтером (не знаю как по-другому выразится).
Например следующий код создаёт кнопку для включения/выключения принтера:
(из printers.tmpl)

Код: Выделить всё

{printer_is_shared=0?
<A HREF="{admin_uri}?op=set-sharing&printer_name={%printer_name}&shared=1">
<IMG SRC="/images/button-publish-printer.gif" ALT="Publish Printer" CLASS="button"></A>
:
<A HREF="{admin_uri}?op=set-sharing&printer_name={%printer_name}&shared=0">
<IMG SRC="/images/button-unpublish-printer.gif" ALT="Unpublish Printer" CLASS="button"></A>
}
Об этих переменных поговорим позднее.

Замечу ещё.
Я убрал кнопку "Test page" из pinters.tmpl. Хотя мы и отключили test pages. но пусть у пользователя не будет даже мыслей.
Также советую убрать все остальные кнопки. Первоначальные настройки cupsd.conf требуют login:pass для этих кнопок, но пусть пользователь даже не задумывается над этим.
Эти ограничения на печать тестовых страниц легко обходятся с удалённого компа.
Когда винда предлагает "Напечатать test page", она печатает просто как задание, не используя описанные выше механизмы (<Location /printers/HP?op=print-test-page>)
Иначе и не могло быть.

Задача 4.
Страницы разделители (/usr/share/cups/banners).
Это ЛЮБОЙ текстовый файл. Может быть ps скрипт.
Там уже есть несколько примеров, но все они неэкономные (много тонера уходит на картинки).
Я изменил один из них, отключив печать картинок, больших букв. Получилась простая рамочка с указанием имени файла, имени юзера, времени и ip.
Выложить не могу:
Расширение запрещено администратором.
Подробнее о banner template variables

И ещё. Я решил использовать пустую страницу разделитель.
После запуска cups просматривает директорию ./banners на предмет НЕПУСТЫХ файлов, а также файлов НЕСОСТОЯЩИХ из одних пустых строк.
Для empty banner нужно создать файл, состоящий хотя бы из одного пробела :roll:
Включить баннер можно через веб-интерфейс (Printers-->Set Printer Options-->Banners) или изменив строчку в файле /etc/cups/printer.conf:

Код: Выделить всё

JobSheets empty-banner none
На этом закончу. Всем спасибо.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35069
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: настройка CUPS

Непрочитанное сообщение Alex Keda » 2007-11-18 13:05:53

хороший мануал :)
Убей их всех! Бог потом рассортирует...