_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Vladimir Djuzheff 2:5030/297.31 29 Aug 98 01:08:28
Subj : samba
________________________________________________________________________________
From: Vladimir.Djuzheff@p31.f297.n5030.z2.fidonet.org (Vladimir Djuzheff)
Reply-To: dozen@rccs.spb.ru
hi.
Такое дело -- написал я расширение к samba. Предназначено оно было
изначально для прозрачной распаковки gz. Работает оно примерно так:
в smb.conf:
----------------------------------------------
[doc]
...
on open = /usr/local/bin/gz.on-open
on close = /usr/local/bin/gz.on-close
on mangle = #cutgz
----------------------------------------------
процесс:
1. юзер читает содержимое каталога:
имена файлов, имеющих расширение .gz, отдаются
ему без этого расширения
2. юзер открывает файл:
самба запускает скрипт gz.on-open и передает ему в командной
строке имя файла; скрипт распаковывает файл в /tmp и
возвращает имя временного файла.
3. юзер работает с временным файлом
никаких отличий юзер не видит, кроме несоответствия размеров
файла и его размера по каталогу
4. юзер закрывает файл
самба запускает gz.on-close, который запаковывает временный
файл обратно, если это необходимо (если были внесены изменения)
К моменту написания данного письма это дело отработало под нагрузкой
неделю (два ресурса: один read-only (сокращение в размерах по du -s
с ~300М до ~200М), и один read-write (с ~300М до ~30М ;) )).
Выяснилось, что этот интерфейс (samba scripting interface) можно
использовать не только для gz. В частности, мне пришли в голову
следующие возможные применения:
1. Прозрачная перекодировка в кодировку клиентской машины.
2. Логгинг.
3. Формы (неизменяемый документ, каждая запись которого создает новый
документ).
4. Автоматическое ведение истории изменения документов с помощью
revision control system (обрабатываются записываемые файлы).
5. Динамические документы (при открытии файла скрипт генерирует его
содержимое).
6. Конвертить создаваемые и входящие Word-документы в HTML ;)
Я постарался как можно меньше вмешиваться в исходный код samba,
поэтому весь код вынесен в отдельный каталог, и, если в Makefile
не указывать -DSCRIPTING, получится оригинальная 1.9.18p8.
Это хозяйство лежит на http://www.admiral.ru/~dozen/samba.scripting.html
В комплекте есть дока на ломанном английском.
Перед прикладыванием diff'а нужно создать два каталога --
source/scripting/ и source/scripting/gz. В Makefile добавить опцию
-DSCRIPTING
В samba.team я это уже послал, но через два дня адрес, с которого я
это сделал, по не зависящим от меня причинам перестал существовать.
Кроме того, они там очень заняты, и долго не отвечают.
Жду баг-репортов, комментариев, и прочее на dozen@rccs.spb.ru
dozen
--- ifmail v.2.9
* Origin: живи и дай умереть (2:5030/297.31@fidonet)