Tuesday, July 1, 2014

LiferayのDocuments and Mediaポートレットでウイルススキャンを行う

こんにちは。おおたにです。

先日、社員旅行で房総半島を訪れました。弊社の社員旅行は宿/夕食以外全て自由行動というゆるい感じなので、うちはマザー牧場や鴨川シーワールドを見て回りました。

マザー牧場のモルちゃん。ダッコできます。かわええええ!

さらに、今年の社員旅行は12歳未満お断りな宿に子連れで泊まれるという何ともありがたい企画でして(くわしくはこちら)、まあ子連れじゃ食べられないような料理をいただいたりしたわけです。ちなみに、料金は自分+同伴者1人+自分の子供分は全て会社が負担してくれるので、重ね重ねとてもありがたいです。

子連れではなかなか食べられないコース料理。美味しくいただきました。

もちろん子供向けにも本気料理が…。味見しましたが、とても美味しかった。

夜には蛍とウミホタルを見に行くツアーがあったので参加しましたが、臆病なうちの娘(3歳)はずっと号泣しておりました。まあ暗いので仕方ないですね…。

こんな感じで今年も社員旅行を楽しんだわけですが、聞くところによると来年は弊社10周年とのことで、もうひと頑張りしてくれるとのこと。今から楽しみで仕方ありません。海外期待しちゃっていいのかな…

さて、前置きが長くなってしまいましたが、今回はLiferayのDocuments and Mediaポートレットでウイルススキャンを行う方法についてお話ししたいと思います。アップロードされたファイルのウイルスチェックというのはよく伺う要望なのですが、Liferayはその仕組みをデフォルトで備えています。具体的には、ウイルススキャンツールを別途導入し、そのツールとの連携設定を施すだけで実現できます。以下ではその設定手順を説明します。


まずはClam AntiVirusのインストールから


まず初めに、ウイルスチェックツールClam AntiVirusをインストールします。Clam AntiVirusであればLiferayがデフォルトで対応しており、簡単な設定だけで連携することができます。

インストール方法はOSによって異なるのですが、Windowsであればインストーラでインストールし、CentOSであればyumにRPMforgeリポジトリを追加してyum installで導入します。必要に応じて、clamscanコマンドをパス無しで実行できるようにパスを通してください。


Liferayでウイルススキャンの設定を行う


続いて、Liferay側でClam AntiVirusとの連携設定を行います。portal-ext.propertiesに以下の2行を追加します。

dl.store.antivirus.enabled=true
dl.store.antivirus.impl=com.liferay.portlet.documentlibrary.antivirus.ClamAntivirusScannerImpl

設定はこれだけ、とても簡単です。設定が終わったらLiferayを再起動します。


動作確認してみよう


設定が終わったら早速動作確認してみましょう。事前準備として、クライアントPCのリアルタイムスキャンを切っておくか、そのようなツールが入っていないPCをクライアントとして利用しましょう。クライアントPCにリアルタイムスキャンが設定されていると、テスト用のウイルスファイルが自動除去されてしまってテストができないからです。

テスト用のウイルスファイルをこちらからダウンロードし、このファイルをLiferayのDocuments and Mediaポートレットにアップロードします。正しく動作していると、以下の2点が確認できるはずです。
  • 画面に「Documents and Media is temporarily unavailable」と表示され、ファイルアップロードに失敗します。
  • ログファイル(catalina.out)に「com.liferay.portlet.documentlibrary.antivirus.AntivirusScannerException: Virus detected in...」と出力されます。ウイルスが検出されてExceptionが投げられていることが分かります。
もしファイルアップロードに成功してログに何も出力されない場合は、clamscanというコマンドを実行できるか否か、設定が正しく追記されているか等を確認してください。


いかがでしょうか。Liferayのウイルススキャン機能が比較的簡単に設定できることがお分かり頂けましたでしょうか。是非みなさまもお試しいただければと思います。







No comments: