Igor Karpov wrote:
> Ну тогда попробую еще предложить pl.dir
> из http://lua-users.org/wiki/FileSystemOperations

по сути это тоже отдельный кусок. даже два.

один - на C:
https://github.com/downloads/keplerproject/luafilesystem/luafilesystem-1.5.0.tar.gz

второй - уже на lua:
http://luaforge.net/frs/download.php/4463/pl.0.8b.zip

после сборки и установки lfs и установки pl уже можно использовать
функции из pl.dir

но для получения возможности легче отключать отдельные наборы правил в
rspamd это уже скорее всего слишком.

проще заказать Всеволоду еще одну функцию :)

просто изначально отключать отдельные правила было хлопотно. нужно было
найти в файлах в /usr/local/etc/rspamd/lua/regexp нужные правила,
закомментировать их, потом найти в /usr/local/etc/rspamd.xml, также
закомментировать их, потом уже перегружать rspamd.

после же доработок стало возможным описывать отдельные наборы (по сути
просто группы) правил в отдельных файлах, которые просто могут быть
подключены с помощью dofile().

для подключения пользовательских файлов с наборами правил в
/usr/local/etc/rspamd/lua/rspamd.lua было добавлено опциональное
включение файла /usr/local/etc/rspamd/lua/rspamd.local.lua:

if file_exists('rspamd.local.lua') then
        dofile('rspamd.local.lua')
end

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

так вот свои правила уже можно включать в этот rspamd.local.lua. либо
непосредственно описывать их в этом файле, либо с помощью dofile()
инклудить отдельные файлы с отдельными наборами.

но т. к. закомментировать один dofile() в rspamd.local.lua на много
проще, чем комментировать правила в файле с ними и потом еще
комментировать описания этих правил в rspamd.xml, то похоже, что
актуальность проблемы получения средствами lua списка файлов по маске
уже достаточно низка.

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

local function file_exists(filename)
        local file = io.open(filename)
        if file then
                io.close(file)
                return true
        else
                return false
        end
end

вот так вот, как оказалось, придется еще велосипеды изобретать :)

> Если снова не то, перестаю умничать :)

да можно и поумничать :)


> 2011/2/28 Vsevolod Stakhov <vsevo...@freebsd.org
> <mailto:vsevo...@freebsd.org>>
> 
>     On 02/28/2011 10:09 PM, Igor Karpov wrote:
> 
>         Прежде всего, спасибо за столь интересный и объемный пост. :)
> 
> 
>            я не нашел, как в lua получить список файлов по маске.
>            можно было бы реализовать подключение правил из всех файлов из
>            определенного каталога.
> 
>         Я ни разу не программист на lua, но вот что дает беглый поиск:
> 
>            *To grab the filenames of all *.txt files in a given
>         directory, this
>            seems to be the most effective way:*
>            *allfiles=murgaLua.readDirectory("/home/mik")*
>            *for i=1,table.maxn(allfiles) do*
>            *if string.find(allfiles[i],"%.txt$") then print(allfiles[i])
>         end*
>            *end*
>            *
>            *
>            *Apparently table.getn(table) has the same result as
>         table.maxn(table)*
>            *I dunno if one is actually better than the other.*
>            *
>            *
>            *http://www.murga-projects.com/forum/showthread.php?tid=43*
> 
>         Подойдет? :)
> 
> 
>     Ну, это вызов некой C функции объекта. Из си, разумеется, все
>     сделать очень просто. Если будет потребность, добавлю :)
> 
>     -- 
>     Vsevolod Stakhov
> 
> 
>     _______________________________________________
>     Exim-users mailing list
>     Exim-users@mailground.net <mailto:Exim-users@mailground.net>
>     http://mailground.net/mailman/listinfo/exim-users
> 
> 
> 
> 
> _______________________________________________
> Exim-users mailing list
> Exim-users@mailground.net
> http://mailground.net/mailman/listinfo/exim-users


-- 
Best wishes Victor Ustugov   mailto:vic...@corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC

_______________________________________________
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users

Ответить