Привет всем!
Имеется принт-сервер на базе 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 например)
Подскажите куда копать
настройка CUPS
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- рядовой
- Сообщения: 21
- Зарегистрирован: 2007-09-20 9:37:45
Re: настройка CUPS
Сам разобрался.
Возможности cups безграничны
Если кому интересно, пишите в личку.
Возможности cups безграничны
![Smile :)](./../images/smilies/smile.gif)
Если кому интересно, пишите в личку.
- BlackCat
- прапорщик
- Сообщения: 469
- Зарегистрирован: 2007-10-16 22:40:42
Re: настройка CUPS
А можно в форум, я думаю многим будет интересна данная тема.
-
- рядовой
- Сообщения: 21
- Зарегистрирован: 2007-09-20 9:37:45
Re: настройка CUPS
Всё просто.BlackCat писал(а):А можно в форум, я думаю многим будет интересна данная тема.
Постановка задачи:
- Реализовать авторизациию пользователей.
- Запретить печать test pages.
- Создать собственную страницу разделитель.
- ... и ещё что-нибуть интересное
- Используя веб-сервер, идущий с cups, создан простенький сервис.
Теперь веб-интерфейс (localhost:631) используется НЕ для администрирования, а для информ. поддержки!
Все пользователи (с любого ip) могут заходить на главную страницу ( http://host:631)
Главная страница изменена в корне. Теперь вместо "Intoduction to Cups", там расположена краткая информация о работе принт-сервера.
На вкладке Help расположена информация об установке принтера, правила пользования и т.д.
Зачем я это рассказываю?
Требовалась информ. поддержка для принт-сервера.
Мне показалось интересным использовать cups-web-server в таком ракурсе.
Более того:- Не нужно устанавливать apache. Всё уже есть.
Не нужно заниматься разработкой сайта. Дизайн уже есть.
Cups-web-server использует интересную фишку для динамических страниц. Добавление новой страницы ОЧЕНЬ просто.
- Не нужно устанавливать apache. Всё уже есть.
- Только зарегистрированные пользователи имеют право на печать. Авторизация по ip (не хотел возится с паролями)
- Запрещена печать test pages.
- Создана пустая страница-разделитель. Изучен формат этих страниц.
Я остановился на пустой странице разделителе. При малой печати бумага и тонер зря расходуются.
Администрирование ведётся либо через 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 и т.д.
- ./cgi-bin -- скрипты (вернее скомпиленные программы) для вкладок главной страницы (admin.cgi classes.cgi help.cgi jobs.cgi printers.cgi)
- logs: /var/log/cups
- access_log -- лог по запросам к веб-серверу
- page_log -- кто, где, когда, сколько распечатал
- error_log -- no comments
Он достаточно прост.
Разрешить всем просмотр главной страницы:
Код: Выделить всё
<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>
И ещё. У меня возникла проблема. 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 -->
Так можно создавать древовидные структуры, не задумываясь о ссылках. (Я не занимаюсь 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.
Замечу, что cups использует свои переменные для общения с принтером (не знаю как по-другому выразится).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.
Например следующий код создаёт кнопку для включения/выключения принтера:
(из 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 нужно создать файл, состоящий хотя бы из одного пробела
![Rolling Eyes :roll:](./../images/smilies/rolleyes.gif)
Включить баннер можно через веб-интерфейс (Printers-->Set Printer Options-->Banners) или изменив строчку в файле /etc/cups/printer.conf:
Код: Выделить всё
JobSheets empty-banner none
- Alex Keda
- стреляли...
- Сообщения: 35464
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация: