mod_mruby で広告を挿入しよう

mod_mruby に M_POST とかの定数が追加されてる!mod_mruby 作者の matsumoto さんありがとう!

せっかく mod_mruby をインストールしたんだから、「この Apache には mod_mruby が入ってるんだぜ?」ということをちょっとアピールしましょう。

# insert_ad.rb - Append ads to response bodies.
#
# Install mod_mruby and add a following line (modify the file path):
#   SetOutputFilter   mruby
#   mrubyOutputFilter /var/www/insert_ad.rb

AD = "mod_mruby kicks ass!"

r = Apache::Request.new
f = Apache::Filter.new

if r.content_type[0,9] == "text/html"
  data = f.flatten.split(/<\/body>/i).first
  f.cleanup

  f.insert_tail data.to_s
  f.insert_tail("\n<!-- Inserted by mod_mruby -->\n" +
      "<hr>\n" +
      "<em style=\"font-weight: bold; font-size: 120%\">#{AD}</em>\n" +
      "</body>\n" +
      "</html>")

  f.insert_eos

elsif r.content_type[0,10] == "text/plain"
  data = f.flatten
  f.cleanup
  f.insert_tail data
  f.insert_tail "\n----------\n#{AD}"
  f.insert_eos
end

こんな感じでレスポンスボディにメッセージ (mod_mruby kicks ass!) が追加されます:
mod_mruby kicks ass

ユーザーエージェントが IE だったら Firefox のダウンロードリンクをはっつけちゃうのも良さそうです。

(コウヅ)

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中