fluent/fluentd — pull request #56 by mazgi (2012-07-31 03:27:47+00:00)
Title: Added compression and encryption feature to forward plugin.

This patch provides compression and encryption feature to in_forward, out_forward plugin.
I also added `password` and `compression_level` for out_forward but only `password` added for in_forward.

out_forward's example goes bellow:
```

type forward
password pass
compression_level 9

host localhost
weight 10

```
in_forward's example goes bellow:
```

type forward
password pass

```

##### description(in Japanese)
I'm Sorry I'm not good at writing English.
- 共通事項
- forward時のmessageタイプがPackedForwardである場合, 後述の設定に応じてmessageが暗号化, 圧縮されます.
- 暗号化と圧縮は個別にenable/disableすることができます.
- 本patch適用後のin_forward, out_forwardは, 暗号化と圧縮をdisableにしている限り, 過去のバージョンとの互換性を保ちます.
- 暗号化と圧縮についての属性情報を伝達する必要があるため, in_forwardとout_forwardは以下を行います.
- out_forwardではPackedForward messageの第3要素にHashを格納して送信します.
- in_forwardでは受信したmessageがPackedForwardであり, かつ第3要素が付加されている場合, 第3要素を属性情報として解釈します.
- 暗号化について
- out_forward設定ファイルの`password`項目にパスワードを設定するとmessageが暗号化されます.
- in_forward設定ファイルの`password`項目には, out_forward設定ファイルと同一のパスワードを設定する必要があります.
- 暗号化にはOpenSSLを使用します.
- 暗号化アルゴリズムは現時点ではBlowfishに限定しています, これはアルゴリズムを選択する必要性を見いださなかったためです.
- 毎回異なるsaltが自動生成され, out_forwardからin_forwardへ平文で送信されます.
- 圧縮について
- out_forward設定ファイルの`compression_level`項目に1以上の数値を設定するとmessageのraw entriesが圧縮されます.
- 圧縮にはzlibを使用します.
- `compression_level`の設定数値は9が一番圧縮率が高く, 9を超える数値を設定した場合, 9に補正されます.
- `compression_level`に0を設定した場合, 圧縮されません.