AnyKiosk (киоск-мод для всяко-разных софтин)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

AnyKiosk

Сообщение Denjs »

AnyKiosk - утилита простой настройки различных программ в режим "киоска" (kiosk-mode) -
режим с заблокированными от изменения настройками и ограниченной функциональностью.

Просто отметье галочками нужные программы и нажмите "применить".


________________________
* Видео 1, Видео 2
( PS: немного устаревшие в части команды - надо запускать anykiosk от root)

* Сайт: http://developer.berlios.de/projects/anykiosk/
* Git-репозиторий: http://developer.berlios.de/git/?group_id=12174
* бинарники для Alt-Linux 5.x основанных дистрибутивов: http://developer.berlios.de/project/showfi...?group_id=12174 (уверен, и с ПСПО5 тоже будет работать)

________________________
По итогам темы защита от вандализма. Блокировка изменения настроек.
Появилась питоновская софтина, которая сегодня наконец опакечена для Alt-Linux 5.x (и, уверен, будет работать на всех alt-linux основанных дистрибутивах, в том числе и на ПСПО5).

Заведен собственный сайт anykiosk.berlios.de, собственный git-репозиторий и даже есть видюшки-скринкасты

И так, встречайте. AnyKiosk - программа простой и быстрой настройки системы в киоск-мод.

Ожидаем от Skull включения в "Альт Линукс 5.0.2 Школьный" (надеюсь я успел опакетить вовремя).

Благодарю всех, участвовавших в обсуждении темы, особенно minoru-kun(коему предлагаю зарегистрироваться на developers.berlios de) и DoctorORZ

________________________
Как использовать
УСТАНОВКА
1) скачать пакет. Скажем anykiosk-0.0.2.20101210-alt1.noarch.rpm
2) установить его:

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

# rpm -Uhv ./anykiosk-0.0.2.20101210-alt1.noarch.rpm


ИСПОЛЬЗОВАНИЕ
1) Запустить терминал (командную строку);
2) Получить права root через команду su ;
3) запустить anykiosk дав одноименную команду ;

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

# anykiosk

4) Отметьте галочками, что надо заблокировать, (оставьте их снятыми там где надо снять блокировку), и нажмите Apply.
Всё.

Сейчас поставляется только плагин для FireFox 3.5 (c 3.6 тоже работает)

Для удаления запустите "# rpm -e anykiosk"

________________________
Версия 0.0.2 поставляется с плагином для FireFix 3.6.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: AnyKiosk

Сообщение sash-kan »

Denjs писал(а):
14.12.2010 20:10
киоск-мод для всяко-разных софтин
Denjs писал(а):
14.12.2010 20:10
программа простой и быстрой настройки системы в киоск-мод

желательно бы в заголовке (или хотя бы внутри поста) вместо словосочетания «киоск-мод» написать по-русски, для чего программа предназначена. ведь тот, кому она действительно нужна, и словей-то таких не знает.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: AnyKiosk

Сообщение Denjs »

Ваши варианты? заголовка и описания? софтинка-то в разделе "Проекты Нашего Форума" ;) как решим так и будет)

в описании пакета сейчас написано следующее:
%description
AnyKiosk - a Point-and-Click tool for system administrators
to enable KIOSK features for various software.
0.0.2beta release includes only FireFox 3.6 plugin.

%description -l ru_RU.UTF-8
AnyKiosk - утилита настройки различных программ в режим киоска -
режим с заблокированными от изменения настройками и ограниченной
функциональностью. Просто отметье галочками нужные программы и
нажмите "применить".
Версия 0.0.2 поставляется с плагином для FireFix 3.6.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
DoctorORZ
Сообщения: 46

Re: AnyKiosk

Сообщение DoctorORZ »

Спасибо, на днях буду тестировать (времени маловато сейчас).
А теперь вопрос - а без привязки к дистрибутиву можно это сделать (в идеале и без привязки и OS ;))? Для начала хотелось бы всего 2 вещи: заблокированные пункты в браузере Firefox "правка"-"настройки" и блокировка на удаление (и установку) дополнений-расширений-тем. В идеале - блокировка через парольную защиту (знаешь пароль - можешь там лазить и менять что хошь). Нужно для осуществления адекватной настройки фильтрации контента (для повседневной работы школьникам вполне хватит Adblocka с подпиской, CensureBlock дополнения и некоторых других настроек (касается хранения паролей, истории посещений и т.п.)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: AnyKiosk

Сообщение Bizdelnick »

DoctorORZ писал(а):
14.12.2010 23:03
Нужно для осуществления адекватной настройки фильтрации контента (для повседневной работы школьникам вполне хватит Adblocka с подпиской, CensureBlock дополнения и некоторых других настроек (касается хранения паролей, истории посещений и т.п.)

Что ж Вы всё по-человечески сделать-то не хотите? Неужели не понимаете, что будете бегать и настраивать каждый комп (точнее каждого юзера на каждом компе) вместо того, чтобы один раз осилить настройку прокси и забыть это, как страшный сон?
Мануалов тем более понаписано выше крыши. Вот, нагуглил за полторы секунды: http://freeschool.nnov.ru/node/12
Обратите внимание:
Во всех школах на территории Российской Федерации обязательным требованием является установка Контент-Фильтра для фильтрации сайтов "несовместимых с задачами образования".
И если Вы боитесь прокурорских проверок, таки нужно этим обязательным требованиям соответствовать, а не изобретать костыли.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: AnyKiosk

Сообщение Denjs »

DoctorORZ писал(а):
14.12.2010 23:03
Спасибо, на днях буду тестировать (времени маловато сейчас).
А теперь вопрос - а без привязки к дистрибутиву можно это сделать (в идеале и без привязки и OS ;))?

И да и нет.
да - потому что настройки кроссплатформенных программ везде похожи, нет - потому что в каждом конкретном дистрибутиве программа будт располагаться в своем каталоге.
В общем это скорее всего будетработать много где, но надо проверять в каждом конкретном случае.

Для начала хотелось бы всего 2 вещи: заблокированные пункты в браузере Firefox "правка"-"настройки"

Посмотрите что есть в текущем плагине. Там набор настроек окторый был озвучен в http://tvxlc.livejournal.com/6943.html
Если что-то ещё нужно - озвучивайте из того что есть внастройках фокса (смотреть в меню About:config в браузере)

и блокировка на удаление (и установку) дополнений-расширений-тем.

для какого графического окружения? c XFCE4? KDE4? GNOME?
назовите используемый вами дистрибутив и графическое окружение.

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

Пароль? собственно что бы запустить программу (и получить возможность активировать/снять kiosk-mode) - вам нужен пароль рута. Вы заходите в консоль, переходите в режим рута через "su" и только тогда получаете возможность запустить anykiosk.
Но не забывайте, что FireFox принимает новые настройки только после своего перезапуска .
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: AnyKiosk

Сообщение sash-kan »

Denjs писал(а):
14.12.2010 22:10
Ваши варианты?
да хоть из заголовка и первого же поста темы защита от вандализма. Блокировка изменения настроек. можно почерпнуть достаточно вариантов.

upd. поправил url. а то не ту ссылку скопировал.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
DoctorORZ
Сообщения: 46

Re: AnyKiosk

Сообщение DoctorORZ »

Bizdelnick писал(а):
14.12.2010 23:20
Что ж Вы всё по-человечески сделать-то не хотите? Неужели не понимаете, что будете бегать и настраивать каждый комп (точнее каждого юзера на каждом компе) вместо того, чтобы один раз осилить настройку прокси и забыть это, как страшный сон?

Все ученики работают на любом ученическом ПК под логином User. Все учителя работают на своем собсном рабочем месте под своим логином. Я работаю на любом ПК под логином admin. ПК в школе менее 50 (в классах ИВТ 12 и 10 идентичных ПК. Пользоваться Clonezilla я умею). Покажите, где у меня "бегать и настраивать" будет? Тем более, что я устал повторять - нету у меня железа под быстрый и надежный прокси. Н Е Т У ! Да и не решает прокси всех тех задумок, что есть у меня. Прокси, конечно, нужен, но появится тогда, когда будет железо, не раньше.
Bizdelnick писал(а):
14.12.2010 23:20
Во всех школах на территории Российской Федерации обязательным требованием является установка Контент-Фильтра для фильтрации сайтов "несовместимых с задачами образования".
И если Вы боитесь прокурорских проверок, таки нужно этим обязательным требованиям соответствовать, а не изобретать костыли.

То, что предлагается школам в виде этого Контент-фильтра прокуроров не удовлетворяет. Ну, вы бы хоть интернет почитали - об этом на каждом углу пишется. И потому, что угодить проверке, приходится изобретать своё.
Но, тема не об этом, поэтому или в другую давайте перемещаться или в приват.

Denjs писал(а):
14.12.2010 23:56
и блокировка на удаление (и установку) дополнений-расширений-тем.

для какого графического окружения? c XFCE4? KDE4? GNOME?
назовите используемый вами дистрибутив и графическое окружение.

ПСПО5** и Lubunta 10.4 Графическое окружение умолчальное.

Давайте я вам опишу своё видение ситуации, а вы сами подумаете, что и где поправить (и можно и нужно ли).
Итак, я настроил ПК, установил нужные программы. Завел пару пользователей - User (для учеников) и тьютер (для учителя). Захожу под юзером, настраиваю ему браузер (снять запоминание истории, запрет запоминания паролей, изменить стартовую страницу, настроить поиск на школьный яндекс, установить несколько расширений и чуток подправить внешний вид). Включить для него киоск-моде. Выхожу - захожу под тьютером, делаю аналогичные действия, но там что-то своё будет. Включаю киоск-моде для учителя. Выхожу, выключаю ПК, устанавливаю в комп. класс.
Начинается урок, ученик заходит под собой, пытается удалить плагины - фиг вам. Лезет поменять стартовую страничку - отлуп. Расстраивается и начинает работать в том направлении, что просит учитель. Урок закончился, ученик вышел из системы. В класс входит учитель, которому нужно поработать на ПК. Заходит под тьютером, делает работу, уходит. Потом снова урок и так далее. Потом выясняется, что вышли обновления для плагинов и нужно их установить. Я захожу под админом и .... А вот тут, пожалуйста, продолжите - что я должен буду сделать? Что я написал не так или не понял в работе киоска?
И нельзя ли обойтись без пароля рута в консоли? Лезет человек менять что-то запрещенное - ему окошко "введите пароль". Не знаешь - отдыхай. Знаешь - действуй. Это принципиально невозможно? Просто хочется удобства во всём :)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: AnyKiosk

