drwebモジュールの内容

1.機能

このモジュールは次の機能を提供します。

1.1.LuaプログラムからのメッセージをDr.Web for UNIX File Serversコンポーネントログに保存するための機能:

log(<level>, <message>)<message>文字列をDr.Web for UNIX File Serversログ<level>レベル(必要なレベルは、「debug」「info」「notice」「warning」「error」を使用して定義します)で書き込みます。

debug(<message>)<message>文字列をDr.Web for UNIX File ServersログDEBUGレベルで書き込みます。

info(<message>)<message>文字列をDr.Web for UNIX File ServersログINFOレベルで書き込みます。

notice(<message>)<message>文字列をDr.Web for UNIX File ServersログNOTICEレベルで書き込みます。

warning(<message>)<message>文字列をDr.Web for UNIX File ServersログWARNINGレベルで書き込みます。

error(<message>)<message>文字列をDr.Web for UNIX File ServersログERRORレベルで書き込みます。

1.2.Luaプロシジャの同期管理のための機能:

sleep(<sec.>)はこのLuaプロシジャインスタンスの実行を指定された秒数で一時停止します。

async(<Lua function>[, <argument list>])は、指定された関数の非同期開始を起動し、指定された引数リストに転送します。async関数呼び出しはすぐに完了し、戻り値(Futureテーブル)を使用すると、<Lua function>の結果を取得できます(まだ実行が完了していない場合は、完了するまで待機している可能性があります)。

1.3.IPアドレスをIpAddressテーブルとして表示するための機能:

ip(<address>は、IpAddressテーブルの形式で<address>文字列として送信される、IPアドレスを指定します。IPv4またはIPv6アドレスのいずれかを使用できます。

1.4.テキストファイルから外部データをアップロードするには:

load_set(<file path>は、指定されたテキストファイルのコンテンツからtrue値を含むテーブルを生成し、ファイルから読み取られた文字列はキーとして使用されます。空の文字列と空白文字のみで構成される文字列は無視され、テーブルには含まれません。

load_array(<file path>は、指定されたテキストファイルのコンテンツから文字列の配列を生成します。空の文字列と空白文字のみで構成される文字列は無視され、配列には含まれません。

2.テーブル

2.1.Futureテーブルは、async関数を使用して関数を実行した後の保留中の結果を表します。テーブルには以下のフィールドを含みます。

フィールド

説明

データタイプ

wait

async関数を使用して開始した関数の結果を返す関数。関数がまだ実行を完了していない場合は、完了を待って結果を返します。waitが呼び出される前に関数が完了した場合、結果はすぐに返されます。開始された関数が失敗した場合、wait呼び出しは同じエラーを生成します。

機能

無効になったメタメソッドなし

2.2 IpAddressテーブルはIPアドレスを表します。以下のフィールドを含みます。

フィールド

説明

データタイプ

belongs

指定したサブネット(IPアドレス範囲)のIpAddressテーブルに保存されているIPアドレスの所属を確認する関数。

<IP address>または<IP address>/<mask>のような文字列を唯一の引数として受け取ります。ここで、<IP address>はホストアドレスまたはネットワークアドレス(「127.0.0.1」など)、<mask>はサブネットワークマスク(「255.0.0.0」などのIPアドレスとして、または「8」などの数値形式で指定できます)です。

ブール値を返します。

trueは、アドレスが指定されたアドレスの少なくとも1つと等しいか、指定されたサブネット(IPアドレスの範囲)の少なくとも1つに属していることを示します。

false - それ以外の場合。

機能

無効になったメタメソッド:

__tostringは、文字列内のIpAddressを変更する関数です。例:「127.0.0.1」(IPv4)または「::1」(IPv6)

__concatは、IpAddressを文字列に結合する関数です。

__eqは、2つのIpAddressが等しいことを確認するための関数です。

__bandは、マスクを適用するための関数(例:dw.ip('192.168.1.2') & dw.ip('255.255.254.0'))です

3.例

3.1.非同期的に開始される手順によって生成される、ログへの出力メッセージ:

local dw = require "drweb"

-- この関数は2秒間待機して文字列を返します。
-- 引数として受信されます
function out_msg(message)
 dw.sleep(2)
 return message
end

-- 「メイン」関数
function intercept(ctx)
 -- NOTICEレベルでDr.Web for UNIX File Serversログに文字列を出力します
 dw.notice("Intercept function started.")

 -- out_msg関数の2つのコピーを非同期で起動します
 local f1 = dw.async(out_msg, "Hello,")
 local f2 = dw.async(out_msg, " world!")

 -- out_msg関数のコピーの完了を待機中です
 -- out_msgとその結果をログに出力します
 -- Dr.Web for UNIX File Servers ログにデバッグレベルで出力します
 dw.log("debug", f1.wait() .. f2.wait())
end

3.2.指定されたスケジュールに従って定期的に開始する手順を作成する:

local dw = require "drweb"

-- Futureテーブルをfutureグローバル変数で保存し、
-- Luaのガベージコレクターにより
-- 計画されたタスクが破壊されないようにします
future = dw.async(function()
  while true do
     -- 毎日、次のメッセージがログに表示されます
     dw.sleep(60 * 60 * 24)
     dw.notice("A brand new day began")
  end
end)

3.3.文字列のIPアドレスを変更する:

local dw = require "drweb"

local ipv4 = dw.ip("127.0.0.1")
local ipv6 = dw.ip("::1")
local mapped = dw.ip("::ffff:127.0.0.1")

drweb.lookupモジュールの内容

1.機能

このモジュールは次の機能を提供します。

lookup(<request>, <parameters>)はDr.Web LookupDモジュールから利用できる外部ストレージからデータを要求します。<request>パラメータは、Dr.Web LookupD設定内のセクション(文字列<type>@<tag>)に対応している必要があります。<parameters>引数はオプションで、リクエストを生成するために使用される置換を表します。これらのパラメータはテーブルとして設定されます。このテーブルのキーと値は文字列でなければなりません。この関数は、リクエストの結果である文字列の配列を返します。

check(<checked string><request><parameters>は、Dr.Web LookupDモジュールを介して利用できる外部リポジトリで<checked string>が見つかった場合にtrueを返します。引数<request>および<parameters>は、lookup関数の引数と同じです(上記を参照)。<checked string>引数は、文字列または__tostringメタメソッドを持つテーブル(つまり、文字列にフォーマットできる)であると想定されます。

2.例

データソースLookupD.LDAP.usersから取得されたユーザーリストのログへの出力:

local dw = require "drweb"
local dwl = require "drweb.lookup"

-- 「メイン」関数
function intercept(ctx)
 -- NOTICEレベルでDr.Web for UNIX File Serversログに文字列を出力します
 dw.notice("Intercept function started.")

 -- リクエスト結果をDr.Web for UNIX File Serversログへ出力
 -- 'ldap@users’データソースへ
 for _, s in ipairs(dwl.lookup("ldap@users", {user="username"})) do
   dw.notice("Result for request to 'ldap@users': " .. s)
 end

end