フィルタリングルール
2024年8月22日
ID 171652
フィルタリングルールは、フィードユーティリティが元のフィードファイルのフィルタリングに使用する基準です。
フィルタリングルールは、Filters
要素でフィードごとに指定します。各フィルタリングルールは Field
要素で設定します:フィールド名は name
要素で、フィルタリング基準は value
属性で指定します。フィールドには、そのフィールドに関連したフィルタリングルールを 1 つだけ指定できます。2 つの Field
パラメータを 1 つのフィールドに指定することはできません。
メールタイプのフィードは、メールの件名とメールの送信者によってフィルタリングされます。下の「メールタイプのフィードのフィルタリング」セクションを参照してください。
次に、フィードのフィルタリングルールの例を示します。これらのルールでは、4
または 5
に相当する popularity
フィールド、および .ru
または .com
を含んだ mask
フィールドのあるレコードしか出力フィードに含められないことを指定します。
<Feed> ... <Filters> <Field name="popularity" value="4;5"/> <Field name="mask" value=".ru;.com"/> </Filters> ... <Feed> |
フィードユーティリティは、「value」
属性の先頭または末尾のスペース記号、またはタブ記号を無視します。
出力ファイルには、指定したすべての基準に一致するレコードのみが含まれています。フィールドのフィルタリング基準が指定されていても、そのフィールドがレコードにない場合、フィードユーティリティはこのレコードを出力ファイルに含めません。
数値のフィルタリング基準の定義
数値は整数です。10 進値はサポート対象外です。
数値フィールドのフィルタリング基準を次のように定義できます:
value="*"
フィールドにはどのような値も指定できます。
たとえば、
<Field name="type" value="*"/>
は、type
フィールドにどのような値でも指定できることを意味します。value="%value%"
真数値です。フィールドは
%value%
と同じである必要があります。たとえば、
<Field name="popularity" value="1"/>
の場合、popularity
フィールドは1
と同じである必要があります。value="%value1%;%value2%"
複数の数値の 1 つです。フィールドには、指定の数値(
%value1%
または%value2%
)の 1 つを指定できます。「;」
を区切り号として使用すると、追加の値を指定できます。たとえば、
<Field name="popularity" value="1;3"/>
の場合、popularity
フィールドは1
または3
である必要がありますが、2
にすることはできません。value="[%value1%;%value2%]"
数値の範囲です。
フィールドには、指定範囲
%value1%
~%value2%
の値の 1 つを指定できます。たとえば、
<Field name="popularity" value="[1;3]"/>
の場合、popularity
フィールドには2
を含む1
から3
の値を指定できます。value="[%value1%;*]"
またはvalue="[*;%value1%]"
数値のオープン範囲です。範囲と同じですが、アスタリスク(
*
)は、範囲が無制限であることを指定しています。たとえば、
<Field name="popularity" value="[2;*]"/>
の場合、popularity
フィールドの値を2
以上にする必要があります。
文字列のフィルタリング基準の定義
文字列フィールドのフィルタリング基準を次のように定義できます:
value="*"
フィールドにはどのような値も指定できます。
たとえば、
<Field name="mask" value="*"/>
は、mask
フィールドにどのような値でも指定できることを意味します。- value="
%string%
"フィールドには、指定の文字列を含める必要があります。
たとえば、
<Field name="geo" value="ru"/>
の場合、geo
フィールドの値に「ru」
を含める必要があります。 value="%string1%;%string2%"
指定の文字列を 1 つ以上含みます。
たとえば、
<Field name="geo" value="ru;us"/>
の場合、geo
フィールドの値には「ru」
か「us」
、または「ru」
と「us」
の両方を含める必要があります。
日付のフィルタリング基準の定義
フィードの日付値はパターン「DD.MM.YYYY」
(例:「26.04.2014」
)、パターン「YYYY-MM-DD」
(例:「2014-04-26」
)、またはパターン「MM/DD/YYYY」
(例:「04/26/2014」
)のいずれかでフォーマットします。
日付のフィールドのフィルタリング基準を次のように定義できます:
value="*"
フィールドにはどのような値も指定できます。
たとえば、
<Field name="last_seen" value="*"/>
は、last_seen
フィールドにどのような値でも指定できることを意味します。value="%date%"
フィールドには、指定の日付を含める必要があります。
たとえば、
<Field name="first_seen" value="14.10.2015"/>
の場合、first_seen
フィールドの値は、2015 年 10 月 14 日 である必要があります。value="[%date1%;%date2%]"
フィールドには、指定範囲内の日付を含める必要があります。
たとえば、
<Field name="first_seen" value="[01.02.2013;01.02.2015]"/>
の場合、first_seen
フィールドの値は 2013 年 2 月 1 日から 2015 年 2 月 1 日の間の日付である必要があります。value="[%date1%;*]"
またはvalue="[*;%date1%]"
日付のオープン範囲です。日付の範囲と同じです。つまり、
value="[%date1%;%date2%]"
となります。ただし、アスタリスク(*
)は範囲が無限であることを指定しています。たとえば、
<Field name="first_seen" value="[*;10.12.2015]"/>
の場合、first_seen
フィールドの値は 2015 年 12 月 10 日以前である必要があります。
フィールドのないレコードの除外
元のフィードファイルには、余分なフィールドがあることや、一部のフィールドがないことがあります。余分なフィールドがあるレコードの場合、フィードユーティリティは、指定のフィードのフィードルールの RequiredFields
要素で指定されたフィールドのみを含めます。一部のフィールドがないレコードの場合、フィードユーティリティは、RequiredFields
要素で指定されたフィールドが 1 つ以上あれば、そのようなレコードを出力に含めます。RequiredFields
要素で指定された一部のフィールドが元のフィードのレコードにない場合、処理済みのフィードのレコードにそれらのフィールドは含まれません。
フィールドが欠落しているレコードを出力から除外する場合は、すべての必須フィールドでフィルタリングルールを作成する必要があります。
次の例のフィードユーティリティは、popularity
フィールドか mask
フィールド、または popularity
フィールドと mask
フィールドの両方があるレコードを含めます。
<RequiredFields>popularity;mask</RequiredFields> |
popularity
と mask
の両方があるレコードのみを含める場合は、両方のフィールドのフィルタリングルールを作成します。フィールド値の基準を指定することも、アスタリスク(*
)を使用して任意の値を指定することもできます。
次の例では、両方のフィールド(mask
と popularity
)があるレコードのみが、生成されるフィードに含まれます。
<Filters> <Field name="popularity" value="*"/> <Field name="mask" value="*"/> </Filters> <RequiredFields>popularity;mask</RequiredFields> |
厳密な基準を同じように指定することができます。次の例では、5
の値を持つ popularity
フィールドと任意の値を持つ mask
フィールドのみを含めるようにフィードユーティリティに指示しています。
<Filters> <Field name="popularity" value="5"/> <Field name="mask" value="*"/> </Filters> <RequiredFields>popularity;mask</RequiredFields> |
メールタイプのフィードのフィルタリング
設定情報ファイル kl_feed_util の[MailboxConnection/Filters
]要素でフィルタリングルールを 1 つ以上指定します。この要素は任意です。
フィルタリングルール 1 つ以上を追加する場合は、[MailboxConnection/Filters/Filter
]要素で次の属性を指定します:
- field
subject
値(メールメッセージの件名)とfrom
値(メールメッセージの送信者)のいずれかまたは両方を指定します。メールサーバーは、次の 2 つのバリアントで[
From
]フィールドを保存します: sender@mail.ru または sender<sender@mail.ru>。Filter 要素のcondition
属性にmatch
がある場合は、 値はsender@mail.ru
値([From
]フィールド に sender@mail.ru がある場合)または括弧内の値([From
]フィールドに sender<sender@mail.ru> がある場合)と比較されます。 - Condition
次のフィルター条件値を設定します:
contains
(メールメッセージの値には、このフィールドの値が含まれる必要があります)not_contains
(メールメッセージの値には、このフィールドの値が含まれていない必要があります)not_contains
フィルターは、contains
フィルターよりも優先されます。比較される値では、大文字小文字が区別されます。
match
(メールメッセージの値は、このフィールドの値と等しい必要があります)not_match
(メールメッセージの値は、このフィールドの値と等しくない必要があります)
次に、メールタイプのフィードのフィルタリングルールの例を示します:
<Filters> <Filter field="from" condition="not_match">techsupport@ya.ru</Filter> <Filter field="subject" condition="contains">Best IoCs ever</Filter> </Filters> |