Сообщение sash-kan »

DoctorORZ писал(а):
15.12.2010 11:17
настраиваю ему браузер
DoctorORZ писал(а):
15.12.2010 11:17
делаю аналогичные действия
оба пункта — излишни. настройте один раз на чистой машине, заархивируйте и сохраните домашние каталоги ученика и учителя, и на новой машине всего лишь разворачивайте сохранённый архив.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
DoctorORZ
Сообщения: 46

Re: AnyKiosk

Сообщение DoctorORZ »

Да, спасибо. Как то не подумал ;)
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux
Контактная информация:

Re: AnyKiosk

Сообщение Skull »

Нужно нормальные описания параметров, прошу с этим помочь. Мы совместно собрали пакет, он готов к включению в Альт Линукс 5.0.2 Школьный.
Мой Git: http://git.altlinux.org/people/cas/packages/anykiosk.git

Отдельная благодарность Denjs за то, что он дошёл этот путь до конца.
Skull
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux
Контактная информация:

Re: AnyKiosk

Сообщение Skull »

У себя в git сделал исправления:
- дал нормальные названия опций
- сделал таблицу из одного столбца с флажками перед текстом
- опции выводятся по одной на строку
- программа работает только под root (под пользователем появляется окно, в ALT Linux под пользователем через consolehelper появляется окно аутентификации root)

Раскрасить всё это дело бы и добавить строку поиска параметров (по названию и значению). Пусть Denjs посмотрит (код работает) и я опакечиваю в ALT Linux и в школьные дистрибутивы.

Вид окна:
anykiosk.png
Skull
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: AnyKiosk

Сообщение sash-kan »

Skull писал(а):
15.12.2010 20:18
Мой Git: http://git.altlinux.org/people/cas/packages/anykiosk.git
опечатка:

Shell

diff --git a/anykiosk.spec b/anykiosk.spec index 592b8a5..45f6710 100755 --- a/anykiosk.spec +++ b/anykiosk.spec @@ -12,7 +12,7 @@ License: GPL Group: System/Configuration/Other Vendor: UnixForum.org (Denjs & Minoru-kun) -Url: http://anykiosk.belios.de +Url: http://anykiosk.berlios.de Packager: Denjs <denjs@users.berlios.de> Source: anykiosk-0.0.2.20101210.tar.gz



upd. посмотрел: актуально и для апстрима.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: AnyKiosk

Сообщение Denjs »

Что сейчас делаю:
- добавляю поддержку "значения" опции.
Т.е. опция становится не просто фичей а именно блокируемой опцией которую можно заблокировтаь в разные значения.
Галочка при этом становится признаком "заблокированности". Это нужно потому что тому же DoctorORZ нужно заблокировать опцию "использовать прокси"
в значении использовать, а текущий механизм предлагает делать только "не использовать прокси".

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

Редактирования опций пока нет, но можно четко понять, что во что будет выставлено и заблокированно.
Любой может высветить about:config и понять по содержимому третьей колонки, что вообще может быть заблокированно в AnyKiosk, а что нет.

- некоторые опции перевел в двухстрочный формат.
Автопереноса строк в ячейках виджета QTableWidget нет, а описание опции слишком длинное. Надо было что-то делать....

- изменил структуру описания опции в плагине.
Теперь есть место для описания типа и значения по умолчанию.

- пофиксил очепятку
- добавил установку прав, групп и владельцев при make install

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

Это все развито от правок Skull
UPD: все затолкал на git://git.berlios.de/anykiosk (help см http://developer.berlios.de/git/?group_id=12174 )
(правда, простите - там в одной ревизии все вперемешку - и объединение и доработка... )



В связи с этим нужно переработать описания опций, что бы они соответствовали логике выставления значений и их блокирования.
Вложения
anykiosk.png
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
DoctorORZ
Сообщения: 46

Re: AnyKiosk

Сообщение DoctorORZ »

Вчера на районном совещании замов по ИКТ озвучил данную разработку. Возможно скоро будут новые тестеры и посетители.
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux
Контактная информация:

Re: AnyKiosk

Сообщение Skull »

DoctorORZ писал(а):
16.12.2010 16:40
Вчера на районном совещании замов по ИКТ озвучил данную разработку. Возможно скоро будут новые тестеры и посетители.
anykiosk уже в p5 и Sisyphus. Завтра можете скачивать на школьные дистрибутивы. Также он войдёт в Альт Линукс 5.0.2 Школьный.

P.S. Я же предлагал Denjs не делать ставку на ПСПО5. :)
Skull
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux
Контактная информация:

Re: AnyKiosk

Сообщение Skull »

Denjs писал(а):
16.12.2010 15:47
Редактирования опций пока нет, но можно четко понять, что во что будет выставлено и заблокированно.
Денис, может заведём TODO, где будем записывать пожелания. Я хотел бы поиск по ключам и описаниям и описание параметров в виде отдельного текстового файла, чтобы можно было бы правила пакетами доставлять.
- некоторые опции перевел в двухстрочный формат.
Автопереноса строк в ячейках виджета QTableWidget нет, а описание опции слишком длинное. Надо было что-то делать....
http://stackoverflow.com/questions/2370014...qtreewidgetitem
Вариантов масса.
- добавил установку прав, групп и владельцев при make install
Может, версию тремя цифрами указывать? Предлагаю в следующей версии помещать исполняемый код в /usr/lib/anykiosk, а в /usr/share/apps/anykiosk хранить переводы. /tmp можно задейстовать системный.
Это все так же необходимо для дальнейшего ввода "профилей" - сохраненых наборов опций и зафиксированных значений.
Думая над расширяемой структурой. Может, XML или JSON.
простите - там в одной ревизии все вперемешку - и объединение и доработка... )
Это мелочи.

P.S. Ничего, что я выложил в Сизиф и p5 свои правки, не стал дожидаться отмашки? А то ты изменений нагородил на новую версию (0.1.0).
Skull
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: AnyKiosk

Сообщение Denjs »

Skull писал(а):
16.12.2010 19:30
P.S. Я же предлагал Denjs не делать ставку на ПСПО5. :)

Ставка и веха-минимальной-работоспособности - разные вещи ;)
с чего-то надо было начать.

Skull писал(а):
16.12.2010 19:37
Denjs писал(а):
16.12.2010 15:47
Редактирования опций пока нет, но можно четко понять, что во что будет выставлено и заблокированно.
Денис, может заведём TODO, где будем записывать пожелания. Я хотел бы поиск по ключам и описаниям и описание параметров в виде отдельного текстового файла, чтобы можно было бы правила пакетами доставлять.

Feature requests тут: http://developer.berlios.de/feature/?group_id=12174


Может, версию тремя цифрами указывать? Предлагаю в следующей версии помещать исполняемый код в /usr/lib/anykiosk, а в /usr/share/apps/anykiosk хранить переводы. /tmp можно задейстовать системный.

Fixed.

Это все так же необходимо для дальнейшего ввода "профилей" - сохраненых наборов опций и зафиксированных значений.
Думая над расширяемой структурой. Может, XML или JSON.
Как именно - не важно. Простой CSV подойдет. Под профилем я имел в виду наборы выбранных галочек, и значения опций к этим галочкам сопоставленные.
Но для начала надо научить машину править эти самые значения.
Вложения
anykiosk.png
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux
Контактная информация:

Re: AnyKiosk

Сообщение Skull »

Denjs писал(а):
16.12.2010 20:15
Как именно - не важно. Простой CSV подойдет. Под профилем я имел в виду наборы выбранных галочек, и значения опций к этим галочкам сопоставленные.
Тогда кладётся в каталог данных профиль по умолчанию

Что ты за ужас сделал на скриншоте?!!! Никогда так больше не делай!

Есть множество отлаженных решений. В данном случае можно было под списком сделать поля с названием, опцией, значением/выбором для добавления и удаления параметра. Или во втором столбце сделать выпадающий список.
Skull
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: AnyKiosk

Сообщение Denjs »

Постфактум сообщаю о доработках в версии в git-репозитории от 2010.12.26:

* изменения в плане итерфейса и описания возможных опций.
Теперь при двойном клике всплывает окно с выбором одной опции из списка, или вводом значения строки или числа.
* введена начальная поддержка .ini файлов и поддержки различных дистрибутивов.
сейчас есть глобальный ini-файл (рабочие каталоги программы и профиль дистрибутива), и ini-файлы плагинов, с несколькиим секциями содержащими варианты значений каждой настройки для каждого из возможных дистрибутивов.
* плагины перемещены в под-папку plugins (но скрипты пакетирования я кажется ещё не правил)

После добавления возможности сохранить/восстановить набор опций - сделаю новую версию пакета.
Вложения
anyk.2010.12.26.png
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
ska
Сообщения: 202
ОС: ALTLinux School Master

Re: AnyKiosk

Сообщение ska »

Установил, запустил, в списке программ вижу только ff,
понял, это только для браузера
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: AnyKiosk

Сообщение Denjs »

ska писал(а):
17.03.2011 08:56
Установил, запустил, в списке программ вижу только ff,
понял, это только для браузера

Вы правы только частично. ЭТО не тольок для браузера. Но сейчас есть только один плагин для FireFox.

Что вам нужно от AnyKiosk? т.е. конкретнее - какое ПО и какие настройки блокировать?
думаю найдутся товарищи написать плагин для вас. Я к сожалению пока загружен работой ...
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Ответить